@aura3d/scripting 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 (139) hide show
  1. package/README.md +16 -0
  2. package/dist/AdaptiveDifficultyFixtures.d.ts +58 -0
  3. package/dist/AdaptiveDifficultyFixtures.d.ts.map +1 -0
  4. package/dist/AdaptiveDifficultyFixtures.js +228 -0
  5. package/dist/AdaptiveDifficultyFixtures.js.map +1 -0
  6. package/dist/AnalyticsPrivacyFixtures.d.ts +63 -0
  7. package/dist/AnalyticsPrivacyFixtures.d.ts.map +1 -0
  8. package/dist/AnalyticsPrivacyFixtures.js +120 -0
  9. package/dist/AnalyticsPrivacyFixtures.js.map +1 -0
  10. package/dist/Behavior.d.ts +10 -0
  11. package/dist/Behavior.d.ts.map +1 -0
  12. package/dist/Behavior.js +2 -0
  13. package/dist/Behavior.js.map +1 -0
  14. package/dist/BehaviorHost.d.ts +17 -0
  15. package/dist/BehaviorHost.d.ts.map +1 -0
  16. package/dist/BehaviorHost.js +39 -0
  17. package/dist/BehaviorHost.js.map +1 -0
  18. package/dist/BehaviorRegistry.d.ts +8 -0
  19. package/dist/BehaviorRegistry.d.ts.map +1 -0
  20. package/dist/BehaviorRegistry.js +17 -0
  21. package/dist/BehaviorRegistry.js.map +1 -0
  22. package/dist/BehaviorSystem.d.ts +26 -0
  23. package/dist/BehaviorSystem.d.ts.map +1 -0
  24. package/dist/BehaviorSystem.js +76 -0
  25. package/dist/BehaviorSystem.js.map +1 -0
  26. package/dist/BehaviorTree.d.ts +75 -0
  27. package/dist/BehaviorTree.d.ts.map +1 -0
  28. package/dist/BehaviorTree.js +204 -0
  29. package/dist/BehaviorTree.js.map +1 -0
  30. package/dist/CloudServiceFixtures.d.ts +81 -0
  31. package/dist/CloudServiceFixtures.d.ts.map +1 -0
  32. package/dist/CloudServiceFixtures.js +144 -0
  33. package/dist/CloudServiceFixtures.js.map +1 -0
  34. package/dist/CulturalBehaviorFixtures.d.ts +75 -0
  35. package/dist/CulturalBehaviorFixtures.d.ts.map +1 -0
  36. package/dist/CulturalBehaviorFixtures.js +180 -0
  37. package/dist/CulturalBehaviorFixtures.js.map +1 -0
  38. package/dist/DecisionTree.d.ts +42 -0
  39. package/dist/DecisionTree.d.ts.map +1 -0
  40. package/dist/DecisionTree.js +125 -0
  41. package/dist/DecisionTree.js.map +1 -0
  42. package/dist/GOAP.d.ts +51 -0
  43. package/dist/GOAP.d.ts.map +1 -0
  44. package/dist/GOAP.js +105 -0
  45. package/dist/GOAP.js.map +1 -0
  46. package/dist/HTN.d.ts +58 -0
  47. package/dist/HTN.d.ts.map +1 -0
  48. package/dist/HTN.js +115 -0
  49. package/dist/HTN.js.map +1 -0
  50. package/dist/LearningAgentFixtures.d.ts +60 -0
  51. package/dist/LearningAgentFixtures.d.ts.map +1 -0
  52. package/dist/LearningAgentFixtures.js +122 -0
  53. package/dist/LearningAgentFixtures.js.map +1 -0
  54. package/dist/NetworkReplicationFixtures.d.ts +82 -0
  55. package/dist/NetworkReplicationFixtures.d.ts.map +1 -0
  56. package/dist/NetworkReplicationFixtures.js +330 -0
  57. package/dist/NetworkReplicationFixtures.js.map +1 -0
  58. package/dist/Perception.d.ts +58 -0
  59. package/dist/Perception.d.ts.map +1 -0
  60. package/dist/Perception.js +111 -0
  61. package/dist/Perception.js.map +1 -0
  62. package/dist/PlayerBehaviorTelemetryFixtures.d.ts +74 -0
  63. package/dist/PlayerBehaviorTelemetryFixtures.d.ts.map +1 -0
  64. package/dist/PlayerBehaviorTelemetryFixtures.js +189 -0
  65. package/dist/PlayerBehaviorTelemetryFixtures.js.map +1 -0
  66. package/dist/ProceduralContentAdaptationFixtures.d.ts +52 -0
  67. package/dist/ProceduralContentAdaptationFixtures.d.ts.map +1 -0
  68. package/dist/ProceduralContentAdaptationFixtures.js +149 -0
  69. package/dist/ProceduralContentAdaptationFixtures.js.map +1 -0
  70. package/dist/ScriptContext.d.ts +18 -0
  71. package/dist/ScriptContext.d.ts.map +1 -0
  72. package/dist/ScriptContext.js +21 -0
  73. package/dist/ScriptContext.js.map +1 -0
  74. package/dist/StateMachine.d.ts +52 -0
  75. package/dist/StateMachine.d.ts.map +1 -0
  76. package/dist/StateMachine.js +117 -0
  77. package/dist/StateMachine.js.map +1 -0
  78. package/dist/UtilityAI.d.ts +55 -0
  79. package/dist/UtilityAI.d.ts.map +1 -0
  80. package/dist/UtilityAI.js +113 -0
  81. package/dist/UtilityAI.js.map +1 -0
  82. package/dist/VisualGraph.d.ts +20 -0
  83. package/dist/VisualGraph.d.ts.map +1 -0
  84. package/dist/VisualGraph.js +191 -0
  85. package/dist/VisualGraph.js.map +1 -0
  86. package/dist/VisualGraphContext.d.ts +123 -0
  87. package/dist/VisualGraphContext.d.ts.map +1 -0
  88. package/dist/VisualGraphContext.js +2 -0
  89. package/dist/VisualGraphContext.js.map +1 -0
  90. package/dist/VisualGraphExecutor.d.ts +16 -0
  91. package/dist/VisualGraphExecutor.d.ts.map +1 -0
  92. package/dist/VisualGraphExecutor.js +571 -0
  93. package/dist/VisualGraphExecutor.js.map +1 -0
  94. package/dist/VisualNode.d.ts +17 -0
  95. package/dist/VisualNode.d.ts.map +1 -0
  96. package/dist/VisualNode.js +24 -0
  97. package/dist/VisualNode.js.map +1 -0
  98. package/dist/VisualNodeCatalog.d.ts +14 -0
  99. package/dist/VisualNodeCatalog.d.ts.map +1 -0
  100. package/dist/VisualNodeCatalog.js +142 -0
  101. package/dist/VisualNodeCatalog.js.map +1 -0
  102. package/dist/WeaponSystem.d.ts +228 -0
  103. package/dist/WeaponSystem.d.ts.map +1 -0
  104. package/dist/WeaponSystem.js +530 -0
  105. package/dist/WeaponSystem.js.map +1 -0
  106. package/dist/index.d.ts +51 -0
  107. package/dist/index.d.ts.map +1 -0
  108. package/dist/index.js +25 -0
  109. package/dist/index.js.map +1 -0
  110. package/package.json +13 -0
  111. package/src/AdaptiveDifficultyFixtures.ts +324 -0
  112. package/src/AnalyticsPrivacyFixtures.ts +182 -0
  113. package/src/Behavior.ts +11 -0
  114. package/src/BehaviorHost.ts +51 -0
  115. package/src/BehaviorRegistry.ts +22 -0
  116. package/src/BehaviorSystem.ts +103 -0
  117. package/src/BehaviorTree.ts +234 -0
  118. package/src/CloudServiceFixtures.ts +225 -0
  119. package/src/CulturalBehaviorFixtures.ts +262 -0
  120. package/src/DecisionTree.ts +162 -0
  121. package/src/GOAP.ts +150 -0
  122. package/src/HTN.ts +178 -0
  123. package/src/LearningAgentFixtures.ts +184 -0
  124. package/src/NetworkReplicationFixtures.ts +440 -0
  125. package/src/Perception.ts +163 -0
  126. package/src/PlayerBehaviorTelemetryFixtures.ts +257 -0
  127. package/src/ProceduralContentAdaptationFixtures.ts +205 -0
  128. package/src/ScriptContext.ts +34 -0
  129. package/src/StateMachine.ts +138 -0
  130. package/src/UtilityAI.ts +158 -0
  131. package/src/VisualGraph.ts +236 -0
  132. package/src/VisualGraphContext.ts +138 -0
  133. package/src/VisualGraphExecutor.ts +663 -0
  134. package/src/VisualNode.ts +44 -0
  135. package/src/VisualNodeCatalog.ts +195 -0
  136. package/src/WeaponSystem.ts +793 -0
  137. package/src/index.ts +175 -0
  138. package/tests/scripting.test.ts +229 -0
  139. package/tsconfig.json +7 -0
