#pragma once #include "angelscript.h" #include "scriptbuilder.h" #include class ScriptEngine { public: ScriptEngine(); ~ScriptEngine(); bool Initialize(); void Shutdown(); bool CompileScript(const std::string& filename); void CallScriptFunction(asIScriptFunction* func, float dt = 0.0f); void GarbageCollect(); asIScriptEngine* GetEngine() const { return engine; } asIScriptFunction* GetUpdateFunction() const { return updateFunc; } asIScriptFunction* GetDrawFunction() const { return drawFunc; } private: asIScriptEngine* engine; asIScriptFunction* updateFunc; asIScriptFunction* drawFunc; asIScriptModule* currentModule; bool hasValidScript; static void MessageCallback(const asSMessageInfo* msg, void* param); static int IncludeCallback(const char* include, const char* from, CScriptBuilder* builder, void* userParam); std::string ReadFile(const std::string& filename); void ClearCachedFunctions(); };