@safe-engine/pixi 8.8.1 → 8.8.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/dist/app.d.ts +1 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +20 -1
- package/dist/core/NodePool.d.ts +1 -1
- package/dist/core/Size.d.ts +0 -1
- package/dist/core/Size.d.ts.map +1 -1
- package/dist/dragonbones/DragonBonesComponent.d.ts +1 -1
- package/dist/dragonbones/DragonBonesComponent.d.ts.map +1 -1
- package/dist/dragonbones/DragonBonesComponent.js +1 -1
- package/dist/dragonbones/DragonBonesSystem.d.ts.map +1 -1
- package/dist/dragonbones/DragonBonesSystem.js +1 -1
- package/dist/dragonbones/db-pixi/PixiArmatureDisplay.d.ts +59 -0
- package/dist/dragonbones/db-pixi/PixiArmatureDisplay.d.ts.map +1 -0
- package/dist/dragonbones/db-pixi/PixiArmatureDisplay.js +180 -0
- package/dist/dragonbones/db-pixi/PixiFactory.d.ts +87 -0
- package/dist/dragonbones/db-pixi/PixiFactory.d.ts.map +1 -0
- package/dist/dragonbones/db-pixi/PixiFactory.js +159 -0
- package/dist/dragonbones/db-pixi/PixiSlot.d.ts +31 -0
- package/dist/dragonbones/db-pixi/PixiSlot.d.ts.map +1 -0
- package/dist/dragonbones/db-pixi/PixiSlot.js +332 -0
- package/dist/dragonbones/db-pixi/PixiTextureAtlasData.d.ts +38 -0
- package/dist/dragonbones/db-pixi/PixiTextureAtlasData.d.ts.map +1 -0
- package/dist/dragonbones/db-pixi/PixiTextureAtlasData.js +85 -0
- package/dist/dragonbones/db-pixi/index.d.ts +5 -0
- package/dist/dragonbones/db-pixi/index.d.ts.map +1 -0
- package/dist/dragonbones/db-pixi/index.js +4 -0
- package/dist/dragonbones/dragonBones/animation/Animation.d.ts +241 -0
- package/dist/dragonbones/dragonBones/animation/Animation.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/animation/Animation.js +692 -0
- package/dist/dragonbones/dragonBones/animation/AnimationState.d.ts +323 -0
- package/dist/dragonbones/dragonBones/animation/AnimationState.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/animation/AnimationState.js +1161 -0
- package/dist/dragonbones/dragonBones/animation/BaseTimelineState.d.ts +100 -0
- package/dist/dragonbones/dragonBones/animation/BaseTimelineState.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/animation/BaseTimelineState.js +479 -0
- package/dist/dragonbones/dragonBones/animation/IAnimatable.d.ts +38 -0
- package/dist/dragonbones/dragonBones/animation/IAnimatable.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/animation/IAnimatable.js +9 -0
- package/dist/dragonbones/dragonBones/animation/TimelineState.d.ts +159 -0
- package/dist/dragonbones/dragonBones/animation/TimelineState.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/animation/TimelineState.js +998 -0
- package/dist/dragonbones/dragonBones/animation/WorldClock.d.ts +74 -0
- package/dist/dragonbones/dragonBones/animation/WorldClock.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/animation/WorldClock.js +162 -0
- package/dist/dragonbones/dragonBones/armature/Armature.d.ts +314 -0
- package/dist/dragonbones/dragonBones/armature/Armature.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/armature/Armature.js +650 -0
- package/dist/dragonbones/dragonBones/armature/Bone.d.ts +123 -0
- package/dist/dragonbones/dragonBones/armature/Bone.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/armature/Bone.js +438 -0
- package/dist/dragonbones/dragonBones/armature/Constraint.d.ts +99 -0
- package/dist/dragonbones/dragonBones/armature/Constraint.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/armature/Constraint.js +672 -0
- package/dist/dragonbones/dragonBones/armature/IArmatureProxy.d.ts +47 -0
- package/dist/dragonbones/dragonBones/armature/IArmatureProxy.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/armature/IArmatureProxy.js +1 -0
- package/dist/dragonbones/dragonBones/armature/Slot.d.ts +357 -0
- package/dist/dragonbones/dragonBones/armature/Slot.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/armature/Slot.js +1009 -0
- package/dist/dragonbones/dragonBones/armature/Surface.d.ts +41 -0
- package/dist/dragonbones/dragonBones/armature/Surface.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/armature/Surface.js +463 -0
- package/dist/dragonbones/dragonBones/armature/TransformObject.d.ts +80 -0
- package/dist/dragonbones/dragonBones/armature/TransformObject.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/armature/TransformObject.js +77 -0
- package/dist/dragonbones/dragonBones/core/BaseObject.d.ts +53 -0
- package/dist/dragonbones/dragonBones/core/BaseObject.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/core/BaseObject.js +130 -0
- package/dist/dragonbones/dragonBones/core/DragonBones.d.ts +236 -0
- package/dist/dragonbones/dragonBones/core/DragonBones.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/core/DragonBones.js +61 -0
- package/dist/dragonbones/dragonBones/event/EventObject.d.ts +143 -0
- package/dist/dragonbones/dragonBones/event/EventObject.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/event/EventObject.js +99 -0
- package/dist/dragonbones/dragonBones/event/IEventDispatcher.d.ts +48 -0
- package/dist/dragonbones/dragonBones/event/IEventDispatcher.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/event/IEventDispatcher.js +1 -0
- package/dist/dragonbones/dragonBones/factory/BaseFactory.d.ts +292 -0
- package/dist/dragonbones/dragonBones/factory/BaseFactory.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/factory/BaseFactory.js +735 -0
- package/dist/dragonbones/dragonBones/geom/ColorTransform.d.ts +17 -0
- package/dist/dragonbones/dragonBones/geom/ColorTransform.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/geom/ColorTransform.js +33 -0
- package/dist/dragonbones/dragonBones/geom/Curve.d.ts +10 -0
- package/dist/dragonbones/dragonBones/geom/Curve.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/geom/Curve.js +26 -0
- package/dist/dragonbones/dragonBones/geom/Matrix.d.ts +105 -0
- package/dist/dragonbones/dragonBones/geom/Matrix.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/geom/Matrix.js +207 -0
- package/dist/dragonbones/dragonBones/geom/Point.d.ts +38 -0
- package/dist/dragonbones/dragonBones/geom/Point.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/geom/Point.js +31 -0
- package/dist/dragonbones/dragonBones/geom/Rectangle.d.ts +53 -0
- package/dist/dragonbones/dragonBones/geom/Rectangle.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/geom/Rectangle.js +37 -0
- package/dist/dragonbones/dragonBones/geom/Transform.d.ts +102 -0
- package/dist/dragonbones/dragonBones/geom/Transform.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/geom/Transform.js +170 -0
- package/dist/dragonbones/dragonBones/index.d.ts +37 -0
- package/dist/dragonbones/dragonBones/index.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/index.js +36 -0
- package/dist/dragonbones/dragonBones/model/AnimationConfig.d.ts +162 -0
- package/dist/dragonbones/dragonBones/model/AnimationConfig.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/model/AnimationConfig.js +81 -0
- package/dist/dragonbones/dragonBones/model/AnimationData.d.ts +174 -0
- package/dist/dragonbones/dragonBones/model/AnimationData.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/model/AnimationData.js +256 -0
- package/dist/dragonbones/dragonBones/model/ArmatureData.d.ts +319 -0
- package/dist/dragonbones/dragonBones/model/ArmatureData.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/model/ArmatureData.js +450 -0
- package/dist/dragonbones/dragonBones/model/BoundingBoxData.d.ts +188 -0
- package/dist/dragonbones/dragonBones/model/BoundingBoxData.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/model/BoundingBoxData.js +500 -0
- package/dist/dragonbones/dragonBones/model/CanvasData.d.ts +15 -0
- package/dist/dragonbones/dragonBones/model/CanvasData.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/model/CanvasData.js +17 -0
- package/dist/dragonbones/dragonBones/model/ConstraintData.d.ts +46 -0
- package/dist/dragonbones/dragonBones/model/ConstraintData.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/model/ConstraintData.js +57 -0
- package/dist/dragonbones/dragonBones/model/DisplayData.d.ts +98 -0
- package/dist/dragonbones/dragonBones/model/DisplayData.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/model/DisplayData.js +174 -0
- package/dist/dragonbones/dragonBones/model/DragonBonesData.d.ts +108 -0
- package/dist/dragonbones/dragonBones/model/DragonBonesData.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/model/DragonBonesData.js +86 -0
- package/dist/dragonbones/dragonBones/model/SkinData.d.ts +40 -0
- package/dist/dragonbones/dragonBones/model/SkinData.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/model/SkinData.js +68 -0
- package/dist/dragonbones/dragonBones/model/TextureAtlasData.d.ts +73 -0
- package/dist/dragonbones/dragonBones/model/TextureAtlasData.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/model/TextureAtlasData.js +102 -0
- package/dist/dragonbones/dragonBones/model/UserData.d.ts +73 -0
- package/dist/dragonbones/dragonBones/model/UserData.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/model/UserData.js +101 -0
- package/dist/dragonbones/dragonBones/parser/BinaryDataParser.d.ts +29 -0
- package/dist/dragonbones/dragonBones/parser/BinaryDataParser.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/parser/BinaryDataParser.js +356 -0
- package/dist/dragonbones/dragonBones/parser/DataParser.d.ts +153 -0
- package/dist/dragonbones/dragonBones/parser/DataParser.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/parser/DataParser.js +283 -0
- package/dist/dragonbones/dragonBones/parser/ObjectDataParser.d.ts +130 -0
- package/dist/dragonbones/dragonBones/parser/ObjectDataParser.d.ts.map +1 -0
- package/dist/dragonbones/dragonBones/parser/ObjectDataParser.js +2098 -0
- package/dist/dragonbones/index.js +1 -1
- package/dist/helper/utils.js +1 -1
- package/package.json +3 -4
|
@@ -0,0 +1,735 @@
|
|
|
1
|
+
import { Armature } from "../armature/Armature";
|
|
2
|
+
import { Bone } from "../armature/Bone";
|
|
3
|
+
import { IKConstraint, PathConstraint } from "../armature/Constraint";
|
|
4
|
+
import { Surface } from "../armature/Surface";
|
|
5
|
+
import { BaseObject } from "../core/BaseObject";
|
|
6
|
+
import { EventObject } from "../event/EventObject";
|
|
7
|
+
import { BinaryDataParser } from "../parser/BinaryDataParser";
|
|
8
|
+
import { ObjectDataParser } from "../parser/ObjectDataParser";
|
|
9
|
+
/**
|
|
10
|
+
* - Base class for the factory that create the armatures. (Typically only one global factory instance is required)
|
|
11
|
+
* The factory instance create armatures by parsed and added DragonBonesData instances and TextureAtlasData instances.
|
|
12
|
+
* Once the data has been parsed, it has been cached in the factory instance and does not need to be parsed again until it is cleared by the factory instance.
|
|
13
|
+
* @see dragonBones.DragonBonesData
|
|
14
|
+
* @see dragonBones.TextureAtlasData
|
|
15
|
+
* @see dragonBones.ArmatureData
|
|
16
|
+
* @see dragonBones.Armature
|
|
17
|
+
* @version DragonBones 3.0
|
|
18
|
+
* @language en_US
|
|
19
|
+
*/
|
|
20
|
+
export class BaseFactory {
|
|
21
|
+
/**
|
|
22
|
+
* - Create a factory instance. (typically only one global factory instance is required)
|
|
23
|
+
* @version DragonBones 3.0
|
|
24
|
+
* @language en_US
|
|
25
|
+
*/
|
|
26
|
+
constructor(dataParser = null) {
|
|
27
|
+
/**
|
|
28
|
+
* @private
|
|
29
|
+
*/
|
|
30
|
+
this.autoSearch = false;
|
|
31
|
+
this._dragonBonesDataMap = {};
|
|
32
|
+
this._textureAtlasDataMap = {};
|
|
33
|
+
this._dragonBones = null;
|
|
34
|
+
this._dataParser = null;
|
|
35
|
+
if (BaseFactory._objectParser === null) {
|
|
36
|
+
BaseFactory._objectParser = new ObjectDataParser();
|
|
37
|
+
}
|
|
38
|
+
if (BaseFactory._binaryParser === null) {
|
|
39
|
+
BaseFactory._binaryParser = new BinaryDataParser();
|
|
40
|
+
}
|
|
41
|
+
this._dataParser =
|
|
42
|
+
dataParser !== null ? dataParser : BaseFactory._objectParser;
|
|
43
|
+
}
|
|
44
|
+
_isSupportMesh() {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
_getTextureData(textureAtlasName, textureName) {
|
|
48
|
+
if (textureAtlasName in this._textureAtlasDataMap) {
|
|
49
|
+
for (const textureAtlasData of this._textureAtlasDataMap[textureAtlasName]) {
|
|
50
|
+
const textureData = textureAtlasData.getTexture(textureName);
|
|
51
|
+
if (textureData !== null) {
|
|
52
|
+
return textureData;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (this.autoSearch) {
|
|
57
|
+
// Will be search all data, if the autoSearch is true.
|
|
58
|
+
for (let k in this._textureAtlasDataMap) {
|
|
59
|
+
for (const textureAtlasData of this._textureAtlasDataMap[k]) {
|
|
60
|
+
if (textureAtlasData.autoSearch) {
|
|
61
|
+
const textureData = textureAtlasData.getTexture(textureName);
|
|
62
|
+
if (textureData !== null) {
|
|
63
|
+
return textureData;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
_fillBuildArmaturePackage(dataPackage, dragonBonesName, armatureName, skinName, textureAtlasName) {
|
|
72
|
+
let dragonBonesData = null;
|
|
73
|
+
let armatureData = null;
|
|
74
|
+
if (dragonBonesName.length > 0) {
|
|
75
|
+
if (dragonBonesName in this._dragonBonesDataMap) {
|
|
76
|
+
dragonBonesData = this._dragonBonesDataMap[dragonBonesName];
|
|
77
|
+
armatureData = dragonBonesData.getArmature(armatureName);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (armatureData === null &&
|
|
81
|
+
(dragonBonesName.length === 0 || this.autoSearch)) {
|
|
82
|
+
// Will be search all data, if do not give a data name or the autoSearch is true.
|
|
83
|
+
for (let k in this._dragonBonesDataMap) {
|
|
84
|
+
dragonBonesData = this._dragonBonesDataMap[k];
|
|
85
|
+
if (dragonBonesName.length === 0 || dragonBonesData.autoSearch) {
|
|
86
|
+
armatureData = dragonBonesData.getArmature(armatureName);
|
|
87
|
+
if (armatureData !== null) {
|
|
88
|
+
dragonBonesName = k;
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (armatureData !== null) {
|
|
95
|
+
dataPackage.dataName = dragonBonesName;
|
|
96
|
+
dataPackage.textureAtlasName = textureAtlasName;
|
|
97
|
+
dataPackage.data = dragonBonesData;
|
|
98
|
+
dataPackage.armature = armatureData;
|
|
99
|
+
dataPackage.skin = null;
|
|
100
|
+
if (skinName.length > 0) {
|
|
101
|
+
dataPackage.skin = armatureData.getSkin(skinName);
|
|
102
|
+
if (dataPackage.skin === null && this.autoSearch) {
|
|
103
|
+
for (let k in this._dragonBonesDataMap) {
|
|
104
|
+
const skinDragonBonesData = this._dragonBonesDataMap[k];
|
|
105
|
+
const skinArmatureData = skinDragonBonesData.getArmature(skinName);
|
|
106
|
+
if (skinArmatureData !== null) {
|
|
107
|
+
dataPackage.skin = skinArmatureData.defaultSkin;
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (dataPackage.skin === null) {
|
|
114
|
+
dataPackage.skin = armatureData.defaultSkin;
|
|
115
|
+
}
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
_buildBones(dataPackage, armature) {
|
|
121
|
+
for (const boneData of dataPackage.armature.sortedBones) {
|
|
122
|
+
const bone = BaseObject.borrowObject(boneData.type === 0 /* BoneType.Bone */ ? Bone : Surface);
|
|
123
|
+
bone.init(boneData, armature);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* @private
|
|
128
|
+
*/
|
|
129
|
+
_buildSlots(dataPackage, armature) {
|
|
130
|
+
const currentSkin = dataPackage.skin;
|
|
131
|
+
const defaultSkin = dataPackage.armature.defaultSkin;
|
|
132
|
+
if (currentSkin === null || defaultSkin === null) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const skinSlots = {};
|
|
136
|
+
for (let k in defaultSkin.displays) {
|
|
137
|
+
const displays = defaultSkin.getDisplays(k);
|
|
138
|
+
skinSlots[k] = displays;
|
|
139
|
+
}
|
|
140
|
+
if (currentSkin !== defaultSkin) {
|
|
141
|
+
for (let k in currentSkin.displays) {
|
|
142
|
+
const displays = currentSkin.getDisplays(k);
|
|
143
|
+
skinSlots[k] = displays;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
for (const slotData of dataPackage.armature.sortedSlots) {
|
|
147
|
+
const displayDatas = slotData.name in skinSlots ? skinSlots[slotData.name] : null;
|
|
148
|
+
const slot = this._buildSlot(dataPackage, slotData, armature);
|
|
149
|
+
if (displayDatas !== null) {
|
|
150
|
+
slot.displayFrameCount = displayDatas.length;
|
|
151
|
+
for (let i = 0, l = slot.displayFrameCount; i < l; ++i) {
|
|
152
|
+
const displayData = displayDatas[i];
|
|
153
|
+
slot.replaceRawDisplayData(displayData, i);
|
|
154
|
+
if (displayData !== null) {
|
|
155
|
+
if (dataPackage.textureAtlasName.length > 0) {
|
|
156
|
+
const textureData = this._getTextureData(dataPackage.textureAtlasName, displayData.path);
|
|
157
|
+
slot.replaceTextureData(textureData, i);
|
|
158
|
+
}
|
|
159
|
+
const display = this._getSlotDisplay(dataPackage, displayData, slot);
|
|
160
|
+
slot.replaceDisplay(display, i);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
slot.replaceDisplay(null);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
slot._setDisplayIndex(slotData.displayIndex, true);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
_buildConstraints(dataPackage, armature) {
|
|
171
|
+
const constraints = dataPackage.armature.constraints;
|
|
172
|
+
for (let k in constraints) {
|
|
173
|
+
const constraintData = constraints[k];
|
|
174
|
+
// TODO more constraint type.
|
|
175
|
+
switch (constraintData.type) {
|
|
176
|
+
case 0 /* ConstraintType.IK */:
|
|
177
|
+
const ikConstraint = BaseObject.borrowObject(IKConstraint);
|
|
178
|
+
ikConstraint.init(constraintData, armature);
|
|
179
|
+
armature._addConstraint(ikConstraint);
|
|
180
|
+
break;
|
|
181
|
+
case 1 /* ConstraintType.Path */:
|
|
182
|
+
const pathConstraint = BaseObject.borrowObject(PathConstraint);
|
|
183
|
+
pathConstraint.init(constraintData, armature);
|
|
184
|
+
armature._addConstraint(pathConstraint);
|
|
185
|
+
break;
|
|
186
|
+
default:
|
|
187
|
+
const constraint = BaseObject.borrowObject(IKConstraint);
|
|
188
|
+
constraint.init(constraintData, armature);
|
|
189
|
+
armature._addConstraint(constraint);
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
_buildChildArmature(dataPackage, _slot, displayData) {
|
|
195
|
+
return this.buildArmature(displayData.path, dataPackage !== null ? dataPackage.dataName : "", "", dataPackage !== null ? dataPackage.textureAtlasName : "");
|
|
196
|
+
}
|
|
197
|
+
_getSlotDisplay(dataPackage, displayData, slot) {
|
|
198
|
+
const dataName = dataPackage !== null
|
|
199
|
+
? dataPackage.dataName
|
|
200
|
+
: displayData.parent.parent.parent.name;
|
|
201
|
+
let display = null;
|
|
202
|
+
switch (displayData.type) {
|
|
203
|
+
case 0 /* DisplayType.Image */: {
|
|
204
|
+
const imageDisplayData = displayData;
|
|
205
|
+
if (imageDisplayData.texture === null) {
|
|
206
|
+
imageDisplayData.texture = this._getTextureData(dataName, displayData.path);
|
|
207
|
+
}
|
|
208
|
+
display = slot.rawDisplay;
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
case 2 /* DisplayType.Mesh */: {
|
|
212
|
+
const meshDisplayData = displayData;
|
|
213
|
+
if (meshDisplayData.texture === null) {
|
|
214
|
+
meshDisplayData.texture = this._getTextureData(dataName, meshDisplayData.path);
|
|
215
|
+
}
|
|
216
|
+
if (this._isSupportMesh()) {
|
|
217
|
+
display = slot.meshDisplay;
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
display = slot.rawDisplay;
|
|
221
|
+
}
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
case 1 /* DisplayType.Armature */: {
|
|
225
|
+
const armatureDisplayData = displayData;
|
|
226
|
+
const childArmature = this._buildChildArmature(dataPackage, slot, armatureDisplayData);
|
|
227
|
+
if (childArmature !== null) {
|
|
228
|
+
childArmature.inheritAnimation = armatureDisplayData.inheritAnimation;
|
|
229
|
+
if (!childArmature.inheritAnimation) {
|
|
230
|
+
const actions = armatureDisplayData.actions.length > 0
|
|
231
|
+
? armatureDisplayData.actions
|
|
232
|
+
: childArmature.armatureData.defaultActions;
|
|
233
|
+
if (actions.length > 0) {
|
|
234
|
+
for (const action of actions) {
|
|
235
|
+
const eventObject = BaseObject.borrowObject(EventObject);
|
|
236
|
+
EventObject.actionDataToInstance(action, eventObject, slot.armature);
|
|
237
|
+
eventObject.slot = slot;
|
|
238
|
+
slot.armature._bufferAction(eventObject, false);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
childArmature.animation.play();
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
armatureDisplayData.armature = childArmature.armatureData; //
|
|
246
|
+
}
|
|
247
|
+
display = childArmature;
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
250
|
+
case 3 /* DisplayType.BoundingBox */:
|
|
251
|
+
break;
|
|
252
|
+
default:
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
return display;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* - Parse the raw data to a DragonBonesData instance and cache it to the factory.
|
|
259
|
+
* @param rawData - The raw data.
|
|
260
|
+
* @param name - Specify a cache name for the instance so that the instance can be obtained through this name. (If not set, use the instance name instead)
|
|
261
|
+
* @param scale - Specify a scaling value for all armatures. (Default: 1.0)
|
|
262
|
+
* @returns DragonBonesData instance
|
|
263
|
+
* @see #getDragonBonesData()
|
|
264
|
+
* @see #addDragonBonesData()
|
|
265
|
+
* @see #removeDragonBonesData()
|
|
266
|
+
* @see dragonBones.DragonBonesData
|
|
267
|
+
* @version DragonBones 4.5
|
|
268
|
+
* @language en_US
|
|
269
|
+
*/
|
|
270
|
+
parseDragonBonesData(rawData, name = null, scale = 1.0) {
|
|
271
|
+
const dataParser = rawData instanceof ArrayBuffer
|
|
272
|
+
? BaseFactory._binaryParser
|
|
273
|
+
: this._dataParser;
|
|
274
|
+
const dragonBonesData = dataParser.parseDragonBonesData(rawData, scale);
|
|
275
|
+
while (true) {
|
|
276
|
+
const textureAtlasData = this._buildTextureAtlasData(null, null);
|
|
277
|
+
if (dataParser.parseTextureAtlasData(null, textureAtlasData, scale)) {
|
|
278
|
+
this.addTextureAtlasData(textureAtlasData, name);
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
textureAtlasData.returnToPool();
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
if (dragonBonesData !== null) {
|
|
286
|
+
this.addDragonBonesData(dragonBonesData, name);
|
|
287
|
+
}
|
|
288
|
+
return dragonBonesData;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* - Parse the raw texture atlas data and the texture atlas object to a TextureAtlasData instance and cache it to the factory.
|
|
292
|
+
* @param rawData - The raw texture atlas data.
|
|
293
|
+
* @param textureAtlas - The texture atlas object.
|
|
294
|
+
* @param name - Specify a cache name for the instance so that the instance can be obtained through this name. (If not set, use the instance name instead)
|
|
295
|
+
* @param scale - Specify a scaling value for the map set. (Default: 1.0)
|
|
296
|
+
* @returns TextureAtlasData instance
|
|
297
|
+
* @see #getTextureAtlasData()
|
|
298
|
+
* @see #addTextureAtlasData()
|
|
299
|
+
* @see #removeTextureAtlasData()
|
|
300
|
+
* @see dragonBones.TextureAtlasData
|
|
301
|
+
* @version DragonBones 4.5
|
|
302
|
+
* @language en_US
|
|
303
|
+
*/
|
|
304
|
+
parseTextureAtlasData(rawData, textureAtlas, name = null, scale = 1.0) {
|
|
305
|
+
const textureAtlasData = this._buildTextureAtlasData(null, null);
|
|
306
|
+
this._dataParser.parseTextureAtlasData(rawData, textureAtlasData, scale);
|
|
307
|
+
this._buildTextureAtlasData(textureAtlasData, textureAtlas || null);
|
|
308
|
+
this.addTextureAtlasData(textureAtlasData, name);
|
|
309
|
+
return textureAtlasData;
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* - Update texture atlases.
|
|
313
|
+
* @param textureAtlases - The texture atlas objects.
|
|
314
|
+
* @param name - The texture atlas name.
|
|
315
|
+
* @version DragonBones 5.7
|
|
316
|
+
* @language en_US
|
|
317
|
+
*/
|
|
318
|
+
updateTextureAtlases(textureAtlases, name) {
|
|
319
|
+
const textureAtlasDatas = this.getTextureAtlasData(name);
|
|
320
|
+
if (textureAtlasDatas !== null) {
|
|
321
|
+
for (let i = 0, l = textureAtlasDatas.length; i < l; ++i) {
|
|
322
|
+
if (i < textureAtlases.length) {
|
|
323
|
+
this._buildTextureAtlasData(textureAtlasDatas[i], textureAtlases[i]);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* - Get a specific DragonBonesData instance.
|
|
330
|
+
* @param name - The DragonBonesData instance cache name.
|
|
331
|
+
* @returns DragonBonesData instance
|
|
332
|
+
* @see #parseDragonBonesData()
|
|
333
|
+
* @see #addDragonBonesData()
|
|
334
|
+
* @see #removeDragonBonesData()
|
|
335
|
+
* @see dragonBones.DragonBonesData
|
|
336
|
+
* @version DragonBones 3.0
|
|
337
|
+
* @language en_US
|
|
338
|
+
*/
|
|
339
|
+
getDragonBonesData(name) {
|
|
340
|
+
return name in this._dragonBonesDataMap
|
|
341
|
+
? this._dragonBonesDataMap[name]
|
|
342
|
+
: null;
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* - Cache a DragonBonesData instance to the factory.
|
|
346
|
+
* @param data - The DragonBonesData instance.
|
|
347
|
+
* @param name - Specify a cache name for the instance so that the instance can be obtained through this name. (if not set, use the instance name instead)
|
|
348
|
+
* @see #parseDragonBonesData()
|
|
349
|
+
* @see #getDragonBonesData()
|
|
350
|
+
* @see #removeDragonBonesData()
|
|
351
|
+
* @see dragonBones.DragonBonesData
|
|
352
|
+
* @version DragonBones 3.0
|
|
353
|
+
* @language en_US
|
|
354
|
+
*/
|
|
355
|
+
addDragonBonesData(data, name = null) {
|
|
356
|
+
name = name !== null ? name : data.name;
|
|
357
|
+
if (name in this._dragonBonesDataMap) {
|
|
358
|
+
if (this._dragonBonesDataMap[name] === data) {
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
console.warn("Can not add same name data: " + name);
|
|
362
|
+
return;
|
|
363
|
+
}
|
|
364
|
+
this._dragonBonesDataMap[name] = data;
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* - Remove a DragonBonesData instance.
|
|
368
|
+
* @param name - The DragonBonesData instance cache name.
|
|
369
|
+
* @param disposeData - Whether to dispose data. (Default: true)
|
|
370
|
+
* @see #parseDragonBonesData()
|
|
371
|
+
* @see #getDragonBonesData()
|
|
372
|
+
* @see #addDragonBonesData()
|
|
373
|
+
* @see dragonBones.DragonBonesData
|
|
374
|
+
* @version DragonBones 3.0
|
|
375
|
+
* @language en_US
|
|
376
|
+
*/
|
|
377
|
+
removeDragonBonesData(name, disposeData = true) {
|
|
378
|
+
if (name in this._dragonBonesDataMap) {
|
|
379
|
+
if (disposeData) {
|
|
380
|
+
this._dragonBones.bufferObject(this._dragonBonesDataMap[name]);
|
|
381
|
+
}
|
|
382
|
+
delete this._dragonBonesDataMap[name];
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* - Get a list of specific TextureAtlasData instances.
|
|
387
|
+
* @param name - The TextureAtlasData cahce name.
|
|
388
|
+
* @see #parseTextureAtlasData()
|
|
389
|
+
* @see #addTextureAtlasData()
|
|
390
|
+
* @see #removeTextureAtlasData()
|
|
391
|
+
* @see dragonBones.TextureAtlasData
|
|
392
|
+
* @version DragonBones 3.0
|
|
393
|
+
* @language en_US
|
|
394
|
+
*/
|
|
395
|
+
getTextureAtlasData(name) {
|
|
396
|
+
return name in this._textureAtlasDataMap
|
|
397
|
+
? this._textureAtlasDataMap[name]
|
|
398
|
+
: null;
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* - Cache a TextureAtlasData instance to the factory.
|
|
402
|
+
* @param data - The TextureAtlasData instance.
|
|
403
|
+
* @param name - Specify a cache name for the instance so that the instance can be obtained through this name. (if not set, use the instance name instead)
|
|
404
|
+
* @see #parseTextureAtlasData()
|
|
405
|
+
* @see #getTextureAtlasData()
|
|
406
|
+
* @see #removeTextureAtlasData()
|
|
407
|
+
* @see dragonBones.TextureAtlasData
|
|
408
|
+
* @version DragonBones 3.0
|
|
409
|
+
* @language en_US
|
|
410
|
+
*/
|
|
411
|
+
addTextureAtlasData(data, name = null) {
|
|
412
|
+
name = name !== null ? name : data.name;
|
|
413
|
+
const textureAtlasList = name in this._textureAtlasDataMap
|
|
414
|
+
? this._textureAtlasDataMap[name]
|
|
415
|
+
: (this._textureAtlasDataMap[name] = []);
|
|
416
|
+
if (textureAtlasList.indexOf(data) < 0) {
|
|
417
|
+
textureAtlasList.push(data);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* - Remove a TextureAtlasData instance.
|
|
422
|
+
* @param name - The TextureAtlasData instance cache name.
|
|
423
|
+
* @param disposeData - Whether to dispose data.
|
|
424
|
+
* @see #parseTextureAtlasData()
|
|
425
|
+
* @see #getTextureAtlasData()
|
|
426
|
+
* @see #addTextureAtlasData()
|
|
427
|
+
* @see dragonBones.TextureAtlasData
|
|
428
|
+
* @version DragonBones 3.0
|
|
429
|
+
* @language en_US
|
|
430
|
+
*/
|
|
431
|
+
removeTextureAtlasData(name, disposeData = true) {
|
|
432
|
+
if (name in this._textureAtlasDataMap) {
|
|
433
|
+
const textureAtlasDataList = this._textureAtlasDataMap[name];
|
|
434
|
+
if (disposeData) {
|
|
435
|
+
for (const textureAtlasData of textureAtlasDataList) {
|
|
436
|
+
this._dragonBones.bufferObject(textureAtlasData);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
delete this._textureAtlasDataMap[name];
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* - Get a specific armature data.
|
|
444
|
+
* @param name - The armature data name.
|
|
445
|
+
* @param dragonBonesName - The cached name for DragonbonesData instance.
|
|
446
|
+
* @see dragonBones.ArmatureData
|
|
447
|
+
* @version DragonBones 5.1
|
|
448
|
+
* @language en_US
|
|
449
|
+
*/
|
|
450
|
+
getArmatureData(name, dragonBonesName = "") {
|
|
451
|
+
const dataPackage = new BuildArmaturePackage();
|
|
452
|
+
if (!this._fillBuildArmaturePackage(dataPackage, dragonBonesName, name, "", "")) {
|
|
453
|
+
return null;
|
|
454
|
+
}
|
|
455
|
+
return dataPackage.armature;
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* - Clear all cached DragonBonesData instances and TextureAtlasData instances.
|
|
459
|
+
* @param disposeData - Whether to dispose data.
|
|
460
|
+
* @version DragonBones 4.5
|
|
461
|
+
* @language en_US
|
|
462
|
+
*/
|
|
463
|
+
clear(disposeData = true) {
|
|
464
|
+
for (let k in this._dragonBonesDataMap) {
|
|
465
|
+
if (disposeData) {
|
|
466
|
+
this._dragonBones.bufferObject(this._dragonBonesDataMap[k]);
|
|
467
|
+
}
|
|
468
|
+
delete this._dragonBonesDataMap[k];
|
|
469
|
+
}
|
|
470
|
+
for (let k in this._textureAtlasDataMap) {
|
|
471
|
+
if (disposeData) {
|
|
472
|
+
const textureAtlasDataList = this._textureAtlasDataMap[k];
|
|
473
|
+
for (const textureAtlasData of textureAtlasDataList) {
|
|
474
|
+
this._dragonBones.bufferObject(textureAtlasData);
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
delete this._textureAtlasDataMap[k];
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* - Create a armature from cached DragonBonesData instances and TextureAtlasData instances.
|
|
482
|
+
* Note that when the created armature that is no longer in use, you need to explicitly dispose {@link #dragonBones.Armature#dispose()}.
|
|
483
|
+
* @param armatureName - The armature data name.
|
|
484
|
+
* @param dragonBonesName - The cached name of the DragonBonesData instance. (If not set, all DragonBonesData instances are retrieved, and when multiple DragonBonesData instances contain a the same name armature data, it may not be possible to accurately create a specific armature)
|
|
485
|
+
* @param skinName - The skin name, you can set a different ArmatureData name to share it's skin data. (If not set, use the default skin data)
|
|
486
|
+
* @returns The armature.
|
|
487
|
+
* @example
|
|
488
|
+
* <pre>
|
|
489
|
+
* let armature = factory.buildArmature("armatureName", "dragonBonesName");
|
|
490
|
+
* armature.clock = factory.clock;
|
|
491
|
+
* </pre>
|
|
492
|
+
* @see dragonBones.DragonBonesData
|
|
493
|
+
* @see dragonBones.ArmatureData
|
|
494
|
+
* @version DragonBones 3.0
|
|
495
|
+
* @language en_US
|
|
496
|
+
*/
|
|
497
|
+
buildArmature(armatureName, dragonBonesName = "", skinName = "", textureAtlasName = "") {
|
|
498
|
+
const dataPackage = new BuildArmaturePackage();
|
|
499
|
+
if (!this._fillBuildArmaturePackage(dataPackage, dragonBonesName || "", armatureName, skinName || "", textureAtlasName || "")) {
|
|
500
|
+
console.warn("No armature data: " +
|
|
501
|
+
armatureName +
|
|
502
|
+
", " +
|
|
503
|
+
(dragonBonesName !== null ? dragonBonesName : ""));
|
|
504
|
+
return null;
|
|
505
|
+
}
|
|
506
|
+
const armature = this._buildArmature(dataPackage);
|
|
507
|
+
this._buildBones(dataPackage, armature);
|
|
508
|
+
this._buildSlots(dataPackage, armature);
|
|
509
|
+
this._buildConstraints(dataPackage, armature);
|
|
510
|
+
armature.invalidUpdate(null, true);
|
|
511
|
+
armature.advanceTime(0.0); // Update armature pose.
|
|
512
|
+
return armature;
|
|
513
|
+
}
|
|
514
|
+
/**
|
|
515
|
+
* @private
|
|
516
|
+
*/
|
|
517
|
+
replaceDisplay(slot, displayData, displayIndex = -1) {
|
|
518
|
+
if (displayIndex < 0) {
|
|
519
|
+
displayIndex = slot.displayIndex;
|
|
520
|
+
}
|
|
521
|
+
if (displayIndex < 0) {
|
|
522
|
+
displayIndex = 0;
|
|
523
|
+
}
|
|
524
|
+
slot.replaceDisplayData(displayData, displayIndex);
|
|
525
|
+
if (displayData !== null) {
|
|
526
|
+
let display = this._getSlotDisplay(null, displayData, slot);
|
|
527
|
+
if (displayData.type === 0 /* DisplayType.Image */) {
|
|
528
|
+
const rawDisplayData = slot.getDisplayFrameAt(displayIndex).rawDisplayData;
|
|
529
|
+
if (rawDisplayData !== null &&
|
|
530
|
+
rawDisplayData.type === 2 /* DisplayType.Mesh */) {
|
|
531
|
+
display = slot.meshDisplay;
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
slot.replaceDisplay(display, displayIndex);
|
|
535
|
+
}
|
|
536
|
+
else {
|
|
537
|
+
slot.replaceDisplay(null, displayIndex);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* - Replaces the current display data for a particular slot with a specific display data.
|
|
542
|
+
* Specify display data with "dragonBonesName/armatureName/slotName/displayName".
|
|
543
|
+
* @param dragonBonesName - The DragonBonesData instance cache name.
|
|
544
|
+
* @param armatureName - The armature data name.
|
|
545
|
+
* @param slotName - The slot data name.
|
|
546
|
+
* @param displayName - The display data name.
|
|
547
|
+
* @param slot - The slot.
|
|
548
|
+
* @param displayIndex - The index of the display data that is replaced. (If it is not set, replaces the current display data)
|
|
549
|
+
* @example
|
|
550
|
+
* <pre>
|
|
551
|
+
* let slot = armature.getSlot("weapon");
|
|
552
|
+
* factory.replaceSlotDisplay("dragonBonesName", "armatureName", "slotName", "displayName", slot);
|
|
553
|
+
* </pre>
|
|
554
|
+
* @version DragonBones 4.5
|
|
555
|
+
* @language en_US
|
|
556
|
+
*/
|
|
557
|
+
replaceSlotDisplay(dragonBonesName, armatureName, slotName, displayName, slot, displayIndex = -1) {
|
|
558
|
+
const armatureData = this.getArmatureData(armatureName, dragonBonesName || "");
|
|
559
|
+
if (armatureData === null || armatureData.defaultSkin === null) {
|
|
560
|
+
return false;
|
|
561
|
+
}
|
|
562
|
+
const displayData = armatureData.defaultSkin.getDisplay(slotName, displayName);
|
|
563
|
+
this.replaceDisplay(slot, displayData, displayIndex);
|
|
564
|
+
return true;
|
|
565
|
+
}
|
|
566
|
+
/**
|
|
567
|
+
* @private
|
|
568
|
+
*/
|
|
569
|
+
replaceSlotDisplayList(dragonBonesName, armatureName, slotName, slot) {
|
|
570
|
+
const armatureData = this.getArmatureData(armatureName, dragonBonesName || "");
|
|
571
|
+
if (!armatureData || !armatureData.defaultSkin) {
|
|
572
|
+
return false;
|
|
573
|
+
}
|
|
574
|
+
const displayDatas = armatureData.defaultSkin.getDisplays(slotName);
|
|
575
|
+
if (!displayDatas) {
|
|
576
|
+
return false;
|
|
577
|
+
}
|
|
578
|
+
slot.displayFrameCount = displayDatas.length;
|
|
579
|
+
for (let i = 0, l = slot.displayFrameCount; i < l; ++i) {
|
|
580
|
+
const displayData = displayDatas[i];
|
|
581
|
+
this.replaceDisplay(slot, displayData, i);
|
|
582
|
+
}
|
|
583
|
+
return true;
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* - Share specific skin data with specific armature.
|
|
587
|
+
* @param armature - The armature.
|
|
588
|
+
* @param skin - The skin data.
|
|
589
|
+
* @param isOverride - Whether it completely override the original skin. (Default: false)
|
|
590
|
+
* @param exclude - A list of slot names that do not need to be replace.
|
|
591
|
+
* @example
|
|
592
|
+
* <pre>
|
|
593
|
+
* let armatureA = factory.buildArmature("armatureA", "dragonBonesA");
|
|
594
|
+
* let armatureDataB = factory.getArmatureData("armatureB", "dragonBonesB");
|
|
595
|
+
* if (armatureDataB && armatureDataB.defaultSkin) {
|
|
596
|
+
* factory.replaceSkin(armatureA, armatureDataB.defaultSkin, false, ["arm_l", "weapon_l"]);
|
|
597
|
+
* }
|
|
598
|
+
* </pre>
|
|
599
|
+
* @see dragonBones.Armature
|
|
600
|
+
* @see dragonBones.SkinData
|
|
601
|
+
* @version DragonBones 5.6
|
|
602
|
+
* @language en_US
|
|
603
|
+
*/
|
|
604
|
+
replaceSkin(armature, skin, isOverride = false, exclude = null) {
|
|
605
|
+
let success = false;
|
|
606
|
+
const defaultSkin = skin.parent.defaultSkin;
|
|
607
|
+
for (const slot of armature.getSlots()) {
|
|
608
|
+
if (exclude !== null && exclude.indexOf(slot.name) >= 0) {
|
|
609
|
+
continue;
|
|
610
|
+
}
|
|
611
|
+
let displayDatas = skin.getDisplays(slot.name);
|
|
612
|
+
if (displayDatas === null) {
|
|
613
|
+
if (defaultSkin !== null && skin !== defaultSkin) {
|
|
614
|
+
displayDatas = defaultSkin.getDisplays(slot.name);
|
|
615
|
+
}
|
|
616
|
+
if (displayDatas === null) {
|
|
617
|
+
if (isOverride) {
|
|
618
|
+
slot.displayFrameCount = 0;
|
|
619
|
+
}
|
|
620
|
+
continue;
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
slot.displayFrameCount = displayDatas.length;
|
|
624
|
+
for (let i = 0, l = slot.displayFrameCount; i < l; ++i) {
|
|
625
|
+
const displayData = displayDatas[i];
|
|
626
|
+
slot.replaceRawDisplayData(displayData, i);
|
|
627
|
+
if (displayData !== null) {
|
|
628
|
+
slot.replaceDisplay(this._getSlotDisplay(null, displayData, slot), i);
|
|
629
|
+
}
|
|
630
|
+
else {
|
|
631
|
+
slot.replaceDisplay(null, i);
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
success = true;
|
|
635
|
+
}
|
|
636
|
+
return success;
|
|
637
|
+
}
|
|
638
|
+
/**
|
|
639
|
+
* - Replaces the existing animation data for a specific armature with the animation data for the specific armature data.
|
|
640
|
+
* This enables you to make a armature template so that other armature without animations can share it's animations.
|
|
641
|
+
* @param armature - The armtaure.
|
|
642
|
+
* @param armatureData - The armature data.
|
|
643
|
+
* @param isOverride - Whether to completely overwrite the original animation. (Default: false)
|
|
644
|
+
* @example
|
|
645
|
+
* <pre>
|
|
646
|
+
* let armatureA = factory.buildArmature("armatureA", "dragonBonesA");
|
|
647
|
+
* let armatureDataB = factory.getArmatureData("armatureB", "dragonBonesB");
|
|
648
|
+
* if (armatureDataB) {
|
|
649
|
+
* factory.replaceAnimation(armatureA, armatureDataB);
|
|
650
|
+
* }
|
|
651
|
+
* </pre>
|
|
652
|
+
* @see dragonBones.Armature
|
|
653
|
+
* @see dragonBones.ArmatureData
|
|
654
|
+
* @version DragonBones 5.6
|
|
655
|
+
* @language en_US
|
|
656
|
+
*/
|
|
657
|
+
replaceAnimation(armature, armatureData, isOverride = true) {
|
|
658
|
+
const skinData = armatureData.defaultSkin;
|
|
659
|
+
if (skinData === null) {
|
|
660
|
+
return false;
|
|
661
|
+
}
|
|
662
|
+
if (isOverride) {
|
|
663
|
+
armature.animation.animations = armatureData.animations;
|
|
664
|
+
}
|
|
665
|
+
else {
|
|
666
|
+
const rawAnimations = armature.animation.animations;
|
|
667
|
+
const animations = {};
|
|
668
|
+
for (let k in rawAnimations) {
|
|
669
|
+
animations[k] = rawAnimations[k];
|
|
670
|
+
}
|
|
671
|
+
for (let k in armatureData.animations) {
|
|
672
|
+
animations[k] = armatureData.animations[k];
|
|
673
|
+
}
|
|
674
|
+
armature.animation.animations = animations;
|
|
675
|
+
}
|
|
676
|
+
for (const slot of armature.getSlots()) {
|
|
677
|
+
let index = 0;
|
|
678
|
+
for (const display of slot.displayList) {
|
|
679
|
+
if (display instanceof Armature) {
|
|
680
|
+
const displayDatas = skinData.getDisplays(slot.name);
|
|
681
|
+
if (displayDatas !== null && index < displayDatas.length) {
|
|
682
|
+
const displayData = displayDatas[index];
|
|
683
|
+
if (displayData !== null &&
|
|
684
|
+
displayData.type === 1 /* DisplayType.Armature */) {
|
|
685
|
+
const childArmatureData = this.getArmatureData(displayData.path, displayData.parent.parent.parent.name);
|
|
686
|
+
if (childArmatureData) {
|
|
687
|
+
this.replaceAnimation(display, childArmatureData, isOverride);
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
index++;
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
return true;
|
|
696
|
+
}
|
|
697
|
+
/**
|
|
698
|
+
* @private
|
|
699
|
+
*/
|
|
700
|
+
getAllDragonBonesData() {
|
|
701
|
+
return this._dragonBonesDataMap;
|
|
702
|
+
}
|
|
703
|
+
/**
|
|
704
|
+
* @private
|
|
705
|
+
*/
|
|
706
|
+
getAllTextureAtlasData() {
|
|
707
|
+
return this._textureAtlasDataMap;
|
|
708
|
+
}
|
|
709
|
+
/**
|
|
710
|
+
* - An Worldclock instance updated by engine.
|
|
711
|
+
* @version DragonBones 5.7
|
|
712
|
+
* @language en_US
|
|
713
|
+
*/
|
|
714
|
+
get clock() {
|
|
715
|
+
return this._dragonBones.clock;
|
|
716
|
+
}
|
|
717
|
+
/**
|
|
718
|
+
* @private
|
|
719
|
+
*/
|
|
720
|
+
get dragonBones() {
|
|
721
|
+
return this._dragonBones;
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
BaseFactory._objectParser = null;
|
|
725
|
+
BaseFactory._binaryParser = null;
|
|
726
|
+
/**
|
|
727
|
+
* @private
|
|
728
|
+
*/
|
|
729
|
+
export class BuildArmaturePackage {
|
|
730
|
+
constructor() {
|
|
731
|
+
this.dataName = "";
|
|
732
|
+
this.textureAtlasName = "";
|
|
733
|
+
this.skin = null;
|
|
734
|
+
}
|
|
735
|
+
}
|