1 #ifndef SCRIPTENGINE_HXX_
2 #define SCRIPTENGINE_HXX_
6 #include <angelscript.h>
10 #include "../util/Singleton.hxx"
12 enum class ScriptCategory
23 ScriptCategory scriptCategory = ScriptCategory::INVALID;
24 unsigned int eventMask = 0;
25 asIScriptModule *scriptModule =
nullptr;
26 asIScriptFunction *frameStepFunctionPtr =
nullptr;
27 asIScriptFunction *eventCallbackFunctionPtr =
nullptr;
28 asIScriptFunction *defaultEventCallbackFunctionPtr =
nullptr;
33 typedef std::vector<ScriptUnit> ScriptUnitVec;
35 class ScriptEngine :
public Singleton<ScriptEngine>
40 ScriptEngine() =
default;
54 int loadScript(
const std::string &scriptname, ScriptCategory category = ScriptCategory::ADDON);
60 void unloadScript(
const std::string &scriptname, ScriptCategory category);
67 int framestep(
float dt);
74 void messageCallback(
const asSMessageInfo *msg);
78 int setupScriptUnit(
int unit_id);
80 asIScriptEngine *engine{};
81 asIScriptContext *context{};
83 ScriptUnitVec m_addon_scrips;