@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.
Files changed (121) hide show
  1. package/dist/browser.js +1 -1
  2. package/dist/main.js +1 -1
  3. package/dist/main.js.map +1 -1
  4. package/dist/miniprogram.js +1 -0
  5. package/dist/module.js +1 -1
  6. package/dist/module.js.map +1 -1
  7. package/package.json +6 -3
  8. package/types/SpineAnimation.d.ts +114 -19
  9. package/types/SpineGenerator.d.ts +40 -0
  10. package/types/core/SpineGenerator.d.ts +1 -2
  11. package/types/core/SpinePrimitive.d.ts +1 -9
  12. package/types/index.d.ts +2 -2
  13. package/types/loader/EditorSkeletonDataLoader.d.ts +3 -3
  14. package/types/loader/LoaderUtils.d.ts +4 -3
  15. package/types/loader/SkeletonDataResource.d.ts +12 -0
  16. package/types/loader/SpineLoader.d.ts +11 -4
  17. package/types/util/BlendMode.d.ts +4 -0
  18. package/types/util/BufferReader.d.ts +10 -0
  19. package/types/util/Cache.d.ts +19 -0
  20. package/types/util/ClearablePool.d.ts +8 -0
  21. package/types/util/ReturnablePool.d.ts +8 -0
  22. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Animation.js +0 -2
  23. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Animation.js.map +0 -1
  24. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationState.js +0 -2
  25. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationState.js.map +0 -1
  26. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationStateData.js +0 -2
  27. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationStateData.js.map +0 -1
  28. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AssetManagerBase.js +0 -2
  29. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AssetManagerBase.js.map +0 -1
  30. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AtlasAttachmentLoader.js +0 -2
  31. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AtlasAttachmentLoader.js.map +0 -1
  32. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Bone.js +0 -2
  33. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Bone.js.map +0 -1
  34. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/BoneData.js +0 -2
  35. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/BoneData.js.map +0 -1
  36. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/ConstraintData.js +0 -2
  37. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/ConstraintData.js.map +0 -1
  38. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Event.js +0 -2
  39. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Event.js.map +0 -1
  40. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/EventData.js +0 -2
  41. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/EventData.js.map +0 -1
  42. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraint.js +0 -2
  43. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraint.js.map +0 -1
  44. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraintData.js +0 -2
  45. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraintData.js.map +0 -1
  46. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraint.js +0 -2
  47. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraint.js.map +0 -1
  48. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraintData.js +0 -2
  49. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraintData.js.map +0 -1
  50. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraint.js +0 -2
  51. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraint.js.map +0 -1
  52. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraintData.js +0 -2
  53. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraintData.js.map +0 -1
  54. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skeleton.js +0 -2
  55. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skeleton.js.map +0 -1
  56. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBinary.js +0 -2
  57. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBinary.js.map +0 -1
  58. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBounds.js +0 -2
  59. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBounds.js.map +0 -1
  60. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonClipping.js +0 -2
  61. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonClipping.js.map +0 -1
  62. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonData.js +0 -2
  63. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonData.js.map +0 -1
  64. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonJson.js +0 -2
  65. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonJson.js.map +0 -1
  66. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skin.js +0 -2
  67. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skin.js.map +0 -1
  68. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Slot.js +0 -2
  69. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Slot.js.map +0 -1
  70. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SlotData.js +0 -2
  71. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SlotData.js.map +0 -1
  72. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Texture.js +0 -2
  73. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Texture.js.map +0 -1
  74. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TextureAtlas.js +0 -2
  75. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TextureAtlas.js.map +0 -1
  76. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraint.js +0 -2
  77. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraint.js.map +0 -1
  78. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraintData.js +0 -2
  79. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraintData.js.map +0 -1
  80. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Triangulator.js +0 -2
  81. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Triangulator.js.map +0 -1
  82. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Utils.js +0 -2
  83. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Utils.js.map +0 -1
  84. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Attachment.js +0 -2
  85. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Attachment.js.map +0 -1
  86. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/BoundingBoxAttachment.js +0 -2
  87. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/BoundingBoxAttachment.js.map +0 -1
  88. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/ClippingAttachment.js +0 -2
  89. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/ClippingAttachment.js.map +0 -1
  90. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/MeshAttachment.js +0 -2
  91. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/MeshAttachment.js.map +0 -1
  92. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PathAttachment.js +0 -2
  93. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PathAttachment.js.map +0 -1
  94. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PointAttachment.js +0 -2
  95. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PointAttachment.js.map +0 -1
  96. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/RegionAttachment.js +0 -2
  97. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/RegionAttachment.js.map +0 -1
  98. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Sequence.js +0 -2
  99. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Sequence.js.map +0 -1
  100. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/polyfills.js +0 -2
  101. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/polyfills.js.map +0 -1
  102. package/dist/esm/node_modules/tslib/tslib.es6.js +0 -2
  103. package/dist/esm/node_modules/tslib/tslib.es6.js.map +0 -1
  104. package/dist/esm/src/SpineAnimation.js +0 -2
  105. package/dist/esm/src/SpineAnimation.js.map +0 -1
  106. package/dist/esm/src/SpineMaterial.js +0 -2
  107. package/dist/esm/src/SpineMaterial.js.map +0 -1
  108. package/dist/esm/src/core/SpineGenerator.js +0 -2
  109. package/dist/esm/src/core/SpineGenerator.js.map +0 -1
  110. package/dist/esm/src/core/SpinePrimitive.js +0 -2
  111. package/dist/esm/src/core/SpinePrimitive.js.map +0 -1
  112. package/dist/esm/src/index.js +0 -2
  113. package/dist/esm/src/index.js.map +0 -1
  114. package/dist/esm/src/loader/EditorSkeletonDataLoader.js +0 -2
  115. package/dist/esm/src/loader/EditorSkeletonDataLoader.js.map +0 -1
  116. package/dist/esm/src/loader/EditorSpineAtlasLoader.js +0 -2
  117. package/dist/esm/src/loader/EditorSpineAtlasLoader.js.map +0 -1
  118. package/dist/esm/src/loader/LoaderUtils.js +0 -2
  119. package/dist/esm/src/loader/LoaderUtils.js.map +0 -1
  120. package/dist/esm/src/loader/SpineLoader.js +0 -2
  121. 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-6d3110b4d9-20240531",
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": "jest",
57
- "test-cov": "jest --coverage",
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 { SpineGenerator } from "./core/SpineGenerator";
3
- import { SpineRenderSetting } from "./types";
4
- import { Renderer, Entity, Material, Engine, BoundingBox, Primitive } from "@galacean/engine";
5
- import { SubPrimitive } from "./core/SpinePrimitive";
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 _uvMacro;
15
- private static _enableVertexColorMacro;
16
- private static _tempOffset;
17
- private static _tempSize;
18
- private static _tempArray;
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
- protected _skeleton: Skeleton;
25
- protected _state: AnimationState;
26
- protected _spineGenerator: SpineGenerator;
27
- set skeletonData(value: SkeletonData);
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
- _onAwake(): void;
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
- protected _render(context: any): void;
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
- protected _updateBounds(worldBounds: BoundingBox): void;
108
+ _onDestroy(): void;
55
109
  /**
56
110
  * @internal
57
111
  */
