@urso/core 0.3.9 → 0.4.0

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 (144) hide show
  1. package/.babelrc +11 -11
  2. package/README.md +10 -10
  3. package/build/js/index.js +1 -1
  4. package/build/js/index.js.LICENSE.txt +29 -29
  5. package/package.json +51 -51
  6. package/src/js/app.js +77 -77
  7. package/src/js/components/_info.js +8 -8
  8. package/src/js/components/base/_info.js +3 -3
  9. package/src/js/components/base/controller.js +78 -78
  10. package/src/js/components/debug/_info.js +7 -7
  11. package/src/js/components/debug/controller.js +38 -38
  12. package/src/js/components/debug/coords.js +23 -23
  13. package/src/js/components/debug/fps.js +34 -34
  14. package/src/js/components/debug/template.js +55 -55
  15. package/src/js/components/debug/timescale.js +60 -60
  16. package/src/js/components/deviceRotate/_info.js +3 -3
  17. package/src/js/components/deviceRotate/controller.js +86 -86
  18. package/src/js/components/fullscreen/_info.js +6 -6
  19. package/src/js/components/fullscreen/android.js +104 -104
  20. package/src/js/components/fullscreen/controller.js +64 -64
  21. package/src/js/components/fullscreen/desktop.js +49 -49
  22. package/src/js/components/fullscreen/ios.js +111 -111
  23. package/src/js/components/loader/_info.js +4 -4
  24. package/src/js/components/loader/controller.js +66 -66
  25. package/src/js/components/loader/template.js +70 -70
  26. package/src/js/components/soundInitialPopup/_info.js +3 -3
  27. package/src/js/components/soundInitialPopup/controller.js +42 -42
  28. package/src/js/components/soundInitialPopup/template.js +109 -109
  29. package/src/js/components/stateDriven/_info.js +3 -3
  30. package/src/js/components/stateDriven/controller.js +118 -118
  31. package/src/js/config/load.js +5 -5
  32. package/src/js/config/main.js +10 -10
  33. package/src/js/extra/_info.js +22 -22
  34. package/src/js/extra/browserEvents.js +38 -38
  35. package/src/js/extra/setTimeout.js +7 -7
  36. package/src/js/index.js +8 -8
  37. package/src/js/lib/_info.js +13 -13
  38. package/src/js/lib/cache.js +105 -105
  39. package/src/js/lib/composition.js +85 -89
  40. package/src/js/lib/device.js +1286 -1276
  41. package/src/js/lib/helper.js +539 -539
  42. package/src/js/lib/loader.js +127 -127
  43. package/src/js/lib/localData.js +15 -15
  44. package/src/js/lib/logger.js +22 -22
  45. package/src/js/lib/math.js +35 -35
  46. package/src/js/lib/objectPool.js +54 -54
  47. package/src/js/lib/time.js +18 -18
  48. package/src/js/lib/tween.js +147 -147
  49. package/src/js/modules/_info.js +11 -11
  50. package/src/js/modules/assets/_info.js +7 -7
  51. package/src/js/modules/assets/baseModel.js +18 -18
  52. package/src/js/modules/assets/config.js +37 -35
  53. package/src/js/modules/assets/controller.js +46 -39
  54. package/src/js/modules/assets/models/_info.js +11 -11
  55. package/src/js/modules/assets/models/atlas.js +8 -8
  56. package/src/js/modules/assets/models/audiosprite.js +27 -27
  57. package/src/js/modules/assets/models/bitmapFont.js +8 -8
  58. package/src/js/modules/assets/models/container.js +16 -16
  59. package/src/js/modules/assets/models/font.js +8 -8
  60. package/src/js/modules/assets/models/image.js +13 -13
  61. package/src/js/modules/assets/models/json.js +8 -8
  62. package/src/js/modules/assets/models/sound.js +14 -14
  63. package/src/js/modules/assets/models/spine.js +14 -14
  64. package/src/js/modules/assets/service.js +356 -353
  65. package/src/js/modules/instances/_info.js +3 -3
  66. package/src/js/modules/instances/controller.js +251 -219
  67. package/src/js/modules/logic/_info.js +4 -4
  68. package/src/js/modules/logic/config/_info.js +2 -2
  69. package/src/js/modules/logic/config/sounds.js +23 -23
  70. package/src/js/modules/logic/controller.js +48 -48
  71. package/src/js/modules/logic/sounds.js +96 -96
  72. package/src/js/modules/objects/_info.js +11 -11
  73. package/src/js/modules/objects/baseModel.js +171 -161
  74. package/src/js/modules/objects/cache.js +99 -99
  75. package/src/js/modules/objects/controller.js +131 -121
  76. package/src/js/modules/objects/create.js +234 -230
  77. package/src/js/modules/objects/find.js +140 -140
  78. package/src/js/modules/objects/models/_info.js +24 -24
  79. package/src/js/modules/objects/models/atlasImage.js +50 -50
  80. package/src/js/modules/objects/models/bitmapText.js +23 -23
  81. package/src/js/modules/objects/models/button.js +184 -184
  82. package/src/js/modules/objects/models/buttonComposite.js +35 -35
  83. package/src/js/modules/objects/models/checkbox.js +96 -96
  84. package/src/js/modules/objects/models/collection.js +54 -54
  85. package/src/js/modules/objects/models/component.js +44 -44
  86. package/src/js/modules/objects/models/container.js +19 -19
  87. package/src/js/modules/objects/models/emitter.js +54 -54
  88. package/src/js/modules/objects/models/graphics.js +38 -38
  89. package/src/js/modules/objects/models/group.js +19 -19
  90. package/src/js/modules/objects/models/hitArea.js +104 -104
  91. package/src/js/modules/objects/models/image.js +34 -34
  92. package/src/js/modules/objects/models/imagesAnimation.js +113 -113
  93. package/src/js/modules/objects/models/mask.js +38 -38
  94. package/src/js/modules/objects/models/scrollbox.js +61 -61
  95. package/src/js/modules/objects/models/slider.js +223 -223
  96. package/src/js/modules/objects/models/spine.js +89 -89
  97. package/src/js/modules/objects/models/text.js +38 -38
  98. package/src/js/modules/objects/models/textInput.js +66 -66
  99. package/src/js/modules/objects/models/toggle.js +178 -178
  100. package/src/js/modules/objects/models/world.js +19 -19
  101. package/src/js/modules/objects/propertyAdapter.js +421 -421
  102. package/src/js/modules/objects/proxy.js +182 -182
  103. package/src/js/modules/objects/styles.js +116 -116
  104. package/src/js/modules/observer/_info.js +4 -4
  105. package/src/js/modules/observer/controller.js +99 -99
  106. package/src/js/modules/observer/events.js +38 -38
  107. package/src/js/modules/scenes/_info.js +8 -8
  108. package/src/js/modules/scenes/controller.js +46 -42
  109. package/src/js/modules/scenes/model.js +35 -35
  110. package/src/js/modules/scenes/pixiWrapper.js +202 -202
  111. package/src/js/modules/scenes/resolutions.js +172 -176
  112. package/src/js/modules/scenes/resolutionsConfig.js +73 -73
  113. package/src/js/modules/scenes/service.js +105 -92
  114. package/src/js/modules/soundManager/_info.js +3 -3
  115. package/src/js/modules/soundManager/controller.js +99 -99
  116. package/src/js/modules/soundManager/soundSprite.js +202 -202
  117. package/src/js/modules/statesManager/_info.js +12 -12
  118. package/src/js/modules/statesManager/action.js +60 -60
  119. package/src/js/modules/statesManager/actions/_info.js +3 -3
  120. package/src/js/modules/statesManager/all.js +23 -23
  121. package/src/js/modules/statesManager/configStates.js +71 -71
  122. package/src/js/modules/statesManager/controller.js +170 -170
  123. package/src/js/modules/statesManager/functionsStorage.js +82 -82
  124. package/src/js/modules/statesManager/helper.js +27 -27
  125. package/src/js/modules/statesManager/race.js +75 -75
  126. package/src/js/modules/statesManager/sequence.js +47 -47
  127. package/src/js/modules/template/_info.js +6 -6
  128. package/src/js/modules/template/controller.js +28 -28
  129. package/src/js/modules/template/model.js +11 -11
  130. package/src/js/modules/template/service.js +137 -125
  131. package/src/js/modules/template/types.js +44 -44
  132. package/src/js/modules/transport/_info.js +8 -8
  133. package/src/js/modules/transport/baseConnectionType.js +24 -24
  134. package/src/js/modules/transport/config.js +13 -13
  135. package/src/js/modules/transport/connectionTypes/_info.js +3 -3
  136. package/src/js/modules/transport/connectionTypes/websocket.js +74 -74
  137. package/src/js/modules/transport/connectionTypes/xhr.js +44 -44
  138. package/src/js/modules/transport/controller.js +48 -48
  139. package/src/js/modules/transport/decorator.js +17 -17
  140. package/src/js/modules/transport/service.js +153 -153
  141. package/src/js/templates/_info.js +4 -4
  142. package/src/js/templates/groups/_info.js +1 -1
  143. package/src/js/templates/scenes/_info.js +1 -1
  144. package/webpack.config.js +47 -47
