载入中...
搜索中...
未找到
EditorHost.h
浏览该文件的文档.
1#pragma once
2
3#include "common/Export.h"
4
5#include <memory>
6#include <string>
7
8namespace ssq {
9class VM;
10}
11
12namespace eve::ui {
13
34public:
35 static EditorHost& instance();
36
37 EditorHost(const EditorHost&) = delete;
38 EditorHost& operator=(const EditorHost&) = delete;
40
42 void start(ssq::VM& vm, const std::string& gameRoot = {}, bool allowWindow = true);
43 void stop();
44 bool running() const { return running_; }
45 bool windowAllowed() const { return allowWindow_; }
46 const std::string& gameRoot() const { return gameRoot_; }
47
48 // ---- OS window -------------------------------------------------------
49 std::string openWindow(const std::string& title, int width, int height);
50 std::string closeWindow();
51 bool windowOpen() const;
52 std::string windowState() const;
53
54 // ---- editors (View) --------------------------------------------------
56 std::string applyEditor(const std::string& json);
57 std::string removeEditor(const std::string& id);
58 std::string listEditors() const;
60 std::string editorState(const std::string& id) const;
62 void syncBindings();
63 std::string setEditorValue(const std::string& editorId, const std::string& widgetId,
64 const std::string& jsonValue);
66 std::string consumeEvents(const std::string& editorId);
68 std::string widgetRect(const std::string& editorId, const std::string& widgetId) const;
69
70 // ---- ViewModel (Squirrel tables) --------------------------------------
72 std::string registerVM(const std::string& name, const std::string& source);
73 std::string unregisterVM(const std::string& name);
74
75 // ---- persistence -------------------------------------------------------
77 std::string saveEditor(const std::string& id);
79 std::string unloadEditor(const std::string& id);
81 void loadEditorsFromDisk();
82
83 // ---- misc --------------------------------------------------------------
84 std::string runScript(const std::string& source);
85 std::string capture(const std::string& path);
86 std::string status() const;
87 void requestExit() { exitRequested_ = true; }
88 bool exitRequested() const { return exitRequested_; }
89
91 void frame();
93 void renderImGui();
95 void exposeScriptApi(ssq::VM& vm);
96
97 struct Impl; // pimpl: full definition lives in EditorHost.cpp
98
99private:
100 EditorHost();
101 std::unique_ptr<Impl> impl_;
102 bool running_ = false;
103 bool allowWindow_ = true;
104 bool exitRequested_ = false;
105 std::string gameRoot_;
106};
107
108} // namespace eve::ui
HSQUIRRELVM vm
Definition ECS.cpp:20
std::string title
#define EVENGINE_API
宿主(eve / libmain)导出宏;插件从进程导入同一批符号。
Definition Export.h:16
float height
Definition Grass.cpp:235
JobStatus status
int width
const char * name
Definition RockMesh.cpp:21
Headless MCP editor host (MVVM).
Definition EditorHost.h:33
EditorHost(const EditorHost &)=delete
bool running() const
Definition EditorHost.h:44
const std::string & gameRoot() const
Definition EditorHost.h:46
bool windowAllowed() const
Definition EditorHost.h:45
bool exitRequested() const
Definition EditorHost.h:88
EditorHost & operator=(const EditorHost &)=delete
EVEngine ECS 集成层:底层实现使用 sunxfancy/ECS.hpp https://github.com/sunxfancy/ECS.hpp
Definition ECS.h:12