From 6fa0afd758a6351873df813cd7e70b1904714ed6 Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Fri, 15 Mar 2024 21:28:11 +1100 Subject: experimental asset load scripts --- source/game/scripting/StarRootLuaBindings.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'source/game/scripting/StarRootLuaBindings.cpp') diff --git a/source/game/scripting/StarRootLuaBindings.cpp b/source/game/scripting/StarRootLuaBindings.cpp index 6759811..0c66a7b 100644 --- a/source/game/scripting/StarRootLuaBindings.cpp +++ b/source/game/scripting/StarRootLuaBindings.cpp @@ -30,7 +30,6 @@ LuaCallbacks LuaBindings::makeRootCallbacks() { auto root = Root::singletonPtr(); - callbacks.registerCallbackWithSignature("assetsByExtension", bind(RootCallbacks::assetsByExtension, root, _1)); callbacks.registerCallbackWithSignature("assetData", bind(RootCallbacks::assetData, root, _1)); callbacks.registerCallbackWithSignature("assetJson", bind(RootCallbacks::assetJson, root, _1)); callbacks.registerCallbackWithSignature("makeCurrentVersionedJson", bind(RootCallbacks::makeCurrentVersionedJson, root, _1, _2)); @@ -63,6 +62,15 @@ LuaCallbacks LuaBindings::makeRootCallbacks() { callbacks.registerCallbackWithSignature, String, Maybe>("materialMiningSound", bind(RootCallbacks::materialMiningSound, root, _1, _2)); callbacks.registerCallbackWithSignature, String, Maybe>("materialFootstepSound", bind(RootCallbacks::materialFootstepSound, root, _1, _2)); + callbacks.registerCallback("assetsByExtension", [root](LuaEngine& engine, String const& extension) -> LuaTable { + auto& extensions = root->assets()->scanExtension(extension); + auto table = engine.createTable(extensions.size(), 0); + size_t i = 0; + for (auto& file : extensions) + table.set(++i, file); + return table; + }); + callbacks.registerCallback("assetOrigin", [root](String const& path) -> Maybe { auto assets = root->assets(); if (auto descriptor = assets->assetDescriptor(path)) @@ -242,10 +250,6 @@ LuaCallbacks LuaBindings::makeRootCallbacks() { return callbacks; } -StringList LuaBindings::RootCallbacks::assetsByExtension(Root* root, String const& extension) { - return root->assets()->scanExtension(extension); -} - String LuaBindings::RootCallbacks::assetData(Root* root, String const& path) { auto bytes = root->assets()->bytes(path); return String(bytes->ptr(), bytes->size()); -- cgit v1.2.3