@aura3d/editor-runtime 1.1.0 → 1.3.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.
@@ -0,0 +1,124 @@
1
+ // Editor authoring controller for animation event tracks (T2.2). Lets a timeline UI add / move /
2
+ // delete typed markers on named lanes (hitbox active-frames, footsteps, VFX, generic markers) and
3
+ // serialize to the canonical `animation-event-tracks/v1` shape that `@aura3d/animation`'s
4
+ // `deserializeAnimationEventTracks` / `sampleClipEvents` consume — so authored tracks drive gameplay
5
+ // (hitbox windows) and playback (footstep/VFX triggers) deterministically.
6
+ //
7
+ // Type-only imports from `@aura3d/animation` keep this controller free of any runtime coupling to
8
+ // that package (the types are erased at build time); the serialized output is verified to round-trip
9
+ // through the animation package's deserializer in tests.
10
+ /**
11
+ * Timeline event-track authoring controller. Deterministic: marker ids come from a monotonic
12
+ * counter (no `Date.now`/`Math.random`), so undo/redo and serialization are reproducible.
13
+ */
14
+ export class EventTrackEditor {
15
+ clipId;
16
+ duration;
17
+ order = [];
18
+ lanesMap = new Map();
19
+ selectedId;
20
+ idCounter = 0;
21
+ constructor(options) {
22
+ if (!Number.isFinite(options.duration) || options.duration < 0) {
23
+ throw new Error("EventTrackEditor duration must be a finite, non-negative number.");
24
+ }
25
+ this.clipId = options.clipId;
26
+ this.duration = options.duration;
27
+ }
28
+ addTrack(name, type = "marker") {
29
+ if (!this.lanesMap.has(name)) {
30
+ this.lanesMap.set(name, { type, markers: [] });
31
+ this.order.push(name);
32
+ }
33
+ return this;
34
+ }
35
+ removeTrack(name) {
36
+ if (this.lanesMap.delete(name))
37
+ this.order.splice(this.order.indexOf(name), 1);
38
+ return this;
39
+ }
40
+ /** Add a marker to a lane (auto-creates the lane). Returns the new marker id. */
41
+ addMarker(trackName, time, options = {}) {
42
+ if (!Number.isFinite(time) || time < 0) {
43
+ throw new Error("Event marker time must be a finite, non-negative number.");
44
+ }
45
+ this.addTrack(trackName, options.type);
46
+ const lane = this.lanesMap.get(trackName);
47
+ const id = options.id ?? `${trackName}#${this.idCounter++}`;
48
+ lane.markers.push({
49
+ id,
50
+ name: trackName,
51
+ type: options.type ?? lane.type,
52
+ time,
53
+ ...(options.duration !== undefined ? { duration: options.duration } : {}),
54
+ ...(options.payload !== undefined ? { payload: options.payload } : {}),
55
+ ...(options.tags !== undefined ? { tags: options.tags } : {})
56
+ });
57
+ lane.markers.sort((a, b) => a.time - b.time);
58
+ return id;
59
+ }
60
+ /** Move an existing marker to a new time. */
61
+ moveMarker(trackName, markerId, time) {
62
+ if (!Number.isFinite(time) || time < 0) {
63
+ throw new Error("Event marker time must be a finite, non-negative number.");
64
+ }
65
+ const lane = this.lanesMap.get(trackName);
66
+ const index = lane?.markers.findIndex((m) => m.id === markerId) ?? -1;
67
+ if (!lane || index < 0)
68
+ throw new Error(`Marker ${markerId} not found on track ${trackName}.`);
69
+ lane.markers[index] = { ...lane.markers[index], time };
70
+ lane.markers.sort((a, b) => a.time - b.time);
71
+ return this;
72
+ }
73
+ /** Delete a marker. */
74
+ removeMarker(trackName, markerId) {
75
+ const lane = this.lanesMap.get(trackName);
76
+ if (!lane)
77
+ return this;
78
+ const index = lane.markers.findIndex((m) => m.id === markerId);
79
+ if (index >= 0)
80
+ lane.markers.splice(index, 1);
81
+ if (this.selectedId === markerId)
82
+ this.selectedId = undefined;
83
+ return this;
84
+ }
85
+ select(markerId) {
86
+ this.selectedId = markerId;
87
+ return this;
88
+ }
89
+ markerCount() {
90
+ let count = 0;
91
+ for (const lane of this.lanesMap.values())
92
+ count += lane.markers.length;
93
+ return count;
94
+ }
95
+ /** View-model for the timeline UI: lanes with marker positions + selection state. */
96
+ lanes() {
97
+ return this.order.map((name) => {
98
+ const lane = this.lanesMap.get(name);
99
+ return {
100
+ name,
101
+ type: lane.type,
102
+ markers: lane.markers.map((m) => ({
103
+ id: m.id,
104
+ time: m.time,
105
+ ...(m.duration !== undefined ? { duration: m.duration } : {}),
106
+ type: m.type ?? lane.type,
107
+ selected: m.id === this.selectedId
108
+ }))
109
+ };
110
+ });
111
+ }
112
+ /** Serialize to the canonical `animation-event-tracks/v1` shape. */
113
+ serialize() {
114
+ const tracks = this.order.map((name) => {
115
+ const lane = this.lanesMap.get(name);
116
+ return { name, type: lane.type, markers: lane.markers.map((m) => ({ ...m })) };
117
+ });
118
+ return { schema: "animation-event-tracks/v1", clipId: this.clipId, duration: this.duration, tracks };
119
+ }
120
+ }
121
+ export function createEventTrackEditor(options) {
122
+ return new EventTrackEditor(options);
123
+ }
124
+ //# sourceMappingURL=EventTrackEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventTrackEditor.js","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/EventTrackEditor.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { type HierarchyNodeDescriptor } from "./HierarchyModel";
2
2
  import type { SelectionId } from "./Selection";
