@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,372 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file SpineImporter.ts
|
|
3
|
+
* @description Spine 2D Skeletal Animation Importer
|
|
4
|
+
* PRO-1.3: Scene Format Interoperability
|
|
5
|
+
*
|
|
6
|
+
* Spine is a professional 2D skeletal animation tool.
|
|
7
|
+
* Supports both JSON and binary formats.
|
|
8
|
+
*
|
|
9
|
+
* File Types:
|
|
10
|
+
* - .json - Spine skeleton data (JSON)
|
|
11
|
+
* - .skel - Spine skeleton data (binary)
|
|
12
|
+
* - .atlas - Texture atlas
|
|
13
|
+
*/
|
|
14
|
+
import { SceneImporter, ImportOptions, ImportResult, ParsedScene, ImportError } from './SceneImporter';
|
|
15
|
+
/** Spine Skeleton Data */
|
|
16
|
+
export interface SpineSkeletonData {
|
|
17
|
+
skeleton: SpineSkeletonInfo;
|
|
18
|
+
bones: SpineBone[];
|
|
19
|
+
slots: SpineSlot[];
|
|
20
|
+
ik?: SpineIKConstraint[];
|
|
21
|
+
transform?: SpineTransformConstraint[];
|
|
22
|
+
path?: SpinePathConstraint[];
|
|
23
|
+
skins: SpineSkin[];
|
|
24
|
+
events?: Record<string, SpineEvent>;
|
|
25
|
+
animations: Record<string, SpineAnimation>;
|
|
26
|
+
}
|
|
27
|
+
/** Spine Skeleton Info */
|
|
28
|
+
export interface SpineSkeletonInfo {
|
|
29
|
+
hash?: string;
|
|
30
|
+
spine: string;
|
|
31
|
+
x?: number;
|
|
32
|
+
y?: number;
|
|
33
|
+
width?: number;
|
|
34
|
+
height?: number;
|
|
35
|
+
fps?: number;
|
|
36
|
+
images?: string;
|
|
37
|
+
audio?: string;
|
|
38
|
+
}
|
|
39
|
+
/** Spine Bone */
|
|
40
|
+
export interface SpineBone {
|
|
41
|
+
name: string;
|
|
42
|
+
parent?: string;
|
|
43
|
+
length?: number;
|
|
44
|
+
transform?: 'normal' | 'onlyTranslation' | 'noRotationOrReflection' | 'noScale' | 'noScaleOrReflection';
|
|
45
|
+
skin?: boolean;
|
|
46
|
+
x?: number;
|
|
47
|
+
y?: number;
|
|
48
|
+
rotation?: number;
|
|
49
|
+
scaleX?: number;
|
|
50
|
+
scaleY?: number;
|
|
51
|
+
shearX?: number;
|
|
52
|
+
shearY?: number;
|
|
53
|
+
color?: string;
|
|
54
|
+
}
|
|
55
|
+
/** Spine Slot */
|
|
56
|
+
export interface SpineSlot {
|
|
57
|
+
name: string;
|
|
58
|
+
bone: string;
|
|
59
|
+
color?: string;
|
|
60
|
+
dark?: string;
|
|
61
|
+
attachment?: string;
|
|
62
|
+
blend?: 'normal' | 'additive' | 'multiply' | 'screen';
|
|
63
|
+
}
|
|
64
|
+
/** Spine IK Constraint */
|
|
65
|
+
export interface SpineIKConstraint {
|
|
66
|
+
name: string;
|
|
67
|
+
order?: number;
|
|
68
|
+
skin?: boolean;
|
|
69
|
+
bones: string[];
|
|
70
|
+
target: string;
|
|
71
|
+
mix?: number;
|
|
72
|
+
softness?: number;
|
|
73
|
+
bendPositive?: boolean;
|
|
74
|
+
compress?: boolean;
|
|
75
|
+
stretch?: boolean;
|
|
76
|
+
uniform?: boolean;
|
|
77
|
+
}
|
|
78
|
+
/** Spine Transform Constraint */
|
|
79
|
+
export interface SpineTransformConstraint {
|
|
80
|
+
name: string;
|
|
81
|
+
order?: number;
|
|
82
|
+
skin?: boolean;
|
|
83
|
+
bones: string[];
|
|
84
|
+
target: string;
|
|
85
|
+
rotation?: number;
|
|
86
|
+
x?: number;
|
|
87
|
+
y?: number;
|
|
88
|
+
scaleX?: number;
|
|
89
|
+
scaleY?: number;
|
|
90
|
+
shearY?: number;
|
|
91
|
+
rotateMix?: number;
|
|
92
|
+
translateMix?: number;
|
|
93
|
+
scaleMix?: number;
|
|
94
|
+
shearMix?: number;
|
|
95
|
+
local?: boolean;
|
|
96
|
+
relative?: boolean;
|
|
97
|
+
}
|
|
98
|
+
/** Spine Path Constraint */
|
|
99
|
+
export interface SpinePathConstraint {
|
|
100
|
+
name: string;
|
|
101
|
+
order?: number;
|
|
102
|
+
skin?: boolean;
|
|
103
|
+
bones: string[];
|
|
104
|
+
target: string;
|
|
105
|
+
positionMode?: 'fixed' | 'percent';
|
|
106
|
+
spacingMode?: 'length' | 'fixed' | 'percent' | 'proportional';
|
|
107
|
+
rotateMode?: 'tangent' | 'chain' | 'chainScale';
|
|
108
|
+
rotation?: number;
|
|
109
|
+
position?: number;
|
|
110
|
+
spacing?: number;
|
|
111
|
+
rotateMix?: number;
|
|
112
|
+
translateMix?: number;
|
|
113
|
+
}
|
|
114
|
+
/** Spine Skin */
|
|
115
|
+
export interface SpineSkin {
|
|
116
|
+
name: string;
|
|
117
|
+
bones?: Record<string, SpineSkinBone>;
|
|
118
|
+
ik?: Record<string, SpineSkinIK>;
|
|
119
|
+
transform?: Record<string, SpineSkinTransform>;
|
|
120
|
+
path?: Record<string, SpineSkinPath>;
|
|
121
|
+
attachments: Record<string, Record<string, SpineAttachment>>;
|
|
122
|
+
}
|
|
123
|
+
export interface SpineSkinBone {
|
|
124
|
+
x?: number;
|
|
125
|
+
y?: number;
|
|
126
|
+
rotation?: number;
|
|
127
|
+
scaleX?: number;
|
|
128
|
+
scaleY?: number;
|
|
129
|
+
}
|
|
130
|
+
export interface SpineSkinIK {
|
|
131
|
+
bendPositive?: boolean;
|
|
132
|
+
compress?: boolean;
|
|
133
|
+
stretch?: boolean;
|
|
134
|
+
uniform?: boolean;
|
|
135
|
+
mix?: number;
|
|
136
|
+
softness?: number;
|
|
137
|
+
}
|
|
138
|
+
export interface SpineSkinTransform {
|
|
139
|
+
rotation?: number;
|
|
140
|
+
x?: number;
|
|
141
|
+
y?: number;
|
|
142
|
+
scaleX?: number;
|
|
143
|
+
scaleY?: number;
|
|
144
|
+
shearY?: number;
|
|
145
|
+
rotateMix?: number;
|
|
146
|
+
translateMix?: number;
|
|
147
|
+
scaleMix?: number;
|
|
148
|
+
shearMix?: number;
|
|
149
|
+
}
|
|
150
|
+
export interface SpineSkinPath {
|
|
151
|
+
position?: number;
|
|
152
|
+
spacing?: number;
|
|
153
|
+
rotateMix?: number;
|
|
154
|
+
translateMix?: number;
|
|
155
|
+
}
|
|
156
|
+
/** Spine Attachment Types */
|
|
157
|
+
export type SpineAttachment = SpineRegionAttachment | SpineMeshAttachment | SpineBoundingBoxAttachment | SpinePointAttachment | SpinePathAttachment | SpineClippingAttachment;
|
|
158
|
+
export interface SpineAttachmentBase {
|
|
159
|
+
type?: string;
|
|
160
|
+
name?: string;
|
|
161
|
+
}
|
|
162
|
+
export interface SpineRegionAttachment extends SpineAttachmentBase {
|
|
163
|
+
type?: 'region';
|
|
164
|
+
path?: string;
|
|
165
|
+
x?: number;
|
|
166
|
+
y?: number;
|
|
167
|
+
scaleX?: number;
|
|
168
|
+
scaleY?: number;
|
|
169
|
+
rotation?: number;
|
|
170
|
+
width: number;
|
|
171
|
+
height: number;
|
|
172
|
+
color?: string;
|
|
173
|
+
}
|
|
174
|
+
export interface SpineMeshAttachment extends SpineAttachmentBase {
|
|
175
|
+
type: 'mesh' | 'linkedmesh';
|
|
176
|
+
path?: string;
|
|
177
|
+
color?: string;
|
|
178
|
+
width?: number;
|
|
179
|
+
height?: number;
|
|
180
|
+
uvs?: number[];
|
|
181
|
+
triangles?: number[];
|
|
182
|
+
vertices?: number[];
|
|
183
|
+
hull?: number;
|
|
184
|
+
edges?: number[];
|
|
185
|
+
skin?: string;
|
|
186
|
+
parent?: string;
|
|
187
|
+
deform?: boolean;
|
|
188
|
+
}
|
|
189
|
+
export interface SpineBoundingBoxAttachment extends SpineAttachmentBase {
|
|
190
|
+
type: 'boundingbox';
|
|
191
|
+
vertexCount: number;
|
|
192
|
+
vertices: number[];
|
|
193
|
+
color?: string;
|
|
194
|
+
}
|
|
195
|
+
export interface SpinePointAttachment extends SpineAttachmentBase {
|
|
196
|
+
type: 'point';
|
|
197
|
+
x?: number;
|
|
198
|
+
y?: number;
|
|
199
|
+
rotation?: number;
|
|
200
|
+
color?: string;
|
|
201
|
+
}
|
|
202
|
+
export interface SpinePathAttachment extends SpineAttachmentBase {
|
|
203
|
+
type: 'path';
|
|
204
|
+
closed?: boolean;
|
|
205
|
+
constantSpeed?: boolean;
|
|
206
|
+
vertexCount: number;
|
|
207
|
+
vertices?: number[];
|
|
208
|
+
lengths?: number[];
|
|
209
|
+
color?: string;
|
|
210
|
+
}
|
|
211
|
+
export interface SpineClippingAttachment extends SpineAttachmentBase {
|
|
212
|
+
type: 'clipping';
|
|
213
|
+
end: string;
|
|
214
|
+
vertexCount: number;
|
|
215
|
+
vertices: number[];
|
|
216
|
+
color?: string;
|
|
217
|
+
}
|
|
218
|
+
/** Spine Event */
|
|
219
|
+
export interface SpineEvent {
|
|
220
|
+
int?: number;
|
|
221
|
+
float?: number;
|
|
222
|
+
string?: string;
|
|
223
|
+
audio?: string;
|
|
224
|
+
volume?: number;
|
|
225
|
+
balance?: number;
|
|
226
|
+
}
|
|
227
|
+
/** Spine Animation */
|
|
228
|
+
export interface SpineAnimation {
|
|
229
|
+
bones?: Record<string, SpineBoneTimeline>;
|
|
230
|
+
slots?: Record<string, SpineSlotTimeline>;
|
|
231
|
+
ik?: Record<string, SpineIKTimeline[]>;
|
|
232
|
+
transform?: Record<string, SpineTransformTimeline[]>;
|
|
233
|
+
path?: Record<string, SpinePathTimeline[]>;
|
|
234
|
+
deform?: Record<string, Record<string, Record<string, SpineDeformTimeline[]>>>;
|
|
235
|
+
drawOrder?: SpineDrawOrderTimeline[];
|
|
236
|
+
events?: SpineEventTimeline[];
|
|
237
|
+
}
|
|
238
|
+
export interface SpineBoneTimeline {
|
|
239
|
+
rotate?: SpineRotateKeyframe[];
|
|
240
|
+
translate?: SpineTranslateKeyframe[];
|
|
241
|
+
scale?: SpineScaleKeyframe[];
|
|
242
|
+
shear?: SpineShearKeyframe[];
|
|
243
|
+
}
|
|
244
|
+
export interface SpineSlotTimeline {
|
|
245
|
+
attachment?: SpineAttachmentKeyframe[];
|
|
246
|
+
color?: SpineColorKeyframe[];
|
|
247
|
+
twoColor?: SpineTwoColorKeyframe[];
|
|
248
|
+
}
|
|
249
|
+
export interface SpineKeyframeBase {
|
|
250
|
+
time: number;
|
|
251
|
+
curve?: 'linear' | 'stepped' | number[];
|
|
252
|
+
}
|
|
253
|
+
export interface SpineRotateKeyframe extends SpineKeyframeBase {
|
|
254
|
+
angle?: number;
|
|
255
|
+
}
|
|
256
|
+
export interface SpineTranslateKeyframe extends SpineKeyframeBase {
|
|
257
|
+
x?: number;
|
|
258
|
+
y?: number;
|
|
259
|
+
}
|
|
260
|
+
export interface SpineScaleKeyframe extends SpineKeyframeBase {
|
|
261
|
+
x?: number;
|
|
262
|
+
y?: number;
|
|
263
|
+
}
|
|
264
|
+
export interface SpineShearKeyframe extends SpineKeyframeBase {
|
|
265
|
+
x?: number;
|
|
266
|
+
y?: number;
|
|
267
|
+
}
|
|
268
|
+
export interface SpineAttachmentKeyframe {
|
|
269
|
+
time: number;
|
|
270
|
+
name: string | null;
|
|
271
|
+
}
|
|
272
|
+
export interface SpineColorKeyframe extends SpineKeyframeBase {
|
|
273
|
+
color: string;
|
|
274
|
+
}
|
|
275
|
+
export interface SpineTwoColorKeyframe extends SpineKeyframeBase {
|
|
276
|
+
light: string;
|
|
277
|
+
dark: string;
|
|
278
|
+
}
|
|
279
|
+
export interface SpineIKTimeline extends SpineKeyframeBase {
|
|
280
|
+
mix?: number;
|
|
281
|
+
softness?: number;
|
|
282
|
+
bendPositive?: boolean;
|
|
283
|
+
compress?: boolean;
|
|
284
|
+
stretch?: boolean;
|
|
285
|
+
}
|
|
286
|
+
export interface SpineTransformTimeline extends SpineKeyframeBase {
|
|
287
|
+
rotateMix?: number;
|
|
288
|
+
translateMix?: number;
|
|
289
|
+
scaleMix?: number;
|
|
290
|
+
shearMix?: number;
|
|
291
|
+
}
|
|
292
|
+
export interface SpinePathTimeline extends SpineKeyframeBase {
|
|
293
|
+
position?: number;
|
|
294
|
+
spacing?: number;
|
|
295
|
+
rotateMix?: number;
|
|
296
|
+
translateMix?: number;
|
|
297
|
+
}
|
|
298
|
+
export interface SpineDeformTimeline extends SpineKeyframeBase {
|
|
299
|
+
offset?: number;
|
|
300
|
+
vertices?: number[];
|
|
301
|
+
}
|
|
302
|
+
export interface SpineDrawOrderTimeline {
|
|
303
|
+
time: number;
|
|
304
|
+
offsets?: Array<{
|
|
305
|
+
slot: string;
|
|
306
|
+
offset: number;
|
|
307
|
+
}>;
|
|
308
|
+
}
|
|
309
|
+
export interface SpineEventTimeline {
|
|
310
|
+
time: number;
|
|
311
|
+
name: string;
|
|
312
|
+
int?: number;
|
|
313
|
+
float?: number;
|
|
314
|
+
string?: string;
|
|
315
|
+
volume?: number;
|
|
316
|
+
balance?: number;
|
|
317
|
+
}
|
|
318
|
+
/** Spine Atlas */
|
|
319
|
+
export interface SpineAtlas {
|
|
320
|
+
pages: SpineAtlasPage[];
|
|
321
|
+
}
|
|
322
|
+
export interface SpineAtlasPage {
|
|
323
|
+
name: string;
|
|
324
|
+
size: {
|
|
325
|
+
width: number;
|
|
326
|
+
height: number;
|
|
327
|
+
};
|
|
328
|
+
format: string;
|
|
329
|
+
filter: {
|
|
330
|
+
min: string;
|
|
331
|
+
mag: string;
|
|
332
|
+
};
|
|
333
|
+
repeat: string;
|
|
334
|
+
pma?: boolean;
|
|
335
|
+
regions: SpineAtlasRegion[];
|
|
336
|
+
}
|
|
337
|
+
export interface SpineAtlasRegion {
|
|
338
|
+
name: string;
|
|
339
|
+
bounds: {
|
|
340
|
+
x: number;
|
|
341
|
+
y: number;
|
|
342
|
+
width: number;
|
|
343
|
+
height: number;
|
|
344
|
+
};
|
|
345
|
+
offsets?: {
|
|
346
|
+
x: number;
|
|
347
|
+
y: number;
|
|
348
|
+
width: number;
|
|
349
|
+
height: number;
|
|
350
|
+
};
|
|
351
|
+
rotate?: boolean | number;
|
|
352
|
+
index?: number;
|
|
353
|
+
}
|
|
354
|
+
export declare class SpineImporter extends SceneImporter {
|
|
355
|
+
private atlas;
|
|
356
|
+
constructor();
|
|
357
|
+
canHandle(filePath: string): boolean;
|
|
358
|
+
import(options: ImportOptions): Promise<ImportResult>;
|
|
359
|
+
parseFile(content: string | ArrayBuffer, filePath: string): Promise<ParsedScene | null>;
|
|
360
|
+
validate(sourcePath: string): Promise<ImportError[]>;
|
|
361
|
+
private convertSkeletonToScene;
|
|
362
|
+
private convertSkeletonToParsed;
|
|
363
|
+
private createBoneHierarchy;
|
|
364
|
+
private addSlotToEntity;
|
|
365
|
+
private findBoneEntity;
|
|
366
|
+
private convertAnimation;
|
|
367
|
+
private calculateAnimationDuration;
|
|
368
|
+
private parseAtlas;
|
|
369
|
+
private readFile;
|
|
370
|
+
private extractFileName;
|
|
371
|
+
}
|
|
372
|
+
export declare function createSpineImporter(): SpineImporter;
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file SpriterImporter.ts
|
|
3
|
+
* @description Spriter Pro Animation Importer
|
|
4
|
+
* PRO-1.3: Scene Format Interoperability
|
|
5
|
+
*
|
|
6
|
+
* Spriter is a 2D animation tool for games.
|
|
7
|
+
* Supports SCML (XML) and SCON (JSON) formats.
|
|
8
|
+
*
|
|
9
|
+
* File Types:
|
|
10
|
+
* - *.scml - Spriter Character Map Lxml (XML format)
|
|
11
|
+
* - *.scon - Spriter Character Object Notation (JSON format)
|
|
12
|
+
*/
|
|
13
|
+
import { SceneImporter, ImportOptions, ImportResult, ParsedScene, ImportError } from './SceneImporter';
|
|
14
|
+
/** Spriter Project (Root) */
|
|
15
|
+
export interface SpriterProject {
|
|
16
|
+
spriter_data: SpriterData;
|
|
17
|
+
}
|
|
18
|
+
export interface SpriterData {
|
|
19
|
+
scml_version?: string;
|
|
20
|
+
scon_version?: string;
|
|
21
|
+
generator?: string;
|
|
22
|
+
generator_version?: string;
|
|
23
|
+
folder: SpriterFolder[];
|
|
24
|
+
entity: SpriterEntity[];
|
|
25
|
+
tag_list?: SpriterTagList;
|
|
26
|
+
var_defs?: SpriterVarDef[];
|
|
27
|
+
}
|
|
28
|
+
export interface SpriterFolder {
|
|
29
|
+
id: number;
|
|
30
|
+
name?: string;
|
|
31
|
+
file: SpriterFile[];
|
|
32
|
+
}
|
|
33
|
+
export interface SpriterFile {
|
|
34
|
+
id: number;
|
|
35
|
+
name: string;
|
|
36
|
+
width: number;
|
|
37
|
+
height: number;
|
|
38
|
+
pivot_x?: number;
|
|
39
|
+
pivot_y?: number;
|
|
40
|
+
}
|
|
41
|
+
export interface SpriterEntity {
|
|
42
|
+
id: number;
|
|
43
|
+
name: string;
|
|
44
|
+
obj_info?: SpriterObjInfo[];
|
|
45
|
+
var_defs?: SpriterVarDef[];
|
|
46
|
+
animation: SpriterAnimation[];
|
|
47
|
+
character_map?: SpriterCharacterMap[];
|
|
48
|
+
}
|
|
49
|
+
export interface SpriterObjInfo {
|
|
50
|
+
name: string;
|
|
51
|
+
type?: 'sprite' | 'bone' | 'box' | 'point' | 'sound' | 'entity' | 'variable';
|
|
52
|
+
w?: number;
|
|
53
|
+
h?: number;
|
|
54
|
+
pivot_x?: number;
|
|
55
|
+
pivot_y?: number;
|
|
56
|
+
frames?: SpriterObjFrame[];
|
|
57
|
+
var_defs?: SpriterVarDef[];
|
|
58
|
+
}
|
|
59
|
+
export interface SpriterObjFrame {
|
|
60
|
+
folder: number;
|
|
61
|
+
file: number;
|
|
62
|
+
}
|
|
63
|
+
export interface SpriterVarDef {
|
|
64
|
+
id: number;
|
|
65
|
+
name: string;
|
|
66
|
+
type: 'float' | 'int' | 'string';
|
|
67
|
+
default_value?: number | string;
|
|
68
|
+
}
|
|
69
|
+
export interface SpriterAnimation {
|
|
70
|
+
id: number;
|
|
71
|
+
name: string;
|
|
72
|
+
length: number;
|
|
73
|
+
interval?: number;
|
|
74
|
+
looping?: boolean;
|
|
75
|
+
mainline: SpriterMainline;
|
|
76
|
+
timeline?: SpriterTimeline[];
|
|
77
|
+
soundline?: SpriterSoundline[];
|
|
78
|
+
eventline?: SpriterEventline[];
|
|
79
|
+
meta?: SpriterMeta;
|
|
80
|
+
}
|
|
81
|
+
export interface SpriterMainline {
|
|
82
|
+
key: SpriterMainlineKey[];
|
|
83
|
+
}
|
|
84
|
+
export interface SpriterMainlineKey {
|
|
85
|
+
id: number;
|
|
86
|
+
time?: number;
|
|
87
|
+
bone_ref?: SpriterRef[];
|
|
88
|
+
object_ref?: SpriterRef[];
|
|
89
|
+
}
|
|
90
|
+
export interface SpriterRef {
|
|
91
|
+
id: number;
|
|
92
|
+
parent?: number;
|
|
93
|
+
timeline: number;
|
|
94
|
+
key: number;
|
|
95
|
+
z_index?: number;
|
|
96
|
+
}
|
|
97
|
+
export interface SpriterTimeline {
|
|
98
|
+
id: number;
|
|
99
|
+
name: string;
|
|
100
|
+
object_type?: 'sprite' | 'bone' | 'box' | 'point' | 'sound' | 'entity' | 'variable';
|
|
101
|
+
obj?: number;
|
|
102
|
+
key: SpriterTimelineKey[];
|
|
103
|
+
meta?: SpriterTimelineMeta;
|
|
104
|
+
}
|
|
105
|
+
export interface SpriterTimelineKey {
|
|
106
|
+
id: number;
|
|
107
|
+
time?: number;
|
|
108
|
+
spin?: number;
|
|
109
|
+
curve_type?: 'instant' | 'linear' | 'quadratic' | 'cubic' | 'quartic' | 'quintic' | 'bezier';
|
|
110
|
+
c1?: number;
|
|
111
|
+
c2?: number;
|
|
112
|
+
c3?: number;
|
|
113
|
+
c4?: number;
|
|
114
|
+
bone?: SpriterBone;
|
|
115
|
+
object?: SpriterObject;
|
|
116
|
+
}
|
|
117
|
+
export interface SpriterBone {
|
|
118
|
+
x?: number;
|
|
119
|
+
y?: number;
|
|
120
|
+
angle?: number;
|
|
121
|
+
scale_x?: number;
|
|
122
|
+
scale_y?: number;
|
|
123
|
+
a?: number;
|
|
124
|
+
}
|
|
125
|
+
export interface SpriterObject {
|
|
126
|
+
folder?: number;
|
|
127
|
+
file?: number;
|
|
128
|
+
x?: number;
|
|
129
|
+
y?: number;
|
|
130
|
+
angle?: number;
|
|
131
|
+
scale_x?: number;
|
|
132
|
+
scale_y?: number;
|
|
133
|
+
pivot_x?: number;
|
|
134
|
+
pivot_y?: number;
|
|
135
|
+
a?: number;
|
|
136
|
+
entity?: number;
|
|
137
|
+
animation?: number;
|
|
138
|
+
t?: number;
|
|
139
|
+
}
|
|
140
|
+
export interface SpriterSoundline {
|
|
141
|
+
id: number;
|
|
142
|
+
name?: string;
|
|
143
|
+
key: SpriterSoundKey[];
|
|
144
|
+
}
|
|
145
|
+
export interface SpriterSoundKey {
|
|
146
|
+
id: number;
|
|
147
|
+
time?: number;
|
|
148
|
+
object: {
|
|
149
|
+
folder: number;
|
|
150
|
+
file: number;
|
|
151
|
+
trigger?: boolean;
|
|
152
|
+
panning?: number;
|
|
153
|
+
volume?: number;
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
export interface SpriterEventline {
|
|
157
|
+
id: number;
|
|
158
|
+
name: string;
|
|
159
|
+
key: SpriterEventKey[];
|
|
160
|
+
}
|
|
161
|
+
export interface SpriterEventKey {
|
|
162
|
+
id: number;
|
|
163
|
+
time?: number;
|
|
164
|
+
}
|
|
165
|
+
export interface SpriterMeta {
|
|
166
|
+
varline?: SpriterVarline[];
|
|
167
|
+
tagline?: SpriterTagline;
|
|
168
|
+
}
|
|
169
|
+
export interface SpriterTimelineMeta {
|
|
170
|
+
varline?: SpriterVarline[];
|
|
171
|
+
tagline?: SpriterTagline;
|
|
172
|
+
}
|
|
173
|
+
export interface SpriterVarline {
|
|
174
|
+
id: number;
|
|
175
|
+
def: number;
|
|
176
|
+
key: SpriterVarKey[];
|
|
177
|
+
}
|
|
178
|
+
export interface SpriterVarKey {
|
|
179
|
+
id: number;
|
|
180
|
+
time?: number;
|
|
181
|
+
val?: number | string;
|
|
182
|
+
}
|
|
183
|
+
export interface SpriterTagline {
|
|
184
|
+
key: SpriterTagKey[];
|
|
185
|
+
}
|
|
186
|
+
export interface SpriterTagKey {
|
|
187
|
+
id: number;
|
|
188
|
+
time?: number;
|
|
189
|
+
tag?: SpriterTag[];
|
|
190
|
+
}
|
|
191
|
+
export interface SpriterTag {
|
|
192
|
+
id: number;
|
|
193
|
+
t: number;
|
|
194
|
+
}
|
|
195
|
+
export interface SpriterTagList {
|
|
196
|
+
tag: SpriterTagDef[];
|
|
197
|
+
}
|
|
198
|
+
export interface SpriterTagDef {
|
|
199
|
+
id: number;
|
|
200
|
+
name: string;
|
|
201
|
+
}
|
|
202
|
+
export interface SpriterCharacterMap {
|
|
203
|
+
id: number;
|
|
204
|
+
name: string;
|
|
205
|
+
map?: SpriterMapInstruction[];
|
|
206
|
+
}
|
|
207
|
+
export interface SpriterMapInstruction {
|
|
208
|
+
folder: number;
|
|
209
|
+
file: number;
|
|
210
|
+
target_folder?: number;
|
|
211
|
+
target_file?: number;
|
|
212
|
+
}
|
|
213
|
+
export declare class SpriterImporter extends SceneImporter {
|
|
214
|
+
private project;
|
|
215
|
+
private fileMap;
|
|
216
|
+
private folderMap;
|
|
217
|
+
constructor();
|
|
218
|
+
canHandle(filePath: string): boolean;
|
|
219
|
+
import(options: ImportOptions): Promise<ImportResult>;
|
|
220
|
+
parseFile(content: string | ArrayBuffer, filePath: string): Promise<ParsedScene | null>;
|
|
221
|
+
validate(sourcePath: string): Promise<ImportError[]>;
|
|
222
|
+
private parseScml;
|
|
223
|
+
private buildMaps;
|
|
224
|
+
private convertEntityToScene;
|
|
225
|
+
private convertAnimation;
|
|
226
|
+
private convertEntityToParsed;
|
|
227
|
+
private readFile;
|
|
228
|
+
private extractFileName;
|
|
229
|
+
}
|
|
230
|
+
export declare function createSpriterImporter(): SpriterImporter;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file TiledMapImporter.ts
|
|
3
|
+
* @description Import Tiled Map Editor files (.tmx, .tsx)
|
|
4
|
+
* PRO-1.3: Scene Format Interoperability
|
|
5
|
+
*
|
|
6
|
+
* Supports:
|
|
7
|
+
* - Tiled Map files (.tmx, .tmj)
|
|
8
|
+
* - Tileset files (.tsx, .tsj)
|
|
9
|
+
* - Template files (.tx, .tj)
|
|
10
|
+
* - World files (.world)
|
|
11
|
+
*
|
|
12
|
+
* Features:
|
|
13
|
+
* - Tile layers
|
|
14
|
+
* - Object layers
|
|
15
|
+
* - Image layers
|
|
16
|
+
* - Group layers
|
|
17
|
+
* - Animations
|
|
18
|
+
* - Custom properties
|
|
19
|
+
* - Collision shapes
|
|
20
|
+
*/
|
|
21
|
+
import { SceneImporter, ImportOptions, ImportResult, ParsedScene, ParsedAsset, ImportError } from './SceneImporter';
|
|
22
|
+
export declare class TiledMapImporter extends SceneImporter {
|
|
23
|
+
private tilesets;
|
|
24
|
+
private tilesetsById;
|
|
25
|
+
constructor();
|
|
26
|
+
import(options: ImportOptions): Promise<ImportResult>;
|
|
27
|
+
parseFile(content: string | ArrayBuffer, filePath: string): Promise<ParsedScene | ParsedAsset | null>;
|
|
28
|
+
validate(sourcePath: string): Promise<ImportError[]>;
|
|
29
|
+
private parseJsonMap;
|
|
30
|
+
private normalizeJsonMap;
|
|
31
|
+
private normalizeJsonTileset;
|
|
32
|
+
private normalizeJsonTile;
|
|
33
|
+
private normalizeJsonLayer;
|
|
34
|
+
private normalizeJsonObject;
|
|
35
|
+
private normalizeProperties;
|
|
36
|
+
private parseXmlMap;
|
|
37
|
+
private normalizeXmlMap;
|
|
38
|
+
private normalizeXmlTileset;
|
|
39
|
+
private normalizeXmlTile;
|
|
40
|
+
private normalizeXmlLayer;
|
|
41
|
+
private normalizeXmlObject;
|
|
42
|
+
private parseXmlProperties;
|
|
43
|
+
private parsePropertyValue;
|
|
44
|
+
private parsePoints;
|
|
45
|
+
private getLayerType;
|
|
46
|
+
private loadExternalTilesets;
|
|
47
|
+
private convertTiledMapToScene;
|
|
48
|
+
private processLayers;
|
|
49
|
+
private convertLayer;
|
|
50
|
+
private mapLayerType;
|
|
51
|
+
private convertObject;
|
|
52
|
+
private findTilesetForGid;
|
|
53
|
+
private convertProperties;
|
|
54
|
+
private extractAssets;
|
|
55
|
+
private flattenLayers;
|
|
56
|
+
private readFile;
|
|
57
|
+
}
|