#pragma once #include "sol/sol.hpp" #include "CGenericComponent.h" #include #include class CScriptComponent { public: CScriptComponent(const std::string& _TypeName, sol::function _Constructor, sol::function _Destructor, sol::function _LuaInit, sol::function _LuaPostInit, sol::function _LuaUpdate); sol::function Constructor, Destructor, Init, PostInit, Update; std::string TypeName; }; class CScriptComponentsManager { public: CScriptComponentsManager() = delete; CScriptComponentsManager(std::shared_ptr& _State); CGenericComponent* Create(const std::string& typenm); bool IsPresent(const std::string& typenm) const; void Register(const std::string& typenm, sol::function _Constructor, sol::function _Destructor, sol::function _LuaInit, sol::function _LuaPostInit, sol::function _LuaUpdate); void Remove(const std::string& typenm); std::shared_ptr& State; std::unordered_map Components; };