@urso/core 0.4.45 → 0.4.49

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 (156) 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/editor/_info.js +4 -0
  20. package/src/js/components/editor/api.js +72 -0
  21. package/src/js/components/editor/controller.js +13 -0
  22. package/src/js/components/fullscreen/_info.js +6 -6
  23. package/src/js/components/fullscreen/android.js +104 -104
  24. package/src/js/components/fullscreen/controller.js +76 -76
  25. package/src/js/components/fullscreen/desktop.js +49 -49
  26. package/src/js/components/fullscreen/ios.js +115 -115
  27. package/src/js/components/layersSwitcher/_info.js +4 -4
  28. package/src/js/components/layersSwitcher/config.js +26 -26
  29. package/src/js/components/layersSwitcher/controller.js +34 -34
  30. package/src/js/components/loader/_info.js +4 -4
  31. package/src/js/components/loader/controller.js +66 -66
  32. package/src/js/components/loader/template.js +70 -70
  33. package/src/js/components/soundInitialPopup/_info.js +3 -3
  34. package/src/js/components/soundInitialPopup/controller.js +42 -42
  35. package/src/js/components/soundInitialPopup/template.js +109 -109
  36. package/src/js/components/stateDriven/_info.js +3 -3
  37. package/src/js/components/stateDriven/controller.js +118 -118
  38. package/src/js/config/load.js +5 -5
  39. package/src/js/config/main.js +11 -10
  40. package/src/js/extra/_info.js +24 -24
  41. package/src/js/extra/browserEvents.js +38 -38
  42. package/src/js/extra/pixiPatch.js +79 -79
  43. package/src/js/extra/setTimeout.js +7 -7
  44. package/src/js/index.js +8 -8
  45. package/src/js/lib/_info.js +13 -13
  46. package/src/js/lib/cache.js +105 -105
  47. package/src/js/lib/composition.js +85 -85
  48. package/src/js/lib/device.js +1286 -1286
  49. package/src/js/lib/helper.js +539 -539
  50. package/src/js/lib/loader.js +136 -131
  51. package/src/js/lib/localData.js +15 -15
  52. package/src/js/lib/logger.js +22 -22
  53. package/src/js/lib/math.js +35 -35
  54. package/src/js/lib/objectPool.js +54 -54
  55. package/src/js/lib/time.js +18 -18
  56. package/src/js/lib/tween.js +147 -147
  57. package/src/js/modules/_info.js +12 -12
  58. package/src/js/modules/assets/_info.js +7 -7
  59. package/src/js/modules/assets/baseModel.js +18 -18
  60. package/src/js/modules/assets/config.js +37 -37
  61. package/src/js/modules/assets/controller.js +46 -46
  62. package/src/js/modules/assets/models/_info.js +11 -11
  63. package/src/js/modules/assets/models/atlas.js +8 -8
  64. package/src/js/modules/assets/models/audiosprite.js +27 -27
  65. package/src/js/modules/assets/models/bitmapFont.js +8 -8
  66. package/src/js/modules/assets/models/container.js +16 -16
  67. package/src/js/modules/assets/models/font.js +8 -8
  68. package/src/js/modules/assets/models/image.js +13 -13
  69. package/src/js/modules/assets/models/json.js +8 -8
  70. package/src/js/modules/assets/models/sound.js +14 -14
  71. package/src/js/modules/assets/models/spine.js +14 -14
  72. package/src/js/modules/assets/service.js +365 -365
  73. package/src/js/modules/i18n/_info.js +4 -4
  74. package/src/js/modules/i18n/config.js +17 -17
  75. package/src/js/modules/i18n/controller.js +79 -79
  76. package/src/js/modules/instances/_info.js +3 -3
  77. package/src/js/modules/instances/controller.js +261 -261
  78. package/src/js/modules/logic/_info.js +4 -4
  79. package/src/js/modules/logic/config/_info.js +2 -2
  80. package/src/js/modules/logic/config/sounds.js +23 -23
  81. package/src/js/modules/logic/controller.js +48 -48
  82. package/src/js/modules/logic/sounds.js +103 -103
  83. package/src/js/modules/objects/_info.js +11 -11
  84. package/src/js/modules/objects/baseModel.js +197 -197
  85. package/src/js/modules/objects/cache.js +99 -99
  86. package/src/js/modules/objects/controller.js +131 -131
  87. package/src/js/modules/objects/create.js +237 -237
  88. package/src/js/modules/objects/find.js +140 -140
  89. package/src/js/modules/objects/models/_info.js +25 -25
  90. package/src/js/modules/objects/models/atlasImage.js +50 -50
  91. package/src/js/modules/objects/models/bitmapText.js +39 -39
  92. package/src/js/modules/objects/models/button.js +189 -189
  93. package/src/js/modules/objects/models/buttonComposite.js +35 -35
  94. package/src/js/modules/objects/models/checkbox.js +96 -96
  95. package/src/js/modules/objects/models/collection.js +54 -54
  96. package/src/js/modules/objects/models/component.js +44 -44
  97. package/src/js/modules/objects/models/container.js +19 -19
  98. package/src/js/modules/objects/models/emitter.js +67 -54
  99. package/src/js/modules/objects/models/graphics.js +38 -38
  100. package/src/js/modules/objects/models/group.js +19 -19
  101. package/src/js/modules/objects/models/hitArea.js +104 -104
  102. package/src/js/modules/objects/models/image.js +34 -34
  103. package/src/js/modules/objects/models/imagesAnimation.js +113 -113
  104. package/src/js/modules/objects/models/mask.js +38 -38
  105. package/src/js/modules/objects/models/nineSlicePlane.js +30 -30
  106. package/src/js/modules/objects/models/scrollbox.js +61 -61
  107. package/src/js/modules/objects/models/slider.js +253 -253
  108. package/src/js/modules/objects/models/spine.js +271 -271
  109. package/src/js/modules/objects/models/text.js +59 -59
  110. package/src/js/modules/objects/models/textInput.js +66 -66
  111. package/src/js/modules/objects/models/toggle.js +180 -180
  112. package/src/js/modules/objects/models/world.js +19 -19
  113. package/src/js/modules/objects/propertyAdapter.js +422 -422
  114. package/src/js/modules/objects/proxy.js +282 -282
  115. package/src/js/modules/objects/styles.js +120 -120
  116. package/src/js/modules/observer/_info.js +4 -4
  117. package/src/js/modules/observer/controller.js +99 -99
  118. package/src/js/modules/observer/events.js +44 -44
  119. package/src/js/modules/scenes/_info.js +8 -8
  120. package/src/js/modules/scenes/controller.js +103 -103
  121. package/src/js/modules/scenes/model.js +28 -28
  122. package/src/js/modules/scenes/pixiWrapper.js +237 -237
  123. package/src/js/modules/scenes/resolutions.js +173 -173
  124. package/src/js/modules/scenes/resolutionsConfig.js +73 -73
  125. package/src/js/modules/scenes/service.js +139 -139
  126. package/src/js/modules/soundManager/_info.js +3 -3
  127. package/src/js/modules/soundManager/controller.js +100 -100
  128. package/src/js/modules/soundManager/soundSprite.js +243 -243
  129. package/src/js/modules/statesManager/_info.js +12 -12
  130. package/src/js/modules/statesManager/action.js +60 -60
  131. package/src/js/modules/statesManager/actions/_info.js +3 -3
  132. package/src/js/modules/statesManager/all.js +23 -23
  133. package/src/js/modules/statesManager/configStates.js +71 -71
  134. package/src/js/modules/statesManager/controller.js +170 -170
  135. package/src/js/modules/statesManager/functionsStorage.js +82 -82
  136. package/src/js/modules/statesManager/helper.js +27 -27
  137. package/src/js/modules/statesManager/race.js +75 -75
  138. package/src/js/modules/statesManager/sequence.js +47 -47
  139. package/src/js/modules/template/_info.js +6 -6
  140. package/src/js/modules/template/controller.js +28 -28
  141. package/src/js/modules/template/model.js +11 -11
  142. package/src/js/modules/template/service.js +137 -137
  143. package/src/js/modules/template/types.js +45 -45
  144. package/src/js/modules/transport/_info.js +8 -8
  145. package/src/js/modules/transport/baseConnectionType.js +24 -24
  146. package/src/js/modules/transport/config.js +13 -13
  147. package/src/js/modules/transport/connectionTypes/_info.js +3 -3
  148. package/src/js/modules/transport/connectionTypes/websocket.js +74 -74
  149. package/src/js/modules/transport/connectionTypes/xhr.js +44 -44
  150. package/src/js/modules/transport/controller.js +48 -48
  151. package/src/js/modules/transport/decorator.js +17 -17
  152. package/src/js/modules/transport/service.js +153 -153
  153. package/src/js/templates/_info.js +4 -4
  154. package/src/js/templates/groups/_info.js +1 -1
  155. package/src/js/templates/scenes/_info.js +1 -1
  156. package/webpack.config.js +47 -47
