@urso/core 0.5.3 → 0.5.6

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 (158) 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 +222 -38
  6. package/package.json +52 -52
  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 +12 -12
  37. package/src/js/extra/_info.js +26 -26
  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 +136 -136
  48. package/src/js/lib/localData.js +15 -15
  49. package/src/js/lib/logger.js +69 -69
  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 +12 -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/find.js +58 -140
  85. package/src/js/modules/objects/models/_info.js +26 -26
  86. package/src/js/modules/objects/models/atlasImage.js +50 -50
  87. package/src/js/modules/objects/models/bitmapText.js +39 -39
  88. package/src/js/modules/objects/models/button.js +189 -189
  89. package/src/js/modules/objects/models/buttonComposite.js +35 -35
  90. package/src/js/modules/objects/models/checkbox.js +96 -96
  91. package/src/js/modules/objects/models/collection.js +54 -54
  92. package/src/js/modules/objects/models/component.js +44 -44
  93. package/src/js/modules/objects/models/container.js +19 -19
  94. package/src/js/modules/objects/models/emitter.js +67 -67
  95. package/src/js/modules/objects/models/emitterFx.js +99 -99
  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 +64 -61
  104. package/src/js/modules/objects/models/slider.js +253 -253
  105. package/src/js/modules/objects/models/spine.js +276 -276
  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 +423 -423
  111. package/src/js/modules/objects/proxy.js +282 -282
  112. package/src/js/modules/objects/selector.js +136 -0
  113. package/src/js/modules/objects/service.js +240 -240
  114. package/src/js/modules/objects/styles.js +210 -120
  115. package/src/js/modules/observer/_info.js +4 -4
  116. package/src/js/modules/observer/controller.js +99 -99
  117. package/src/js/modules/observer/events.js +45 -45
  118. package/src/js/modules/scenes/_info.js +8 -8
  119. package/src/js/modules/scenes/controller.js +103 -103
  120. package/src/js/modules/scenes/model.js +28 -28
  121. package/src/js/modules/scenes/pixiWrapper.js +237 -237
  122. package/src/js/modules/scenes/resolutions.js +173 -173
  123. package/src/js/modules/scenes/resolutionsConfig.js +73 -73
  124. package/src/js/modules/scenes/service.js +142 -142
  125. package/src/js/modules/soundManager/_info.js +3 -3
  126. package/src/js/modules/soundManager/controller.js +100 -100
  127. package/src/js/modules/soundManager/soundSprite.js +256 -243
  128. package/src/js/modules/statesManager/_info.js +12 -12
  129. package/src/js/modules/statesManager/action.js +60 -60
  130. package/src/js/modules/statesManager/actions/_info.js +3 -3
  131. package/src/js/modules/statesManager/all.js +23 -23
  132. package/src/js/modules/statesManager/configStates.js +71 -71
  133. package/src/js/modules/statesManager/controller.js +170 -170
  134. package/src/js/modules/statesManager/functionsStorage.js +82 -82
  135. package/src/js/modules/statesManager/helper.js +27 -27
  136. package/src/js/modules/statesManager/race.js +75 -75
  137. package/src/js/modules/statesManager/sequence.js +47 -47
  138. package/src/js/modules/template/_info.js +6 -6
  139. package/src/js/modules/template/controller.js +28 -28
  140. package/src/js/modules/template/model.js +11 -11
  141. package/src/js/modules/template/service.js +137 -137
  142. package/src/js/modules/template/types.js +46 -46
  143. package/src/js/modules/transport/_info.js +8 -8
  144. package/src/js/modules/transport/baseConnectionType.js +24 -24
  145. package/src/js/modules/transport/config.js +13 -13
  146. package/src/js/modules/transport/connectionTypes/_info.js +3 -3
  147. package/src/js/modules/transport/connectionTypes/websocket.js +74 -74
  148. package/src/js/modules/transport/connectionTypes/xhr.js +44 -44
  149. package/src/js/modules/transport/controller.js +48 -48
  150. package/src/js/modules/transport/decorator.js +17 -17
  151. package/src/js/modules/transport/service.js +153 -153
  152. package/src/js/templates/_info.js +4 -4
  153. package/src/js/templates/groups/_info.js +1 -1
  154. package/src/js/templates/scenes/_info.js +1 -1
  155. package/webpack.config.js +47 -47
  156. package/src/js/components/editor/_info.js +0 -4
  157. package/src/js/components/editor/api.js +0 -72
  158. package/src/js/components/editor/controller.js +0 -13
