@nice2dev/game-engine 1.0.2 → 1.0.4
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.
- package/dist/cjs/ai/BehaviorTree.js +1215 -0
- package/dist/cjs/ai/BehaviorTree.js.map +1 -0
- package/dist/cjs/ai/StateMachine.js +783 -0
- package/dist/cjs/ai/StateMachine.js.map +1 -0
- package/dist/cjs/editor/ShaderGraph.js +1616 -0
- package/dist/cjs/editor/ShaderGraph.js.map +1 -0
- package/dist/cjs/editor/TimelineEditor.js +819 -0
- package/dist/cjs/editor/TimelineEditor.js.map +1 -0
- package/dist/cjs/export/GodotExporter.js +1102 -0
- package/dist/cjs/export/GodotExporter.js.map +1 -0
- package/dist/cjs/export/PlatformExporter.js +236 -0
- package/dist/cjs/export/PlatformExporter.js.map +1 -0
- package/dist/cjs/export/ThreeJSExporter.js +1116 -0
- package/dist/cjs/export/ThreeJSExporter.js.map +1 -0
- package/dist/cjs/export/UnityExporter.js +1193 -0
- package/dist/cjs/export/UnityExporter.js.map +1 -0
- package/dist/cjs/export/WebExporter.js +1036 -0
- package/dist/cjs/export/WebExporter.js.map +1 -0
- package/dist/cjs/export/index.js +58 -0
- package/dist/cjs/export/index.js.map +1 -0
- package/dist/cjs/import/AsepriteImporter.js +761 -0
- package/dist/cjs/import/AsepriteImporter.js.map +1 -0
- package/dist/cjs/import/DragonBonesImporter.js +499 -0
- package/dist/cjs/import/DragonBonesImporter.js.map +1 -0
- package/dist/cjs/import/GameMakerImporter.js +559 -0
- package/dist/cjs/import/GameMakerImporter.js.map +1 -0
- package/dist/cjs/import/GodotSceneImporter.js +824 -0
- package/dist/cjs/import/GodotSceneImporter.js.map +1 -0
- package/dist/cjs/import/LDtkImporter.js +481 -0
- package/dist/cjs/import/LDtkImporter.js.map +1 -0
- package/dist/cjs/import/Live2DImporter.js +553 -0
- package/dist/cjs/import/Live2DImporter.js.map +1 -0
- package/dist/cjs/import/NdgFormat.js +499 -0
- package/dist/cjs/import/NdgFormat.js.map +1 -0
- package/dist/cjs/import/OgmoImporter.js +529 -0
- package/dist/cjs/import/OgmoImporter.js.map +1 -0
- package/dist/cjs/import/RPGMakerImporter.js +520 -0
- package/dist/cjs/import/RPGMakerImporter.js.map +1 -0
- package/dist/cjs/import/SceneImporter.js +449 -0
- package/dist/cjs/import/SceneImporter.js.map +1 -0
- package/dist/cjs/import/SpineImporter.js +583 -0
- package/dist/cjs/import/SpineImporter.js.map +1 -0
- package/dist/cjs/import/SpriterImporter.js +652 -0
- package/dist/cjs/import/SpriterImporter.js.map +1 -0
- package/dist/cjs/import/TiledMapImporter.js +859 -0
- package/dist/cjs/import/TiledMapImporter.js.map +1 -0
- package/dist/cjs/import/UnitySceneImporter.js +732 -0
- package/dist/cjs/import/UnitySceneImporter.js.map +1 -0
- package/dist/cjs/import/index.js +305 -0
- package/dist/cjs/import/index.js.map +1 -0
- package/dist/cjs/index.js +201 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/scripting/GraphToAST.js +567 -0
- package/dist/cjs/scripting/GraphToAST.js.map +1 -0
- package/dist/cjs/scripting/LanguageExporter.js +321 -0
- package/dist/cjs/scripting/LanguageExporter.js.map +1 -0
- package/dist/cjs/scripting/ScriptAST.js +67 -0
- package/dist/cjs/scripting/ScriptAST.js.map +1 -0
- package/dist/cjs/scripting/VisualScripting2.js +1140 -0
- package/dist/cjs/scripting/VisualScripting2.js.map +1 -0
- package/dist/cjs/scripting/exporters/CSharpExporter.js +503 -0
- package/dist/cjs/scripting/exporters/CSharpExporter.js.map +1 -0
- package/dist/cjs/scripting/exporters/GDScriptExporter.js +452 -0
- package/dist/cjs/scripting/exporters/GDScriptExporter.js.map +1 -0
- package/dist/cjs/scripting/exporters/LuaExporter.js +457 -0
- package/dist/cjs/scripting/exporters/LuaExporter.js.map +1 -0
- package/dist/cjs/scripting/exporters/PythonExporter.js +565 -0
- package/dist/cjs/scripting/exporters/PythonExporter.js.map +1 -0
- package/dist/cjs/scripting/exporters/RustExporter.js +525 -0
- package/dist/cjs/scripting/exporters/RustExporter.js.map +1 -0
- package/dist/cjs/scripting/exporters/TypeScriptExporter.js +570 -0
- package/dist/cjs/scripting/exporters/TypeScriptExporter.js.map +1 -0
- package/dist/cjs/systems/ParticleSystem2.js +1478 -0
- package/dist/cjs/systems/ParticleSystem2.js.map +1 -0
- package/dist/esm/ai/BehaviorTree.js +1186 -0
- package/dist/esm/ai/BehaviorTree.js.map +1 -0
- package/dist/esm/ai/StateMachine.js +767 -0
- package/dist/esm/ai/StateMachine.js.map +1 -0
- package/dist/esm/editor/ShaderGraph.js +1606 -0
- package/dist/esm/editor/ShaderGraph.js.map +1 -0
- package/dist/esm/editor/TimelineEditor.js +800 -0
- package/dist/esm/editor/TimelineEditor.js.map +1 -0
- package/dist/esm/export/GodotExporter.js +1100 -0
- package/dist/esm/export/GodotExporter.js.map +1 -0
- package/dist/esm/export/PlatformExporter.js +230 -0
- package/dist/esm/export/PlatformExporter.js.map +1 -0
- package/dist/esm/export/ThreeJSExporter.js +1114 -0
- package/dist/esm/export/ThreeJSExporter.js.map +1 -0
- package/dist/esm/export/UnityExporter.js +1191 -0
- package/dist/esm/export/UnityExporter.js.map +1 -0
- package/dist/esm/export/WebExporter.js +1033 -0
- package/dist/esm/export/WebExporter.js.map +1 -0
- package/dist/esm/export/index.js +44 -0
- package/dist/esm/export/index.js.map +1 -0
- package/dist/esm/import/AsepriteImporter.js +759 -0
- package/dist/esm/import/AsepriteImporter.js.map +1 -0
- package/dist/esm/import/DragonBonesImporter.js +496 -0
- package/dist/esm/import/DragonBonesImporter.js.map +1 -0
- package/dist/esm/import/GameMakerImporter.js +556 -0
- package/dist/esm/import/GameMakerImporter.js.map +1 -0
- package/dist/esm/import/GodotSceneImporter.js +822 -0
- package/dist/esm/import/GodotSceneImporter.js.map +1 -0
- package/dist/esm/import/LDtkImporter.js +479 -0
- package/dist/esm/import/LDtkImporter.js.map +1 -0
- package/dist/esm/import/Live2DImporter.js +550 -0
- package/dist/esm/import/Live2DImporter.js.map +1 -0
- package/dist/esm/import/NdgFormat.js +490 -0
- package/dist/esm/import/NdgFormat.js.map +1 -0
- package/dist/esm/import/OgmoImporter.js +526 -0
- package/dist/esm/import/OgmoImporter.js.map +1 -0
- package/dist/esm/import/RPGMakerImporter.js +517 -0
- package/dist/esm/import/RPGMakerImporter.js.map +1 -0
- package/dist/esm/import/SceneImporter.js +441 -0
- package/dist/esm/import/SceneImporter.js.map +1 -0
- package/dist/esm/import/SpineImporter.js +580 -0
- package/dist/esm/import/SpineImporter.js.map +1 -0
- package/dist/esm/import/SpriterImporter.js +649 -0
- package/dist/esm/import/SpriterImporter.js.map +1 -0
- package/dist/esm/import/TiledMapImporter.js +857 -0
- package/dist/esm/import/TiledMapImporter.js.map +1 -0
- package/dist/esm/import/UnitySceneImporter.js +730 -0
- package/dist/esm/import/UnitySceneImporter.js.map +1 -0
- package/dist/esm/import/index.js +279 -0
- package/dist/esm/import/index.js.map +1 -0
- package/dist/esm/index.js +36 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/scripting/GraphToAST.js +564 -0
- package/dist/esm/scripting/GraphToAST.js.map +1 -0
- package/dist/esm/scripting/LanguageExporter.js +311 -0
- package/dist/esm/scripting/LanguageExporter.js.map +1 -0
- package/dist/esm/scripting/ScriptAST.js +52 -0
- package/dist/esm/scripting/ScriptAST.js.map +1 -0
- package/dist/esm/scripting/VisualScripting2.js +1130 -0
- package/dist/esm/scripting/VisualScripting2.js.map +1 -0
- package/dist/esm/scripting/exporters/CSharpExporter.js +501 -0
- package/dist/esm/scripting/exporters/CSharpExporter.js.map +1 -0
- package/dist/esm/scripting/exporters/GDScriptExporter.js +450 -0
- package/dist/esm/scripting/exporters/GDScriptExporter.js.map +1 -0
- package/dist/esm/scripting/exporters/LuaExporter.js +455 -0
- package/dist/esm/scripting/exporters/LuaExporter.js.map +1 -0
- package/dist/esm/scripting/exporters/PythonExporter.js +563 -0
- package/dist/esm/scripting/exporters/PythonExporter.js.map +1 -0
- package/dist/esm/scripting/exporters/RustExporter.js +523 -0
- package/dist/esm/scripting/exporters/RustExporter.js.map +1 -0
- package/dist/esm/scripting/exporters/TypeScriptExporter.js +568 -0
- package/dist/esm/scripting/exporters/TypeScriptExporter.js.map +1 -0
- package/dist/esm/systems/ParticleSystem2.js +1471 -0
- package/dist/esm/systems/ParticleSystem2.js.map +1 -0
- package/dist/types/ai/BehaviorTree.d.ts +375 -0
- package/dist/types/ai/StateMachine.d.ts +296 -0
- package/dist/types/editor/ShaderGraph.d.ts +207 -0
- package/dist/types/editor/TimelineEditor.d.ts +393 -0
- package/dist/types/export/GodotExporter.d.ts +56 -0
- package/dist/types/export/PlatformExporter.d.ts +201 -0
- package/dist/types/export/ThreeJSExporter.d.ts +40 -0
- package/dist/types/export/UnityExporter.d.ts +69 -0
- package/dist/types/export/WebExporter.d.ts +58 -0
- package/dist/types/export/index.d.ts +19 -0
- package/dist/types/import/AsepriteImporter.d.ts +46 -0
- package/dist/types/import/DragonBonesImporter.d.ts +331 -0
- package/dist/types/import/GameMakerImporter.d.ts +375 -0
- package/dist/types/import/GodotSceneImporter.d.ts +34 -0
- package/dist/types/import/LDtkImporter.d.ts +177 -0
- package/dist/types/import/Live2DImporter.d.ts +237 -0
- package/dist/types/import/NdgFormat.d.ts +387 -0
- package/dist/types/import/OgmoImporter.d.ts +237 -0
- package/dist/types/import/RPGMakerImporter.d.ts +186 -0
- package/dist/types/import/SceneImporter.d.ts +276 -0
- package/dist/types/import/SpineImporter.d.ts +372 -0
- package/dist/types/import/SpriterImporter.d.ts +230 -0
- package/dist/types/import/TiledMapImporter.d.ts +57 -0
- package/dist/types/import/UnitySceneImporter.d.ts +87 -0
- package/dist/types/import/index.d.ts +59 -0
- package/dist/types/index.d.ts +29 -17
- package/dist/types/scripting/GraphToAST.d.ts +55 -0
- package/dist/types/scripting/LanguageExporter.d.ts +136 -0
- package/dist/types/scripting/ScriptAST.d.ts +312 -0
- package/dist/types/scripting/VisualScripting2.d.ts +353 -0
- package/dist/types/scripting/exporters/CSharpExporter.d.ts +44 -0
- package/dist/types/scripting/exporters/GDScriptExporter.d.ts +46 -0
- package/dist/types/scripting/exporters/LuaExporter.d.ts +46 -0
- package/dist/types/scripting/exporters/PythonExporter.d.ts +49 -0
- package/dist/types/scripting/exporters/RustExporter.d.ts +46 -0
- package/dist/types/scripting/exporters/TypeScriptExporter.d.ts +48 -0
- package/dist/types/scripting/exporters/index.d.ts +8 -0
- package/dist/types/scripting/index.d.ts +11 -0
- package/dist/types/systems/ParticleSystem2.d.ts +646 -0
- package/package.json +3 -3
|
@@ -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 {};
|