@@ -1,271 +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._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;
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;
@@ -1,59 +1,59 @@
1
- class ModulesObjectsModelsText extends Urso.Core.Modules.Objects.BaseModel {
2
- constructor(params) {
3
- super(params);
4
-
5
- this.type = Urso.types.objects.TEXT;
6
- this._addBaseObject();
7
- }
8
-
9
- setupParams(params) {
10
- super.setupParams(params);
11
-
12
- this.text = Urso.helper.recursiveGet('text', params, false);
13
- this.localeId = Urso.helper.recursiveGet('localeId', params, false); //you can use this instead text for localization
14
-
15
- this.localeVariables = Urso.helper.recursiveGet('localeVariables', params, {}); //optional variables for localization by localeId
16
-
17
- this.lineHeight = Urso.helper.recursiveGet('lineHeight', params, 0);
18
- this.fontFamily = Urso.helper.recursiveGet('fontFamily', params, 'Arial');
19
- this.fontSize = Urso.helper.recursiveGet('fontSize', params, false);
20
- this.fontStyle = Urso.helper.recursiveGet('fontStyle', params, false); //'italic'
21
- this.fontWeight = Urso.helper.recursiveGet('fontWeight', params, false); // 'bold'
22
- this.fill = Urso.helper.recursiveGet('fill', params, '#000000'); // gradient ['#ffffff', '#00ff99']
23
- this.fillCustomColors = Urso.helper.recursiveGet('fillCustomColors', params, false); //or array [{position:12,color:'#000000'},...]
24
- this.stroke = Urso.helper.recursiveGet('stroke', params, 'black');
25
- this.strokeThickness = Urso.helper.recursiveGet('strokeThickness', params, 0);
26
- this.dropShadow = Urso.helper.recursiveGet('dropShadow', params, false);
27
- this.dropShadowColor = Urso.helper.recursiveGet('dropShadowColor', params, '#000000');
28
- this.dropShadowBlur = Urso.helper.recursiveGet('dropShadowBlur', params, 0);
29
- this.dropShadowAngle = Urso.helper.recursiveGet('dropShadowAngle', params, 0); //Math.PI / 6
30
- this.dropShadowDistance = Urso.helper.recursiveGet('dropShadowBlur', params, 0); // 6
31
- this.wordWrap = Urso.helper.recursiveGet('wordWrap', params, false);
32
- this.wordWrapWidth = Urso.helper.recursiveGet('wordWrapWidth', params, 100);
33
- this.leading = Urso.helper.recursiveGet('leading', params, 0);
34
- this.textAlign = Urso.helper.recursiveGet('textAlign', params, 'left');
35
- }
36
-
37
- _addBaseObject() {
38
- if (this.localeId)
39
- this._originalModel.text = this.text = Urso.i18n.get(this.localeId, this.localeVariables);
40
-
41
- const styles = { fontFamily: this.fontFamily, leading: this.leading, align: this.textAlign }
42
- this._baseObject = new PIXI.Text(this.text, styles);
43
-
44
- if (this.fillCustomColors) {
45
- this._baseObject.fillCustomColors = this.fillCustomColors;
46
- }
47
- };
48
-
49
- _newLocaleHandler() {
50
- this.text = this._baseObject.text = Urso.i18n.get(this.localeId, this.localeVariables);
51
- }
52
-
53
- _subscribeOnce() {
54
- if (this.localeId)
55
- this.addListener(Urso.events.MODULES_I18N_NEW_LOCALE_WAS_SET, this._newLocaleHandler.bind(this));
56
- }
57
- }
58
-
59
- module.exports = ModulesObjectsModelsText;
1
+ class ModulesObjectsModelsText extends Urso.Core.Modules.Objects.BaseModel {
2
+ constructor(params) {
3
+ super(params);
4
+
5
+ this.type = Urso.types.objects.TEXT;
6
+ this._addBaseObject();
7
+ }
8
+
9
+ setupParams(params) {
10
+ super.setupParams(params);
11
+
12
+ this.text = Urso.helper.recursiveGet('text', params, false);
13
+ this.localeId = Urso.helper.recursiveGet('localeId', params, false); //you can use this instead text for localization
14
+
15
+ this.localeVariables = Urso.helper.recursiveGet('localeVariables', params, {}); //optional variables for localization by localeId
16
+
17
+ this.lineHeight = Urso.helper.recursiveGet('lineHeight', params, 0);
18
+ this.fontFamily = Urso.helper.recursiveGet('fontFamily', params, 'Arial');
19
+ this.fontSize = Urso.helper.recursiveGet('fontSize', params, false);
20
+ this.fontStyle = Urso.helper.recursiveGet('fontStyle', params, false); //'italic'
21
+ this.fontWeight = Urso.helper.recursiveGet('fontWeight', params, false); // 'bold'
22
+ this.fill = Urso.helper.recursiveGet('fill', params, '#000000'); // gradient ['#ffffff', '#00ff99']
23
+ this.fillCustomColors = Urso.helper.recursiveGet('fillCustomColors', params, false); //or array [{position:12,color:'#000000'},...]
24
+ this.stroke = Urso.helper.recursiveGet('stroke', params, 'black');
25
+ this.strokeThickness = Urso.helper.recursiveGet('strokeThickness', params, 0);
26
+ this.dropShadow = Urso.helper.recursiveGet('dropShadow', params, false);
27
+ this.dropShadowColor = Urso.helper.recursiveGet('dropShadowColor', params, '#000000');
28
+ this.dropShadowBlur = Urso.helper.recursiveGet('dropShadowBlur', params, 0);
29
+ this.dropShadowAngle = Urso.helper.recursiveGet('dropShadowAngle', params, 0); //Math.PI / 6
30
+ this.dropShadowDistance = Urso.helper.recursiveGet('dropShadowBlur', params, 0); // 6
31
+ this.wordWrap = Urso.helper.recursiveGet('wordWrap', params, false);
32
+ this.wordWrapWidth = Urso.helper.recursiveGet('wordWrapWidth', params, 100);
33
+ this.leading = Urso.helper.recursiveGet('leading', params, 0);
34
+ this.textAlign = Urso.helper.recursiveGet('textAlign', params, 'left');
35
+ }
36
+
37
+ _addBaseObject() {
38
+ if (this.localeId)
39
+ this._originalModel.text = this.text = Urso.i18n.get(this.localeId, this.localeVariables);
40
+
41
+ const styles = { fontFamily: this.fontFamily, leading: this.leading, align: this.textAlign }
42
+ this._baseObject = new PIXI.Text(this.text, styles);
43
+
44
+ if (this.fillCustomColors) {
45
+ this._baseObject.fillCustomColors = this.fillCustomColors;
46
+ }
47
+ };
48
+
49
+ _newLocaleHandler() {
50
+ this.text = this._baseObject.text = Urso.i18n.get(this.localeId, this.localeVariables);
51
+ }
52
+
53
+ _subscribeOnce() {
54
+ if (this.localeId)
55
+ this.addListener(Urso.events.MODULES_I18N_NEW_LOCALE_WAS_SET, this._newLocaleHandler.bind(this));
56
+ }
57
+ }
58
+
59
+ module.exports = ModulesObjectsModelsText;