@urso/core 0.2.8 → 0.3.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.
@@ -1,250 +0,0 @@
1
- const POOL_NAME = 'core.ObjectsModelsDragonBones.pool';
2
-
3
- class ModulesObjectsModelsDragonBones extends Urso.Core.Modules.Objects.BaseModel {
4
- constructor(params) {
5
- super(params);
6
-
7
- this._pool = this._checkPool();
8
- this._poolMember = null;
9
- this.type = Urso.types.objects.DRAGONBONES;
10
-
11
- this._onStart = null;
12
- this._onLoop = null;
13
- this._onComplete = null;
14
- this._onCompleteOnce = null;
15
-
16
- this.setAnimationConfig({}, true);
17
- this._addBaseObject();
18
- }
19
-
20
- setupParams(params) {
21
- super.setupParams(params);
22
-
23
- this.assetKey = Urso.helper.recursiveGet('assetKey', params, false);
24
-
25
- this.animation = {
26
- timeScale: 1,
27
- animationName: Urso.helper.recursiveGet('animation.animationName', params, false),
28
- armatureName: Urso.helper.recursiveGet('animation.armatureName', params, false),
29
- autoplay: Urso.helper.recursiveGet('animation.autoplay', params, false),
30
- loop: Urso.helper.recursiveGet('animation.loop', params, false),
31
- onStart: Urso.helper.recursiveGet('animation.onStart', params, false),
32
- onLoop: Urso.helper.recursiveGet('animation.onLoop', params, false),
33
- onComplete: Urso.helper.recursiveGet('animation.onComplete', params, false),
34
- onCompleteOnce: Urso.helper.recursiveGet('animation.onCompleteOnce', params, false)
35
- };
36
- }
37
-
38
- _addBaseObject() {
39
- const assets = this._getAssets();
40
-
41
- if (!this.animation.armatureName || !assets) {
42
- this._baseObject = new PIXI.Sprite();
43
- return;
44
- }
45
-
46
- this._createAnimationObject(assets);
47
-
48
- const { animationName, autoplay, loop } = this.animation;
49
-
50
- if (autoplay)
51
- this.play(animationName, loop);
52
- };
53
-
54
- _getAssets() {
55
- const skeletonJson = Urso.cache.getJson(`${this.assetKey}_skeletonJson`);
56
- const textureJson = Urso.cache.getJson(`${this.assetKey}_textureJson`);
57
- const textureImage = Urso.cache.getImage(`${this.assetKey}_textureImage`);
58
-
59
- if (!skeletonJson || !textureJson || !textureImage) {
60
- Urso.logger.error('ModulesObjectsModelsDragonBones assets error: no DragonBones object ' + this.assetKey);
61
- return false;
62
- }
63
-
64
- return { skeletonJson, textureJson, textureImage };
65
- }
66
-
67
- _createAnimationObject(assets) {
68
- const { armatureName } = this.animation;
69
- this._poolMember = this._pool.getElement(armatureName, assets);
70
- this._baseObject = this._poolMember.data;
71
- this._setCommonFunctions.bind(this)();
72
- this._setCallbacks();
73
- }
74
-
75
- _constructorFunction(armatureName, assets) {
76
- const { skeletonJson, textureJson, textureImage } = assets;
77
-
78
- const factory = Urso.DragonBones.PixiFactory.factory;
79
-
80
- if (!factory._dragonBonesDataMap[skeletonJson.data.name])
81
- factory.parseDragonBonesData(skeletonJson.data);
82
-
83
- factory.parseTextureAtlasData(textureJson.data, textureImage.texture);
84
-
85
- return factory.buildArmatureDisplay(armatureName);
86
- }
87
-
88
- _resetAnimationFunction(object) { //this._baseObject
89
- object.removeAllListeners(Urso.DragonBones.EventObject.START);
90
- object.removeAllListeners(Urso.DragonBones.EventObject.LOOP_COMPLETE);
91
- object.removeAllListeners(Urso.DragonBones.EventObject.COMPLETE);
92
- object.filters = [];
93
- return object;
94
- }
95
-
96
- _removeCallbacks(config) {
97
- if (this._onStart && config.onStart) {
98
- this._baseObject.removeListener(Urso.DragonBones.EventObject.START, this._onStart);
99
- this._onStart = null;
100
- }
101
-
102
- if (this._onLoop && config.onLoop) {
103
- this._baseObject.removeListener(Urso.DragonBones.EventObject.LOOP_COMPLETE, this._onLoop);
104
- this._onLoop = null;
105
- }
106
-
107
- if (this._onComplete && config.onComplete) {
108
- this._baseObject.removeListener(Urso.DragonBones.EventObject.COMPLETE, this._onComplete);
109
- this._onComplete = null;
110
- }
111
-
112
- if (this._onCompleteOnce && config.onCompleteOnce) {
113
- this._removeOnCompleteOnce(config);
114
- }
115
- };
116
-
117
- _removeOnCompleteOnce() {
118
- this._baseObject.removeListener(Urso.DragonBones.EventObject.COMPLETE, this._onCompleteOnce);
119
- this._onCompleteOnce = null;
120
- }
121
-
122
- _setCallbacks() {
123
- if (this.animation.onStart) {
124
- this._onStart = this.animation.onStart.bind(this);
125
- this._baseObject.addListener(Urso.DragonBones.EventObject.START, this._onStart);
126
- }
127
-
128
- if (this.animation.onLoop) {
129
- this._onLoop = this.animation.onLoop.bind(this);
130
- this._baseObject.addListener(Urso.DragonBones.EventObject.LOOP_COMPLETE, this._onLoop);
131
- }
132
-
133
- if (this.animation.onComplete) {
134
- this._onComplete = this.animation.onComplete.bind(this);
135
- this._baseObject.addListener(Urso.DragonBones.EventObject.COMPLETE, this._onComplete);
136
- }
137
-
138
- if (this.animation.onCompleteOnce) {
139
- const onCompleteOnce = this.animation.onCompleteOnce.bind(this);
140
-
141
- this.animation.onCompleteOnce = null;
142
-
143
- this._onCompleteOnce = () => {
144
- this._removeOnCompleteOnce();
145
- onCompleteOnce();
146
- };
147
-
148
- this._baseObject.once(Urso.DragonBones.EventObject.COMPLETE, this._onCompleteOnce);
149
- }
150
- }
151
-
152
- /**
153
- *
154
- * @param {*} config
155
- * @param {boolean} [noObjectCreate] dont use this flag out of core
156
- *
157
- * config keys:
158
- * animationName
159
- * armatureName
160
- autoplay
161
- timeScale
162
- onStart
163
- onLoop
164
- onComplete
165
- onCompleteOnce
166
- */
167
- setAnimationConfig(config = {}, noObjectCreate) {
168
- if (this.stop)
169
- this.stop();
170
-
171
- this.animation = {
172
- ...this.animation,
173
- ...config
174
- };
175
-
176
- if (config.timeScale)
177
- this._baseObject.animation.timeScale = config.timeScale;
178
-
179
- if (config.onStart || config.onLoop || config.onComplete || config.onCompleteOnce) {
180
- this._removeCallbacks(config);
181
- this._setCallbacks();
182
- }
183
-
184
- if (noObjectCreate || !config.armatureName)
185
- return;
186
-
187
- let parent = null;
188
-
189
- if (this._baseObject) {
190
- parent = this._baseObject.parent;
191
- this._customDestroy();
192
- }
193
-
194
- const assets = this._getAssets();
195
-
196
- if (assets)
197
- this._createAnimationObject(assets);
198
-
199
- if (parent) {
200
- parent.addChild(this._baseObject);
201
- //update common properties after adding to apply model settings
202
- Urso.objects._updateCommonProperties(this);
203
- }
204
- }
205
-
206
- /**
207
- * run play animation
208
- * @param {number} times
209
- */
210
- play(animationName, loopFlag = false) {
211
- if (!this._baseObject.animation) {
212
- Urso.logger.error(`DragonBones animation not found!`);
213
- return;
214
- }
215
-
216
- if (this.stop)
217
- this.stop();
218
-
219
- const times = (loopFlag) ? -1 : 1;
220
-
221
- this._baseObject.animation.play(animationName, times);
222
- }
223
-
224
- _setCommonFunctions() {
225
- this.stop = this._baseObject.animation.stop.bind(this._baseObject.animation);
226
- }
227
-
228
- _customDestroy() {
229
- this._pool.putElement(this._poolMember);
230
-
231
- if (this._baseObject.parent)
232
- this._baseObject.parent.removeChild(this._baseObject);
233
-
234
- this._baseObject = null;
235
- }
236
-
237
- _checkPool() {
238
- const pool = Urso.localData.get(POOL_NAME);
239
-
240
- if (pool)
241
- return pool;
242
-
243
- const newPool = new Urso.Game.Lib.ObjectPool(this._constructorFunction.bind(this), this._resetAnimationFunction.bind(this));
244
- Urso.localData.set(POOL_NAME, newPool);
245
-
246
- return newPool;
247
- }
248
- }
249
-
250
- module.exports = ModulesObjectsModelsDragonBones;