@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.
Files changed (149) hide show
  1. package/README.md +20 -0
  2. package/dist/Command.d.ts +11 -0
  3. package/dist/Command.d.ts.map +1 -0
  4. package/dist/Command.js +2 -0
  5. package/dist/Command.js.map +1 -0
  6. package/dist/CommandHistory.d.ts +20 -0
  7. package/dist/CommandHistory.d.ts.map +1 -0
  8. package/dist/CommandHistory.js +124 -0
  9. package/dist/CommandHistory.js.map +1 -0
  10. package/dist/DiagnosticsOverlayModel.d.ts +30 -0
  11. package/dist/DiagnosticsOverlayModel.d.ts.map +1 -0
  12. package/dist/DiagnosticsOverlayModel.js +57 -0
  13. package/dist/DiagnosticsOverlayModel.js.map +1 -0
  14. package/dist/EditorPluginHost.d.ts +46 -0
  15. package/dist/EditorPluginHost.d.ts.map +1 -0
  16. package/dist/EditorPluginHost.js +57 -0
  17. package/dist/EditorPluginHost.js.map +1 -0
  18. package/dist/EditorRuntime.d.ts +95 -0
  19. package/dist/EditorRuntime.d.ts.map +1 -0
  20. package/dist/EditorRuntime.js +277 -0
  21. package/dist/EditorRuntime.js.map +1 -0
  22. package/dist/EditorStateModel.d.ts +93 -0
  23. package/dist/EditorStateModel.d.ts.map +1 -0
  24. package/dist/EditorStateModel.js +251 -0
  25. package/dist/EditorStateModel.js.map +1 -0
  26. package/dist/Gizmo.d.ts +43 -0
  27. package/dist/Gizmo.d.ts.map +1 -0
  28. package/dist/Gizmo.js +60 -0
  29. package/dist/Gizmo.js.map +1 -0
  30. package/dist/HierarchyModel.d.ts +21 -0
  31. package/dist/HierarchyModel.d.ts.map +1 -0
  32. package/dist/HierarchyModel.js +32 -0
  33. package/dist/HierarchyModel.js.map +1 -0
  34. package/dist/InspectorModel.d.ts +16 -0
  35. package/dist/InspectorModel.d.ts.map +1 -0
  36. package/dist/InspectorModel.js +53 -0
  37. package/dist/InspectorModel.js.map +1 -0
  38. package/dist/LocalizationAccessibilityFixtures.d.ts +70 -0
  39. package/dist/LocalizationAccessibilityFixtures.d.ts.map +1 -0
  40. package/dist/LocalizationAccessibilityFixtures.js +275 -0
  41. package/dist/LocalizationAccessibilityFixtures.js.map +1 -0
  42. package/dist/MaterialVariantWorkflow.d.ts +19 -0
  43. package/dist/MaterialVariantWorkflow.d.ts.map +1 -0
  44. package/dist/MaterialVariantWorkflow.js +82 -0
  45. package/dist/MaterialVariantWorkflow.js.map +1 -0
  46. package/dist/PickingService.d.ts +58 -0
  47. package/dist/PickingService.d.ts.map +1 -0
  48. package/dist/PickingService.js +119 -0
  49. package/dist/PickingService.js.map +1 -0
  50. package/dist/PlayModeBridge.d.ts +14 -0
  51. package/dist/PlayModeBridge.d.ts.map +1 -0
  52. package/dist/PlayModeBridge.js +23 -0
  53. package/dist/PlayModeBridge.js.map +1 -0
  54. package/dist/PrefabRegistry.d.ts +41 -0
  55. package/dist/PrefabRegistry.d.ts.map +1 -0
  56. package/dist/PrefabRegistry.js +119 -0
  57. package/dist/PrefabRegistry.js.map +1 -0
  58. package/dist/ProjectSerializer.d.ts +82 -0
  59. package/dist/ProjectSerializer.d.ts.map +1 -0
  60. package/dist/ProjectSerializer.js +131 -0
  61. package/dist/ProjectSerializer.js.map +1 -0
  62. package/dist/RotateGizmo.d.ts +5 -0
  63. package/dist/RotateGizmo.d.ts.map +1 -0
  64. package/dist/RotateGizmo.js +37 -0
  65. package/dist/RotateGizmo.js.map +1 -0
  66. package/dist/ScaleGizmo.d.ts +5 -0
  67. package/dist/ScaleGizmo.d.ts.map +1 -0
  68. package/dist/ScaleGizmo.js +42 -0
  69. package/dist/ScaleGizmo.js.map +1 -0
  70. package/dist/Selection.d.ts +20 -0
  71. package/dist/Selection.d.ts.map +1 -0
  72. package/dist/Selection.js +46 -0
  73. package/dist/Selection.js.map +1 -0
  74. package/dist/ShaderGraphModel.d.ts +69 -0
  75. package/dist/ShaderGraphModel.d.ts.map +1 -0
  76. package/dist/ShaderGraphModel.js +172 -0
  77. package/dist/ShaderGraphModel.js.map +1 -0
  78. package/dist/StaticExportRuntime.d.ts +13 -0
  79. package/dist/StaticExportRuntime.d.ts.map +1 -0
  80. package/dist/StaticExportRuntime.js +307 -0
  81. package/dist/StaticExportRuntime.js.map +1 -0
  82. package/dist/TimelineModel.d.ts +175 -0
  83. package/dist/TimelineModel.d.ts.map +1 -0
  84. package/dist/TimelineModel.js +335 -0
  85. package/dist/TimelineModel.js.map +1 -0
  86. package/dist/TimelineRuntimeBridge.d.ts +98 -0
  87. package/dist/TimelineRuntimeBridge.d.ts.map +1 -0
  88. package/dist/TimelineRuntimeBridge.js +186 -0
  89. package/dist/TimelineRuntimeBridge.js.map +1 -0
  90. package/dist/TranslateGizmo.d.ts +5 -0
  91. package/dist/TranslateGizmo.d.ts.map +1 -0
  92. package/dist/TranslateGizmo.js +41 -0
  93. package/dist/TranslateGizmo.js.map +1 -0
  94. package/dist/commands/CreateNodeCommand.d.ts +14 -0
  95. package/dist/commands/CreateNodeCommand.d.ts.map +1 -0
  96. package/dist/commands/CreateNodeCommand.js +16 -0
  97. package/dist/commands/CreateNodeCommand.js.map +1 -0
  98. package/dist/commands/DeleteNodeCommand.d.ts +13 -0
  99. package/dist/commands/DeleteNodeCommand.d.ts.map +1 -0
  100. package/dist/commands/DeleteNodeCommand.js +55 -0
  101. package/dist/commands/DeleteNodeCommand.js.map +1 -0
  102. package/dist/commands/ReparentNodeCommand.d.ts +24 -0
  103. package/dist/commands/ReparentNodeCommand.d.ts.map +1 -0
  104. package/dist/commands/ReparentNodeCommand.js +39 -0
  105. package/dist/commands/ReparentNodeCommand.js.map +1 -0
  106. package/dist/commands/SetPropertyCommand.d.ts +14 -0
  107. package/dist/commands/SetPropertyCommand.d.ts.map +1 -0
  108. package/dist/commands/SetPropertyCommand.js +43 -0
  109. package/dist/commands/SetPropertyCommand.js.map +1 -0
  110. package/dist/commands/TransformCommand.d.ts +42 -0
  111. package/dist/commands/TransformCommand.d.ts.map +1 -0
  112. package/dist/commands/TransformCommand.js +72 -0
  113. package/dist/commands/TransformCommand.js.map +1 -0
  114. package/dist/index.d.ts +49 -0
  115. package/dist/index.d.ts.map +1 -0
  116. package/dist/index.js +29 -0
  117. package/dist/index.js.map +1 -0
  118. package/package.json +17 -0
  119. package/src/Command.ts +11 -0
  120. package/src/CommandHistory.ts +136 -0
  121. package/src/DiagnosticsOverlayModel.ts +85 -0
  122. package/src/EditorPluginHost.ts +106 -0
  123. package/src/EditorRuntime.ts +349 -0
  124. package/src/EditorStateModel.ts +336 -0
  125. package/src/Gizmo.ts +101 -0
  126. package/src/HierarchyModel.ts +57 -0
  127. package/src/InspectorModel.ts +71 -0
  128. package/src/LocalizationAccessibilityFixtures.ts +368 -0
  129. package/src/MaterialVariantWorkflow.ts +101 -0
  130. package/src/PickingService.ts +174 -0
  131. package/src/PlayModeBridge.ts +27 -0
  132. package/src/PrefabRegistry.ts +164 -0
  133. package/src/ProjectSerializer.ts +200 -0
  134. package/src/RotateGizmo.ts +35 -0
  135. package/src/ScaleGizmo.ts +40 -0
  136. package/src/Selection.ts +63 -0
  137. package/src/ShaderGraphModel.ts +254 -0
  138. package/src/StaticExportRuntime.ts +322 -0
  139. package/src/TimelineModel.ts +466 -0
  140. package/src/TimelineRuntimeBridge.ts +280 -0
  141. package/src/TranslateGizmo.ts +39 -0
  142. package/src/commands/CreateNodeCommand.ts +23 -0
  143. package/src/commands/DeleteNodeCommand.ts +74 -0
  144. package/src/commands/ReparentNodeCommand.ts +55 -0
  145. package/src/commands/SetPropertyCommand.ts +47 -0
  146. package/src/commands/TransformCommand.ts +107 -0
  147. package/src/index.ts +85 -0
  148. package/tests/editor-runtime.test.ts +597 -0
  149. package/tsconfig.json +7 -0
