@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,490 @@
1
+ import { SceneImporter } from './SceneImporter.js';
2
+
3
+ /**
4
+ * @file NdgFormat.ts
5
+ * @description Nice2Dev Game (.ndg) Universal Format - Import/Export
6
+ * PRO-1.3: Scene Format Interoperability
7
+ *
8
+ * The .ndg format is Nice2Dev's native scene interchange format.
9
+ * Designed for:
10
+ * - Lossless round-trip conversion
11
+ * - Human-readable JSON structure
12
+ * - Full feature preservation
13
+ * - Version compatibility
14
+ *
15
+ * File Types:
16
+ * - .ndg - Single scene
17
+ * - .ndgp - Project with multiple scenes
18
+ * - .ndga - Asset bundle
19
+ */
20
+ // ============================================================
21
+ // NDG Format Version
22
+ // ============================================================
23
+ const NDG_FORMAT_VERSION = '1.0.0';
24
+ const NDG_MAGIC = 'NDG1';
25
+ // ============================================================
26
+ // NDG Importer
27
+ // ============================================================
28
+ class NdgImporter extends SceneImporter {
29
+ constructor() {
30
+ super('unity'); // Use unity as base, but this handles .ndg files
31
+ this.ndgFile = null;
32
+ }
33
+ canHandle(filePath) {
34
+ const ext = filePath.substring(filePath.lastIndexOf('.')).toLowerCase();
35
+ return ['.ndg', '.ndgp', '.ndga'].includes(ext);
36
+ }
37
+ async import(options) {
38
+ const startTime = Date.now();
39
+ this.options = options;
40
+ this.clearMessages();
41
+ const scenes = [];
42
+ const assets = [];
43
+ try {
44
+ const content = await this.readFile(options.sourcePath);
45
+ this.ndgFile = JSON.parse(content);
46
+ // Validate format
47
+ if (this.ndgFile.magic !== NDG_MAGIC) {
48
+ this.addError('INVALID_MAGIC', 'Invalid NDG file magic', options.sourcePath, undefined, true);
49
+ return { ...this.createEmptyResult(), errors: this.errors };
50
+ }
51
+ // Convert based on file type
52
+ if (this.ndgFile.type === 'scene') {
53
+ const scene = this.convertNdgSceneToNice(this.ndgFile.content);
54
+ scenes.push(scene);
55
+ }
56
+ else if (this.ndgFile.type === 'project') {
57
+ const project = this.ndgFile.content;
58
+ for (const ndgScene of project.scenes) {
59
+ scenes.push(this.convertNdgSceneToNice(ndgScene));
60
+ }
61
+ for (const ndgAsset of project.assets) {
62
+ assets.push(this.convertNdgAssetToNice(ndgAsset));
63
+ }
64
+ }
65
+ else if (this.ndgFile.type === 'asset-bundle') {
66
+ const bundle = this.ndgFile.content;
67
+ for (const ndgAsset of bundle.assets) {
68
+ assets.push(this.convertNdgAssetToNice(ndgAsset));
69
+ }
70
+ }
71
+ }
72
+ catch (error) {
73
+ this.addError('IMPORT_ERROR', `Failed to import: ${error}`, options.sourcePath, undefined, true);
74
+ }
75
+ return this.createResult(scenes, assets, startTime);
76
+ }
77
+ async parseFile(content, filePath) {
78
+ const stringContent = typeof content === 'string' ? content : new TextDecoder().decode(content);
79
+ try {
80
+ const ndgFile = JSON.parse(stringContent);
81
+ if (ndgFile.type === 'scene') {
82
+ const scene = ndgFile.content;
83
+ return this.convertNdgSceneToParsed(scene);
84
+ }
85
+ }
86
+ catch (_a) {
87
+ return null;
88
+ }
89
+ return null;
90
+ }
91
+ async validate(sourcePath) {
92
+ const errors = [];
93
+ if (!this.canHandle(sourcePath)) {
94
+ errors.push({
95
+ code: 'INVALID_FORMAT',
96
+ message: `File ${sourcePath} is not a valid NDG file`,
97
+ file: sourcePath,
98
+ fatal: true,
99
+ });
100
+ }
101
+ return errors;
102
+ }
103
+ // ----------------------------------------
104
+ // Conversion
105
+ // ----------------------------------------
106
+ convertNdgSceneToNice(ndgScene) {
107
+ return {
108
+ id: ndgScene.id,
109
+ name: ndgScene.name,
110
+ entities: ndgScene.entities.map((e) => this.convertNdgEntityToNice(e)),
111
+ settings: {
112
+ width: ndgScene.settings.width,
113
+ height: ndgScene.settings.height,
114
+ backgroundColor: ndgScene.settings.backgroundColor,
115
+ gravity: ndgScene.settings.gravity,
116
+ ...ndgScene.metadata,
117
+ },
118
+ };
119
+ }
120
+ convertNdgEntityToNice(ndgEntity) {
121
+ return {
122
+ id: ndgEntity.id,
123
+ name: ndgEntity.name,
124
+ components: [
125
+ {
126
+ type: 'Transform',
127
+ data: {
128
+ position: ndgEntity.transform.position,
129
+ rotation: ndgEntity.transform.rotation,
130
+ scale: ndgEntity.transform.scale,
131
+ },
132
+ },
133
+ ...ndgEntity.components.map((c) => ({
134
+ type: c.type,
135
+ data: c.data,
136
+ })),
137
+ ],
138
+ children: ndgEntity.children.map((c) => this.convertNdgEntityToNice(c)),
139
+ tags: ndgEntity.tags,
140
+ active: ndgEntity.active,
141
+ };
142
+ }
143
+ convertNdgAssetToNice(ndgAsset) {
144
+ return {
145
+ id: ndgAsset.id,
146
+ name: ndgAsset.name,
147
+ type: ndgAsset.type,
148
+ path: ndgAsset.path,
149
+ data: ndgAsset.data || {},
150
+ };
151
+ }
152
+ convertNdgSceneToParsed(ndgScene) {
153
+ var _a;
154
+ return {
155
+ name: ndgScene.name,
156
+ width: ndgScene.settings.width,
157
+ height: ndgScene.settings.height,
158
+ backgroundColor: ndgScene.settings.backgroundColor,
159
+ layers: ((_a = ndgScene.layers) === null || _a === void 0 ? void 0 : _a.map((l, i) => ({
160
+ name: l.name,
161
+ type: 'object',
162
+ visible: l.visible,
163
+ opacity: 1,
164
+ offsetX: 0,
165
+ offsetY: 0,
166
+ zIndex: l.zIndex,
167
+ properties: l.properties || {},
168
+ }))) || [],
169
+ entities: ndgScene.entities.map((e) => this.convertNdgEntityToParsed(e)),
170
+ properties: {
171
+ ...ndgScene.settings,
172
+ ...ndgScene.metadata,
173
+ },
174
+ };
175
+ }
176
+ convertNdgEntityToParsed(ndgEntity) {
177
+ return {
178
+ id: ndgEntity.id,
179
+ name: ndgEntity.name,
180
+ type: ndgEntity.tags[0] || 'Entity',
181
+ x: ndgEntity.transform.position.x,
182
+ y: ndgEntity.transform.position.y,
183
+ width: 1,
184
+ height: 1,
185
+ rotation: typeof ndgEntity.transform.rotation === 'number'
186
+ ? ndgEntity.transform.rotation
187
+ : ndgEntity.transform.rotation.z,
188
+ scaleX: ndgEntity.transform.scale.x,
189
+ scaleY: ndgEntity.transform.scale.y,
190
+ visible: ndgEntity.active,
191
+ components: ndgEntity.components.map((c) => ({
192
+ type: c.type,
193
+ data: c.data,
194
+ })),
195
+ children: ndgEntity.children.map((c) => this.convertNdgEntityToParsed(c)),
196
+ properties: {
197
+ tags: ndgEntity.tags,
198
+ layer: ndgEntity.layer,
199
+ ...ndgEntity.metadata,
200
+ },
201
+ };
202
+ }
203
+ async readFile(path) {
204
+ var _a;
205
+ if (typeof globalThis.process !== 'undefined' && ((_a = globalThis.process.versions) === null || _a === void 0 ? void 0 : _a.node)) {
206
+ const fs = await import('fs');
207
+ return fs.readFileSync(path, 'utf-8');
208
+ }
209
+ else if (typeof fetch !== 'undefined') {
210
+ const response = await fetch(path);
211
+ return response.text();
212
+ }
213
+ throw new Error('Unable to read file in current environment');
214
+ }
215
+ }
216
+ // ============================================================
217
+ // NDG Exporter
218
+ // ============================================================
219
+ class NdgExporter {
220
+ constructor() {
221
+ this.generatorName = 'Nice2Dev';
222
+ this.generatorVersion = '1.0.0';
223
+ }
224
+ /**
225
+ * Export a single scene to NDG format
226
+ */
227
+ exportScene(scene, source) {
228
+ const now = new Date().toISOString();
229
+ return {
230
+ magic: NDG_MAGIC,
231
+ version: NDG_FORMAT_VERSION,
232
+ type: 'scene',
233
+ created: now,
234
+ modified: now,
235
+ generator: {
236
+ name: this.generatorName,
237
+ version: this.generatorVersion,
238
+ },
239
+ source,
240
+ content: this.convertNiceSceneToNdg(scene),
241
+ };
242
+ }
243
+ /**
244
+ * Export a full project to NDG format
245
+ */
246
+ exportProject(project) {
247
+ const now = new Date().toISOString();
248
+ return {
249
+ magic: NDG_MAGIC,
250
+ version: NDG_FORMAT_VERSION,
251
+ type: 'project',
252
+ created: now,
253
+ modified: now,
254
+ generator: {
255
+ name: this.generatorName,
256
+ version: this.generatorVersion,
257
+ },
258
+ content: this.convertNiceProjectToNdg(project),
259
+ };
260
+ }
261
+ /**
262
+ * Export an asset bundle to NDG format
263
+ */
264
+ exportAssetBundle(name, assets) {
265
+ const now = new Date().toISOString();
266
+ return {
267
+ magic: NDG_MAGIC,
268
+ version: NDG_FORMAT_VERSION,
269
+ type: 'asset-bundle',
270
+ created: now,
271
+ modified: now,
272
+ generator: {
273
+ name: this.generatorName,
274
+ version: this.generatorVersion,
275
+ },
276
+ content: {
277
+ name,
278
+ assets: assets.map((a) => this.convertNiceAssetToNdg(a)),
279
+ },
280
+ };
281
+ }
282
+ /**
283
+ * Serialize NDG file to JSON string
284
+ */
285
+ serialize(ndgFile, pretty = true) {
286
+ return JSON.stringify(ndgFile, null, pretty ? 2 : undefined);
287
+ }
288
+ // ----------------------------------------
289
+ // Conversion
290
+ // ----------------------------------------
291
+ convertNiceSceneToNdg(scene) {
292
+ const settings = scene.settings || {};
293
+ return {
294
+ id: scene.id,
295
+ name: scene.name,
296
+ settings: {
297
+ width: settings.width || 1920,
298
+ height: settings.height || 1080,
299
+ backgroundColor: settings.backgroundColor || '#1a1a2e',
300
+ gravity: settings.gravity,
301
+ },
302
+ entities: scene.entities.map((e) => this.convertNiceEntityToNdg(e)),
303
+ metadata: this.extractMetadata(settings),
304
+ };
305
+ }
306
+ convertNiceEntityToNdg(entity) {
307
+ var _a;
308
+ const transformComp = entity.components.find((c) => c.type === 'Transform');
309
+ const transform = (transformComp === null || transformComp === void 0 ? void 0 : transformComp.data) || {};
310
+ return {
311
+ id: entity.id,
312
+ name: entity.name,
313
+ active: (_a = entity.active) !== null && _a !== void 0 ? _a : true,
314
+ tags: entity.tags || [],
315
+ transform: {
316
+ position: transform.position || { x: 0, y: 0 },
317
+ rotation: transform.rotation || 0,
318
+ scale: transform.scale || { x: 1, y: 1 },
319
+ },
320
+ components: entity.components
321
+ .filter((c) => c.type !== 'Transform')
322
+ .map((c) => {
323
+ var _a;
324
+ return ({
325
+ type: c.type,
326
+ enabled: true,
327
+ data: (_a = c.data) !== null && _a !== void 0 ? _a : {},
328
+ });
329
+ }),
330
+ children: (entity.children || []).map((c) => this.convertNiceEntityToNdg(c)),
331
+ };
332
+ }
333
+ convertNiceProjectToNdg(project) {
334
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
335
+ return {
336
+ name: project.name,
337
+ description: project.description,
338
+ settings: {
339
+ width: ((_a = project.settings) === null || _a === void 0 ? void 0 : _a.width) || 1920,
340
+ height: ((_b = project.settings) === null || _b === void 0 ? void 0 : _b.height) || 1080,
341
+ physics: ((_c = project.settings) === null || _c === void 0 ? void 0 : _c.physics)
342
+ ? {
343
+ gravity: project.settings.physics.gravity,
344
+ velocityIterations: (_d = project.settings.physics.velocityIterations) !== null && _d !== void 0 ? _d : 8,
345
+ positionIterations: (_e = project.settings.physics.positionIterations) !== null && _e !== void 0 ? _e : 3,
346
+ timeStep: (_f = project.settings.physics.timeStep) !== null && _f !== void 0 ? _f : 1 / 60,
347
+ }
348
+ : undefined,
349
+ audio: ((_g = project.settings) === null || _g === void 0 ? void 0 : _g.audio)
350
+ ? {
351
+ masterVolume: project.settings.audio.masterVolume,
352
+ musicVolume: (_h = project.settings.audio.musicVolume) !== null && _h !== void 0 ? _h : 1,
353
+ sfxVolume: (_j = project.settings.audio.sfxVolume) !== null && _j !== void 0 ? _j : 1,
354
+ audioChannels: (_k = project.settings.audio.audioChannels) !== null && _k !== void 0 ? _k : 32,
355
+ }
356
+ : undefined,
357
+ rendering: ((_l = project.settings) === null || _l === void 0 ? void 0 : _l.rendering)
358
+ ? {
359
+ pixelPerfect: (_m = project.settings.rendering.pixelPerfect) !== null && _m !== void 0 ? _m : project.settings.rendering.pixelArt,
360
+ antialiasing: (_o = project.settings.rendering.antialiasing) !== null && _o !== void 0 ? _o : project.settings.rendering.antialias,
361
+ vsync: (_p = project.settings.rendering.vsync) !== null && _p !== void 0 ? _p : true,
362
+ backgroundColor: (_q = project.settings.rendering.backgroundColor) !== null && _q !== void 0 ? _q : '#000000',
363
+ }
364
+ : undefined,
365
+ input: (_r = project.settings) === null || _r === void 0 ? void 0 : _r.input,
366
+ },
367
+ scenes: project.scenes.map((s) => this.convertNiceSceneToNdg(s)),
368
+ assets: project.assets.map((a) => this.convertNiceAssetToNdg(a)),
369
+ };
370
+ }
371
+ convertNiceAssetToNdg(asset) {
372
+ return {
373
+ id: asset.id,
374
+ name: asset.name,
375
+ type: asset.type,
376
+ path: asset.path,
377
+ data: asset.data,
378
+ };
379
+ }
380
+ extractMetadata(settings) {
381
+ const knownKeys = ['width', 'height', 'backgroundColor', 'gravity'];
382
+ const metadata = {};
383
+ for (const [key, value] of Object.entries(settings)) {
384
+ if (!knownKeys.includes(key)) {
385
+ metadata[key] = value;
386
+ }
387
+ }
388
+ return Object.keys(metadata).length > 0 ? metadata : {};
389
+ }
390
+ }
391
+ // ============================================================
392
+ // Bidirectional Sync Helper
393
+ // ============================================================
394
+ class NdgBidirectionalSync {
395
+ constructor() {
396
+ this.importer = new NdgImporter();
397
+ this.exporter = new NdgExporter();
398
+ }
399
+ /**
400
+ * Import and track original data for round-trip
401
+ */
402
+ async importWithTracking(sourcePath, sourceType) {
403
+ const result = await this.importer.import({ sourcePath });
404
+ const source = {
405
+ type: sourceType,
406
+ path: sourcePath,
407
+ importedAt: new Date().toISOString(),
408
+ // Could also preserve original data here for lossless round-trip
409
+ };
410
+ return {
411
+ scenes: result.scenes,
412
+ assets: result.assets,
413
+ source,
414
+ };
415
+ }
416
+ /**
417
+ * Export with source tracking for later re-import
418
+ */
419
+ exportWithTracking(scene, source) {
420
+ const ndgFile = this.exporter.exportScene(scene, source);
421
+ return this.exporter.serialize(ndgFile);
422
+ }
423
+ /**
424
+ * Check if NDG file has modifications compared to source
425
+ */
426
+ hasModifications(ndgFile) {
427
+ return ndgFile.created !== ndgFile.modified;
428
+ }
429
+ /**
430
+ * Update the modified timestamp
431
+ */
432
+ touch(ndgFile) {
433
+ return {
434
+ ...ndgFile,
435
+ modified: new Date().toISOString(),
436
+ };
437
+ }
438
+ }
439
+ // ============================================================
440
+ // Factory Functions
441
+ // ============================================================
442
+ /**
443
+ * Create NDG importer
444
+ */
445
+ function createNdgImporter() {
446
+ return new NdgImporter();
447
+ }
448
+ /**
449
+ * Create NDG exporter
450
+ */
451
+ function createNdgExporter() {
452
+ return new NdgExporter();
453
+ }
454
+ /**
455
+ * Create bidirectional sync helper
456
+ */
457
+ function createBidirectionalSync() {
458
+ return new NdgBidirectionalSync();
459
+ }
460
+ /**
461
+ * Quick export scene to NDG JSON string
462
+ */
463
+ function sceneToNdg(scene, pretty = true) {
464
+ const exporter = new NdgExporter();
465
+ const ndgFile = exporter.exportScene(scene);
466
+ return exporter.serialize(ndgFile, pretty);
467
+ }
468
+ /**
469
+ * Quick import NDG JSON string to scene
470
+ */
471
+ async function ndgToScene(ndgJson) {
472
+ try {
473
+ const ndgFile = JSON.parse(ndgJson);
474
+ if (ndgFile.magic !== NDG_MAGIC || ndgFile.type !== 'scene') {
475
+ return null;
476
+ }
477
+ const importer = new NdgImporter();
478
+ const result = await importer.parseFile(ndgJson, 'inline.ndg');
479
+ if (result && 'name' in result) {
480
+ return importer['convertParsedToNiceScene'](result);
481
+ }
482
+ return null;
483
+ }
484
+ catch (_a) {
485
+ return null;
486
+ }
487
+ }
488
+
489
+ export { NdgBidirectionalSync, NdgExporter, NdgImporter, createBidirectionalSync, createNdgExporter, createNdgImporter, ndgToScene, sceneToNdg };
490
+ //# sourceMappingURL=NdgFormat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NdgFormat.js","sources":["../../../src/import/NdgFormat.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}