58
- _cloneTo(target: SpineAnimation, srcRoot: Entity, targetRoot: Entity): void;
112
+ _createBuffer(vertexCount: number): void;
59
113
  /**
60
114
  * @internal
61
115
  */
62
- protected _onDestroy(): void;
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, MeshTopology } from '@galacean/engine';
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 { SkeletonData } from "@esotericsoftware/spine-core";
3
- declare class EditorSkeletonDataLoader extends Loader<SkeletonData> {
4
- load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<SkeletonData>;
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
- import { SpineAssetBundle } from "./SpineLoader";
4
- export declare function loadAndCreateSpineSkeletonData(bundle: SpineAssetBundle, engine: Engine): Promise<SkeletonData>;
5
- export declare function generateTextureAtlas(atlasText: string, textureMap: Record<string, Texture2D>): TextureAtlas;
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 { SkeletonData } from "@esotericsoftware/spine-core";
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<SkeletonData> {
17
+ export declare class SpineLoader extends Loader<SkeletonDataResource> {
17
18
  static imageExtensions: string[];
18
19
  static skeletonExtensions: string[];
19
- load(item: SpineLoadItem, resourceManager: ResourceManager): AssetPromise<SkeletonData>;
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 { SpineLoader };
28
+ export {};
@@ -0,0 +1,4 @@
1
+ import { BlendMode } from "@esotericsoftware/spine-core";
2
+ import { Material } from "@galacean/engine";
3
+ export declare function setBlendMode(material: Material, blendMode: BlendMode): void;
4
+ export declare function getBlendMode(material: Material): BlendMode;
@@ -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 {};
@@ -0,0 +1,8 @@
1
+ export declare class ClearablePool<T> {
2
+ private _type;
3
+ private _elements;
4
+ private _usedElementCount;
5
+ constructor(type: new () => T);
6
+ get(): T;
7
+ clear(): void;
8
+ }
@@ -0,0 +1,8 @@
1
+ export declare class ReturnablePool<T> {
2
+ private _type;
3
+ private _elements;
4
+ private _lastElementIndex;
5
+ constructor(type: new () => T, initializeCount?: number);
6
+ get(): T;
7
+ return(element: T): void;
8
+ }
@@ -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