#pragma once
#include <string>
#include <vector>

class asIScriptEngine;
class asIScriptModule;
class asIScriptContext;

namespace Deer {
    // This namespace implements all interface ported from c++ ImGui to an easier lua aproach with simplifications
    namespace EditorEngine {
        struct DockPanelObject;

        void initialize();
        void deinitialize();

        void render();

        extern asIScriptEngine* scriptEngine;
		extern asIScriptModule* scriptModule;
		extern asIScriptContext* scriptContext;
        extern std::vector<DockPanelObject> dockPanels;
        extern DockPanelObject* currentDockPanelExecution;

        void loadScripts();
        void registerEditorEngineFunctions();
        void registerEditorEngineStructs();
        void registerDockPanel();
        void extractDockPanels();
    }

    namespace DataStore {
        int getIconId(const std::string& name);
    }
}