@aura3d/editor-runtime 1.0.6
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/README.md +20 -0
- package/dist/Command.d.ts +11 -0
- package/dist/Command.d.ts.map +1 -0
- package/dist/Command.js +2 -0
- package/dist/Command.js.map +1 -0
- package/dist/CommandHistory.d.ts +20 -0
- package/dist/CommandHistory.d.ts.map +1 -0
- package/dist/CommandHistory.js +124 -0
- package/dist/CommandHistory.js.map +1 -0
- package/dist/DiagnosticsOverlayModel.d.ts +30 -0
- package/dist/DiagnosticsOverlayModel.d.ts.map +1 -0
- package/dist/DiagnosticsOverlayModel.js +57 -0
- package/dist/DiagnosticsOverlayModel.js.map +1 -0
- package/dist/EditorPluginHost.d.ts +46 -0
- package/dist/EditorPluginHost.d.ts.map +1 -0
- package/dist/EditorPluginHost.js +57 -0
- package/dist/EditorPluginHost.js.map +1 -0
- package/dist/EditorRuntime.d.ts +95 -0
- package/dist/EditorRuntime.d.ts.map +1 -0
- package/dist/EditorRuntime.js +277 -0
- package/dist/EditorRuntime.js.map +1 -0
- package/dist/EditorStateModel.d.ts +93 -0
- package/dist/EditorStateModel.d.ts.map +1 -0
- package/dist/EditorStateModel.js +251 -0
- package/dist/EditorStateModel.js.map +1 -0
- package/dist/Gizmo.d.ts +43 -0
- package/dist/Gizmo.d.ts.map +1 -0
- package/dist/Gizmo.js +60 -0
- package/dist/Gizmo.js.map +1 -0
- package/dist/HierarchyModel.d.ts +21 -0
- package/dist/HierarchyModel.d.ts.map +1 -0
- package/dist/HierarchyModel.js +32 -0
- package/dist/HierarchyModel.js.map +1 -0
- package/dist/InspectorModel.d.ts +16 -0
- package/dist/InspectorModel.d.ts.map +1 -0
- package/dist/InspectorModel.js +53 -0
- package/dist/InspectorModel.js.map +1 -0
- package/dist/LocalizationAccessibilityFixtures.d.ts +70 -0
- package/dist/LocalizationAccessibilityFixtures.d.ts.map +1 -0
- package/dist/LocalizationAccessibilityFixtures.js +275 -0
- package/dist/LocalizationAccessibilityFixtures.js.map +1 -0
- package/dist/MaterialVariantWorkflow.d.ts +19 -0
- package/dist/MaterialVariantWorkflow.d.ts.map +1 -0
- package/dist/MaterialVariantWorkflow.js +82 -0
- package/dist/MaterialVariantWorkflow.js.map +1 -0
- package/dist/PickingService.d.ts +58 -0
- package/dist/PickingService.d.ts.map +1 -0
- package/dist/PickingService.js +119 -0
- package/dist/PickingService.js.map +1 -0
- package/dist/PlayModeBridge.d.ts +14 -0
- package/dist/PlayModeBridge.d.ts.map +1 -0
- package/dist/PlayModeBridge.js +23 -0
- package/dist/PlayModeBridge.js.map +1 -0
- package/dist/PrefabRegistry.d.ts +41 -0
- package/dist/PrefabRegistry.d.ts.map +1 -0
- package/dist/PrefabRegistry.js +119 -0
- package/dist/PrefabRegistry.js.map +1 -0
- package/dist/ProjectSerializer.d.ts +82 -0
- package/dist/ProjectSerializer.d.ts.map +1 -0
- package/dist/ProjectSerializer.js +131 -0
- package/dist/ProjectSerializer.js.map +1 -0
- package/dist/RotateGizmo.d.ts +5 -0
- package/dist/RotateGizmo.d.ts.map +1 -0
- package/dist/RotateGizmo.js +37 -0
- package/dist/RotateGizmo.js.map +1 -0
- package/dist/ScaleGizmo.d.ts +5 -0
- package/dist/ScaleGizmo.d.ts.map +1 -0
- package/dist/ScaleGizmo.js +42 -0
- package/dist/ScaleGizmo.js.map +1 -0
- package/dist/Selection.d.ts +20 -0
- package/dist/Selection.d.ts.map +1 -0
- package/dist/Selection.js +46 -0
- package/dist/Selection.js.map +1 -0
- package/dist/ShaderGraphModel.d.ts +69 -0
- package/dist/ShaderGraphModel.d.ts.map +1 -0
- package/dist/ShaderGraphModel.js +172 -0
- package/dist/ShaderGraphModel.js.map +1 -0
- package/dist/StaticExportRuntime.d.ts +13 -0
- package/dist/StaticExportRuntime.d.ts.map +1 -0
- package/dist/StaticExportRuntime.js +307 -0
- package/dist/StaticExportRuntime.js.map +1 -0
- package/dist/TimelineModel.d.ts +175 -0
- package/dist/TimelineModel.d.ts.map +1 -0
- package/dist/TimelineModel.js +335 -0
- package/dist/TimelineModel.js.map +1 -0
- package/dist/TimelineRuntimeBridge.d.ts +98 -0
- package/dist/TimelineRuntimeBridge.d.ts.map +1 -0
- package/dist/TimelineRuntimeBridge.js +186 -0
- package/dist/TimelineRuntimeBridge.js.map +1 -0
- package/dist/TranslateGizmo.d.ts +5 -0
- package/dist/TranslateGizmo.d.ts.map +1 -0
- package/dist/TranslateGizmo.js +41 -0
- package/dist/TranslateGizmo.js.map +1 -0
- package/dist/commands/CreateNodeCommand.d.ts +14 -0
- package/dist/commands/CreateNodeCommand.d.ts.map +1 -0
- package/dist/commands/CreateNodeCommand.js +16 -0
- package/dist/commands/CreateNodeCommand.js.map +1 -0
- package/dist/commands/DeleteNodeCommand.d.ts +13 -0
- package/dist/commands/DeleteNodeCommand.d.ts.map +1 -0
- package/dist/commands/DeleteNodeCommand.js +55 -0
- package/dist/commands/DeleteNodeCommand.js.map +1 -0
- package/dist/commands/ReparentNodeCommand.d.ts +24 -0
- package/dist/commands/ReparentNodeCommand.d.ts.map +1 -0
- package/dist/commands/ReparentNodeCommand.js +39 -0
- package/dist/commands/ReparentNodeCommand.js.map +1 -0
- package/dist/commands/SetPropertyCommand.d.ts +14 -0
- package/dist/commands/SetPropertyCommand.d.ts.map +1 -0
- package/dist/commands/SetPropertyCommand.js +43 -0
- package/dist/commands/SetPropertyCommand.js.map +1 -0
- package/dist/commands/TransformCommand.d.ts +42 -0
- package/dist/commands/TransformCommand.d.ts.map +1 -0
- package/dist/commands/TransformCommand.js +72 -0
- package/dist/commands/TransformCommand.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/package.json +17 -0
- package/src/Command.ts +11 -0
- package/src/CommandHistory.ts +136 -0
- package/src/DiagnosticsOverlayModel.ts +85 -0
- package/src/EditorPluginHost.ts +106 -0
- package/src/EditorRuntime.ts +349 -0
- package/src/EditorStateModel.ts +336 -0
- package/src/Gizmo.ts +101 -0
- package/src/HierarchyModel.ts +57 -0
- package/src/InspectorModel.ts +71 -0
- package/src/LocalizationAccessibilityFixtures.ts +368 -0
- package/src/MaterialVariantWorkflow.ts +101 -0
- package/src/PickingService.ts +174 -0
- package/src/PlayModeBridge.ts +27 -0
- package/src/PrefabRegistry.ts +164 -0
- package/src/ProjectSerializer.ts +200 -0
- package/src/RotateGizmo.ts +35 -0
- package/src/ScaleGizmo.ts +40 -0
- package/src/Selection.ts +63 -0
- package/src/ShaderGraphModel.ts +254 -0
- package/src/StaticExportRuntime.ts +322 -0
- package/src/TimelineModel.ts +466 -0
- package/src/TimelineRuntimeBridge.ts +280 -0
- package/src/TranslateGizmo.ts +39 -0
- package/src/commands/CreateNodeCommand.ts +23 -0
- package/src/commands/DeleteNodeCommand.ts +74 -0
- package/src/commands/ReparentNodeCommand.ts +55 -0
- package/src/commands/SetPropertyCommand.ts +47 -0
- package/src/commands/TransformCommand.ts +107 -0
- package/src/index.ts +85 -0
- package/tests/editor-runtime.test.ts +597 -0
- package/tsconfig.json +7 -0
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import { CommandHistory } from "./CommandHistory.js";
|
|
2
|
+
import { DiagnosticsOverlayModel } from "./DiagnosticsOverlayModel.js";
|
|
3
|
+
import { normalizeGizmoSettings } from "./Gizmo.js";
|
|
4
|
+
import { EditorStateModel } from "./EditorStateModel.js";
|
|
5
|
+
import { HierarchyModel } from "./HierarchyModel.js";
|
|
6
|
+
import { InspectorModel } from "./InspectorModel.js";
|
|
7
|
+
import { MaterialVariantWorkflow } from "./MaterialVariantWorkflow.js";
|
|
8
|
+
import { PickingService } from "./PickingService.js";
|
|
9
|
+
import { PrefabRegistry } from "./PrefabRegistry.js";
|
|
10
|
+
import { RotateGizmo } from "./RotateGizmo.js";
|
|
11
|
+
import { ScaleGizmo } from "./ScaleGizmo.js";
|
|
12
|
+
import { Selection } from "./Selection.js";
|
|
13
|
+
import { TranslateGizmo } from "./TranslateGizmo.js";
|
|
14
|
+
export class EditorRuntime {
|
|
15
|
+
selection = new Selection();
|
|
16
|
+
history = new CommandHistory();
|
|
17
|
+
inspector = new InspectorModel();
|
|
18
|
+
hierarchy = new HierarchyModel();
|
|
19
|
+
materialVariants = new MaterialVariantWorkflow();
|
|
20
|
+
diagnostics = new DiagnosticsOverlayModel();
|
|
21
|
+
prefabs = new PrefabRegistry();
|
|
22
|
+
state;
|
|
23
|
+
picking = new PickingService();
|
|
24
|
+
modeRef = "edit";
|
|
25
|
+
activeToolRef = "select";
|
|
26
|
+
gizmoSettingsRef;
|
|
27
|
+
disposed = false;
|
|
28
|
+
activePlayModeBridge = null;
|
|
29
|
+
constructor(options = {}) {
|
|
30
|
+
this.state = new EditorStateModel({ storage: options.stateStorage, storageKey: options.stateStorageKey });
|
|
31
|
+
this.activeToolRef = this.state.activeTool;
|
|
32
|
+
this.gizmoSettingsRef = this.state.gizmoSettings();
|
|
33
|
+
}
|
|
34
|
+
get mode() {
|
|
35
|
+
return this.modeRef;
|
|
36
|
+
}
|
|
37
|
+
get activeTool() {
|
|
38
|
+
return this.activeToolRef;
|
|
39
|
+
}
|
|
40
|
+
setTool(tool) {
|
|
41
|
+
this.assertEditable();
|
|
42
|
+
const normalized = tool.trim();
|
|
43
|
+
if (normalized.length === 0) {
|
|
44
|
+
throw new Error("EditorRuntime tool name cannot be empty.");
|
|
45
|
+
}
|
|
46
|
+
this.state.setActiveTool(normalized);
|
|
47
|
+
this.activeToolRef = normalized;
|
|
48
|
+
}
|
|
49
|
+
configureGizmos(settings) {
|
|
50
|
+
this.assertEditable();
|
|
51
|
+
this.gizmoSettingsRef = normalizeGizmoSettings({ ...this.gizmoSettingsRef, ...settings });
|
|
52
|
+
this.state.configureFromGizmoSettings(this.gizmoSettingsRef);
|
|
53
|
+
return this.gizmoSettingsRef;
|
|
54
|
+
}
|
|
55
|
+
gizmoSettings() {
|
|
56
|
+
this.assertAlive();
|
|
57
|
+
return this.gizmoSettingsRef;
|
|
58
|
+
}
|
|
59
|
+
configureViewportState(settings) {
|
|
60
|
+
this.assertEditable();
|
|
61
|
+
this.state.configureViewport(settings);
|
|
62
|
+
return this.state.snapshot();
|
|
63
|
+
}
|
|
64
|
+
editorStateSnapshot() {
|
|
65
|
+
this.assertAlive();
|
|
66
|
+
return this.state.snapshot();
|
|
67
|
+
}
|
|
68
|
+
setMode(mode) {
|
|
69
|
+
this.assertAlive();
|
|
70
|
+
if (this.activePlayModeBridge && mode === "edit") {
|
|
71
|
+
this.exitPlayMode();
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
this.modeRef = mode;
|
|
75
|
+
}
|
|
76
|
+
pruneSelection(alive) {
|
|
77
|
+
this.assertEditable();
|
|
78
|
+
this.selection.prune(alive);
|
|
79
|
+
}
|
|
80
|
+
currentSelection() {
|
|
81
|
+
this.assertAlive();
|
|
82
|
+
return this.selection.current();
|
|
83
|
+
}
|
|
84
|
+
select(ids) {
|
|
85
|
+
this.assertEditable();
|
|
86
|
+
this.selection.set(ids);
|
|
87
|
+
}
|
|
88
|
+
clearSelection() {
|
|
89
|
+
this.assertEditable();
|
|
90
|
+
this.selection.clear();
|
|
91
|
+
}
|
|
92
|
+
async executeCommand(command, context) {
|
|
93
|
+
this.assertEditable();
|
|
94
|
+
await this.history.execute(command, context);
|
|
95
|
+
}
|
|
96
|
+
async executeTransaction(commands, context) {
|
|
97
|
+
this.assertEditable();
|
|
98
|
+
await this.history.executeTransaction(commands, context);
|
|
99
|
+
}
|
|
100
|
+
async undo(context) {
|
|
101
|
+
this.assertEditable();
|
|
102
|
+
await this.history.undo(context);
|
|
103
|
+
}
|
|
104
|
+
async redo(context) {
|
|
105
|
+
this.assertEditable();
|
|
106
|
+
await this.history.redo(context);
|
|
107
|
+
}
|
|
108
|
+
clearHistory() {
|
|
109
|
+
this.assertEditable();
|
|
110
|
+
this.history.clear();
|
|
111
|
+
}
|
|
112
|
+
inspect(target) {
|
|
113
|
+
this.assertAlive();
|
|
114
|
+
return this.inspector.describe(target);
|
|
115
|
+
}
|
|
116
|
+
async editInspectedProperty(target, path, value, context) {
|
|
117
|
+
this.assertEditable();
|
|
118
|
+
await this.history.execute(this.inspector.createSetPropertyCommand(target, path, value), context);
|
|
119
|
+
}
|
|
120
|
+
describeHierarchy(root) {
|
|
121
|
+
this.assertAlive();
|
|
122
|
+
return this.hierarchy.describe(root, new Set(this.selection.current()));
|
|
123
|
+
}
|
|
124
|
+
flattenHierarchy(root) {
|
|
125
|
+
this.assertAlive();
|
|
126
|
+
return this.hierarchy.flatten(root, new Set(this.selection.current()));
|
|
127
|
+
}
|
|
128
|
+
setPickTargets(targets) {
|
|
129
|
+
this.assertEditable();
|
|
130
|
+
this.picking.setTargets(targets);
|
|
131
|
+
}
|
|
132
|
+
configurePickingBuffer(width, height) {
|
|
133
|
+
this.assertEditable();
|
|
134
|
+
this.picking.resizePickingBuffer(width, height);
|
|
135
|
+
return this.picking.snapshot();
|
|
136
|
+
}
|
|
137
|
+
pick(ray) {
|
|
138
|
+
this.assertAlive();
|
|
139
|
+
return this.picking.pick(ray);
|
|
140
|
+
}
|
|
141
|
+
pickingSnapshot() {
|
|
142
|
+
this.assertAlive();
|
|
143
|
+
return this.picking.snapshot();
|
|
144
|
+
}
|
|
145
|
+
async translateTarget(target, input) {
|
|
146
|
+
this.assertEditable();
|
|
147
|
+
if (!target) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
const gizmo = new TranslateGizmo(this.history, this.gizmoSettingsRef);
|
|
151
|
+
try {
|
|
152
|
+
gizmo.setTarget(target);
|
|
153
|
+
await gizmo.drag(input);
|
|
154
|
+
}
|
|
155
|
+
finally {
|
|
156
|
+
gizmo.dispose();
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
async rotateTarget(target, input) {
|
|
160
|
+
this.assertEditable();
|
|
161
|
+
if (!target) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const gizmo = new RotateGizmo(this.history, this.gizmoSettingsRef);
|
|
165
|
+
try {
|
|
166
|
+
gizmo.setTarget(target);
|
|
167
|
+
await gizmo.drag(input);
|
|
168
|
+
}
|
|
169
|
+
finally {
|
|
170
|
+
gizmo.dispose();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
async scaleTarget(target, input) {
|
|
174
|
+
this.assertEditable();
|
|
175
|
+
if (!target) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
const gizmo = new ScaleGizmo(this.history, this.gizmoSettingsRef);
|
|
179
|
+
try {
|
|
180
|
+
gizmo.setTarget(target);
|
|
181
|
+
await gizmo.drag(input);
|
|
182
|
+
}
|
|
183
|
+
finally {
|
|
184
|
+
gizmo.dispose();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
updateDiagnostics(input) {
|
|
188
|
+
this.assertAlive();
|
|
189
|
+
return this.diagnostics.update(input);
|
|
190
|
+
}
|
|
191
|
+
diagnosticsSnapshot() {
|
|
192
|
+
this.assertAlive();
|
|
193
|
+
return this.diagnostics.snapshot();
|
|
194
|
+
}
|
|
195
|
+
registerMaterialVariants(assetId, variants, selected = null) {
|
|
196
|
+
this.assertEditable();
|
|
197
|
+
return this.materialVariants.register(assetId, variants, selected);
|
|
198
|
+
}
|
|
199
|
+
setMaterialVariant(assetId, variant) {
|
|
200
|
+
this.assertEditable();
|
|
201
|
+
return this.materialVariants.select(assetId, variant);
|
|
202
|
+
}
|
|
203
|
+
materialVariantState(assetId) {
|
|
204
|
+
this.assertAlive();
|
|
205
|
+
return this.materialVariants.state(assetId);
|
|
206
|
+
}
|
|
207
|
+
enterPlayMode(bridge) {
|
|
208
|
+
this.assertAlive();
|
|
209
|
+
if (this.modeRef !== "edit" || this.activePlayModeBridge) {
|
|
210
|
+
throw new Error("EditorRuntime can only enter play mode from edit mode.");
|
|
211
|
+
}
|
|
212
|
+
bridge.enter();
|
|
213
|
+
this.activePlayModeBridge = bridge;
|
|
214
|
+
this.modeRef = "play";
|
|
215
|
+
}
|
|
216
|
+
pausePlayMode() {
|
|
217
|
+
this.assertAlive();
|
|
218
|
+
if (this.modeRef !== "play") {
|
|
219
|
+
throw new Error("EditorRuntime can only pause while play mode is active.");
|
|
220
|
+
}
|
|
221
|
+
this.modeRef = "paused";
|
|
222
|
+
}
|
|
223
|
+
resumePlayMode() {
|
|
224
|
+
this.assertAlive();
|
|
225
|
+
if (this.modeRef !== "paused") {
|
|
226
|
+
throw new Error("EditorRuntime can only resume from paused play mode.");
|
|
227
|
+
}
|
|
228
|
+
this.modeRef = "play";
|
|
229
|
+
}
|
|
230
|
+
exitPlayMode({ restore = true } = {}) {
|
|
231
|
+
this.assertAlive();
|
|
232
|
+
this.activePlayModeBridge?.exit({ restore });
|
|
233
|
+
this.activePlayModeBridge = null;
|
|
234
|
+
this.modeRef = "edit";
|
|
235
|
+
}
|
|
236
|
+
snapshot() {
|
|
237
|
+
this.assertAlive();
|
|
238
|
+
return {
|
|
239
|
+
mode: this.modeRef,
|
|
240
|
+
activeTool: this.activeToolRef,
|
|
241
|
+
selection: this.selection.current(),
|
|
242
|
+
canUndo: this.history.canUndo,
|
|
243
|
+
canRedo: this.history.canRedo,
|
|
244
|
+
undoDepth: this.history.undoDepth,
|
|
245
|
+
redoDepth: this.history.redoDepth,
|
|
246
|
+
materialVariants: this.materialVariants.snapshot(),
|
|
247
|
+
prefabCount: this.prefabs.list().length,
|
|
248
|
+
picking: this.picking.snapshot(),
|
|
249
|
+
diagnostics: this.diagnostics.snapshot(),
|
|
250
|
+
gizmoSettings: this.gizmoSettingsRef,
|
|
251
|
+
editorState: this.state.snapshot()
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
dispose() {
|
|
255
|
+
this.activePlayModeBridge?.exit({ restore: true });
|
|
256
|
+
this.activePlayModeBridge = null;
|
|
257
|
+
this.selection.clear();
|
|
258
|
+
this.history.clear();
|
|
259
|
+
this.materialVariants.clear();
|
|
260
|
+
this.diagnostics.clear();
|
|
261
|
+
this.prefabs.clear();
|
|
262
|
+
this.activeToolRef = "select";
|
|
263
|
+
this.disposed = true;
|
|
264
|
+
}
|
|
265
|
+
assertAlive() {
|
|
266
|
+
if (this.disposed) {
|
|
267
|
+
throw new Error("EditorRuntime has been disposed");
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
assertEditable() {
|
|
271
|
+
this.assertAlive();
|
|
272
|
+
if (this.modeRef !== "edit") {
|
|
273
|
+
throw new Error("EditorRuntime edit commands can only run in edit mode.");
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=EditorRuntime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditorRuntime.js","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/EditorRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { type GizmoPivotMode, type GizmoSettings, type GizmoSpaceMode } from "./Gizmo";
|
|
2
|
+
export interface EditorStateStorage {
|
|
3
|
+
getItem(key: string): string | null;
|
|
4
|
+
setItem(key: string, value: string): void;
|
|
5
|
+
removeItem?(key: string): void;
|
|
6
|
+
}
|
|
7
|
+
export interface EditorViewportSettings {
|
|
8
|
+
readonly showGrid: boolean;
|
|
9
|
+
readonly gridSize: number;
|
|
10
|
+
readonly gridSubdivisions: number;
|
|
11
|
+
readonly showAxisGizmo: boolean;
|
|
12
|
+
readonly showStats: boolean;
|
|
13
|
+
readonly showWireframe: boolean;
|
|
14
|
+
readonly showBounds: boolean;
|
|
15
|
+
readonly showLights: boolean;
|
|
16
|
+
readonly showCameras: boolean;
|
|
17
|
+
readonly fov: number;
|
|
18
|
+
readonly near: number;
|
|
19
|
+
readonly far: number;
|
|
20
|
+
}
|
|
21
|
+
export interface EditorGridSnapSettings {
|
|
22
|
+
readonly snapToGrid: boolean;
|
|
23
|
+
readonly positionSnap: number;
|
|
24
|
+
readonly rotationSnapEnabled: boolean;
|
|
25
|
+
readonly rotationSnapDegrees: number;
|
|
26
|
+
readonly scaleSnapEnabled: boolean;
|
|
27
|
+
readonly scaleSnap: number;
|
|
28
|
+
}
|
|
29
|
+
export interface EditorStateSnapshot {
|
|
30
|
+
readonly activeTool: string;
|
|
31
|
+
readonly transformSpace: GizmoSpaceMode;
|
|
32
|
+
readonly pivotMode: GizmoPivotMode;
|
|
33
|
+
readonly viewport: EditorViewportSettings;
|
|
34
|
+
readonly gridSnap: EditorGridSnapSettings;
|
|
35
|
+
readonly persisted: boolean;
|
|
36
|
+
readonly storageKey: string;
|
|
37
|
+
readonly changeCount: number;
|
|
38
|
+
readonly evidence: {
|
|
39
|
+
readonly oldCodebasePort: true;
|
|
40
|
+
readonly persistentEditorState: boolean;
|
|
41
|
+
readonly viewportSettings: boolean;
|
|
42
|
+
readonly gridSnapSettings: boolean;
|
|
43
|
+
readonly transformSpacePivotMode: boolean;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export interface EditorStateChange {
|
|
47
|
+
readonly property: string;
|
|
48
|
+
readonly oldValue: unknown;
|
|
49
|
+
readonly newValue: unknown;
|
|
50
|
+
}
|
|
51
|
+
export interface EditorStateModelOptions {
|
|
52
|
+
readonly storage?: EditorStateStorage;
|
|
53
|
+
readonly storageKey?: string;
|
|
54
|
+
}
|
|
55
|
+
type Listener = (change: EditorStateChange) => void;
|
|
56
|
+
export declare class EditorStateModel {
|
|
57
|
+
private activeToolRef;
|
|
58
|
+
private transformSpaceRef;
|
|
59
|
+
private pivotModeRef;
|
|
60
|
+
private viewportRef;
|
|
61
|
+
private gridSnapRef;
|
|
62
|
+
private readonly listeners;
|
|
63
|
+
private readonly storageKey;
|
|
64
|
+
private readonly storage;
|
|
65
|
+
private persisted;
|
|
66
|
+
private changes;
|
|
67
|
+
constructor(options?: EditorStateModelOptions);
|
|
68
|
+
get activeTool(): string;
|
|
69
|
+
get transformSpace(): GizmoSpaceMode;
|
|
70
|
+
get pivotMode(): GizmoPivotMode;
|
|
71
|
+
setActiveTool(tool: string): void;
|
|
72
|
+
setTransformSpace(space: GizmoSpaceMode): void;
|
|
73
|
+
setPivotMode(mode: GizmoPivotMode): void;
|
|
74
|
+
configureViewport(settings: Partial<EditorViewportSettings>): EditorViewportSettings;
|
|
75
|
+
configureGridSnap(settings: Partial<EditorGridSnapSettings>): EditorGridSnapSettings;
|
|
76
|
+
configureFromGizmoSettings(settings: GizmoSettings): void;
|
|
77
|
+
gizmoSettings(): GizmoSettings;
|
|
78
|
+
snapPosition(value: number): number;
|
|
79
|
+
snapRotation(radians: number): number;
|
|
80
|
+
snapScale(value: number): number;
|
|
81
|
+
subscribe(listener: Listener): () => void;
|
|
82
|
+
snapshot(): EditorStateSnapshot;
|
|
83
|
+
reset(): void;
|
|
84
|
+
private setValue;
|
|
85
|
+
private emit;
|
|
86
|
+
private persist;
|
|
87
|
+
private load;
|
|
88
|
+
}
|
|
89
|
+
export declare function createMemoryEditorStateStorage(initial?: Record<string, string>): EditorStateStorage & {
|
|
90
|
+
readonly values: Record<string, string>;
|
|
91
|
+
};
|
|
92
|
+
export {};
|
|
93
|
+
//# sourceMappingURL=EditorStateModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditorStateModel.d.ts","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/EditorStateModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { normalizeGizmoSettings } from "./Gizmo.js";
|
|
2
|
+
const defaultViewportSettings = {
|
|
3
|
+
showGrid: true,
|
|
4
|
+
gridSize: 10,
|
|
5
|
+
gridSubdivisions: 10,
|
|
6
|
+
showAxisGizmo: true,
|
|
7
|
+
showStats: true,
|
|
8
|
+
showWireframe: false,
|
|
9
|
+
showBounds: false,
|
|
10
|
+
showLights: true,
|
|
11
|
+
showCameras: true,
|
|
12
|
+
fov: 60,
|
|
13
|
+
near: 0.1,
|
|
14
|
+
far: 1000
|
|
15
|
+
};
|
|
16
|
+
const defaultGridSnapSettings = {
|
|
17
|
+
snapToGrid: true,
|
|
18
|
+
positionSnap: 1,
|
|
19
|
+
rotationSnapEnabled: false,
|
|
20
|
+
rotationSnapDegrees: 15,
|
|
21
|
+
scaleSnapEnabled: false,
|
|
22
|
+
scaleSnap: 0.1
|
|
23
|
+
};
|
|
24
|
+
export class EditorStateModel {
|
|
25
|
+
activeToolRef = "select";
|
|
26
|
+
transformSpaceRef = "world";
|
|
27
|
+
pivotModeRef = "center";
|
|
28
|
+
viewportRef = defaultViewportSettings;
|
|
29
|
+
gridSnapRef = defaultGridSnapSettings;
|
|
30
|
+
listeners = new Set();
|
|
31
|
+
storageKey;
|
|
32
|
+
storage;
|
|
33
|
+
persisted = false;
|
|
34
|
+
changes = 0;
|
|
35
|
+
constructor(options = {}) {
|
|
36
|
+
this.storage = options.storage;
|
|
37
|
+
this.storageKey = options.storageKey ?? "aura3d:editor-state:externalParity";
|
|
38
|
+
this.load();
|
|
39
|
+
}
|
|
40
|
+
get activeTool() {
|
|
41
|
+
return this.activeToolRef;
|
|
42
|
+
}
|
|
43
|
+
get transformSpace() {
|
|
44
|
+
return this.transformSpaceRef;
|
|
45
|
+
}
|
|
46
|
+
get pivotMode() {
|
|
47
|
+
return this.pivotModeRef;
|
|
48
|
+
}
|
|
49
|
+
setActiveTool(tool) {
|
|
50
|
+
const normalized = tool.trim();
|
|
51
|
+
if (normalized.length === 0)
|
|
52
|
+
throw new Error("Editor state active tool cannot be empty.");
|
|
53
|
+
this.setValue("activeTool", this.activeToolRef, normalized, (value) => {
|
|
54
|
+
this.activeToolRef = value;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
setTransformSpace(space) {
|
|
58
|
+
this.setValue("transformSpace", this.transformSpaceRef, space, (value) => {
|
|
59
|
+
this.transformSpaceRef = value;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
setPivotMode(mode) {
|
|
63
|
+
this.setValue("pivotMode", this.pivotModeRef, mode, (value) => {
|
|
64
|
+
this.pivotModeRef = value;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
configureViewport(settings) {
|
|
68
|
+
const next = normalizeViewportSettings({ ...this.viewportRef, ...settings });
|
|
69
|
+
this.setValue("viewport", this.viewportRef, next, (value) => {
|
|
70
|
+
this.viewportRef = value;
|
|
71
|
+
});
|
|
72
|
+
return this.viewportRef;
|
|
73
|
+
}
|
|
74
|
+
configureGridSnap(settings) {
|
|
75
|
+
const next = normalizeGridSnapSettings({ ...this.gridSnapRef, ...settings });
|
|
76
|
+
this.setValue("gridSnap", this.gridSnapRef, next, (value) => {
|
|
77
|
+
this.gridSnapRef = value;
|
|
78
|
+
});
|
|
79
|
+
return this.gridSnapRef;
|
|
80
|
+
}
|
|
81
|
+
configureFromGizmoSettings(settings) {
|
|
82
|
+
this.setTransformSpace(settings.spaceMode);
|
|
83
|
+
this.setPivotMode(settings.pivotMode);
|
|
84
|
+
this.configureGridSnap({
|
|
85
|
+
snapToGrid: settings.snapEnabled,
|
|
86
|
+
positionSnap: settings.positionSnap,
|
|
87
|
+
rotationSnapEnabled: settings.snapEnabled,
|
|
88
|
+
rotationSnapDegrees: settings.rotationSnapDegrees,
|
|
89
|
+
scaleSnapEnabled: settings.snapEnabled,
|
|
90
|
+
scaleSnap: settings.scaleSnap
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
gizmoSettings() {
|
|
94
|
+
return normalizeGizmoSettings({
|
|
95
|
+
snapEnabled: this.gridSnapRef.snapToGrid,
|
|
96
|
+
positionSnap: this.gridSnapRef.positionSnap,
|
|
97
|
+
rotationSnapDegrees: this.gridSnapRef.rotationSnapDegrees,
|
|
98
|
+
scaleSnap: this.gridSnapRef.scaleSnap,
|
|
99
|
+
spaceMode: this.transformSpaceRef,
|
|
100
|
+
pivotMode: this.pivotModeRef
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
snapPosition(value) {
|
|
104
|
+
return this.gridSnapRef.snapToGrid ? snap(value, this.gridSnapRef.positionSnap) : value;
|
|
105
|
+
}
|
|
106
|
+
snapRotation(radians) {
|
|
107
|
+
return this.gridSnapRef.rotationSnapEnabled ? snap(radians, this.gridSnapRef.rotationSnapDegrees * Math.PI / 180) : radians;
|
|
108
|
+
}
|
|
109
|
+
snapScale(value) {
|
|
110
|
+
return this.gridSnapRef.scaleSnapEnabled ? snap(value, this.gridSnapRef.scaleSnap) : value;
|
|
111
|
+
}
|
|
112
|
+
subscribe(listener) {
|
|
113
|
+
this.listeners.add(listener);
|
|
114
|
+
return () => this.listeners.delete(listener);
|
|
115
|
+
}
|
|
116
|
+
snapshot() {
|
|
117
|
+
return {
|
|
118
|
+
activeTool: this.activeToolRef,
|
|
119
|
+
transformSpace: this.transformSpaceRef,
|
|
120
|
+
pivotMode: this.pivotModeRef,
|
|
121
|
+
viewport: this.viewportRef,
|
|
122
|
+
gridSnap: this.gridSnapRef,
|
|
123
|
+
persisted: this.persisted,
|
|
124
|
+
storageKey: this.storageKey,
|
|
125
|
+
changeCount: this.changes,
|
|
126
|
+
evidence: {
|
|
127
|
+
oldCodebasePort: true,
|
|
128
|
+
persistentEditorState: this.persisted,
|
|
129
|
+
viewportSettings: this.viewportRef.gridSize > 0 && this.viewportRef.fov > 0 && this.viewportRef.far > this.viewportRef.near,
|
|
130
|
+
gridSnapSettings: this.gridSnapRef.positionSnap > 0 && this.gridSnapRef.rotationSnapDegrees > 0 && this.gridSnapRef.scaleSnap > 0,
|
|
131
|
+
transformSpacePivotMode: Boolean(this.transformSpaceRef) && Boolean(this.pivotModeRef)
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
reset() {
|
|
136
|
+
this.activeToolRef = "select";
|
|
137
|
+
this.transformSpaceRef = "world";
|
|
138
|
+
this.pivotModeRef = "center";
|
|
139
|
+
this.viewportRef = defaultViewportSettings;
|
|
140
|
+
this.gridSnapRef = defaultGridSnapSettings;
|
|
141
|
+
this.changes += 1;
|
|
142
|
+
this.persist();
|
|
143
|
+
this.emit({ property: "reset", oldValue: null, newValue: this.snapshot() });
|
|
144
|
+
}
|
|
145
|
+
setValue(property, current, next, apply) {
|
|
146
|
+
if (deepEqual(current, next))
|
|
147
|
+
return;
|
|
148
|
+
apply(next);
|
|
149
|
+
this.changes += 1;
|
|
150
|
+
this.persist();
|
|
151
|
+
this.emit({ property, oldValue: current, newValue: next });
|
|
152
|
+
}
|
|
153
|
+
emit(change) {
|
|
154
|
+
for (const listener of this.listeners)
|
|
155
|
+
listener(change);
|
|
156
|
+
}
|
|
157
|
+
persist() {
|
|
158
|
+
if (!this.storage)
|
|
159
|
+
return;
|
|
160
|
+
this.storage.setItem(this.storageKey, JSON.stringify({
|
|
161
|
+
activeTool: this.activeToolRef,
|
|
162
|
+
transformSpace: this.transformSpaceRef,
|
|
163
|
+
pivotMode: this.pivotModeRef,
|
|
164
|
+
viewport: this.viewportRef,
|
|
165
|
+
gridSnap: this.gridSnapRef
|
|
166
|
+
}));
|
|
167
|
+
this.persisted = true;
|
|
168
|
+
}
|
|
169
|
+
load() {
|
|
170
|
+
if (!this.storage)
|
|
171
|
+
return;
|
|
172
|
+
const text = this.storage.getItem(this.storageKey);
|
|
173
|
+
if (!text)
|
|
174
|
+
return;
|
|
175
|
+
try {
|
|
176
|
+
const parsed = JSON.parse(text);
|
|
177
|
+
if (!isRecord(parsed))
|
|
178
|
+
return;
|
|
179
|
+
this.activeToolRef = typeof parsed.activeTool === "string" && parsed.activeTool.trim().length > 0 ? parsed.activeTool : this.activeToolRef;
|
|
180
|
+
this.transformSpaceRef = parsed.transformSpace === "local" ? "local" : "world";
|
|
181
|
+
this.pivotModeRef = parsed.pivotMode === "active" || parsed.pivotMode === "individual" ? parsed.pivotMode : "center";
|
|
182
|
+
this.viewportRef = normalizeViewportSettings({ ...this.viewportRef, ...(isRecord(parsed.viewport) ? parsed.viewport : {}) });
|
|
183
|
+
this.gridSnapRef = normalizeGridSnapSettings({ ...this.gridSnapRef, ...(isRecord(parsed.gridSnap) ? parsed.gridSnap : {}) });
|
|
184
|
+
this.persisted = true;
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
this.persisted = false;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
export function createMemoryEditorStateStorage(initial = {}) {
|
|
192
|
+
const values = { ...initial };
|
|
193
|
+
return {
|
|
194
|
+
values,
|
|
195
|
+
getItem(key) {
|
|
196
|
+
return values[key] ?? null;
|
|
197
|
+
},
|
|
198
|
+
setItem(key, value) {
|
|
199
|
+
values[key] = value;
|
|
200
|
+
},
|
|
201
|
+
removeItem(key) {
|
|
202
|
+
delete values[key];
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
function normalizeViewportSettings(settings) {
|
|
207
|
+
return {
|
|
208
|
+
showGrid: booleanOr(settings.showGrid, defaultViewportSettings.showGrid),
|
|
209
|
+
gridSize: positive(settings.gridSize, defaultViewportSettings.gridSize),
|
|
210
|
+
gridSubdivisions: Math.max(1, Math.round(positive(settings.gridSubdivisions, defaultViewportSettings.gridSubdivisions))),
|
|
211
|
+
showAxisGizmo: booleanOr(settings.showAxisGizmo, defaultViewportSettings.showAxisGizmo),
|
|
212
|
+
showStats: booleanOr(settings.showStats, defaultViewportSettings.showStats),
|
|
213
|
+
showWireframe: booleanOr(settings.showWireframe, defaultViewportSettings.showWireframe),
|
|
214
|
+
showBounds: booleanOr(settings.showBounds, defaultViewportSettings.showBounds),
|
|
215
|
+
showLights: booleanOr(settings.showLights, defaultViewportSettings.showLights),
|
|
216
|
+
showCameras: booleanOr(settings.showCameras, defaultViewportSettings.showCameras),
|
|
217
|
+
fov: clamp(positive(settings.fov, defaultViewportSettings.fov), 10, 140),
|
|
218
|
+
near: positive(settings.near, defaultViewportSettings.near),
|
|
219
|
+
far: Math.max(positive(settings.far, defaultViewportSettings.far), positive(settings.near, defaultViewportSettings.near) + 1)
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
function normalizeGridSnapSettings(settings) {
|
|
223
|
+
return {
|
|
224
|
+
snapToGrid: booleanOr(settings.snapToGrid, defaultGridSnapSettings.snapToGrid),
|
|
225
|
+
positionSnap: positive(settings.positionSnap, defaultGridSnapSettings.positionSnap),
|
|
226
|
+
rotationSnapEnabled: booleanOr(settings.rotationSnapEnabled, defaultGridSnapSettings.rotationSnapEnabled),
|
|
227
|
+
rotationSnapDegrees: positive(settings.rotationSnapDegrees, defaultGridSnapSettings.rotationSnapDegrees),
|
|
228
|
+
scaleSnapEnabled: booleanOr(settings.scaleSnapEnabled, defaultGridSnapSettings.scaleSnapEnabled),
|
|
229
|
+
scaleSnap: positive(settings.scaleSnap, defaultGridSnapSettings.scaleSnap)
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
function booleanOr(value, fallback) {
|
|
233
|
+
return typeof value === "boolean" ? value : fallback;
|
|
234
|
+
}
|
|
235
|
+
function positive(value, fallback) {
|
|
236
|
+
const number = Number(value);
|
|
237
|
+
return Number.isFinite(number) && number > 0 ? number : fallback;
|
|
238
|
+
}
|
|
239
|
+
function clamp(value, min, max) {
|
|
240
|
+
return Math.max(min, Math.min(max, value));
|
|
241
|
+
}
|
|
242
|
+
function snap(value, increment) {
|
|
243
|
+
return Math.round(value / increment) * increment;
|
|
244
|
+
}
|
|
245
|
+
function deepEqual(left, right) {
|
|
246
|
+
return JSON.stringify(left) === JSON.stringify(right);
|
|
247
|
+
}
|
|
248
|
+
function isRecord(value) {
|
|
249
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=EditorStateModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditorStateModel.js","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/EditorStateModel.ts"],"names":[],"mappings":"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"}
|