@urso/core 0.8.21 → 0.9.1-dev
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.
- package/LICENSE +20 -20
- package/README.md +227 -227
- package/build/js/index.js +77212 -2
- package/package.json +36 -50
- package/src/js/app.js +105 -104
- package/src/js/components/base/controller.js +76 -78
- package/src/js/components/debug/controller.js +39 -39
- package/src/js/components/debug/coords.js +23 -23
- package/src/js/components/debug/fps.js +36 -36
- package/src/js/components/debug/template.js +55 -55
- package/src/js/components/debug/timescale.js +60 -60
- package/src/js/components/deviceRotate/controller.js +95 -95
- package/src/js/components/editor/api.js +127 -127
- package/src/js/components/editor/controller.js +13 -13
- package/src/js/components/fullscreen/android.js +104 -104
- package/src/js/components/fullscreen/controller.js +76 -76
- package/src/js/components/fullscreen/desktop.js +49 -49
- package/src/js/components/fullscreen/ios.js +115 -115
- package/src/js/components/layersSwitcher/config.js +26 -26
- package/src/js/components/layersSwitcher/controller.js +36 -36
- package/src/js/components/loader/controller.js +66 -66
- package/src/js/components/loader/template.js +71 -71
- package/src/js/components/soundInitialPopup/controller.js +43 -43
- package/src/js/components/soundInitialPopup/template.js +110 -110
- package/src/js/components/stateDriven/controller.js +123 -123
- package/src/js/config/load.js +325 -194
- package/src/js/config/main.js +17 -17
- package/src/js/extra/browserEvents.js +57 -57
- package/src/js/extra/main.js +23 -25
- package/src/js/extra/pixiPatch.js +173 -171
- package/src/js/index.js +7 -7
- package/src/js/lib/cache.js +199 -125
- package/src/js/lib/composition.js +85 -85
- package/src/js/lib/device.js +1215 -1215
- package/src/js/lib/helper.js +678 -678
- package/src/js/lib/loader.js +216 -218
- package/src/js/lib/localData.js +29 -29
- package/src/js/lib/logger.js +69 -69
- package/src/js/lib/math.js +161 -161
- package/src/js/lib/objectPool.js +208 -208
- package/src/js/lib/time.js +19 -19
- package/src/js/lib/tween.js +153 -153
- package/src/js/modules/assets/baseModel.js +21 -21
- package/src/js/modules/assets/config.js +38 -38
- package/src/js/modules/assets/controller.js +65 -65
- package/src/js/modules/assets/models/atlas.js +19 -19
- package/src/js/modules/assets/models/audiosprite.js +28 -28
- package/src/js/modules/assets/models/bitmapFont.js +11 -11
- package/src/js/modules/assets/models/container.js +19 -19
- package/src/js/modules/assets/models/font.js +11 -11
- package/src/js/modules/assets/models/html.js +11 -11
- package/src/js/modules/assets/models/image.js +17 -17
- package/src/js/modules/assets/models/json.js +11 -11
- package/src/js/modules/assets/models/jsonAtlas.js +11 -11
- package/src/js/modules/assets/models/sound.js +17 -17
- package/src/js/modules/assets/models/spine.js +18 -17
- package/src/js/modules/assets/models/spineAtlas.js +11 -0
- package/src/js/modules/assets/service.js +564 -553
- package/src/js/modules/i18n/config.js +17 -17
- package/src/js/modules/i18n/controller.js +71 -71
- package/src/js/modules/instances/controller.js +357 -357
- package/src/js/modules/logic/config/sounds.js +23 -23
- package/src/js/modules/logic/controller.js +52 -52
- package/src/js/modules/logic/main.js +8 -8
- package/src/js/modules/logic/sounds.js +103 -103
- package/src/js/modules/objects/baseModel.js +205 -207
- package/src/js/modules/objects/cache.js +99 -99
- package/src/js/modules/objects/config.js +10 -10
- package/src/js/modules/objects/controller.js +139 -139
- package/src/js/modules/objects/find.js +58 -58
- package/src/js/modules/objects/models/bitmapText.js +56 -49
- package/src/js/modules/objects/models/button.js +208 -209
- package/src/js/modules/objects/models/buttonComposite.js +38 -38
- package/src/js/modules/objects/models/checkbox.js +100 -100
- package/src/js/modules/objects/models/collection.js +56 -54
- package/src/js/modules/objects/models/component.js +48 -48
- package/src/js/modules/objects/models/container.js +22 -22
- package/src/js/modules/objects/models/emitterFx.js +103 -114
- package/src/js/modules/objects/models/graphics.js +40 -40
- package/src/js/modules/objects/models/group.js +22 -22
- package/src/js/modules/objects/models/hitArea.js +187 -187
- package/src/js/modules/objects/models/image.js +36 -36
- package/src/js/modules/objects/models/imagesAnimation.js +115 -115
- package/src/js/modules/objects/models/mask.js +40 -40
- package/src/js/modules/objects/models/nineSlicePlane.js +32 -32
- package/src/js/modules/objects/models/slider.js +357 -357
- package/src/js/modules/objects/models/spine.js +354 -339
- package/src/js/modules/objects/models/text.js +70 -70
- package/src/js/modules/objects/models/toggle.js +186 -186
- package/src/js/modules/objects/models/world.js +22 -22
- package/src/js/modules/objects/pool.js +68 -68
- package/src/js/modules/objects/propertyAdapter.js +592 -592
- package/src/js/modules/objects/proxy.js +299 -298
- package/src/js/modules/objects/selector.js +136 -136
- package/src/js/modules/objects/service.js +255 -254
- package/src/js/modules/objects/styles.js +210 -210
- package/src/js/modules/observer/controller.js +168 -168
- package/src/js/modules/observer/events.js +51 -56
- package/src/js/modules/scenes/controller.js +126 -127
- package/src/js/modules/scenes/model.js +28 -28
- package/src/js/modules/scenes/pixiWrapper.js +360 -351
- package/src/js/modules/scenes/resolutions.js +173 -173
- package/src/js/modules/scenes/resolutionsConfig.js +73 -73
- package/src/js/modules/scenes/service.js +144 -146
- package/src/js/modules/soundManager/controller.js +103 -103
- package/src/js/modules/soundManager/soundSprite.js +314 -314
- package/src/js/modules/statesManager/action.js +97 -97
- package/src/js/modules/statesManager/all.js +23 -23
- package/src/js/modules/statesManager/configStates.js +77 -77
- package/src/js/modules/statesManager/controller.js +219 -219
- package/src/js/modules/statesManager/functionsStorage.js +83 -83
- package/src/js/modules/statesManager/helper.js +27 -27
- package/src/js/modules/statesManager/race.js +91 -91
- package/src/js/modules/statesManager/sequence.js +48 -48
- package/src/js/modules/template/controller.js +28 -28
- package/src/js/modules/template/model.js +11 -11
- package/src/js/modules/template/service.js +137 -137
- package/src/js/modules/template/types.js +50 -49
- package/src/js/modules/transport/baseConnectionType.js +25 -25
- package/src/js/modules/transport/config.js +13 -13
- package/src/js/modules/transport/connectionTypes/websocket.js +77 -77
- package/src/js/modules/transport/connectionTypes/xhr.js +47 -47
- package/src/js/modules/transport/controller.js +48 -48
- package/src/js/modules/transport/decorator.js +17 -17
- package/src/js/modules/transport/service.js +150 -150
- package/vite.config.js +31 -0
- package/.babelrc +0 -12
- package/build/js/index.js.LICENSE.txt +0 -227
- package/src/js/modules/objects/models/atlasImage.js +0 -52
- package/src/js/modules/objects/models/dragContainer.js +0 -665
- package/src/js/modules/objects/models/emitter.js +0 -69
- package/src/js/modules/objects/models/scrollbox.js +0 -67
- package/src/js/modules/objects/models/textInput.js +0 -68
- package/webpack.config.js +0 -47
package/src/js/lib/objectPool.js
CHANGED
|
@@ -1,208 +1,208 @@
|
|
|
1
|
-
class ObjectPoolMember {
|
|
2
|
-
|
|
3
|
-
free = true;
|
|
4
|
-
putCacheTimeKey = 0;
|
|
5
|
-
key = null; //element branch;
|
|
6
|
-
branchKey = 0; //element branch key
|
|
7
|
-
data = null;
|
|
8
|
-
|
|
9
|
-
constructor(data, key, branchKey) {
|
|
10
|
-
this.data = data;
|
|
11
|
-
this.key = key;
|
|
12
|
-
this.branchKey = branchKey;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* @param {Function} constructorFunction - function to constract element
|
|
19
|
-
* @param {Function} resetFunction - function to reset element when put back to pool
|
|
20
|
-
* @param {Number} [initialSize] - initial pool size. Use only if you not using keys when constract
|
|
21
|
-
* @param {Number} [maxSize] - max pool size. Old elements will be removed from pool
|
|
22
|
-
* @param {Function} removeFunction - function to remove element from pool. Happens, when max size is reached
|
|
23
|
-
*/
|
|
24
|
-
class LibObjectPool {
|
|
25
|
-
|
|
26
|
-
_pool = {};
|
|
27
|
-
constructorFunction = () => { };
|
|
28
|
-
resetFunction = () => { };
|
|
29
|
-
removeFunction = () => { };
|
|
30
|
-
_maxSize = 0;
|
|
31
|
-
|
|
32
|
-
_lastBranchKeys = {};
|
|
33
|
-
_putTimeCache = {};
|
|
34
|
-
|
|
35
|
-
constructor(constructorFunction, resetFunction = (obj) => obj, initialSize = 0, maxSize = 0, removeFunction = (obj) => obj) {
|
|
36
|
-
this.resetFunction = resetFunction;
|
|
37
|
-
this.removeFunction = removeFunction;
|
|
38
|
-
this.constructorFunction = constructorFunction;
|
|
39
|
-
this._maxSize = maxSize;
|
|
40
|
-
|
|
41
|
-
this._createInitial(initialSize);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* get element from pool
|
|
46
|
-
* @param {String | Number} key - element key to get
|
|
47
|
-
* @param {mixed} [additionalCreateArguments] - additional create Arguments
|
|
48
|
-
* @returns {ObjectPoolMember}
|
|
49
|
-
*/
|
|
50
|
-
getElement(key = 'default', additionalCreateArguments) {
|
|
51
|
-
this._checkPoolKey(key);
|
|
52
|
-
const poolBranch = this._pool[key];
|
|
53
|
-
|
|
54
|
-
for (const poolObject of Object.values(poolBranch)) {
|
|
55
|
-
if (poolObject.free) {
|
|
56
|
-
poolObject.free = false;
|
|
57
|
-
|
|
58
|
-
//remove from putTimeCache
|
|
59
|
-
if (poolObject.putCacheTimeKey) {
|
|
60
|
-
delete this._putTimeCache[poolObject.putCacheTimeKey];
|
|
61
|
-
poolObject.putCacheTimeKey = 0;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return poolObject;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
const newObj = this._createElement(key, additionalCreateArguments);
|
|
69
|
-
newObj.free = false;
|
|
70
|
-
return newObj;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* put element back to pool (resetFunction will call)
|
|
75
|
-
* @param {ObjectPoolMember} element
|
|
76
|
-
*/
|
|
77
|
-
putElement(element) {
|
|
78
|
-
element.free = true;
|
|
79
|
-
this.resetFunction(element.data);
|
|
80
|
-
|
|
81
|
-
if (this._maxSize) {
|
|
82
|
-
//lets write put time cache
|
|
83
|
-
const putCacheTimeKey = this._getElementBranchKey('_putTimeCache', this._putTimeCache);
|
|
84
|
-
this._putTimeCache[putCacheTimeKey] = element;
|
|
85
|
-
element.putCacheTimeKey = putCacheTimeKey;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
this._checkMaxSize();
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* check max pool size
|
|
93
|
-
*/
|
|
94
|
-
_checkMaxSize() {
|
|
95
|
-
if (!this._maxSize)
|
|
96
|
-
return;
|
|
97
|
-
|
|
98
|
-
//remove oldest inactive element
|
|
99
|
-
const poolSize = this._getPoolSize();
|
|
100
|
-
|
|
101
|
-
if (poolSize > this._maxSize) {
|
|
102
|
-
this._removeOldestInactiveElement();
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* remove oldest inactive element
|
|
109
|
-
*/
|
|
110
|
-
_removeOldestInactiveElement() {
|
|
111
|
-
const keyToRemove = Object.keys(this._putTimeCache)[0];
|
|
112
|
-
const element = this._putTimeCache[keyToRemove];
|
|
113
|
-
|
|
114
|
-
//remove from pool
|
|
115
|
-
delete this._pool[element.key][element.branchKey];
|
|
116
|
-
|
|
117
|
-
//reset element
|
|
118
|
-
this.removeFunction(element.data);
|
|
119
|
-
element.free = false;
|
|
120
|
-
element.putCacheTimeKey = 0;
|
|
121
|
-
element.key = null;
|
|
122
|
-
element.branchKey = 0;
|
|
123
|
-
element.data = null;
|
|
124
|
-
|
|
125
|
-
//remove from putTimeCache
|
|
126
|
-
delete this._putTimeCache[keyToRemove];
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* pool size (all branches)
|
|
131
|
-
*/
|
|
132
|
-
_getPoolSize() {
|
|
133
|
-
let size = 0;
|
|
134
|
-
|
|
135
|
-
for (const branch of Object.values(this._pool)) {
|
|
136
|
-
size += Object.keys(branch).length;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
return size;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* create new element for pool
|
|
144
|
-
* @param {String | Number} key - element key to create
|
|
145
|
-
* @param {mixed} [additionalCreateArguments] - additional create Arguments
|
|
146
|
-
* @returns {ObjectPoolMember}
|
|
147
|
-
*/
|
|
148
|
-
_createElement(key, additionalCreateArguments = null) {
|
|
149
|
-
const newObj = this.resetFunction(this.constructorFunction(key, additionalCreateArguments));
|
|
150
|
-
const branchKey = this._getElementBranchKey(key, this._pool[key]);
|
|
151
|
-
const poolMember = new ObjectPoolMember(newObj, key, branchKey);
|
|
152
|
-
this._pool[key][branchKey] = poolMember;
|
|
153
|
-
return poolMember;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* get element branch key
|
|
158
|
-
* @param {String | Number} key - element key to get
|
|
159
|
-
* @returns {Nymber}
|
|
160
|
-
*/
|
|
161
|
-
_getElementBranchKey(key, poolBranch) {
|
|
162
|
-
let branchKey = Urso.time.get();
|
|
163
|
-
|
|
164
|
-
//prevent duplicates
|
|
165
|
-
if (poolBranch[branchKey]) {
|
|
166
|
-
branchKey = this._lastBranchKeys[key] + 1;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
this._lastBranchKeys[key] = branchKey;
|
|
170
|
-
return branchKey;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* create initial pool objects
|
|
175
|
-
* @param {Number} initialSize
|
|
176
|
-
*/
|
|
177
|
-
_createInitial(initialSize) {
|
|
178
|
-
if (!initialSize)
|
|
179
|
-
return;
|
|
180
|
-
|
|
181
|
-
let newObjectsArray = [];
|
|
182
|
-
|
|
183
|
-
for (let index = 0; index < initialSize; index++) {
|
|
184
|
-
newObjectsArray.push(this.getElement());
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
newObjectsArray.forEach(newObject => { this.putElement(newObject); });
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* check exist key namespace
|
|
192
|
-
* @param {String | Number} key - element key
|
|
193
|
-
*/
|
|
194
|
-
_checkPoolKey(key) {
|
|
195
|
-
if (!this._pool[key])
|
|
196
|
-
this._pool[key] = {};
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* debug get pool data
|
|
201
|
-
* @returns {Array}
|
|
202
|
-
*/
|
|
203
|
-
_debugGetPoolData() {
|
|
204
|
-
return this._pool;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
|
|
1
|
+
class ObjectPoolMember {
|
|
2
|
+
|
|
3
|
+
free = true;
|
|
4
|
+
putCacheTimeKey = 0;
|
|
5
|
+
key = null; //element branch;
|
|
6
|
+
branchKey = 0; //element branch key
|
|
7
|
+
data = null;
|
|
8
|
+
|
|
9
|
+
constructor(data, key, branchKey) {
|
|
10
|
+
this.data = data;
|
|
11
|
+
this.key = key;
|
|
12
|
+
this.branchKey = branchKey;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @param {Function} constructorFunction - function to constract element
|
|
19
|
+
* @param {Function} resetFunction - function to reset element when put back to pool
|
|
20
|
+
* @param {Number} [initialSize] - initial pool size. Use only if you not using keys when constract
|
|
21
|
+
* @param {Number} [maxSize] - max pool size. Old elements will be removed from pool
|
|
22
|
+
* @param {Function} removeFunction - function to remove element from pool. Happens, when max size is reached
|
|
23
|
+
*/
|
|
24
|
+
class LibObjectPool {
|
|
25
|
+
|
|
26
|
+
_pool = {};
|
|
27
|
+
constructorFunction = () => { };
|
|
28
|
+
resetFunction = () => { };
|
|
29
|
+
removeFunction = () => { };
|
|
30
|
+
_maxSize = 0;
|
|
31
|
+
|
|
32
|
+
_lastBranchKeys = {};
|
|
33
|
+
_putTimeCache = {};
|
|
34
|
+
|
|
35
|
+
constructor(constructorFunction, resetFunction = (obj) => obj, initialSize = 0, maxSize = 0, removeFunction = (obj) => obj) {
|
|
36
|
+
this.resetFunction = resetFunction;
|
|
37
|
+
this.removeFunction = removeFunction;
|
|
38
|
+
this.constructorFunction = constructorFunction;
|
|
39
|
+
this._maxSize = maxSize;
|
|
40
|
+
|
|
41
|
+
this._createInitial(initialSize);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* get element from pool
|
|
46
|
+
* @param {String | Number} key - element key to get
|
|
47
|
+
* @param {mixed} [additionalCreateArguments] - additional create Arguments
|
|
48
|
+
* @returns {ObjectPoolMember}
|
|
49
|
+
*/
|
|
50
|
+
getElement(key = 'default', additionalCreateArguments) {
|
|
51
|
+
this._checkPoolKey(key);
|
|
52
|
+
const poolBranch = this._pool[key];
|
|
53
|
+
|
|
54
|
+
for (const poolObject of Object.values(poolBranch)) {
|
|
55
|
+
if (poolObject.free) {
|
|
56
|
+
poolObject.free = false;
|
|
57
|
+
|
|
58
|
+
//remove from putTimeCache
|
|
59
|
+
if (poolObject.putCacheTimeKey) {
|
|
60
|
+
delete this._putTimeCache[poolObject.putCacheTimeKey];
|
|
61
|
+
poolObject.putCacheTimeKey = 0;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return poolObject;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const newObj = this._createElement(key, additionalCreateArguments);
|
|
69
|
+
newObj.free = false;
|
|
70
|
+
return newObj;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* put element back to pool (resetFunction will call)
|
|
75
|
+
* @param {ObjectPoolMember} element
|
|
76
|
+
*/
|
|
77
|
+
putElement(element) {
|
|
78
|
+
element.free = true;
|
|
79
|
+
this.resetFunction(element.data);
|
|
80
|
+
|
|
81
|
+
if (this._maxSize) {
|
|
82
|
+
//lets write put time cache
|
|
83
|
+
const putCacheTimeKey = this._getElementBranchKey('_putTimeCache', this._putTimeCache);
|
|
84
|
+
this._putTimeCache[putCacheTimeKey] = element;
|
|
85
|
+
element.putCacheTimeKey = putCacheTimeKey;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
this._checkMaxSize();
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* check max pool size
|
|
93
|
+
*/
|
|
94
|
+
_checkMaxSize() {
|
|
95
|
+
if (!this._maxSize)
|
|
96
|
+
return;
|
|
97
|
+
|
|
98
|
+
//remove oldest inactive element
|
|
99
|
+
const poolSize = this._getPoolSize();
|
|
100
|
+
|
|
101
|
+
if (poolSize > this._maxSize) {
|
|
102
|
+
this._removeOldestInactiveElement();
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* remove oldest inactive element
|
|
109
|
+
*/
|
|
110
|
+
_removeOldestInactiveElement() {
|
|
111
|
+
const keyToRemove = Object.keys(this._putTimeCache)[0];
|
|
112
|
+
const element = this._putTimeCache[keyToRemove];
|
|
113
|
+
|
|
114
|
+
//remove from pool
|
|
115
|
+
delete this._pool[element.key][element.branchKey];
|
|
116
|
+
|
|
117
|
+
//reset element
|
|
118
|
+
this.removeFunction(element.data);
|
|
119
|
+
element.free = false;
|
|
120
|
+
element.putCacheTimeKey = 0;
|
|
121
|
+
element.key = null;
|
|
122
|
+
element.branchKey = 0;
|
|
123
|
+
element.data = null;
|
|
124
|
+
|
|
125
|
+
//remove from putTimeCache
|
|
126
|
+
delete this._putTimeCache[keyToRemove];
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* pool size (all branches)
|
|
131
|
+
*/
|
|
132
|
+
_getPoolSize() {
|
|
133
|
+
let size = 0;
|
|
134
|
+
|
|
135
|
+
for (const branch of Object.values(this._pool)) {
|
|
136
|
+
size += Object.keys(branch).length;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return size;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* create new element for pool
|
|
144
|
+
* @param {String | Number} key - element key to create
|
|
145
|
+
* @param {mixed} [additionalCreateArguments] - additional create Arguments
|
|
146
|
+
* @returns {ObjectPoolMember}
|
|
147
|
+
*/
|
|
148
|
+
_createElement(key, additionalCreateArguments = null) {
|
|
149
|
+
const newObj = this.resetFunction(this.constructorFunction(key, additionalCreateArguments));
|
|
150
|
+
const branchKey = this._getElementBranchKey(key, this._pool[key]);
|
|
151
|
+
const poolMember = new ObjectPoolMember(newObj, key, branchKey);
|
|
152
|
+
this._pool[key][branchKey] = poolMember;
|
|
153
|
+
return poolMember;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* get element branch key
|
|
158
|
+
* @param {String | Number} key - element key to get
|
|
159
|
+
* @returns {Nymber}
|
|
160
|
+
*/
|
|
161
|
+
_getElementBranchKey(key, poolBranch) {
|
|
162
|
+
let branchKey = Urso.time.get();
|
|
163
|
+
|
|
164
|
+
//prevent duplicates
|
|
165
|
+
if (poolBranch[branchKey]) {
|
|
166
|
+
branchKey = this._lastBranchKeys[key] + 1;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
this._lastBranchKeys[key] = branchKey;
|
|
170
|
+
return branchKey;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* create initial pool objects
|
|
175
|
+
* @param {Number} initialSize
|
|
176
|
+
*/
|
|
177
|
+
_createInitial(initialSize) {
|
|
178
|
+
if (!initialSize)
|
|
179
|
+
return;
|
|
180
|
+
|
|
181
|
+
let newObjectsArray = [];
|
|
182
|
+
|
|
183
|
+
for (let index = 0; index < initialSize; index++) {
|
|
184
|
+
newObjectsArray.push(this.getElement());
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
newObjectsArray.forEach(newObject => { this.putElement(newObject); });
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* check exist key namespace
|
|
192
|
+
* @param {String | Number} key - element key
|
|
193
|
+
*/
|
|
194
|
+
_checkPoolKey(key) {
|
|
195
|
+
if (!this._pool[key])
|
|
196
|
+
this._pool[key] = {};
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* debug get pool data
|
|
201
|
+
* @returns {Array}
|
|
202
|
+
*/
|
|
203
|
+
_debugGetPoolData() {
|
|
204
|
+
return this._pool;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
export default LibObjectPool;
|
package/src/js/lib/time.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
class LibTime {
|
|
2
|
-
|
|
3
|
-
get(foo) {
|
|
4
|
-
if (!foo)
|
|
5
|
-
foo = new Date();
|
|
6
|
-
|
|
7
|
-
return foo.getTime();
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
getUnixtime(foo) {
|
|
11
|
-
if (!foo)
|
|
12
|
-
foo = new Date();
|
|
13
|
-
|
|
14
|
-
var unixtime_ms = foo.getTime();
|
|
15
|
-
return ~~(unixtime_ms / 1e3);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
|
|
1
|
+
class LibTime {
|
|
2
|
+
|
|
3
|
+
get(foo) {
|
|
4
|
+
if (!foo)
|
|
5
|
+
foo = new Date();
|
|
6
|
+
|
|
7
|
+
return foo.getTime();
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
getUnixtime(foo) {
|
|
11
|
+
if (!foo)
|
|
12
|
+
foo = new Date();
|
|
13
|
+
|
|
14
|
+
var unixtime_ms = foo.getTime();
|
|
15
|
+
return ~~(unixtime_ms / 1e3);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export default LibTime;
|