@@ -0,0 +1,571 @@
1
+ import { validateGraph } from "./VisualGraph.js";
2
+ import {} from "./VisualGraphContext.js";
3
+ import { getVisualNodeDefinition } from "./VisualNodeCatalog.js";
4
+ import {} from "./VisualNode.js";
5
+ const visualNodeOutputsBrand = Symbol("VisualNodeOutputs");
6
+ export class VisualGraphExecutor {
7
+ defaultContext;
8
+ constructor(context = {}) {
9
+ this.defaultContext = context;
10
+ }
11
+ execute(graph, context = this.defaultContext) {
12
+ const errors = validateGraph(graph, { context });
13
+ if (errors.length > 0) {
14
+ throw new Error(errors.join("; "));
15
+ }
16
+ const values = new Map();
17
+ const executionOrder = [];
18
+ const sideEffects = [];
19
+ const diagnostics = [];
20
+ const nodes = new Map(graph.nodes.map((node) => [node.id, node]));
21
+ const visiting = new Set();
22
+ const visited = new Set();
23
+ const executeNode = (nodeId) => {
24
+ if (visited.has(nodeId))
25
+ return;
26
+ if (visiting.has(nodeId)) {
27
+ throw new Error(`Visual graph cycle detected at node: ${nodeId}`);
28
+ }
29
+ const node = nodes.get(nodeId);
30
+ if (!node) {
31
+ throw new Error(`Missing visual node: ${nodeId}`);
32
+ }
33
+ visiting.add(nodeId);
34
+ for (const edge of graph.edges.filter((candidate) => candidate.toNode === node.id)) {
35
+ executeNode(edge.fromNode);
36
+ }
37
+ setNodeOutput(values, node, executeVisualNode(node, graph.edges.filter((edge) => edge.toNode === node.id), values, context, sideEffects, diagnostics));
38
+ visiting.delete(nodeId);
39
+ visited.add(nodeId);
40
+ executionOrder.push(nodeId);
41
+ };
42
+ for (const node of graph.nodes) {
43
+ executeNode(node.id);
44
+ }
45
+ return {
46
+ values,
47
+ executionOrder,
48
+ nodeKinds: [...new Set(graph.nodes.map((node) => node.kind))].sort(),
49
+ sideEffects,
50
+ diagnostics,
51
+ blockedClaims: [
52
+ "Unity Visual Scripting parity",
53
+ "Unreal Blueprint parity",
54
+ "async latent action graph parity",
55
+ "editor-authored visual scripting parity",
56
+ "live engine installGraph bridge parity"
57
+ ]
58
+ };
59
+ }
60
+ }
61
+ function executeVisualNode(node, inputEdges, values, context, sideEffects, diagnostics) {
62
+ const definition = getVisualNodeDefinition(node.kind);
63
+ if (!definition)
64
+ throw new Error(`Unsupported visual node kind: ${node.kind}`);
65
+ const input = (port) => getInputValue(node, port, inputEdges, values);
66
+ const number = (port) => finiteNumber(input(port));
67
+ const boolean = (port) => Boolean(input(port));
68
+ const string = (port) => String(input(port) ?? "");
69
+ const optionalString = (port) => {
70
+ const value = input(port);
71
+ return typeof value === "string" && value.length > 0 ? value : undefined;
72
+ };
73
+ const object = (port) => stableClone(input(port) ?? {});
74
+ switch (node.kind) {
75
+ case "const":
76
+ return node.data?.value;
77
+ case "log":
78
+ return input("in");
79
+ case "add":
80
+ return inputEdges.length > 1
81
+ ? inputEdges.reduce((total, edge) => total + finiteNumber(readEdgeValue(edge, values)), 0)
82
+ : number("in");
83
+ case "subtract":
84
+ return number("a") - number("b");
85
+ case "multiply":
86
+ return number("a") * number("b");
87
+ case "divide": {
88
+ const divisor = number("b");
89
+ if (divisor === 0)
90
+ throw new Error(`Visual node ${node.id} divide by zero.`);
91
+ return number("a") / divisor;
92
+ }
93
+ case "power":
94
+ return Math.pow(number("base"), number("exponent"));
95
+ case "sqrt": {
96
+ const value = number("value");
97
+ if (value < 0)
98
+ throw new Error(`Visual node ${node.id} cannot calculate square root of a negative number.`);
99
+ return Math.sqrt(value);
100
+ }
101
+ case "abs":
102
+ return Math.abs(number("value"));
103
+ case "sin":
104
+ return Math.sin(number("angle"));
105
+ case "cos":
106
+ return Math.cos(number("angle"));
107
+ case "tan":
108
+ return Math.tan(number("angle"));
109
+ case "min":
110
+ return Math.min(number("a"), number("b"));
111
+ case "max":
112
+ return Math.max(number("a"), number("b"));
113
+ case "clamp":
114
+ return Math.max(number("min"), Math.min(number("max"), number("value")));
115
+ case "lerp":
116
+ return number("a") + (number("b") - number("a")) * number("t");
117
+ case "inverseLerp": {
118
+ const a = number("a");
119
+ const b = number("b");
120
+ if (a === b)
121
+ throw new Error(`Visual node ${node.id} inverseLerp requires different a and b values.`);
122
+ return (number("value") - a) / (b - a);
123
+ }
124
+ case "and":
125
+ return boolean("a") && boolean("b");
126
+ case "or":
127
+ return boolean("a") || boolean("b");
128
+ case "not":
129
+ return !boolean("value");
130
+ case "xor":
131
+ return boolean("a") !== boolean("b");
132
+ case "equal":
133
+ return input("a") === input("b");
134
+ case "notEqual":
135
+ return input("a") !== input("b");
136
+ case "greater":
137
+ return number("a") > number("b");
138
+ case "less":
139
+ return number("a") < number("b");
140
+ case "greaterEqual":
141
+ return number("a") >= number("b");
142
+ case "lessEqual":
143
+ return number("a") <= number("b");
144
+ case "isNull": {
145
+ const value = input("value");
146
+ return value === null || value === undefined;
147
+ }
148
+ case "isValid": {
149
+ const value = input("value");
150
+ return value !== null && value !== undefined;
151
+ }
152
+ case "select":
153
+ return boolean("condition") ? input("ifTrue") : input("ifFalse");
154
+ case "branch": {
155
+ const selected = boolean("condition") ? "true" : "false";
156
+ return outputs(selected, {
157
+ true: selected === "true",
158
+ false: selected === "false",
159
+ selected
160
+ });
161
+ }
162
+ case "switch": {
163
+ const caseCount = Math.max(1, Math.min(3, Math.floor(number("caseCount"))));
164
+ const selectedIndex = Math.floor(number("value"));
165
+ const selected = selectedIndex >= 0 && selectedIndex < caseCount ? `case${selectedIndex}` : "default";
166
+ return outputs(selected, {
167
+ case0: selected === "case0",
168
+ case1: selected === "case1",
169
+ case2: selected === "case2",
170
+ default: selected === "default",
171
+ selected
172
+ });
173
+ }
174
+ case "sequence": {
175
+ const count = Math.max(1, Math.min(3, Math.floor(number("count"))));
176
+ const orderedOutputs = Array.from({ length: count }, (_, index) => `out${index}`);
177
+ return outputs(orderedOutputs, {
178
+ out0: count > 0,
179
+ out1: count > 1,
180
+ out2: count > 2,
181
+ outputs: orderedOutputs
182
+ });
183
+ }
184
+ case "forRange": {
185
+ const startIndex = Math.floor(number("startIndex"));
186
+ const endIndex = Math.floor(number("endIndex"));
187
+ const iterations = Math.max(0, Math.min(256, endIndex - startIndex));
188
+ const indices = Array.from({ length: iterations }, (_, index) => startIndex + index);
189
+ return outputs(indices, {
190
+ body: iterations > 0,
191
+ completed: true,
192
+ index: indices[0] ?? startIndex,
193
+ indices
194
+ });
195
+ }
196
+ case "gate": {
197
+ const isOpen = !boolean("startClosed");
198
+ return outputs(isOpen ? "out" : undefined, {
199
+ out: isOpen,
200
+ isOpen
201
+ });
202
+ }
203
+ case "onStart": {
204
+ const active = (context.frame ?? 0) === 0 && (context.time ?? 0) === 0;
205
+ return outputs(active, { out: active, active });
206
+ }
207
+ case "onFrame": {
208
+ const frame = { dt: context.dt ?? 0, time: context.time ?? 0, frame: context.frame ?? 0 };
209
+ return outputs(frame, { out: true, dt: frame.dt, time: frame.time, frame: frame.frame, context: frame });
210
+ }
211
+ case "getNode": {
212
+ const nodeId = string("nodeId");
213
+ const runtimeNode = collectionGet(context.runtimeNodes, nodeId);
214
+ if (!runtimeNode) {
215
+ diagnostics.push({ level: "warning", code: "runtime.nodeMissing", message: `Runtime node not found: ${nodeId}`, nodeId: node.id });
216
+ }
217
+ return outputs(stableClone(runtimeNode ?? null), {
218
+ node: stableClone(runtimeNode ?? null),
219
+ nodeId,
220
+ exists: runtimeNode !== undefined,
221
+ position: normalizeVector(runtimeNode?.position)
222
+ });
223
+ }
224
+ case "setPosition":
225
+ return command("runtime.setPosition", node, context, sideEffects, string("nodeId"), {
226
+ nodeId: string("nodeId"),
227
+ position: normalizeVector(input("position"))
228
+ });
229
+ case "translate": {
230
+ const nodeId = string("nodeId");
231
+ const current = normalizeVector(collectionGet(context.runtimeNodes, nodeId)?.position);
232
+ const delta = normalizeVector(input("delta"));
233
+ return command("runtime.translate", node, context, sideEffects, nodeId, {
234
+ nodeId,
235
+ from: current,
236
+ delta,
237
+ position: addVectors(current, delta)
238
+ });
239
+ }
240
+ case "rotate":
241
+ return command("runtime.rotate", node, context, sideEffects, string("nodeId"), {
242
+ nodeId: string("nodeId"),
243
+ rotation: normalizeVector(input("rotation"))
244
+ });
245
+ case "setVisible":
246
+ return command("runtime.setVisible", node, context, sideEffects, string("nodeId"), {
247
+ nodeId: string("nodeId"),
248
+ visible: boolean("visible")
249
+ });
250
+ case "setMaterial":
251
+ return command("runtime.setMaterial", node, context, sideEffects, string("nodeId"), {
252
+ nodeId: string("nodeId"),
253
+ material: object("material")
254
+ });
255
+ case "pressed":
256
+ return inputFlag(context.input?.pressed, string("action"));
257
+ case "held":
258
+ return inputFlag(context.input?.held, string("action"));
259
+ case "released":
260
+ return inputFlag(context.input?.released, string("action"));
261
+ case "axis":
262
+ return finiteNumber(context.input?.axes?.[string("axis")]);
263
+ case "buffered":
264
+ return inputFlag(context.input?.buffered, string("action"));
265
+ case "combo":
266
+ return inputFlag(context.input?.combos, string("combo"));
267
+ case "playClip":
268
+ return command("animation.playClip", node, context, sideEffects, string("controllerId"), {
269
+ controllerId: string("controllerId"),
270
+ clip: string("clip"),
271
+ loop: boolean("loop")
272
+ });
273
+ case "restartClip":
274
+ return command("animation.restartClip", node, context, sideEffects, string("controllerId"), {
275
+ controllerId: string("controllerId"),
276
+ clip: string("clip"),
277
+ restart: true
278
+ });
279
+ case "crossFade":
280
+ return command("animation.crossFade", node, context, sideEffects, string("controllerId"), {
281
+ controllerId: string("controllerId"),
282
+ clip: string("clip"),
283
+ duration: number("duration"),
284
+ restart: boolean("restart"),
285
+ layer: optionalString("layer")
286
+ });
287
+ case "setLayerWeight":
288
+ return command("animation.setLayerWeight", node, context, sideEffects, string("controllerId"), {
289
+ controllerId: string("controllerId"),
290
+ layer: string("layer"),
291
+ weight: number("weight")
292
+ });
293
+ case "onAnimationEvent": {
294
+ const event = findAnimationEvent(context, string("controllerId"), string("eventType"), optionalString("clip"));
295
+ return outputs(stableClone(event ?? null), {
296
+ out: event !== undefined,
297
+ fired: event !== undefined,
298
+ event: stableClone(event ?? null)
299
+ });
300
+ }
301
+ case "setMorphTarget": {
302
+ const morphTarget = string("morphTarget");
303
+ const weight = number("weight");
304
+ return command("animation.setMorphTarget", node, context, sideEffects, string("controllerId"), {
305
+ controllerId: string("controllerId"),
306
+ morphTarget,
307
+ weight,
308
+ weights: { [morphTarget]: weight }
309
+ });
310
+ }
311
+ case "setMorphTargets":
312
+ return command("animation.setMorphTargets", node, context, sideEffects, string("controllerId"), {
313
+ controllerId: string("controllerId"),
314
+ weights: object("weights")
315
+ });
316
+ case "getClipTime": {
317
+ const controller = collectionGet(context.animationControllers, string("controllerId"));
318
+ return outputs(controller?.clipTime ?? 0, {
319
+ out: controller?.clipTime ?? 0,
320
+ clip: controller?.currentClip ?? ""
321
+ });
322
+ }
323
+ case "setVelocity":
324
+ return command("physics.setVelocity", node, context, sideEffects, string("bodyId"), {
325
+ bodyId: string("bodyId"),
326
+ velocity: normalizeVector(input("velocity"))
327
+ });
328
+ case "jump":
329
+ return command("physics.jump", node, context, sideEffects, string("bodyId"), {
330
+ bodyId: string("bodyId"),
331
+ impulse: number("impulse")
332
+ });
333
+ case "dash":
334
+ return command("physics.dash", node, context, sideEffects, string("bodyId"), {
335
+ bodyId: string("bodyId"),
336
+ direction: normalizeVector(input("direction")),
337
+ speed: number("speed")
338
+ });
339
+ case "onCollisionEnter": {
340
+ const event = findCollisionEvent(context.collisionEvents, "enter", string("bodyId"), optionalString("otherBodyId"));
341
+ return outputs(stableClone(event ?? null), { out: event !== undefined, collided: event !== undefined, event: stableClone(event ?? null) });
342
+ }
343
+ case "onCollisionExit": {
344
+ const event = findCollisionEvent(context.collisionEvents, "exit", string("bodyId"), optionalString("otherBodyId"));
345
+ return outputs(stableClone(event ?? null), { out: event !== undefined, collided: event !== undefined, event: stableClone(event ?? null) });
346
+ }
347
+ case "raycast": {
348
+ const hit = collectionGet(context.raycastHits, string("queryId"));
349
+ return outputs(stableClone(hit ?? null), { hit: hit?.hit === true, result: stableClone(hit ?? null) });
350
+ }
351
+ case "overlap": {
352
+ const overlap = collectionGet(context.overlaps, string("queryId"));
353
+ return outputs(stableClone(overlap ?? null), { hit: (overlap?.bodyIds.length ?? 0) > 0, result: stableClone(overlap ?? null) });
354
+ }
355
+ case "openHitbox":
356
+ return command("combat.openHitbox", node, context, sideEffects, string("hitboxId"), {
357
+ hitboxId: string("hitboxId"),
358
+ ownerId: string("ownerId"),
359
+ damage: number("damage"),
360
+ payload: object("payload")
361
+ });
362
+ case "closeHitbox":
363
+ return command("combat.closeHitbox", node, context, sideEffects, string("hitboxId"), {
364
+ hitboxId: string("hitboxId")
365
+ });
366
+ case "setHurtbox":
367
+ return command("combat.setHurtbox", node, context, sideEffects, string("hurtboxId"), {
368
+ hurtboxId: string("hurtboxId"),
369
+ ownerId: string("ownerId"),
370
+ payload: object("payload")
371
+ });
372
+ case "onHit": {
373
+ const event = findCombatHit(context.combatEvents, optionalString("actorId"), optionalString("hitboxId"));
374
+ return outputs(stableClone(event ?? null), { out: event !== undefined, hit: event !== undefined, event: stableClone(event ?? null) });
375
+ }
376
+ case "applyDamage":
377
+ return command("combat.applyDamage", node, context, sideEffects, string("targetId"), {
378
+ targetId: string("targetId"),
379
+ amount: number("amount"),
380
+ sourceId: optionalString("sourceId")
381
+ });
382
+ case "applyKnockback":
383
+ return command("combat.applyKnockback", node, context, sideEffects, string("targetId"), {
384
+ targetId: string("targetId"),
385
+ velocity: normalizeVector(input("velocity")),
386
+ sourceId: optionalString("sourceId")
387
+ });
388
+ case "follow":
389
+ return command("camera.follow", node, context, sideEffects, string("targetId"), {
390
+ targetId: string("targetId"),
391
+ stiffness: number("stiffness")
392
+ });
393
+ case "frameTargets":
394
+ return command("camera.frameTargets", node, context, sideEffects, undefined, {
395
+ targetIds: object("targetIds"),
396
+ padding: number("padding")
397
+ });
398
+ case "shake":
399
+ return command("camera.shake", node, context, sideEffects, context.camera?.id, {
400
+ intensity: number("intensity"),
401
+ duration: number("duration")
402
+ });
403
+ case "cutTo":
404
+ return command("camera.cutTo", node, context, sideEffects, context.camera?.id, {
405
+ position: normalizeVector(input("position")),
406
+ target: stableClone(input("target") ?? null)
407
+ });
408
+ case "captureSnapshot": {
409
+ const snapshot = cleanObject({
410
+ kind: "evidence.snapshot",
411
+ label: optionalString("label") ?? node.id,
412
+ frame: context.frame,
413
+ time: context.time,
414
+ dt: context.dt,
415
+ runtimeNodes: context.runtimeNodes,
416
+ animationControllers: context.animationControllers,
417
+ physicsBodies: context.physicsBodies,
418
+ camera: context.camera,
419
+ evidence: context.evidence
420
+ });
421
+ pushSideEffect(sideEffects, "evidence.captureSnapshot", node, context, optionalString("label"), snapshot);
422
+ return outputs(snapshot, { out: true, snapshot });
423
+ }
424
+ case "markProof":
425
+ return command("evidence.markProof", node, context, sideEffects, string("proofId"), {
426
+ proofId: string("proofId"),
427
+ details: object("details")
428
+ });
429
+ case "assertState": {
430
+ const operator = optionalString("operator") ?? "equals";
431
+ const actual = input("actual");
432
+ const expected = input("expected");
433
+ const passed = evaluateAssertion(actual, expected, operator);
434
+ const assertion = cleanObject({
435
+ kind: "evidence.assertState",
436
+ operator,
437
+ actual,
438
+ expected,
439
+ passed
440
+ });
441
+ pushSideEffect(sideEffects, "evidence.assertState", node, context, undefined, assertion);
442
+ return outputs(assertion, { out: passed, passed, assertion });
443
+ }
444
+ }
445
+ throw new Error(`Unsupported visual node kind: ${node.kind}`);
446
+ }
447
+ function getInputValue(node, portId, inputEdges, values) {
448
+ const edge = inputEdges.find((candidate) => candidate.toPort === portId);
449
+ if (edge)
450
+ return readEdgeValue(edge, values);
451
+ const dataValue = node.data?.[portId];
452
+ if (dataValue !== undefined)
453
+ return dataValue;
454
+ return node.ports.find((port) => port.id === portId)?.defaultValue;
455
+ }
456
+ function readEdgeValue(edge, values) {
457
+ return values.get(`${edge.fromNode}.${edge.fromPort}`) ?? values.get(edge.fromNode);
458
+ }
459
+ function setNodeOutput(values, node, value) {
460
+ const resolved = isOutputMap(value) ? value : outputs(value);
461
+ values.set(node.id, resolved.value);
462
+ for (const port of node.ports.filter((entry) => entry.direction === "output")) {
463
+ values.set(`${node.id}.${port.id}`, resolved.byPort?.[port.id] ?? resolved.value);
464
+ }
465
+ }
466
+ function outputs(value, byPort) {
467
+ return { [visualNodeOutputsBrand]: true, value, byPort };
468
+ }
469
+ function isOutputMap(value) {
470
+ return typeof value === "object" && value !== null && value[visualNodeOutputsBrand] === true;
471
+ }
472
+ function finiteNumber(value) {
473
+ const numeric = Number(value ?? 0);
474
+ return Number.isFinite(numeric) ? numeric : 0;
475
+ }
476
+ function inputFlag(source, key) {
477
+ if (!source || key.length === 0)
478
+ return false;
479
+ return Array.isArray(source) ? source.includes(key) : source[key] === true;
480
+ }
481
+ function normalizeVector(value, fallback = { x: 0, y: 0, z: 0 }) {
482
+ if (Array.isArray(value)) {
483
+ return { x: finiteNumber(value[0] ?? fallback.x), y: finiteNumber(value[1] ?? fallback.y), z: finiteNumber(value[2] ?? fallback.z) };
484
+ }
485
+ if (typeof value === "object" && value !== null) {
486
+ const vector = value;
487
+ return {
488
+ x: finiteNumber(vector.x ?? fallback.x),
489
+ y: finiteNumber(vector.y ?? fallback.y),
490
+ z: finiteNumber(vector.z ?? fallback.z)
491
+ };
492
+ }
493
+ return { ...fallback };
494
+ }
495
+ function addVectors(a, b) {
496
+ return { x: a.x + b.x, y: a.y + b.y, z: a.z + b.z };
497
+ }
498
+ function command(kind, node, context, sideEffects, target, payload) {
499
+ const commandPayload = cleanObject({ kind, target, ...payload });
500
+ pushSideEffect(sideEffects, kind, node, context, target, commandPayload);
501
+ return outputs(commandPayload, { out: true, command: commandPayload });
502
+ }
503
+ function pushSideEffect(sideEffects, kind, node, context, target, payload) {
504
+ sideEffects.push(cleanObject({
505
+ kind,
506
+ nodeId: node.id,
507
+ target,
508
+ frame: context.frame,
509
+ time: context.time,
510
+ payload
511
+ }));
512
+ }
513
+ function collectionGet(collection, id) {
514
+ if (!collection || id.length === 0)
515
+ return undefined;
516
+ return Array.isArray(collection) ? collection.find((entry) => entry.id === id) : collection[id];
517
+ }
518
+ function findAnimationEvent(context, controllerId, eventType, clip) {
519
+ const controller = collectionGet(context.animationControllers, controllerId);
520
+ const events = [...(context.animationEvents ?? []), ...(controller?.events ?? [])];
521
+ return events.find((event) => event.type === eventType &&
522
+ (event.controllerId === undefined || event.controllerId === controllerId) &&
523
+ (clip === undefined || event.clip === undefined || event.clip === clip));
524
+ }
525
+ function findCollisionEvent(events, type, bodyId, otherBodyId) {
526
+ return events?.find((event) => event.type === type &&
527
+ (event.bodyId === bodyId || event.otherBodyId === bodyId) &&
528
+ (otherBodyId === undefined || event.bodyId === otherBodyId || event.otherBodyId === otherBodyId));
529
+ }
530
+ function findCombatHit(events, actorId, hitboxId) {
531
+ return events?.find((event) => event.type === "hit" &&
532
+ (actorId === undefined || event.actorId === actorId || event.targetId === actorId) &&
533
+ (hitboxId === undefined || event.hitboxId === hitboxId));
534
+ }
535
+ function evaluateAssertion(actual, expected, operator) {
536
+ switch (operator) {
537
+ case "equals":
538
+ return stableStringify(actual) === stableStringify(expected);
539
+ case "notEquals":
540
+ return stableStringify(actual) !== stableStringify(expected);
541
+ case "truthy":
542
+ return Boolean(actual);
543
+ case "falsy":
544
+ return !actual;
545
+ default:
546
+ return false;
547
+ }
548
+ }
549
+ function stableClone(value) {
550
+ return cleanObject(value);
551
+ }
552
+ function cleanObject(value) {
553
+ if (Array.isArray(value)) {
554
+ return value.map((entry) => cleanObject(entry));
555
+ }
556
+ if (typeof value === "object" && value !== null) {
557
+ const output = {};
558
+ for (const key of Object.keys(value).sort()) {
559
+ const entry = value[key];
560
+ if (entry !== undefined) {
561
+ output[key] = cleanObject(entry);
562
+ }
563
+ }
564
+ return output;
565
+ }
566
+ return value;
567
+ }
568
+ function stableStringify(value) {
569
+ return JSON.stringify(cleanObject(value));
570
+ }
571
+ //# sourceMappingURL=VisualGraphExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VisualGraphExecutor.js","sourceRoot":"","sources":["../../../../packages/scripting/src/VisualGraphExecutor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export type VisualPortDirection = "input" | "output";
2
+ export type VisualPortType = "flow" | "number" | "boolean" | "string" | "object" | "any";
3
+ export interface VisualPort {
4
+ readonly id: string;
5
+ readonly direction: VisualPortDirection;
6
+ readonly type: VisualPortType;
7
+ readonly optional?: boolean;
8
+ readonly defaultValue?: unknown;
9
+ }
10
+ export interface VisualNode {
11
+ readonly id: string;
12
+ readonly kind: string;
13
+ readonly ports: readonly VisualPort[];
14
+ readonly data?: Readonly<Record<string, unknown>>;
15
+ }
16
+ export declare function validateNode(node: VisualNode): readonly string[];
17
+ //# sourceMappingURL=VisualNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VisualNode.d.ts","sourceRoot":"","sources":["../../../../packages/scripting/src/VisualNode.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,CAAC;AACrD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEzF,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACnD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,MAAM,EAAE,CAyBhE"}