载入中...
搜索中...
未找到
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
35public:
37 static EditorHost& instance();
38
39 EditorHost(const EditorHost&) = delete;
40 EditorHost& operator=(const EditorHost&) = delete;
43
45 void start(ssq::VM& vm, const std::string& gameRoot = {}, bool allowWindow = true);
47 void stop();
49 bool running() const { return running_; }
51 bool windowAllowed() const { return allowWindow_; }
53 const std::string& gameRoot() const { return gameRoot_; }
54
55 // ---- OS window -------------------------------------------------------
57 std::string openWindow(const std::string& title, int width, int height);
59 std::string closeWindow();
61 bool isWindowOpen() const;
63 std::string windowState() const;
64
65 // ---- editors (View) --------------------------------------------------
67 std::string applyEditor(const std::string& json);
69 std::string removeEditor(const std::string& id);
71 std::string listEditors() const;
73 std::string editorState(const std::string& id) const;
75 void syncBindings();
77 std::string setEditorValue(const std::string& editorId, const std::string& widgetId,
78 const std::string& jsonValue);
80 std::string restoreEditorValue(const std::string& editorId, const std::string& widgetId,
81 const std::string& jsonValue);
83 std::string consumeEvents(const std::string& editorId);
85 std::string widgetRect(const std::string& editorId, const std::string& widgetId) const;
86
87 // ---- ViewModel (Squirrel tables) --------------------------------------
92 std::string registerVM(const std::string& name, const std::string& source,
93 const std::string& sourceName = {});
95 std::string unregisterVM(const std::string& name);
96
97 // ---- persistence -------------------------------------------------------
99 std::string saveEditor(const std::string& id);
101 std::string unloadEditor(const std::string& id);
103 void loadEditorsFromDisk();
104
105 // ---- misc --------------------------------------------------------------
110 std::string runScript(const std::string& source, const std::string& sourceName = {});
112 std::string capture(const std::string& path);
114 std::string reloadResource(const std::string& path);
116 std::string hotReloadStatus() const;
118 void setHotReloadWatchCount(int count);
120 std::string status() const;
122 void requestExit() { exitRequested_ = true; }
124 bool exitRequested() const { return exitRequested_; }
125
127 void frame();
129 void renderImGui();
131 void exposeScriptApi(ssq::VM& vm);
132
133 struct Impl; // pimpl: full definition lives in EditorHost.cpp
134
135private:
136 EditorHost();
137 std::unique_ptr<Impl> impl_;
138 bool running_ = false;
139 bool allowWindow_ = true;
140 bool exitRequested_ = false;
141 std::string gameRoot_;
142};
143
144} // namespace eve::ui
Duration start
std::string title
HSQUIRRELVM vm
Definition ECS.cpp:20
#define EVENGINE_API_WORLD
Definition Export.h:109
wgpu::PopErrorScopeStatus status
std::uint32_t height
std::uint32_t width
std::string name
std::string path
Definition PlayHost.cpp:110
std::uint32_t count
const UnitySourceAsset & source
Headless MCP editor host (MVVM).
Definition EditorHost.h:34
void requestExit()
Request exit.
Definition EditorHost.h:122
EditorHost(const EditorHost &)=delete
bool running() const
Running.
Definition EditorHost.h:49
const std::string & gameRoot() const
Game root.
Definition EditorHost.h:53
bool windowAllowed() const
Window allowed.
Definition EditorHost.h:51
bool exitRequested() const
Exit requested.
Definition EditorHost.h:124
~EditorHost()
Editor host.
EditorHost & operator=(const EditorHost &)=delete
EVEngine ECS 集成层:底层实现使用 sunxfancy/ECS.hpp https://github.com/sunxfancy/ECS.hpp
Definition ECS.h:14