3
- import type { CartoonSceneNode } from "./CartoonSceneEditor";
3
+ import type { AnimationSceneNode } from "./AnimationSceneEditor";
4
4
  export interface SceneOutlinerItem extends HierarchyNodeDescriptor {
5
5
  readonly icon: string;
6
6
  readonly kind: string;
@@ -12,8 +12,8 @@ export interface SceneOutlinerOptions {
12
12
  export declare class SceneOutliner {
13
13
  private readonly hierarchy;
14
14
  private disposers;
15
- describe(root: CartoonSceneNode, selectedIds?: ReadonlySet<SelectionId>): readonly SceneOutlinerItem[];
16
- render(root: CartoonSceneNode, container: HTMLElement, options?: SceneOutlinerOptions): readonly SceneOutlinerItem[];
15
+ describe(root: AnimationSceneNode, selectedIds?: ReadonlySet<SelectionId>): readonly SceneOutlinerItem[];
16
+ render(root: AnimationSceneNode, container: HTMLElement, options?: SceneOutlinerOptions): readonly SceneOutlinerItem[];
17
17
  dispose(): void;
18
18
  }
19
19
  //# sourceMappingURL=SceneOutliner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SceneOutliner.d.ts","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/SceneOutliner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,WAAW,iBAAkB,SAAQ,uBAAuB;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,IAAI,CAAC;CAC/C;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,SAAS,CAAsB;IAEvC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,WAAW,GAAE,WAAW,CAAC,WAAW,CAAa,GAAG,SAAS,iBAAiB,EAAE;IAYjH,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,GAAE,oBAAyB,GAAG,SAAS,iBAAiB,EAAE;IAsBxH,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"SceneOutliner.d.ts","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/SceneOutliner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,MAAM,WAAW,iBAAkB,SAAQ,uBAAuB;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,IAAI,CAAC;CAC/C;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,SAAS,CAAsB;IAEvC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,EAAE,WAAW,GAAE,WAAW,CAAC,WAAW,CAAa,GAAG,SAAS,iBAAiB,EAAE;IAYnH,MAAM,CAAC,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,GAAE,oBAAyB,GAAG,SAAS,iBAAiB,EAAE;IAsB1H,OAAO,IAAI,IAAI;CAGhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"SceneOutliner.js","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/SceneOutliner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SceneOutliner.js","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/SceneOutliner.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,17 +1,19 @@
1
1
  export type { Command, CommandContext } from "./Command";
2
2
  export { CommandHistory, CommandTransactionError } from "./CommandHistory";
3
3
  export { AssetDropZone, readAssetFromDataTransfer, serializeAssetForDrag } from "./AssetDropZone";
4
- export type { AssetDropPlacement, AssetDropResult, AssetDropZoneOptions, CartoonAssetCategory, CartoonEditorAssetReference } from "./AssetDropZone";
4
+ export type { AssetDropPlacement, AssetDropResult, AssetDropZoneOptions, AnimationAssetCategory, AnimationEditorAssetReference } from "./AssetDropZone";
5
5
  export { CameraPathEditor, createCameraPathEditor, readCameraPathKeyframes } from "./CameraPathEditor";
6
6
  export type { EditorCameraPathEvidence, EditorCameraPathKeyframe, EditorCameraPathSample, EditorCameraVector3 } from "./CameraPathEditor";
7
- export { CartoonSceneEditor, createCartoonSceneNode } from "./CartoonSceneEditor";
8
- export type { CartoonSceneEditorOptions, CartoonSceneEditorSnapshot, CartoonSceneEpisodeSnapshot, CartoonSceneEpisodeState, CartoonSceneNode, CartoonSceneTransform } from "./CartoonSceneEditor";
7
+ export { AnimationSceneEditor, createAnimationSceneNode } from "./AnimationSceneEditor";
8
+ export type { AnimationSceneEditorOptions, AnimationSceneEditorSnapshot, AnimationSceneEpisodeSnapshot, AnimationSceneEpisodeState, AnimationSceneNode, AnimationSceneTransform } from "./AnimationSceneEditor";
9
9
  export { CurveEditor } from "./CurveEditor";
10
10
  export type { TimelineCurveEvidence, TimelineCurvePoint, TimelineCurveSample } from "./CurveEditor";
11
11
  export { DiagnosticsOverlayModel } from "./DiagnosticsOverlayModel";
12
12
  export type { EditorDiagnosticsInput, EditorDiagnosticsResource, EditorDiagnosticsSnapshot } from "./DiagnosticsOverlayModel";
13
13
  export { EditorRuntime } from "./EditorRuntime";
14
14
  export type { EditorMode, EditorRuntimeSnapshot } from "./EditorRuntime";
15
+ export { EventTrackEditor, createEventTrackEditor } from "./EventTrackEditor";
16
+ export type { AddEventMarkerOptions, EventMarkerView, EventTrackEditorOptions, EventTrackLane } from "./EventTrackEditor";
15
17
  export { EpisodeReviewPanel, createEpisodeReviewPanel } from "./EpisodeReviewPanel";
16
18
  export type { EpisodeReviewManualVisemeEdit, EpisodeReviewNote, EpisodeReviewPanelSnapshot, EpisodeReviewPanelState, EpisodeReviewRejectedFrame, EpisodeReviewStatus, EpisodeReviewWaveformLane } from "./EpisodeReviewPanel";
17
19
  export { EditorStateModel, createMemoryEditorStateStorage } from "./EditorStateModel";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,10 +1,11 @@
1
1
  export { CommandHistory, CommandTransactionError } from "./CommandHistory.js";
2
2
  export { AssetDropZone, readAssetFromDataTransfer, serializeAssetForDrag } from "./AssetDropZone.js";
3
3
  export { CameraPathEditor, createCameraPathEditor, readCameraPathKeyframes } from "./CameraPathEditor.js";
4
- export { CartoonSceneEditor, createCartoonSceneNode } from "./CartoonSceneEditor.js";
4
+ export { AnimationSceneEditor, createAnimationSceneNode } from "./AnimationSceneEditor.js";
5
5
  export { CurveEditor } from "./CurveEditor.js";
6
6
  export { DiagnosticsOverlayModel } from "./DiagnosticsOverlayModel.js";
7
7
  export { EditorRuntime } from "./EditorRuntime.js";
8
+ export { EventTrackEditor, createEventTrackEditor } from "./EventTrackEditor.js";
8
9
  export { EpisodeReviewPanel, createEpisodeReviewPanel } from "./EpisodeReviewPanel.js";
9
10
  export { EditorStateModel, createMemoryEditorStateStorage } from "./EditorStateModel.js";
10
11
  export { EditorPluginHost } from "./EditorPluginHost.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aura3d/editor-runtime",
3
- "version": "1.1.0",
3
+ "version": "1.3.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -11,7 +11,8 @@
11
11
  "main": "./dist/index.js",
12
12
  "types": "./dist/index.d.ts",
13
13
  "dependencies": {
14
- "@aura3d/math": "1.1.0",
15
- "@aura3d/scene": "1.1.0"
14
+ "@aura3d/animation": "workspace:*",
15
+ "@aura3d/math": "workspace:*",
16
+ "@aura3d/scene": "workspace:*"
16
17
  }
17
- }
18
+ }
@@ -3,27 +3,27 @@ import { EditorRuntime } from "./EditorRuntime";
3
3
  import type { EpisodeReviewPanelSnapshot } from "./EpisodeReviewPanel";
