载入中...
搜索中...
未找到
EditorHostCapabilities.cpp
浏览该文件的文档.
1#include "common/Capability.h"
2#include "common/EditorHost.h"
3#include "ui/EditorHost.h"
4
5#include <string>
6
7namespace eve::ui {
8namespace {
9
10class EditorHostImpl final : public eve::IEditorHost {
11public:
12 std::string status() const override { return EditorHost::instance().status(); }
13 std::string openWindow(const std::string &title, int width, int height) override {
15 }
16 std::string closeWindow() override { return EditorHost::instance().closeWindow(); }
17 std::string windowState() const override { return EditorHost::instance().windowState(); }
18 bool isWindowOpen() const override { return EditorHost::instance().isWindowOpen(); }
19 std::string applyEditor(const std::string &json) override {
20 return EditorHost::instance().applyEditor(json);
21 }
22 std::string removeEditor(const std::string &id) override {
24 }
25 std::string listEditors() const override { return EditorHost::instance().listEditors(); }
26 std::string editorState(const std::string &id) const override {
28 }
29 std::string setEditorValue(const std::string &editorId, const std::string &widgetId,
30 const std::string &value) override {
31 return EditorHost::instance().setEditorValue(editorId, widgetId, value);
32 }
33 std::string consumeEvents(const std::string &editorId) override {
34 return EditorHost::instance().consumeEvents(editorId);
35 }
36 std::string widgetRect(const std::string &editorId,
37 const std::string &widgetId) const override {
38 return EditorHost::instance().widgetRect(editorId, widgetId);
39 }
40 std::string registerVM(const std::string &name, const std::string &source) override {
42 }
43 std::string unregisterVM(const std::string &name) override {
45 }
46 std::string saveEditor(const std::string &id) override {
48 }
49 std::string unloadEditor(const std::string &id) override {
51 }
52 std::string capture(const std::string &path) override {
54 }
55 std::string runScript(const std::string &source) override {
57 }
58 std::string reloadResource(const std::string &path) override {
60 }
61 std::string hotReloadStatus() const override {
63 }
64 void setHotReloadWatchCount(int count) override {
66 }
67 void requestExit() override { EditorHost::instance().requestExit(); }
68 bool exitRequested() override { return EditorHost::instance().exitRequested(); }
69 void frame() override { EditorHost::instance().frame(); }
70 void stop() override { EditorHost::instance().stop(); }
71 void start(ssq::VM& vm, const std::string& gameRoot, bool allowWindow) override {
72 EditorHost::instance().start(vm, gameRoot, allowWindow);
73 }
74 void exposeScriptApi(ssq::VM& vm) override { EditorHost::instance().exposeScriptApi(vm); }
75};
76
77} // namespace
78
80 static EditorHostImpl impl;
81 eve::cap::provide<eve::IEditorHost>(&impl);
82}
83
84} // namespace eve::ui
double value
Duration start
void * impl
std::string title
HSQUIRRELVM vm
Definition ECS.cpp:20
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
Declarative editor-host control (provided by the ui module).
Definition EditorHost.h:17
void stop()
Stops .
void setHotReloadWatchCount(int count)
Set active project watch count reported by hotReloadStatus().
std::string status() const
Status.
std::string consumeEvents(const std::string &editorId)
Read and clear pending interaction events for one editor ("" = all).
void requestExit()
Request exit.
Definition EditorHost.h:122
std::string closeWindow()
Closes window.
std::string listEditors() const
List editors.
std::string unregisterVM(const std::string &name)
Unregisters vm.
bool isWindowOpen() const
True when window open.
std::string setEditorValue(const std::string &editorId, const std::string &widgetId, const std::string &jsonValue)
Sets the editor value.
std::string capture(const std::string &path)
Capture.
std::string applyEditor(const std::string &json)
JSON object/string: {id,title,vm,x,y,width,height,theme,children[]}.
std::string unloadEditor(const std::string &id)
Remove an editor from the session (files stay on disk).
std::string windowState() const
Window state.
std::string editorState(const std::string &id) const
Full state JSON: editors + values + (non-destructive) events.
void frame()
Pump events + update/render hooks + present (no-op without window).
std::string removeEditor(const std::string &id)
Removes editor.
std::string hotReloadStatus() const
Watch count, reload counters and latest diagnostic as compact JSON.
static EditorHost & instance()
Instance.
std::string openWindow(const std::string &title, int width, int height)
Opens window.
std::string registerVM(const std::string &name, const std::string &source, const std::string &sourceName={})
Compile Squirrel source in the host VM, then register table name.
std::string widgetRect(const std::string &editorId, const std::string &widgetId) const
Last-frame widget rect JSON (for script drawing inside viewports).
std::string reloadResource(const std::string &path)
Reload mcp.nut, scripts under mcp, or editor VM and manifest files.
bool exitRequested() const
Exit requested.
Definition EditorHost.h:124
std::string saveEditor(const std::string &id)
Write editors/<id>.editor.json + editors/<id>.vm.nut under gameRoot.
void start(ssq::VM &vm, const std::string &gameRoot={}, bool allowWindow=true)
Attach to the host VM. gameRoot is the project dir for editors/.
void exposeScriptApi(ssq::VM &vm)
Expose eve.host table (registerVM/unregisterVM/widgetRect/...).
std::string runScript(const std::string &source, const std::string &sourceName={})
Compile and run Squirrel source in the host VM.
void registerEditorHostCapabilities()
Registers editor host capabilities.