@nice2dev/game-engine 1.0.2 → 1.0.3

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 (188) hide show
  1. package/dist/cjs/ai/BehaviorTree.js +1215 -0
  2. package/dist/cjs/ai/BehaviorTree.js.map +1 -0
  3. package/dist/cjs/ai/StateMachine.js +783 -0
  4. package/dist/cjs/ai/StateMachine.js.map +1 -0
  5. package/dist/cjs/editor/ShaderGraph.js +1616 -0
  6. package/dist/cjs/editor/ShaderGraph.js.map +1 -0
  7. package/dist/cjs/editor/TimelineEditor.js +819 -0
  8. package/dist/cjs/editor/TimelineEditor.js.map +1 -0
  9. package/dist/cjs/export/GodotExporter.js +1102 -0
  10. package/dist/cjs/export/GodotExporter.js.map +1 -0
  11. package/dist/cjs/export/PlatformExporter.js +236 -0
  12. package/dist/cjs/export/PlatformExporter.js.map +1 -0
  13. package/dist/cjs/export/ThreeJSExporter.js +1116 -0
  14. package/dist/cjs/export/ThreeJSExporter.js.map +1 -0
  15. package/dist/cjs/export/UnityExporter.js +1193 -0
  16. package/dist/cjs/export/UnityExporter.js.map +1 -0
  17. package/dist/cjs/export/WebExporter.js +1036 -0
  18. package/dist/cjs/export/WebExporter.js.map +1 -0
  19. package/dist/cjs/export/index.js +58 -0
  20. package/dist/cjs/export/index.js.map +1 -0
  21. package/dist/cjs/import/AsepriteImporter.js +761 -0
  22. package/dist/cjs/import/AsepriteImporter.js.map +1 -0
  23. package/dist/cjs/import/DragonBonesImporter.js +499 -0
  24. package/dist/cjs/import/DragonBonesImporter.js.map +1 -0
  25. package/dist/cjs/import/GameMakerImporter.js +559 -0
  26. package/dist/cjs/import/GameMakerImporter.js.map +1 -0
  27. package/dist/cjs/import/GodotSceneImporter.js +824 -0
  28. package/dist/cjs/import/GodotSceneImporter.js.map +1 -0
  29. package/dist/cjs/import/LDtkImporter.js +481 -0
  30. package/dist/cjs/import/LDtkImporter.js.map +1 -0
  31. package/dist/cjs/import/Live2DImporter.js +553 -0
  32. package/dist/cjs/import/Live2DImporter.js.map +1 -0
  33. package/dist/cjs/import/NdgFormat.js +499 -0
  34. package/dist/cjs/import/NdgFormat.js.map +1 -0
  35. package/dist/cjs/import/OgmoImporter.js +529 -0
  36. package/dist/cjs/import/OgmoImporter.js.map +1 -0
  37. package/dist/cjs/import/RPGMakerImporter.js +520 -0
  38. package/dist/cjs/import/RPGMakerImporter.js.map +1 -0
  39. package/dist/cjs/import/SceneImporter.js +449 -0
  40. package/dist/cjs/import/SceneImporter.js.map +1 -0
  41. package/dist/cjs/import/SpineImporter.js +583 -0
  42. package/dist/cjs/import/SpineImporter.js.map +1 -0
  43. package/dist/cjs/import/SpriterImporter.js +652 -0
  44. package/dist/cjs/import/SpriterImporter.js.map +1 -0
  45. package/dist/cjs/import/TiledMapImporter.js +859 -0
  46. package/dist/cjs/import/TiledMapImporter.js.map +1 -0
  47. package/dist/cjs/import/UnitySceneImporter.js +732 -0
  48. package/dist/cjs/import/UnitySceneImporter.js.map +1 -0
  49. package/dist/cjs/import/index.js +305 -0
  50. package/dist/cjs/import/index.js.map +1 -0
  51. package/dist/cjs/index.js +201 -0
  52. package/dist/cjs/index.js.map +1 -1
  53. package/dist/cjs/scripting/GraphToAST.js +567 -0
  54. package/dist/cjs/scripting/GraphToAST.js.map +1 -0
  55. package/dist/cjs/scripting/LanguageExporter.js +321 -0
  56. package/dist/cjs/scripting/LanguageExporter.js.map +1 -0
  57. package/dist/cjs/scripting/ScriptAST.js +67 -0
  58. package/dist/cjs/scripting/ScriptAST.js.map +1 -0
  59. package/dist/cjs/scripting/VisualScripting2.js +1140 -0
  60. package/dist/cjs/scripting/VisualScripting2.js.map +1 -0
  61. package/dist/cjs/scripting/exporters/CSharpExporter.js +503 -0
  62. package/dist/cjs/scripting/exporters/CSharpExporter.js.map +1 -0
  63. package/dist/cjs/scripting/exporters/GDScriptExporter.js +452 -0
  64. package/dist/cjs/scripting/exporters/GDScriptExporter.js.map +1 -0
  65. package/dist/cjs/scripting/exporters/LuaExporter.js +457 -0
  66. package/dist/cjs/scripting/exporters/LuaExporter.js.map +1 -0
  67. package/dist/cjs/scripting/exporters/PythonExporter.js +565 -0
  68. package/dist/cjs/scripting/exporters/PythonExporter.js.map +1 -0
  69. package/dist/cjs/scripting/exporters/RustExporter.js +525 -0
  70. package/dist/cjs/scripting/exporters/RustExporter.js.map +1 -0
  71. package/dist/cjs/scripting/exporters/TypeScriptExporter.js +570 -0
  72. package/dist/cjs/scripting/exporters/TypeScriptExporter.js.map +1 -0
  73. package/dist/cjs/systems/ParticleSystem2.js +1478 -0
  74. package/dist/cjs/systems/ParticleSystem2.js.map +1 -0
  75. package/dist/esm/ai/BehaviorTree.js +1186 -0
  76. package/dist/esm/ai/BehaviorTree.js.map +1 -0
  77. package/dist/esm/ai/StateMachine.js +767 -0
  78. package/dist/esm/ai/StateMachine.js.map +1 -0
  79. package/dist/esm/editor/ShaderGraph.js +1606 -0
  80. package/dist/esm/editor/ShaderGraph.js.map +1 -0
  81. package/dist/esm/editor/TimelineEditor.js +800 -0
  82. package/dist/esm/editor/TimelineEditor.js.map +1 -0
  83. package/dist/esm/export/GodotExporter.js +1100 -0
  84. package/dist/esm/export/GodotExporter.js.map +1 -0
  85. package/dist/esm/export/PlatformExporter.js +230 -0
  86. package/dist/esm/export/PlatformExporter.js.map +1 -0
  87. package/dist/esm/export/ThreeJSExporter.js +1114 -0
  88. package/dist/esm/export/ThreeJSExporter.js.map +1 -0
  89. package/dist/esm/export/UnityExporter.js +1191 -0
  90. package/dist/esm/export/UnityExporter.js.map +1 -0
  91. package/dist/esm/export/WebExporter.js +1033 -0
  92. package/dist/esm/export/WebExporter.js.map +1 -0
  93. package/dist/esm/export/index.js +44 -0
  94. package/dist/esm/export/index.js.map +1 -0
  95. package/dist/esm/import/AsepriteImporter.js +759 -0
  96. package/dist/esm/import/AsepriteImporter.js.map +1 -0
  97. package/dist/esm/import/DragonBonesImporter.js +496 -0
  98. package/dist/esm/import/DragonBonesImporter.js.map +1 -0
  99. package/dist/esm/import/GameMakerImporter.js +556 -0
  100. package/dist/esm/import/GameMakerImporter.js.map +1 -0
  101. package/dist/esm/import/GodotSceneImporter.js +822 -0
  102. package/dist/esm/import/GodotSceneImporter.js.map +1 -0
  103. package/dist/esm/import/LDtkImporter.js +479 -0
  104. package/dist/esm/import/LDtkImporter.js.map +1 -0
  105. package/dist/esm/import/Live2DImporter.js +550 -0
  106. package/dist/esm/import/Live2DImporter.js.map +1 -0
  107. package/dist/esm/import/NdgFormat.js +490 -0
  108. package/dist/esm/import/NdgFormat.js.map +1 -0
  109. package/dist/esm/import/OgmoImporter.js +526 -0
  110. package/dist/esm/import/OgmoImporter.js.map +1 -0
  111. package/dist/esm/import/RPGMakerImporter.js +517 -0
  112. package/dist/esm/import/RPGMakerImporter.js.map +1 -0
  113. package/dist/esm/import/SceneImporter.js +441 -0
  114. package/dist/esm/import/SceneImporter.js.map +1 -0
  115. package/dist/esm/import/SpineImporter.js +580 -0
  116. package/dist/esm/import/SpineImporter.js.map +1 -0
  117. package/dist/esm/import/SpriterImporter.js +649 -0
  118. package/dist/esm/import/SpriterImporter.js.map +1 -0
  119. package/dist/esm/import/TiledMapImporter.js +857 -0
  120. package/dist/esm/import/TiledMapImporter.js.map +1 -0
  121. package/dist/esm/import/UnitySceneImporter.js +730 -0
  122. package/dist/esm/import/UnitySceneImporter.js.map +1 -0
  123. package/dist/esm/import/index.js +279 -0
  124. package/dist/esm/import/index.js.map +1 -0
  125. package/dist/esm/index.js +36 -0
  126. package/dist/esm/index.js.map +1 -1
  127. package/dist/esm/scripting/GraphToAST.js +564 -0
  128. package/dist/esm/scripting/GraphToAST.js.map +1 -0
  129. package/dist/esm/scripting/LanguageExporter.js +311 -0
  130. package/dist/esm/scripting/LanguageExporter.js.map +1 -0
  131. package/dist/esm/scripting/ScriptAST.js +52 -0
  132. package/dist/esm/scripting/ScriptAST.js.map +1 -0
  133. package/dist/esm/scripting/VisualScripting2.js +1130 -0
  134. package/dist/esm/scripting/VisualScripting2.js.map +1 -0
  135. package/dist/esm/scripting/exporters/CSharpExporter.js +501 -0
  136. package/dist/esm/scripting/exporters/CSharpExporter.js.map +1 -0
  137. package/dist/esm/scripting/exporters/GDScriptExporter.js +450 -0
  138. package/dist/esm/scripting/exporters/GDScriptExporter.js.map +1 -0
  139. package/dist/esm/scripting/exporters/LuaExporter.js +455 -0
  140. package/dist/esm/scripting/exporters/LuaExporter.js.map +1 -0
  141. package/dist/esm/scripting/exporters/PythonExporter.js +563 -0
  142. package/dist/esm/scripting/exporters/PythonExporter.js.map +1 -0
  143. package/dist/esm/scripting/exporters/RustExporter.js +523 -0
  144. package/dist/esm/scripting/exporters/RustExporter.js.map +1 -0
  145. package/dist/esm/scripting/exporters/TypeScriptExporter.js +568 -0
  146. package/dist/esm/scripting/exporters/TypeScriptExporter.js.map +1 -0
  147. package/dist/esm/systems/ParticleSystem2.js +1471 -0
  148. package/dist/esm/systems/ParticleSystem2.js.map +1 -0
  149. package/dist/types/ai/BehaviorTree.d.ts +375 -0
  150. package/dist/types/ai/StateMachine.d.ts +296 -0
  151. package/dist/types/editor/ShaderGraph.d.ts +207 -0
  152. package/dist/types/editor/TimelineEditor.d.ts +393 -0
  153. package/dist/types/export/GodotExporter.d.ts +56 -0
  154. package/dist/types/export/PlatformExporter.d.ts +201 -0
  155. package/dist/types/export/ThreeJSExporter.d.ts +40 -0
  156. package/dist/types/export/UnityExporter.d.ts +69 -0
  157. package/dist/types/export/WebExporter.d.ts +58 -0
  158. package/dist/types/export/index.d.ts +19 -0
  159. package/dist/types/import/AsepriteImporter.d.ts +46 -0
  160. package/dist/types/import/DragonBonesImporter.d.ts +331 -0
  161. package/dist/types/import/GameMakerImporter.d.ts +375 -0
  162. package/dist/types/import/GodotSceneImporter.d.ts +34 -0
  163. package/dist/types/import/LDtkImporter.d.ts +177 -0
  164. package/dist/types/import/Live2DImporter.d.ts +237 -0
  165. package/dist/types/import/NdgFormat.d.ts +387 -0
  166. package/dist/types/import/OgmoImporter.d.ts +237 -0
  167. package/dist/types/import/RPGMakerImporter.d.ts +186 -0
  168. package/dist/types/import/SceneImporter.d.ts +276 -0
  169. package/dist/types/import/SpineImporter.d.ts +372 -0
  170. package/dist/types/import/SpriterImporter.d.ts +230 -0
  171. package/dist/types/import/TiledMapImporter.d.ts +57 -0
  172. package/dist/types/import/UnitySceneImporter.d.ts +87 -0
  173. package/dist/types/import/index.d.ts +59 -0
  174. package/dist/types/index.d.ts +29 -17
  175. package/dist/types/scripting/GraphToAST.d.ts +55 -0
  176. package/dist/types/scripting/LanguageExporter.d.ts +136 -0
  177. package/dist/types/scripting/ScriptAST.d.ts +312 -0
  178. package/dist/types/scripting/VisualScripting2.d.ts +353 -0
  179. package/dist/types/scripting/exporters/CSharpExporter.d.ts +44 -0
  180. package/dist/types/scripting/exporters/GDScriptExporter.d.ts +46 -0
  181. package/dist/types/scripting/exporters/LuaExporter.d.ts +46 -0
  182. package/dist/types/scripting/exporters/PythonExporter.d.ts +49 -0
  183. package/dist/types/scripting/exporters/RustExporter.d.ts +46 -0
  184. package/dist/types/scripting/exporters/TypeScriptExporter.d.ts +48 -0
  185. package/dist/types/scripting/exporters/index.d.ts +8 -0
  186. package/dist/types/scripting/index.d.ts +11 -0
  187. package/dist/types/systems/ParticleSystem2.d.ts +646 -0
  188. package/package.json +2 -2
