@galacean/engine-spine 0.0.0-experimental-6d3110b4d9-20240531 → 0.0.0-experimental-2024071102
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/browser.js +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/miniprogram.js +1 -0
- package/dist/module.js +1 -1
- package/dist/module.js.map +1 -1
- package/package.json +6 -3
- package/types/SpineAnimation.d.ts +114 -19
- package/types/SpineGenerator.d.ts +40 -0
- package/types/core/SpineGenerator.d.ts +1 -2
- package/types/core/SpinePrimitive.d.ts +1 -9
- package/types/index.d.ts +2 -2
- package/types/loader/EditorSkeletonDataLoader.d.ts +3 -3
- package/types/loader/LoaderUtils.d.ts +4 -3
- package/types/loader/SkeletonDataResource.d.ts +12 -0
- package/types/loader/SpineLoader.d.ts +11 -4
- package/types/util/BlendMode.d.ts +4 -0
- package/types/util/BufferReader.d.ts +10 -0
- package/types/util/Cache.d.ts +19 -0
- package/types/util/ClearablePool.d.ts +8 -0
- package/types/util/ReturnablePool.d.ts +8 -0
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Animation.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Animation.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationState.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationState.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationStateData.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationStateData.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AssetManagerBase.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AssetManagerBase.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AtlasAttachmentLoader.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AtlasAttachmentLoader.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Bone.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Bone.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/BoneData.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/BoneData.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/ConstraintData.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/ConstraintData.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Event.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Event.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/EventData.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/EventData.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraint.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraint.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraintData.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraintData.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraint.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraint.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraintData.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraintData.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraint.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraint.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraintData.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraintData.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skeleton.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skeleton.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBinary.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBinary.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBounds.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBounds.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonClipping.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonClipping.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonData.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonData.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonJson.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonJson.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skin.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skin.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Slot.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Slot.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SlotData.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SlotData.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Texture.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Texture.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TextureAtlas.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TextureAtlas.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraint.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraint.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraintData.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraintData.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Triangulator.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Triangulator.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Utils.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Utils.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Attachment.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Attachment.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/BoundingBoxAttachment.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/BoundingBoxAttachment.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/ClippingAttachment.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/ClippingAttachment.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/MeshAttachment.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/MeshAttachment.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PathAttachment.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PathAttachment.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PointAttachment.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PointAttachment.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/RegionAttachment.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/RegionAttachment.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Sequence.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Sequence.js.map +0 -1
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/polyfills.js +0 -2
- package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/polyfills.js.map +0 -1
- package/dist/esm/node_modules/tslib/tslib.es6.js +0 -2
- package/dist/esm/node_modules/tslib/tslib.es6.js.map +0 -1
- package/dist/esm/src/SpineAnimation.js +0 -2
- package/dist/esm/src/SpineAnimation.js.map +0 -1
- package/dist/esm/src/SpineMaterial.js +0 -2
- package/dist/esm/src/SpineMaterial.js.map +0 -1
- package/dist/esm/src/core/SpineGenerator.js +0 -2
- package/dist/esm/src/core/SpineGenerator.js.map +0 -1
- package/dist/esm/src/core/SpinePrimitive.js +0 -2
- package/dist/esm/src/core/SpinePrimitive.js.map +0 -1
- package/dist/esm/src/index.js +0 -2
- package/dist/esm/src/index.js.map +0 -1
- package/dist/esm/src/loader/EditorSkeletonDataLoader.js +0 -2
- package/dist/esm/src/loader/EditorSkeletonDataLoader.js.map +0 -1
- package/dist/esm/src/loader/EditorSpineAtlasLoader.js +0 -2
- package/dist/esm/src/loader/EditorSpineAtlasLoader.js.map +0 -1
- package/dist/esm/src/loader/LoaderUtils.js +0 -2
- package/dist/esm/src/loader/LoaderUtils.js.map +0 -1
- package/dist/esm/src/loader/SpineLoader.js +0 -2
- package/dist/esm/src/loader/SpineLoader.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.0.0-experimental-
|
|
2
|
+
"version": "0.0.0-experimental-2024071102",
|
|
3
3
|
"description": "galacean spine runtime",
|
|
4
4
|
"name": "@galacean/engine-spine",
|
|
5
5
|
"main": "dist/main.js",
|
|
@@ -29,8 +29,10 @@
|
|
|
29
29
|
"@rollup/plugin-terser": "^0.4.3",
|
|
30
30
|
"@swc/core": "^1.3.32",
|
|
31
31
|
"@swc/helpers": "^0.5",
|
|
32
|
+
"@vitejs/plugin-basic-ssl": "^1.1.0",
|
|
32
33
|
"cross-env": "^5.2.0",
|
|
33
34
|
"dat.gui": "^0.7.9",
|
|
35
|
+
"floss": "^5.0.1",
|
|
34
36
|
"react": "^16.14.0",
|
|
35
37
|
"react-dom": "^16.14.0",
|
|
36
38
|
"rollup": "^2.32.0",
|
|
@@ -53,8 +55,9 @@
|
|
|
53
55
|
],
|
|
54
56
|
"scripts": {
|
|
55
57
|
"example": "vite",
|
|
56
|
-
"test": "
|
|
57
|
-
"test-
|
|
58
|
+
"test": "cross-env TS_NODE_PROJECT=tsconfig.tests.json floss --path tests -r ts-node/register",
|
|
59
|
+
"test-debug": "cross-env TS_NODE_PROJECT=tsconfig.tests.json floss --path tests -r ts-node/register --debug",
|
|
60
|
+
"test-cov": "cross-env TS_NODE_PROJECT=tsconfig.tests.json IS_COV=1 nyc --reporter=lcov floss --path tests -r ts-node/register",
|
|
58
61
|
"dev": "rollup -cw",
|
|
59
62
|
"build": "npm run b:types && cross-env BUILD_TYPE=ALL rollup -c",
|
|
60
63
|
"build:watch": "npm run b:types && cross-env BUILD_TYPE=ALL rollup -c --watch",
|
|
@@ -1,37 +1,79 @@
|
|
|
1
|
-
import { Skeleton, SkeletonData, AnimationState } from "@esotericsoftware/spine-core";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { Skeleton, SkeletonData, AnimationState, AnimationStateData } from "@esotericsoftware/spine-core";
|
|
2
|
+
import { Buffer, Renderer, Entity, Material, Engine, BoundingBox, Primitive, SubPrimitive } from "@galacean/engine";
|
|
3
|
+
import { SkeletonDataResource } from "./loader/SkeletonDataResource";
|
|
4
|
+
declare module '@esotericsoftware/spine-core' {
|
|
5
|
+
interface SkeletonData {
|
|
6
|
+
refCount: number;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
6
9
|
interface InitialState {
|
|
7
10
|
animationName: string;
|
|
8
11
|
skinName: string;
|
|
9
12
|
loop: boolean;
|
|
10
13
|
scale: number;
|
|
11
14
|
}
|
|
15
|
+
export type SpineRenderSetting = {
|
|
16
|
+
useClipping: boolean;
|
|
17
|
+
zSpacing: number;
|
|
18
|
+
};
|
|
12
19
|
export declare class SpineAnimation extends Renderer {
|
|
13
20
|
private static _defaultMaterial;
|
|
14
|
-
private static
|
|
15
|
-
private static
|
|
16
|
-
private static
|
|
17
|
-
private static
|
|
18
|
-
|
|
21
|
+
private static _spineGenerator;
|
|
22
|
+
private static positionVertexElement;
|
|
23
|
+
private static colorVertexElement;
|
|
24
|
+
private static uvVertexElement;
|
|
25
|
+
static materialCache: Map<string, Material>;
|
|
26
|
+
static animationDataCache: Map<SkeletonData, AnimationStateData>;
|
|
19
27
|
static getDefaultMaterial(engine: Engine): Material;
|
|
28
|
+
/** Render setting for spine rendering. */
|
|
20
29
|
setting: SpineRenderSetting;
|
|
30
|
+
/** Initial spine animation and skin state. */
|
|
21
31
|
initialState: InitialState;
|
|
32
|
+
/** @internal */
|
|
22
33
|
_primitive: Primitive;
|
|
34
|
+
/** @internal */
|
|
23
35
|
_subPrimitives: SubPrimitive[];
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
36
|
+
/** @internal */
|
|
37
|
+
_indexBuffer: Buffer;
|
|
38
|
+
/** @internal */
|
|
39
|
+
_vertexBuffer: Buffer;
|
|
40
|
+
/** @internal */
|
|
41
|
+
_vertices: Float32Array;
|
|
42
|
+
/** @internal */
|
|
43
|
+
_indices: Uint16Array;
|
|
44
|
+
/** @internal */
|
|
45
|
+
_needResizeBuffer: boolean;
|
|
46
|
+
/** @internal */
|
|
47
|
+
_vertexCount: number;
|
|
48
|
+
/** @internal */
|
|
49
|
+
_resource: SkeletonDataResource;
|
|
50
|
+
private _skeleton;
|
|
51
|
+
private _state;
|
|
52
|
+
/**
|
|
53
|
+
* Setting `skeletonData` initializes a new Spine animation with the provided data.
|
|
54
|
+
* This property allows you to switch between different animations at runtime.
|
|
55
|
+
*/
|
|
56
|
+
set resource(value: SkeletonDataResource);
|
|
57
|
+
/**
|
|
58
|
+
* Provides access to `AnimationState` which controls animation playback on a skeleton.
|
|
59
|
+
* You can use its API to manage, blend, and transition between multiple simultaneous animations effectively.
|
|
60
|
+
*/
|
|
28
61
|
get state(): AnimationState;
|
|
62
|
+
/**
|
|
63
|
+
* Provides access to `Skeleton`, which defines the structure of a Spine model.
|
|
64
|
+
* Through its API, users can manipulate bone positions, rotations, scaling
|
|
65
|
+
* and change spine attachment to customize character appearances dynamically during runtime.
|
|
66
|
+
*/
|
|
29
67
|
get skeleton(): Skeleton;
|
|
68
|
+
/**
|
|
69
|
+
* @internal
|
|
70
|
+
*/
|
|
71
|
+
get engine(): Engine;
|
|
30
72
|
constructor(entity: Entity);
|
|
31
73
|
/**
|
|
32
74
|
* @internal
|
|
33
75
|
*/
|
|
34
|
-
|
|
76
|
+
_onEnable(): void;
|
|
35
77
|
/**
|
|
36
78
|
* Separate slot by slot name. This will add a new sub primitive, and new materials.
|
|
37
79
|
*/
|
|
@@ -47,18 +89,71 @@ export declare class SpineAnimation extends Renderer {
|
|
|
47
89
|
/**
|
|
48
90
|
* @internal
|
|
49
91
|
*/
|
|
50
|
-
|
|
92
|
+
_render(context: any): void;
|
|
93
|
+
/**
|
|
94
|
+
* @internal
|
|
95
|
+
*/
|
|
96
|
+
_updateBounds(worldBounds: BoundingBox): void;
|
|
97
|
+
/**
|
|
98
|
+
* @internal
|
|
99
|
+
*/
|
|
100
|
+
_calculateGeneratorBounds(worldBounds: BoundingBox): void;
|
|
101
|
+
/**
|
|
102
|
+
* @internal
|
|
103
|
+
*/
|
|
104
|
+
_cloneTo(target: SpineAnimation): void;
|
|
51
105
|
/**
|
|
52
106
|
* @internal
|
|
53
107
|
*/
|
|
54
|
-
|
|
108
|
+
_onDestroy(): void;
|
|
55
109
|
/**
|
|
56
110
|
* @internal
|
|
57
111
|
*/
|
|
58
|
-
|
|
112
|
+
_createBuffer(vertexCount: number): void;
|
|
59
113
|
/**
|
|
60
114
|
* @internal
|
|
61
115
|
*/
|
|
62
|
-
|
|
116
|
+
_addSubPrimitive(subPrimitive: SubPrimitive): void;
|
|
117
|
+
/**
|
|
118
|
+
* @internal
|
|
119
|
+
*/
|
|
120
|
+
_clearSubPrimitives(): void;
|
|
121
|
+
/**
|
|
122
|
+
* @internal
|
|
123
|
+
*/
|
|
124
|
+
_isContainDirtyFlag(type: number): boolean;
|
|
125
|
+
/**
|
|
126
|
+
* @internal
|
|
127
|
+
*/
|
|
128
|
+
_setDirtyFlagFalse(type: number): void;
|
|
129
|
+
/**
|
|
130
|
+
* @internal
|
|
131
|
+
*/
|
|
132
|
+
_onAnimationStart(): void;
|
|
133
|
+
/**
|
|
134
|
+
* @internal
|
|
135
|
+
*/
|
|
136
|
+
_onTransformChanged(): void;
|
|
137
|
+
private onAnimationStart;
|
|
138
|
+
private onAnimationComplete;
|
|
139
|
+
private _clearMaterialCache;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* @internal
|
|
143
|
+
*/
|
|
144
|
+
export declare enum SpineAnimationUpdateFlags {
|
|
145
|
+
/** On World Transform Changed */
|
|
146
|
+
TransformVolume = 1,
|
|
147
|
+
/** On Animation start play */
|
|
148
|
+
AnimationVolume = 2,
|
|
149
|
+
/** On skeleton data asset changed */
|
|
150
|
+
AssetVolume = 4
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* @internal
|
|
154
|
+
*/
|
|
155
|
+
export declare enum RendererUpdateFlags {
|
|
156
|
+
/** Include world position and world bounds. */
|
|
157
|
+
WorldVolume = 1
|
|
63
158
|
}
|
|
64
159
|
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Texture2D, SubPrimitive, Vector3 } from "@galacean/engine";
|
|
2
|
+
import { Skeleton, Color, BlendMode, SkeletonData } from "@esotericsoftware/spine-core";
|
|
3
|
+
import { SpineAnimation } from "./SpineAnimation";
|
|
4
|
+
import { AdaptiveTexture } from "./loader/LoaderUtils";
|
|
5
|
+
import { ReturnablePool } from "./util/ReturnablePool";
|
|
6
|
+
import { ClearablePool } from "./util/ClearablePool";
|
|
7
|
+
declare class SubRenderItem {
|
|
8
|
+
subPrimitive: SubPrimitive;
|
|
9
|
+
blendMode: BlendMode;
|
|
10
|
+
texture: any;
|
|
11
|
+
slotName?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare class SpineGenerator {
|
|
14
|
+
static QUAD_TRIANGLES: number[];
|
|
15
|
+
static VERTEX_SIZE: number;
|
|
16
|
+
static VERTEX_STRIDE: number;
|
|
17
|
+
static tempDark: Color;
|
|
18
|
+
static tempColor: Color;
|
|
19
|
+
static tempVerts: any[];
|
|
20
|
+
static tempBlendMode: BlendMode | null;
|
|
21
|
+
static tempTexture: AdaptiveTexture | null;
|
|
22
|
+
static subPrimitivePool: ReturnablePool<SubPrimitive>;
|
|
23
|
+
static subRenderItemPool: ClearablePool<SubRenderItem>;
|
|
24
|
+
bounds: {
|
|
25
|
+
min: Vector3;
|
|
26
|
+
max: Vector3;
|
|
27
|
+
};
|
|
28
|
+
private _clipper;
|
|
29
|
+
private _subRenderItems;
|
|
30
|
+
private _separateSlots;
|
|
31
|
+
private _separateSlotTextureMap;
|
|
32
|
+
getMaxVertexCount(skeletonData: SkeletonData): number;
|
|
33
|
+
buildPrimitive(skeleton: Skeleton, renderer: SpineAnimation): void;
|
|
34
|
+
addSeparateSlot(slotName: string): void;
|
|
35
|
+
addSeparateSlotTexture(slotName: string, texture: Texture2D): void;
|
|
36
|
+
private createMaterialForTexture;
|
|
37
|
+
private expandByPoint;
|
|
38
|
+
private getSkinVertexCount;
|
|
39
|
+
}
|
|
40
|
+
export {};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { Engine, Texture2D } from "@galacean/engine";
|
|
1
|
+
import { Engine, Texture2D, SubPrimitive } from "@galacean/engine";
|
|
2
2
|
import { Skeleton, SkeletonData, Color, BlendMode } from "@esotericsoftware/spine-core";
|
|
3
|
-
import { SubPrimitive } from "./SpinePrimitive";
|
|
4
3
|
import { SpineRenderSetting } from "../types";
|
|
5
4
|
import { AdaptiveTexture } from "../loader/LoaderUtils";
|
|
6
5
|
import { SpineAnimation } from "../SpineAnimation";
|
|
@@ -1,12 +1,4 @@
|
|
|
1
|
-
import { Engine, Buffer,
|
|
2
|
-
export declare class SubPrimitive {
|
|
3
|
-
/** Start drawing offset. */
|
|
4
|
-
start: number;
|
|
5
|
-
/** Drawing count. */
|
|
6
|
-
count: number;
|
|
7
|
-
/** Drawing topology. */
|
|
8
|
-
topology?: MeshTopology;
|
|
9
|
-
}
|
|
1
|
+
import { Engine, Buffer, SubPrimitive } from '@galacean/engine';
|
|
10
2
|
export declare class SpinePrimitive {
|
|
11
3
|
private _primitive;
|
|
12
4
|
private _subPrimitive;
|
package/types/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./loader/SpineLoader";
|
|
2
|
-
import "./loader/EditorSkeletonDataLoader";
|
|
3
2
|
import "./loader/EditorSpineAtlasLoader";
|
|
4
3
|
export { SpineAnimation } from "./SpineAnimation";
|
|
4
|
+
export { SkeletonDataResource } from "./loader/SkeletonDataResource";
|
|
5
|
+
export { createTextureAtlas } from "./loader/LoaderUtils";
|
|
5
6
|
export * from "@esotericsoftware/spine-core";
|
|
6
|
-
export { generateTextureAtlas } from "./loader/LoaderUtils";
|
|
7
7
|
export declare const version = "__buildVersion";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AssetPromise, Loader, LoadItem, ResourceManager } from "@galacean/engine";
|
|
2
|
-
import {
|
|
3
|
-
declare class EditorSkeletonDataLoader extends Loader<
|
|
4
|
-
load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<
|
|
2
|
+
import { SkeletonDataResource } from "./SkeletonDataResource";
|
|
3
|
+
declare class EditorSkeletonDataLoader extends Loader<SkeletonDataResource> {
|
|
4
|
+
load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<SkeletonDataResource>;
|
|
5
5
|
}
|
|
6
6
|
export { EditorSkeletonDataLoader };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Engine, Texture2D } from "@galacean/engine";
|
|
2
2
|
import { TextureAtlas, SkeletonData, Texture, TextureFilter, TextureWrap } from "@esotericsoftware/spine-core";
|
|
3
|
-
|
|
4
|
-
export declare function
|
|
5
|
-
export declare function
|
|
3
|
+
export declare function createSkeletonData(textureAtlas: TextureAtlas, skeletonTextData: string | ArrayBuffer, skeletonFileType: 'json' | 'skel'): SkeletonData;
|
|
4
|
+
export declare function loadTexturesByPath(imagePaths: string[], imageExtensions: string[], engine: Engine): Promise<Texture2D[]>;
|
|
5
|
+
export declare function loadTextureAtlas(atlasPath: string, engine: Engine): Promise<TextureAtlas>;
|
|
6
|
+
export declare function createTextureAtlas(atlasText: string, textures: Texture2D[]): TextureAtlas;
|
|
6
7
|
export declare function getBaseUrl(url: string): string;
|
|
7
8
|
export declare class AdaptiveTexture extends Texture {
|
|
8
9
|
texture: Texture2D;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SkeletonData } from "@esotericsoftware/spine-core";
|
|
2
|
+
import { Engine, ReferResource, Texture2D } from "@galacean/engine";
|
|
3
|
+
export declare class SkeletonDataResource extends ReferResource {
|
|
4
|
+
readonly textures: Texture2D[];
|
|
5
|
+
private _skeletonData;
|
|
6
|
+
get skeletonData(): SkeletonData;
|
|
7
|
+
constructor(engine: Engine, skeletonData: SkeletonData);
|
|
8
|
+
protected _onDestroy(): void;
|
|
9
|
+
private _disassociationSuperResource;
|
|
10
|
+
private _associationTextureInSkeletonData;
|
|
11
|
+
private _clearAttachmentTextures;
|
|
12
|
+
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { AssetPromise, Loader, LoadItem, ResourceManager } from "@galacean/engine";
|
|
2
|
-
import {
|
|
2
|
+
import { SkeletonDataResource } from "./SkeletonDataResource";
|
|
3
3
|
export type SpineAssetBundle = {
|
|
4
4
|
skeletonPath: string;
|
|
5
5
|
skeletonExtension: string;
|
|
6
|
+
skeletonTextData?: string | ArrayBuffer;
|
|
6
7
|
atlasPath: string;
|
|
7
8
|
imagePaths: string[];
|
|
8
9
|
imageExtensions: string[];
|
|
@@ -13,9 +14,15 @@ type SpineLoaderParams = {
|
|
|
13
14
|
type SpineLoadItem = LoadItem & {
|
|
14
15
|
params?: SpineLoaderParams;
|
|
15
16
|
};
|
|
16
|
-
declare class SpineLoader extends Loader<
|
|
17
|
+
export declare class SpineLoader extends Loader<SkeletonDataResource> {
|
|
17
18
|
static imageExtensions: string[];
|
|
18
19
|
static skeletonExtensions: string[];
|
|
19
|
-
|
|
20
|
+
static parseAndAssignSpineAsset(url: string, fileExtension: string | null, bundle: SpineAssetBundle): void;
|
|
21
|
+
static deriveAndAssignSpineAsset(url: string, fileExtension: string | null, bundle: SpineAssetBundle): void;
|
|
22
|
+
static verifyFileExtensions(fileExtensions: string | string[], expectArray: boolean): string | string[] | null;
|
|
23
|
+
load(item: SpineLoadItem, resourceManager: ResourceManager): AssetPromise<SkeletonDataResource>;
|
|
24
|
+
private _handleEditorAsset;
|
|
25
|
+
private _handleOriginAsset;
|
|
26
|
+
private determineSkeletonDataType;
|
|
20
27
|
}
|
|
21
|
-
export {
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class BufferReader {
|
|
2
|
+
data: Uint8Array;
|
|
3
|
+
private _dataView;
|
|
4
|
+
private _position;
|
|
5
|
+
constructor(data: Uint8Array, byteOffset?: number, byteLength?: number);
|
|
6
|
+
nextUint16(): number;
|
|
7
|
+
nextStr(): string;
|
|
8
|
+
nextImageData(): Uint8Array;
|
|
9
|
+
private decodeText;
|
|
10
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { SkeletonData, AnimationStateData } from "@esotericsoftware/spine-core";
|
|
2
|
+
import { Material } from "@galacean/engine";
|
|
3
|
+
declare class Cache<K, V> {
|
|
4
|
+
protected _cache: Map<K, V>;
|
|
5
|
+
get(key: K): V;
|
|
6
|
+
set(key: K, value: V): void;
|
|
7
|
+
clear(keys?: K[]): void;
|
|
8
|
+
}
|
|
9
|
+
export declare class AnimationStateDataCache extends Cache<SkeletonData, AnimationStateData> {
|
|
10
|
+
private static _instance;
|
|
11
|
+
static get instance(): AnimationStateDataCache;
|
|
12
|
+
getAnimationStateData(skeletonData: SkeletonData): AnimationStateData;
|
|
13
|
+
}
|
|
14
|
+
export declare class MaterialCache extends Cache<string, Material> {
|
|
15
|
+
private static _instance;
|
|
16
|
+
static get instance(): MaterialCache;
|
|
17
|
+
getMaterial(key: string): Material;
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{VertexAttachment as e}from"./attachments/Attachment.js";import{StringSet as t,Utils as s,MathUtils as r}from"./Utils.js";import{SequenceMode as a,SequenceModeValues as i}from"./attachments/Sequence.js";class n{name;timelines=[];timelineIds=new t;duration;constructor(e,t,s){if(!e)throw new Error("name cannot be null.");this.name=e,this.setTimelines(t),this.duration=s}setTimelines(e){if(!e)throw new Error("timelines cannot be null.");this.timelines=e,this.timelineIds.clear();for(var t=0;t<e.length;t++)this.timelineIds.addAll(e[t].getPropertyIds())}hasTimeline(e){for(let t=0;t<e.length;t++)if(this.timelineIds.contains(e[t]))return!0;return!1}apply(e,t,s,r,a,i,n,l){if(!e)throw new Error("skeleton cannot be null.");r&&0!=this.duration&&(s%=this.duration,t>0&&(t%=this.duration));let c=this.timelines;for(let r=0,h=c.length;r<h;r++)c[r].apply(e,t,s,a,i,n,l)}}var l,c;!function(e){e[e.setup=0]="setup",e[e.first=1]="first",e[e.replace=2]="replace",e[e.add=3]="add"}(l||(l={})),function(e){e[e.mixIn=0]="mixIn",e[e.mixOut=1]="mixOut"}(c||(c={}));const h={rotate:0,x:1,y:2,scaleX:3,scaleY:4,shearX:5,shearY:6,inherit:7,rgb:8,alpha:9,rgb2:10,attachment:11,deform:12,event:13,drawOrder:14,ikConstraint:15,transformConstraint:16,pathConstraintPosition:17,pathConstraintSpacing:18,pathConstraintMix:19,physicsConstraintInertia:20,physicsConstraintStrength:21,physicsConstraintDamping:22,physicsConstraintMass:23,physicsConstraintWind:24,physicsConstraintGravity:25,physicsConstraintMix:26,physicsConstraintReset:27,sequence:28};class o{propertyIds;frames;constructor(e,t){this.propertyIds=t,this.frames=s.newFloatArray(e*this.getFrameEntries())}getPropertyIds(){return this.propertyIds}getFrameEntries(){return 1}getFrameCount(){return this.frames.length/this.getFrameEntries()}getDuration(){return this.frames[this.frames.length-this.getFrameEntries()]}static search1(e,t){let s=e.length;for(let r=1;r<s;r++)if(e[r]>t)return r-1;return s-1}static search(e,t,s){let r=e.length;for(let a=s;a<r;a+=s)if(e[a]>t)return a-s;return r-s}}class u extends o{curves;constructor(e,t,r){super(e,r),this.curves=s.newFloatArray(e+18*t),this.curves[e-1]=1}setLinear(e){this.curves[e]=0}setStepped(e){this.curves[e]=1}shrink(e){let t=this.getFrameCount()+18*e;if(this.curves.length>t){let e=s.newFloatArray(t);s.arrayCopy(this.curves,0,e,0,t),this.curves=e}}setBezier(e,t,s,r,a,i,n,l,c,h,o){let u=this.curves,m=this.getFrameCount()+18*e;0==s&&(u[t]=2+m);let d=.03*(r-2*i+l),f=.03*(a-2*n+c),x=.006*(3*(i-l)-r+h),p=.006*(3*(n-c)-a+o),g=2*d+x,b=2*f+p,v=.3*(i-r)+d+.16666667*x,I=.3*(n-a)+f+.16666667*p,y=r+v,Y=a+I;for(let e=m+18;m<e;m+=2)u[m]=y,u[m+1]=Y,v+=g,I+=b,g+=x,b+=p,y+=v,Y+=I}getBezierValue(e,t,s,r){let a=this.curves;if(a[r]>e){let i=this.frames[t],n=this.frames[t+s];return n+(e-i)/(a[r]-i)*(a[r+1]-n)}let i=r+18;for(r+=2;r<i;r+=2)if(a[r]>=e){let t=a[r-2],s=a[r-1];return s+(e-t)/(a[r]-t)*(a[r+1]-s)}t+=this.getFrameEntries();let n=a[i-2],l=a[i-1];return l+(e-n)/(this.frames[t]-n)*(this.frames[t+s]-l)}}class m extends u{constructor(e,t,s){super(e,t,[s])}getFrameEntries(){return 2}setFrame(e,t,s){e<<=1,this.frames[e]=t,this.frames[e+1]=s}getCurveValue(e){let t=this.frames,s=t.length-2;for(let r=2;r<=s;r+=2)if(t[r]>e){s=r-2;break}let r=this.curves[s>>1];switch(r){case 0:let r=t[s],a=t[s+1];return a+(e-r)/(t[s+2]-r)*(t[s+2+1]-a);case 1:return t[s+1]}return this.getBezierValue(e,s,1,r-2)}getRelativeValue(e,t,s,r,a){if(e<this.frames[0]){switch(s){case l.setup:return a;case l.first:return r+(a-r)*t}return r}let i=this.getCurveValue(e);switch(s){case l.setup:return a+i*t;case l.first:case l.replace:i+=a-r}return r+i*t}getAbsoluteValue(e,t,s,r,a){if(e<this.frames[0]){switch(s){case l.setup:return a;case l.first:return r+(a-r)*t}return r}let i=this.getCurveValue(e);return s==l.setup?a+(i-a)*t:r+(i-r)*t}getAbsoluteValue2(e,t,s,r,a,i){if(e<this.frames[0]){switch(s){case l.setup:return a;case l.first:return r+(a-r)*t}return r}return s==l.setup?a+(i-a)*t:r+(i-r)*t}getScaleValue(e,t,s,a,i,n){if(e<this.frames[0]){switch(s){case l.setup:return n;case l.first:return i+(n-i)*t}return i}let h=this.getCurveValue(e)*n;if(1==t)return s==l.add?i+h-n:h;if(a==c.mixOut)switch(s){case l.setup:return n+(Math.abs(h)*r.signum(n)-n)*t;case l.first:case l.replace:return i+(Math.abs(h)*r.signum(i)-i)*t}else{let e=0;switch(s){case l.setup:return e=Math.abs(n)*r.signum(h),e+(h-e)*t;case l.first:case l.replace:return e=Math.abs(i)*r.signum(h),e+(h-e)*t}}return i+(h-n)*t}}class d extends u{constructor(e,t,s,r){super(e,t,[s,r])}getFrameEntries(){return 3}setFrame(e,t,s,r){e*=3,this.frames[e]=t,this.frames[e+1]=s,this.frames[e+2]=r}}class f extends m{boneIndex=0;constructor(e,t,s){super(e,t,h.rotate+"|"+s),this.boneIndex=s}apply(e,t,s,r,a,i,n){let l=e.bones[this.boneIndex];l.active&&(l.rotation=this.getRelativeValue(s,a,i,l.rotation,l.data.rotation))}}class x extends d{boneIndex=0;constructor(e,t,s){super(e,t,h.x+"|"+s,h.y+"|"+s),this.boneIndex=s}apply(e,t,s,r,a,i,n){let c=e.bones[this.boneIndex];if(!c.active)return;let h=this.frames;if(s<h[0]){switch(i){case l.setup:return c.x=c.data.x,void(c.y=c.data.y);case l.first:c.x+=(c.data.x-c.x)*a,c.y+=(c.data.y-c.y)*a}return}let u=0,m=0,d=o.search(h,s,3),f=this.curves[d/3];switch(f){case 0:let e=h[d];u=h[d+1],m=h[d+2];let t=(s-e)/(h[d+3]-e);u+=(h[d+3+1]-u)*t,m+=(h[d+3+2]-m)*t;break;case 1:u=h[d+1],m=h[d+2];break;default:u=this.getBezierValue(s,d,1,f-2),m=this.getBezierValue(s,d,2,f+18-2)}switch(i){case l.setup:c.x=c.data.x+u*a,c.y=c.data.y+m*a;break;case l.first:case l.replace:c.x+=(c.data.x+u-c.x)*a,c.y+=(c.data.y+m-c.y)*a;break;case l.add:c.x+=u*a,c.y+=m*a}}}class p extends m{boneIndex=0;constructor(e,t,s){super(e,t,h.x+"|"+s),this.boneIndex=s}apply(e,t,s,r,a,i,n){let l=e.bones[this.boneIndex];l.active&&(l.x=this.getRelativeValue(s,a,i,l.x,l.data.x))}}class g extends m{boneIndex=0;constructor(e,t,s){super(e,t,h.y+"|"+s),this.boneIndex=s}apply(e,t,s,r,a,i,n){let l=e.bones[this.boneIndex];l.active&&(l.y=this.getRelativeValue(s,a,i,l.y,l.data.y))}}class b extends d{boneIndex=0;constructor(e,t,s){super(e,t,h.scaleX+"|"+s,h.scaleY+"|"+s),this.boneIndex=s}apply(e,t,s,a,i,n,h){let u=e.bones[this.boneIndex];if(!u.active)return;let m,d,f=this.frames;if(s<f[0]){switch(n){case l.setup:return u.scaleX=u.data.scaleX,void(u.scaleY=u.data.scaleY);case l.first:u.scaleX+=(u.data.scaleX-u.scaleX)*i,u.scaleY+=(u.data.scaleY-u.scaleY)*i}return}let x=o.search(f,s,3),p=this.curves[x/3];switch(p){case 0:let e=f[x];m=f[x+1],d=f[x+2];let t=(s-e)/(f[x+3]-e);m+=(f[x+3+1]-m)*t,d+=(f[x+3+2]-d)*t;break;case 1:m=f[x+1],d=f[x+2];break;default:m=this.getBezierValue(s,x,1,p-2),d=this.getBezierValue(s,x,2,p+18-2)}if(m*=u.data.scaleX,d*=u.data.scaleY,1==i)n==l.add?(u.scaleX+=m-u.data.scaleX,u.scaleY+=d-u.data.scaleY):(u.scaleX=m,u.scaleY=d);else{let e=0,t=0;if(h==c.mixOut)switch(n){case l.setup:e=u.data.scaleX,t=u.data.scaleY,u.scaleX=e+(Math.abs(m)*r.signum(e)-e)*i,u.scaleY=t+(Math.abs(d)*r.signum(t)-t)*i;break;case l.first:case l.replace:e=u.scaleX,t=u.scaleY,u.scaleX=e+(Math.abs(m)*r.signum(e)-e)*i,u.scaleY=t+(Math.abs(d)*r.signum(t)-t)*i;break;case l.add:u.scaleX+=(m-u.data.scaleX)*i,u.scaleY+=(d-u.data.scaleY)*i}else switch(n){case l.setup:e=Math.abs(u.data.scaleX)*r.signum(m),t=Math.abs(u.data.scaleY)*r.signum(d),u.scaleX=e+(m-e)*i,u.scaleY=t+(d-t)*i;break;case l.first:case l.replace:e=Math.abs(u.scaleX)*r.signum(m),t=Math.abs(u.scaleY)*r.signum(d),u.scaleX=e+(m-e)*i,u.scaleY=t+(d-t)*i;break;case l.add:u.scaleX+=(m-u.data.scaleX)*i,u.scaleY+=(d-u.data.scaleY)*i}}}}class v extends m{boneIndex=0;constructor(e,t,s){super(e,t,h.scaleX+"|"+s),this.boneIndex=s}apply(e,t,s,r,a,i,n){let l=e.bones[this.boneIndex];l.active&&(l.scaleX=this.getScaleValue(s,a,i,n,l.scaleX,l.data.scaleX))}}class I extends m{boneIndex=0;constructor(e,t,s){super(e,t,h.scaleY+"|"+s),this.boneIndex=s}apply(e,t,s,r,a,i,n){let l=e.bones[this.boneIndex];l.active&&(l.scaleY=this.getScaleValue(s,a,i,n,l.scaleY,l.data.scaleY))}}class y extends d{boneIndex=0;constructor(e,t,s){super(e,t,h.shearX+"|"+s,h.shearY+"|"+s),this.boneIndex=s}apply(e,t,s,r,a,i,n){let c=e.bones[this.boneIndex];if(!c.active)return;let h=this.frames;if(s<h[0]){switch(i){case l.setup:return c.shearX=c.data.shearX,void(c.shearY=c.data.shearY);case l.first:c.shearX+=(c.data.shearX-c.shearX)*a,c.shearY+=(c.data.shearY-c.shearY)*a}return}let u=0,m=0,d=o.search(h,s,3),f=this.curves[d/3];switch(f){case 0:let e=h[d];u=h[d+1],m=h[d+2];let t=(s-e)/(h[d+3]-e);u+=(h[d+3+1]-u)*t,m+=(h[d+3+2]-m)*t;break;case 1:u=h[d+1],m=h[d+2];break;default:u=this.getBezierValue(s,d,1,f-2),m=this.getBezierValue(s,d,2,f+18-2)}switch(i){case l.setup:c.shearX=c.data.shearX+u*a,c.shearY=c.data.shearY+m*a;break;case l.first:case l.replace:c.shearX+=(c.data.shearX+u-c.shearX)*a,c.shearY+=(c.data.shearY+m-c.shearY)*a;break;case l.add:c.shearX+=u*a,c.shearY+=m*a}}}class Y extends m{boneIndex=0;constructor(e,t,s){super(e,t,h.shearX+"|"+s),this.boneIndex=s}apply(e,t,s,r,a,i,n){let l=e.bones[this.boneIndex];l.active&&(l.shearX=this.getRelativeValue(s,a,i,l.shearX,l.data.shearX))}}class X extends m{boneIndex=0;constructor(e,t,s){super(e,t,h.shearY+"|"+s),this.boneIndex=s}apply(e,t,s,r,a,i,n){let l=e.bones[this.boneIndex];l.active&&(l.shearY=this.getRelativeValue(s,a,i,l.shearY,l.data.shearY))}}class C extends o{boneIndex=0;constructor(e,t){super(e,[h.inherit+"|"+t]),this.boneIndex=t}getFrameEntries(){return 2}setFrame(e,t,s){e*=2,this.frames[e]=t,this.frames[e+1]=s}apply(e,t,s,r,a,i,n){let c=e.bones[this.boneIndex];if(!c.active)return;let h=this.frames;s<h[0]?i!=l.setup&&i!=l.first||(c.inherit=c.data.inherit):c.inherit=this.frames[o.search(h,s,2)+1]}}class w extends u{slotIndex=0;constructor(e,t,s){super(e,t,[h.rgb+"|"+s,h.alpha+"|"+s]),this.slotIndex=s}getFrameEntries(){return 5}setFrame(e,t,s,r,a,i){e*=5,this.frames[e]=t,this.frames[e+1]=s,this.frames[e+2]=r,this.frames[e+3]=a,this.frames[e+4]=i}apply(e,t,s,r,a,i,n){let c=e.slots[this.slotIndex];if(!c.bone.active)return;let h=this.frames,u=c.color;if(s<h[0]){let e=c.data.color;switch(i){case l.setup:return void u.setFromColor(e);case l.first:u.add((e.r-u.r)*a,(e.g-u.g)*a,(e.b-u.b)*a,(e.a-u.a)*a)}return}let m=0,d=0,f=0,x=0,p=o.search(h,s,5),g=this.curves[p/5];switch(g){case 0:let e=h[p];m=h[p+1],d=h[p+2],f=h[p+3],x=h[p+4];let t=(s-e)/(h[p+5]-e);m+=(h[p+5+1]-m)*t,d+=(h[p+5+2]-d)*t,f+=(h[p+5+3]-f)*t,x+=(h[p+5+4]-x)*t;break;case 1:m=h[p+1],d=h[p+2],f=h[p+3],x=h[p+4];break;default:m=this.getBezierValue(s,p,1,g-2),d=this.getBezierValue(s,p,2,g+18-2),f=this.getBezierValue(s,p,3,g+36-2),x=this.getBezierValue(s,p,4,g+54-2)}1==a?u.set(m,d,f,x):(i==l.setup&&u.setFromColor(c.data.color),u.add((m-u.r)*a,(d-u.g)*a,(f-u.b)*a,(x-u.a)*a))}}class V extends u{slotIndex=0;constructor(e,t,s){super(e,t,[h.rgb+"|"+s]),this.slotIndex=s}getFrameEntries(){return 4}setFrame(e,t,s,r,a){e<<=2,this.frames[e]=t,this.frames[e+1]=s,this.frames[e+2]=r,this.frames[e+3]=a}apply(e,t,s,r,a,i,n){let c=e.slots[this.slotIndex];if(!c.bone.active)return;let h=this.frames,u=c.color;if(s<h[0]){let e=c.data.color;switch(i){case l.setup:return u.r=e.r,u.g=e.g,void(u.b=e.b);case l.first:u.r+=(e.r-u.r)*a,u.g+=(e.g-u.g)*a,u.b+=(e.b-u.b)*a}return}let m=0,d=0,f=0,x=o.search(h,s,4),p=this.curves[x>>2];switch(p){case 0:let e=h[x];m=h[x+1],d=h[x+2],f=h[x+3];let t=(s-e)/(h[x+4]-e);m+=(h[x+4+1]-m)*t,d+=(h[x+4+2]-d)*t,f+=(h[x+4+3]-f)*t;break;case 1:m=h[x+1],d=h[x+2],f=h[x+3];break;default:m=this.getBezierValue(s,x,1,p-2),d=this.getBezierValue(s,x,2,p+18-2),f=this.getBezierValue(s,x,3,p+36-2)}if(1==a)u.r=m,u.g=d,u.b=f;else{if(i==l.setup){let e=c.data.color;u.r=e.r,u.g=e.g,u.b=e.b}u.r+=(m-u.r)*a,u.g+=(d-u.g)*a,u.b+=(f-u.b)*a}}}class F extends m{slotIndex=0;constructor(e,t,s){super(e,t,h.alpha+"|"+s),this.slotIndex=s}apply(e,t,s,r,a,i,n){let c=e.slots[this.slotIndex];if(!c.bone.active)return;let h=c.color;if(s<this.frames[0]){let e=c.data.color;switch(i){case l.setup:return void(h.a=e.a);case l.first:h.a+=(e.a-h.a)*a}return}let o=this.getCurveValue(s);1==a?h.a=o:(i==l.setup&&(h.a=c.data.color.a),h.a+=(o-h.a)*a)}}class k extends u{slotIndex=0;constructor(e,t,s){super(e,t,[h.rgb+"|"+s,h.alpha+"|"+s,h.rgb2+"|"+s]),this.slotIndex=s}getFrameEntries(){return 8}setFrame(e,t,s,r,a,i,n,l,c){e<<=3,this.frames[e]=t,this.frames[e+1]=s,this.frames[e+2]=r,this.frames[e+3]=a,this.frames[e+4]=i,this.frames[e+5]=n,this.frames[e+6]=l,this.frames[e+7]=c}apply(e,t,s,r,a,i,n){let c=e.slots[this.slotIndex];if(!c.bone.active)return;let h=this.frames,u=c.color,m=c.darkColor;if(s<h[0]){let e=c.data.color,t=c.data.darkColor;switch(i){case l.setup:return u.setFromColor(e),m.r=t.r,m.g=t.g,void(m.b=t.b);case l.first:u.add((e.r-u.r)*a,(e.g-u.g)*a,(e.b-u.b)*a,(e.a-u.a)*a),m.r+=(t.r-m.r)*a,m.g+=(t.g-m.g)*a,m.b+=(t.b-m.b)*a}return}let d=0,f=0,x=0,p=0,g=0,b=0,v=0,I=o.search(h,s,8),y=this.curves[I>>3];switch(y){case 0:let e=h[I];d=h[I+1],f=h[I+2],x=h[I+3],p=h[I+4],g=h[I+5],b=h[I+6],v=h[I+7];let t=(s-e)/(h[I+8]-e);d+=(h[I+8+1]-d)*t,f+=(h[I+8+2]-f)*t,x+=(h[I+8+3]-x)*t,p+=(h[I+8+4]-p)*t,g+=(h[I+8+5]-g)*t,b+=(h[I+8+6]-b)*t,v+=(h[I+8+7]-v)*t;break;case 1:d=h[I+1],f=h[I+2],x=h[I+3],p=h[I+4],g=h[I+5],b=h[I+6],v=h[I+7];break;default:d=this.getBezierValue(s,I,1,y-2),f=this.getBezierValue(s,I,2,y+18-2),x=this.getBezierValue(s,I,3,y+36-2),p=this.getBezierValue(s,I,4,y+54-2),g=this.getBezierValue(s,I,5,y+72-2),b=this.getBezierValue(s,I,6,y+90-2),v=this.getBezierValue(s,I,7,y+108-2)}if(1==a)u.set(d,f,x,p),m.r=g,m.g=b,m.b=v;else{if(i==l.setup){u.setFromColor(c.data.color);let e=c.data.darkColor;m.r=e.r,m.g=e.g,m.b=e.b}u.add((d-u.r)*a,(f-u.g)*a,(x-u.b)*a,(p-u.a)*a),m.r+=(g-m.r)*a,m.g+=(b-m.g)*a,m.b+=(v-m.b)*a}}}class S extends u{slotIndex=0;constructor(e,t,s){super(e,t,[h.rgb+"|"+s,h.rgb2+"|"+s]),this.slotIndex=s}getFrameEntries(){return 7}setFrame(e,t,s,r,a,i,n,l){e*=7,this.frames[e]=t,this.frames[e+1]=s,this.frames[e+2]=r,this.frames[e+3]=a,this.frames[e+4]=i,this.frames[e+5]=n,this.frames[e+6]=l}apply(e,t,s,r,a,i,n){let c=e.slots[this.slotIndex];if(!c.bone.active)return;let h=this.frames,u=c.color,m=c.darkColor;if(s<h[0]){let e=c.data.color,t=c.data.darkColor;switch(i){case l.setup:return u.r=e.r,u.g=e.g,u.b=e.b,m.r=t.r,m.g=t.g,void(m.b=t.b);case l.first:u.r+=(e.r-u.r)*a,u.g+=(e.g-u.g)*a,u.b+=(e.b-u.b)*a,m.r+=(t.r-m.r)*a,m.g+=(t.g-m.g)*a,m.b+=(t.b-m.b)*a}return}let d=0,f=0,x=0,p=0,g=0,b=0,v=o.search(h,s,7),I=this.curves[v/7];switch(I){case 0:let e=h[v];d=h[v+1],f=h[v+2],x=h[v+3],p=h[v+4],g=h[v+5],b=h[v+6];let t=(s-e)/(h[v+7]-e);d+=(h[v+7+1]-d)*t,f+=(h[v+7+2]-f)*t,x+=(h[v+7+3]-x)*t,p+=(h[v+7+4]-p)*t,g+=(h[v+7+5]-g)*t,b+=(h[v+7+6]-b)*t;break;case 1:d=h[v+1],f=h[v+2],x=h[v+3],p=h[v+4],g=h[v+5],b=h[v+6];break;default:d=this.getBezierValue(s,v,1,I-2),f=this.getBezierValue(s,v,2,I+18-2),x=this.getBezierValue(s,v,3,I+36-2),p=this.getBezierValue(s,v,4,I+54-2),g=this.getBezierValue(s,v,5,I+72-2),b=this.getBezierValue(s,v,6,I+90-2)}if(1==a)u.r=d,u.g=f,u.b=x,m.r=p,m.g=g,m.b=b;else{if(i==l.setup){let e=c.data.color,t=c.data.darkColor;u.r=e.r,u.g=e.g,u.b=e.b,m.r=t.r,m.g=t.g,m.b=t.b}u.r+=(d-u.r)*a,u.g+=(f-u.g)*a,u.b+=(x-u.b)*a,m.r+=(p-m.r)*a,m.g+=(g-m.g)*a,m.b+=(b-m.b)*a}}}class z extends o{slotIndex=0;attachmentNames;constructor(e,t){super(e,[h.attachment+"|"+t]),this.slotIndex=t,this.attachmentNames=new Array(e)}getFrameCount(){return this.frames.length}setFrame(e,t,s){this.frames[e]=t,this.attachmentNames[e]=s}apply(e,t,s,r,a,i,n){let h=e.slots[this.slotIndex];h.bone.active&&(n!=c.mixOut?s<this.frames[0]?i!=l.setup&&i!=l.first||this.setAttachment(e,h,h.data.attachmentName):this.setAttachment(e,h,this.attachmentNames[o.search1(this.frames,s)]):i==l.setup&&this.setAttachment(e,h,h.data.attachmentName))}setAttachment(e,t,s){t.setAttachment(s?e.getAttachment(this.slotIndex,s):null)}}class B extends u{slotIndex=0;attachment;vertices;constructor(e,t,s,r){super(e,t,[h.deform+"|"+s+"|"+r.id]),this.slotIndex=s,this.attachment=r,this.vertices=new Array(e)}getFrameCount(){return this.frames.length}setFrame(e,t,s){this.frames[e]=t,this.vertices[e]=s}setBezier(e,t,s,r,a,i,n,l,c,h,o){let u=this.curves,m=this.getFrameCount()+18*e;0==s&&(u[t]=2+m);let d=.03*(r-2*i+l),f=.03*c-.06*n,x=.006*(3*(i-l)-r+h),p=.018*(n-c+.33333333),g=2*d+x,b=2*f+p,v=.3*(i-r)+d+.16666667*x,I=.3*n+f+.16666667*p,y=r+v,Y=I;for(let e=m+18;m<e;m+=2)u[m]=y,u[m+1]=Y,v+=g,I+=b,g+=x,b+=p,y+=v,Y+=I}getCurvePercent(e,t){let s=this.curves,r=s[t];switch(r){case 0:let s=this.frames[t];return(e-s)/(this.frames[t+this.getFrameEntries()]-s);case 1:return 0}if(r-=2,s[r]>e){let a=this.frames[t];return s[r+1]*(e-a)/(s[r]-a)}let a=r+18;for(r+=2;r<a;r+=2)if(s[r]>=e){let t=s[r-2],a=s[r-1];return a+(e-t)/(s[r]-t)*(s[r+1]-a)}let i=s[a-2],n=s[a-1];return n+(1-n)*(e-i)/(this.frames[t+this.getFrameEntries()]-i)}apply(t,r,a,i,n,c,h){let u=t.slots[this.slotIndex];if(!u.bone.active)return;let m=u.getAttachment();if(!m)return;if(!(m instanceof e)||m.timelineAttachment!=this.attachment)return;let d=u.deform;0==d.length&&(c=l.setup);let f=this.vertices,x=f[0].length,p=this.frames;if(a<p[0]){switch(c){case l.setup:return void(d.length=0);case l.first:if(1==n)return void(d.length=0);d.length=x;let e=m;if(e.bones){n=1-n;for(g=0;g<x;g++)d[g]*=n}else{let t=e.vertices;for(var g=0;g<x;g++)d[g]+=(t[g]-d[g])*n}}return}if(d.length=x,a>=p[p.length-1]){let e=f[p.length-1];if(1==n)if(c==l.add){let t=m;if(t.bones)for(let t=0;t<x;t++)d[t]+=e[t];else{let s=t.vertices;for(let t=0;t<x;t++)d[t]+=e[t]-s[t]}}else s.arrayCopy(e,0,d,0,x);else switch(c){case l.setup:{let t=m;if(t.bones)for(let t=0;t<x;t++)d[t]=e[t]*n;else{let s=t.vertices;for(let t=0;t<x;t++){let r=s[t];d[t]=r+(e[t]-r)*n}}break}case l.first:case l.replace:for(let t=0;t<x;t++)d[t]+=(e[t]-d[t])*n;break;case l.add:let t=m;if(t.bones)for(let t=0;t<x;t++)d[t]+=e[t]*n;else{let s=t.vertices;for(let t=0;t<x;t++)d[t]+=(e[t]-s[t])*n}}return}let b=o.search1(p,a),v=this.getCurvePercent(a,b),I=f[b],y=f[b+1];if(1==n)if(c==l.add){let e=m;if(e.bones)for(let e=0;e<x;e++){let t=I[e];d[e]+=t+(y[e]-t)*v}else{let t=e.vertices;for(let e=0;e<x;e++){let s=I[e];d[e]+=s+(y[e]-s)*v-t[e]}}}else for(let e=0;e<x;e++){let t=I[e];d[e]=t+(y[e]-t)*v}else switch(c){case l.setup:{let e=m;if(e.bones)for(let e=0;e<x;e++){let t=I[e];d[e]=(t+(y[e]-t)*v)*n}else{let t=e.vertices;for(let e=0;e<x;e++){let s=I[e],r=t[e];d[e]=r+(s+(y[e]-s)*v-r)*n}}break}case l.first:case l.replace:for(let e=0;e<x;e++){let t=I[e];d[e]+=(t+(y[e]-t)*v-d[e])*n}break;case l.add:let e=m;if(e.bones)for(let e=0;e<x;e++){let t=I[e];d[e]+=(t+(y[e]-t)*v)*n}else{let t=e.vertices;for(let e=0;e<x;e++){let s=I[e];d[e]+=(s+(y[e]-s)*v-t[e])*n}}}}}class E extends o{static propertyIds=[""+h.event];events;constructor(e){super(e,E.propertyIds),this.events=new Array(e)}getFrameCount(){return this.frames.length}setFrame(e,t){this.frames[e]=t.time,this.events[e]=t}apply(e,t,s,r,a,i,n){if(!r)return;let l=this.frames,c=this.frames.length;if(t>s)this.apply(e,t,Number.MAX_VALUE,r,a,i,n),t=-1;else if(t>=l[c-1])return;if(s<l[0])return;let h=0;if(t<l[0])h=0;else{h=o.search1(l,t)+1;let e=l[h];for(;h>0&&l[h-1]==e;)h--}for(;h<c&&s>=l[h];h++)r.push(this.events[h])}}class R extends o{static propertyIds=[""+h.drawOrder];drawOrders;constructor(e){super(e,R.propertyIds),this.drawOrders=new Array(e)}getFrameCount(){return this.frames.length}setFrame(e,t,s){this.frames[e]=t,this.drawOrders[e]=s}apply(e,t,r,a,i,n,h){if(h==c.mixOut)return void(n==l.setup&&s.arrayCopy(e.slots,0,e.drawOrder,0,e.slots.length));if(r<this.frames[0])return void(n!=l.setup&&n!=l.first||s.arrayCopy(e.slots,0,e.drawOrder,0,e.slots.length));let u=o.search1(this.frames,r),m=this.drawOrders[u];if(m){let t=e.drawOrder,s=e.slots;for(let e=0,r=m.length;e<r;e++)t[e]=s[m[e]]}else s.arrayCopy(e.slots,0,e.drawOrder,0,e.slots.length)}}class A extends u{constraintIndex=0;constructor(e,t,s){super(e,t,[h.ikConstraint+"|"+s]),this.constraintIndex=s}getFrameEntries(){return 6}setFrame(e,t,s,r,a,i,n){e*=6,this.frames[e]=t,this.frames[e+1]=s,this.frames[e+2]=r,this.frames[e+3]=a,this.frames[e+4]=i?1:0,this.frames[e+5]=n?1:0}apply(e,t,s,r,a,i,n){let h=e.ikConstraints[this.constraintIndex];if(!h.active)return;let u=this.frames;if(s<u[0]){switch(i){case l.setup:return h.mix=h.data.mix,h.softness=h.data.softness,h.bendDirection=h.data.bendDirection,h.compress=h.data.compress,void(h.stretch=h.data.stretch);case l.first:h.mix+=(h.data.mix-h.mix)*a,h.softness+=(h.data.softness-h.softness)*a,h.bendDirection=h.data.bendDirection,h.compress=h.data.compress,h.stretch=h.data.stretch}return}let m=0,d=0,f=o.search(u,s,6),x=this.curves[f/6];switch(x){case 0:let e=u[f];m=u[f+1],d=u[f+2];let t=(s-e)/(u[f+6]-e);m+=(u[f+6+1]-m)*t,d+=(u[f+6+2]-d)*t;break;case 1:m=u[f+1],d=u[f+2];break;default:m=this.getBezierValue(s,f,1,x-2),d=this.getBezierValue(s,f,2,x+18-2)}i==l.setup?(h.mix=h.data.mix+(m-h.data.mix)*a,h.softness=h.data.softness+(d-h.data.softness)*a,n==c.mixOut?(h.bendDirection=h.data.bendDirection,h.compress=h.data.compress,h.stretch=h.data.stretch):(h.bendDirection=u[f+3],h.compress=0!=u[f+4],h.stretch=0!=u[f+5])):(h.mix+=(m-h.mix)*a,h.softness+=(d-h.softness)*a,n==c.mixIn&&(h.bendDirection=u[f+3],h.compress=0!=u[f+4],h.stretch=0!=u[f+5]))}}class M extends u{constraintIndex=0;constructor(e,t,s){super(e,t,[h.transformConstraint+"|"+s]),this.constraintIndex=s}getFrameEntries(){return 7}setFrame(e,t,s,r,a,i,n,l){let c=this.frames;c[e*=7]=t,c[e+1]=s,c[e+2]=r,c[e+3]=a,c[e+4]=i,c[e+5]=n,c[e+6]=l}apply(e,t,s,r,a,i,n){let c=e.transformConstraints[this.constraintIndex];if(!c.active)return;let h,u,m,d,f,x,p=this.frames;if(s<p[0]){let e=c.data;switch(i){case l.setup:return c.mixRotate=e.mixRotate,c.mixX=e.mixX,c.mixY=e.mixY,c.mixScaleX=e.mixScaleX,c.mixScaleY=e.mixScaleY,void(c.mixShearY=e.mixShearY);case l.first:c.mixRotate+=(e.mixRotate-c.mixRotate)*a,c.mixX+=(e.mixX-c.mixX)*a,c.mixY+=(e.mixY-c.mixY)*a,c.mixScaleX+=(e.mixScaleX-c.mixScaleX)*a,c.mixScaleY+=(e.mixScaleY-c.mixScaleY)*a,c.mixShearY+=(e.mixShearY-c.mixShearY)*a}return}let g=o.search(p,s,7),b=this.curves[g/7];switch(b){case 0:let e=p[g];h=p[g+1],u=p[g+2],m=p[g+3],d=p[g+4],f=p[g+5],x=p[g+6];let t=(s-e)/(p[g+7]-e);h+=(p[g+7+1]-h)*t,u+=(p[g+7+2]-u)*t,m+=(p[g+7+3]-m)*t,d+=(p[g+7+4]-d)*t,f+=(p[g+7+5]-f)*t,x+=(p[g+7+6]-x)*t;break;case 1:h=p[g+1],u=p[g+2],m=p[g+3],d=p[g+4],f=p[g+5],x=p[g+6];break;default:h=this.getBezierValue(s,g,1,b-2),u=this.getBezierValue(s,g,2,b+18-2),m=this.getBezierValue(s,g,3,b+36-2),d=this.getBezierValue(s,g,4,b+54-2),f=this.getBezierValue(s,g,5,b+72-2),x=this.getBezierValue(s,g,6,b+90-2)}if(i==l.setup){let e=c.data;c.mixRotate=e.mixRotate+(h-e.mixRotate)*a,c.mixX=e.mixX+(u-e.mixX)*a,c.mixY=e.mixY+(m-e.mixY)*a,c.mixScaleX=e.mixScaleX+(d-e.mixScaleX)*a,c.mixScaleY=e.mixScaleY+(f-e.mixScaleY)*a,c.mixShearY=e.mixShearY+(x-e.mixShearY)*a}else c.mixRotate+=(h-c.mixRotate)*a,c.mixX+=(u-c.mixX)*a,c.mixY+=(m-c.mixY)*a,c.mixScaleX+=(d-c.mixScaleX)*a,c.mixScaleY+=(f-c.mixScaleY)*a,c.mixShearY+=(x-c.mixShearY)*a}}class O extends m{constraintIndex=0;constructor(e,t,s){super(e,t,h.pathConstraintPosition+"|"+s),this.constraintIndex=s}apply(e,t,s,r,a,i,n){let l=e.pathConstraints[this.constraintIndex];l.active&&(l.position=this.getAbsoluteValue(s,a,i,l.position,l.data.position))}}class D extends m{constraintIndex=0;constructor(e,t,s){super(e,t,h.pathConstraintSpacing+"|"+s),this.constraintIndex=s}apply(e,t,s,r,a,i,n){let l=e.pathConstraints[this.constraintIndex];l.active&&(l.spacing=this.getAbsoluteValue(s,a,i,l.spacing,l.data.spacing))}}class N extends u{constraintIndex=0;constructor(e,t,s){super(e,t,[h.pathConstraintMix+"|"+s]),this.constraintIndex=s}getFrameEntries(){return 4}setFrame(e,t,s,r,a){let i=this.frames;i[e<<=2]=t,i[e+1]=s,i[e+2]=r,i[e+3]=a}apply(e,t,s,r,a,i,n){let c=e.pathConstraints[this.constraintIndex];if(!c.active)return;let h,u,m,d=this.frames;if(s<d[0]){switch(i){case l.setup:return c.mixRotate=c.data.mixRotate,c.mixX=c.data.mixX,void(c.mixY=c.data.mixY);case l.first:c.mixRotate+=(c.data.mixRotate-c.mixRotate)*a,c.mixX+=(c.data.mixX-c.mixX)*a,c.mixY+=(c.data.mixY-c.mixY)*a}return}let f=o.search(d,s,4),x=this.curves[f>>2];switch(x){case 0:let e=d[f];h=d[f+1],u=d[f+2],m=d[f+3];let t=(s-e)/(d[f+4]-e);h+=(d[f+4+1]-h)*t,u+=(d[f+4+2]-u)*t,m+=(d[f+4+3]-m)*t;break;case 1:h=d[f+1],u=d[f+2],m=d[f+3];break;default:h=this.getBezierValue(s,f,1,x-2),u=this.getBezierValue(s,f,2,x+18-2),m=this.getBezierValue(s,f,3,x+36-2)}if(i==l.setup){let e=c.data;c.mixRotate=e.mixRotate+(h-e.mixRotate)*a,c.mixX=e.mixX+(u-e.mixX)*a,c.mixY=e.mixY+(m-e.mixY)*a}else c.mixRotate+=(h-c.mixRotate)*a,c.mixX+=(u-c.mixX)*a,c.mixY+=(m-c.mixY)*a}}class G extends m{constraintIndex=0;constructor(e,t,s,r){super(e,t,r+"|"+s),this.constraintIndex=s}apply(e,t,s,r,a,i,n){let l;if(-1==this.constraintIndex){const t=s>=this.frames[0]?this.getCurveValue(s):0;for(const r of e.physicsConstraints)r.active&&this.global(r.data)&&this.set(r,this.getAbsoluteValue2(s,a,i,this.get(r),this.setup(r),t))}else l=e.physicsConstraints[this.constraintIndex],l.active&&this.set(l,this.getAbsoluteValue(s,a,i,this.get(l),this.setup(l)))}}class q extends G{constructor(e,t,s){super(e,t,s,h.physicsConstraintInertia)}setup(e){return e.data.inertia}get(e){return e.inertia}set(e,t){e.inertia=t}global(e){return e.inertiaGlobal}}class T extends G{constructor(e,t,s){super(e,t,s,h.physicsConstraintStrength)}setup(e){return e.data.strength}get(e){return e.strength}set(e,t){e.strength=t}global(e){return e.strengthGlobal}}class L extends G{constructor(e,t,s){super(e,t,s,h.physicsConstraintDamping)}setup(e){return e.data.damping}get(e){return e.damping}set(e,t){e.damping=t}global(e){return e.dampingGlobal}}class P extends G{constructor(e,t,s){super(e,t,s,h.physicsConstraintMass)}setup(e){return 1/e.data.massInverse}get(e){return 1/e.massInverse}set(e,t){e.massInverse=1/t}global(e){return e.massGlobal}}class j extends G{constructor(e,t,s){super(e,t,s,h.physicsConstraintWind)}setup(e){return e.data.wind}get(e){return e.wind}set(e,t){e.wind=t}global(e){return e.windGlobal}}class U extends G{constructor(e,t,s){super(e,t,s,h.physicsConstraintGravity)}setup(e){return e.data.gravity}get(e){return e.gravity}set(e,t){e.gravity=t}global(e){return e.gravityGlobal}}class W extends G{constructor(e,t,s){super(e,t,s,h.physicsConstraintMix)}setup(e){return e.data.mix}get(e){return e.mix}set(e,t){e.mix=t}global(e){return e.mixGlobal}}class _ extends o{static propertyIds=[h.physicsConstraintReset.toString()];constraintIndex;constructor(e,t){super(e,_.propertyIds),this.constraintIndex=t}getFrameCount(){return this.frames.length}setFrame(e,t){this.frames[e]=t}apply(e,t,s,r,a,i,n){let l;if(-1!=this.constraintIndex&&(l=e.physicsConstraints[this.constraintIndex],!l.active))return;const c=this.frames;if(t>s)this.apply(e,t,Number.MAX_VALUE,[],a,i,n),t=-1;else if(t>=c[c.length-1])return;if(!(s<c[0])&&(t<c[0]||s>=c[o.search1(c,t)+1]))if(null!=l)l.reset();else for(const t of e.physicsConstraints)t.active&&t.reset()}}class H extends o{static ENTRIES=3;static MODE=1;static DELAY=2;slotIndex;attachment;constructor(e,t,s){super(e,[h.sequence+"|"+t+"|"+s.sequence.id]),this.slotIndex=t,this.attachment=s}getFrameEntries(){return H.ENTRIES}getSlotIndex(){return this.slotIndex}getAttachment(){return this.attachment}setFrame(e,t,s,r,a){let i=this.frames;i[e*=H.ENTRIES]=t,i[e+H.MODE]=s|r<<4,i[e+H.DELAY]=a}apply(t,s,r,n,c,h,u){let m=t.slots[this.slotIndex];if(!m.bone.active)return;let d=m.attachment,f=this.attachment;if(!(d==f||d instanceof e&&d.timelineAttachment==f))return;let x=this.frames;if(r<x[0])return void(h!=l.setup&&h!=l.first||(m.sequenceIndex=-1));let p=o.search(x,r,H.ENTRIES),g=x[p],b=x[p+H.MODE],v=x[p+H.DELAY];if(!this.attachment.sequence)return;let I=b>>4,y=this.attachment.sequence.regions.length,Y=i[15&b];if(Y!=a.hold)switch(I+=(r-g)/v+1e-5|0,Y){case a.once:I=Math.min(y-1,I);break;case a.loop:I%=y;break;case a.pingpong:{let e=(y<<1)-2;I=0==e?0:I%e,I>=y&&(I=e-I);break}case a.onceReverse:I=Math.max(y-1-I,0);break;case a.loopReverse:I=y-1-I%y;break;case a.pingpongReverse:{let e=(y<<1)-2;I=0==e?0:(I+y-1)%e,I>=y&&(I=e-I)}}m.sequenceIndex=I}}export{F as AlphaTimeline,n as Animation,z as AttachmentTimeline,u as CurveTimeline,m as CurveTimeline1,d as CurveTimeline2,B as DeformTimeline,R as DrawOrderTimeline,E as EventTimeline,A as IkConstraintTimeline,C as InheritTimeline,l as MixBlend,c as MixDirection,N as PathConstraintMixTimeline,O as PathConstraintPositionTimeline,D as PathConstraintSpacingTimeline,L as PhysicsConstraintDampingTimeline,U as PhysicsConstraintGravityTimeline,q as PhysicsConstraintInertiaTimeline,P as PhysicsConstraintMassTimeline,W as PhysicsConstraintMixTimeline,_ as PhysicsConstraintResetTimeline,T as PhysicsConstraintStrengthTimeline,G as PhysicsConstraintTimeline,j as PhysicsConstraintWindTimeline,S as RGB2Timeline,k as RGBA2Timeline,w as RGBATimeline,V as RGBTimeline,f as RotateTimeline,b as ScaleTimeline,v as ScaleXTimeline,I as ScaleYTimeline,H as SequenceTimeline,y as ShearTimeline,Y as ShearXTimeline,X as ShearYTimeline,o as Timeline,M as TransformConstraintTimeline,x as TranslateTimeline,p as TranslateXTimeline,g as TranslateYTimeline};
|
|
2
|
-
//# sourceMappingURL=Animation.js.map
|