@urso/core 0.4.42 → 0.4.45

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 (153) hide show
  1. package/.babelrc +11 -11
  2. package/LICENSE +20 -20
  3. package/README.md +220 -220
  4. package/build/js/index.js +1 -1
  5. package/build/js/index.js.LICENSE.txt +32 -32
  6. package/package.json +51 -51
  7. package/src/js/app.js +78 -78
  8. package/src/js/components/_info.js +10 -10
  9. package/src/js/components/base/_info.js +3 -3
  10. package/src/js/components/base/controller.js +78 -78
  11. package/src/js/components/debug/_info.js +7 -7
  12. package/src/js/components/debug/controller.js +38 -38
  13. package/src/js/components/debug/coords.js +23 -23
  14. package/src/js/components/debug/fps.js +34 -34
  15. package/src/js/components/debug/template.js +55 -55
  16. package/src/js/components/debug/timescale.js +60 -60
  17. package/src/js/components/deviceRotate/_info.js +3 -3
  18. package/src/js/components/deviceRotate/controller.js +86 -86
  19. package/src/js/components/fullscreen/_info.js +6 -6
  20. package/src/js/components/fullscreen/android.js +104 -104
  21. package/src/js/components/fullscreen/controller.js +76 -76
  22. package/src/js/components/fullscreen/desktop.js +49 -49
  23. package/src/js/components/fullscreen/ios.js +115 -115
  24. package/src/js/components/layersSwitcher/_info.js +4 -4
  25. package/src/js/components/layersSwitcher/config.js +26 -26
  26. package/src/js/components/layersSwitcher/controller.js +34 -34
  27. package/src/js/components/loader/_info.js +4 -4
  28. package/src/js/components/loader/controller.js +66 -66
  29. package/src/js/components/loader/template.js +70 -70
  30. package/src/js/components/soundInitialPopup/_info.js +3 -3
  31. package/src/js/components/soundInitialPopup/controller.js +42 -42
  32. package/src/js/components/soundInitialPopup/template.js +109 -109
  33. package/src/js/components/stateDriven/_info.js +3 -3
  34. package/src/js/components/stateDriven/controller.js +118 -118
  35. package/src/js/config/load.js +5 -5
  36. package/src/js/config/main.js +10 -10
  37. package/src/js/extra/_info.js +24 -24
  38. package/src/js/extra/browserEvents.js +38 -38
  39. package/src/js/extra/pixiPatch.js +79 -79
  40. package/src/js/extra/setTimeout.js +7 -7
  41. package/src/js/index.js +8 -8
  42. package/src/js/lib/_info.js +13 -13
  43. package/src/js/lib/cache.js +105 -105
  44. package/src/js/lib/composition.js +85 -85
  45. package/src/js/lib/device.js +1286 -1286
  46. package/src/js/lib/helper.js +539 -539
  47. package/src/js/lib/loader.js +131 -131
  48. package/src/js/lib/localData.js +15 -15
  49. package/src/js/lib/logger.js +22 -22
  50. package/src/js/lib/math.js +35 -35
  51. package/src/js/lib/objectPool.js +54 -54
  52. package/src/js/lib/time.js +18 -18
  53. package/src/js/lib/tween.js +147 -147
  54. package/src/js/modules/_info.js +12 -12
  55. package/src/js/modules/assets/_info.js +7 -7
  56. package/src/js/modules/assets/baseModel.js +18 -18
  57. package/src/js/modules/assets/config.js +37 -37
  58. package/src/js/modules/assets/controller.js +46 -46
  59. package/src/js/modules/assets/models/_info.js +11 -11
  60. package/src/js/modules/assets/models/atlas.js +8 -8
  61. package/src/js/modules/assets/models/audiosprite.js +27 -27
  62. package/src/js/modules/assets/models/bitmapFont.js +8 -8
  63. package/src/js/modules/assets/models/container.js +16 -16
  64. package/src/js/modules/assets/models/font.js +8 -8
  65. package/src/js/modules/assets/models/image.js +13 -13
  66. package/src/js/modules/assets/models/json.js +8 -8
  67. package/src/js/modules/assets/models/sound.js +14 -14
  68. package/src/js/modules/assets/models/spine.js +14 -14
  69. package/src/js/modules/assets/service.js +365 -365
  70. package/src/js/modules/i18n/_info.js +4 -4
  71. package/src/js/modules/i18n/config.js +17 -17
  72. package/src/js/modules/i18n/controller.js +79 -79
  73. package/src/js/modules/instances/_info.js +3 -3
  74. package/src/js/modules/instances/controller.js +261 -261
  75. package/src/js/modules/logic/_info.js +4 -4
  76. package/src/js/modules/logic/config/_info.js +2 -2
  77. package/src/js/modules/logic/config/sounds.js +23 -23
  78. package/src/js/modules/logic/controller.js +48 -48
  79. package/src/js/modules/logic/sounds.js +103 -103
  80. package/src/js/modules/objects/_info.js +11 -11
  81. package/src/js/modules/objects/baseModel.js +197 -197
  82. package/src/js/modules/objects/cache.js +99 -99
  83. package/src/js/modules/objects/controller.js +131 -131
  84. package/src/js/modules/objects/create.js +237 -237
  85. package/src/js/modules/objects/find.js +140 -140
  86. package/src/js/modules/objects/models/_info.js +25 -25
  87. package/src/js/modules/objects/models/atlasImage.js +50 -50
  88. package/src/js/modules/objects/models/bitmapText.js +39 -39
  89. package/src/js/modules/objects/models/button.js +189 -189
  90. package/src/js/modules/objects/models/buttonComposite.js +35 -35
  91. package/src/js/modules/objects/models/checkbox.js +96 -96
  92. package/src/js/modules/objects/models/collection.js +54 -54
  93. package/src/js/modules/objects/models/component.js +44 -44
  94. package/src/js/modules/objects/models/container.js +19 -19
  95. package/src/js/modules/objects/models/emitter.js +54 -54
  96. package/src/js/modules/objects/models/graphics.js +38 -38
  97. package/src/js/modules/objects/models/group.js +19 -19
  98. package/src/js/modules/objects/models/hitArea.js +104 -104
  99. package/src/js/modules/objects/models/image.js +34 -34
  100. package/src/js/modules/objects/models/imagesAnimation.js +113 -113
  101. package/src/js/modules/objects/models/mask.js +38 -38
  102. package/src/js/modules/objects/models/nineSlicePlane.js +30 -30
  103. package/src/js/modules/objects/models/scrollbox.js +61 -61
  104. package/src/js/modules/objects/models/slider.js +253 -253
  105. package/src/js/modules/objects/models/spine.js +271 -275
  106. package/src/js/modules/objects/models/text.js +59 -59
  107. package/src/js/modules/objects/models/textInput.js +66 -66
  108. package/src/js/modules/objects/models/toggle.js +180 -180
  109. package/src/js/modules/objects/models/world.js +19 -19
  110. package/src/js/modules/objects/propertyAdapter.js +422 -422
  111. package/src/js/modules/objects/proxy.js +282 -272
  112. package/src/js/modules/objects/styles.js +120 -120
  113. package/src/js/modules/observer/_info.js +4 -4
  114. package/src/js/modules/observer/controller.js +99 -99
  115. package/src/js/modules/observer/events.js +44 -44
  116. package/src/js/modules/scenes/_info.js +8 -8
  117. package/src/js/modules/scenes/controller.js +103 -103
  118. package/src/js/modules/scenes/model.js +28 -28
  119. package/src/js/modules/scenes/pixiWrapper.js +237 -237
  120. package/src/js/modules/scenes/resolutions.js +173 -173
  121. package/src/js/modules/scenes/resolutionsConfig.js +73 -73
  122. package/src/js/modules/scenes/service.js +139 -139
  123. package/src/js/modules/soundManager/_info.js +3 -3
  124. package/src/js/modules/soundManager/controller.js +100 -100
  125. package/src/js/modules/soundManager/soundSprite.js +243 -243
  126. package/src/js/modules/statesManager/_info.js +12 -12
  127. package/src/js/modules/statesManager/action.js +60 -60
  128. package/src/js/modules/statesManager/actions/_info.js +3 -3
  129. package/src/js/modules/statesManager/all.js +23 -23
  130. package/src/js/modules/statesManager/configStates.js +71 -71
  131. package/src/js/modules/statesManager/controller.js +170 -170
  132. package/src/js/modules/statesManager/functionsStorage.js +82 -82
  133. package/src/js/modules/statesManager/helper.js +27 -27
  134. package/src/js/modules/statesManager/race.js +75 -75
  135. package/src/js/modules/statesManager/sequence.js +47 -47
  136. package/src/js/modules/template/_info.js +6 -6
  137. package/src/js/modules/template/controller.js +28 -28
  138. package/src/js/modules/template/model.js +11 -11
  139. package/src/js/modules/template/service.js +137 -137
  140. package/src/js/modules/template/types.js +45 -45
  141. package/src/js/modules/transport/_info.js +8 -8
  142. package/src/js/modules/transport/baseConnectionType.js +24 -24
  143. package/src/js/modules/transport/config.js +13 -13
  144. package/src/js/modules/transport/connectionTypes/_info.js +3 -3
  145. package/src/js/modules/transport/connectionTypes/websocket.js +74 -74
  146. package/src/js/modules/transport/connectionTypes/xhr.js +44 -44
  147. package/src/js/modules/transport/controller.js +48 -48
  148. package/src/js/modules/transport/decorator.js +17 -17
  149. package/src/js/modules/transport/service.js +153 -153
  150. package/src/js/templates/_info.js +4 -4
  151. package/src/js/templates/groups/_info.js +1 -1
  152. package/src/js/templates/scenes/_info.js +1 -1
  153. package/webpack.config.js +47 -47