@@ -0,0 +1,567 @@
1
+ 'use strict';
2
+
3
+ var NodeGraph = require('./NodeGraph.js');
4
+ var ScriptAST = require('./ScriptAST.js');
5
+
6
+ /* ────────────────────────────────────────────────────────────────
7
+ Graph to AST Converter
8
+
9
+ Converts visual scripting NodeGraph to language-agnostic AST
10
+ for export to any target language.
11
+ ──────────────────────────────────────────────────────────────── */
12
+ /* ── Type Mapping ─────────────────────────────────────────────── */
13
+ function portTypeToASTType(portType) {
14
+ const mapping = {
15
+ flow: 'void',
16
+ boolean: 'bool',
17
+ number: 'float',
18
+ string: 'string',
19
+ vec2: 'vector2',
20
+ color: 'color',
21
+ entity: 'entity',
22
+ any: 'any',
23
+ };
24
+ return ScriptAST.createType(mapping[portType] || 'any');
25
+ }
26
+ function variableTypeToASTType(type) {
27
+ return portTypeToASTType(type);
28
+ }
29
+ const defaultOptions = {
30
+ className: 'GeneratedScript',
31
+ useAsync: false,
32
+ includeNodeIds: false,
33
+ varPrefix: '_v',
34
+ };
35
+ function createContext(library, graph, options) {
36
+ return {
37
+ library,
38
+ graph,
39
+ options: { ...defaultOptions, ...options },
40
+ nodeVars: new Map(),
41
+ varCounter: 0,
42
+ visited: new Set(),
43
+ statements: [],
44
+ };
45
+ }
46
+ /* ── Main Converter ───────────────────────────────────────────── */
47
+ class GraphToAST {
48
+ constructor(library) {
49
+ this.library = library !== null && library !== void 0 ? library : NodeGraph.createDefaultNodeLibrary();
50
+ }
51
+ /**
52
+ * Convert a visual script graph to AST representation.
53
+ */
54
+ convert(graph, options = {}) {
55
+ const ctx = createContext(this.library, graph, options);
56
+ // Generate class with methods for each entry point
57
+ const cls = {
58
+ kind: 'class',
59
+ name: ctx.options.className,
60
+ baseClass: ctx.options.baseClass,
61
+ fields: this.convertVariables(graph.variables, ctx),
62
+ methods: [],
63
+ };
64
+ // Find all entry point nodes (event_start, event_update, etc.)
65
+ const entryNodes = this.findEntryNodes(graph);
66
+ for (const [entryType, nodes] of entryNodes) {
67
+ const methodName = this.entryTypeToMethodName(entryType);
68
+ const method = this.convertEntryPointsToMethod(methodName, nodes, ctx);
69
+ cls.methods.push(method);
70
+ }
71
+ // If no entry points, create a default execute method
72
+ if (cls.methods.length === 0) {
73
+ cls.methods.push(this.createEmptyMethod('execute'));
74
+ }
75
+ return {
76
+ name: graph.name,
77
+ imports: [],
78
+ classes: [cls],
79
+ };
80
+ }
81
+ /**
82
+ * Convert multiple graphs into a single script module.
83
+ */
84
+ convertMultiple(graphs, moduleName, options = {}) {
85
+ const classes = [];
86
+ for (const graph of graphs) {
87
+ const script = this.convert(graph, { ...options, className: graph.name });
88
+ classes.push(...script.classes);
89
+ }
90
+ return {
91
+ name: moduleName,
92
+ imports: [],
93
+ classes,
94
+ };
95
+ }
96
+ /* ── Entry Point Detection ──────────────────────────────────── */
97
+ findEntryNodes(graph) {
98
+ const entries = new Map();
99
+ const entryTypes = [
100
+ 'event_start',
101
+ 'event_update',
102
+ 'event_fixed_update',
103
+ 'event_input',
104
+ 'event_collision',
105
+ 'event_trigger',
106
+ 'event_custom',
107
+ ];
108
+ for (const node of graph.nodes) {
109
+ if (entryTypes.includes(node.type)) {
110
+ const existing = entries.get(node.type) || [];
111
+ existing.push(node);
112
+ entries.set(node.type, existing);
113
+ }
114
+ }
115
+ return entries;
116
+ }
117
+ entryTypeToMethodName(entryType) {
118
+ const mapping = {
119
+ event_start: 'onStart',
120
+ event_update: 'onUpdate',
121
+ event_fixed_update: 'onFixedUpdate',
122
+ event_input: 'onInput',
123
+ event_collision: 'onCollision',
124
+ event_trigger: 'onTrigger',
125
+ };
126
+ return mapping[entryType] || entryType.replace('event_', 'on_');
127
+ }
128
+ /* ── Variable Conversion ────────────────────────────────────── */
129
+ convertVariables(variables, _ctx) {
130
+ return variables.map((v) => ({
131
+ name: v.name,
132
+ fieldType: variableTypeToASTType(v.type),
133
+ initializer: v.value !== undefined ? ScriptAST.createLiteral(v.value, this.valueToASTType(v.value)) : undefined,
134
+ visibility: v.scope === 'global' ? 'public' : 'private',
135
+ isExported: v.scope === 'global',
136
+ }));
137
+ }
138
+ valueToASTType(value) {
139
+ if (typeof value === 'boolean')
140
+ return 'bool';
141
+ if (typeof value === 'number')
142
+ return Number.isInteger(value) ? 'int' : 'float';
143
+ if (typeof value === 'string')
144
+ return 'string';
145
+ return 'any';
146
+ }
147
+ /* ── Method Generation ──────────────────────────────────────── */
148
+ convertEntryPointsToMethod(methodName, entryNodes, ctx) {
149
+ var _a;
150
+ // Reset context for new method
151
+ ctx.nodeVars.clear();
152
+ ctx.varCounter = 0;
153
+ ctx.visited.clear();
154
+ ctx.statements = [];
155
+ // Parameters based on entry type
156
+ const params = this.getEntryParams(((_a = entryNodes[0]) === null || _a === void 0 ? void 0 : _a.type) || '');
157
+ // Process each entry node's flow
158
+ for (const entryNode of entryNodes) {
159
+ this.processNode(entryNode, ctx);
160
+ }
161
+ return {
162
+ kind: 'function',
163
+ name: methodName,
164
+ params,
165
+ returnType: ScriptAST.createType('void'),
166
+ body: ctx.statements,
167
+ visibility: 'public',
168
+ };
169
+ }
170
+ getEntryParams(entryType) {
171
+ switch (entryType) {
172
+ case 'event_update':
173
+ case 'event_fixed_update':
174
+ return [{ name: 'dt', paramType: ScriptAST.createType('float') }];
175
+ case 'event_collision':
176
+ return [{ name: 'other', paramType: ScriptAST.createType('entity') }];
177
+ default:
178
+ return [];
179
+ }
180
+ }
181
+ createEmptyMethod(name) {
182
+ return {
183
+ kind: 'function',
184
+ name,
185
+ params: [],
186
+ returnType: ScriptAST.createType('void'),
187
+ body: [],
188
+ visibility: 'public',
189
+ };
190
+ }
191
+ /* ── Node Processing ────────────────────────────────────────── */
192
+ processNode(node, ctx) {
193
+ if (ctx.visited.has(node.id))
194
+ return;
195
+ ctx.visited.add(node.id);
196
+ const def = ctx.library.get(node.type);
197
+ if (!def) {
198
+ ctx.statements.push({
199
+ kind: 'expressionStatement',
200
+ expression: ScriptAST.createCall('__unknown_node__', [ScriptAST.createLiteral(node.type, 'string')]),
201
+ comment: `Unknown node type: ${node.type}`,
202
+ });
203
+ return;
204
+ }
205
+ // Add debug comment if requested
206
+ if (ctx.options.includeNodeIds) {
207
+ const lastStmt = ctx.statements[ctx.statements.length - 1];
208
+ if (lastStmt) {
209
+ lastStmt.comment = `Node: ${node.id} (${node.type})`;
210
+ }
211
+ }
212
+ // Generate code based on node type
213
+ this.generateNodeCode(node, def, ctx);
214
+ // Follow flow connections
215
+ this.followFlowConnections(node, ctx);
216
+ }
217
+ generateNodeCode(node, def, ctx) {
218
+ switch (def.category) {
219
+ case 'flow':
220
+ this.generateFlowNode(node, def, ctx);
221
+ break;
222
+ case 'math':
223
+ this.generateMathNode(node, def, ctx);
224
+ break;
225
+ case 'logic':
226
+ this.generateLogicNode(node, def, ctx);
227
+ break;
228
+ case 'variable':
229
+ this.generateVariableNode(node, def, ctx);
230
+ break;
231
+ case 'entity':
232
+ this.generateEntityNode(node, def, ctx);
233
+ break;
234
+ case 'input':
235
+ this.generateInputNode(node, def, ctx);
236
+ break;
237
+ case 'audio':
238
+ this.generateAudioNode(node, def, ctx);
239
+ break;
240
+ default:
241
+ this.generateGenericNode(node, def, ctx);
242
+ }
243
+ }
244
+ /* ── Flow Node Generation ───────────────────────────────────── */
245
+ generateFlowNode(node, def, ctx) {
246
+ switch (node.type) {
247
+ case 'event_start':
248
+ case 'event_update':
249
+ // Entry nodes don't generate code themselves
250
+ break;
251
+ case 'if_else':
252
+ this.generateIfElse(node, ctx);
253
+ break;
254
+ case 'delay':
255
+ this.generateDelay(node, ctx);
256
+ break;
257
+ case 'sequence':
258
+ // Sequence just follows connections in order
259
+ break;
260
+ case 'for_loop':
261
+ this.generateForLoop(node, ctx);
262
+ break;
263
+ case 'while_loop':
264
+ this.generateWhileLoop(node, ctx);
265
+ break;
266
+ }
267
+ }
268
+ generateIfElse(node, ctx) {
269
+ const condExpr = this.resolveInputExpression(node, 'cond', ctx);
270
+ // Find true and false branch connections
271
+ const trueBranch = this.getFlowTargetNodes(node, 'true', ctx);
272
+ const falseBranch = this.getFlowTargetNodes(node, 'false', ctx);
273
+ // Generate true branch statements
274
+ const savedStatements = ctx.statements;
275
+ ctx.statements = [];
276
+ for (const target of trueBranch) {
277
+ this.processNode(target, ctx);
278
+ }
279
+ const thenStatements = ctx.statements;
280
+ // Generate false branch statements
281
+ ctx.statements = [];
282
+ for (const target of falseBranch) {
283
+ this.processNode(target, ctx);
284
+ }
285
+ const elseStatements = ctx.statements;
286
+ // Restore and add if statement
287
+ ctx.statements = savedStatements;
288
+ ctx.statements.push(ScriptAST.createIf(condExpr, thenStatements, elseStatements.length > 0 ? elseStatements : undefined));
289
+ }
290
+ generateDelay(node, ctx) {
291
+ const seconds = this.resolveInputExpression(node, 'seconds', ctx);
292
+ // Generate a yield/await based on target
293
+ if (ctx.options.useAsync) {
294
+ ctx.statements.push({
295
+ kind: 'await',
296
+ expression: ScriptAST.createCall('delay', [seconds]),
297
+ });
298
+ }
299
+ else {
300
+ ctx.statements.push({
301
+ kind: 'yield',
302
+ value: ScriptAST.createCall('WaitForSeconds', [seconds]),
303
+ });
304
+ }
305
+ }
306
+ generateForLoop(node, ctx) {
307
+ const startExpr = this.resolveInputExpression(node, 'start', ctx);
308
+ const endExpr = this.resolveInputExpression(node, 'end', ctx);
309
+ const loopVar = `${ctx.options.varPrefix}i${ctx.varCounter++}`;
310
+ const bodyTargets = this.getFlowTargetNodes(node, 'body', ctx);
311
+ const savedStatements = ctx.statements;
312
+ ctx.statements = [];
313
+ for (const target of bodyTargets) {
314
+ this.processNode(target, ctx);
315
+ }
316
+ const bodyStatements = ctx.statements;
317
+ ctx.statements = savedStatements;
318
+ ctx.statements.push({
319
+ kind: 'for',
320
+ init: ScriptAST.createVarDecl(loopVar, ScriptAST.createType('int'), startExpr),
321
+ condition: ScriptAST.createBinaryOp('<', ScriptAST.createIdentifier(loopVar), endExpr),
322
+ update: {
323
+ kind: 'unaryOp',
324
+ operator: '++',
325
+ operand: ScriptAST.createIdentifier(loopVar),
326
+ prefix: false,
327
+ },
328
+ body: bodyStatements,
329
+ });
330
+ }
331
+ generateWhileLoop(node, ctx) {
332
+ const condExpr = this.resolveInputExpression(node, 'condition', ctx);
333
+ const bodyTargets = this.getFlowTargetNodes(node, 'body', ctx);
334
+ const savedStatements = ctx.statements;
335
+ ctx.statements = [];
336
+ for (const target of bodyTargets) {
337
+ this.processNode(target, ctx);
338
+ }
339
+ const bodyStatements = ctx.statements;
340
+ ctx.statements = savedStatements;
341
+ ctx.statements.push({
342
+ kind: 'while',
343
+ condition: condExpr,
344
+ body: bodyStatements,
345
+ });
346
+ }
347
+ /* ── Math Node Generation ───────────────────────────────────── */
348
+ generateMathNode(node, _def, ctx) {
349
+ const varName = this.getOrCreateNodeVar(node, ctx);
350
+ let expr;
351
+ switch (node.type) {
352
+ case 'math_add':
353
+ expr = ScriptAST.createBinaryOp('+', this.resolveInputExpression(node, 'a', ctx), this.resolveInputExpression(node, 'b', ctx));
354
+ break;
355
+ case 'math_sub':
356
+ expr = ScriptAST.createBinaryOp('-', this.resolveInputExpression(node, 'a', ctx), this.resolveInputExpression(node, 'b', ctx));
357
+ break;
358
+ case 'math_mul':
359
+ expr = ScriptAST.createBinaryOp('*', this.resolveInputExpression(node, 'a', ctx), this.resolveInputExpression(node, 'b', ctx));
360
+ break;
361
+ case 'math_div':
362
+ expr = ScriptAST.createBinaryOp('/', this.resolveInputExpression(node, 'a', ctx), this.resolveInputExpression(node, 'b', ctx));
363
+ break;
364
+ case 'math_random':
365
+ expr = ScriptAST.createCall('random', [
366
+ this.resolveInputExpression(node, 'min', ctx),
367
+ this.resolveInputExpression(node, 'max', ctx),
368
+ ]);
369
+ break;
370
+ default:
371
+ expr = ScriptAST.createLiteral(0, 'float');
372
+ }
373
+ ctx.statements.push(ScriptAST.createVarDecl(varName, ScriptAST.createType('float'), expr));
374
+ }
375
+ /* ── Logic Node Generation ──────────────────────────────────── */
376
+ generateLogicNode(node, _def, ctx) {
377
+ const varName = this.getOrCreateNodeVar(node, ctx);
378
+ let expr;
379
+ switch (node.type) {
380
+ case 'compare_eq':
381
+ expr = ScriptAST.createBinaryOp('==', this.resolveInputExpression(node, 'a', ctx), this.resolveInputExpression(node, 'b', ctx));
382
+ break;
383
+ case 'compare_gt':
384
+ expr = ScriptAST.createBinaryOp('>', this.resolveInputExpression(node, 'a', ctx), this.resolveInputExpression(node, 'b', ctx));
385
+ break;
386
+ case 'compare_lt':
387
+ expr = ScriptAST.createBinaryOp('<', this.resolveInputExpression(node, 'a', ctx), this.resolveInputExpression(node, 'b', ctx));
388
+ break;
389
+ case 'logic_and':
390
+ expr = ScriptAST.createBinaryOp('&&', this.resolveInputExpression(node, 'a', ctx), this.resolveInputExpression(node, 'b', ctx));
391
+ break;
392
+ case 'logic_or':
393
+ expr = ScriptAST.createBinaryOp('||', this.resolveInputExpression(node, 'a', ctx), this.resolveInputExpression(node, 'b', ctx));
394
+ break;
395
+ case 'logic_not':
396
+ expr = {
397
+ kind: 'unaryOp',
398
+ operator: '!',
399
+ operand: this.resolveInputExpression(node, 'a', ctx),
400
+ prefix: true,
401
+ };
402
+ break;
403
+ default:
404
+ expr = ScriptAST.createLiteral(false, 'bool');
405
+ }
406
+ ctx.statements.push(ScriptAST.createVarDecl(varName, ScriptAST.createType('bool'), expr));
407
+ }
408
+ /* ── Variable Node Generation ───────────────────────────────── */
409
+ generateVariableNode(node, _def, ctx) {
410
+ const varName = node.inputValues['name'] || 'unnamed';
411
+ switch (node.type) {
412
+ case 'get_variable':
413
+ ctx.nodeVars.set(node.id, varName);
414
+ break;
415
+ case 'set_variable':
416
+ ctx.statements.push(ScriptAST.createAssignment(ScriptAST.createIdentifier(varName), this.resolveInputExpression(node, 'value', ctx)));
417
+ break;
418
+ }
419
+ }
420
+ /* ── Entity Node Generation ─────────────────────────────────── */
421
+ generateEntityNode(node, _def, ctx) {
422
+ switch (node.type) {
423
+ case 'get_position': {
424
+ const entity = this.resolveInputExpression(node, 'entity', ctx);
425
+ const xVar = this.getOrCreateNodeVar(node, ctx, '_x');
426
+ const yVar = this.getOrCreateNodeVar(node, ctx, '_y');
427
+ ctx.statements.push(ScriptAST.createVarDecl(xVar, ScriptAST.createType('float'), ScriptAST.createPropertyAccess(ScriptAST.createPropertyAccess(entity, 'position'), 'x')));
428
+ ctx.statements.push(ScriptAST.createVarDecl(yVar, ScriptAST.createType('float'), ScriptAST.createPropertyAccess(ScriptAST.createPropertyAccess(entity, 'position'), 'y')));
429
+ break;
430
+ }
431
+ case 'set_position': {
432
+ const entity = this.resolveInputExpression(node, 'entity', ctx);
433
+ const x = this.resolveInputExpression(node, 'x', ctx);
434
+ const y = this.resolveInputExpression(node, 'y', ctx);
435
+ ctx.statements.push(ScriptAST.createExprStatement(ScriptAST.createMethodCall(entity, 'setPosition', [x, y])));
436
+ break;
437
+ }
438
+ // Add more entity nodes as needed
439
+ }
440
+ }
441
+ /* ── Input Node Generation ──────────────────────────────────── */
442
+ generateInputNode(node, _def, ctx) {
443
+ switch (node.type) {
444
+ case 'input_action': {
445
+ const actionName = node.inputValues['action'] || 'action';
446
+ const varName = this.getOrCreateNodeVar(node, ctx);
447
+ ctx.statements.push(ScriptAST.createVarDecl(varName, ScriptAST.createType('any'), ScriptAST.createMethodCall(ScriptAST.createIdentifier('input'), 'getAction', [
448
+ ScriptAST.createLiteral(actionName, 'string'),
449
+ ])));
450
+ break;
451
+ }
452
+ }
453
+ }
454
+ /* ── Audio Node Generation ──────────────────────────────────── */
455
+ generateAudioNode(node, _def, ctx) {
456
+ switch (node.type) {
457
+ case 'play_sound': {
458
+ const soundId = this.resolveInputExpression(node, 'soundId', ctx);
459
+ const volume = this.resolveInputExpression(node, 'volume', ctx);
460
+ ctx.statements.push(ScriptAST.createExprStatement(ScriptAST.createMethodCall(ScriptAST.createIdentifier('audio'), 'play', [soundId, volume])));
461
+ break;
462
+ }
463
+ }
464
+ }
465
+ /* ── Generic Node Generation ────────────────────────────────── */
466
+ generateGenericNode(node, def, ctx) {
467
+ // Generate a function call for unknown/custom nodes
468
+ const args = [];
469
+ for (const port of def.ports) {
470
+ if (port.direction === 'input' && port.dataType !== 'flow') {
471
+ args.push(this.resolveInputExpression(node, port.id, ctx));
472
+ }
473
+ }
474
+ const hasOutput = def.ports.some((p) => p.direction === 'output' && p.dataType !== 'flow');
475
+ if (hasOutput) {
476
+ const varName = this.getOrCreateNodeVar(node, ctx);
477
+ ctx.statements.push(ScriptAST.createVarDecl(varName, ScriptAST.createType('any'), ScriptAST.createCall(node.type, args)));
478
+ }
479
+ else {
480
+ ctx.statements.push(ScriptAST.createExprStatement(ScriptAST.createCall(node.type, args)));
481
+ }
482
+ }
483
+ /* ── Helper Methods ─────────────────────────────────────────── */
484
+ resolveInputExpression(node, portId, ctx) {
485
+ var _a, _b;
486
+ // Check for incoming connection
487
+ const conn = ctx.graph.connections.find((c) => c.toNode === node.id && c.toPort === portId);
488
+ if (conn) {
489
+ // Get value from connected node's output
490
+ const sourceNode = ctx.graph.nodes.find((n) => n.id === conn.fromNode);
491
+ if (sourceNode) {
492
+ // Ensure source node has been processed
493
+ if (!ctx.visited.has(sourceNode.id)) {
494
+ this.processNode(sourceNode, ctx);
495
+ }
496
+ // Return reference to the generated variable
497
+ const varName = ctx.nodeVars.get(sourceNode.id);
498
+ if (varName) {
499
+ return ScriptAST.createIdentifier(varName);
500
+ }
501
+ }
502
+ }
503
+ // Fall back to static input value
504
+ const def = ctx.library.get(node.type);
505
+ const portDef = def === null || def === void 0 ? void 0 : def.ports.find((p) => p.id === portId);
506
+ const value = (_b = (_a = node.inputValues[portId]) !== null && _a !== void 0 ? _a : portDef === null || portDef === void 0 ? void 0 : portDef.defaultValue) !== null && _b !== void 0 ? _b : null;
507
+ return this.valueToExpression(value, portDef === null || portDef === void 0 ? void 0 : portDef.dataType);
508
+ }
509
+ valueToExpression(value, portType) {
510
+ if (value === null || value === undefined) {
511
+ return ScriptAST.createLiteral(null, 'any');
512
+ }
513
+ switch (typeof value) {
514
+ case 'boolean':
515
+ return ScriptAST.createLiteral(value, 'bool');
516
+ case 'number':
517
+ return ScriptAST.createLiteral(value, portType === 'number' ? 'float' : 'int');
518
+ case 'string':
519
+ return ScriptAST.createLiteral(value, 'string');
520
+ case 'object':
521
+ if ('x' in value && 'y' in value) {
522
+ return ScriptAST.createLiteral(value, 'vector2');
523
+ }
524
+ return ScriptAST.createLiteral(value, 'any');
525
+ default:
526
+ return ScriptAST.createLiteral(value, 'any');
527
+ }
528
+ }
529
+ getOrCreateNodeVar(node, ctx, suffix = '') {
530
+ const key = node.id + suffix;
531
+ if (!ctx.nodeVars.has(key)) {
532
+ ctx.nodeVars.set(key, `${ctx.options.varPrefix}${ctx.varCounter++}${suffix}`);
533
+ }
534
+ return ctx.nodeVars.get(key);
535
+ }
536
+ getFlowTargetNodes(node, portId, ctx) {
537
+ const connections = ctx.graph.connections.filter((c) => c.fromNode === node.id && c.fromPort === portId);
538
+ return connections
539
+ .map((c) => ctx.graph.nodes.find((n) => n.id === c.toNode))
540
+ .filter((n) => n !== undefined);
541
+ }
542
+ followFlowConnections(node, ctx) {
543
+ const def = ctx.library.get(node.type);
544
+ if (!def)
545
+ return;
546
+ // Find output flow ports
547
+ const flowPorts = def.ports.filter((p) => p.direction === 'output' && p.dataType === 'flow');
548
+ for (const port of flowPorts) {
549
+ // Skip special ports handled by specific node generators
550
+ if (['true', 'false', 'body'].includes(port.id))
551
+ continue;
552
+ const targets = this.getFlowTargetNodes(node, port.id, ctx);
553
+ for (const target of targets) {
554
+ this.processNode(target, ctx);
555
+ }
556
+ }
557
+ }
558
+ }
559
+ /* ── Export Convenience Functions ─────────────────────────────── */
560
+ function convertGraphToAST(graph, library, options) {
561
+ const converter = new GraphToAST(library);
562
+ return converter.convert(graph, options);
563
+ }
564
+
565
+ exports.GraphToAST = GraphToAST;
566
+ exports.convertGraphToAST = convertGraphToAST;
567
+ //# sourceMappingURL=GraphToAST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphToAST.js","sources":["../../../src/scripting/GraphToAST.ts"],"sourcesContent":[null],"names":["createType","createDefaultNodeLibrary","createLiteral","createCall","createIf","createVarDecl","createBinaryOp","createIdentifier","createAssignment","createPropertyAccess","createExprStatement","createMethodCall"],"mappings":"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"}