4
4
  import type { HierarchyLikeNode } from "./HierarchyModel";
5
5
  import type { RenderQueuePanelSnapshot } from "./RenderQueuePanel";
6
- import { AssetDropZone, type AssetDropPlacement, type CartoonAssetCategory, type CartoonEditorAssetReference } from "./AssetDropZone";
6
+ import { AssetDropZone, type AssetDropPlacement, type AnimationAssetCategory, type AnimationEditorAssetReference } from "./AssetDropZone";
7
7
 
8
- export interface CartoonSceneTransform {
8
+ export interface AnimationSceneTransform {
9
9
  position: { x: number; y: number; z: number };
10
10
  rotation: { x: number; y: number; z: number; w: number };
11
11
  scale: { x: number; y: number; z: number };
12
12
  }
13
13
 
14
- export interface CartoonSceneNode extends HierarchyLikeNode {
14
+ export interface AnimationSceneNode extends HierarchyLikeNode {
15
15
  readonly id: string;
16
16
  name: string;
17
- kind: CartoonAssetCategory;
17
+ kind: AnimationAssetCategory;
18
18
  visible: boolean;
19
- asset?: CartoonEditorAssetReference;
20
- transform: CartoonSceneTransform;
19
+ asset?: AnimationEditorAssetReference;
20
+ transform: AnimationSceneTransform;
21
21
  animationClips: string[];
22
22
  material?: string;
23
- readonly children: CartoonSceneNode[];
23
+ readonly children: AnimationSceneNode[];
24
24
  }
25
25
 
26
- export interface CartoonSceneEditorSnapshot {
26
+ export interface AnimationSceneEditorSnapshot {
27
27
  readonly nodeCount: number;
28
28
  readonly selectedIds: readonly (string | number)[];
29
29
  readonly placedAssetCount: number;
@@ -36,16 +36,16 @@ export interface CartoonSceneEditorSnapshot {
36
36
  readonly sceneSaveLoad: true;
37
37
  readonly episodeState: boolean;
38
38
  };
39
- readonly episode: CartoonSceneEpisodeSnapshot;
39
+ readonly episode: AnimationSceneEpisodeSnapshot;
40
40
  }
41
41
 
42
- export interface CartoonSceneEditorOptions {
42
+ export interface AnimationSceneEditorOptions {
43
43
  readonly runtime?: EditorRuntime;
44
- readonly root?: CartoonSceneNode;
45
- readonly episode?: Partial<CartoonSceneEpisodeState>;
44
+ readonly root?: AnimationSceneNode;
45
+ readonly episode?: Partial<AnimationSceneEpisodeState>;
46
46
  }
47
47
 
48
- export interface CartoonSceneEpisodeState {
48
+ export interface AnimationSceneEpisodeState {
49
49
  readonly shots: readonly string[];
50
50
  readonly assets: readonly string[];
51
51
  readonly captions: readonly string[];
@@ -54,7 +54,7 @@ export interface CartoonSceneEpisodeState {
54
54
  readonly reviewState?: EpisodeReviewPanelSnapshot;
55
55
  }
56
56
 
57
- export interface CartoonSceneEpisodeSnapshot extends CartoonSceneEpisodeState {
57
+ export interface AnimationSceneEpisodeSnapshot extends AnimationSceneEpisodeState {
58
58
  readonly shotCount: number;
59
59
  readonly assetCount: number;
60
60
  readonly captionCount: number;
@@ -63,18 +63,18 @@ export interface CartoonSceneEpisodeSnapshot extends CartoonSceneEpisodeState {
63
63
  readonly hasReviewState: boolean;
64
64
  }
65
65
 
66
- export class CartoonSceneEditor {
66
+ export class AnimationSceneEditor {
67
67
  readonly runtime: EditorRuntime;
68
- readonly root: CartoonSceneNode;
69
- readonly dropZone: AssetDropZone<CartoonSceneNode>;
68
+ readonly root: AnimationSceneNode;
69
+ readonly dropZone: AssetDropZone<AnimationSceneNode>;
70
70
  private cameraPreviewIdInternal: string | null = null;
71
- private episodeState: CartoonSceneEpisodeState;
71
+ private episodeState: AnimationSceneEpisodeState;
72
72
 
73
- constructor(options: CartoonSceneEditorOptions = {}) {
73
+ constructor(options: AnimationSceneEditorOptions = {}) {
74
74
  this.runtime = options.runtime ?? new EditorRuntime();
75
- this.root = options.root ?? createCartoonSceneNode({ id: "scene-root", name: "Scene", kind: "set" });
75
+ this.root = options.root ?? createAnimationSceneNode({ id: "scene-root", name: "Scene", kind: "set" });
76
76
  this.episodeState = normalizeEpisodeState(options.episode ?? {});
77
- this.dropZone = new AssetDropZone<CartoonSceneNode>({
77
+ this.dropZone = new AssetDropZone<AnimationSceneNode>({
78
78
  history: this.runtime.history,
79
79
  createNode: (asset, placement) => this.createNodeFromAsset(asset, placement),
80
80
  addNode: (node, placement) => this.addNode(node, placement.targetId),
@@ -82,34 +82,34 @@ export class CartoonSceneEditor {
82
82
  });
83
83
  }
84
84
 
85
- async placeAsset(asset: CartoonEditorAssetReference, placement: AssetDropPlacement = {}): Promise<CartoonSceneNode> {
85
+ async placeAsset(asset: AnimationEditorAssetReference, placement: AssetDropPlacement = {}): Promise<AnimationSceneNode> {
86
86
  const result = await this.dropZone.dropAsset(asset, placement);
87
87
  this.runtime.select([result.node.id]);
88
88
  return result.node;
89
89
  }
90
90
 
91
- async addEmptyNode(config: { readonly id?: string; readonly name: string; readonly kind?: CartoonAssetCategory; readonly parentId?: string }): Promise<CartoonSceneNode> {
92
- const node = createCartoonSceneNode({
91
+ async addEmptyNode(config: { readonly id?: string; readonly name: string; readonly kind?: AnimationAssetCategory; readonly parentId?: string }): Promise<AnimationSceneNode> {
92
+ const node = createAnimationSceneNode({
93
93
  id: config.id ?? stableNodeId(config.name),
94
94
  name: config.name,
95
95
  kind: config.kind ?? "prop"
96
96
  });
97
- await this.runtime.history.execute(new AddCartoonNodeCommand(this.root, node, config.parentId));
97
+ await this.runtime.history.execute(new AddAnimationNodeCommand(this.root, node, config.parentId));
98
98
  return node;
99
99
  }
100
100
 
101
101
  async removeNode(id: string): Promise<void> {
102
- if (id === this.root.id) throw new Error("Cannot remove the root cartoon scene node.");
102
+ if (id === this.root.id) throw new Error("Cannot remove the root animation scene node.");
103
103
  const parent = findParent(this.root, id);
104
104
  const node = findNode(this.root, id);
105
- if (!parent || !node) throw new Error(`Cartoon scene node does not exist: ${id}`);
106
- await this.runtime.history.execute(new RemoveCartoonNodeCommand(parent, node));
105
+ if (!parent || !node) throw new Error(`Animation scene node does not exist: ${id}`);
106
+ await this.runtime.history.execute(new RemoveAnimationNodeCommand(parent, node));
107
107
  this.runtime.pruneSelection((selectionId) => selectionId !== id);
108
108
  }
109
109
 
110
- async setTransform(id: string, transform: Partial<CartoonSceneTransform>): Promise<void> {
110
+ async setTransform(id: string, transform: Partial<AnimationSceneTransform>): Promise<void> {
111
111
  const node = this.requireNode(id);
112
- await this.runtime.history.execute(new SetCartoonTransformCommand(node, mergeTransform(node.transform, transform)));
112
+ await this.runtime.history.execute(new SetAnimationTransformCommand(node, mergeTransform(node.transform, transform)));
113
113
  }
114
114
 
115
115
  selectNode(id: string): void {
@@ -125,16 +125,16 @@ export class CartoonSceneEditor {
125
125
  this.cameraPreviewIdInternal = id;
126
126
  }
127
127
 
128
- setEpisodeState(state: Partial<CartoonSceneEpisodeState>): CartoonSceneEpisodeSnapshot {
128
+ setEpisodeState(state: Partial<AnimationSceneEpisodeState>): AnimationSceneEpisodeSnapshot {
129
129
  this.episodeState = normalizeEpisodeState({ ...this.episodeState, ...state });
130
130
  return this.episodeSnapshot();
131
131
  }
132
132
 
133
- serializeScene(): CartoonSceneNode {
133
+ serializeScene(): AnimationSceneNode {
134
134
  return cloneNode(this.root);
135
135
  }
136
136
 
137
- loadScene(root: CartoonSceneNode): void {
137
+ loadScene(root: AnimationSceneNode): void {
138
138
  this.root.children.splice(0, this.root.children.length, ...root.children.map(cloneNode));
139
139
  this.root.name = root.name;
140
140
  this.root.visible = root.visible;
@@ -151,7 +151,7 @@ export class CartoonSceneEditor {
151
151
  return this.runtime.inspect(this.requireNode(String(selected)));
152
152
  }
153
153
 
154
- snapshot(): CartoonSceneEditorSnapshot {
154
+ snapshot(): AnimationSceneEditorSnapshot {
155
155
  const nodes = flattenNodes(this.root);
156
156
  return {
157
157
  nodeCount: nodes.length,
@@ -174,7 +174,7 @@ export class CartoonSceneEditor {
174
174
  };
175
175
  }
176
176
 
177
- private episodeSnapshot(): CartoonSceneEpisodeSnapshot {
177
+ private episodeSnapshot(): AnimationSceneEpisodeSnapshot {
178
178
  return {
179
179
  ...this.episodeState,
180
180
  shotCount: this.episodeState.shots.length,
@@ -186,8 +186,8 @@ export class CartoonSceneEditor {
186
186
  };
187
187
  }
188
188
 
189
- private createNodeFromAsset(asset: CartoonEditorAssetReference, placement: AssetDropPlacement): CartoonSceneNode {
190
- return createCartoonSceneNode({
189
+ private createNodeFromAsset(asset: AnimationEditorAssetReference, placement: AssetDropPlacement): AnimationSceneNode {
190
+ return createAnimationSceneNode({
191
191
  id: stableNodeId(asset.id),
192
192
  name: asset.name,
193
193
  kind: asset.category ?? categoryFromAsset(asset),
@@ -196,19 +196,19 @@ export class CartoonSceneEditor {
196
196
  });
197
197
  }
198
198
 
199
- private addNode(node: CartoonSceneNode, parentId?: string | number): void {
199
+ private addNode(node: AnimationSceneNode, parentId?: string | number): void {
200
200
  const parent = parentId === undefined ? this.root : this.requireNode(String(parentId));
201
201
  parent.children.push(node);
202
202
  }
203
203
 
204
- private requireNode(id: string): CartoonSceneNode {
204
+ private requireNode(id: string): AnimationSceneNode {
205
205
  const node = findNode(this.root, id);
206
- if (!node) throw new Error(`Cartoon scene node does not exist: ${id}`);
206
+ if (!node) throw new Error(`Animation scene node does not exist: ${id}`);
207
207
  return node;
208
208
  }
209
209
  }
210
210
 
211
- function normalizeEpisodeState(state: Partial<CartoonSceneEpisodeState>): CartoonSceneEpisodeState {
211
+ function normalizeEpisodeState(state: Partial<AnimationSceneEpisodeState>): AnimationSceneEpisodeState {
212
212
  return {
213
213
  shots: [...(state.shots ?? [])],
214
214
  assets: [...(state.assets ?? [])],
@@ -219,17 +219,17 @@ function normalizeEpisodeState(state: Partial<CartoonSceneEpisodeState>): Cartoo
219
219
  };
220
220
  }
221
221
 
222
- export function createCartoonSceneNode(config: {
222
+ export function createAnimationSceneNode(config: {
223
223
  readonly id: string;
224
224
  readonly name: string;
225
- readonly kind: CartoonAssetCategory;
226
- readonly asset?: CartoonEditorAssetReference;
227
- readonly transform?: CartoonSceneTransform;
225
+ readonly kind: AnimationAssetCategory;
226
+ readonly asset?: AnimationEditorAssetReference;
227
+ readonly transform?: AnimationSceneTransform;
228
228
  readonly visible?: boolean;
229
229
  readonly animationClips?: readonly string[];
230
230
  readonly material?: string;
231
- readonly children?: readonly CartoonSceneNode[];
232
- }): CartoonSceneNode {
231
+ readonly children?: readonly AnimationSceneNode[];
232
+ }): AnimationSceneNode {
233
233
  return {
234
234
  id: config.id,
235
235
  name: config.name,
@@ -243,16 +243,16 @@ export function createCartoonSceneNode(config: {
243
243
  };
244
244
  }
245
245
 
246
- class AddCartoonNodeCommand implements Command {
246
+ class AddAnimationNodeCommand implements Command {
247
247
  readonly name: string;
248
248
 
249
- constructor(private readonly root: CartoonSceneNode, private readonly node: CartoonSceneNode, private readonly parentId?: string) {
250
- this.name = `Add cartoon node ${node.id}`;
249
+ constructor(private readonly root: AnimationSceneNode, private readonly node: AnimationSceneNode, private readonly parentId?: string) {
250
+ this.name = `Add animation node ${node.id}`;
251
251
  }
252
252
 
253
253
  execute(): void {
254
254
  const parent = this.parentId ? findNode(this.root, this.parentId) : this.root;
255
- if (!parent) throw new Error(`Cartoon scene parent does not exist: ${this.parentId}`);
255
+ if (!parent) throw new Error(`Animation scene parent does not exist: ${this.parentId}`);
256
256
  if (!parent.children.includes(this.node)) parent.children.push(this.node);
257
257
  }
258
258
 
@@ -262,12 +262,12 @@ class AddCartoonNodeCommand implements Command {
262
262
  }
263
263
  }
264
264
 
265
- class RemoveCartoonNodeCommand implements Command {
265
+ class RemoveAnimationNodeCommand implements Command {
266
266
  readonly name: string;
267
267
  private index = -1;
268
268
 
269
- constructor(private readonly parent: CartoonSceneNode, private readonly node: CartoonSceneNode) {
270
- this.name = `Remove cartoon node ${node.id}`;
269
+ constructor(private readonly parent: AnimationSceneNode, private readonly node: AnimationSceneNode) {
270
+ this.name = `Remove animation node ${node.id}`;
271
271
  }
272
272
 
273
273
  execute(): void {
@@ -282,12 +282,12 @@ class RemoveCartoonNodeCommand implements Command {
282
282
  }
283
283
  }
284
284
 
285
- class SetCartoonTransformCommand implements Command {
285
+ class SetAnimationTransformCommand implements Command {
286
286
  readonly name: string;
287
- private readonly before: CartoonSceneTransform;
287
+ private readonly before: AnimationSceneTransform;
288
288
 
289
- constructor(private readonly node: CartoonSceneNode, private readonly after: CartoonSceneTransform) {
290
- this.name = `Set cartoon transform ${node.id}`;
289
+ constructor(private readonly node: AnimationSceneNode, private readonly after: AnimationSceneTransform) {
290
+ this.name = `Set animation transform ${node.id}`;
291
291
  this.before = cloneTransform(node.transform);
292
292
  }
293
293
 
@@ -300,14 +300,14 @@ class SetCartoonTransformCommand implements Command {
300
300
  }
301
301
  }
302
302
 
303
- function categoryFromAsset(asset: CartoonEditorAssetReference): CartoonAssetCategory {
303
+ function categoryFromAsset(asset: AnimationEditorAssetReference): AnimationAssetCategory {
304
304
  if (asset.type === "audio") return "audio";
305
305
  if (asset.type === "material") return "material";
306
306
  if (asset.clips && asset.clips.length > 0) return "character";
307
307
  return "prop";
308
308
  }
309
309
 
310
- function findNode(root: CartoonSceneNode, id: string): CartoonSceneNode | undefined {
310
+ function findNode(root: AnimationSceneNode, id: string): AnimationSceneNode | undefined {
311
311
  if (root.id === id) return root;
312
312
  for (const child of root.children) {
313
313
  const found = findNode(child, id);
@@ -316,7 +316,7 @@ function findNode(root: CartoonSceneNode, id: string): CartoonSceneNode | undefi
316
316
  return undefined;
317
317
  }
318
318
 
319
- function findParent(root: CartoonSceneNode, id: string): CartoonSceneNode | undefined {
319
+ function findParent(root: AnimationSceneNode, id: string): AnimationSceneNode | undefined {
320
320
  for (const child of root.children) {
321
321
  if (child.id === id) return root;
322
322
  const found = findParent(child, id);
@@ -325,16 +325,16 @@ function findParent(root: CartoonSceneNode, id: string): CartoonSceneNode | unde
325
325
  return undefined;
326
326
  }
327
327
 
328
- function flattenNodes(root: CartoonSceneNode): readonly CartoonSceneNode[] {
328
+ function flattenNodes(root: AnimationSceneNode): readonly AnimationSceneNode[] {
329
329
  return [root, ...root.children.flatMap((child) => flattenNodes(child))];
330
330
  }
331
331
 
332
- function removeChild(parent: CartoonSceneNode, node: CartoonSceneNode): void {
332
+ function removeChild(parent: AnimationSceneNode, node: AnimationSceneNode): void {
333
333
  const index = parent.children.indexOf(node);
334
334
  if (index >= 0) parent.children.splice(index, 1);
335
335
  }
336
336
 
337
- function defaultTransform(): CartoonSceneTransform {
337
+ function defaultTransform(): AnimationSceneTransform {
338
338
  return {
339
339
  position: { x: 0, y: 0, z: 0 },
340
340
  rotation: { x: 0, y: 0, z: 0, w: 1 },
@@ -342,7 +342,7 @@ function defaultTransform(): CartoonSceneTransform {
342
342
  };
343
343
  }
344
344
 
345
- function mergeTransform(base: CartoonSceneTransform, next: Partial<CartoonSceneTransform> | AssetDropPlacement): CartoonSceneTransform {
345
+ function mergeTransform(base: AnimationSceneTransform, next: Partial<AnimationSceneTransform> | AssetDropPlacement): AnimationSceneTransform {
346
346
  return {
347
347
  position: { ...base.position, ...(next.position ?? {}) },
348
348
  rotation: { ...base.rotation, ...(next.rotation ?? {}) },
@@ -350,12 +350,12 @@ function mergeTransform(base: CartoonSceneTransform, next: Partial<CartoonSceneT
350
350
  };
351
351
  }
352
352
 
353
- function cloneTransform(transform: CartoonSceneTransform): CartoonSceneTransform {
353
+ function cloneTransform(transform: AnimationSceneTransform): AnimationSceneTransform {
354
354
  return mergeTransform(defaultTransform(), transform);
355
355
  }
356
356
 
357
- function cloneNode(node: CartoonSceneNode): CartoonSceneNode {
358
- return createCartoonSceneNode({
357
+ function cloneNode(node: AnimationSceneNode): AnimationSceneNode {
358
+ return createAnimationSceneNode({
359
359
  ...node,
360
360
  transform: cloneTransform(node.transform),
361
361
  animationClips: [...node.animationClips],