@@ -1,275 +1,271 @@
1
- class ModulesObjectsModelsSpine extends Urso.Core.Modules.Objects.BaseModel {
2
- constructor(params) {
3
- super(params);
4
-
5
- this.type = Urso.types.objects.SPINE;
6
- this._addBaseObject();
7
- }
8
-
9
- /**
10
- * setup params to object model
11
- * @param {Object} params
12
- */
13
- setupParams(params) {
14
- super.setupParams(params);
15
-
16
- this.assetKey = Urso.helper.recursiveGet('assetKey', params, false);
17
-
18
- this.animation = {
19
- timeScale: Urso.helper.recursiveGet('animation.timeScale', params, 1),
20
- name: Urso.helper.recursiveGet('animation.name', params, false),
21
- loop: Urso.helper.recursiveGet('animation.loop', params, false),
22
- onComplete: Urso.helper.recursiveGet('animation.onComplete', params, false)
23
- };
24
-
25
- params.animation = this.animation; //we redefine original property here
26
- }
27
-
28
- /**
29
- * play spine animation
30
- * @param {String} animationName
31
- * @param {Boolean} [loopFlag]
32
- * @param {Number} [track] - you can define track number for current animation
33
- */
34
- play(animationName, loopFlag = false, track = 0) {
35
- this._baseObject.state.setAnimation(track, animationName, loopFlag);
36
- }
37
-
38
- /**
39
- * set skin by name
40
- * @param {String} skinName
41
- */
42
- setSkinByName(skinName) {
43
- this._baseObject.skeleton.setSkinByName(skinName);
44
- }
45
-
46
- /**
47
- * reset animation to first frame
48
- */
49
- setToSetupPose() {
50
- this._baseObject.skeleton.setToSetupPose();
51
- }
52
-
53
- /**
54
- * play spine animation and execute function after animation completes
55
- * @param {String} animation - name of the animation to be played
56
- * @param {Function} func - function to be executed
57
- */
58
- playAndThen(animation, func) {
59
- this.playInSequenceAndThen([animation], func);
60
- }
61
-
62
- /**
63
- * play spine animations in sequence
64
- * @param {String[]} animations - names of the animations to be played
65
- */
66
- playInSequence(animations) {
67
- this.stop();
68
- let removeSelf = () => { };
69
- let animationCount = 0;
70
-
71
- const completer = {
72
- complete: () => {
73
- animationCount++;
74
-
75
- if (animations[animationCount])
76
- this.play(animations[animationCount])
77
- else {
78
- removeSelf();
79
- }
80
- }
81
- }
82
-
83
- removeSelf = () => this._baseObject.state.removeListener(completer);
84
- this._baseObject.state.addListener(completer);
85
- this.play(animations[0]);
86
- }
87
-
88
- /**
89
- * play spine animations in sequence and execute function after last animation completes
90
- * @param {String[]} animations - names of the animations to be played
91
- * @param {Function} func - function to be executed
92
- */
93
- playInSequenceAndThen(animations, func) {
94
- let animationsLeft = animations.length;
95
- let removeSelf = () => { };
96
-
97
- let completer = {
98
- complete: () => {
99
- if (--animationsLeft === 0) {
100
- func && func();
101
- removeSelf();
102
- }
103
- }
104
- };
105
-
106
- removeSelf = () => this._baseObject.state.removeListener(completer);
107
- this._baseObject.state.addListener(completer);
108
- this.playInSequence(animations);
109
- }
110
-
111
- /**
112
- * stop track animation
113
- * @param {Number} [track] - you can define track number to stop
114
- */
115
- stopTrack(track) {
116
- this._baseObject.state.clearTrack(track);
117
- }
118
-
119
- /**
120
- * stop all animations
121
- */
122
- stop() {
123
- this._baseObject.state.clearTracks();
124
- }
125
-
126
- /**
127
- * reset all animations
128
- */
129
- reset() {
130
- this._baseObject.state.setEmptyAnimations();
131
- }
132
-
133
- /**
134
- * add object to spine slot
135
- * @param {String} slotName
136
- * @param {Object} object - created by engine object
137
- */
138
- addToSlot(slotName, object) {
139
- this._addToSlot(slotName, object, false);
140
- }
141
-
142
- /**
143
- * replace spine slot with new object
144
- * @param {String} slotName
145
- * @param {Object} object - created by engine object
146
- */
147
- replaceSlotWith(slotName, object) {
148
- this._addToSlot(slotName, object, true);
149
- }
150
-
151
- /**
152
- * set/update animation config
153
- * @param {*} config
154
- * @param {boolean} [noObjectCreate] dont use this flag out of core
155
- *
156
- * config keys:
157
- timeScale
158
- onComplete
159
- */
160
- setAnimationConfig(config = {}, noObjectCreate) {
161
- this.animation = {
162
- ...this.animation,
163
- ...config
164
- };
165
-
166
- /*if (config.timeScale)
167
- this._baseObject.state.timeScale = config.timeScale;*/ //deprecated - now we use getTimeScale getter
168
-
169
- if (config.onComplete) {
170
- if (this._baseObject.state.listeners.length !== 0) {
171
- Urso.logger.warn('ModulesObjectsModelsSpine setAnimationConfig warning: animation state listeners will be cleared');
172
- }
173
- this._baseObject.state.clearListeners();
174
- this._baseObject.state.addListener({ complete: this.animation.onComplete });
175
- }
176
- }
177
-
178
- /**
179
- * returns skeleton's child by it's name
180
- * @param {string} name
181
- * @returns {DisplayObject}
182
- */
183
- getChildByName(name) {
184
- return this.children[this._baseObject.skeleton.findSlotIndex(name)];
185
- }
186
-
187
- /**
188
- * returns skeleton's slot by it's name
189
- * @param {string} name
190
- * @returns {Slot}
191
- */
192
- findSlot(name) {
193
- return this._baseObject.skeleton.findSlot(name)
194
- }
195
-
196
- /**
197
- * returns skeleton's bone by it's name
198
- * @param {string} name
199
- * @returns {Bone}
200
- */
201
- findBone(name) {
202
- return this._baseObject.skeleton.findBone(name)
203
- }
204
-
205
- /**
206
- * returns animation from spineData by it's name
207
- * @param {string} name
208
- * @returns {Animation}
209
- */
210
- findAnimation(name) {
211
- return this._baseObject.spineData.findAnimation(name)
212
- }
213
-
214
-
215
- /**
216
- * returns event from spineData by it's name
217
- * @param {string} name
218
- * @returns {EventData}
219
- */
220
- findEvent(name) {
221
- return this._baseObject.spineData.findEvent(name)
222
- }
223
-
224
- /**
225
- * system function
226
- * add object to pixi tree
227
- */
228
- _addBaseObject() {
229
- let spineAsset = Urso.cache.getSpine(this.assetKey);
230
-
231
- if (!spineAsset)
232
- Urso.logger.error('ModulesObjectsModelsSpine assets error: no spine object ' + this.assetKey);
233
-
234
- this._baseObject = new PIXI.spine.Spine(spineAsset.spineData);
235
- //this._baseObject.state.timeScale = this.animation.timeScale;
236
- Object.defineProperty(this._baseObject.state, 'timeScale', { get: this.getTimeScale.bind(this) });
237
-
238
- if (this.animation.onComplete)
239
- this._baseObject.state.addListener({ complete: this.animation.onComplete });
240
-
241
- if (this.animation.name)
242
- this.play(this.animation.name, this.animation.loop);
243
- };
244
-
245
- _addToSlot(slotName, object, replaceSlotContents) {
246
- const spine = this._baseObject;
247
- const slotIndex = spine.spineData.slots.findIndex(({ name }) => name === slotName);
248
- const currentSlot = spine.slotContainers[slotIndex];
249
-
250
- if (currentSlot) {
251
- object._baseObject.scale.y = -1;
252
-
253
- Urso.objects.removeChild(object.parent, object, true);
254
-
255
- if (replaceSlotContents)
256
- currentSlot.removeChildren(); //todo check if its proxy and reset parent
257
-
258
- object.parent = this; //todo make removeChild for addedToSlotObjects
259
- currentSlot.addChild(object._baseObject);
260
- Urso.objects.refreshStyles();
261
- } else {
262
- Urso.logger.warn('ModulesObjectsModelsSpine _addToSlot error: no spine slot ' + slotName);
263
- }
264
- }
265
-
266
- /**
267
- * get animation timeScale
268
- * @returns Number
269
- */
270
- getTimeScale() {
271
- return Urso.scenes.timeScale * this.animation.timeScale;
272
- }
273
- }
274
-
275
- module.exports = ModulesObjectsModelsSpine;
1
+ class ModulesObjectsModelsSpine extends Urso.Core.Modules.Objects.BaseModel {
2
+ constructor(params) {
3
+ super(params);
4
+
5
+ this.type = Urso.types.objects.SPINE;
6
+ this._addBaseObject();
7
+ }
8
+
9
+ /**
10
+ * setup params to object model
11
+ * @param {Object} params
12
+ */
13
+ setupParams(params) {
14
+ super.setupParams(params);
15
+
16
+ this.assetKey = Urso.helper.recursiveGet('assetKey', params, false);
17
+
18
+ this.animation = {
19
+ timeScale: Urso.helper.recursiveGet('animation.timeScale', params, 1),
20
+ name: Urso.helper.recursiveGet('animation.name', params, false),
21
+ loop: Urso.helper.recursiveGet('animation.loop', params, false),
22
+ onComplete: Urso.helper.recursiveGet('animation.onComplete', params, false)
23
+ };
24
+
25
+ params.animation = this.animation; //we redefine original property here
26
+ }
27
+
28
+ /**
29
+ * play spine animation
30
+ * @param {String} animationName
31
+ * @param {Boolean} [loopFlag]
32
+ * @param {Number} [track] - you can define track number for current animation
33
+ */
34
+ play(animationName, loopFlag = false, track = 0) {
35
+ this._baseObject.state.setAnimation(track, animationName, loopFlag);
36
+ }
37
+
38
+ /**
39
+ * set skin by name
40
+ * @param {String} skinName
41
+ */
42
+ setSkinByName(skinName) {
43
+ this._baseObject.skeleton.setSkinByName(skinName);
44
+ }
45
+
46
+ /**
47
+ * reset animation to first frame
48
+ */
49
+ setToSetupPose() {
50
+ this._baseObject.skeleton.setToSetupPose();
51
+ }
52
+
53
+ /**
54
+ * play spine animation and execute function after animation completes
55
+ * @param {String} animation - name of the animation to be played
56
+ * @param {Function} func - function to be executed
57
+ */
58
+ playAndThen(animation, func) {
59
+ this.playInSequenceAndThen([animation], func);
60
+ }
61
+
62
+ /**
63
+ * play spine animations in sequence
64
+ * @param {String[]} animations - names of the animations to be played
65
+ */
66
+ playInSequence(animations) {
67
+ this._playInSequenceAndThen(animations);
68
+ }
69
+
70
+ /**
71
+ * play spine animations in sequence and execute function after last animation completes
72
+ * @param {String[]} animations - names of the animations to be played
73
+ * @param {Function} func - function to be executed
74
+ */
75
+ playInSequenceAndThen(animations, func) {
76
+ this._playInSequenceAndThen(animations, func);
77
+ }
78
+
79
+ /**
80
+ * play spine animations in sequence and execute function after last animation completes
81
+ * @param {String[]} animations - names of the animations to be played
82
+ * @param {Function} func - function to be executed
83
+ */
84
+ _playInSequenceAndThen(animations, func) {
85
+ this.stop();
86
+ let removeSelf = () => { };
87
+ let animationCount = 0;
88
+
89
+ const completer = {
90
+ complete: () => {
91
+ animationCount++;
92
+
93
+ if (animations[animationCount])
94
+ this.play(animations[animationCount])
95
+ else {
96
+ func && func();
97
+ removeSelf();
98
+ }
99
+ }
100
+ }
101
+
102
+ removeSelf = () => this._baseObject.state.removeListener(completer);
103
+ this._baseObject.state.addListener(completer);
104
+ this.play(animations[0]);
105
+ }
106
+
107
+ /**
108
+ * stop track animation
109
+ * @param {Number} [track] - you can define track number to stop
110
+ */
111
+ stopTrack(track) {
112
+ this._baseObject.state.clearTrack(track);
113
+ }
114
+
115
+ /**
116
+ * stop all animations
117
+ */
118
+ stop() {
119
+ this._baseObject.state.clearTracks();
120
+ }
121
+
122
+ /**
123
+ * reset all animations
124
+ */
125
+ reset() {
126
+ this._baseObject.state.setEmptyAnimations();
127
+ }
128
+
129
+ /**
130
+ * add object to spine slot
131
+ * @param {String} slotName
132
+ * @param {Object} object - created by engine object
133
+ */
134
+ addToSlot(slotName, object) {
135
+ this._addToSlot(slotName, object, false);
136
+ }
137
+
138
+ /**
139
+ * replace spine slot with new object
140
+ * @param {String} slotName
141
+ * @param {Object} object - created by engine object
142
+ */
143
+ replaceSlotWith(slotName, object) {
144
+ this._addToSlot(slotName, object, true);
145
+ }
146
+
147
+ /**
148
+ * set/update animation config
149
+ * @param {*} config
150
+ * @param {boolean} [noObjectCreate] dont use this flag out of core
151
+ *
152
+ * config keys:
153
+ timeScale
154
+ onComplete
155
+ */
156
+ setAnimationConfig(config = {}, noObjectCreate) {
157
+ this.animation = {
158
+ ...this.animation,
159
+ ...config
160
+ };
161
+
162
+ /*if (config.timeScale)
163
+ this._baseObject.state.timeScale = config.timeScale;*/ //deprecated - now we use getTimeScale getter
164
+
165
+ if (config.onComplete) {
166
+ if (this._baseObject.state.listeners.length !== 0) {
167
+ Urso.logger.warn('ModulesObjectsModelsSpine setAnimationConfig warning: animation state listeners will be cleared');
168
+ }
169
+ this._baseObject.state.clearListeners();
170
+ this._baseObject.state.addListener({ complete: this.animation.onComplete });
171
+ }
172
+ }
173
+
174
+ /**
175
+ * returns skeleton's child by it's name
176
+ * @param {string} name
177
+ * @returns {DisplayObject}
178
+ */
179
+ getChildByName(name) {
180
+ return this.children[this._baseObject.skeleton.findSlotIndex(name)];
181
+ }
182
+
183
+ /**
184
+ * returns skeleton's slot by it's name
185
+ * @param {string} name
186
+ * @returns {Slot}
187
+ */
188
+ findSlot(name) {
189
+ return this._baseObject.skeleton.findSlot(name)
190
+ }
191
+
192
+ /**
193
+ * returns skeleton's bone by it's name
194
+ * @param {string} name
195
+ * @returns {Bone}
196
+ */
197
+ findBone(name) {
198
+ return this._baseObject.skeleton.findBone(name)
199
+ }
200
+
201
+ /**
202
+ * returns animation from spineData by it's name
203
+ * @param {string} name
204
+ * @returns {Animation}
205
+ */
206
+ findAnimation(name) {
207
+ return this._baseObject.spineData.findAnimation(name)
208
+ }
209
+
210
+
211
+ /**
212
+ * returns event from spineData by it's name
213
+ * @param {string} name
214
+ * @returns {EventData}
215
+ */
216
+ findEvent(name) {
217
+ return this._baseObject.spineData.findEvent(name)
218
+ }
219
+
220
+ /**
221
+ * system function
222
+ * add object to pixi tree
223
+ */
224
+ _addBaseObject() {
225
+ let spineAsset = Urso.cache.getSpine(this.assetKey);
226
+
227
+ if (!spineAsset)
228
+ Urso.logger.error('ModulesObjectsModelsSpine assets error: no spine object ' + this.assetKey);
229
+
230
+ this._baseObject = new PIXI.spine.Spine(spineAsset.spineData);
231
+ //this._baseObject.state.timeScale = this.animation.timeScale;
232
+ Object.defineProperty(this._baseObject.state, 'timeScale', { get: this.getTimeScale.bind(this) });
233
+
234
+ if (this.animation.onComplete)
235
+ this._baseObject.state.addListener({ complete: this.animation.onComplete });
236
+
237
+ if (this.animation.name)
238
+ this.play(this.animation.name, this.animation.loop);
239
+ };
240
+
241
+ _addToSlot(slotName, object, replaceSlotContents) {
242
+ const spine = this._baseObject;
243
+ const slotIndex = spine.spineData.slots.findIndex(({ name }) => name === slotName);
244
+ const currentSlot = spine.slotContainers[slotIndex];
245
+
246
+ if (currentSlot) {
247
+ object._baseObject.scale.y = -1;
248
+
249
+ Urso.objects.removeChild(object.parent, object, true);
250
+
251
+ if (replaceSlotContents)
252
+ currentSlot.removeChildren(); //todo check if its proxy and reset parent
253
+
254
+ object.parent = this; //todo make removeChild for addedToSlotObjects
255
+ currentSlot.addChild(object._baseObject);
256
+ Urso.objects.refreshStyles();
257
+ } else {
258
+ Urso.logger.warn('ModulesObjectsModelsSpine _addToSlot error: no spine slot ' + slotName);
259
+ }
260
+ }
261
+
262
+ /**
263
+ * get animation timeScale
264
+ * @returns Number
265
+ */
266
+ getTimeScale() {
267
+ return Urso.scenes.timeScale * this.animation.timeScale;
268
+ }
269
+ }
270
+
271
+ module.exports = ModulesObjectsModelsSpine;