@aura3d/editor-runtime 1.4.3 → 1.4.5
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aura3d/editor-runtime",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
"main": "./dist/index.js",
|
|
12
12
|
"types": "./dist/index.d.ts",
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@aura3d/
|
|
15
|
-
"@aura3d/
|
|
16
|
-
"@aura3d/scene": "1.4.
|
|
14
|
+
"@aura3d/math": "1.4.5",
|
|
15
|
+
"@aura3d/animation": "1.4.5",
|
|
16
|
+
"@aura3d/scene": "1.4.5"
|
|
17
17
|
},
|
|
18
18
|
"description": "Runtime editor command history, selection state, picking, inspector models, play-mode snapshots, material variants, and transform gizmos for Aura3D.",
|
|
19
19
|
"keywords": [
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { EditorRuntime } from "./EditorRuntime";
|
|
2
|
-
import type { EpisodeReviewPanelSnapshot } from "./EpisodeReviewPanel";
|
|
3
|
-
import type { HierarchyLikeNode } from "./HierarchyModel";
|
|
4
|
-
import type { RenderQueuePanelSnapshot } from "./RenderQueuePanel";
|
|
5
|
-
import { AssetDropZone, type AssetDropPlacement, type CartoonAssetCategory, type CartoonEditorAssetReference } from "./AssetDropZone";
|
|
6
|
-
export interface CartoonSceneTransform {
|
|
7
|
-
position: {
|
|
8
|
-
x: number;
|
|
9
|
-
y: number;
|
|
10
|
-
z: number;
|
|
11
|
-
};
|
|
12
|
-
rotation: {
|
|
13
|
-
x: number;
|
|
14
|
-
y: number;
|
|
15
|
-
z: number;
|
|
16
|
-
w: number;
|
|
17
|
-
};
|
|
18
|
-
scale: {
|
|
19
|
-
x: number;
|
|
20
|
-
y: number;
|
|
21
|
-
z: number;
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
export interface CartoonSceneNode extends HierarchyLikeNode {
|
|
25
|
-
readonly id: string;
|
|
26
|
-
name: string;
|
|
27
|
-
kind: CartoonAssetCategory;
|
|
28
|
-
visible: boolean;
|
|
29
|
-
asset?: CartoonEditorAssetReference;
|
|
30
|
-
transform: CartoonSceneTransform;
|
|
31
|
-
animationClips: string[];
|
|
32
|
-
material?: string;
|
|
33
|
-
readonly children: CartoonSceneNode[];
|
|
34
|
-
}
|
|
35
|
-
export interface CartoonSceneEditorSnapshot {
|
|
36
|
-
readonly nodeCount: number;
|
|
37
|
-
readonly selectedIds: readonly (string | number)[];
|
|
38
|
-
readonly placedAssetCount: number;
|
|
39
|
-
readonly cameraPreviewId: string | null;
|
|
40
|
-
readonly hierarchy: ReturnType<EditorRuntime["flattenHierarchy"]>;
|
|
41
|
-
readonly evidence: {
|
|
42
|
-
readonly assetPlacement: boolean;
|
|
43
|
-
readonly transformGizmos: true;
|
|
44
|
-
readonly propertyInspector: true;
|
|
45
|
-
readonly sceneSaveLoad: true;
|
|
46
|
-
readonly episodeState: boolean;
|
|
47
|
-
};
|
|
48
|
-
readonly episode: CartoonSceneEpisodeSnapshot;
|
|
49
|
-
}
|
|
50
|
-
export interface CartoonSceneEditorOptions {
|
|
51
|
-
readonly runtime?: EditorRuntime;
|
|
52
|
-
readonly root?: CartoonSceneNode;
|
|
53
|
-
readonly episode?: Partial<CartoonSceneEpisodeState>;
|
|
54
|
-
}
|
|
55
|
-
export interface CartoonSceneEpisodeState {
|
|
56
|
-
readonly shots: readonly string[];
|
|
57
|
-
readonly assets: readonly string[];
|
|
58
|
-
readonly captions: readonly string[];
|
|
59
|
-
readonly visemes: readonly string[];
|
|
60
|
-
readonly renderState?: RenderQueuePanelSnapshot;
|
|
61
|
-
readonly reviewState?: EpisodeReviewPanelSnapshot;
|
|
62
|
-
}
|
|
63
|
-
export interface CartoonSceneEpisodeSnapshot extends CartoonSceneEpisodeState {
|
|
64
|
-
readonly shotCount: number;
|
|
65
|
-
readonly assetCount: number;
|
|
66
|
-
readonly captionCount: number;
|
|
67
|
-
readonly visemeCount: number;
|
|
68
|
-
readonly hasRenderState: boolean;
|
|
69
|
-
readonly hasReviewState: boolean;
|
|
70
|
-
}
|
|
71
|
-
export declare class CartoonSceneEditor {
|
|
72
|
-
readonly runtime: EditorRuntime;
|
|
73
|
-
readonly root: CartoonSceneNode;
|
|
74
|
-
readonly dropZone: AssetDropZone<CartoonSceneNode>;
|
|
75
|
-
private cameraPreviewIdInternal;
|
|
76
|
-
private episodeState;
|
|
77
|
-
constructor(options?: CartoonSceneEditorOptions);
|
|
78
|
-
placeAsset(asset: CartoonEditorAssetReference, placement?: AssetDropPlacement): Promise<CartoonSceneNode>;
|
|
79
|
-
addEmptyNode(config: {
|
|
80
|
-
readonly id?: string;
|
|
81
|
-
readonly name: string;
|
|
82
|
-
readonly kind?: CartoonAssetCategory;
|
|
83
|
-
readonly parentId?: string;
|
|
84
|
-
}): Promise<CartoonSceneNode>;
|
|
85
|
-
removeNode(id: string): Promise<void>;
|
|
86
|
-
setTransform(id: string, transform: Partial<CartoonSceneTransform>): Promise<void>;
|
|
87
|
-
selectNode(id: string): void;
|
|
88
|
-
setCameraPreview(id: string | null): void;
|
|
89
|
-
setEpisodeState(state: Partial<CartoonSceneEpisodeState>): CartoonSceneEpisodeSnapshot;
|
|
90
|
-
serializeScene(): CartoonSceneNode;
|
|
91
|
-
loadScene(root: CartoonSceneNode): void;
|
|
92
|
-
flattenHierarchy(): ReturnType<EditorRuntime["flattenHierarchy"]>;
|
|
93
|
-
inspectSelected(): readonly ReturnType<EditorRuntime["inspect"]>[number][];
|
|
94
|
-
snapshot(): CartoonSceneEditorSnapshot;
|
|
95
|
-
private episodeSnapshot;
|
|
96
|
-
private createNodeFromAsset;
|
|
97
|
-
private addNode;
|
|
98
|
-
private requireNode;
|
|
99
|
-
}
|
|
100
|
-
export declare function createCartoonSceneNode(config: {
|
|
101
|
-
readonly id: string;
|
|
102
|
-
readonly name: string;
|
|
103
|
-
readonly kind: CartoonAssetCategory;
|
|
104
|
-
readonly asset?: CartoonEditorAssetReference;
|
|
105
|
-
readonly transform?: CartoonSceneTransform;
|
|
106
|
-
readonly visible?: boolean;
|
|
107
|
-
readonly animationClips?: readonly string[];
|
|
108
|
-
readonly material?: string;
|
|
109
|
-
readonly children?: readonly CartoonSceneNode[];
|
|
110
|
-
}): CartoonSceneNode;
|
|
111
|
-
//# sourceMappingURL=CartoonSceneEditor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CartoonSceneEditor.d.ts","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/CartoonSceneEditor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
import { EditorRuntime } from "./EditorRuntime.js";
|
|
2
|
-
import { AssetDropZone } from "./AssetDropZone.js";
|
|
3
|
-
export class CartoonSceneEditor {
|
|
4
|
-
runtime;
|
|
5
|
-
root;
|
|
6
|
-
dropZone;
|
|
7
|
-
cameraPreviewIdInternal = null;
|
|
8
|
-
episodeState;
|
|
9
|
-
constructor(options = {}) {
|
|
10
|
-
this.runtime = options.runtime ?? new EditorRuntime();
|
|
11
|
-
this.root = options.root ?? createCartoonSceneNode({ id: "scene-root", name: "Scene", kind: "set" });
|
|
12
|
-
this.episodeState = normalizeEpisodeState(options.episode ?? {});
|
|
13
|
-
this.dropZone = new AssetDropZone({
|
|
14
|
-
history: this.runtime.history,
|
|
15
|
-
createNode: (asset, placement) => this.createNodeFromAsset(asset, placement),
|
|
16
|
-
addNode: (node, placement) => this.addNode(node, placement.targetId),
|
|
17
|
-
removeNode: (node) => this.removeNode(node.id)
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
async placeAsset(asset, placement = {}) {
|
|
21
|
-
const result = await this.dropZone.dropAsset(asset, placement);
|
|
22
|
-
this.runtime.select([result.node.id]);
|
|
23
|
-
return result.node;
|
|
24
|
-
}
|
|
25
|
-
async addEmptyNode(config) {
|
|
26
|
-
const node = createCartoonSceneNode({
|
|
27
|
-
id: config.id ?? stableNodeId(config.name),
|
|
28
|
-
name: config.name,
|
|
29
|
-
kind: config.kind ?? "prop"
|
|
30
|
-
});
|
|
31
|
-
await this.runtime.history.execute(new AddCartoonNodeCommand(this.root, node, config.parentId));
|
|
32
|
-
return node;
|
|
33
|
-
}
|
|
34
|
-
async removeNode(id) {
|
|
35
|
-
if (id === this.root.id)
|
|
36
|
-
throw new Error("Cannot remove the root cartoon scene node.");
|
|
37
|
-
const parent = findParent(this.root, id);
|
|
38
|
-
const node = findNode(this.root, id);
|
|
39
|
-
if (!parent || !node)
|
|
40
|
-
throw new Error(`Cartoon scene node does not exist: ${id}`);
|
|
41
|
-
await this.runtime.history.execute(new RemoveCartoonNodeCommand(parent, node));
|
|
42
|
-
this.runtime.pruneSelection((selectionId) => selectionId !== id);
|
|
43
|
-
}
|
|
44
|
-
async setTransform(id, transform) {
|
|
45
|
-
const node = this.requireNode(id);
|
|
46
|
-
await this.runtime.history.execute(new SetCartoonTransformCommand(node, mergeTransform(node.transform, transform)));
|
|
47
|
-
}
|
|
48
|
-
selectNode(id) {
|
|
49
|
-
this.requireNode(id);
|
|
50
|
-
this.runtime.select([id]);
|
|
51
|
-
}
|
|
52
|
-
setCameraPreview(id) {
|
|
53
|
-
if (id !== null) {
|
|
54
|
-
const node = this.requireNode(id);
|
|
55
|
-
if (node.kind !== "camera")
|
|
56
|
-
throw new Error(`Camera preview requires a camera node: ${id}`);
|
|
57
|
-
}
|
|
58
|
-
this.cameraPreviewIdInternal = id;
|
|
59
|
-
}
|
|
60
|
-
setEpisodeState(state) {
|
|
61
|
-
this.episodeState = normalizeEpisodeState({ ...this.episodeState, ...state });
|
|
62
|
-
return this.episodeSnapshot();
|
|
63
|
-
}
|
|
64
|
-
serializeScene() {
|
|
65
|
-
return cloneNode(this.root);
|
|
66
|
-
}
|
|
67
|
-
loadScene(root) {
|
|
68
|
-
this.root.children.splice(0, this.root.children.length, ...root.children.map(cloneNode));
|
|
69
|
-
this.root.name = root.name;
|
|
70
|
-
this.root.visible = root.visible;
|
|
71
|
-
this.runtime.clearSelection();
|
|
72
|
-
}
|
|
73
|
-
flattenHierarchy() {
|
|
74
|
-
return this.runtime.flattenHierarchy(this.root);
|
|
75
|
-
}
|
|
76
|
-
inspectSelected() {
|
|
77
|
-
const selected = this.runtime.currentSelection()[0];
|
|
78
|
-
if (selected === undefined)
|
|
79
|
-
return [];
|
|
80
|
-
return this.runtime.inspect(this.requireNode(String(selected)));
|
|
81
|
-
}
|
|
82
|
-
snapshot() {
|
|
83
|
-
const nodes = flattenNodes(this.root);
|
|
84
|
-
return {
|
|
85
|
-
nodeCount: nodes.length,
|
|
86
|
-
selectedIds: this.runtime.currentSelection(),
|
|
87
|
-
placedAssetCount: nodes.filter((node) => node.asset).length,
|
|
88
|
-
cameraPreviewId: this.cameraPreviewIdInternal,
|
|
89
|
-
hierarchy: this.flattenHierarchy(),
|
|
90
|
-
evidence: {
|
|
91
|
-
assetPlacement: nodes.some((node) => node.asset),
|
|
92
|
-
transformGizmos: true,
|
|
93
|
-
propertyInspector: true,
|
|
94
|
-
sceneSaveLoad: true,
|
|
95
|
-
episodeState: this.episodeState.shots.length > 0
|
|
96
|
-
|| this.episodeState.captions.length > 0
|
|
97
|
-
|| this.episodeState.visemes.length > 0
|
|
98
|
-
|| Boolean(this.episodeState.renderState)
|
|
99
|
-
|| Boolean(this.episodeState.reviewState)
|
|
100
|
-
},
|
|
101
|
-
episode: this.episodeSnapshot()
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
episodeSnapshot() {
|
|
105
|
-
return {
|
|
106
|
-
...this.episodeState,
|
|
107
|
-
shotCount: this.episodeState.shots.length,
|
|
108
|
-
assetCount: this.episodeState.assets.length,
|
|
109
|
-
captionCount: this.episodeState.captions.length,
|
|
110
|
-
visemeCount: this.episodeState.visemes.length,
|
|
111
|
-
hasRenderState: Boolean(this.episodeState.renderState),
|
|
112
|
-
hasReviewState: Boolean(this.episodeState.reviewState)
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
createNodeFromAsset(asset, placement) {
|
|
116
|
-
return createCartoonSceneNode({
|
|
117
|
-
id: stableNodeId(asset.id),
|
|
118
|
-
name: asset.name,
|
|
119
|
-
kind: asset.category ?? categoryFromAsset(asset),
|
|
120
|
-
asset,
|
|
121
|
-
transform: mergeTransform(defaultTransform(), placement)
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
addNode(node, parentId) {
|
|
125
|
-
const parent = parentId === undefined ? this.root : this.requireNode(String(parentId));
|
|
126
|
-
parent.children.push(node);
|
|
127
|
-
}
|
|
128
|
-
requireNode(id) {
|
|
129
|
-
const node = findNode(this.root, id);
|
|
130
|
-
if (!node)
|
|
131
|
-
throw new Error(`Cartoon scene node does not exist: ${id}`);
|
|
132
|
-
return node;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
function normalizeEpisodeState(state) {
|
|
136
|
-
return {
|
|
137
|
-
shots: [...(state.shots ?? [])],
|
|
138
|
-
assets: [...(state.assets ?? [])],
|
|
139
|
-
captions: [...(state.captions ?? [])],
|
|
140
|
-
visemes: [...(state.visemes ?? [])],
|
|
141
|
-
renderState: state.renderState,
|
|
142
|
-
reviewState: state.reviewState
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
export function createCartoonSceneNode(config) {
|
|
146
|
-
return {
|
|
147
|
-
id: config.id,
|
|
148
|
-
name: config.name,
|
|
149
|
-
kind: config.kind,
|
|
150
|
-
visible: config.visible ?? true,
|
|
151
|
-
asset: config.asset,
|
|
152
|
-
transform: config.transform ?? defaultTransform(),
|
|
153
|
-
animationClips: [...(config.animationClips ?? config.asset?.clips ?? [])],
|
|
154
|
-
material: config.material,
|
|
155
|
-
children: [...(config.children ?? [])]
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
class AddCartoonNodeCommand {
|
|
159
|
-
root;
|
|
160
|
-
node;
|
|
161
|
-
parentId;
|
|
162
|
-
name;
|
|
163
|
-
constructor(root, node, parentId) {
|
|
164
|
-
this.root = root;
|
|
165
|
-
this.node = node;
|
|
166
|
-
this.parentId = parentId;
|
|
167
|
-
this.name = `Add cartoon node ${node.id}`;
|
|
168
|
-
}
|
|
169
|
-
execute() {
|
|
170
|
-
const parent = this.parentId ? findNode(this.root, this.parentId) : this.root;
|
|
171
|
-
if (!parent)
|
|
172
|
-
throw new Error(`Cartoon scene parent does not exist: ${this.parentId}`);
|
|
173
|
-
if (!parent.children.includes(this.node))
|
|
174
|
-
parent.children.push(this.node);
|
|
175
|
-
}
|
|
176
|
-
undo() {
|
|
177
|
-
const parent = findParent(this.root, this.node.id);
|
|
178
|
-
if (parent)
|
|
179
|
-
removeChild(parent, this.node);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
class RemoveCartoonNodeCommand {
|
|
183
|
-
parent;
|
|
184
|
-
node;
|
|
185
|
-
name;
|
|
186
|
-
index = -1;
|
|
187
|
-
constructor(parent, node) {
|
|
188
|
-
this.parent = parent;
|
|
189
|
-
this.node = node;
|
|
190
|
-
this.name = `Remove cartoon node ${node.id}`;
|
|
191
|
-
}
|
|
192
|
-
execute() {
|
|
193
|
-
this.index = this.parent.children.indexOf(this.node);
|
|
194
|
-
removeChild(this.parent, this.node);
|
|
195
|
-
}
|
|
196
|
-
undo() {
|
|
197
|
-
if (!this.parent.children.includes(this.node)) {
|
|
198
|
-
this.parent.children.splice(this.index < 0 ? this.parent.children.length : this.index, 0, this.node);
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
class SetCartoonTransformCommand {
|
|
203
|
-
node;
|
|
204
|
-
after;
|
|
205
|
-
name;
|
|
206
|
-
before;
|
|
207
|
-
constructor(node, after) {
|
|
208
|
-
this.node = node;
|
|
209
|
-
this.after = after;
|
|
210
|
-
this.name = `Set cartoon transform ${node.id}`;
|
|
211
|
-
this.before = cloneTransform(node.transform);
|
|
212
|
-
}
|
|
213
|
-
execute() {
|
|
214
|
-
this.node.transform = cloneTransform(this.after);
|
|
215
|
-
}
|
|
216
|
-
undo() {
|
|
217
|
-
this.node.transform = cloneTransform(this.before);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
function categoryFromAsset(asset) {
|
|
221
|
-
if (asset.type === "audio")
|
|
222
|
-
return "audio";
|
|
223
|
-
if (asset.type === "material")
|
|
224
|
-
return "material";
|
|
225
|
-
if (asset.clips && asset.clips.length > 0)
|
|
226
|
-
return "character";
|
|
227
|
-
return "prop";
|
|
228
|
-
}
|
|
229
|
-
function findNode(root, id) {
|
|
230
|
-
if (root.id === id)
|
|
231
|
-
return root;
|
|
232
|
-
for (const child of root.children) {
|
|
233
|
-
const found = findNode(child, id);
|
|
234
|
-
if (found)
|
|
235
|
-
return found;
|
|
236
|
-
}
|
|
237
|
-
return undefined;
|
|
238
|
-
}
|
|
239
|
-
function findParent(root, id) {
|
|
240
|
-
for (const child of root.children) {
|
|
241
|
-
if (child.id === id)
|
|
242
|
-
return root;
|
|
243
|
-
const found = findParent(child, id);
|
|
244
|
-
if (found)
|
|
245
|
-
return found;
|
|
246
|
-
}
|
|
247
|
-
return undefined;
|
|
248
|
-
}
|
|
249
|
-
function flattenNodes(root) {
|
|
250
|
-
return [root, ...root.children.flatMap((child) => flattenNodes(child))];
|
|
251
|
-
}
|
|
252
|
-
function removeChild(parent, node) {
|
|
253
|
-
const index = parent.children.indexOf(node);
|
|
254
|
-
if (index >= 0)
|
|
255
|
-
parent.children.splice(index, 1);
|
|
256
|
-
}
|
|
257
|
-
function defaultTransform() {
|
|
258
|
-
return {
|
|
259
|
-
position: { x: 0, y: 0, z: 0 },
|
|
260
|
-
rotation: { x: 0, y: 0, z: 0, w: 1 },
|
|
261
|
-
scale: { x: 1, y: 1, z: 1 }
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
function mergeTransform(base, next) {
|
|
265
|
-
return {
|
|
266
|
-
position: { ...base.position, ...(next.position ?? {}) },
|
|
267
|
-
rotation: { ...base.rotation, ...(next.rotation ?? {}) },
|
|
268
|
-
scale: { ...base.scale, ...(next.scale ?? {}) }
|
|
269
|
-
};
|
|
270
|
-
}
|
|
271
|
-
function cloneTransform(transform) {
|
|
272
|
-
return mergeTransform(defaultTransform(), transform);
|
|
273
|
-
}
|
|
274
|
-
function cloneNode(node) {
|
|
275
|
-
return createCartoonSceneNode({
|
|
276
|
-
...node,
|
|
277
|
-
transform: cloneTransform(node.transform),
|
|
278
|
-
animationClips: [...node.animationClips],
|
|
279
|
-
children: node.children.map(cloneNode)
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
function stableNodeId(name) {
|
|
283
|
-
return `node-${name.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "") || "item"}`;
|
|
284
|
-
}
|
|
285
|
-
//# sourceMappingURL=CartoonSceneEditor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CartoonSceneEditor.js","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/CartoonSceneEditor.ts"],"names":[],"mappings":"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"}
|