@@ -0,0 +1,335 @@
1
+ const easing = {
2
+ linear: (value) => value,
3
+ "ease-in": (value) => value * value,
4
+ "ease-out": (value) => value * (2 - value),
5
+ "ease-in-out": (value) => value < 0.5 ? 2 * value * value : -1 + (4 - 2 * value) * value
6
+ };
7
+ export class TimelineClip {
8
+ id;
9
+ name;
10
+ startTime;
11
+ duration;
12
+ assetId;
13
+ clipName;
14
+ easeInDuration;
15
+ easeOutDuration;
16
+ easeIn;
17
+ easeOut;
18
+ speedMultiplier;
19
+ blendMode;
20
+ weight;
21
+ clipInOffset;
22
+ properties;
23
+ enabled = true;
24
+ constructor(config) {
25
+ if (!Number.isFinite(config.startTime) || config.startTime < 0)
26
+ throw new RangeError("Timeline clip startTime must be a finite non-negative number.");
27
+ if (!Number.isFinite(config.duration) || config.duration <= 0)
28
+ throw new RangeError("Timeline clip duration must be a finite positive number.");
29
+ this.id = config.id ?? stableId("clip", config.name);
30
+ this.name = config.name;
31
+ this.startTime = config.startTime;
32
+ this.duration = config.duration;
33
+ this.assetId = config.assetId;
34
+ this.clipName = config.clipName;
35
+ this.easeInDuration = Math.max(0, config.easeInDuration ?? 0);
36
+ this.easeOutDuration = Math.max(0, config.easeOutDuration ?? 0);
37
+ this.easeIn = config.easeIn ?? "linear";
38
+ this.easeOut = config.easeOut ?? "linear";
39
+ this.speedMultiplier = Math.max(0, config.speedMultiplier ?? 1);
40
+ this.blendMode = config.blendMode ?? "replace";
41
+ this.weight = clamp(config.weight ?? 1, 0, 1);
42
+ this.clipInOffset = Math.max(0, config.clipInOffset ?? 0);
43
+ this.properties = { ...(config.properties ?? {}) };
44
+ }
45
+ get endTime() {
46
+ return this.startTime + this.duration;
47
+ }
48
+ contains(time) {
49
+ return this.enabled && time >= this.startTime && time < this.endTime;
50
+ }
51
+ localTime(time) {
52
+ if (!this.contains(time))
53
+ return -1;
54
+ return (time - this.startTime) * this.speedMultiplier;
55
+ }
56
+ assetTime(time) {
57
+ const localTime = this.localTime(time);
58
+ return localTime < 0 ? -1 : this.clipInOffset + localTime;
59
+ }
60
+ normalizedTime(time) {
61
+ const localTime = this.localTime(time);
62
+ return localTime < 0 ? -1 : clamp(localTime / this.duration, 0, 1);
63
+ }
64
+ blendWeight(time) {
65
+ if (!this.contains(time))
66
+ return 0;
67
+ const localTime = time - this.startTime;
68
+ let result = this.weight;
69
+ if (this.easeInDuration > 0 && localTime < this.easeInDuration) {
70
+ result *= easing[this.easeIn](clamp(localTime / this.easeInDuration, 0, 1));
71
+ }
72
+ const timeFromEnd = this.duration - localTime;
73
+ if (this.easeOutDuration > 0 && timeFromEnd < this.easeOutDuration) {
74
+ result *= easing[this.easeOut](clamp(timeFromEnd / this.easeOutDuration, 0, 1));
75
+ }
76
+ return Number(result.toFixed(4));
77
+ }
78
+ toConfig() {
79
+ return {
80
+ id: this.id,
81
+ name: this.name,
82
+ startTime: this.startTime,
83
+ duration: this.duration,
84
+ assetId: this.assetId,
85
+ clipName: this.clipName,
86
+ easeInDuration: this.easeInDuration,
87
+ easeOutDuration: this.easeOutDuration,
88
+ easeIn: this.easeIn,
89
+ easeOut: this.easeOut,
90
+ speedMultiplier: this.speedMultiplier,
91
+ blendMode: this.blendMode,
92
+ weight: this.weight,
93
+ clipInOffset: this.clipInOffset,
94
+ properties: { ...this.properties }
95
+ };
96
+ }
97
+ }
98
+ export class TimelineTrack {
99
+ id;
100
+ name;
101
+ type;
102
+ muted;
103
+ locked;
104
+ weight;
105
+ properties;
106
+ clipsInternal = [];
107
+ constructor(config) {
108
+ this.id = config.id ?? stableId("track", config.name);
109
+ this.name = config.name;
110
+ this.type = config.type;
111
+ this.muted = config.muted ?? false;
112
+ this.locked = config.locked ?? false;
113
+ this.weight = clamp(config.weight ?? 1, 0, 1);
114
+ this.properties = { ...(config.properties ?? {}) };
115
+ for (const clip of config.clips ?? []) {
116
+ this.addClip(new TimelineClip(clip), { ignoreLock: true });
117
+ }
118
+ }
119
+ get clips() {
120
+ return this.clipsInternal;
121
+ }
122
+ addClip(clip, options = {}) {
123
+ if (this.locked && !options.ignoreLock)
124
+ throw new Error(`Cannot add clip to locked timeline track: ${this.name}`);
125
+ this.clipsInternal.push(clip);
126
+ this.clipsInternal.sort((left, right) => left.startTime - right.startTime);
127
+ return clip;
128
+ }
129
+ activeClips(time) {
130
+ if (this.muted || this.weight <= 0)
131
+ return [];
132
+ return this.clipsInternal.filter((clip) => clip.contains(time));
133
+ }
134
+ snapshot() {
135
+ return {
136
+ id: this.id,
137
+ name: this.name,
138
+ type: this.type,
139
+ muted: this.muted,
140
+ locked: this.locked,
141
+ weight: this.weight,
142
+ clipCount: this.clipsInternal.length
143
+ };
144
+ }
145
+ toConfig() {
146
+ return {
147
+ id: this.id,
148
+ name: this.name,
149
+ type: this.type,
150
+ muted: this.muted,
151
+ locked: this.locked,
152
+ weight: this.weight,
153
+ clips: this.clipsInternal.map((clip) => clip.toConfig()),
154
+ properties: { ...this.properties }
155
+ };
156
+ }
157
+ }
158
+ export class TimelineModel {
159
+ id;
160
+ name;
161
+ duration;
162
+ loopMode;
163
+ speed;
164
+ frameRate;
165
+ tracksInternal = [];
166
+ playing = false;
167
+ timeInternal = 0;
168
+ directionInternal = 1;
169
+ emittedSignals = new Set();
170
+ constructor(config = {}) {
171
+ this.id = config.id ?? "editor-timeline";
172
+ this.name = config.name ?? "Editor Timeline";
173
+ this.duration = Math.max(0.01, config.duration ?? 1);
174
+ this.loopMode = config.loopMode ?? "loop";
175
+ this.speed = Math.max(0, config.speed ?? 1);
176
+ this.frameRate = Math.max(0, config.frameRate ?? 0);
177
+ for (const track of config.tracks ?? []) {
178
+ this.addTrack(new TimelineTrack(track));
179
+ }
180
+ }
181
+ get tracks() {
182
+ return this.tracksInternal;
183
+ }
184
+ get currentTime() {
185
+ return this.timeInternal;
186
+ }
187
+ get isPlaying() {
188
+ return this.playing;
189
+ }
190
+ addTrack(track) {
191
+ this.tracksInternal.push(track);
192
+ return track;
193
+ }
194
+ clearTracks() {
195
+ this.tracksInternal.length = 0;
196
+ this.emittedSignals.clear();
197
+ }
198
+ play() {
199
+ this.playing = true;
200
+ }
201
+ pause() {
202
+ this.playing = false;
203
+ }
204
+ stop() {
205
+ this.playing = false;
206
+ this.seek(0);
207
+ this.directionInternal = 1;
208
+ }
209
+ seek(time) {
210
+ this.timeInternal = this.wrapTime(time);
211
+ this.emittedSignals.clear();
212
+ }
213
+ setNormalizedTime(value) {
214
+ this.seek(clamp(value, 0, 1) * this.duration);
215
+ }
216
+ tick(deltaSeconds) {
217
+ if (!this.playing || deltaSeconds <= 0 || this.speed <= 0)
218
+ return;
219
+ this.seek(this.timeInternal + deltaSeconds * this.speed * this.directionInternal);
220
+ }
221
+ snapshot() {
222
+ const activeClips = this.tracksInternal.flatMap((track) => track.activeClips(this.timeInternal).map((clip) => ({
223
+ trackId: track.id,
224
+ trackName: track.name,
225
+ trackType: track.type,
226
+ clipId: clip.id,
227
+ clipName: clip.name,
228
+ assetId: clip.assetId,
229
+ assetClipName: clip.clipName ?? clip.name,
230
+ runtimeTargetId: runtimeTargetIdFromProperties(clip.properties),
231
+ localTime: Number(clip.localTime(this.timeInternal).toFixed(4)),
232
+ assetTime: Number(clip.assetTime(this.timeInternal).toFixed(4)),
233
+ normalizedTime: Number(clip.normalizedTime(this.timeInternal).toFixed(4)),
234
+ blendWeight: Number((clip.blendWeight(this.timeInternal) * track.weight).toFixed(4)),
235
+ blendMode: clip.blendMode,
236
+ properties: { ...clip.properties }
237
+ })));
238
+ const signalEventDetails = this.tracksInternal.flatMap((track) => track.type === "signal"
239
+ ? track.activeClips(this.timeInternal).map((clip) => ({
240
+ trackId: track.id,
241
+ trackName: track.name,
242
+ clipId: clip.id,
243
+ clipName: clip.name,
244
+ event: typeof clip.properties.event === "string" ? clip.properties.event : clip.clipName ?? clip.id,
245
+ time: Number(this.timeInternal.toFixed(4)),
246
+ localTime: Number(clip.localTime(this.timeInternal).toFixed(4)),
247
+ properties: { ...clip.properties }
248
+ }))
249
+ : []);
250
+ const signalEvents = signalEventDetails.map((event) => event.event);
251
+ for (const signal of signalEvents)
252
+ this.emittedSignals.add(signal);
253
+ const clips = this.tracksInternal.flatMap((track) => track.clips);
254
+ return {
255
+ id: this.id,
256
+ name: this.name,
257
+ playback: this.playing ? "playing" : "paused",
258
+ time: Number(this.timeInternal.toFixed(4)),
259
+ normalizedTime: Number((this.timeInternal / this.duration).toFixed(4)),
260
+ duration: this.duration,
261
+ loopMode: this.loopMode,
262
+ speed: this.speed,
263
+ frameRate: this.frameRate,
264
+ direction: this.directionInternal,
265
+ trackCount: this.tracksInternal.length,
266
+ clipCount: clips.length,
267
+ activeClipCount: activeClips.length,
268
+ activeClips,
269
+ tracks: this.tracksInternal.map((track) => track.snapshot()),
270
+ signalEvents: [...this.emittedSignals].sort(),
271
+ signalEventDetails,
272
+ evidence: {
273
+ oldCodebasePort: true,
274
+ boundedTimelineAuthoring: true,
275
+ clipEasing: clips.some((clip) => clip.easeIn !== "linear" || clip.easeOut !== "linear" || clip.easeInDuration > 0 || clip.easeOutDuration > 0),
276
+ clipBlending: clips.some((clip) => clip.blendMode !== "replace" || clip.weight < 1),
277
+ muteLockState: this.tracksInternal.some((track) => track.muted || track.locked),
278
+ loopPlayback: this.loopMode !== "none",
279
+ signalMarkers: this.tracksInternal.some((track) => track.type === "signal" && track.clips.length > 0)
280
+ }
281
+ };
282
+ }
283
+ toConfig() {
284
+ return {
285
+ id: this.id,
286
+ name: this.name,
287
+ duration: this.duration,
288
+ loopMode: this.loopMode,
289
+ speed: this.speed,
290
+ frameRate: this.frameRate,
291
+ tracks: this.tracksInternal.map((track) => track.toConfig())
292
+ };
293
+ }
294
+ wrapTime(value) {
295
+ if (!Number.isFinite(value))
296
+ return this.timeInternal;
297
+ if (value < 0) {
298
+ if (this.loopMode === "loop")
299
+ return modulo(value, this.duration);
300
+ if (this.loopMode === "pingpong") {
301
+ this.directionInternal = 1;
302
+ return Math.abs(value);
303
+ }
304
+ this.playing = false;
305
+ return 0;
306
+ }
307
+ if (value <= this.duration)
308
+ return value;
309
+ if (this.loopMode === "loop")
310
+ return modulo(value, this.duration);
311
+ if (this.loopMode === "pingpong") {
312
+ this.directionInternal = -1;
313
+ return Math.max(0, this.duration - (value - this.duration));
314
+ }
315
+ this.playing = false;
316
+ return this.duration;
317
+ }
318
+ }
319
+ function stableId(prefix, name) {
320
+ return `${prefix}-${name.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "") || "item"}`;
321
+ }
322
+ function clamp(value, min, max) {
323
+ return Math.max(min, Math.min(max, value));
324
+ }
325
+ function modulo(value, divisor) {
326
+ return ((value % divisor) + divisor) % divisor;
327
+ }
328
+ function runtimeTargetIdFromProperties(properties) {
329
+ if (typeof properties.runtimeNodeId === "string" && properties.runtimeNodeId.trim().length > 0)
330
+ return properties.runtimeNodeId;
331
+ if (typeof properties.targetId === "string" && properties.targetId.trim().length > 0)
332
+ return properties.targetId;
333
+ return undefined;
334
+ }
335
+ //# sourceMappingURL=TimelineModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimelineModel.js","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/TimelineModel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import { TimelineModel } from "./TimelineModel";
2
+ import type { TimelineClipBlendMode, TimelineSnapshot } from "./TimelineModel";
3
+ export interface TimelineRuntimeBindingConfig {
4
+ readonly trackId?: string;
5
+ readonly trackName?: string;
6
+ readonly targetId: string;
7
+ readonly assetId?: string;
8
+ readonly clipNameMap?: Record<string, string>;
9
+ }
10
+ export interface TimelineRuntimeAnimationApplication {
11
+ readonly targetId: string;
12
+ readonly trackId: string;
13
+ readonly trackName: string;
14
+ readonly clipId: string;
15
+ readonly clipName: string;
16
+ readonly assetId?: string;
17
+ readonly localTime: number;
18
+ readonly assetTime: number;
19
+ readonly normalizedTime: number;
20
+ readonly blendWeight: number;
21
+ readonly blendMode: TimelineClipBlendMode;
22
+ readonly playback: TimelineSnapshot["playback"];
23
+ readonly properties: Record<string, string | number | boolean>;
24
+ }
25
+ export interface TimelineRuntimeSignalDispatch {
26
+ readonly targetId?: string;
27
+ readonly trackId: string;
28
+ readonly trackName: string;
29
+ readonly clipId: string;
30
+ readonly clipName: string;
31
+ readonly event: string;
32
+ readonly time: number;
33
+ readonly localTime: number;
34
+ readonly properties: Record<string, string | number | boolean>;
35
+ }
36
+ export interface TimelineRuntimeTarget {
37
+ readonly id: string;
38
+ applyTimelineAnimation?(application: TimelineRuntimeAnimationApplication): void;
39
+ applyTimelineSignal?(dispatch: TimelineRuntimeSignalDispatch): void;
40
+ snapshot?(): unknown;
41
+ }
42
+ export interface TimelineRuntimeBridgeConfig {
43
+ readonly timeline: TimelineModel;
44
+ readonly targets: readonly TimelineRuntimeTarget[];
45
+ readonly bindings?: readonly TimelineRuntimeBindingConfig[];
46
+ readonly strictBindings?: boolean;
47
+ readonly dispatchSignals?: boolean;
48
+ }
49
+ export interface TimelineRuntimeTargetSnapshot {
50
+ readonly id: string;
51
+ readonly appliedAnimationCount: number;
52
+ readonly dispatchedSignalCount: number;
53
+ readonly snapshot?: unknown;
54
+ }
55
+ export interface TimelineRuntimeBridgeSnapshot {
56
+ readonly kind: "aura-editor-timeline-runtime-bridge";
57
+ readonly timeline: TimelineSnapshot;
58
+ readonly appliedAnimationCount: number;
59
+ readonly dispatchedSignalCount: number;
60
+ readonly warnings: readonly string[];
61
+ readonly targets: readonly TimelineRuntimeTargetSnapshot[];
62
+ readonly lastApplications: readonly TimelineRuntimeAnimationApplication[];
63
+ readonly lastSignals: readonly TimelineRuntimeSignalDispatch[];
64
+ readonly evidence: {
65
+ readonly timelineToRuntimeBridge: true;
66
+ readonly deterministicApplyAt: true;
67
+ readonly animationClipBinding: boolean;
68
+ readonly signalDispatch: boolean;
69
+ readonly runtimeTargetSnapshots: boolean;
70
+ };
71
+ }
72
+ export declare class TimelineRuntimeBridge {
73
+ private readonly timeline;
74
+ private readonly targets;
75
+ private readonly counters;
76
+ private readonly bindings;
77
+ private readonly strictBindings;
78
+ private readonly dispatchSignals;
79
+ private readonly seenSignalKeys;
80
+ private lastTimelineTime;
81
+ private lastSnapshot;
82
+ constructor(config: TimelineRuntimeBridgeConfig);
83
+ step(deltaSeconds: number): TimelineRuntimeBridgeSnapshot;
84
+ applyAt(time: number, options?: {
85
+ readonly replaySignals?: boolean;
86
+ }): TimelineRuntimeBridgeSnapshot;
87
+ applyCurrent(): TimelineRuntimeBridgeSnapshot;
88
+ resetSignalCursor(): void;
89
+ snapshot(): TimelineRuntimeBridgeSnapshot;
90
+ private applyAnimations;
91
+ private applySignals;
92
+ private resolveBinding;
93
+ private resolveSignalTargetId;
94
+ private createBridgeSnapshot;
95
+ private warnOrThrow;
96
+ }
97
+ export declare function createTimelineRuntimeBridge(config: TimelineRuntimeBridgeConfig): TimelineRuntimeBridge;
98
+ //# sourceMappingURL=TimelineRuntimeBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimelineRuntimeBridge.d.ts","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/TimelineRuntimeBridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,186 @@
1
+ import { TimelineModel } from "./TimelineModel.js";
2
+ export class TimelineRuntimeBridge {
3
+ timeline;
4
+ targets = new Map();
5
+ counters = new Map();
6
+ bindings;
7
+ strictBindings;
8
+ dispatchSignals;
9
+ seenSignalKeys = new Set();
10
+ lastTimelineTime = 0;
11
+ lastSnapshot;
12
+ constructor(config) {
13
+ this.timeline = config.timeline;
14
+ this.bindings = config.bindings ?? [];
15
+ this.strictBindings = config.strictBindings ?? false;
16
+ this.dispatchSignals = config.dispatchSignals ?? true;
17
+ for (const target of config.targets) {
18
+ const id = target.id.trim();
19
+ if (!id)
20
+ throw new Error("Timeline runtime target id is required.");
21
+ if (this.targets.has(id))
22
+ throw new Error(`Duplicate timeline runtime target id: ${id}`);
23
+ this.targets.set(id, target);
24
+ this.counters.set(id, { appliedAnimationCount: 0, dispatchedSignalCount: 0 });
25
+ }
26
+ this.lastSnapshot = this.createBridgeSnapshot(this.timeline.snapshot(), [], [], []);
27
+ }
28
+ step(deltaSeconds) {
29
+ this.timeline.tick(deltaSeconds);
30
+ return this.applyCurrent();
31
+ }
32
+ applyAt(time, options = {}) {
33
+ this.timeline.seek(time);
34
+ if (options.replaySignals)
35
+ this.resetSignalCursor();
36
+ return this.applyCurrent();
37
+ }
38
+ applyCurrent() {
39
+ const timelineSnapshot = this.timeline.snapshot();
40
+ if (timelineSnapshot.time < this.lastTimelineTime) {
41
+ this.resetSignalCursor();
42
+ }
43
+ this.lastTimelineTime = timelineSnapshot.time;
44
+ const warnings = [];
45
+ const applications = this.applyAnimations(timelineSnapshot, warnings);
46
+ const signals = this.dispatchSignals ? this.applySignals(timelineSnapshot, warnings) : [];
47
+ this.lastSnapshot = this.createBridgeSnapshot(timelineSnapshot, applications, signals, warnings);
48
+ return this.lastSnapshot;
49
+ }
50
+ resetSignalCursor() {
51
+ this.seenSignalKeys.clear();
52
+ }
53
+ snapshot() {
54
+ return this.lastSnapshot;
55
+ }
56
+ applyAnimations(snapshot, warnings) {
57
+ const applications = [];
58
+ for (const clip of snapshot.activeClips) {
59
+ if (clip.trackType !== "animation")
60
+ continue;
61
+ const binding = this.resolveBinding(clip);
62
+ const targetId = clip.runtimeTargetId ?? binding?.targetId;
63
+ if (!targetId) {
64
+ this.warnOrThrow(`No runtime target binding for animation track ${clip.trackId}.`, warnings);
65
+ continue;
66
+ }
67
+ const target = this.targets.get(targetId);
68
+ if (!target) {
69
+ this.warnOrThrow(`Runtime target is not registered for timeline binding: ${targetId}`, warnings);
70
+ continue;
71
+ }
72
+ const clipName = binding?.clipNameMap?.[clip.assetClipName ?? clip.clipName] ?? binding?.clipNameMap?.[clip.clipName] ?? clip.assetClipName ?? clip.clipName;
73
+ const application = {
74
+ targetId,
75
+ trackId: clip.trackId,
76
+ trackName: clip.trackName,
77
+ clipId: clip.clipId,
78
+ clipName,
79
+ assetId: clip.assetId ?? binding?.assetId,
80
+ localTime: clip.localTime,
81
+ assetTime: clip.assetTime,
82
+ normalizedTime: clip.normalizedTime,
83
+ blendWeight: clip.blendWeight,
84
+ blendMode: clip.blendMode,
85
+ playback: snapshot.playback,
86
+ properties: { ...clip.properties }
87
+ };
88
+ target.applyTimelineAnimation?.(application);
89
+ this.counters.get(targetId).appliedAnimationCount += 1;
90
+ applications.push(application);
91
+ }
92
+ return applications;
93
+ }
94
+ applySignals(snapshot, warnings) {
95
+ const signals = [];
96
+ for (const event of snapshot.signalEventDetails) {
97
+ const key = `${event.trackId}:${event.clipId}:${event.event}`;
98
+ if (this.seenSignalKeys.has(key))
99
+ continue;
100
+ this.seenSignalKeys.add(key);
101
+ const targetId = this.resolveSignalTargetId(event);
102
+ const dispatch = {
103
+ targetId,
104
+ trackId: event.trackId,
105
+ trackName: event.trackName,
106
+ clipId: event.clipId,
107
+ clipName: event.clipName,
108
+ event: event.event,
109
+ time: event.time,
110
+ localTime: event.localTime,
111
+ properties: { ...event.properties }
112
+ };
113
+ if (targetId) {
114
+ const target = this.targets.get(targetId);
115
+ if (!target) {
116
+ this.warnOrThrow(`Runtime target is not registered for timeline signal: ${targetId}`, warnings);
117
+ signals.push(dispatch);
118
+ continue;
119
+ }
120
+ target.applyTimelineSignal?.(dispatch);
121
+ this.counters.get(targetId).dispatchedSignalCount += 1;
122
+ }
123
+ signals.push(dispatch);
124
+ }
125
+ return signals;
126
+ }
127
+ resolveBinding(clip) {
128
+ return this.bindings.find((binding) => {
129
+ if (binding.trackId && binding.trackId === clip.trackId)
130
+ return true;
131
+ if (binding.trackName && binding.trackName === clip.trackName)
132
+ return true;
133
+ return false;
134
+ });
135
+ }
136
+ resolveSignalTargetId(event) {
137
+ if (typeof event.properties.runtimeNodeId === "string" && event.properties.runtimeNodeId.trim().length > 0)
138
+ return event.properties.runtimeNodeId;
139
+ if (typeof event.properties.targetId === "string" && event.properties.targetId.trim().length > 0)
140
+ return event.properties.targetId;
141
+ const binding = this.bindings.find((candidate) => {
142
+ if (candidate.trackId && candidate.trackId === event.trackId)
143
+ return true;
144
+ if (candidate.trackName && candidate.trackName === event.trackName)
145
+ return true;
146
+ return false;
147
+ });
148
+ return binding?.targetId;
149
+ }
150
+ createBridgeSnapshot(timeline, applications, signals, warnings) {
151
+ return {
152
+ kind: "aura-editor-timeline-runtime-bridge",
153
+ timeline,
154
+ appliedAnimationCount: [...this.counters.values()].reduce((total, counter) => total + counter.appliedAnimationCount, 0),
155
+ dispatchedSignalCount: [...this.counters.values()].reduce((total, counter) => total + counter.dispatchedSignalCount, 0),
156
+ warnings,
157
+ targets: [...this.targets.values()].map((target) => {
158
+ const counter = this.counters.get(target.id);
159
+ return {
160
+ id: target.id,
161
+ appliedAnimationCount: counter.appliedAnimationCount,
162
+ dispatchedSignalCount: counter.dispatchedSignalCount,
163
+ snapshot: target.snapshot?.()
164
+ };
165
+ }),
166
+ lastApplications: applications,
167
+ lastSignals: signals,
168
+ evidence: {
169
+ timelineToRuntimeBridge: true,
170
+ deterministicApplyAt: true,
171
+ animationClipBinding: applications.length > 0,
172
+ signalDispatch: signals.length > 0,
173
+ runtimeTargetSnapshots: [...this.targets.values()].some((target) => typeof target.snapshot === "function")
174
+ }
175
+ };
176
+ }
177
+ warnOrThrow(message, warnings) {
178
+ if (this.strictBindings)
179
+ throw new Error(message);
180
+ warnings.push(message);
181
+ }
182
+ }
183
+ export function createTimelineRuntimeBridge(config) {
184
+ return new TimelineRuntimeBridge(config);
185
+ }
186
+ //# sourceMappingURL=TimelineRuntimeBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimelineRuntimeBridge.js","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/TimelineRuntimeBridge.ts"],"names":[],"mappings":"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"}