@urso/core 0.5.6 → 0.5.9

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 (159) 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 +38 -222
  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/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 +65 -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 +12 -12
  40. package/src/js/extra/_info.js +26 -26
  41. package/src/js/extra/browserEvents.js +51 -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 -136
  51. package/src/js/lib/localData.js +15 -15
  52. package/src/js/lib/logger.js +69 -69
  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 +13 -12
  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/find.js +58 -58
  88. package/src/js/modules/objects/models/_info.js +27 -26
  89. package/src/js/modules/objects/models/atlasImage.js +50 -50
  90. package/src/js/modules/objects/models/bitmapText.js +37 -39
  91. package/src/js/modules/objects/models/button.js +189 -189
  92. package/src/js/modules/objects/models/buttonComposite.js +35 -35
  93. package/src/js/modules/objects/models/checkbox.js +96 -96
  94. package/src/js/modules/objects/models/collection.js +54 -54
  95. package/src/js/modules/objects/models/component.js +44 -44
  96. package/src/js/modules/objects/models/container.js +19 -19
  97. package/src/js/modules/objects/models/dragContainer.js +675 -0
  98. package/src/js/modules/objects/models/emitter.js +67 -67
  99. package/src/js/modules/objects/models/emitterFx.js +99 -99
  100. package/src/js/modules/objects/models/graphics.js +38 -38
  101. package/src/js/modules/objects/models/group.js +19 -19
  102. package/src/js/modules/objects/models/hitArea.js +104 -104
  103. package/src/js/modules/objects/models/image.js +34 -34
  104. package/src/js/modules/objects/models/imagesAnimation.js +113 -113
  105. package/src/js/modules/objects/models/mask.js +38 -38
  106. package/src/js/modules/objects/models/nineSlicePlane.js +30 -30
  107. package/src/js/modules/objects/models/scrollbox.js +64 -64
  108. package/src/js/modules/objects/models/slider.js +253 -253
  109. package/src/js/modules/objects/models/spine.js +276 -276
  110. package/src/js/modules/objects/models/text.js +59 -59
  111. package/src/js/modules/objects/models/textInput.js +66 -66
  112. package/src/js/modules/objects/models/toggle.js +180 -180
  113. package/src/js/modules/objects/models/world.js +19 -19
  114. package/src/js/modules/objects/propertyAdapter.js +424 -423
  115. package/src/js/modules/objects/proxy.js +294 -282
  116. package/src/js/modules/objects/selector.js +136 -136
  117. package/src/js/modules/objects/service.js +242 -240
  118. package/src/js/modules/objects/styles.js +210 -210
  119. package/src/js/modules/observer/_info.js +4 -4
  120. package/src/js/modules/observer/controller.js +99 -99
  121. package/src/js/modules/observer/events.js +51 -45
  122. package/src/js/modules/scenes/_info.js +8 -8
  123. package/src/js/modules/scenes/controller.js +103 -103
  124. package/src/js/modules/scenes/model.js +28 -28
  125. package/src/js/modules/scenes/pixiWrapper.js +237 -237
  126. package/src/js/modules/scenes/resolutions.js +173 -173
  127. package/src/js/modules/scenes/resolutionsConfig.js +73 -73
  128. package/src/js/modules/scenes/service.js +142 -142
  129. package/src/js/modules/soundManager/_info.js +3 -3
  130. package/src/js/modules/soundManager/controller.js +100 -100
  131. package/src/js/modules/soundManager/soundSprite.js +250 -256
  132. package/src/js/modules/statesManager/_info.js +12 -12
  133. package/src/js/modules/statesManager/action.js +60 -60
  134. package/src/js/modules/statesManager/actions/_info.js +3 -3
  135. package/src/js/modules/statesManager/all.js +23 -23
  136. package/src/js/modules/statesManager/configStates.js +71 -71
  137. package/src/js/modules/statesManager/controller.js +170 -170
  138. package/src/js/modules/statesManager/functionsStorage.js +82 -82
  139. package/src/js/modules/statesManager/helper.js +27 -27
  140. package/src/js/modules/statesManager/race.js +75 -75
  141. package/src/js/modules/statesManager/sequence.js +47 -47
  142. package/src/js/modules/template/_info.js +6 -6
  143. package/src/js/modules/template/controller.js +28 -28
  144. package/src/js/modules/template/model.js +11 -11
  145. package/src/js/modules/template/service.js +137 -137
  146. package/src/js/modules/template/types.js +47 -46
  147. package/src/js/modules/transport/_info.js +8 -8
  148. package/src/js/modules/transport/baseConnectionType.js +24 -24
  149. package/src/js/modules/transport/config.js +13 -13
  150. package/src/js/modules/transport/connectionTypes/_info.js +3 -3
  151. package/src/js/modules/transport/connectionTypes/websocket.js +74 -74
  152. package/src/js/modules/transport/connectionTypes/xhr.js +44 -44
  153. package/src/js/modules/transport/controller.js +48 -48
  154. package/src/js/modules/transport/decorator.js +17 -17
  155. package/src/js/modules/transport/service.js +153 -153
  156. package/src/js/templates/_info.js +4 -4
  157. package/src/js/templates/groups/_info.js +1 -1
  158. package/src/js/templates/scenes/_info.js +1 -1
  159. package/webpack.config.js +47 -47
@@ -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;