diff --git a/integrations/lua/include/fggl/script/lua/module.hpp b/integrations/lua/include/fggl/script/lua/module.hpp index 5f9bd96fc3a03651dd378f75d4bf161a833f3d9e..e904f51dc1e540305a159dac879b029df045837f 100644 --- a/integrations/lua/include/fggl/script/lua/module.hpp +++ b/integrations/lua/include/fggl/script/lua/module.hpp @@ -23,15 +23,22 @@ #include "fggl/entity/module.hpp" #include "fggl/script/engine.hpp" #include "fggl/data/module.hpp" +#include "fggl/assets/packed/adapter.hpp" + namespace fggl::script::lua { + + constexpr auto MIME_LUA = assets::from_mime("text/lua"); + constexpr auto SCRIPT_LUA = assets::make_asset_type("script/lua"); + struct Lua { constexpr static const char* name = "fggl::script::lua"; constexpr static const std::array<modules::ModuleService, 1> provides = { script::ScriptProvider::service }; - constexpr static const std::array<modules::ModuleService, 1> depends = { - data::SERVICE_STORAGE + constexpr static const std::array<modules::ModuleService, 2> depends = { + data::SERVICE_STORAGE, + assets::CheckinAdapted::service }; static bool factory(modules::ModuleService name, modules::Services& serviceManager); }; diff --git a/integrations/lua/src/module.cpp b/integrations/lua/src/module.cpp index af4b1e376a5b6ab80948d7b6acbd8b6075785e37..5356a4bced164ddf023c2115fddee0f1ca99fb3e 100644 --- a/integrations/lua/src/module.cpp +++ b/integrations/lua/src/module.cpp @@ -21,11 +21,22 @@ namespace fggl::script::lua { + static assets::AssetTypeID is_lua(std::filesystem::path path) { + if ( path.extension() == ".lua" ) { + return SCRIPT_LUA; + } + return assets::INVALID_ASSET_TYPE; + } + bool Lua::factory(modules::ModuleService service, modules::Services &serviceManager) { if ( service == ScriptProvider::service ) { auto storageService = serviceManager.get<data::Storage>(); serviceManager.bind<ScriptProvider,LuaScriptProvider>(storageService); + + auto *assetPacker = serviceManager.get<assets::CheckinAdapted>(); + assetPacker->setLoader(MIME_LUA, assets::NEEDS_CHECKIN, is_lua); + return true; }