@@ -1,276 +1,276 @@
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
- * returns event from spineData by it's name
212
- * @param {string} name
213
- * @returns {EventData}
214
- */
215
- findEvent(name) {
216
- return this._baseObject.spineData.findEvent(name)
217
- }
218
-
219
- /**
220
- * system function
221
- * add object to pixi tree
222
- */
223
- _addBaseObject() {
224
- let spineAsset = Urso.cache.getSpine(this.assetKey);
225
-
226
- if (!spineAsset)
227
- Urso.logger.error('ModulesObjectsModelsSpine assets error: no spine object ' + this.assetKey);
228
-
229
- this._baseObject = new PIXI.spine.Spine(spineAsset.spineData);
230
- //this._baseObject.state.timeScale = this.animation.timeScale;
231
- Object.defineProperty(this._baseObject.state, 'timeScale', { get: this.getTimeScale.bind(this) });
232
-
233
- if (this.animation.onComplete)
234
- this._baseObject.state.addListener({ complete: this.animation.onComplete });
235
-
236
- if (this.animation.name)
237
- this.play(this.animation.name, this.animation.loop);
238
-
239
- this._baseObject.state.addListener({ event: this._eventHandler.bind(this) });
240
- };
241
-
242
- _eventHandler(entry, event) {
243
- this.emit(Urso.events.MODULES_OBJECTS_SPINE_EVENT, { eventName: event.data.name, name: this.name, class: this.class });
244
- }
245
-
246
- _addToSlot(slotName, object, replaceSlotContents) {
247
- const spine = this._baseObject;
248
- const slotIndex = spine.spineData.slots.findIndex(({ name }) => name === slotName);
249
- const currentSlot = spine.slotContainers[slotIndex];
250
-
251
- if (currentSlot) {
252
- object._baseObject.scale.y = -1;
253
-
254
- Urso.objects.removeChild(object.parent, object, true);
255
-
256
- if (replaceSlotContents)
257
- currentSlot.removeChildren(); //todo check if its proxy and reset parent
258
-
259
- object.parent = this; //todo make removeChild for addedToSlotObjects
260
- currentSlot.addChild(object._baseObject);
261
- Urso.objects.refreshStyles();
262
- } else {
263
- Urso.logger.warn('ModulesObjectsModelsSpine _addToSlot error: no spine slot ' + slotName);
264
- }
265
- }
266
-
267
- /**
268
- * get animation timeScale
269
- * @returns Number
270
- */
271
- getTimeScale() {
272
- return Urso.scenes.timeScale * this.animation.timeScale;
273
- }
274
- }
275
-
276
- 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
+ * returns event from spineData by it's name
212
+ * @param {string} name
213
+ * @returns {EventData}
214
+ */
215
+ findEvent(name) {
216
+ return this._baseObject.spineData.findEvent(name)
217
+ }
218
+
219
+ /**
220
+ * system function
221
+ * add object to pixi tree
222
+ */
223
+ _addBaseObject() {
224
+ let spineAsset = Urso.cache.getSpine(this.assetKey);
225
+
226
+ if (!spineAsset)
227
+ Urso.logger.error('ModulesObjectsModelsSpine assets error: no spine object ' + this.assetKey);
228
+
229
+ this._baseObject = new PIXI.spine.Spine(spineAsset.spineData);
230
+ //this._baseObject.state.timeScale = this.animation.timeScale;
231
+ Object.defineProperty(this._baseObject.state, 'timeScale', { get: this.getTimeScale.bind(this) });
232
+
233
+ if (this.animation.onComplete)
234
+ this._baseObject.state.addListener({ complete: this.animation.onComplete });
235
+
236
+ if (this.animation.name)
237
+ this.play(this.animation.name, this.animation.loop);
238
+
239
+ this._baseObject.state.addListener({ event: this._eventHandler.bind(this) });
240
+ };
241
+
242
+ _eventHandler(entry, event) {
243
+ this.emit(Urso.events.MODULES_OBJECTS_SPINE_EVENT, { eventName: event.data.name, name: this.name, class: this.class });
244
+ }
245
+
246
+ _addToSlot(slotName, object, replaceSlotContents) {
247
+ const spine = this._baseObject;
248
+ const slotIndex = spine.spineData.slots.findIndex(({ name }) => name === slotName);
249
+ const currentSlot = spine.slotContainers[slotIndex];
250
+
251
+ if (currentSlot) {
252
+ object._baseObject.scale.y = -1;
253
+
254
+ Urso.objects.removeChild(object.parent, object, true);
255
+
256
+ if (replaceSlotContents)
257
+ currentSlot.removeChildren(); //todo check if its proxy and reset parent
258
+
259
+ object.parent = this; //todo make removeChild for addedToSlotObjects
260
+ currentSlot.addChild(object._baseObject);
261
+ Urso.objects.refreshStyles();
262
+ } else {
263
+ Urso.logger.warn('ModulesObjectsModelsSpine _addToSlot error: no spine slot ' + slotName);
264
+ }
265
+ }
266
+
267
+ /**
268
+ * get animation timeScale
269
+ * @returns Number
270
+ */
271
+ getTimeScale() {
272
+ return Urso.scenes.timeScale * this.animation.timeScale;
273
+ }
274
+ }
275
+
276
+ 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;