@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,237 @@
1
+ /**
2
+ * @file Live2DImporter.ts
3
+ * @description Live2D Cubism Model Importer
4
+ * PRO-1.3: Scene Format Interoperability
5
+ *
6
+ * Live2D is a technology for animating 2D characters.
7
+ * Supports Cubism 3.0+ model format.
8
+ *
9
+ * File Types:
10
+ * - *.model3.json - Model settings
11
+ * - *.moc3 - Model data (binary)
12
+ * - *.physics3.json - Physics settings
13
+ * - *.pose3.json - Pose settings
14
+ * - *.exp3.json - Expression settings
15
+ * - *.motion3.json - Motion data
16
+ * - *.cdi3.json - Display info
17
+ */
18
+ import { SceneImporter, ImportOptions, ImportResult, ParsedScene, ImportError } from './SceneImporter';
19
+ /** Live2D Model Settings (model3.json) */
20
+ export interface L2DModelSettings {
21
+ Version: number;
22
+ FileReferences: L2DFileReferences;
23
+ Groups?: L2DGroup[];
24
+ HitAreas?: L2DHitArea[];
25
+ }
26
+ export interface L2DFileReferences {
27
+ Moc: string;
28
+ Textures: string[];
29
+ Physics?: string;
30
+ Pose?: string;
31
+ DisplayInfo?: string;
32
+ Expressions?: L2DExpressionRef[];
33
+ Motions?: Record<string, L2DMotionRef[]>;
34
+ UserData?: string;
35
+ }
36
+ export interface L2DExpressionRef {
37
+ Name: string;
38
+ File: string;
39
+ }
40
+ export interface L2DMotionRef {
41
+ File: string;
42
+ FadeInTime?: number;
43
+ FadeOutTime?: number;
44
+ Sound?: string;
45
+ MotionSync?: string;
46
+ }
47
+ export interface L2DGroup {
48
+ Target: 'Parameter' | 'Part';
49
+ Name: string;
50
+ Ids: string[];
51
+ }
52
+ export interface L2DHitArea {
53
+ Id: string;
54
+ Name: string;
55
+ }
56
+ /** Live2D Physics Settings (physics3.json) */
57
+ export interface L2DPhysics {
58
+ Version: number;
59
+ Meta: L2DPhysicsMeta;
60
+ PhysicsSettings: L2DPhysicsSetting[];
61
+ }
62
+ export interface L2DPhysicsMeta {
63
+ PhysicsSettingCount: number;
64
+ TotalInputCount: number;
65
+ TotalOutputCount: number;
66
+ VertexCount: number;
67
+ EffectiveForces?: {
68
+ Gravity: {
69
+ X: number;
70
+ Y: number;
71
+ };
72
+ Wind: {
73
+ X: number;
74
+ Y: number;
75
+ };
76
+ };
77
+ PhysicsDictionary?: L2DPhysicsDictEntry[];
78
+ }
79
+ export interface L2DPhysicsDictEntry {
80
+ Id: string;
81
+ Name: string;
82
+ }
83
+ export interface L2DPhysicsSetting {
84
+ Id: string;
85
+ Input: L2DPhysicsInput[];
86
+ Output: L2DPhysicsOutput[];
87
+ Vertices: L2DPhysicsVertex[];
88
+ Normalization: L2DPhysicsNormalization;
89
+ }
90
+ export interface L2DPhysicsInput {
91
+ Source: L2DPhysicsParameter;
92
+ Weight: number;
93
+ Type: 'X' | 'Y' | 'Angle';
94
+ Reflect: boolean;
95
+ }
96
+ export interface L2DPhysicsOutput {
97
+ Destination: L2DPhysicsParameter;
98
+ VertexIndex: number;
99
+ Scale: number;
100
+ Weight: number;
101
+ Type: 'X' | 'Y' | 'Angle';
102
+ Reflect: boolean;
103
+ }
104
+ export interface L2DPhysicsParameter {
105
+ Target: 'Parameter' | 'Part';
106
+ Id: string;
107
+ }
108
+ export interface L2DPhysicsVertex {
109
+ Position: {
110
+ X: number;
111
+ Y: number;
112
+ };
113
+ Mobility: number;
114
+ Delay: number;
115
+ Acceleration: number;
116
+ Radius: number;
117
+ }
118
+ export interface L2DPhysicsNormalization {
119
+ Position: L2DPhysicsNormValue;
120
+ Angle: L2DPhysicsNormValue;
121
+ }
122
+ export interface L2DPhysicsNormValue {
123
+ Minimum: number;
124
+ Default: number;
125
+ Maximum: number;
126
+ }
127
+ /** Live2D Pose Settings (pose3.json) */
128
+ export interface L2DPose {
129
+ Version: number;
130
+ Type: 'Live2D Pose';
131
+ FadeInTime?: number;
132
+ Groups: L2DPoseGroup[][];
133
+ }
134
+ export interface L2DPoseGroup {
135
+ Id: string;
136
+ Link?: string[];
137
+ }
138
+ /** Live2D Expression (exp3.json) */
139
+ export interface L2DExpression {
140
+ Version: number;
141
+ Type: 'Live2D Expression';
142
+ FadeInTime?: number;
143
+ FadeOutTime?: number;
144
+ Parameters?: L2DExpressionParameter[];
145
+ }
146
+ export interface L2DExpressionParameter {
147
+ Id: string;
148
+ Value: number;
149
+ Blend?: 'Add' | 'Multiply' | 'Overwrite';
150
+ }
151
+ /** Live2D Motion (motion3.json) */
152
+ export interface L2DMotion {
153
+ Version: number;
154
+ Meta: L2DMotionMeta;
155
+ Curves: L2DMotionCurve[];
156
+ UserData?: L2DUserDataEvent[];
157
+ }
158
+ export interface L2DMotionMeta {
159
+ Duration: number;
160
+ Fps: number;
161
+ Loop?: boolean;
162
+ AreBeziersRestricted?: boolean;
163
+ CurveCount: number;
164
+ TotalSegmentCount: number;
165
+ TotalPointCount: number;
166
+ UserDataCount?: number;
167
+ TotalUserDataSize?: number;
168
+ }
169
+ export interface L2DMotionCurve {
170
+ Target: 'Model' | 'Parameter' | 'PartOpacity';
171
+ Id: string;
172
+ FadeInTime?: number;
173
+ FadeOutTime?: number;
174
+ Segments: number[];
175
+ }
176
+ export interface L2DUserDataEvent {
177
+ Time: number;
178
+ Value: string;
179
+ }
180
+ /** Live2D Display Info (cdi3.json) */
181
+ export interface L2DDisplayInfo {
182
+ Version: number;
183
+ Parameters?: L2DParameterInfo[];
184
+ ParameterGroups?: L2DParameterGroupInfo[];
185
+ Parts?: L2DPartInfo[];
186
+ }
187
+ export interface L2DParameterInfo {
188
+ Id: string;
189
+ GroupId?: string;
190
+ Name?: string;
191
+ }
192
+ export interface L2DParameterGroupInfo {
193
+ Id: string;
194
+ GroupId?: string;
195
+ Name?: string;
196
+ }
197
+ export interface L2DPartInfo {
198
+ Id: string;
199
+ Name?: string;
200
+ }
201
+ /** Live2D User Data */
202
+ export interface L2DUserData {
203
+ Version: number;
204
+ Meta: {
205
+ UserDataCount: number;
206
+ TotalUserDataSize: number;
207
+ };
208
+ UserData: L2DUserDataEntry[];
209
+ }
210
+ export interface L2DUserDataEntry {
211
+ Target: 'ArtMesh' | 'DrawOrder';
212
+ Id: string;
213
+ Value: string;
214
+ }
215
+ export declare class Live2DImporter extends SceneImporter {
216
+ private model;
217
+ private physics;
218
+ private pose;
219
+ private displayInfo;
220
+ private expressions;
221
+ private motions;
222
+ constructor();
223
+ canHandle(filePath: string): boolean;
224
+ import(options: ImportOptions): Promise<ImportResult>;
225
+ parseFile(content: string | ArrayBuffer, filePath: string): Promise<ParsedScene | null>;
226
+ validate(sourcePath: string): Promise<ImportError[]>;
227
+ private loadDependencies;
228
+ private convertModelToScene;
229
+ private convertModelToParsed;
230
+ private convertMotionCurves;
231
+ private getSegmentTypes;
232
+ private countKeyframes;
233
+ private readFile;
234
+ private getBaseDirectory;
235
+ private extractFileName;
236
+ }
237
+ export declare function createLive2DImporter(): Live2DImporter;
@@ -0,0 +1,387 @@
1
+ /**
2
+ * @file NdgFormat.ts
3
+ * @description Nice2Dev Game (.ndg) Universal Format - Import/Export
4
+ * PRO-1.3: Scene Format Interoperability
5
+ *
6
+ * The .ndg format is Nice2Dev's native scene interchange format.
7
+ * Designed for:
8
+ * - Lossless round-trip conversion
9
+ * - Human-readable JSON structure
10
+ * - Full feature preservation
11
+ * - Version compatibility
12
+ *
13
+ * File Types:
14
+ * - .ndg - Single scene
15
+ * - .ndgp - Project with multiple scenes
16
+ * - .ndga - Asset bundle
17
+ */
18
+ import { SceneImporter, ImportOptions, ImportResult, ParsedScene, ParsedAsset, ImportError, ImportSourceType } from './SceneImporter';
19
+ import type { NiceProject, NiceScene, NiceAsset } from '../export/PlatformExporter';
20
+ declare const NDG_MAGIC = "NDG1";
21
+ export interface NdgFile {
22
+ /** Format magic identifier */
23
+ magic: typeof NDG_MAGIC;
24
+ /** Format version */
25
+ version: string;
26
+ /** File type */
27
+ type: 'scene' | 'project' | 'asset-bundle';
28
+ /** Creation timestamp */
29
+ created: string;
30
+ /** Last modified timestamp */
31
+ modified: string;
32
+ /** Generator info */
33
+ generator: NdgGenerator;
34
+ /** Original source info (if imported) */
35
+ source?: NdgSource;
36
+ /** File content */
37
+ content: NdgScene | NdgProject | NdgAssetBundle;
38
+ }
39
+ export interface NdgGenerator {
40
+ name: string;
41
+ version: string;
42
+ platform?: string;
43
+ }
44
+ export interface NdgSource {
45
+ /** Original format type */
46
+ type: ImportSourceType | 'unknown';
47
+ /** Original file path */
48
+ path: string;
49
+ /** Import timestamp */
50
+ importedAt: string;
51
+ /** Original format version */
52
+ formatVersion?: string;
53
+ /** Preserved original data */
54
+ originalData?: Record<string, unknown>;
55
+ }
56
+ export interface NdgProject {
57
+ /** Project name */
58
+ name: string;
59
+ /** Project description */
60
+ description?: string;
61
+ /** Project settings */
62
+ settings: NdgProjectSettings;
63
+ /** All scenes */
64
+ scenes: NdgScene[];
65
+ /** All assets */
66
+ assets: NdgAsset[];
67
+ /** Global scripts */
68
+ scripts?: NdgScript[];
69
+ /** Project metadata */
70
+ metadata?: Record<string, unknown>;
71
+ }
72
+ export interface NdgProjectSettings {
73
+ /** Default resolution */
74
+ width: number;
75
+ height: number;
76
+ /** Target frame rate */
77
+ targetFPS?: number;
78
+ /** Physics settings */
79
+ physics?: NdgPhysicsSettings;
80
+ /** Audio settings */
81
+ audio?: NdgAudioSettings;
82
+ /** Rendering settings */
83
+ rendering?: NdgRenderingSettings;
84
+ /** Input mappings */
85
+ input?: NdgInputSettings;
86
+ /** Custom settings */
87
+ custom?: Record<string, unknown>;
88
+ }
89
+ export interface NdgPhysicsSettings {
90
+ gravity: {
91
+ x: number;
92
+ y: number;
93
+ };
94
+ velocityIterations: number;
95
+ positionIterations: number;
96
+ timeStep: number;
97
+ pixelsPerMeter?: number;
98
+ }
99
+ export interface NdgAudioSettings {
100
+ masterVolume: number;
101
+ musicVolume: number;
102
+ sfxVolume: number;
103
+ audioChannels: number;
104
+ }
105
+ export interface NdgRenderingSettings {
106
+ pixelPerfect: boolean;
107
+ antialiasing: boolean;
108
+ vsync: boolean;
109
+ maxFPS?: number;
110
+ backgroundColor: string;
111
+ }
112
+ export interface NdgInputSettings {
113
+ actions: NdgInputAction[];
114
+ }
115
+ export interface NdgInputAction {
116
+ name: string;
117
+ keys?: string[];
118
+ gamepadButtons?: number[];
119
+ mouseButtons?: number[];
120
+ }
121
+ export interface NdgScene {
122
+ /** Scene ID */
123
+ id: string;
124
+ /** Scene name */
125
+ name: string;
126
+ /** Scene settings */
127
+ settings: NdgSceneSettings;
128
+ /** All entities */
129
+ entities: NdgEntity[];
130
+ /** Layers definition */
131
+ layers?: NdgLayerDef[];
132
+ /** Tilemaps */
133
+ tilemaps?: NdgTilemap[];
134
+ /** Scene-level scripts */
135
+ scripts?: NdgScript[];
136
+ /** Scene metadata */
137
+ metadata?: Record<string, unknown>;
138
+ }
139
+ export interface NdgSceneSettings {
140
+ width: number;
141
+ height: number;
142
+ backgroundColor: string;
143
+ gravity?: {
144
+ x: number;
145
+ y: number;
146
+ };
147
+ bounds?: {
148
+ left: number;
149
+ top: number;
150
+ right: number;
151
+ bottom: number;
152
+ };
153
+ camera?: NdgCameraSettings;
154
+ lighting?: NdgLightingSettings;
155
+ }
156
+ export interface NdgCameraSettings {
157
+ zoom: number;
158
+ bounds?: {
159
+ left: number;
160
+ top: number;
161
+ right: number;
162
+ bottom: number;
163
+ };
164
+ followTarget?: string;
165
+ smoothing?: number;
166
+ }
167
+ export interface NdgLightingSettings {
168
+ ambientColor: string;
169
+ ambientIntensity: number;
170
+ }
171
+ export interface NdgLayerDef {
172
+ id: string;
173
+ name: string;
174
+ zIndex: number;
175
+ visible: boolean;
176
+ locked: boolean;
177
+ parallax?: {
178
+ x: number;
179
+ y: number;
180
+ };
181
+ properties?: Record<string, unknown>;
182
+ }
183
+ export interface NdgEntity {
184
+ /** Entity ID */
185
+ id: string;
186
+ /** Entity name */
187
+ name: string;
188
+ /** Active state */
189
+ active: boolean;
190
+ /** Tags */
191
+ tags: string[];
192
+ /** Layer reference */
193
+ layer?: string;
194
+ /** Transform */
195
+ transform: NdgTransform;
196
+ /** Components */
197
+ components: NdgComponent[];
198
+ /** Children */
199
+ children: NdgEntity[];
200
+ /** Prefab reference */
201
+ prefab?: NdgPrefabRef;
202
+ /** Entity metadata */
203
+ metadata?: Record<string, unknown>;
204
+ }
205
+ export interface NdgTransform {
206
+ position: {
207
+ x: number;
208
+ y: number;
209
+ z?: number;
210
+ };
211
+ rotation: number | {
212
+ x: number;
213
+ y: number;
214
+ z: number;
215
+ };
216
+ scale: {
217
+ x: number;
218
+ y: number;
219
+ z?: number;
220
+ };
221
+ }
222
+ export interface NdgComponent {
223
+ /** Component type */
224
+ type: string;
225
+ /** Enabled state */
226
+ enabled: boolean;
227
+ /** Component data */
228
+ data: Record<string, unknown>;
229
+ /** Script reference (for script components) */
230
+ script?: NdgScriptRef;
231
+ }
232
+ export interface NdgPrefabRef {
233
+ id: string;
234
+ path?: string;
235
+ overrides?: NdgPrefabOverride[];
236
+ }
237
+ export interface NdgPrefabOverride {
238
+ path: string;
239
+ value: unknown;
240
+ }
241
+ export interface NdgScript {
242
+ id: string;
243
+ name: string;
244
+ language: 'typescript' | 'javascript' | 'gdscript' | 'lua' | 'csharp' | 'visual';
245
+ source: string;
246
+ compiled?: string;
247
+ dependencies?: string[];
248
+ }
249
+ export interface NdgScriptRef {
250
+ id: string;
251
+ path?: string;
252
+ parameters?: Record<string, unknown>;
253
+ }
254
+ export interface NdgTilemap {
255
+ id: string;
256
+ name: string;
257
+ tilesetId: string;
258
+ width: number;
259
+ height: number;
260
+ tileWidth: number;
261
+ tileHeight: number;
262
+ layers: NdgTilemapLayer[];
263
+ }
264
+ export interface NdgTilemapLayer {
265
+ id: string;
266
+ name: string;
267
+ data: number[];
268
+ visible: boolean;
269
+ opacity: number;
270
+ collisionEnabled?: boolean;
271
+ }
272
+ export interface NdgAsset {
273
+ /** Asset ID */
274
+ id: string;
275
+ /** Asset name */
276
+ name: string;
277
+ /** Asset type */
278
+ type: 'texture' | 'audio' | 'font' | 'shader' | 'animation' | 'tileset' | 'prefab' | 'script' | 'data';
279
+ /** File path */
280
+ path: string;
281
+ /** Import settings */
282
+ importSettings?: NdgAssetImportSettings;
283
+ /** Asset-specific data */
284
+ data?: Record<string, unknown>;
285
+ /** Asset metadata */
286
+ metadata?: Record<string, unknown>;
287
+ }
288
+ export interface NdgAssetImportSettings {
289
+ compression?: 'none' | 'lz4' | 'zstd';
290
+ filterMode?: 'point' | 'bilinear' | 'trilinear';
291
+ wrapMode?: 'clamp' | 'repeat' | 'mirror';
292
+ generateMipmaps?: boolean;
293
+ maxSize?: number;
294
+ loadType?: 'decompress-on-load' | 'compressed-in-memory' | 'streaming';
295
+ quality?: number;
296
+ frameRate?: number;
297
+ loop?: boolean;
298
+ }
299
+ export interface NdgAssetBundle {
300
+ name: string;
301
+ assets: NdgAsset[];
302
+ compression?: 'none' | 'lz4' | 'zstd';
303
+ }
304
+ export declare class NdgImporter extends SceneImporter {
305
+ private ndgFile;
306
+ constructor();
307
+ canHandle(filePath: string): boolean;
308
+ import(options: ImportOptions): Promise<ImportResult>;
309
+ parseFile(content: string | ArrayBuffer, filePath: string): Promise<ParsedScene | ParsedAsset | null>;
310
+ validate(sourcePath: string): Promise<ImportError[]>;
311
+ private convertNdgSceneToNice;
312
+ private convertNdgEntityToNice;
313
+ private convertNdgAssetToNice;
314
+ private convertNdgSceneToParsed;
315
+ private convertNdgEntityToParsed;
316
+ private readFile;
317
+ }
318
+ export declare class NdgExporter {
319
+ private generatorName;
320
+ private generatorVersion;
321
+ /**
322
+ * Export a single scene to NDG format
323
+ */
324
+ exportScene(scene: NiceScene, source?: NdgSource): NdgFile;
325
+ /**
326
+ * Export a full project to NDG format
327
+ */
328
+ exportProject(project: NiceProject): NdgFile;
329
+ /**
330
+ * Export an asset bundle to NDG format
331
+ */
332
+ exportAssetBundle(name: string, assets: NiceAsset[]): NdgFile;
333
+ /**
334
+ * Serialize NDG file to JSON string
335
+ */
336
+ serialize(ndgFile: NdgFile, pretty?: boolean): string;
337
+ private convertNiceSceneToNdg;
338
+ private convertNiceEntityToNdg;
339
+ private convertNiceProjectToNdg;
340
+ private convertNiceAssetToNdg;
341
+ private extractMetadata;
342
+ }
343
+ export declare class NdgBidirectionalSync {
344
+ private importer;
345
+ private exporter;
346
+ /**
347
+ * Import and track original data for round-trip
348
+ */
349
+ importWithTracking(sourcePath: string, sourceType: ImportSourceType): Promise<{
350
+ scenes: NiceScene[];
351
+ assets: NiceAsset[];
352
+ source: NdgSource;
353
+ }>;
354
+ /**
355
+ * Export with source tracking for later re-import
356
+ */
357
+ exportWithTracking(scene: NiceScene, source?: NdgSource): string;
358
+ /**
359
+ * Check if NDG file has modifications compared to source
360
+ */
361
+ hasModifications(ndgFile: NdgFile): boolean;
362
+ /**
363
+ * Update the modified timestamp
364
+ */
365
+ touch(ndgFile: NdgFile): NdgFile;
366
+ }
367
+ /**
368
+ * Create NDG importer
369
+ */
370
+ export declare function createNdgImporter(): NdgImporter;
371
+ /**
372
+ * Create NDG exporter
373
+ */
374
+ export declare function createNdgExporter(): NdgExporter;
375
+ /**
376
+ * Create bidirectional sync helper
377
+ */
378
+ export declare function createBidirectionalSync(): NdgBidirectionalSync;
379
+ /**
380
+ * Quick export scene to NDG JSON string
381
+ */
382
+ export declare function sceneToNdg(scene: NiceScene, pretty?: boolean): string;
383
+ /**
384
+ * Quick import NDG JSON string to scene
385
+ */
386
+ export declare function ndgToScene(ndgJson: string): Promise<NiceScene | null>;
387
+ export {};