@@ -1,202 +1,202 @@
1
- class ModulesScenesPixiWrapper {
2
- constructor() {
3
- this.singleton = true;
4
- this._renderer;
5
-
6
- this.scenes = {};
7
- this.world;
8
-
9
- this._root;
10
- this._loaderScene;
11
-
12
- this._loopStopped = false;
13
- this._loopPaused = false;
14
- this._loopLastCall = 0;
15
-
16
- this.loop = this.loop.bind(this);
17
- this.passiveCallIntervalId = null;
18
-
19
- this._mouseCoords = { x: 0, y: 0 };
20
- }
21
-
22
- init() {
23
- this._setPixiSettings();
24
-
25
- //define renderer
26
- PIXI.utils.skipHello();
27
- this.renderer = new PIXI.Renderer({ preserveDrawingBuffer: true, width: 1, height: 1 });
28
- document.body.appendChild(this.renderer.view);
29
-
30
- //root and world
31
- this._root = new PIXI.Container();
32
- this._createWorld();
33
-
34
- // setup interaction
35
- this.interaction = new PIXI.InteractionManager({ root: this._root, view: this.renderer.view });
36
-
37
- this._loaderScene = this.getInstance('Model');
38
- this._requestAnimFrame(this.loop);
39
-
40
- this.getInstance('Resolutions');
41
- }
42
-
43
- _setPixiSettings() {
44
- PIXI.settings.SCALE_MODE = PIXI.SCALE_MODES.LINEAR;
45
- PIXI.settings.TEXT_RESOLUTION = 1;
46
-
47
- if (Urso.device.iOS || Urso.device.macOS)
48
- PIXI.settings.PRECISION_FRAGMENT = PIXI.PRECISION.HIGH;
49
- }
50
-
51
- _createWorld() {
52
- if (this.world)
53
- this._root.removeChild(this.world);
54
-
55
- this.world = new PIXI.Container();
56
- this._root.addChild(this.world);
57
- }
58
-
59
- _requestAnimFrame(loopFunction) {
60
- (() => {
61
- return window.requestAnimationFrame ||
62
- window.webkitRequestAnimationFrame ||
63
- window.mozRequestAnimationFrame ||
64
- window.oRequestAnimationFrame ||
65
- window.msRequestAnimationFrame ||
66
- function (/* function FrameRequestCallback */ callback, /* DOMElement Element */ element) {
67
- window.setTimeout(callback, 0);
68
- };
69
- })()(loopFunction);
70
- }
71
-
72
- _getDeltaTime() {
73
- let newTime = Date.now();
74
- let deltaTime = Urso.scenes.timeScale * (newTime - this._loopLastCall);
75
- this._loopLastCall = newTime;
76
-
77
- return Urso.math.intMakeBetween(deltaTime, 0, 1000);
78
- }
79
-
80
- _getDeltaFrame(deltaTime) {
81
- return deltaTime * 60 / 1000;
82
- };
83
-
84
- loop() {
85
- if (this._loopStopped)
86
- return false;
87
-
88
- this._requestAnimFrame(this.loop);
89
-
90
- if (!this._loopPaused)
91
- this.update();
92
-
93
- return true;
94
- };
95
-
96
- update() {
97
- if (!this.currentScene || this.currentScene.isPaused())
98
- return;
99
-
100
- let deltaTime = this._getDeltaTime();
101
- let deltaFrame = this._getDeltaFrame(deltaTime);
102
- this.interaction.update(deltaFrame);
103
-
104
- this._checkMouse();
105
- this.emit(Urso.events.MODULES_SCENES_UPDATE, deltaTime);
106
-
107
- this.currentScene.update(deltaTime);
108
- this.currentScene.render();
109
- this.renderer.render(this._root);
110
- };
111
-
112
- //size
113
- resize(width, height) {
114
- this.renderer.resize(width, height);
115
- };
116
-
117
- hideCanvas() {
118
- this.renderer.view.style.display = 'none';
119
- }
120
-
121
- showCanvas() {
122
- this.renderer.view.style.display = '';
123
- }
124
-
125
- setWorldScale(x, y) {
126
- this.world.scale.x = x;
127
- this.world.scale.y = y;
128
- }
129
-
130
- setCanvasWidth(val) {
131
- this.renderer.view.style.width = val + 'px';
132
- };
133
-
134
- setCanvasHeight(val) {
135
- this.renderer.view.style.height = val + 'px';
136
- };
137
-
138
- getPixiWorld() {
139
- return this.world;
140
- }
141
-
142
- setNewScene(model) {
143
- this._createWorld();
144
- this.currentScene = model;
145
- }
146
-
147
- _checkMouse() {
148
- let newCoords = this._getMouseCoords();
149
-
150
- if (Urso.helper.checkDeepEqual(this._mouseCoords, newCoords))
151
- return true;
152
-
153
- this._mouseCoords = newCoords;
154
- this.emit(Urso.events.MODULES_SCENES_MOUSE_NEW_POSITION, this._mouseCoords);
155
- };
156
-
157
- getCachedMouseCoords() {
158
- return this._mouseCoords;
159
- }
160
-
161
- _getMouseCoords() {
162
- const coords = {
163
- x: ~~(this.interaction.mouse.global.x / this.world.scale.x),
164
- y: ~~(this.interaction.mouse.global.y / this.world.scale.y)
165
- };
166
-
167
- coords.x = this._validateCoordinate(coords.x);
168
- coords.y = this._validateCoordinate(coords.y);
169
-
170
- return coords;
171
- };
172
-
173
- _validateCoordinate(c) {
174
- return c > 0 ? c : 0;
175
- }
176
-
177
- /**
178
- * reserve loop, when browser tab is inactive
179
- * @param {Boolean} isVisible
180
- */
181
- visibilityChangeHandler(isVisible) {
182
- if (isVisible) {
183
- if (this.passiveCallIntervalId) {
184
- clearInterval(this.passiveCallIntervalId);
185
- this.passiveCallIntervalId = null;
186
- return;
187
- }
188
- }
189
-
190
- this.passiveCallIntervalId = setInterval(() => {
191
- if (!this._loopStopped && !this._loopPaused) {
192
- this.update();
193
- }
194
- }, 16);
195
- }
196
-
197
- _subscribeOnce() {
198
- this.addListener(Urso.events.EXTRA_BROWSEREVENTS_WINDOW_VISIBILITYCHANGE, this.visibilityChangeHandler.bind(this), true);
199
- }
200
- }
201
-
202
- module.exports = ModulesScenesPixiWrapper;
1
+ class ModulesScenesPixiWrapper {
2
+ constructor() {
3
+ this.singleton = true;
4
+ this._renderer;
5
+
6
+ this.scenes = {};
7
+ this.world;
8
+
9
+ this._root;
10
+ this._loaderScene;
11
+
12
+ this._loopStopped = false;
13
+ this._loopPaused = false;
14
+ this._loopLastCall = 0;
15
+
16
+ this.loop = this.loop.bind(this);
17
+ this.passiveCallIntervalId = null;
18
+
19
+ this._mouseCoords = { x: 0, y: 0 };
20
+ }
21
+
22
+ init() {
23
+ this._setPixiSettings();
24
+
25
+ //define renderer
26
+ PIXI.utils.skipHello();
27
+ this.renderer = new PIXI.Renderer({ preserveDrawingBuffer: true, width: 1, height: 1 });
28
+ document.body.appendChild(this.renderer.view);
29
+
30
+ //root and world
31
+ this._root = new PIXI.Container();
32
+ this._createWorld();
33
+
34
+ // setup interaction
35
+ this.interaction = new PIXI.InteractionManager({ root: this._root, view: this.renderer.view });
36
+
37
+ this._loaderScene = this.getInstance('Model');
38
+ this._requestAnimFrame(this.loop);
39
+
40
+ this.getInstance('Resolutions');
41
+ }
42
+
43
+ _setPixiSettings() {
44
+ PIXI.settings.SCALE_MODE = PIXI.SCALE_MODES.LINEAR;
45
+ PIXI.settings.TEXT_RESOLUTION = 1;
46
+
47
+ if (Urso.device.iOS || Urso.device.macOS)
48
+ PIXI.settings.PRECISION_FRAGMENT = PIXI.PRECISION.HIGH;
49
+ }
50
+
51
+ _createWorld() {
52
+ if (this.world)
53
+ this._root.removeChild(this.world);
54
+
55
+ this.world = new PIXI.Container();
56
+ this._root.addChild(this.world);
57
+ }
58
+
59
+ _requestAnimFrame(loopFunction) {
60
+ (() => {
61
+ return window.requestAnimationFrame ||
62
+ window.webkitRequestAnimationFrame ||
63
+ window.mozRequestAnimationFrame ||
64
+ window.oRequestAnimationFrame ||
65
+ window.msRequestAnimationFrame ||
66
+ function (/* function FrameRequestCallback */ callback, /* DOMElement Element */ element) {
67
+ window.setTimeout(callback, 0);
68
+ };
69
+ })()(loopFunction);
70
+ }
71
+
72
+ _getDeltaTime() {
73
+ let newTime = Date.now();
74
+ let deltaTime = Urso.scenes.timeScale * (newTime - this._loopLastCall);
75
+ this._loopLastCall = newTime;
76
+
77
+ return Urso.math.intMakeBetween(deltaTime, 0, 1000);
78
+ }
79
+
80
+ _getDeltaFrame(deltaTime) {
81
+ return deltaTime * 60 / 1000;
82
+ };
83
+
84
+ loop() {
85
+ if (this._loopStopped)
86
+ return false;
87
+
88
+ this._requestAnimFrame(this.loop);
89
+
90
+ if (!this._loopPaused)
91
+ this.update();
92
+
93
+ return true;
94
+ };
95
+
96
+ update() {
97
+ if (!this.currentScene || this.currentScene.isPaused())
98
+ return;
99
+
100
+ let deltaTime = this._getDeltaTime();
101
+ let deltaFrame = this._getDeltaFrame(deltaTime);
102
+ this.interaction.update(deltaFrame);
103
+
104
+ this._checkMouse();
105
+ this.emit(Urso.events.MODULES_SCENES_UPDATE, deltaTime);
106
+
107
+ this.currentScene.update(deltaTime);
108
+ this.currentScene.render();
109
+ this.renderer.render(this._root);
110
+ };
111
+
112
+ //size
113
+ resize(width, height) {
114
+ this.renderer.resize(width, height);
115
+ };
116
+
117
+ hideCanvas() {
118
+ this.renderer.view.style.display = 'none';
119
+ }
120
+
121
+ showCanvas() {
122
+ this.renderer.view.style.display = '';
123
+ }
124
+
125
+ setWorldScale(x, y) {
126
+ this.world.scale.x = x;
127
+ this.world.scale.y = y;
128
+ }
129
+
130
+ setCanvasWidth(val) {
131
+ this.renderer.view.style.width = val + 'px';
132
+ };
133
+
134
+ setCanvasHeight(val) {
135
+ this.renderer.view.style.height = val + 'px';
136
+ };
137
+
138
+ getPixiWorld() {
139
+ return this.world;
140
+ }
141
+
142
+ setNewScene(model) {
143
+ this._createWorld();
144
+ this.currentScene = model;
145
+ }
146
+
147
+ _checkMouse() {
148
+ let newCoords = this._getMouseCoords();
149
+
150
+ if (Urso.helper.checkDeepEqual(this._mouseCoords, newCoords))
151
+ return true;
152
+
153
+ this._mouseCoords = newCoords;
154
+ this.emit(Urso.events.MODULES_SCENES_MOUSE_NEW_POSITION, this._mouseCoords);
155
+ };
156
+
157
+ getCachedMouseCoords() {
158
+ return this._mouseCoords;
159
+ }
160
+
161
+ _getMouseCoords() {
162
+ const coords = {
163
+ x: ~~(this.interaction.mouse.global.x / this.world.scale.x),
164
+ y: ~~(this.interaction.mouse.global.y / this.world.scale.y)
165
+ };
166
+
167
+ coords.x = this._validateCoordinate(coords.x);
168
+ coords.y = this._validateCoordinate(coords.y);
169
+
170
+ return coords;
171
+ };
172
+
173
+ _validateCoordinate(c) {
174
+ return c > 0 ? c : 0;
175
+ }
176
+
177
+ /**
178
+ * reserve loop, when browser tab is inactive
179
+ * @param {Boolean} isVisible
180
+ */
181
+ visibilityChangeHandler(isVisible) {
182
+ if (isVisible) {
183
+ if (this.passiveCallIntervalId) {
184
+ clearInterval(this.passiveCallIntervalId);
185
+ this.passiveCallIntervalId = null;
186
+ return;
187
+ }
188
+ }
189
+
190
+ this.passiveCallIntervalId = setInterval(() => {
191
+ if (!this._loopStopped && !this._loopPaused) {
192
+ this.update();
193
+ }
194
+ }, 16);
195
+ }
196
+
197
+ _subscribeOnce() {
198
+ this.addListener(Urso.events.EXTRA_BROWSEREVENTS_WINDOW_VISIBILITYCHANGE, this.visibilityChangeHandler.bind(this), true);
199
+ }
200
+ }
201
+
202
+ module.exports = ModulesScenesPixiWrapper;