@fps-games/editor 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/authoring-apply.d.ts +21 -0
- package/dist/authoring-apply.d.ts.map +1 -0
- package/dist/authoring-apply.js +45 -0
- package/dist/authoring-apply.js.map +1 -0
- package/dist/index.d.ts +85 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +539 -0
- package/dist/index.js.map +1 -0
- package/dist/local-editor-harness.d.ts +173 -0
- package/dist/local-editor-harness.d.ts.map +1 -0
- package/dist/local-editor-harness.js +969 -0
- package/dist/local-editor-harness.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/camera-controller.d.ts +20 -0
- package/node_modules/@fps-games/editor-babylon/dist/camera-controller.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js +239 -0
- package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/edit-session.d.ts +30 -0
- package/node_modules/@fps-games/editor-babylon/dist/edit-session.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/edit-session.js +297 -0
- package/node_modules/@fps-games/editor-babylon/dist/edit-session.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/editor-world.d.ts +30 -0
- package/node_modules/@fps-games/editor-babylon/dist/editor-world.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/editor-world.js +67 -0
- package/node_modules/@fps-games/editor-babylon/dist/editor-world.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/event-guard.d.ts +13 -0
- package/node_modules/@fps-games/editor-babylon/dist/event-guard.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/event-guard.js +101 -0
- package/node_modules/@fps-games/editor-babylon/dist/event-guard.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/index.d.ts +19 -0
- package/node_modules/@fps-games/editor-babylon/dist/index.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/index.js +18 -0
- package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/input-controller.d.ts +3 -0
- package/node_modules/@fps-games/editor-babylon/dist/input-controller.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/input-controller.js +182 -0
- package/node_modules/@fps-games/editor-babylon/dist/input-controller.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/inspector-adapter.d.ts +13 -0
- package/node_modules/@fps-games/editor-babylon/dist/inspector-adapter.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/inspector-adapter.js +94 -0
- package/node_modules/@fps-games/editor-babylon/dist/inspector-adapter.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/inspector-host.d.ts +43 -0
- package/node_modules/@fps-games/editor-babylon/dist/inspector-host.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/inspector-host.js +510 -0
- package/node_modules/@fps-games/editor-babylon/dist/inspector-host.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/legacy-runtime.d.ts +5 -0
- package/node_modules/@fps-games/editor-babylon/dist/legacy-runtime.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/legacy-runtime.js +5 -0
- package/node_modules/@fps-games/editor-babylon/dist/legacy-runtime.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.d.ts +22 -0
- package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.js +408 -0
- package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/monitor.d.ts +39 -0
- package/node_modules/@fps-games/editor-babylon/dist/monitor.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/monitor.js +780 -0
- package/node_modules/@fps-games/editor-babylon/dist/monitor.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/outline-adapter.d.ts +37 -0
- package/node_modules/@fps-games/editor-babylon/dist/outline-adapter.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/outline-adapter.js +268 -0
- package/node_modules/@fps-games/editor-babylon/dist/outline-adapter.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection-selection-controller.d.ts +34 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection-selection-controller.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection-selection-controller.js +221 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection-selection-controller.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +90 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection.js +479 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/runtime-globals.d.ts +3 -0
- package/node_modules/@fps-games/editor-babylon/dist/runtime-globals.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/runtime-globals.js +7 -0
- package/node_modules/@fps-games/editor-babylon/dist/runtime-globals.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts +18 -0
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js +213 -0
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-input-controller.d.ts +36 -0
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-input-controller.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-input-controller.js +272 -0
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-input-controller.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/selection-controller.d.ts +27 -0
- package/node_modules/@fps-games/editor-babylon/dist/selection-controller.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/selection-controller.js +308 -0
- package/node_modules/@fps-games/editor-babylon/dist/selection-controller.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/tool-controller.d.ts +17 -0
- package/node_modules/@fps-games/editor-babylon/dist/tool-controller.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/tool-controller.js +83 -0
- package/node_modules/@fps-games/editor-babylon/dist/tool-controller.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts +47 -0
- package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js +689 -0
- package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/types.d.ts +111 -0
- package/node_modules/@fps-games/editor-babylon/dist/types.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/types.js +2 -0
- package/node_modules/@fps-games/editor-babylon/dist/types.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/package.json +25 -0
- package/node_modules/@fps-games/editor-browser/dist/index.d.ts +28 -0
- package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/index.js +54 -0
- package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.d.ts +12 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js +80 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.d.ts +11 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.js +33 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +9 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +444 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts +21 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js +103 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts +12 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js +123 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.d.ts +2 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js +115 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.d.ts +3 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js +68 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +183 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js +2 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts +58 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js +136 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +4 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +589 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/package.json +16 -0
- package/node_modules/@fps-games/editor-core/dist/authoring-source.d.ts +211 -0
- package/node_modules/@fps-games/editor-core/dist/authoring-source.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/authoring-source.js +511 -0
- package/node_modules/@fps-games/editor-core/dist/authoring-source.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +132 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session.js +265 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/host-services.d.ts +24 -0
- package/node_modules/@fps-games/editor-core/dist/host-services.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/host-services.js +2 -0
- package/node_modules/@fps-games/editor-core/dist/host-services.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/index.d.ts +106 -0
- package/node_modules/@fps-games/editor-core/dist/index.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/index.js +217 -0
- package/node_modules/@fps-games/editor-core/dist/index.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts +44 -0
- package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/scene-graph.js +86 -0
- package/node_modules/@fps-games/editor-core/dist/scene-graph.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/scene-view-input.d.ts +41 -0
- package/node_modules/@fps-games/editor-core/dist/scene-view-input.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/scene-view-input.js +2 -0
- package/node_modules/@fps-games/editor-core/dist/scene-view-input.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/serialized-object.d.ts +53 -0
- package/node_modules/@fps-games/editor-core/dist/serialized-object.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/serialized-object.js +32 -0
- package/node_modules/@fps-games/editor-core/dist/serialized-object.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/transform-gizmo.d.ts +48 -0
- package/node_modules/@fps-games/editor-core/dist/transform-gizmo.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/transform-gizmo.js +2 -0
- package/node_modules/@fps-games/editor-core/dist/transform-gizmo.js.map +1 -0
- package/node_modules/@fps-games/editor-core/package.json +19 -0
- package/node_modules/@fps-games/editor-forge-play/dist/index.d.ts +46 -0
- package/node_modules/@fps-games/editor-forge-play/dist/index.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-forge-play/dist/index.js +156 -0
- package/node_modules/@fps-games/editor-forge-play/dist/index.js.map +1 -0
- package/node_modules/@fps-games/editor-forge-play/package.json +19 -0
- package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +239 -0
- package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/index.js +54 -0
- package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -0
- package/node_modules/@fps-games/editor-protocol/package.json +16 -0
- package/package.json +40 -0
|
@@ -0,0 +1,589 @@
|
|
|
1
|
+
import * as LocalEditorPanels from './local-editor-ui-panels';
|
|
2
|
+
import { createLocalEditorWorkbenchInputRouter } from './local-editor-ui-input-router';
|
|
3
|
+
import { createLocalEditorPanelRegistry } from './local-editor-ui-panel-registry';
|
|
4
|
+
import * as LocalEditorShared from './local-editor-ui-shared';
|
|
5
|
+
import { createShortcutHelpPanel as createLocalEditorShortcutHelpPanel } from './local-editor-ui-shortcuts';
|
|
6
|
+
import { ensureLocalEditorTheme, LOCAL_EDITOR_THEME_CLASS } from './local-editor-ui-theme';
|
|
7
|
+
import { createDefaultLocalEditorWorkbenchLayout, createLocalEditorWorkbench, createSceneHeaderToolbar, createWorkbenchPanelContent, } from './local-editor-ui-workbench';
|
|
8
|
+
export function createLocalEditorBrowserUi(options = {}) {
|
|
9
|
+
const doc = options.document ?? document;
|
|
10
|
+
const root = options.root ?? doc.body;
|
|
11
|
+
const callbacks = options.callbacks ?? {};
|
|
12
|
+
ensureLocalEditorTheme(doc);
|
|
13
|
+
const inputRouter = createLocalEditorWorkbenchInputRouter(doc);
|
|
14
|
+
let currentState = null;
|
|
15
|
+
let hierarchyRename = null;
|
|
16
|
+
let hierarchyDrag = null;
|
|
17
|
+
let hierarchyDrop = null;
|
|
18
|
+
const workbenchLayout = createDefaultLocalEditorWorkbenchLayout();
|
|
19
|
+
const panelRegistry = createLocalEditorPanelRegistry(workbenchLayout);
|
|
20
|
+
const hostChrome = doc.createElement('div');
|
|
21
|
+
hostChrome.dataset.editorWorkbenchRegion = 'top-bar';
|
|
22
|
+
hostChrome.className = LOCAL_EDITOR_THEME_CLASS;
|
|
23
|
+
hostChrome.style.cssText = [
|
|
24
|
+
'position:fixed',
|
|
25
|
+
'top:12px',
|
|
26
|
+
'left:50%',
|
|
27
|
+
'transform:translateX(-50%)',
|
|
28
|
+
'z-index:2147483640',
|
|
29
|
+
'display:none',
|
|
30
|
+
'align-items:center',
|
|
31
|
+
'gap:8px',
|
|
32
|
+
'height:34px',
|
|
33
|
+
'padding:0 8px',
|
|
34
|
+
'border:1px solid var(--fps-editor-border)',
|
|
35
|
+
'border-radius:3px',
|
|
36
|
+
'background:var(--fps-editor-chrome)',
|
|
37
|
+
'box-shadow:0 10px 28px rgba(0,0,0,0.24)',
|
|
38
|
+
'font-family:var(--fps-editor-font)',
|
|
39
|
+
'color:var(--fps-editor-text)',
|
|
40
|
+
'font-size:12px',
|
|
41
|
+
'pointer-events:auto',
|
|
42
|
+
].join(';');
|
|
43
|
+
const hostModeLabel = doc.createElement('span');
|
|
44
|
+
hostModeLabel.textContent = '本地宿主 · 游戏模式';
|
|
45
|
+
hostModeLabel.style.cssText = [
|
|
46
|
+
'color:var(--fps-editor-muted-strong)',
|
|
47
|
+
'font-weight:800',
|
|
48
|
+
'white-space:nowrap',
|
|
49
|
+
].join(';');
|
|
50
|
+
const enterEditorButton = LocalEditorShared.createButton(doc, '进入编辑场景');
|
|
51
|
+
hostChrome.appendChild(hostModeLabel);
|
|
52
|
+
hostChrome.appendChild(enterEditorButton);
|
|
53
|
+
root.appendChild(hostChrome);
|
|
54
|
+
const dirtyBadge = doc.createElement('span');
|
|
55
|
+
dirtyBadge.style.cssText = [
|
|
56
|
+
'display:none',
|
|
57
|
+
'height:20px',
|
|
58
|
+
'align-items:center',
|
|
59
|
+
'padding:0 7px',
|
|
60
|
+
'border-radius:999px',
|
|
61
|
+
'background:rgba(248,81,73,0.16)',
|
|
62
|
+
'border:1px solid rgba(248,81,73,0.45)',
|
|
63
|
+
'color:#ffd7d5',
|
|
64
|
+
'font-size:11px',
|
|
65
|
+
'font-weight:800',
|
|
66
|
+
].join(';');
|
|
67
|
+
dirtyBadge.textContent = '未保存';
|
|
68
|
+
const saveButton = LocalEditorShared.createButton(doc, '保存场景');
|
|
69
|
+
const saveAndRunButton = LocalEditorShared.createButton(doc, '保存并运行');
|
|
70
|
+
const discardRunButton = LocalEditorShared.createButton(doc, '放弃并运行');
|
|
71
|
+
const undoButton = LocalEditorShared.createButton(doc, '撤销');
|
|
72
|
+
const redoButton = LocalEditorShared.createButton(doc, '重做');
|
|
73
|
+
let helpOpen = false;
|
|
74
|
+
const status = doc.createElement('span');
|
|
75
|
+
status.style.cssText = [
|
|
76
|
+
'flex:0 1 300px',
|
|
77
|
+
'min-width:120px',
|
|
78
|
+
'max-width:320px',
|
|
79
|
+
'overflow:hidden',
|
|
80
|
+
'text-overflow:ellipsis',
|
|
81
|
+
'white-space:nowrap',
|
|
82
|
+
'color:var(--fps-editor-muted)',
|
|
83
|
+
'font-size:11px',
|
|
84
|
+
].join(';');
|
|
85
|
+
const workbench = createLocalEditorWorkbench(doc);
|
|
86
|
+
const hierarchyPanel = createWorkbenchPanelContent(doc);
|
|
87
|
+
const assetPanel = workbench.bottomDock;
|
|
88
|
+
const inspectorPanel = createWorkbenchPanelContent(doc);
|
|
89
|
+
workbench.leftDock.appendChild(hierarchyPanel);
|
|
90
|
+
workbench.rightDock.appendChild(inspectorPanel);
|
|
91
|
+
root.appendChild(workbench.root);
|
|
92
|
+
const sceneToolOverlay = createSceneHeaderToolbar(doc);
|
|
93
|
+
const sceneTitle = doc.createElement('div');
|
|
94
|
+
sceneTitle.textContent = 'Preview';
|
|
95
|
+
sceneTitle.style.cssText = [
|
|
96
|
+
'height:100%',
|
|
97
|
+
'display:flex',
|
|
98
|
+
'align-items:center',
|
|
99
|
+
'padding:0 10px 0 2px',
|
|
100
|
+
'margin-right:2px',
|
|
101
|
+
'border-right:1px solid var(--fps-editor-divider)',
|
|
102
|
+
'color:var(--fps-editor-text-strong)',
|
|
103
|
+
'font-size:13px',
|
|
104
|
+
'font-weight:800',
|
|
105
|
+
'white-space:nowrap',
|
|
106
|
+
].join(';');
|
|
107
|
+
const sceneQuickActions = doc.createElement('div');
|
|
108
|
+
sceneQuickActions.style.cssText = 'display:flex;align-items:center;gap:4px';
|
|
109
|
+
const toolGroup = doc.createElement('div');
|
|
110
|
+
toolGroup.style.cssText = [
|
|
111
|
+
'display:flex',
|
|
112
|
+
'align-items:center',
|
|
113
|
+
'gap:4px',
|
|
114
|
+
'padding-left:8px',
|
|
115
|
+
'border-left:1px solid var(--fps-editor-divider)',
|
|
116
|
+
].join(';');
|
|
117
|
+
const toolButtons = {
|
|
118
|
+
select: LocalEditorShared.createButton(doc, 'Q 选择'),
|
|
119
|
+
move: LocalEditorShared.createButton(doc, 'W 移动'),
|
|
120
|
+
rotate: LocalEditorShared.createButton(doc, 'E 旋转'),
|
|
121
|
+
scale: LocalEditorShared.createButton(doc, 'R 缩放'),
|
|
122
|
+
};
|
|
123
|
+
for (const [tool, button] of Object.entries(toolButtons)) {
|
|
124
|
+
button.dataset.transformTool = tool;
|
|
125
|
+
toolGroup.appendChild(button);
|
|
126
|
+
}
|
|
127
|
+
const spaceGroup = doc.createElement('div');
|
|
128
|
+
spaceGroup.style.cssText = [
|
|
129
|
+
'display:flex',
|
|
130
|
+
'align-items:center',
|
|
131
|
+
'gap:4px',
|
|
132
|
+
'padding-left:8px',
|
|
133
|
+
'border-left:1px solid var(--fps-editor-divider)',
|
|
134
|
+
].join(';');
|
|
135
|
+
const spaceButtons = {
|
|
136
|
+
world: LocalEditorShared.createButton(doc, '世界'),
|
|
137
|
+
local: LocalEditorShared.createButton(doc, '本地'),
|
|
138
|
+
};
|
|
139
|
+
for (const [space, button] of Object.entries(spaceButtons)) {
|
|
140
|
+
button.dataset.transformSpace = space;
|
|
141
|
+
spaceGroup.appendChild(button);
|
|
142
|
+
}
|
|
143
|
+
const constraintGroup = doc.createElement('div');
|
|
144
|
+
constraintGroup.style.cssText = [
|
|
145
|
+
'display:flex',
|
|
146
|
+
'align-items:center',
|
|
147
|
+
'gap:4px',
|
|
148
|
+
'padding-left:8px',
|
|
149
|
+
'border-left:1px solid var(--fps-editor-divider)',
|
|
150
|
+
].join(';');
|
|
151
|
+
const viewPlaneButton = LocalEditorShared.createButton(doc, '视图平面');
|
|
152
|
+
viewPlaneButton.dataset.transformConstraint = 'view-plane';
|
|
153
|
+
constraintGroup.appendChild(viewPlaneButton);
|
|
154
|
+
const sceneToolStatus = doc.createElement('span');
|
|
155
|
+
sceneToolStatus.style.cssText = [
|
|
156
|
+
'max-width:220px',
|
|
157
|
+
'overflow:hidden',
|
|
158
|
+
'text-overflow:ellipsis',
|
|
159
|
+
'white-space:nowrap',
|
|
160
|
+
'color:var(--fps-editor-muted-strong)',
|
|
161
|
+
'font-size:11px',
|
|
162
|
+
].join(';');
|
|
163
|
+
const sceneMouseHint = doc.createElement('span');
|
|
164
|
+
sceneMouseHint.style.cssText = [
|
|
165
|
+
'padding-left:8px',
|
|
166
|
+
'border-left:1px solid var(--fps-editor-divider)',
|
|
167
|
+
'max-width:360px',
|
|
168
|
+
'overflow:hidden',
|
|
169
|
+
'text-overflow:ellipsis',
|
|
170
|
+
'white-space:nowrap',
|
|
171
|
+
'color:var(--fps-editor-muted)',
|
|
172
|
+
'font-size:11px',
|
|
173
|
+
].join(';');
|
|
174
|
+
sceneMouseHint.textContent = '左键选择 · 空白拖拽框选 · 中键平移 · Alt+左键环绕 · 右键飞行 · 滚轮缩放';
|
|
175
|
+
const sceneHelpButton = LocalEditorShared.createButton(doc, '快捷键');
|
|
176
|
+
sceneHelpButton.style.padding = '5px 7px';
|
|
177
|
+
sceneQuickActions.appendChild(saveButton);
|
|
178
|
+
sceneQuickActions.appendChild(saveAndRunButton);
|
|
179
|
+
sceneQuickActions.appendChild(discardRunButton);
|
|
180
|
+
sceneQuickActions.appendChild(undoButton);
|
|
181
|
+
sceneQuickActions.appendChild(redoButton);
|
|
182
|
+
sceneQuickActions.appendChild(dirtyBadge);
|
|
183
|
+
sceneQuickActions.appendChild(sceneHelpButton);
|
|
184
|
+
sceneToolOverlay.appendChild(sceneTitle);
|
|
185
|
+
sceneToolOverlay.appendChild(sceneQuickActions);
|
|
186
|
+
sceneToolOverlay.appendChild(toolGroup);
|
|
187
|
+
sceneToolOverlay.appendChild(spaceGroup);
|
|
188
|
+
sceneToolOverlay.appendChild(constraintGroup);
|
|
189
|
+
sceneToolOverlay.appendChild(sceneToolStatus);
|
|
190
|
+
sceneToolOverlay.appendChild(sceneMouseHint);
|
|
191
|
+
sceneToolOverlay.appendChild(status);
|
|
192
|
+
workbench.sceneHeader.appendChild(sceneToolOverlay);
|
|
193
|
+
const boxSelectionOverlay = doc.createElement('div');
|
|
194
|
+
boxSelectionOverlay.style.cssText = [
|
|
195
|
+
'position:fixed',
|
|
196
|
+
'z-index:2147483637',
|
|
197
|
+
'display:none',
|
|
198
|
+
'border:1px solid rgba(88,166,255,0.95)',
|
|
199
|
+
'background:rgba(56,139,253,0.18)',
|
|
200
|
+
'box-shadow:0 0 0 1px rgba(10,15,23,0.55) inset',
|
|
201
|
+
'pointer-events:none',
|
|
202
|
+
].join(';');
|
|
203
|
+
root.appendChild(boxSelectionOverlay);
|
|
204
|
+
const shortcutHelpPanel = createLocalEditorShortcutHelpPanel(doc);
|
|
205
|
+
root.appendChild(shortcutHelpPanel);
|
|
206
|
+
enterEditorButton.addEventListener('click', () => callbacks.onEnterEditor?.());
|
|
207
|
+
saveButton.addEventListener('click', () => callbacks.onSaveScene?.());
|
|
208
|
+
saveAndRunButton.addEventListener('click', () => callbacks.onSaveAndRunGame?.());
|
|
209
|
+
discardRunButton.addEventListener('click', () => callbacks.onDiscardAndRunGame?.());
|
|
210
|
+
undoButton.addEventListener('click', () => callbacks.onUndo?.());
|
|
211
|
+
redoButton.addEventListener('click', () => callbacks.onRedo?.());
|
|
212
|
+
const setShortcutHelpOpen = (open) => {
|
|
213
|
+
helpOpen = open;
|
|
214
|
+
inputRouter.setModalOpen(open);
|
|
215
|
+
shortcutHelpPanel.style.display = helpOpen ? '' : 'none';
|
|
216
|
+
LocalEditorShared.applyButtonActiveState(sceneHelpButton, helpOpen);
|
|
217
|
+
};
|
|
218
|
+
sceneHelpButton.addEventListener('click', () => {
|
|
219
|
+
setShortcutHelpOpen(!helpOpen);
|
|
220
|
+
});
|
|
221
|
+
shortcutHelpPanel.addEventListener('click', (event) => {
|
|
222
|
+
const target = event.target instanceof HTMLElement ? event.target : null;
|
|
223
|
+
if (!target?.closest('[data-editor-shortcut-help-close]'))
|
|
224
|
+
return;
|
|
225
|
+
setShortcutHelpOpen(false);
|
|
226
|
+
});
|
|
227
|
+
toolGroup.addEventListener('click', (event) => {
|
|
228
|
+
const target = event.target instanceof HTMLElement ? event.target : null;
|
|
229
|
+
const tool = target?.closest('[data-transform-tool]')?.dataset.transformTool;
|
|
230
|
+
if (tool)
|
|
231
|
+
callbacks.onTransformToolChange?.(tool);
|
|
232
|
+
});
|
|
233
|
+
spaceGroup.addEventListener('click', (event) => {
|
|
234
|
+
const target = event.target instanceof HTMLElement ? event.target : null;
|
|
235
|
+
const space = target?.closest('[data-transform-space]')?.dataset.transformSpace;
|
|
236
|
+
if (space)
|
|
237
|
+
callbacks.onTransformSpaceChange?.(space);
|
|
238
|
+
});
|
|
239
|
+
constraintGroup.addEventListener('click', (event) => {
|
|
240
|
+
const target = event.target instanceof HTMLElement ? event.target : null;
|
|
241
|
+
const constraint = target?.closest('[data-transform-constraint]')?.dataset.transformConstraint;
|
|
242
|
+
if (!constraint)
|
|
243
|
+
return;
|
|
244
|
+
const currentConstraint = currentState?.transformTool?.activeConstraint ?? 'axis';
|
|
245
|
+
callbacks.onTransformConstraintChange?.(currentConstraint === constraint ? 'axis' : constraint);
|
|
246
|
+
});
|
|
247
|
+
assetPanel.addEventListener('click', (event) => {
|
|
248
|
+
const target = event.target instanceof HTMLElement ? event.target : null;
|
|
249
|
+
const tabButton = target?.closest('[data-editor-dock-tab]');
|
|
250
|
+
const tab = tabButton?.dataset.editorDockTab;
|
|
251
|
+
if (tab === 'assets' || tab === 'history') {
|
|
252
|
+
panelRegistry.setBottomDockTab(tab);
|
|
253
|
+
if (currentState)
|
|
254
|
+
render(currentState);
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
const assetButton = target?.closest('[data-editor-asset-id]');
|
|
258
|
+
if (assetButton?.dataset.editorAssetId) {
|
|
259
|
+
callbacks.onCreateFromAsset?.(assetButton.dataset.editorAssetId);
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
hierarchyPanel.addEventListener('click', (event) => {
|
|
264
|
+
const target = event.target instanceof HTMLElement ? event.target : null;
|
|
265
|
+
if (target?.closest('[data-editor-hierarchy-rename-input]'))
|
|
266
|
+
return;
|
|
267
|
+
const createGroupButton = target?.closest('[data-editor-hierarchy-create-group]');
|
|
268
|
+
if (createGroupButton) {
|
|
269
|
+
callbacks.onSceneGraphCreateGroup?.({
|
|
270
|
+
parentId: currentState?.activeId ?? null,
|
|
271
|
+
activeId: currentState?.activeId ?? null,
|
|
272
|
+
name: 'Group',
|
|
273
|
+
});
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
const hierarchyButton = target?.closest('[data-editor-hierarchy-id]');
|
|
277
|
+
if (hierarchyButton?.dataset.editorHierarchyId) {
|
|
278
|
+
callbacks.onSelectHierarchyItem?.({
|
|
279
|
+
id: hierarchyButton.dataset.editorHierarchyId,
|
|
280
|
+
additive: event.shiftKey && !event.metaKey && !event.ctrlKey,
|
|
281
|
+
toggle: event.metaKey || event.ctrlKey,
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
hierarchyPanel.addEventListener('dblclick', (event) => {
|
|
286
|
+
const target = event.target instanceof HTMLElement ? event.target : null;
|
|
287
|
+
const hierarchyButton = target?.closest('[data-editor-hierarchy-id]');
|
|
288
|
+
const id = hierarchyButton?.dataset.editorHierarchyId;
|
|
289
|
+
if (!id || !currentState)
|
|
290
|
+
return;
|
|
291
|
+
const item = currentState.hierarchy.find(candidate => candidate.id === id);
|
|
292
|
+
if (!item || item.locked || item.renamable === false)
|
|
293
|
+
return;
|
|
294
|
+
event.preventDefault();
|
|
295
|
+
hierarchyRename = { id, value: item.label };
|
|
296
|
+
render(currentState);
|
|
297
|
+
});
|
|
298
|
+
hierarchyPanel.addEventListener('input', (event) => {
|
|
299
|
+
const input = event.target instanceof HTMLInputElement ? event.target : null;
|
|
300
|
+
if (!input?.dataset.editorHierarchyRenameInput || !hierarchyRename)
|
|
301
|
+
return;
|
|
302
|
+
hierarchyRename = {
|
|
303
|
+
id: input.dataset.editorHierarchyRenameInput,
|
|
304
|
+
value: input.value,
|
|
305
|
+
};
|
|
306
|
+
});
|
|
307
|
+
hierarchyPanel.addEventListener('keydown', (event) => {
|
|
308
|
+
const input = event.target instanceof HTMLInputElement ? event.target : null;
|
|
309
|
+
if (!input?.dataset.editorHierarchyRenameInput)
|
|
310
|
+
return;
|
|
311
|
+
if (event.key === 'Enter') {
|
|
312
|
+
event.preventDefault();
|
|
313
|
+
commitHierarchyRename(input.dataset.editorHierarchyRenameInput, input.value);
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
if (event.key === 'Escape') {
|
|
317
|
+
event.preventDefault();
|
|
318
|
+
hierarchyRename = null;
|
|
319
|
+
if (currentState)
|
|
320
|
+
render(currentState);
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
hierarchyPanel.addEventListener('focusout', (event) => {
|
|
324
|
+
const input = event.target instanceof HTMLInputElement ? event.target : null;
|
|
325
|
+
if (!input?.dataset.editorHierarchyRenameInput)
|
|
326
|
+
return;
|
|
327
|
+
commitHierarchyRename(input.dataset.editorHierarchyRenameInput, input.value);
|
|
328
|
+
});
|
|
329
|
+
hierarchyPanel.addEventListener('dragstart', (event) => {
|
|
330
|
+
const target = event.target instanceof HTMLElement ? event.target : null;
|
|
331
|
+
const button = target?.closest('[data-editor-hierarchy-id]');
|
|
332
|
+
const id = button?.dataset.editorHierarchyId;
|
|
333
|
+
if (!id || !currentState)
|
|
334
|
+
return;
|
|
335
|
+
const item = currentState.hierarchy.find(candidate => candidate.id === id);
|
|
336
|
+
if (!item || item.locked || item.draggable === false) {
|
|
337
|
+
event.preventDefault();
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
hierarchyDrag = { id };
|
|
341
|
+
event.dataTransfer?.setData('text/plain', id);
|
|
342
|
+
if (event.dataTransfer)
|
|
343
|
+
event.dataTransfer.effectAllowed = 'move';
|
|
344
|
+
});
|
|
345
|
+
hierarchyPanel.addEventListener('dragover', (event) => {
|
|
346
|
+
const target = event.target instanceof HTMLElement ? event.target : null;
|
|
347
|
+
const button = target?.closest('[data-editor-hierarchy-id]');
|
|
348
|
+
const targetId = button?.dataset.editorHierarchyId;
|
|
349
|
+
const draggedId = hierarchyDrag?.id ?? event.dataTransfer?.getData('text/plain') ?? '';
|
|
350
|
+
if (!targetId || !draggedId || draggedId === targetId)
|
|
351
|
+
return;
|
|
352
|
+
event.preventDefault();
|
|
353
|
+
const placement = LocalEditorShared.readHierarchyDropPlacement(event, button);
|
|
354
|
+
const targetItem = currentState?.hierarchy.find(item => item.id === targetId) ?? null;
|
|
355
|
+
const canSubmitInsideDrop = placement === 'inside'
|
|
356
|
+
&& targetItem?.locked !== true
|
|
357
|
+
&& targetItem?.canHaveChildren !== false;
|
|
358
|
+
hierarchyDrop = {
|
|
359
|
+
draggedId,
|
|
360
|
+
targetId,
|
|
361
|
+
placement,
|
|
362
|
+
preserveWorldTransform: true,
|
|
363
|
+
};
|
|
364
|
+
if (event.dataTransfer)
|
|
365
|
+
event.dataTransfer.dropEffect = canSubmitInsideDrop ? 'move' : 'none';
|
|
366
|
+
if (currentState)
|
|
367
|
+
render(currentState);
|
|
368
|
+
});
|
|
369
|
+
hierarchyPanel.addEventListener('dragleave', (event) => {
|
|
370
|
+
if (!hierarchyPanel.contains(event.relatedTarget)) {
|
|
371
|
+
hierarchyDrop = null;
|
|
372
|
+
if (currentState)
|
|
373
|
+
render(currentState);
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
hierarchyPanel.addEventListener('dragend', () => {
|
|
377
|
+
hierarchyDrag = null;
|
|
378
|
+
hierarchyDrop = null;
|
|
379
|
+
if (currentState)
|
|
380
|
+
render(currentState);
|
|
381
|
+
});
|
|
382
|
+
hierarchyPanel.addEventListener('drop', (event) => {
|
|
383
|
+
const target = event.target instanceof HTMLElement ? event.target : null;
|
|
384
|
+
const button = target?.closest('[data-editor-hierarchy-id]');
|
|
385
|
+
const targetId = button?.dataset.editorHierarchyId;
|
|
386
|
+
const draggedId = hierarchyDrop?.draggedId ?? hierarchyDrag?.id ?? event.dataTransfer?.getData('text/plain') ?? '';
|
|
387
|
+
if (!targetId || !draggedId || draggedId === targetId)
|
|
388
|
+
return;
|
|
389
|
+
event.preventDefault();
|
|
390
|
+
const placement = LocalEditorShared.readHierarchyDropPlacement(event, button);
|
|
391
|
+
const targetItem = currentState?.hierarchy.find(item => item.id === targetId) ?? null;
|
|
392
|
+
const canSubmitInsideDrop = placement === 'inside'
|
|
393
|
+
&& targetItem?.locked !== true
|
|
394
|
+
&& targetItem?.canHaveChildren !== false;
|
|
395
|
+
hierarchyDrag = null;
|
|
396
|
+
hierarchyDrop = null;
|
|
397
|
+
if (!canSubmitInsideDrop) {
|
|
398
|
+
if (currentState)
|
|
399
|
+
render(currentState);
|
|
400
|
+
return;
|
|
401
|
+
}
|
|
402
|
+
callbacks.onSceneGraphDrop?.({
|
|
403
|
+
draggedId,
|
|
404
|
+
targetId,
|
|
405
|
+
placement,
|
|
406
|
+
preserveWorldTransform: true,
|
|
407
|
+
});
|
|
408
|
+
});
|
|
409
|
+
assetPanel.addEventListener('input', (event) => {
|
|
410
|
+
const input = event.target instanceof HTMLInputElement ? event.target : null;
|
|
411
|
+
if (input?.dataset.editorAssetFilter == null)
|
|
412
|
+
return;
|
|
413
|
+
callbacks.onAssetFilterChange?.(input.value);
|
|
414
|
+
});
|
|
415
|
+
inspectorPanel.addEventListener('input', (event) => {
|
|
416
|
+
const input = event.target instanceof HTMLInputElement ? event.target : null;
|
|
417
|
+
if (!input?.dataset.serializedPath || !input.dataset.serializedTargetId)
|
|
418
|
+
return;
|
|
419
|
+
const targetIds = input.dataset.serializedTargetIds
|
|
420
|
+
? input.dataset.serializedTargetIds.split(',').filter(Boolean)
|
|
421
|
+
: undefined;
|
|
422
|
+
callbacks.onPropertyInput?.({
|
|
423
|
+
targetId: input.dataset.serializedTargetId,
|
|
424
|
+
targetIds,
|
|
425
|
+
path: input.dataset.serializedPath,
|
|
426
|
+
value: input.type === 'number' ? Number(input.value) : input.value,
|
|
427
|
+
});
|
|
428
|
+
});
|
|
429
|
+
const onKeyDown = (event) => {
|
|
430
|
+
if (currentState?.mode !== 'editor' || currentState.busy)
|
|
431
|
+
return;
|
|
432
|
+
const key = event.key.toLowerCase();
|
|
433
|
+
const primaryModifier = event.metaKey || event.ctrlKey;
|
|
434
|
+
const handleDocumentShortcut = inputRouter.shouldHandleDocumentShortcut(event);
|
|
435
|
+
const handleGlobalShortcut = inputRouter.shouldHandleGlobalShortcut(event);
|
|
436
|
+
if (handleDocumentShortcut && primaryModifier && key === 's') {
|
|
437
|
+
event.preventDefault();
|
|
438
|
+
callbacks.onSaveScene?.();
|
|
439
|
+
return;
|
|
440
|
+
}
|
|
441
|
+
if (handleGlobalShortcut && primaryModifier && key === 'z') {
|
|
442
|
+
event.preventDefault();
|
|
443
|
+
if (event.shiftKey)
|
|
444
|
+
callbacks.onRedo?.();
|
|
445
|
+
else
|
|
446
|
+
callbacks.onUndo?.();
|
|
447
|
+
return;
|
|
448
|
+
}
|
|
449
|
+
if (handleGlobalShortcut && event.ctrlKey && key === 'y') {
|
|
450
|
+
event.preventDefault();
|
|
451
|
+
callbacks.onRedo?.();
|
|
452
|
+
return;
|
|
453
|
+
}
|
|
454
|
+
if (handleGlobalShortcut && (key === 'delete' || key === 'backspace')) {
|
|
455
|
+
const state = currentState;
|
|
456
|
+
const selectedIds = state.selectedIds.filter((id) => {
|
|
457
|
+
const item = state.hierarchy.find(candidate => candidate.id === id);
|
|
458
|
+
return item && item.locked !== true && item.deletable !== false;
|
|
459
|
+
});
|
|
460
|
+
if (selectedIds.length > 0) {
|
|
461
|
+
event.preventDefault();
|
|
462
|
+
callbacks.onSceneGraphDelete?.({
|
|
463
|
+
ids: selectedIds,
|
|
464
|
+
activeId: state.activeId,
|
|
465
|
+
});
|
|
466
|
+
}
|
|
467
|
+
return;
|
|
468
|
+
}
|
|
469
|
+
if (!handleGlobalShortcut || event.metaKey || event.ctrlKey || event.altKey)
|
|
470
|
+
return;
|
|
471
|
+
const toolByKey = {
|
|
472
|
+
q: 'select',
|
|
473
|
+
w: 'move',
|
|
474
|
+
e: 'rotate',
|
|
475
|
+
r: 'scale',
|
|
476
|
+
};
|
|
477
|
+
const tool = toolByKey[key];
|
|
478
|
+
if (tool) {
|
|
479
|
+
event.preventDefault();
|
|
480
|
+
callbacks.onTransformToolChange?.(tool);
|
|
481
|
+
return;
|
|
482
|
+
}
|
|
483
|
+
if (key === 'f') {
|
|
484
|
+
event.preventDefault();
|
|
485
|
+
callbacks.onFocusSelection?.();
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
488
|
+
if (key === 'escape') {
|
|
489
|
+
event.preventDefault();
|
|
490
|
+
callbacks.onCancelActiveOperation?.();
|
|
491
|
+
}
|
|
492
|
+
};
|
|
493
|
+
doc.addEventListener('keydown', onKeyDown);
|
|
494
|
+
function commitHierarchyRename(id, value) {
|
|
495
|
+
if (!hierarchyRename || hierarchyRename.id !== id)
|
|
496
|
+
return;
|
|
497
|
+
const trimmed = value.trim();
|
|
498
|
+
const item = currentState?.hierarchy.find(candidate => candidate.id === id) ?? null;
|
|
499
|
+
hierarchyRename = null;
|
|
500
|
+
if (trimmed && item && trimmed !== item.label) {
|
|
501
|
+
callbacks.onSceneGraphRename?.({ id, name: trimmed });
|
|
502
|
+
}
|
|
503
|
+
if (currentState)
|
|
504
|
+
render(currentState);
|
|
505
|
+
}
|
|
506
|
+
const render = (state) => {
|
|
507
|
+
currentState = state;
|
|
508
|
+
const inEditor = state.mode === 'editor';
|
|
509
|
+
const disabled = state.busy;
|
|
510
|
+
hostChrome.style.display = inEditor ? 'none' : 'flex';
|
|
511
|
+
enterEditorButton.disabled = disabled;
|
|
512
|
+
for (const button of [saveButton, saveAndRunButton, discardRunButton, undoButton, redoButton, sceneHelpButton]) {
|
|
513
|
+
button.style.display = '';
|
|
514
|
+
button.disabled = disabled;
|
|
515
|
+
}
|
|
516
|
+
if (!inEditor)
|
|
517
|
+
helpOpen = false;
|
|
518
|
+
inputRouter.setModalOpen(inEditor && helpOpen);
|
|
519
|
+
const transformTool = state.transformTool ?? null;
|
|
520
|
+
workbench.root.style.display = inEditor ? '' : 'none';
|
|
521
|
+
sceneToolOverlay.style.display = inEditor ? 'flex' : 'none';
|
|
522
|
+
for (const [tool, button] of Object.entries(toolButtons)) {
|
|
523
|
+
button.disabled = disabled;
|
|
524
|
+
LocalEditorShared.applyButtonActiveState(button, transformTool?.activeTool === tool);
|
|
525
|
+
}
|
|
526
|
+
for (const [space, button] of Object.entries(spaceButtons)) {
|
|
527
|
+
button.disabled = disabled;
|
|
528
|
+
LocalEditorShared.applyButtonActiveState(button, transformTool?.activeSpace === space);
|
|
529
|
+
}
|
|
530
|
+
sceneHelpButton.disabled = disabled;
|
|
531
|
+
viewPlaneButton.disabled = disabled || transformTool?.activeTool !== 'move';
|
|
532
|
+
LocalEditorShared.applyButtonActiveState(viewPlaneButton, transformTool?.activeTool === 'move' && transformTool?.activeConstraint === 'view-plane');
|
|
533
|
+
undoButton.disabled = disabled || !state.session?.canUndo;
|
|
534
|
+
redoButton.disabled = disabled || !state.session?.canRedo;
|
|
535
|
+
LocalEditorShared.applyButtonActiveState(sceneHelpButton, inEditor && helpOpen);
|
|
536
|
+
shortcutHelpPanel.style.display = inEditor && helpOpen ? '' : 'none';
|
|
537
|
+
dirtyBadge.style.display = inEditor && state.session?.dirty ? 'inline-flex' : 'none';
|
|
538
|
+
const dragSuffix = transformTool?.dragPhase === 'dragging'
|
|
539
|
+
? ` | dragging ${transformTool.draggingNodeId ?? 'selection'}`
|
|
540
|
+
: '';
|
|
541
|
+
status.textContent = [
|
|
542
|
+
state.status,
|
|
543
|
+
state.session?.dirty ? '*' : '',
|
|
544
|
+
LocalEditorShared.formatAuthoringSourceLabel(state.session?.source),
|
|
545
|
+
state.summary,
|
|
546
|
+
].filter(Boolean).join(' | ');
|
|
547
|
+
status.textContent += dragSuffix;
|
|
548
|
+
sceneToolStatus.textContent = transformTool?.dragPhase === 'dragging'
|
|
549
|
+
? `正在拖拽 ${transformTool.draggingNodeId ?? '选择对象'}`
|
|
550
|
+
: `${LocalEditorShared.toTransformToolLabel(transformTool?.activeTool ?? 'select')} · ${LocalEditorShared.toTransformSpaceLabel(transformTool?.activeSpace ?? 'world')}${transformTool?.activeConstraint === 'view-plane' ? ' · 视图平面' : ''}`;
|
|
551
|
+
sceneMouseHint.textContent = transformTool?.activeConstraint === 'view-plane'
|
|
552
|
+
? '视图平面移动 · 左键拖拽选中对象 · Esc 取消'
|
|
553
|
+
: '左键选择 · 空白拖拽框选 · 中键平移 · Alt+左键环绕 · 右键飞行 · 滚轮缩放';
|
|
554
|
+
const boxSelection = state.boxSelection;
|
|
555
|
+
if (inEditor && boxSelection?.active) {
|
|
556
|
+
boxSelectionOverlay.style.display = '';
|
|
557
|
+
boxSelectionOverlay.style.left = `${boxSelection.left}px`;
|
|
558
|
+
boxSelectionOverlay.style.top = `${boxSelection.top}px`;
|
|
559
|
+
boxSelectionOverlay.style.width = `${boxSelection.width}px`;
|
|
560
|
+
boxSelectionOverlay.style.height = `${boxSelection.height}px`;
|
|
561
|
+
}
|
|
562
|
+
else {
|
|
563
|
+
boxSelectionOverlay.style.display = 'none';
|
|
564
|
+
}
|
|
565
|
+
if (!inEditor)
|
|
566
|
+
return;
|
|
567
|
+
const hierarchyDescriptor = panelRegistry.getActivePanel('left');
|
|
568
|
+
const inspectorDescriptor = panelRegistry.getActivePanel('right');
|
|
569
|
+
hierarchyPanel.dataset.editorPanelId = hierarchyDescriptor?.id ?? 'hierarchy';
|
|
570
|
+
inspectorPanel.dataset.editorPanelId = inspectorDescriptor?.id ?? 'inspector';
|
|
571
|
+
LocalEditorPanels.renderHierarchyPanel(doc, hierarchyPanel, state, hierarchyRename, hierarchyDrop);
|
|
572
|
+
LocalEditorPanels.renderWorkbenchBottomDockPanel(doc, assetPanel, state, panelRegistry.getBottomDockTab(), panelRegistry.getPanels('bottom'));
|
|
573
|
+
LocalEditorPanels.renderInspectorPanel(doc, inspectorPanel, state);
|
|
574
|
+
};
|
|
575
|
+
return {
|
|
576
|
+
update(state) {
|
|
577
|
+
render(state);
|
|
578
|
+
},
|
|
579
|
+
dispose() {
|
|
580
|
+
hostChrome.remove();
|
|
581
|
+
workbench.root.remove();
|
|
582
|
+
boxSelectionOverlay.remove();
|
|
583
|
+
shortcutHelpPanel.remove();
|
|
584
|
+
inputRouter.dispose();
|
|
585
|
+
doc.removeEventListener('keydown', onKeyDown);
|
|
586
|
+
},
|
|
587
|
+
};
|
|
588
|
+
}
|
|
589
|
+
//# sourceMappingURL=local-editor-ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-editor-ui.js","sourceRoot":"","sources":["../src/local-editor-ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@fps-games/editor-browser",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"description": "Browser host adapters for fps-game-editor.",
|
|
7
|
+
"sideEffects": false,
|
|
8
|
+
"main": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.js"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|