@safe-engine/pixi 8.1.4 → 8.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -3
- package/dist/@types/index.d.ts +2 -0
- package/dist/@types/safex.d.ts +168 -0
- package/dist/app.d.ts +1 -2
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +25 -24
- package/dist/base/EnhancedComponent.d.ts +25 -0
- package/dist/base/EnhancedComponent.d.ts.map +1 -0
- package/dist/base/EnhancedComponent.js +26 -0
- package/dist/base/gworld.d.ts +8 -0
- package/dist/base/gworld.d.ts.map +1 -0
- package/dist/base/gworld.js +16 -0
- package/dist/base/index.d.ts +4 -0
- package/dist/base/index.d.ts.map +1 -0
- package/dist/base/index.js +3 -0
- package/dist/base/utils.d.ts +6 -0
- package/dist/base/utils.d.ts.map +1 -0
- package/dist/base/utils.js +3 -0
- package/dist/collider/CollideComponent.d.ts +63 -0
- package/dist/collider/CollideComponent.d.ts.map +1 -0
- package/dist/collider/CollideComponent.js +236 -0
- package/dist/collider/CollideSystem.d.ts +26 -0
- package/dist/collider/CollideSystem.d.ts.map +1 -0
- package/dist/collider/CollideSystem.js +159 -0
- package/dist/collider/helper/Intersection.d.ts +7 -0
- package/dist/collider/helper/Intersection.d.ts.map +1 -0
- package/dist/collider/helper/Intersection.js +111 -0
- package/dist/collider/helper/utils.d.ts +3 -0
- package/dist/collider/helper/utils.d.ts.map +1 -0
- package/dist/collider/helper/utils.js +11 -0
- package/dist/collider/index.d.ts +3 -0
- package/dist/collider/index.d.ts.map +1 -0
- package/dist/collider/index.js +2 -0
- package/dist/components/BaseComponent.d.ts +6 -5
- package/dist/components/BaseComponent.d.ts.map +1 -1
- package/dist/components/BaseComponent.js +7 -9
- package/dist/components/GUIComponent.d.ts +22 -19
- package/dist/components/GUIComponent.d.ts.map +1 -1
- package/dist/components/GUIComponent.js +27 -44
- package/dist/components/NoRenderComponent.d.ts +33 -0
- package/dist/components/NodeComp.d.ts +13 -13
- package/dist/components/NodeComp.d.ts.map +1 -1
- package/dist/components/NodeComp.js +32 -28
- package/dist/components/RenderComponent.d.ts +7 -6
- package/dist/components/Scene.d.ts +2 -3
- package/dist/components/Scene.d.ts.map +1 -1
- package/dist/components/Scene.js +6 -10
- package/dist/core/Color.d.ts +1 -0
- package/dist/core/Color.d.ts.map +1 -1
- package/dist/core/Color.js +3 -6
- package/dist/core/LoadingBar.js +10 -15
- package/dist/core/NodePool.d.ts +9 -0
- package/dist/core/NodePool.d.ts.map +1 -0
- package/dist/core/NodePool.js +24 -0
- package/dist/core/Size.js +1 -4
- package/dist/core/director.d.ts +3 -0
- package/dist/core/director.d.ts.map +1 -0
- package/dist/core/director.js +7 -0
- package/dist/core/math.d.ts +4 -0
- package/dist/core/math.d.ts.map +1 -0
- package/dist/core/math.js +10 -0
- package/dist/dragonbones/DragonBonesComponent.d.ts +17 -0
- package/dist/dragonbones/DragonBonesComponent.d.ts.map +1 -0
- package/dist/dragonbones/DragonBonesComponent.js +18 -0
- package/dist/dragonbones/DragonBonesSystem.d.ts +6 -0
- package/dist/dragonbones/DragonBonesSystem.d.ts.map +1 -0
- package/dist/dragonbones/DragonBonesSystem.js +29 -0
- package/dist/dragonbones/index.d.ts +3 -0
- package/dist/dragonbones/index.d.ts.map +1 -0
- package/dist/dragonbones/index.js +2 -0
- package/dist/gui/GUIComponent.d.ts +99 -0
- package/dist/gui/GUIComponent.d.ts.map +1 -0
- package/dist/gui/GUIComponent.js +123 -0
- package/dist/{systems → gui}/GUISystem.d.ts +1 -1
- package/dist/gui/GUISystem.d.ts.map +1 -0
- package/dist/gui/GUISystem.js +100 -0
- package/dist/helper/html-text-parser.d.ts +19 -29
- package/dist/helper/html-text-parser.d.ts.map +1 -1
- package/dist/helper/html-text-parser.js +57 -346
- package/dist/helper/utils.d.ts +2 -3
- package/dist/helper/utils.d.ts.map +1 -1
- package/dist/helper/utils.js +18 -23
- package/dist/index.d.ts +16 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -28
- package/dist/norender/NoRenderComponent.d.ts +33 -0
- package/dist/norender/NoRenderComponent.d.ts.map +1 -0
- package/dist/norender/NoRenderComponent.js +50 -0
- package/dist/norender/NoRenderSystem.d.ts +5 -0
- package/dist/norender/NoRenderSystem.d.ts.map +1 -0
- package/dist/norender/NoRenderSystem.js +57 -0
- package/dist/planck/PhysicsComponent.d.ts +37 -0
- package/dist/planck/PhysicsComponent.d.ts.map +1 -0
- package/dist/planck/PhysicsComponent.js +52 -0
- package/dist/planck/PhysicsSprite.d.ts +16 -0
- package/dist/planck/PhysicsSprite.d.ts.map +1 -0
- package/dist/planck/PhysicsSprite.js +31 -0
- package/dist/planck/PhysicsSystem.d.ts +20 -0
- package/dist/planck/PhysicsSystem.d.ts.map +1 -0
- package/dist/planck/PhysicsSystem.js +187 -0
- package/dist/planck/index.d.ts +4 -0
- package/dist/planck/index.d.ts.map +1 -0
- package/dist/planck/index.js +3 -0
- package/dist/render/RenderComponent.d.ts +52 -0
- package/dist/render/RenderComponent.d.ts.map +1 -0
- package/dist/render/RenderComponent.js +104 -0
- package/dist/render/RenderSystem.d.ts.map +1 -0
- package/dist/render/RenderSystem.js +65 -0
- package/dist/spine/SpineComponent.d.ts +10 -0
- package/dist/spine/SpineComponent.d.ts.map +1 -0
- package/dist/spine/SpineComponent.js +3 -0
- package/dist/spine/SpineSystem.d.ts +5 -0
- package/dist/spine/SpineSystem.d.ts.map +1 -0
- package/dist/spine/SpineSystem.js +25 -0
- package/dist/spine/index.d.ts +3 -0
- package/dist/spine/index.d.ts.map +1 -0
- package/dist/spine/index.js +2 -0
- package/dist/spine/lib/BatchableSpineSlot.d.ts +59 -0
- package/dist/spine/lib/BatchableSpineSlot.d.ts.map +1 -0
- package/dist/spine/lib/BatchableSpineSlot.js +86 -0
- package/dist/spine/lib/Spine.d.ts +239 -0
- package/dist/spine/lib/Spine.d.ts.map +1 -0
- package/dist/spine/lib/Spine.js +628 -0
- package/dist/spine/lib/SpineDebugRenderer.d.ts +109 -0
- package/dist/spine/lib/SpineDebugRenderer.d.ts.map +1 -0
- package/dist/spine/lib/SpineDebugRenderer.js +474 -0
- package/dist/spine/lib/SpinePipe.d.ts +49 -0
- package/dist/spine/lib/SpinePipe.d.ts.map +1 -0
- package/dist/spine/lib/SpinePipe.js +148 -0
- package/dist/spine/lib/SpineTexture.d.ts +45 -0
- package/dist/spine/lib/SpineTexture.d.ts.map +1 -0
- package/dist/spine/lib/SpineTexture.js +114 -0
- package/dist/spine/lib/assets/atlasLoader.d.ts +34 -0
- package/dist/spine/lib/assets/atlasLoader.d.ts.map +1 -0
- package/dist/spine/lib/assets/atlasLoader.js +122 -0
- package/dist/spine/lib/assets/skeletonLoader.d.ts +30 -0
- package/dist/spine/lib/assets/skeletonLoader.d.ts.map +1 -0
- package/dist/spine/lib/assets/skeletonLoader.js +70 -0
- package/dist/spine/lib/darktint/DarkTintBatchGeometry.d.ts +33 -0
- package/dist/spine/lib/darktint/DarkTintBatchGeometry.d.ts.map +1 -0
- package/dist/spine/lib/darktint/DarkTintBatchGeometry.js +84 -0
- package/dist/spine/lib/darktint/DarkTintBatcher.d.ts +50 -0
- package/dist/spine/lib/darktint/DarkTintBatcher.d.ts.map +1 -0
- package/dist/spine/lib/darktint/DarkTintBatcher.js +131 -0
- package/dist/spine/lib/darktint/DarkTintShader.d.ts +33 -0
- package/dist/spine/lib/darktint/DarkTintShader.d.ts.map +1 -0
- package/dist/spine/lib/darktint/DarkTintShader.js +59 -0
- package/dist/spine/lib/darktint/darkTintBit.d.ts +51 -0
- package/dist/spine/lib/darktint/darkTintBit.d.ts.map +1 -0
- package/dist/spine/lib/darktint/darkTintBit.js +75 -0
- package/dist/spine/lib/index.d.ts +42 -0
- package/dist/spine/lib/index.d.ts.map +1 -0
- package/dist/spine/lib/index.js +41 -0
- package/dist/spine/lib/require-shim.d.ts +33 -0
- package/dist/spine/lib/require-shim.d.ts.map +1 -0
- package/dist/spine/lib/require-shim.js +38 -0
- package/package.json +13 -9
- package/dist/components/RenderComponent.d.ts.map +0 -1
- package/dist/components/RenderComponent.js +0 -58
- package/dist/systems/GUISystem.d.ts.map +0 -1
- package/dist/systems/GUISystem.js +0 -90
- package/dist/systems/RenderSystem.d.ts.map +0 -1
- package/dist/systems/RenderSystem.js +0 -67
- /package/dist/{systems → render}/RenderSystem.d.ts +0 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { EventTypes } from 'entityx-ts';
|
|
2
|
+
import { Container, Graphics, Sprite } from 'pixi.js';
|
|
3
|
+
import { NodeComp } from '..';
|
|
4
|
+
import { LoadingBar } from '../core/LoadingBar';
|
|
5
|
+
import { GraphicsRender, MaskRender, NodeRender, SpriteRender } from './RenderComponent';
|
|
6
|
+
export var SpriteTypes;
|
|
7
|
+
(function (SpriteTypes) {
|
|
8
|
+
SpriteTypes[SpriteTypes["SIMPLE"] = 0] = "SIMPLE";
|
|
9
|
+
SpriteTypes[SpriteTypes["SLICED"] = 1] = "SLICED";
|
|
10
|
+
SpriteTypes[SpriteTypes["TILED"] = 2] = "TILED";
|
|
11
|
+
SpriteTypes[SpriteTypes["FILLED"] = 3] = "FILLED";
|
|
12
|
+
SpriteTypes[SpriteTypes["MESH"] = 4] = "MESH";
|
|
13
|
+
SpriteTypes[SpriteTypes["ANIMATION"] = 5] = "ANIMATION";
|
|
14
|
+
})(SpriteTypes || (SpriteTypes = {}));
|
|
15
|
+
export class RenderSystem {
|
|
16
|
+
configure(event_manager) {
|
|
17
|
+
event_manager.subscribe(EventTypes.ComponentAdded, NodeRender, ({ entity }) => {
|
|
18
|
+
const nodeRenderComp = entity.getComponent(NodeRender);
|
|
19
|
+
const node = new Container();
|
|
20
|
+
nodeRenderComp.node = entity.assign(new NodeComp(node, entity));
|
|
21
|
+
});
|
|
22
|
+
event_manager.subscribe(EventTypes.ComponentAdded, SpriteRender, ({ entity, component }) => {
|
|
23
|
+
const { spriteFrame, type, fillType, fillRange, fillCenter } = component;
|
|
24
|
+
// console.log('SpriteRender ComponentAdded', component)
|
|
25
|
+
const node = Sprite.from(spriteFrame);
|
|
26
|
+
if (type === SpriteTypes.FILLED) {
|
|
27
|
+
// console.log('fillType', fillType)
|
|
28
|
+
const loadingBar = new LoadingBar(fillType, node);
|
|
29
|
+
if (fillRange)
|
|
30
|
+
loadingBar.progress = fillRange;
|
|
31
|
+
if (fillCenter)
|
|
32
|
+
loadingBar.fillCenter = fillCenter;
|
|
33
|
+
component.loadingBar = loadingBar;
|
|
34
|
+
// node.setMidpoint(fillCenter)
|
|
35
|
+
}
|
|
36
|
+
// node.texture.rotate = 8
|
|
37
|
+
component.node = entity.assign(new NodeComp(node, entity));
|
|
38
|
+
// component.node.anchorX = 0.5
|
|
39
|
+
// component.node.anchorY = 0.5
|
|
40
|
+
});
|
|
41
|
+
event_manager.subscribe(EventTypes.ComponentAdded, MaskRender, ({ component }) => {
|
|
42
|
+
console.log('MaskRender', component);
|
|
43
|
+
// const { type, segments, inverted } = maskComp
|
|
44
|
+
// const node = new cc.ClippingNode()
|
|
45
|
+
// node.setInverted(inverted)
|
|
46
|
+
// maskComp.node = ett.assign(new NodeComp(node, ett))
|
|
47
|
+
});
|
|
48
|
+
event_manager.subscribe(EventTypes.ComponentAdded, GraphicsRender, ({ entity, component }) => {
|
|
49
|
+
const { lineWidth, strokeColor, fillColor } = component;
|
|
50
|
+
// console.log('GraphicsRender', component);
|
|
51
|
+
const node = new Graphics();
|
|
52
|
+
node.fill(fillColor);
|
|
53
|
+
// node.fillStyle = fillColor
|
|
54
|
+
node.stroke(strokeColor);
|
|
55
|
+
node.width = lineWidth;
|
|
56
|
+
component.node = entity.assign(new NodeComp(node, entity));
|
|
57
|
+
// node.drawCircle(0, 0, 100)
|
|
58
|
+
});
|
|
59
|
+
event_manager.subscribe(EventTypes.ComponentRemoved, NodeComp, ({ component }) => {
|
|
60
|
+
if (component) {
|
|
61
|
+
component.instance.removeFromParent();
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SpineData, SpineSkeletonProps } from "../@types/safex";
|
|
2
|
+
import { ComponentX } from "../components/BaseComponent";
|
|
3
|
+
export declare class SpineSkeleton extends ComponentX<SpineSkeletonProps> {
|
|
4
|
+
data: SpineData;
|
|
5
|
+
skin: string;
|
|
6
|
+
animation: string;
|
|
7
|
+
loop: boolean;
|
|
8
|
+
timeScale: number;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=SpineComponent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpineComponent.d.ts","sourceRoot":"","sources":["../../src/spine/SpineComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAExD,qBAAa,aAAc,SAAQ,UAAU,CAAC,kBAAkB,CAAC;IAC/D,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,OAAO,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpineSystem.d.ts","sourceRoot":"","sources":["../../src/spine/SpineSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAc,MAAM,EAAE,MAAM,YAAY,CAAA;AAM7D,qBAAa,WAAY,YAAW,MAAM;IACxC,SAAS,CAAC,aAAa,EAAE,YAAY;CAsBtC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { EventTypes } from 'entityx-ts';
|
|
2
|
+
import { Spine } from './lib';
|
|
3
|
+
import { NodeComp } from '../components/NodeComp';
|
|
4
|
+
import { SpineSkeleton } from './SpineComponent';
|
|
5
|
+
export class SpineSystem {
|
|
6
|
+
configure(event_manager) {
|
|
7
|
+
event_manager.subscribe(EventTypes.ComponentAdded, SpineSkeleton, ({ entity, component }) => {
|
|
8
|
+
// console.log('SpineSkeleton', component)
|
|
9
|
+
// const spine = entity.getComponent(SpineSkeleton)
|
|
10
|
+
const { data, skin, animation, loop, timeScale } = component;
|
|
11
|
+
const node = Spine.from(data);
|
|
12
|
+
// node.skeleton.scaleY = -1
|
|
13
|
+
if (skin) {
|
|
14
|
+
node.skeleton.setSkinByName(skin);
|
|
15
|
+
}
|
|
16
|
+
if (animation) {
|
|
17
|
+
node.state.setAnimation(0, animation, loop);
|
|
18
|
+
}
|
|
19
|
+
if (timeScale) {
|
|
20
|
+
node.state.timeScale = timeScale;
|
|
21
|
+
}
|
|
22
|
+
component.node = entity.assign(new NodeComp(node, entity));
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spine/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/** ****************************************************************************
|
|
2
|
+
* Spine Runtimes License Agreement
|
|
3
|
+
* Last updated July 28, 2023. Replaces all prior versions.
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2013-2023, Esoteric Software LLC
|
|
6
|
+
*
|
|
7
|
+
* Integration of the Spine Runtimes into software or otherwise creating
|
|
8
|
+
* derivative works of the Spine Runtimes is permitted under the terms and
|
|
9
|
+
* conditions of Section 2 of the Spine Editor License Agreement:
|
|
10
|
+
* http://esotericsoftware.com/spine-editor-license
|
|
11
|
+
*
|
|
12
|
+
* Otherwise, it is permitted to integrate the Spine Runtimes into software or
|
|
13
|
+
* otherwise create derivative works of the Spine Runtimes (collectively,
|
|
14
|
+
* "Products"), provided that each user of the Products must obtain their own
|
|
15
|
+
* Spine Editor license and redistribution of the Products in any form must
|
|
16
|
+
* include this license and copyright notice.
|
|
17
|
+
*
|
|
18
|
+
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
|
|
19
|
+
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
20
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
21
|
+
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
|
|
22
|
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
23
|
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
|
|
24
|
+
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
|
|
25
|
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
26
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
|
|
27
|
+
* SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
+
*****************************************************************************/
|
|
29
|
+
import { AttachmentCacheData, Spine } from './Spine.js';
|
|
30
|
+
import type { Batch, Batcher, BLEND_MODES, DefaultBatchableMeshElement, Matrix, Texture, Topology } from 'pixi.js';
|
|
31
|
+
export declare class BatchableSpineSlot implements DefaultBatchableMeshElement {
|
|
32
|
+
indexOffset: number;
|
|
33
|
+
attributeOffset: number;
|
|
34
|
+
indexSize: number;
|
|
35
|
+
attributeSize: number;
|
|
36
|
+
batcherName: string;
|
|
37
|
+
topology: Topology;
|
|
38
|
+
readonly packAsQuad = false;
|
|
39
|
+
renderable: Spine;
|
|
40
|
+
positions: Float32Array;
|
|
41
|
+
indices: number[] | Uint16Array;
|
|
42
|
+
uvs: Float32Array;
|
|
43
|
+
roundPixels: 0 | 1;
|
|
44
|
+
data: AttachmentCacheData;
|
|
45
|
+
blendMode: BLEND_MODES;
|
|
46
|
+
darkTint: number;
|
|
47
|
+
texture: Texture;
|
|
48
|
+
transform: Matrix;
|
|
49
|
+
_textureId: number;
|
|
50
|
+
_attributeStart: number;
|
|
51
|
+
_indexStart: number;
|
|
52
|
+
_batcher: Batcher;
|
|
53
|
+
_batch: Batch;
|
|
54
|
+
get color(): number;
|
|
55
|
+
get darkColor(): number;
|
|
56
|
+
get groupTransform(): Matrix;
|
|
57
|
+
setData(renderable: Spine, data: AttachmentCacheData, blendMode: BLEND_MODES, roundPixels: 0 | 1): void;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=BatchableSpineSlot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BatchableSpineSlot.d.ts","sourceRoot":"","sources":["../../../src/spine/lib/BatchableSpineSlot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;+EA2B+E;AAE/E,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnH,qBAAa,kBAAmB,YAAW,2BAA2B;IACrE,WAAW,SAAK;IAChB,eAAe,SAAK;IAEpB,SAAS,EAAG,MAAM,CAAC;IACnB,aAAa,EAAG,MAAM,CAAC;IAEvB,WAAW,SAAc;IAEzB,QAAQ,EAAE,QAAQ,CAAmB;IAErC,QAAQ,CAAC,UAAU,SAAS;IAE5B,UAAU,EAAG,KAAK,CAAC;IAEnB,SAAS,EAAG,YAAY,CAAC;IACzB,OAAO,EAAG,MAAM,EAAE,GAAG,WAAW,CAAC;IACjC,GAAG,EAAG,YAAY,CAAC;IAEnB,WAAW,EAAG,CAAC,GAAG,CAAC,CAAC;IACpB,IAAI,EAAG,mBAAmB,CAAC;IAC3B,SAAS,EAAG,WAAW,CAAC;IAExB,QAAQ,EAAG,MAAM,CAAC;IAElB,OAAO,EAAG,OAAO,CAAC;IAElB,SAAS,EAAG,MAAM,CAAC;IAGnB,UAAU,EAAG,MAAM,CAAC;IACpB,eAAe,EAAG,MAAM,CAAC;IACzB,WAAW,EAAG,MAAM,CAAC;IACrB,QAAQ,EAAG,OAAO,CAAC;IACnB,MAAM,EAAG,KAAK,CAAC;IAGf,IAAI,KAAK,WAyBR;IAED,IAAI,SAAS,WAGZ;IAED,IAAI,cAAc,WAA8C;IAEhE,OAAO,CACN,UAAU,EAAE,KAAK,EACjB,IAAI,EAAE,mBAAmB,EACzB,SAAS,EAAE,WAAW,EACtB,WAAW,EAAE,CAAC,GAAG,CAAC;CA6BnB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/** ****************************************************************************
|
|
2
|
+
* Spine Runtimes License Agreement
|
|
3
|
+
* Last updated July 28, 2023. Replaces all prior versions.
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2013-2023, Esoteric Software LLC
|
|
6
|
+
*
|
|
7
|
+
* Integration of the Spine Runtimes into software or otherwise creating
|
|
8
|
+
* derivative works of the Spine Runtimes is permitted under the terms and
|
|
9
|
+
* conditions of Section 2 of the Spine Editor License Agreement:
|
|
10
|
+
* http://esotericsoftware.com/spine-editor-license
|
|
11
|
+
*
|
|
12
|
+
* Otherwise, it is permitted to integrate the Spine Runtimes into software or
|
|
13
|
+
* otherwise create derivative works of the Spine Runtimes (collectively,
|
|
14
|
+
* "Products"), provided that each user of the Products must obtain their own
|
|
15
|
+
* Spine Editor license and redistribution of the Products in any form must
|
|
16
|
+
* include this license and copyright notice.
|
|
17
|
+
*
|
|
18
|
+
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
|
|
19
|
+
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
20
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
21
|
+
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
|
|
22
|
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
23
|
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
|
|
24
|
+
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
|
|
25
|
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
26
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
|
|
27
|
+
* SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
+
*****************************************************************************/
|
|
29
|
+
export class BatchableSpineSlot {
|
|
30
|
+
constructor() {
|
|
31
|
+
this.indexOffset = 0;
|
|
32
|
+
this.attributeOffset = 0;
|
|
33
|
+
this.batcherName = 'darkTint';
|
|
34
|
+
this.topology = 'triangle-list';
|
|
35
|
+
this.packAsQuad = false;
|
|
36
|
+
}
|
|
37
|
+
get color() {
|
|
38
|
+
const slotColor = this.data.color;
|
|
39
|
+
const parentColor = this.renderable.groupColor;
|
|
40
|
+
const parentAlpha = this.renderable.groupAlpha;
|
|
41
|
+
let abgr;
|
|
42
|
+
const mixedA = (slotColor.a * parentAlpha) * 255;
|
|
43
|
+
if (parentColor !== 0xFFFFFF) {
|
|
44
|
+
const parentB = (parentColor >> 16) & 0xFF;
|
|
45
|
+
const parentG = (parentColor >> 8) & 0xFF;
|
|
46
|
+
const parentR = parentColor & 0xFF;
|
|
47
|
+
const mixedR = (slotColor.r * parentR);
|
|
48
|
+
const mixedG = (slotColor.g * parentG);
|
|
49
|
+
const mixedB = (slotColor.b * parentB);
|
|
50
|
+
abgr = ((mixedA) << 24) | (mixedB << 16) | (mixedG << 8) | mixedR;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
abgr = ((mixedA) << 24) | ((slotColor.b * 255) << 16) | ((slotColor.g * 255) << 8) | (slotColor.r * 255);
|
|
54
|
+
}
|
|
55
|
+
return abgr;
|
|
56
|
+
}
|
|
57
|
+
get darkColor() {
|
|
58
|
+
const darkColor = this.data.darkColor;
|
|
59
|
+
return ((darkColor.b * 255) << 16) | ((darkColor.g * 255) << 8) | (darkColor.r * 255);
|
|
60
|
+
}
|
|
61
|
+
get groupTransform() { return this.renderable.groupTransform; }
|
|
62
|
+
setData(renderable, data, blendMode, roundPixels) {
|
|
63
|
+
this.renderable = renderable;
|
|
64
|
+
this.transform = renderable.groupTransform;
|
|
65
|
+
this.data = data;
|
|
66
|
+
if (data.clipped) {
|
|
67
|
+
const clippedData = data.clippedData;
|
|
68
|
+
this.indexSize = clippedData.indicesCount;
|
|
69
|
+
this.attributeSize = clippedData.vertexCount;
|
|
70
|
+
this.positions = clippedData.vertices;
|
|
71
|
+
this.indices = clippedData.indices;
|
|
72
|
+
this.uvs = clippedData.uvs;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
this.indexSize = data.indices.length;
|
|
76
|
+
this.attributeSize = data.vertices.length / 2;
|
|
77
|
+
this.positions = data.vertices;
|
|
78
|
+
this.indices = data.indices;
|
|
79
|
+
this.uvs = data.uvs;
|
|
80
|
+
}
|
|
81
|
+
this.texture = data.texture;
|
|
82
|
+
this.roundPixels = roundPixels;
|
|
83
|
+
this.blendMode = blendMode;
|
|
84
|
+
this.batcherName = data.darkTint ? 'darkTint' : 'default';
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/** ****************************************************************************
|
|
2
|
+
* Spine Runtimes License Agreement
|
|
3
|
+
* Last updated July 28, 2023. Replaces all prior versions.
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2013-2023, Esoteric Software LLC
|
|
6
|
+
*
|
|
7
|
+
* Integration of the Spine Runtimes into software or otherwise creating
|
|
8
|
+
* derivative works of the Spine Runtimes is permitted under the terms and
|
|
9
|
+
* conditions of Section 2 of the Spine Editor License Agreement:
|
|
10
|
+
* http://esotericsoftware.com/spine-editor-license
|
|
11
|
+
*
|
|
12
|
+
* Otherwise, it is permitted to integrate the Spine Runtimes into software or
|
|
13
|
+
* otherwise create derivative works of the Spine Runtimes (collectively,
|
|
14
|
+
* "Products"), provided that each user of the Products must obtain their own
|
|
15
|
+
* Spine Editor license and redistribution of the Products in any form must
|
|
16
|
+
* include this license and copyright notice.
|
|
17
|
+
*
|
|
18
|
+
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
|
|
19
|
+
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
20
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
21
|
+
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
|
|
22
|
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
23
|
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
|
|
24
|
+
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
|
|
25
|
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
26
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
|
|
27
|
+
* SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
+
*****************************************************************************/
|
|
29
|
+
import { Bounds, Container, ContainerOptions, DestroyOptions, PointData, Texture, ViewContainer } from 'pixi.js';
|
|
30
|
+
import { ISpineDebugRenderer } from './SpineDebugRenderer.js';
|
|
31
|
+
import { AnimationState, Bone, Color, MeshAttachment, RegionAttachment, Skeleton, SkeletonBounds, SkeletonData, Slot, TrackEntry } from '@esotericsoftware/spine-core';
|
|
32
|
+
/**
|
|
33
|
+
* Options to create a {@link Spine} using {@link Spine.from}.
|
|
34
|
+
*/
|
|
35
|
+
export interface SpineFromOptions {
|
|
36
|
+
/** the asset name for the skeleton `.skel` or `.json` file previously loaded into the Assets */
|
|
37
|
+
skeleton: string;
|
|
38
|
+
/** the asset name for the atlas file previously loaded into the Assets */
|
|
39
|
+
atlas: string;
|
|
40
|
+
/** The value passed to the skeleton reader. If omitted, 1 is passed. See {@link SkeletonBinary.scale} for details. */
|
|
41
|
+
scale?: number;
|
|
42
|
+
/** Set the {@link Spine.autoUpdate} value. If omitted, it is set to `true`. */
|
|
43
|
+
autoUpdate?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* If `true`, use the dark tint renderer to render the skeleton
|
|
46
|
+
* If `false`, use the default pixi renderer to render the skeleton
|
|
47
|
+
* If `undefined`, use the dark tint renderer if at least one slot has tint black
|
|
48
|
+
*/
|
|
49
|
+
darkTint?: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface SpineOptions extends ContainerOptions {
|
|
52
|
+
/** the {@link SkeletonData} used to instantiate the skeleton */
|
|
53
|
+
skeletonData: SkeletonData;
|
|
54
|
+
/** See {@link SpineFromOptions.autoUpdate}. */
|
|
55
|
+
autoUpdate?: boolean;
|
|
56
|
+
/** See {@link SpineFromOptions.darkTint}. */
|
|
57
|
+
darkTint?: boolean;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* AnimationStateListener {@link https://en.esotericsoftware.com/spine-api-reference#AnimationStateListener events} exposed for Pixi.
|
|
61
|
+
*/
|
|
62
|
+
export interface SpineEvents {
|
|
63
|
+
complete: [trackEntry: TrackEntry];
|
|
64
|
+
dispose: [trackEntry: TrackEntry];
|
|
65
|
+
end: [trackEntry: TrackEntry];
|
|
66
|
+
event: [trackEntry: TrackEntry, event: Event];
|
|
67
|
+
interrupt: [trackEntry: TrackEntry];
|
|
68
|
+
start: [trackEntry: TrackEntry];
|
|
69
|
+
}
|
|
70
|
+
export interface AttachmentCacheData {
|
|
71
|
+
id: string;
|
|
72
|
+
clipped: boolean;
|
|
73
|
+
vertices: Float32Array;
|
|
74
|
+
uvs: Float32Array;
|
|
75
|
+
indices: number[];
|
|
76
|
+
color: Color;
|
|
77
|
+
darkColor: Color;
|
|
78
|
+
darkTint: boolean;
|
|
79
|
+
skipRender: boolean;
|
|
80
|
+
texture: Texture;
|
|
81
|
+
clippedData?: {
|
|
82
|
+
vertices: Float32Array;
|
|
83
|
+
uvs: Float32Array;
|
|
84
|
+
indices: Uint16Array;
|
|
85
|
+
vertexCount: number;
|
|
86
|
+
indicesCount: number;
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* The class to instantiate a {@link Spine} game object in Pixi.
|
|
91
|
+
* The static method {@link Spine.from} should be used to instantiate a Spine game object.
|
|
92
|
+
*/
|
|
93
|
+
export declare class Spine extends ViewContainer {
|
|
94
|
+
batched: boolean;
|
|
95
|
+
buildId: number;
|
|
96
|
+
readonly renderPipeId = "spine";
|
|
97
|
+
_didSpineUpdate: boolean;
|
|
98
|
+
beforeUpdateWorldTransforms: (object: Spine) => void;
|
|
99
|
+
afterUpdateWorldTransforms: (object: Spine) => void;
|
|
100
|
+
/** The skeleton for this Spine game object. */
|
|
101
|
+
skeleton: Skeleton;
|
|
102
|
+
/** The animation state for this Spine game object. */
|
|
103
|
+
state: AnimationState;
|
|
104
|
+
skeletonBounds?: SkeletonBounds;
|
|
105
|
+
private darkTint;
|
|
106
|
+
private _debug?;
|
|
107
|
+
readonly _slotsObject: Record<string, {
|
|
108
|
+
slot: Slot;
|
|
109
|
+
container: Container;
|
|
110
|
+
} | null>;
|
|
111
|
+
private clippingSlotToPixiMasks;
|
|
112
|
+
private getSlotFromRef;
|
|
113
|
+
spineAttachmentsDirty: boolean;
|
|
114
|
+
spineTexturesDirty: boolean;
|
|
115
|
+
private _lastAttachments;
|
|
116
|
+
private _stateChanged;
|
|
117
|
+
private attachmentCacheData;
|
|
118
|
+
get debug(): ISpineDebugRenderer | undefined;
|
|
119
|
+
/** Pass a {@link SpineDebugRenderer} or create your own {@link ISpineDebugRenderer} to render bones, meshes, ...
|
|
120
|
+
* @example spineGO.debug = new SpineDebugRenderer();
|
|
121
|
+
*/
|
|
122
|
+
set debug(value: ISpineDebugRenderer | undefined);
|
|
123
|
+
private _autoUpdate;
|
|
124
|
+
get autoUpdate(): boolean;
|
|
125
|
+
/** When `true`, the Spine AnimationState and the Skeleton will be automatically updated using the {@link Ticker.shared} instance. */
|
|
126
|
+
set autoUpdate(value: boolean);
|
|
127
|
+
private hasNeverUpdated;
|
|
128
|
+
constructor(options: SpineOptions | SkeletonData);
|
|
129
|
+
/** If {@link Spine.autoUpdate} is `false`, this method allows to update the AnimationState and the Skeleton with the given delta. */
|
|
130
|
+
update(dt: number): void;
|
|
131
|
+
protected internalUpdate(_deltaFrame: any, deltaSeconds?: number): void;
|
|
132
|
+
get bounds(): Bounds;
|
|
133
|
+
/**
|
|
134
|
+
* Set the position of the bone given in input through a {@link IPointData}.
|
|
135
|
+
* @param bone: the bone name or the bone instance to set the position
|
|
136
|
+
* @param outPos: the new position of the bone.
|
|
137
|
+
* @throws {Error}: if the given bone is not found in the skeleton, an error is thrown
|
|
138
|
+
*/
|
|
139
|
+
setBonePosition(bone: string | Bone, position: PointData): void;
|
|
140
|
+
/**
|
|
141
|
+
* Return the position of the bone given in input into an {@link IPointData}.
|
|
142
|
+
* @param bone: the bone name or the bone instance to get the position from
|
|
143
|
+
* @param outPos: an optional {@link IPointData} to use to return the bone position, rathern than instantiating a new object.
|
|
144
|
+
* @returns {IPointData | undefined}: the position of the bone, or undefined if no matching bone is found in the skeleton
|
|
145
|
+
*/
|
|
146
|
+
getBonePosition(bone: string | Bone, outPos?: PointData): PointData | undefined;
|
|
147
|
+
/**
|
|
148
|
+
* Advance the state and skeleton by the given time, then update slot objects too.
|
|
149
|
+
* The container transform is not updated.
|
|
150
|
+
*
|
|
151
|
+
* @param time the time at which to set the state
|
|
152
|
+
*/
|
|
153
|
+
private _updateAndApplyState;
|
|
154
|
+
/**
|
|
155
|
+
* - validates the attachments - to flag if the attachments have changed this state
|
|
156
|
+
* - transforms the attachments - to update the vertices of the attachments based on the new positions
|
|
157
|
+
* @internal
|
|
158
|
+
*/
|
|
159
|
+
_validateAndTransformAttachments(): void;
|
|
160
|
+
private validateAttachments;
|
|
161
|
+
private updateAndSetPixiMask;
|
|
162
|
+
private currentClippingSlot;
|
|
163
|
+
private transformAttachments;
|
|
164
|
+
private updateClippingData;
|
|
165
|
+
/**
|
|
166
|
+
* ensure that attached containers map correctly to their slots
|
|
167
|
+
* along with their position, rotation, scale, and visibility.
|
|
168
|
+
*/
|
|
169
|
+
private updateSlotObjects;
|
|
170
|
+
private updateSlotObject;
|
|
171
|
+
/** @internal */
|
|
172
|
+
_getCachedData(slot: Slot, attachment: RegionAttachment | MeshAttachment): AttachmentCacheData;
|
|
173
|
+
private initCachedData;
|
|
174
|
+
protected onViewUpdate(): void;
|
|
175
|
+
/**
|
|
176
|
+
* Attaches a PixiJS container to a specified slot. This will map the world transform of the slots bone
|
|
177
|
+
* to the attached container. A container can only be attached to one slot at a time.
|
|
178
|
+
*
|
|
179
|
+
* @param container - The container to attach to the slot
|
|
180
|
+
* @param slotRef - The slot id or slot to attach to
|
|
181
|
+
*/
|
|
182
|
+
addSlotObject(slot: number | string | Slot, container: Container): void;
|
|
183
|
+
/**
|
|
184
|
+
* Removes a PixiJS container from the slot it is attached to.
|
|
185
|
+
*
|
|
186
|
+
* @param container - The container to detach from the slot
|
|
187
|
+
* @param slotOrContainer - The container, slot id or slot to detach from
|
|
188
|
+
*/
|
|
189
|
+
removeSlotObject(slotOrContainer: number | string | Slot | Container): void;
|
|
190
|
+
/**
|
|
191
|
+
* Returns a container attached to a slot, or undefined if no container is attached.
|
|
192
|
+
*
|
|
193
|
+
* @param slotRef - The slot id or slot to get the attachment from
|
|
194
|
+
* @returns - The container attached to the slot
|
|
195
|
+
*/
|
|
196
|
+
getSlotObject(slot: number | string | Slot): Container<import("pixi.js").ContainerChild>;
|
|
197
|
+
protected updateBounds(): void;
|
|
198
|
+
/** @internal */
|
|
199
|
+
addBounds(bounds: Bounds): void;
|
|
200
|
+
/**
|
|
201
|
+
* Destroys this sprite renderable and optionally its texture.
|
|
202
|
+
* @param options - Options parameter. A boolean will act as if all options
|
|
203
|
+
* have been set to that value
|
|
204
|
+
* @param {boolean} [options.texture=false] - Should it destroy the current texture of the renderable as well
|
|
205
|
+
* @param {boolean} [options.textureSource=false] - Should it destroy the textureSource of the renderable as well
|
|
206
|
+
*/
|
|
207
|
+
destroy(options?: DestroyOptions): void;
|
|
208
|
+
/** Converts a point from the skeleton coordinate system to the Pixi world coordinate system. */
|
|
209
|
+
skeletonToPixiWorldCoordinates(point: {
|
|
210
|
+
x: number;
|
|
211
|
+
y: number;
|
|
212
|
+
}): void;
|
|
213
|
+
/** Converts a point from the Pixi world coordinate system to the skeleton coordinate system. */
|
|
214
|
+
pixiWorldCoordinatesToSkeleton(point: {
|
|
215
|
+
x: number;
|
|
216
|
+
y: number;
|
|
217
|
+
}): void;
|
|
218
|
+
/** Converts a point from the Pixi world coordinate system to the bone's local coordinate system. */
|
|
219
|
+
pixiWorldCoordinatesToBone(point: {
|
|
220
|
+
x: number;
|
|
221
|
+
y: number;
|
|
222
|
+
}, bone: Bone): void;
|
|
223
|
+
/**
|
|
224
|
+
* Use this method to instantiate a Spine game object.
|
|
225
|
+
* Before instantiating a Spine game object, the skeleton (`.skel` or `.json`) and the atlas text files must be loaded into the Assets. For example:
|
|
226
|
+
* ```
|
|
227
|
+
* PIXI.Assets.add("sackData", "./assets/sack-pro.skel");
|
|
228
|
+
* PIXI.Assets.add("sackAtlas", "./assets/sack-pma.atlas");
|
|
229
|
+
* await PIXI.Assets.load(["sackData", "sackAtlas"]);
|
|
230
|
+
* ```
|
|
231
|
+
* Once a Spine game object is created, its skeleton data is cached into {@link Cache} using the key:
|
|
232
|
+
* `${skeletonAssetName}-${atlasAssetName}-${options?.scale ?? 1}`
|
|
233
|
+
*
|
|
234
|
+
* @param options - Options to configure the Spine game object. See {@link SpineFromOptions}
|
|
235
|
+
* @returns {Spine} The Spine game object instantiated
|
|
236
|
+
*/
|
|
237
|
+
static from({ skeleton, atlas, scale, darkTint, autoUpdate }: SpineFromOptions): Spine;
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=Spine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spine.d.ts","sourceRoot":"","sources":["../../../src/spine/lib/Spine.ts"],"names":[],"mappings":"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"}
|