载入中...
搜索中...
未找到
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 std::string applyEditor(const std::string &json) override {
19 return EditorHost::instance().applyEditor(json);
20 }
21 std::string removeEditor(const std::string &id) override {
23 }
24 std::string listEditors() const override { return EditorHost::instance().listEditors(); }
25 std::string editorState(const std::string &id) const override {
27 }
28 std::string setEditorValue(const std::string &editorId, const std::string &widgetId,
29 const std::string &value) override {
30 return EditorHost::instance().setEditorValue(editorId, widgetId, value);
31 }
32 std::string consumeEvents(const std::string &editorId) override {
33 return EditorHost::instance().consumeEvents(editorId);
34 }
35 std::string widgetRect(const std::string &editorId,
36 const std::string &widgetId) const override {
37 return EditorHost::instance().widgetRect(editorId, widgetId);
38 }
39 std::string registerVM(const std::string &name, const std::string &source) override {
40 return EditorHost::instance().registerVM(name, source);
41 }
42 std::string unregisterVM(const std::string &name) override {
44 }
45 std::string saveEditor(const std::string &id) override {
47 }
48 std::string unloadEditor(const std::string &id) override {
50 }
51 std::string capture(const std::string &path) override {
52 return EditorHost::instance().capture(path);
53 }
54 std::string runScript(const std::string &source) override {
55 return EditorHost::instance().runScript(source);
56 }
57 void requestExit() override { EditorHost::instance().requestExit(); }
58 bool exitRequested() override { return EditorHost::instance().exitRequested(); }
59 void frame() override { EditorHost::instance().frame(); }
60 void stop() override { EditorHost::instance().stop(); }
61 void start(ssq::VM& vm, const std::string& gameRoot, bool allowWindow) override {
62 EditorHost::instance().start(vm, gameRoot, allowWindow);
63 }
64 void exposeScriptApi(ssq::VM& vm) override { EditorHost::instance().exposeScriptApi(vm); }
65};
66
67} // namespace
68
73
74} // namespace eve::ui
void * impl
std::string value
HSQUIRRELVM vm
Definition ECS.cpp:20
std::string title
float height
Definition Grass.cpp:235
JobStatus status
int width
const char * name
Definition RockMesh.cpp:21
Declarative editor-host control (provided by the ui module).
Definition EditorHost.h:17
std::string status() const
std::string consumeEvents(const std::string &editorId)
Read and clear pending interaction events for one editor ("" = all).
std::string runScript(const std::string &source)
std::string closeWindow()
std::string listEditors() const
std::string unregisterVM(const std::string &name)
std::string setEditorValue(const std::string &editorId, const std::string &widgetId, const std::string &jsonValue)
std::string capture(const std::string &path)
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
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)
static EditorHost & instance()
std::string openWindow(const std::string &title, int width, int height)
std::string widgetRect(const std::string &editorId, const std::string &widgetId) const
Last-frame widget rect JSON (for script drawing inside viewports).
bool exitRequested() const
Definition EditorHost.h:88
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 registerVM(const std::string &name, const std::string &source)
Compile Squirrel source in the host VM, then register table name.
I * query()
Definition Capability.h:77
void registerEditorHostCapabilities()