three-nebula 11.0.0 → 11.1.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 (248) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/three-nebula.cjs +109 -0
  3. package/dist/three-nebula.cjs.map +1 -0
  4. package/dist/three-nebula.mjs +2968 -0
  5. package/dist/three-nebula.mjs.map +1 -0
  6. package/dist/three-nebula.umd.js +109 -0
  7. package/dist/three-nebula.umd.js.map +1 -0
  8. package/package.json +23 -47
  9. package/specs/01-emitter-hierarchy.md +200 -0
  10. package/specs/02-determinism-scrubbing.md +188 -0
  11. package/specs/03-sound-renderer.md +183 -0
  12. package/specs/04-schema-versioning.md +140 -0
  13. package/specs/05-content-addressed-assets.md +288 -0
  14. package/specs/README.md +80 -0
  15. package/build/cjs/behaviour/Alpha.js +0 -189
  16. package/build/cjs/behaviour/Attraction.js +0 -189
  17. package/build/cjs/behaviour/Behaviour.js +0 -253
  18. package/build/cjs/behaviour/Collision.js +0 -146
  19. package/build/cjs/behaviour/Color.js +0 -148
  20. package/build/cjs/behaviour/CrossZone.js +0 -141
  21. package/build/cjs/behaviour/Force.js +0 -126
  22. package/build/cjs/behaviour/Gravity.js +0 -78
  23. package/build/cjs/behaviour/RandomDrift.js +0 -153
  24. package/build/cjs/behaviour/Repulsion.js +0 -123
  25. package/build/cjs/behaviour/Rotate.js +0 -265
  26. package/build/cjs/behaviour/Scale.js +0 -177
  27. package/build/cjs/behaviour/Spring.js +0 -133
  28. package/build/cjs/behaviour/constants.js +0 -28
  29. package/build/cjs/behaviour/index.js +0 -112
  30. package/build/cjs/behaviour/types.js +0 -33
  31. package/build/cjs/constants/index.js +0 -61
  32. package/build/cjs/core/Particle.js +0 -390
  33. package/build/cjs/core/Pool.js +0 -203
  34. package/build/cjs/core/System.js +0 -366
  35. package/build/cjs/core/constants.js +0 -163
  36. package/build/cjs/core/fromJSON.js +0 -128
  37. package/build/cjs/core/fromJSONAsync.js +0 -239
  38. package/build/cjs/core/index.js +0 -32
  39. package/build/cjs/core/three/Euler.js +0 -233
  40. package/build/cjs/core/three/Math.js +0 -91
  41. package/build/cjs/core/three/Matrix4.js +0 -745
  42. package/build/cjs/core/three/Quaternion.js +0 -451
  43. package/build/cjs/core/three/Vector3.js +0 -464
  44. package/build/cjs/core/three/constants.js +0 -298
  45. package/build/cjs/core/three/index.js +0 -48
  46. package/build/cjs/core/types.js +0 -13
  47. package/build/cjs/debug/Debug.js +0 -209
  48. package/build/cjs/debug/constants.js +0 -19
  49. package/build/cjs/debug/index.js +0 -24
  50. package/build/cjs/debug/log.js +0 -38
  51. package/build/cjs/ease/index.js +0 -149
  52. package/build/cjs/emitter/Emitter.js +0 -798
  53. package/build/cjs/emitter/FollowEmitter.js +0 -146
  54. package/build/cjs/emitter/constants.js +0 -20
  55. package/build/cjs/emitter/index.js +0 -24
  56. package/build/cjs/emitter/types.js +0 -11
  57. package/build/cjs/events/EventDispatcher.js +0 -105
  58. package/build/cjs/events/constants.js +0 -23
  59. package/build/cjs/events/index.js +0 -27
  60. package/build/cjs/index.js +0 -151
  61. package/build/cjs/initializer/Body.js +0 -122
  62. package/build/cjs/initializer/BodySprite.js +0 -146
  63. package/build/cjs/initializer/Initializer.js +0 -109
  64. package/build/cjs/initializer/InitializerUtil.js +0 -54
  65. package/build/cjs/initializer/Life.js +0 -106
  66. package/build/cjs/initializer/Mass.js +0 -101
  67. package/build/cjs/initializer/Position.js +0 -152
  68. package/build/cjs/initializer/Radius.js +0 -118
  69. package/build/cjs/initializer/Rate.js +0 -150
  70. package/build/cjs/initializer/Rotation.js +0 -95
  71. package/build/cjs/initializer/Texture.js +0 -139
  72. package/build/cjs/initializer/Velocity/PolarVelocity.js +0 -102
  73. package/build/cjs/initializer/Velocity/RadialVelocity.js +0 -111
  74. package/build/cjs/initializer/Velocity/VectorVelocity.js +0 -108
  75. package/build/cjs/initializer/Velocity/Velocity.js +0 -94
  76. package/build/cjs/initializer/Velocity/index.js +0 -32
  77. package/build/cjs/initializer/constants.js +0 -43
  78. package/build/cjs/initializer/index.js +0 -108
  79. package/build/cjs/initializer/types.js +0 -37
  80. package/build/cjs/math/ArraySpan.js +0 -103
  81. package/build/cjs/math/Box.js +0 -46
  82. package/build/cjs/math/ColorSpan.js +0 -113
  83. package/build/cjs/math/MathUtils.js +0 -57
  84. package/build/cjs/math/Polar3D.js +0 -115
  85. package/build/cjs/math/Span.js +0 -88
  86. package/build/cjs/math/Vector3D.js +0 -76
  87. package/build/cjs/math/constants.js +0 -35
  88. package/build/cjs/math/index.js +0 -122
  89. package/build/cjs/math/integration.js +0 -59
  90. package/build/cjs/math/types.js +0 -19
  91. package/build/cjs/renderer/BaseRenderer.js +0 -108
  92. package/build/cjs/renderer/CustomRenderer.js +0 -65
  93. package/build/cjs/renderer/GPURenderer/Desktop/index.js +0 -371
  94. package/build/cjs/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +0 -13
  95. package/build/cjs/renderer/GPURenderer/Desktop/shaders/index.js +0 -22
  96. package/build/cjs/renderer/GPURenderer/Desktop/shaders/vertexShader.js +0 -17
  97. package/build/cjs/renderer/GPURenderer/Mobile/index.js +0 -385
  98. package/build/cjs/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +0 -13
  99. package/build/cjs/renderer/GPURenderer/Mobile/shaders/index.js +0 -22
  100. package/build/cjs/renderer/GPURenderer/Mobile/shaders/vertexShader.js +0 -15
  101. package/build/cjs/renderer/GPURenderer/common/ParticleBuffer/constants.js +0 -58
  102. package/build/cjs/renderer/GPURenderer/common/ParticleBuffer/index.js +0 -93
  103. package/build/cjs/renderer/GPURenderer/common/TextureAtlas/constants.js +0 -9
  104. package/build/cjs/renderer/GPURenderer/common/TextureAtlas/index.js +0 -221
  105. package/build/cjs/renderer/GPURenderer/common/constants.js +0 -22
  106. package/build/cjs/renderer/GPURenderer/common/index.js +0 -38
  107. package/build/cjs/renderer/GPURenderer/common/shaders/constants.js +0 -9
  108. package/build/cjs/renderer/GPURenderer/common/stores/Target.js +0 -45
  109. package/build/cjs/renderer/GPURenderer/common/stores/UniqueList.js +0 -51
  110. package/build/cjs/renderer/GPURenderer/common/stores/index.js +0 -22
  111. package/build/cjs/renderer/GPURenderer/index.js +0 -97
  112. package/build/cjs/renderer/MeshRenderer.js +0 -136
  113. package/build/cjs/renderer/SpriteRenderer.js +0 -68
  114. package/build/cjs/renderer/index.js +0 -40
  115. package/build/cjs/renderer/types.js +0 -21
  116. package/build/cjs/utils/ColorUtil.js +0 -39
  117. package/build/cjs/utils/PUID.js +0 -26
  118. package/build/cjs/utils/THREEUtil.js +0 -40
  119. package/build/cjs/utils/Util.js +0 -69
  120. package/build/cjs/utils/index.js +0 -61
  121. package/build/cjs/utils/uid.js +0 -12
  122. package/build/cjs/zone/BoxZone.js +0 -178
  123. package/build/cjs/zone/LineZone.js +0 -101
  124. package/build/cjs/zone/MeshZone.js +0 -101
  125. package/build/cjs/zone/PointZone.js +0 -99
  126. package/build/cjs/zone/ScreenZone.js +0 -164
  127. package/build/cjs/zone/SphereZone.js +0 -155
  128. package/build/cjs/zone/Zone.js +0 -172
  129. package/build/cjs/zone/index.js +0 -56
  130. package/build/cjs/zone/types.js +0 -21
  131. package/build/esm/behaviour/Alpha.js +0 -134
  132. package/build/esm/behaviour/Attraction.js +0 -135
  133. package/build/esm/behaviour/Behaviour.js +0 -215
  134. package/build/esm/behaviour/Collision.js +0 -100
  135. package/build/esm/behaviour/Color.js +0 -101
  136. package/build/esm/behaviour/CrossZone.js +0 -82
  137. package/build/esm/behaviour/Force.js +0 -83
  138. package/build/esm/behaviour/Gravity.js +0 -40
  139. package/build/esm/behaviour/RandomDrift.js +0 -97
  140. package/build/esm/behaviour/Repulsion.js +0 -81
  141. package/build/esm/behaviour/Rotate.js +0 -214
  142. package/build/esm/behaviour/Scale.js +0 -131
  143. package/build/esm/behaviour/Spring.js +0 -90
  144. package/build/esm/behaviour/constants.js +0 -11
  145. package/build/esm/behaviour/index.js +0 -14
  146. package/build/esm/behaviour/types.js +0 -14
  147. package/build/esm/constants/index.js +0 -42
  148. package/build/esm/core/Particle.js +0 -357
  149. package/build/esm/core/Pool.js +0 -161
  150. package/build/esm/core/System.js +0 -320
  151. package/build/esm/core/constants.js +0 -127
  152. package/build/esm/core/fromJSON.js +0 -107
  153. package/build/esm/core/fromJSONAsync.js +0 -210
  154. package/build/esm/core/index.js +0 -4
  155. package/build/esm/core/three/Euler.js +0 -224
  156. package/build/esm/core/three/Math.js +0 -84
  157. package/build/esm/core/three/Matrix4.js +0 -739
  158. package/build/esm/core/three/Quaternion.js +0 -445
  159. package/build/esm/core/three/Vector3.js +0 -457
  160. package/build/esm/core/three/constants.js +0 -148
  161. package/build/esm/core/three/index.js +0 -5
  162. package/build/esm/core/types.js +0 -4
  163. package/build/esm/debug/Debug.js +0 -195
  164. package/build/esm/debug/constants.js +0 -7
  165. package/build/esm/debug/index.js +0 -3
  166. package/build/esm/debug/log.js +0 -31
  167. package/build/esm/ease/index.js +0 -113
  168. package/build/esm/emitter/Emitter.js +0 -708
  169. package/build/esm/emitter/FollowEmitter.js +0 -97
  170. package/build/esm/emitter/constants.js +0 -7
  171. package/build/esm/emitter/index.js +0 -3
  172. package/build/esm/emitter/types.js +0 -3
  173. package/build/esm/events/EventDispatcher.js +0 -82
  174. package/build/esm/events/constants.js +0 -9
  175. package/build/esm/events/index.js +0 -4
  176. package/build/esm/index.js +0 -13
  177. package/build/esm/initializer/Body.js +0 -83
  178. package/build/esm/initializer/BodySprite.js +0 -108
  179. package/build/esm/initializer/Initializer.js +0 -84
  180. package/build/esm/initializer/InitializerUtil.js +0 -48
  181. package/build/esm/initializer/Life.js +0 -66
  182. package/build/esm/initializer/Mass.js +0 -60
  183. package/build/esm/initializer/Position.js +0 -98
  184. package/build/esm/initializer/Radius.js +0 -75
  185. package/build/esm/initializer/Rate.js +0 -107
  186. package/build/esm/initializer/Rotation.js +0 -54
  187. package/build/esm/initializer/Texture.js +0 -101
  188. package/build/esm/initializer/Velocity/PolarVelocity.js +0 -63
  189. package/build/esm/initializer/Velocity/RadialVelocity.js +0 -72
  190. package/build/esm/initializer/Velocity/VectorVelocity.js +0 -69
  191. package/build/esm/initializer/Velocity/Velocity.js +0 -52
  192. package/build/esm/initializer/Velocity/index.js +0 -4
  193. package/build/esm/initializer/constants.js +0 -26
  194. package/build/esm/initializer/index.js +0 -12
  195. package/build/esm/initializer/types.js +0 -16
  196. package/build/esm/math/ArraySpan.js +0 -62
  197. package/build/esm/math/Box.js +0 -25
  198. package/build/esm/math/ColorSpan.js +0 -71
  199. package/build/esm/math/MathUtils.js +0 -48
  200. package/build/esm/math/Polar3D.js +0 -81
  201. package/build/esm/math/Span.js +0 -63
  202. package/build/esm/math/Vector3D.js +0 -34
  203. package/build/esm/math/constants.js +0 -24
  204. package/build/esm/math/index.js +0 -10
  205. package/build/esm/math/integration.js +0 -47
  206. package/build/esm/math/types.js +0 -7
  207. package/build/esm/renderer/BaseRenderer.js +0 -78
  208. package/build/esm/renderer/CustomRenderer.js +0 -23
  209. package/build/esm/renderer/GPURenderer/Desktop/index.js +0 -357
  210. package/build/esm/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +0 -30
  211. package/build/esm/renderer/GPURenderer/Desktop/shaders/index.js +0 -3
  212. package/build/esm/renderer/GPURenderer/Desktop/shaders/vertexShader.js +0 -36
  213. package/build/esm/renderer/GPURenderer/Mobile/index.js +0 -375
  214. package/build/esm/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +0 -27
  215. package/build/esm/renderer/GPURenderer/Mobile/shaders/index.js +0 -3
  216. package/build/esm/renderer/GPURenderer/Mobile/shaders/vertexShader.js +0 -33
  217. package/build/esm/renderer/GPURenderer/common/ParticleBuffer/constants.js +0 -30
  218. package/build/esm/renderer/GPURenderer/common/ParticleBuffer/index.js +0 -70
  219. package/build/esm/renderer/GPURenderer/common/TextureAtlas/constants.js +0 -2
  220. package/build/esm/renderer/GPURenderer/common/TextureAtlas/index.js +0 -206
  221. package/build/esm/renderer/GPURenderer/common/constants.js +0 -13
  222. package/build/esm/renderer/GPURenderer/common/index.js +0 -4
  223. package/build/esm/renderer/GPURenderer/common/shaders/constants.js +0 -2
  224. package/build/esm/renderer/GPURenderer/common/stores/Target.js +0 -26
  225. package/build/esm/renderer/GPURenderer/common/stores/UniqueList.js +0 -29
  226. package/build/esm/renderer/GPURenderer/common/stores/index.js +0 -3
  227. package/build/esm/renderer/GPURenderer/index.js +0 -57
  228. package/build/esm/renderer/MeshRenderer.js +0 -93
  229. package/build/esm/renderer/SpriteRenderer.js +0 -30
  230. package/build/esm/renderer/index.js +0 -5
  231. package/build/esm/renderer/types.js +0 -8
  232. package/build/esm/utils/ColorUtil.js +0 -32
  233. package/build/esm/utils/PUID.js +0 -19
  234. package/build/esm/utils/THREEUtil.js +0 -31
  235. package/build/esm/utils/Util.js +0 -60
  236. package/build/esm/utils/index.js +0 -13
  237. package/build/esm/utils/uid.js +0 -3
  238. package/build/esm/zone/BoxZone.js +0 -133
  239. package/build/esm/zone/LineZone.js +0 -61
  240. package/build/esm/zone/MeshZone.js +0 -60
  241. package/build/esm/zone/PointZone.js +0 -59
  242. package/build/esm/zone/ScreenZone.js +0 -116
  243. package/build/esm/zone/SphereZone.js +0 -113
  244. package/build/esm/zone/Zone.js +0 -141
  245. package/build/esm/zone/index.js +0 -7
  246. package/build/esm/zone/types.js +0 -8
  247. package/build/three-nebula.js +0 -2
  248. package/build/three-nebula.js.map +0 -1
@@ -1,390 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
-
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _constants = require("./constants");
15
-
16
- var _utils = require("../utils");
17
-
18
- var _constants2 = require("../constants");
19
-
20
- var _math = require("../math");
21
-
22
- var _types = require("./types");
23
-
24
- /**
25
- * A Particle is an object that is emitted by an emitter.
26
- *
27
- */
28
- var Particle = /*#__PURE__*/function () {
29
- /**
30
- * Constructs a Particle instance.
31
- *
32
- * @param {object} properties - The properties to instantiate the particle with
33
- * @property {number} properties.life - The particle's life
34
- * @property {number} properties.age - The particle's age
35
- * @property {number} properties.energy - The particle's energy loss
36
- * @property {boolean} properties.dead - Determines if the particle is dead or not
37
- * @property {boolean} properties.sleep - Determines if the particle is sleeping or not
38
- * @property {object} properties.target - The particle's target
39
- * @property {object} properties.body - The particle's body
40
- * @property {number} properties.mass - The particle's mass
41
- * @property {number} properties.radius - The particle's radius
42
- * @property {number} properties.alpha - The particle's alpha
43
- * @property {number} properties.scale - The particle's scale
44
- * @property {number} properties.rotation - The particle's rotation
45
- * @property {string|number} properties.color - The particle's color
46
- * @property {function} properties.easing - The particle's easing
47
- * @property {Vector3D} properties.position - The particle's position
48
- * @property {Vector3D} properties.velocity - The particle's velocity
49
- * @property {Vector3D} properties.acceleration - The particle's acceleration
50
- * @property {array} properties.behaviours - The particle's behaviours array
51
- * @property {object} properties.transform - The particle's transform collection
52
- * @return void
53
- */
54
- function Particle(properties) {
55
- (0, _classCallCheck2["default"])(this, Particle);
56
-
57
- /**
58
- * @desc The particle's unique id
59
- * @type {number}
60
- */
61
- this.id = "particle-".concat((0, _utils.uid)());
62
- /**
63
- * @desc The class type.
64
- * @type {string}
65
- */
66
-
67
- this.type = _types.CORE_TYPE_PARTICLE;
68
- /**
69
- * @desc The particle's life
70
- * @type {number}
71
- */
72
-
73
- this.life = _constants.DEFAULT_LIFE;
74
- /**
75
- * @desc The particle's age
76
- * @type {number}
77
- */
78
-
79
- this.age = _constants.DEFAULT_AGE;
80
- /**
81
- * @desc The particle's energy loss
82
- * @type {number}
83
- */
84
-
85
- this.energy = _constants.DEFAULT_ENERGY;
86
- /**
87
- * @desc Determines if the particle is dead or not
88
- * @type {number}
89
- */
90
-
91
- this.dead = _constants.DEFAULT_DEAD;
92
- /**
93
- * @desc Determines if the particle is sleeping or not
94
- * @type {number}
95
- */
96
-
97
- this.sleep = _constants.DEFAULT_SLEEP;
98
- /**
99
- * @desc The particle's body
100
- * @type {object}
101
- */
102
-
103
- this.body = _constants.DEFAULT_BODY;
104
- /**
105
- * @desc The particle's parent
106
- * @type {?Emitter}
107
- */
108
-
109
- this.parent = _constants.DEFAULT_PARENT;
110
- /**
111
- * @desc The particle's mass
112
- * @type {number}
113
- */
114
-
115
- this.mass = _constants.DEFAULT_MASS;
116
- /**
117
- * @desc The particle's radius
118
- * @type {number}
119
- */
120
-
121
- this.radius = _constants.DEFAULT_RADIUS;
122
- /**
123
- * @desc The particle's alpha
124
- * @type {number}
125
- */
126
-
127
- this.alpha = _constants.DEFAULT_ALPHA;
128
- /**
129
- * @desc The particle's scale
130
- * @type {number}
131
- */
132
-
133
- this.scale = _constants.DEFAULT_SCALE;
134
- /**
135
- * @desc Determines whether to use color or not
136
- * @type {boolean}
137
- */
138
-
139
- this.useColor = _constants.DEFAULT_USE_COLOR;
140
- /**
141
- * @desc Determines whether to use alpha or not
142
- * @type {boolean}
143
- */
144
-
145
- this.useAlpha = _constants.DEFAULT_USE_ALPHA;
146
- /**
147
- * @desc The particle's easing
148
- * @type {string}
149
- */
150
-
151
- this.easing = _constants.DEFAULT_EASING;
152
- /**
153
- * @desc The particle's position
154
- * @type {Vector3D}
155
- */
156
-
157
- this.position = new _math.Vector3D();
158
- /**
159
- * @desc The particle's velocity
160
- * @type {Vector3D}
161
- */
162
-
163
- this.velocity = new _math.Vector3D();
164
- /**
165
- * @desc The particle's acceleration
166
- * @type {Vector3D}
167
- */
168
-
169
- this.acceleration = new _math.Vector3D();
170
- /**
171
- * @desc The particle's last position, velocity and acceleration
172
- * @type {Vector3D}
173
- */
174
-
175
- this.old = {};
176
- /**
177
- * @desc The particle's old position
178
- * @type {Vector3D}
179
- */
180
-
181
- this.old.position = this.position.clone();
182
- /**
183
- * @desc The particle's old velocity
184
- * @type {Vector3D}
185
- */
186
-
187
- this.old.velocity = this.velocity.clone();
188
- /**
189
- * @desc The particle's old acceleration
190
- * @type {Vector3D}
191
- */
192
-
193
- this.old.acceleration = this.acceleration.clone();
194
- /**
195
- * @desc The particle's behaviours array
196
- * @type {array}
197
- */
198
-
199
- this.behaviours = [];
200
- /**
201
- * @desc The particle's transform collection
202
- * @type {object}
203
- */
204
-
205
- this.transform = {};
206
- /**
207
- * @desc The particle's color store
208
- * @type {object}
209
- */
210
-
211
- this.color = {
212
- r: 0,
213
- g: 0,
214
- b: 0
215
- };
216
- /**
217
- * @desc The particle's rotation
218
- * @type {number}
219
- */
220
-
221
- this.rotation = new _math.Vector3D();
222
- /**
223
- * @desc The particle's distance to the camera, only set by the GPURenderer for depth sorting purposes.
224
- * @type {number}
225
- */
226
-
227
- this.distanceToCamera = 0; // override constructor props with passed properties.
228
-
229
- _utils.Util.setPrototypeByObj(this, properties);
230
- }
231
- /**
232
- * Gets the particle's current direction.
233
- *
234
- * @return {number}
235
- */
236
-
237
-
238
- (0, _createClass2["default"])(Particle, [{
239
- key: "getDirection",
240
- value: function getDirection() {
241
- return Math.atan2(this.velocity.x, -this.velocity.y) * (180 / _constants2.PI);
242
- }
243
- /**
244
- * Resets the particle's default properties and clear's its particle's position,
245
- * velocity, acceleration, color and rotation. Also destroy's the particle's
246
- * transform collection & removes all behaviours.
247
- *
248
- * @return {Particle}
249
- */
250
-
251
- }, {
252
- key: "reset",
253
- value: function reset() {
254
- this.life = _constants.DEFAULT_LIFE;
255
- this.age = _constants.DEFAULT_AGE;
256
- this.energy = _constants.DEFAULT_ENERGY;
257
- this.dead = _constants.DEFAULT_DEAD;
258
- this.sleep = _constants.DEFAULT_SLEEP;
259
- this.body = _constants.DEFAULT_BODY;
260
- this.parent = _constants.DEFAULT_PARENT;
261
- this.mass = _constants.DEFAULT_MASS;
262
- this.radius = _constants.DEFAULT_RADIUS;
263
- this.alpha = _constants.DEFAULT_ALPHA;
264
- this.scale = _constants.DEFAULT_SCALE;
265
- this.useColor = _constants.DEFAULT_USE_COLOR;
266
- this.useAlpha = _constants.DEFAULT_USE_ALPHA;
267
- this.easing = _constants.DEFAULT_EASING;
268
- this.position.set(0, 0, 0);
269
- this.velocity.set(0, 0, 0);
270
- this.acceleration.set(0, 0, 0);
271
- this.old.position.set(0, 0, 0);
272
- this.old.velocity.set(0, 0, 0);
273
- this.old.acceleration.set(0, 0, 0);
274
- this.color.r = 0;
275
- this.color.g = 0;
276
- this.color.b = 0;
277
- this.rotation.clear();
278
-
279
- _utils.Util.destroyObject(this.transform);
280
-
281
- this.removeAllBehaviours();
282
- return this;
283
- }
284
- /**
285
- * Updates the particle's properties by applying each behaviour to the particle.
286
- * Will also update the particle's energy, unless it's age is greater than it's life
287
- * in which case it will be destroyed.
288
- *
289
- * @param {number} time - Integration time
290
- * @param {integer} index - Particle index
291
- * @return void
292
- */
293
-
294
- }, {
295
- key: "update",
296
- value: function update(time, index) {
297
- if (!this.sleep) {
298
- this.age += time;
299
- var i = this.behaviours.length;
300
-
301
- while (i--) {
302
- var behaviour = this.behaviours[i]; //behaviour &&
303
-
304
- behaviour.applyBehaviour(this, time, index);
305
- }
306
- }
307
-
308
- if (this.age >= this.life) {
309
- this.destroy();
310
- } else {
311
- var scale = this.easing(this.age / this.life);
312
- this.energy = Math.max(1 - scale, 0);
313
- }
314
- }
315
- /**
316
- * Adds a behaviour to the particle.
317
- *
318
- * @param {Behaviour} behaviour - The behaviour to add to the particle
319
- * @return void
320
- */
321
-
322
- }, {
323
- key: "addBehaviour",
324
- value: function addBehaviour(behaviour) {
325
- this.behaviours.push(behaviour);
326
- behaviour.initialize(this);
327
- }
328
- /**
329
- * Adds multiple behaviours to the particle.
330
- *
331
- * @param {array<Behaviour>} behaviours - An array of behaviours to add to the particle
332
- * @return void
333
- */
334
-
335
- }, {
336
- key: "addBehaviours",
337
- value: function addBehaviours(behaviours) {
338
- var i = behaviours.length;
339
-
340
- while (i--) {
341
- this.addBehaviour(behaviours[i]);
342
- }
343
- }
344
- /**
345
- * Removes the behaviour from the particle.
346
- *
347
- * @param {Behaviour} behaviour - The behaviour to remove from the particle
348
- * @return void
349
- */
350
-
351
- }, {
352
- key: "removeBehaviour",
353
- value: function removeBehaviour(behaviour) {
354
- var index = this.behaviours.indexOf(behaviour);
355
-
356
- if (index > -1) {
357
- this.behaviours.splice(index, 1);
358
- }
359
- }
360
- /**
361
- * Removes all behaviours from the particle.
362
- *
363
- * @return void
364
- */
365
-
366
- }, {
367
- key: "removeAllBehaviours",
368
- value: function removeAllBehaviours() {
369
- _utils.Util.destroyArray(this.behaviours);
370
- }
371
- /**
372
- * Destroys the particle.
373
- *
374
- * @return void
375
- */
376
-
377
- }, {
378
- key: "destroy",
379
- value: function destroy() {
380
- this.removeAllBehaviours();
381
- this.energy = 0;
382
- this.dead = true;
383
- this.parent = null;
384
- }
385
- }]);
386
- return Particle;
387
- }();
388
-
389
- exports["default"] = Particle;
390
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL1BhcnRpY2xlLmpzIl0sIm5hbWVzIjpbIlBhcnRpY2xlIiwicHJvcGVydGllcyIsImlkIiwidHlwZSIsImxpZmUiLCJERUZBVUxUX0xJRkUiLCJhZ2UiLCJERUZBVUxUX0FHRSIsImVuZXJneSIsIkRFRkFVTFRfRU5FUkdZIiwiZGVhZCIsIkRFRkFVTFRfREVBRCIsInNsZWVwIiwiREVGQVVMVF9TTEVFUCIsImJvZHkiLCJERUZBVUxUX0JPRFkiLCJwYXJlbnQiLCJERUZBVUxUX1BBUkVOVCIsIm1hc3MiLCJERUZBVUxUX01BU1MiLCJyYWRpdXMiLCJERUZBVUxUX1JBRElVUyIsImFscGhhIiwiREVGQVVMVF9BTFBIQSIsInNjYWxlIiwiREVGQVVMVF9TQ0FMRSIsInVzZUNvbG9yIiwiREVGQVVMVF9VU0VfQ09MT1IiLCJ1c2VBbHBoYSIsIkRFRkFVTFRfVVNFX0FMUEhBIiwiZWFzaW5nIiwiREVGQVVMVF9FQVNJTkciLCJwb3NpdGlvbiIsIlZlY3RvcjNEIiwidmVsb2NpdHkiLCJhY2NlbGVyYXRpb24iLCJvbGQiLCJjbG9uZSIsImJlaGF2aW91cnMiLCJ0cmFuc2Zvcm0iLCJjb2xvciIsInIiLCJnIiwiYiIsInJvdGF0aW9uIiwiZGlzdGFuY2VUb0NhbWVyYSIsIlV0aWwiLCJzZXRQcm90b3R5cGVCeU9iaiIsIk1hdGgiLCJhdGFuMiIsIngiLCJ5IiwiUEkiLCJzZXQiLCJjbGVhciIsImRlc3Ryb3lPYmplY3QiLCJyZW1vdmVBbGxCZWhhdmlvdXJzIiwidGltZSIsImluZGV4IiwiaSIsImxlbmd0aCIsImJlaGF2aW91ciIsImFwcGx5QmVoYXZpb3VyIiwiZGVzdHJveSIsIm1heCIsInB1c2giLCJpbml0aWFsaXplIiwiYWRkQmVoYXZpb3VyIiwiaW5kZXhPZiIsInNwbGljZSIsImRlc3Ryb3lBcnJheSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQWdCQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtJQUNxQkEsUTtBQUNuQjtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFLG9CQUFZQyxVQUFaLEVBQXdCO0FBQUE7O0FBQ3RCO0FBQ0o7QUFDQTtBQUNBO0FBQ0ksU0FBS0MsRUFBTCxzQkFBc0IsaUJBQXRCO0FBRUE7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS0MsSUFBTCxHQUFZQSx5QkFBWjtBQUNBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtDLElBQUwsR0FBWUMsdUJBQVo7QUFDQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxTQUFLQyxHQUFMLEdBQVdDLHNCQUFYO0FBQ0E7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS0MsTUFBTCxHQUFjQyx5QkFBZDtBQUNBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtDLElBQUwsR0FBWUMsdUJBQVo7QUFDQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxTQUFLQyxLQUFMLEdBQWFDLHdCQUFiO0FBQ0E7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS0MsSUFBTCxHQUFZQyx1QkFBWjtBQUNBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtDLE1BQUwsR0FBY0MseUJBQWQ7QUFDQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxTQUFLQyxJQUFMLEdBQVlDLHVCQUFaO0FBQ0E7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS0MsTUFBTCxHQUFjQyx5QkFBZDtBQUNBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtDLEtBQUwsR0FBYUMsd0JBQWI7QUFDQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxTQUFLQyxLQUFMLEdBQWFDLHdCQUFiO0FBQ0E7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS0MsUUFBTCxHQUFnQkMsNEJBQWhCO0FBQ0E7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS0MsUUFBTCxHQUFnQkMsNEJBQWhCO0FBQ0E7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS0MsTUFBTCxHQUFjQyx5QkFBZDtBQUNBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtDLFFBQUwsR0FBZ0IsSUFBSUMsY0FBSixFQUFoQjtBQUNBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtDLFFBQUwsR0FBZ0IsSUFBSUQsY0FBSixFQUFoQjtBQUNBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtFLFlBQUwsR0FBb0IsSUFBSUYsY0FBSixFQUFwQjtBQUNBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtHLEdBQUwsR0FBVyxFQUFYO0FBQ0E7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS0EsR0FBTCxDQUFTSixRQUFULEdBQW9CLEtBQUtBLFFBQUwsQ0FBY0ssS0FBZCxFQUFwQjtBQUNBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtELEdBQUwsQ0FBU0YsUUFBVCxHQUFvQixLQUFLQSxRQUFMLENBQWNHLEtBQWQsRUFBcEI7QUFDQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxTQUFLRCxHQUFMLENBQVNELFlBQVQsR0FBd0IsS0FBS0EsWUFBTCxDQUFrQkUsS0FBbEIsRUFBeEI7QUFDQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxTQUFLQyxVQUFMLEdBQWtCLEVBQWxCO0FBQ0E7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS0MsU0FBTCxHQUFpQixFQUFqQjtBQUNBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtDLEtBQUwsR0FBYTtBQUFFQyxNQUFBQSxDQUFDLEVBQUUsQ0FBTDtBQUFRQyxNQUFBQSxDQUFDLEVBQUUsQ0FBWDtBQUFjQyxNQUFBQSxDQUFDLEVBQUU7QUFBakIsS0FBYjtBQUNBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtDLFFBQUwsR0FBZ0IsSUFBSVgsY0FBSixFQUFoQjtBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtZLGdCQUFMLEdBQXdCLENBQXhCLENBOUlzQixDQWdKdEI7O0FBQ0FDLGdCQUFLQyxpQkFBTCxDQUF1QixJQUF2QixFQUE2QjlDLFVBQTdCO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBOzs7OzttQ0FDaUI7QUFDYixhQUFPK0MsSUFBSSxDQUFDQyxLQUFMLENBQVcsS0FBS2YsUUFBTCxDQUFjZ0IsQ0FBekIsRUFBNEIsQ0FBQyxLQUFLaEIsUUFBTCxDQUFjaUIsQ0FBM0MsS0FBaUQsTUFBTUMsY0FBdkQsQ0FBUDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7NEJBQ1U7QUFDTixXQUFLaEQsSUFBTCxHQUFZQyx1QkFBWjtBQUNBLFdBQUtDLEdBQUwsR0FBV0Msc0JBQVg7QUFDQSxXQUFLQyxNQUFMLEdBQWNDLHlCQUFkO0FBQ0EsV0FBS0MsSUFBTCxHQUFZQyx1QkFBWjtBQUNBLFdBQUtDLEtBQUwsR0FBYUMsd0JBQWI7QUFDQSxXQUFLQyxJQUFMLEdBQVlDLHVCQUFaO0FBQ0EsV0FBS0MsTUFBTCxHQUFjQyx5QkFBZDtBQUNBLFdBQUtDLElBQUwsR0FBWUMsdUJBQVo7QUFDQSxXQUFLQyxNQUFMLEdBQWNDLHlCQUFkO0FBQ0EsV0FBS0MsS0FBTCxHQUFhQyx3QkFBYjtBQUNBLFdBQUtDLEtBQUwsR0FBYUMsd0JBQWI7QUFDQSxXQUFLQyxRQUFMLEdBQWdCQyw0QkFBaEI7QUFDQSxXQUFLQyxRQUFMLEdBQWdCQyw0QkFBaEI7QUFDQSxXQUFLQyxNQUFMLEdBQWNDLHlCQUFkO0FBQ0EsV0FBS0MsUUFBTCxDQUFjcUIsR0FBZCxDQUFrQixDQUFsQixFQUFxQixDQUFyQixFQUF3QixDQUF4QjtBQUNBLFdBQUtuQixRQUFMLENBQWNtQixHQUFkLENBQWtCLENBQWxCLEVBQXFCLENBQXJCLEVBQXdCLENBQXhCO0FBQ0EsV0FBS2xCLFlBQUwsQ0FBa0JrQixHQUFsQixDQUFzQixDQUF0QixFQUF5QixDQUF6QixFQUE0QixDQUE1QjtBQUNBLFdBQUtqQixHQUFMLENBQVNKLFFBQVQsQ0FBa0JxQixHQUFsQixDQUFzQixDQUF0QixFQUF5QixDQUF6QixFQUE0QixDQUE1QjtBQUNBLFdBQUtqQixHQUFMLENBQVNGLFFBQVQsQ0FBa0JtQixHQUFsQixDQUFzQixDQUF0QixFQUF5QixDQUF6QixFQUE0QixDQUE1QjtBQUNBLFdBQUtqQixHQUFMLENBQVNELFlBQVQsQ0FBc0JrQixHQUF0QixDQUEwQixDQUExQixFQUE2QixDQUE3QixFQUFnQyxDQUFoQztBQUNBLFdBQUtiLEtBQUwsQ0FBV0MsQ0FBWCxHQUFlLENBQWY7QUFDQSxXQUFLRCxLQUFMLENBQVdFLENBQVgsR0FBZSxDQUFmO0FBQ0EsV0FBS0YsS0FBTCxDQUFXRyxDQUFYLEdBQWUsQ0FBZjtBQUVBLFdBQUtDLFFBQUwsQ0FBY1UsS0FBZDs7QUFDQVIsa0JBQUtTLGFBQUwsQ0FBbUIsS0FBS2hCLFNBQXhCOztBQUNBLFdBQUtpQixtQkFBTDtBQUVBLGFBQU8sSUFBUDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OzJCQUNTQyxJLEVBQU1DLEssRUFBTztBQUNsQixVQUFJLENBQUMsS0FBSzlDLEtBQVYsRUFBaUI7QUFDZixhQUFLTixHQUFMLElBQVltRCxJQUFaO0FBRUEsWUFBSUUsQ0FBQyxHQUFHLEtBQUtyQixVQUFMLENBQWdCc0IsTUFBeEI7O0FBRUEsZUFBT0QsQ0FBQyxFQUFSLEVBQVk7QUFDVixjQUFJRSxTQUFTLEdBQUcsS0FBS3ZCLFVBQUwsQ0FBZ0JxQixDQUFoQixDQUFoQixDQURVLENBR1Y7O0FBQ0FFLFVBQUFBLFNBQVMsQ0FBQ0MsY0FBVixDQUF5QixJQUF6QixFQUErQkwsSUFBL0IsRUFBcUNDLEtBQXJDO0FBQ0Q7QUFDRjs7QUFFRCxVQUFJLEtBQUtwRCxHQUFMLElBQVksS0FBS0YsSUFBckIsRUFBMkI7QUFDekIsYUFBSzJELE9BQUw7QUFDRCxPQUZELE1BRU87QUFDTCxZQUFNdkMsS0FBSyxHQUFHLEtBQUtNLE1BQUwsQ0FBWSxLQUFLeEIsR0FBTCxHQUFXLEtBQUtGLElBQTVCLENBQWQ7QUFFQSxhQUFLSSxNQUFMLEdBQWN3QyxJQUFJLENBQUNnQixHQUFMLENBQVMsSUFBSXhDLEtBQWIsRUFBb0IsQ0FBcEIsQ0FBZDtBQUNEO0FBQ0Y7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7aUNBQ2VxQyxTLEVBQVc7QUFDdEIsV0FBS3ZCLFVBQUwsQ0FBZ0IyQixJQUFoQixDQUFxQkosU0FBckI7QUFDQUEsTUFBQUEsU0FBUyxDQUFDSyxVQUFWLENBQXFCLElBQXJCO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7a0NBQ2dCNUIsVSxFQUFZO0FBQ3hCLFVBQUlxQixDQUFDLEdBQUdyQixVQUFVLENBQUNzQixNQUFuQjs7QUFFQSxhQUFPRCxDQUFDLEVBQVIsRUFBWTtBQUNWLGFBQUtRLFlBQUwsQ0FBa0I3QixVQUFVLENBQUNxQixDQUFELENBQTVCO0FBQ0Q7QUFDRjtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztvQ0FDa0JFLFMsRUFBVztBQUN6QixVQUFNSCxLQUFLLEdBQUcsS0FBS3BCLFVBQUwsQ0FBZ0I4QixPQUFoQixDQUF3QlAsU0FBeEIsQ0FBZDs7QUFFQSxVQUFJSCxLQUFLLEdBQUcsQ0FBQyxDQUFiLEVBQWdCO0FBQ2QsYUFBS3BCLFVBQUwsQ0FBZ0IrQixNQUFoQixDQUF1QlgsS0FBdkIsRUFBOEIsQ0FBOUI7QUFDRDtBQUNGO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7OzswQ0FDd0I7QUFDcEJaLGtCQUFLd0IsWUFBTCxDQUFrQixLQUFLaEMsVUFBdkI7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7Ozs7OEJBQ1k7QUFDUixXQUFLa0IsbUJBQUw7QUFDQSxXQUFLaEQsTUFBTCxHQUFjLENBQWQ7QUFDQSxXQUFLRSxJQUFMLEdBQVksSUFBWjtBQUNBLFdBQUtNLE1BQUwsR0FBYyxJQUFkO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBERUZBVUxUX0FHRSxcbiAgREVGQVVMVF9BTFBIQSxcbiAgREVGQVVMVF9CT0RZLFxuICBERUZBVUxUX0RFQUQsXG4gIERFRkFVTFRfRUFTSU5HLFxuICBERUZBVUxUX0VORVJHWSxcbiAgREVGQVVMVF9MSUZFLFxuICBERUZBVUxUX01BU1MsXG4gIERFRkFVTFRfUEFSRU5ULFxuICBERUZBVUxUX1JBRElVUyxcbiAgREVGQVVMVF9TQ0FMRSxcbiAgREVGQVVMVF9TTEVFUCxcbiAgREVGQVVMVF9VU0VfQUxQSEEsXG4gIERFRkFVTFRfVVNFX0NPTE9SLFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBVdGlsLCB1aWQgfSBmcm9tICcuLi91dGlscyc7XG5cbmltcG9ydCB7IFBJIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFZlY3RvcjNEIH0gZnJvbSAnLi4vbWF0aCc7XG5pbXBvcnQgeyBDT1JFX1RZUEVfUEFSVElDTEUgYXMgdHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEEgUGFydGljbGUgaXMgYW4gb2JqZWN0IHRoYXQgaXMgZW1pdHRlZCBieSBhbiBlbWl0dGVyLlxuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFydGljbGUge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhIFBhcnRpY2xlIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcGVydGllcyAtIFRoZSBwcm9wZXJ0aWVzIHRvIGluc3RhbnRpYXRlIHRoZSBwYXJ0aWNsZSB3aXRoXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBwcm9wZXJ0aWVzLmxpZmUgLSBUaGUgcGFydGljbGUncyBsaWZlXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBwcm9wZXJ0aWVzLmFnZSAtIFRoZSBwYXJ0aWNsZSdzIGFnZVxuICAgKiBAcHJvcGVydHkge251bWJlcn0gcHJvcGVydGllcy5lbmVyZ3kgLSBUaGUgcGFydGljbGUncyBlbmVyZ3kgbG9zc1xuICAgKiBAcHJvcGVydHkge2Jvb2xlYW59IHByb3BlcnRpZXMuZGVhZCAtIERldGVybWluZXMgaWYgdGhlIHBhcnRpY2xlIGlzIGRlYWQgb3Igbm90XG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcHJvcGVydGllcy5zbGVlcCAtIERldGVybWluZXMgaWYgdGhlIHBhcnRpY2xlIGlzIHNsZWVwaW5nIG9yIG5vdFxuICAgKiBAcHJvcGVydHkge29iamVjdH0gcHJvcGVydGllcy50YXJnZXQgLSBUaGUgcGFydGljbGUncyB0YXJnZXRcbiAgICogQHByb3BlcnR5IHtvYmplY3R9IHByb3BlcnRpZXMuYm9keSAtIFRoZSBwYXJ0aWNsZSdzIGJvZHlcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IHByb3BlcnRpZXMubWFzcyAtIFRoZSBwYXJ0aWNsZSdzIG1hc3NcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IHByb3BlcnRpZXMucmFkaXVzIC0gVGhlIHBhcnRpY2xlJ3MgcmFkaXVzXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBwcm9wZXJ0aWVzLmFscGhhIC0gVGhlIHBhcnRpY2xlJ3MgYWxwaGFcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IHByb3BlcnRpZXMuc2NhbGUgLSBUaGUgcGFydGljbGUncyBzY2FsZVxuICAgKiBAcHJvcGVydHkge251bWJlcn0gcHJvcGVydGllcy5yb3RhdGlvbiAtIFRoZSBwYXJ0aWNsZSdzIHJvdGF0aW9uXG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nfG51bWJlcn0gcHJvcGVydGllcy5jb2xvciAtIFRoZSBwYXJ0aWNsZSdzIGNvbG9yXG4gICAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb259IHByb3BlcnRpZXMuZWFzaW5nIC0gVGhlIHBhcnRpY2xlJ3MgZWFzaW5nXG4gICAqIEBwcm9wZXJ0eSB7VmVjdG9yM0R9IHByb3BlcnRpZXMucG9zaXRpb24gLSBUaGUgcGFydGljbGUncyBwb3NpdGlvblxuICAgKiBAcHJvcGVydHkge1ZlY3RvcjNEfSBwcm9wZXJ0aWVzLnZlbG9jaXR5IC0gVGhlIHBhcnRpY2xlJ3MgdmVsb2NpdHlcbiAgICogQHByb3BlcnR5IHtWZWN0b3IzRH0gcHJvcGVydGllcy5hY2NlbGVyYXRpb24gLSBUaGUgcGFydGljbGUncyBhY2NlbGVyYXRpb25cbiAgICogQHByb3BlcnR5IHthcnJheX0gcHJvcGVydGllcy5iZWhhdmlvdXJzIC0gVGhlIHBhcnRpY2xlJ3MgYmVoYXZpb3VycyBhcnJheVxuICAgKiBAcHJvcGVydHkge29iamVjdH0gcHJvcGVydGllcy50cmFuc2Zvcm0gLSBUaGUgcGFydGljbGUncyB0cmFuc2Zvcm0gY29sbGVjdGlvblxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BlcnRpZXMpIHtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGUncyB1bmlxdWUgaWRcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMuaWQgPSBgcGFydGljbGUtJHt1aWQoKX1gO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGNsYXNzIHR5cGUuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBwYXJ0aWNsZSdzIGxpZmVcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMubGlmZSA9IERFRkFVTFRfTElGRTtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGUncyBhZ2VcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMuYWdlID0gREVGQVVMVF9BR0U7XG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHBhcnRpY2xlJ3MgZW5lcmd5IGxvc3NcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMuZW5lcmd5ID0gREVGQVVMVF9FTkVSR1k7XG4gICAgLyoqXG4gICAgICogQGRlc2MgRGV0ZXJtaW5lcyBpZiB0aGUgcGFydGljbGUgaXMgZGVhZCBvciBub3RcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMuZGVhZCA9IERFRkFVTFRfREVBRDtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBEZXRlcm1pbmVzIGlmIHRoZSBwYXJ0aWNsZSBpcyBzbGVlcGluZyBvciBub3RcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMuc2xlZXAgPSBERUZBVUxUX1NMRUVQO1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBwYXJ0aWNsZSdzIGJvZHlcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqL1xuICAgIHRoaXMuYm9keSA9IERFRkFVTFRfQk9EWTtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGUncyBwYXJlbnRcbiAgICAgKiBAdHlwZSB7P0VtaXR0ZXJ9XG4gICAgICovXG4gICAgdGhpcy5wYXJlbnQgPSBERUZBVUxUX1BBUkVOVDtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGUncyBtYXNzXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLm1hc3MgPSBERUZBVUxUX01BU1M7XG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHBhcnRpY2xlJ3MgcmFkaXVzXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLnJhZGl1cyA9IERFRkFVTFRfUkFESVVTO1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBwYXJ0aWNsZSdzIGFscGhhXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmFscGhhID0gREVGQVVMVF9BTFBIQTtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGUncyBzY2FsZVxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5zY2FsZSA9IERFRkFVTFRfU0NBTEU7XG4gICAgLyoqXG4gICAgICogQGRlc2MgRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHVzZSBjb2xvciBvciBub3RcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLnVzZUNvbG9yID0gREVGQVVMVF9VU0VfQ09MT1I7XG4gICAgLyoqXG4gICAgICogQGRlc2MgRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHVzZSBhbHBoYSBvciBub3RcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLnVzZUFscGhhID0gREVGQVVMVF9VU0VfQUxQSEE7XG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHBhcnRpY2xlJ3MgZWFzaW5nXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLmVhc2luZyA9IERFRkFVTFRfRUFTSU5HO1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBwYXJ0aWNsZSdzIHBvc2l0aW9uXG4gICAgICogQHR5cGUge1ZlY3RvcjNEfVxuICAgICAqL1xuICAgIHRoaXMucG9zaXRpb24gPSBuZXcgVmVjdG9yM0QoKTtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGUncyB2ZWxvY2l0eVxuICAgICAqIEB0eXBlIHtWZWN0b3IzRH1cbiAgICAgKi9cbiAgICB0aGlzLnZlbG9jaXR5ID0gbmV3IFZlY3RvcjNEKCk7XG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHBhcnRpY2xlJ3MgYWNjZWxlcmF0aW9uXG4gICAgICogQHR5cGUge1ZlY3RvcjNEfVxuICAgICAqL1xuICAgIHRoaXMuYWNjZWxlcmF0aW9uID0gbmV3IFZlY3RvcjNEKCk7XG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHBhcnRpY2xlJ3MgbGFzdCBwb3NpdGlvbiwgdmVsb2NpdHkgYW5kIGFjY2VsZXJhdGlvblxuICAgICAqIEB0eXBlIHtWZWN0b3IzRH1cbiAgICAgKi9cbiAgICB0aGlzLm9sZCA9IHt9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBwYXJ0aWNsZSdzIG9sZCBwb3NpdGlvblxuICAgICAqIEB0eXBlIHtWZWN0b3IzRH1cbiAgICAgKi9cbiAgICB0aGlzLm9sZC5wb3NpdGlvbiA9IHRoaXMucG9zaXRpb24uY2xvbmUoKTtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGUncyBvbGQgdmVsb2NpdHlcbiAgICAgKiBAdHlwZSB7VmVjdG9yM0R9XG4gICAgICovXG4gICAgdGhpcy5vbGQudmVsb2NpdHkgPSB0aGlzLnZlbG9jaXR5LmNsb25lKCk7XG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHBhcnRpY2xlJ3Mgb2xkIGFjY2VsZXJhdGlvblxuICAgICAqIEB0eXBlIHtWZWN0b3IzRH1cbiAgICAgKi9cbiAgICB0aGlzLm9sZC5hY2NlbGVyYXRpb24gPSB0aGlzLmFjY2VsZXJhdGlvbi5jbG9uZSgpO1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBwYXJ0aWNsZSdzIGJlaGF2aW91cnMgYXJyYXlcbiAgICAgKiBAdHlwZSB7YXJyYXl9XG4gICAgICovXG4gICAgdGhpcy5iZWhhdmlvdXJzID0gW107XG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHBhcnRpY2xlJ3MgdHJhbnNmb3JtIGNvbGxlY3Rpb25cbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqL1xuICAgIHRoaXMudHJhbnNmb3JtID0ge307XG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHBhcnRpY2xlJ3MgY29sb3Igc3RvcmVcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqL1xuICAgIHRoaXMuY29sb3IgPSB7IHI6IDAsIGc6IDAsIGI6IDAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGUncyByb3RhdGlvblxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5yb3RhdGlvbiA9IG5ldyBWZWN0b3IzRCgpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHBhcnRpY2xlJ3MgZGlzdGFuY2UgdG8gdGhlIGNhbWVyYSwgb25seSBzZXQgYnkgdGhlIEdQVVJlbmRlcmVyIGZvciBkZXB0aCBzb3J0aW5nIHB1cnBvc2VzLlxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5kaXN0YW5jZVRvQ2FtZXJhID0gMDtcblxuICAgIC8vIG92ZXJyaWRlIGNvbnN0cnVjdG9yIHByb3BzIHdpdGggcGFzc2VkIHByb3BlcnRpZXMuXG4gICAgVXRpbC5zZXRQcm90b3R5cGVCeU9iaih0aGlzLCBwcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBwYXJ0aWNsZSdzIGN1cnJlbnQgZGlyZWN0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBnZXREaXJlY3Rpb24oKSB7XG4gICAgcmV0dXJuIE1hdGguYXRhbjIodGhpcy52ZWxvY2l0eS54LCAtdGhpcy52ZWxvY2l0eS55KSAqICgxODAgLyBQSSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBwYXJ0aWNsZSdzIGRlZmF1bHQgcHJvcGVydGllcyBhbmQgY2xlYXIncyBpdHMgcGFydGljbGUncyBwb3NpdGlvbixcbiAgICogdmVsb2NpdHksIGFjY2VsZXJhdGlvbiwgY29sb3IgYW5kIHJvdGF0aW9uLiBBbHNvIGRlc3Ryb3kncyB0aGUgcGFydGljbGUnc1xuICAgKiB0cmFuc2Zvcm0gY29sbGVjdGlvbiAmIHJlbW92ZXMgYWxsIGJlaGF2aW91cnMuXG4gICAqXG4gICAqIEByZXR1cm4ge1BhcnRpY2xlfVxuICAgKi9cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5saWZlID0gREVGQVVMVF9MSUZFO1xuICAgIHRoaXMuYWdlID0gREVGQVVMVF9BR0U7XG4gICAgdGhpcy5lbmVyZ3kgPSBERUZBVUxUX0VORVJHWTtcbiAgICB0aGlzLmRlYWQgPSBERUZBVUxUX0RFQUQ7XG4gICAgdGhpcy5zbGVlcCA9IERFRkFVTFRfU0xFRVA7XG4gICAgdGhpcy5ib2R5ID0gREVGQVVMVF9CT0RZO1xuICAgIHRoaXMucGFyZW50ID0gREVGQVVMVF9QQVJFTlQ7XG4gICAgdGhpcy5tYXNzID0gREVGQVVMVF9NQVNTO1xuICAgIHRoaXMucmFkaXVzID0gREVGQVVMVF9SQURJVVM7XG4gICAgdGhpcy5hbHBoYSA9IERFRkFVTFRfQUxQSEE7XG4gICAgdGhpcy5zY2FsZSA9IERFRkFVTFRfU0NBTEU7XG4gICAgdGhpcy51c2VDb2xvciA9IERFRkFVTFRfVVNFX0NPTE9SO1xuICAgIHRoaXMudXNlQWxwaGEgPSBERUZBVUxUX1VTRV9BTFBIQTtcbiAgICB0aGlzLmVhc2luZyA9IERFRkFVTFRfRUFTSU5HO1xuICAgIHRoaXMucG9zaXRpb24uc2V0KDAsIDAsIDApO1xuICAgIHRoaXMudmVsb2NpdHkuc2V0KDAsIDAsIDApO1xuICAgIHRoaXMuYWNjZWxlcmF0aW9uLnNldCgwLCAwLCAwKTtcbiAgICB0aGlzLm9sZC5wb3NpdGlvbi5zZXQoMCwgMCwgMCk7XG4gICAgdGhpcy5vbGQudmVsb2NpdHkuc2V0KDAsIDAsIDApO1xuICAgIHRoaXMub2xkLmFjY2VsZXJhdGlvbi5zZXQoMCwgMCwgMCk7XG4gICAgdGhpcy5jb2xvci5yID0gMDtcbiAgICB0aGlzLmNvbG9yLmcgPSAwO1xuICAgIHRoaXMuY29sb3IuYiA9IDA7XG5cbiAgICB0aGlzLnJvdGF0aW9uLmNsZWFyKCk7XG4gICAgVXRpbC5kZXN0cm95T2JqZWN0KHRoaXMudHJhbnNmb3JtKTtcbiAgICB0aGlzLnJlbW92ZUFsbEJlaGF2aW91cnMoKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHBhcnRpY2xlJ3MgcHJvcGVydGllcyBieSBhcHBseWluZyBlYWNoIGJlaGF2aW91ciB0byB0aGUgcGFydGljbGUuXG4gICAqIFdpbGwgYWxzbyB1cGRhdGUgdGhlIHBhcnRpY2xlJ3MgZW5lcmd5LCB1bmxlc3MgaXQncyBhZ2UgaXMgZ3JlYXRlciB0aGFuIGl0J3MgbGlmZVxuICAgKiBpbiB3aGljaCBjYXNlIGl0IHdpbGwgYmUgZGVzdHJveWVkLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIEludGVncmF0aW9uIHRpbWVcbiAgICogQHBhcmFtIHtpbnRlZ2VyfSBpbmRleCAtIFBhcnRpY2xlIGluZGV4XG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgdXBkYXRlKHRpbWUsIGluZGV4KSB7XG4gICAgaWYgKCF0aGlzLnNsZWVwKSB7XG4gICAgICB0aGlzLmFnZSArPSB0aW1lO1xuXG4gICAgICBsZXQgaSA9IHRoaXMuYmVoYXZpb3Vycy5sZW5ndGg7XG5cbiAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgbGV0IGJlaGF2aW91ciA9IHRoaXMuYmVoYXZpb3Vyc1tpXTtcblxuICAgICAgICAvL2JlaGF2aW91ciAmJiBcbiAgICAgICAgYmVoYXZpb3VyLmFwcGx5QmVoYXZpb3VyKHRoaXMsIHRpbWUsIGluZGV4KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5hZ2UgPj0gdGhpcy5saWZlKSB7XG4gICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2NhbGUgPSB0aGlzLmVhc2luZyh0aGlzLmFnZSAvIHRoaXMubGlmZSk7XG5cbiAgICAgIHRoaXMuZW5lcmd5ID0gTWF0aC5tYXgoMSAtIHNjYWxlLCAwKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGJlaGF2aW91ciB0byB0aGUgcGFydGljbGUuXG4gICAqXG4gICAqIEBwYXJhbSB7QmVoYXZpb3VyfSBiZWhhdmlvdXIgLSBUaGUgYmVoYXZpb3VyIHRvIGFkZCB0byB0aGUgcGFydGljbGVcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBhZGRCZWhhdmlvdXIoYmVoYXZpb3VyKSB7XG4gICAgdGhpcy5iZWhhdmlvdXJzLnB1c2goYmVoYXZpb3VyKTtcbiAgICBiZWhhdmlvdXIuaW5pdGlhbGl6ZSh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIG11bHRpcGxlIGJlaGF2aW91cnMgdG8gdGhlIHBhcnRpY2xlLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PEJlaGF2aW91cj59IGJlaGF2aW91cnMgLSBBbiBhcnJheSBvZiBiZWhhdmlvdXJzIHRvIGFkZCB0byB0aGUgcGFydGljbGVcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBhZGRCZWhhdmlvdXJzKGJlaGF2aW91cnMpIHtcbiAgICBsZXQgaSA9IGJlaGF2aW91cnMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdGhpcy5hZGRCZWhhdmlvdXIoYmVoYXZpb3Vyc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGJlaGF2aW91ciBmcm9tIHRoZSBwYXJ0aWNsZS5cbiAgICpcbiAgICogQHBhcmFtIHtCZWhhdmlvdXJ9IGJlaGF2aW91ciAtIFRoZSBiZWhhdmlvdXIgdG8gcmVtb3ZlIGZyb20gdGhlIHBhcnRpY2xlXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgcmVtb3ZlQmVoYXZpb3VyKGJlaGF2aW91cikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5iZWhhdmlvdXJzLmluZGV4T2YoYmVoYXZpb3VyKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmJlaGF2aW91cnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbGwgYmVoYXZpb3VycyBmcm9tIHRoZSBwYXJ0aWNsZS5cbiAgICpcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICByZW1vdmVBbGxCZWhhdmlvdXJzKCkge1xuICAgIFV0aWwuZGVzdHJveUFycmF5KHRoaXMuYmVoYXZpb3Vycyk7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveXMgdGhlIHBhcnRpY2xlLlxuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZW1vdmVBbGxCZWhhdmlvdXJzKCk7XG4gICAgdGhpcy5lbmVyZ3kgPSAwO1xuICAgIHRoaXMuZGVhZCA9IHRydWU7XG4gICAgdGhpcy5wYXJlbnQgPSBudWxsO1xuICB9XG59XG4iXX0=
@@ -1,203 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
-
10
- var _construct2 = _interopRequireDefault(require("@babel/runtime/helpers/construct"));
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
- var _PUID = _interopRequireDefault(require("../utils/PUID"));
17
-
18
- var _types = require("./types");
19
-
20
- /**
21
- * An object pool implementation. Used for pooling objects to avoid unnecessary
22
- * garbage collection.
23
- *
24
- */
25
- var Pool = /*#__PURE__*/function () {
26
- /**
27
- * Constructs a Pool instance.
28
- *
29
- * @return void
30
- */
31
- function Pool() {
32
- (0, _classCallCheck2["default"])(this, Pool);
33
-
34
- /**
35
- * @desc The class type.
36
- * @type {string}
37
- */
38
- this.type = _types.CORE_TYPE_POOL;
39
- /**
40
- * @desc Incrementing id that keeps a count of the number of objects created
41
- * @type {integer}
42
- */
43
-
44
- this.cID = 0;
45
- /**
46
- * @desc Map of pools in the format of PUID<String>: pool<Array>
47
- * @type {object}
48
- */
49
-
50
- this.list = {};
51
- }
52
- /**
53
- * Attempts to create a new object either by creating a new instance or calling its
54
- * clone method.
55
- *
56
- * TODO COVERAGE - for the constructorArgs
57
- * @param {function|object} functionOrObject - The object to instantiate or clone
58
- * @return {object|undefined}
59
- */
60
-
61
-
62
- (0, _createClass2["default"])(Pool, [{
63
- key: "create",
64
- value: function create(functionOrObject) {
65
- if (!this.canCreateNewObject(functionOrObject)) {
66
- throw new Error('The pool is unable to create or clone the object supplied');
67
- }
68
-
69
- this.cID++;
70
-
71
- if (this.canInstantiateObject(functionOrObject)) {
72
- for (var _len = arguments.length, constructorArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
73
- constructorArgs[_key - 1] = arguments[_key];
74
- }
75
-
76
- return (0, _construct2["default"])(functionOrObject, constructorArgs);
77
- }
78
-
79
- if (this.canCloneObject(functionOrObject)) {
80
- return functionOrObject.clone();
81
- }
82
- }
83
- /**
84
- * Determines if the object is able to be instantiated or not.
85
- *
86
- * @param {object} object - The object to check
87
- * @return {boolean}
88
- */
89
-
90
- }, {
91
- key: "canInstantiateObject",
92
- value: function canInstantiateObject(object) {
93
- return typeof object === 'function';
94
- }
95
- /**
96
- * Determines if the object is able to be cloned or not.
97
- *
98
- * @param {object} object - The object to check
99
- * @return {boolean}
100
- */
101
-
102
- }, {
103
- key: "canCloneObject",
104
- value: function canCloneObject(object) {
105
- return object.clone && typeof object.clone === 'function';
106
- }
107
- /**
108
- * Determines if a new object is able to be created.
109
- *
110
- * @param {object} object - The object to check
111
- * @return {boolean}
112
- */
113
-
114
- }, {
115
- key: "canCreateNewObject",
116
- value: function canCreateNewObject(object) {
117
- return this.canInstantiateObject(object) || this.canCloneObject(object) ? true : false;
118
- }
119
- /**
120
- * Gets a count of all objects in the pool.
121
- *
122
- * @return {integer}
123
- */
124
-
125
- }, {
126
- key: "getCount",
127
- value: function getCount() {
128
- var count = 0;
129
-
130
- for (var id in this.list) {
131
- count += this.list[id].length;
132
- }
133
-
134
- return count++;
135
- }
136
- /**
137
- * Gets an object either by creating a new one or retrieving it from the pool.
138
- *
139
- * @param {function|object} obj - The function or object to get
140
- * @param {array} args - The args to pass to the function on creation
141
- * @return {object}
142
- */
143
-
144
- }, {
145
- key: "get",
146
- value: function get(obj) {
147
- var p,
148
- puid = obj.__puid || _PUID["default"].id(obj);
149
-
150
- for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
151
- args[_key2 - 1] = arguments[_key2];
152
- }
153
-
154
- if (this.list[puid] && this.list[puid].length > 0) p = this.list[puid].pop();else p = this.create.apply(this, [obj].concat(args));
155
- p.__puid = obj.__puid || puid;
156
- return p;
157
- }
158
- /**
159
- * Pushes an object into the pool.
160
- *
161
- * @param {object} obj - The object to expire
162
- * @return {integer}
163
- */
164
-
165
- }, {
166
- key: "expire",
167
- value: function expire(obj) {
168
- return this._getList(obj.__puid).push(obj);
169
- }
170
- /**
171
- * Destroys all pools.
172
- *
173
- * @return void
174
- */
175
-
176
- }, {
177
- key: "destroy",
178
- value: function destroy() {
179
- for (var id in this.list) {
180
- this.list[id].length = 0;
181
- delete this.list[id];
182
- }
183
- }
184
- /**
185
- * Gets the pool mapped to the UID.
186
- *
187
- * @param {string} uid - The pool uid
188
- * @return {array}
189
- */
190
-
191
- }, {
192
- key: "_getList",
193
- value: function _getList(uid) {
194
- uid = uid || 'default';
195
- if (!this.list[uid]) this.list[uid] = [];
196
- return this.list[uid];
197
- }
198
- }]);
199
- return Pool;
200
- }();
201
-
202
- exports["default"] = Pool;
203
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL1Bvb2wuanMiXSwibmFtZXMiOlsiUG9vbCIsInR5cGUiLCJjSUQiLCJsaXN0IiwiZnVuY3Rpb25Pck9iamVjdCIsImNhbkNyZWF0ZU5ld09iamVjdCIsIkVycm9yIiwiY2FuSW5zdGFudGlhdGVPYmplY3QiLCJjb25zdHJ1Y3RvckFyZ3MiLCJjYW5DbG9uZU9iamVjdCIsImNsb25lIiwib2JqZWN0IiwiY291bnQiLCJpZCIsImxlbmd0aCIsIm9iaiIsInAiLCJwdWlkIiwiX19wdWlkIiwiUFVJRCIsImFyZ3MiLCJwb3AiLCJjcmVhdGUiLCJfZ2V0TGlzdCIsInB1c2giLCJ1aWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDcUJBLEk7QUFDbkI7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNFLGtCQUFjO0FBQUE7O0FBQ1o7QUFDSjtBQUNBO0FBQ0E7QUFDSSxTQUFLQyxJQUFMLEdBQVlBLHFCQUFaO0FBQ0E7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS0MsR0FBTCxHQUFXLENBQVg7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxTQUFLQyxJQUFMLEdBQVksRUFBWjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7MkJBQ1NDLGdCLEVBQXNDO0FBQzNDLFVBQUksQ0FBQyxLQUFLQyxrQkFBTCxDQUF3QkQsZ0JBQXhCLENBQUwsRUFBZ0Q7QUFDOUMsY0FBTSxJQUFJRSxLQUFKLENBQ0osMkRBREksQ0FBTjtBQUdEOztBQUVELFdBQUtKLEdBQUw7O0FBRUEsVUFBSSxLQUFLSyxvQkFBTCxDQUEwQkgsZ0JBQTFCLENBQUosRUFBaUQ7QUFBQSwwQ0FUdkJJLGVBU3VCO0FBVHZCQSxVQUFBQSxlQVN1QjtBQUFBOztBQUMvQywyQ0FBV0osZ0JBQVgsRUFBK0JJLGVBQS9CO0FBQ0Q7O0FBRUQsVUFBSSxLQUFLQyxjQUFMLENBQW9CTCxnQkFBcEIsQ0FBSixFQUEyQztBQUN6QyxlQUFPQSxnQkFBZ0IsQ0FBQ00sS0FBakIsRUFBUDtBQUNEO0FBQ0Y7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7eUNBQ3VCQyxNLEVBQVE7QUFDM0IsYUFBTyxPQUFPQSxNQUFQLEtBQWtCLFVBQXpCO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7bUNBQ2lCQSxNLEVBQVE7QUFDckIsYUFBT0EsTUFBTSxDQUFDRCxLQUFQLElBQWdCLE9BQU9DLE1BQU0sQ0FBQ0QsS0FBZCxLQUF3QixVQUEvQztBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O3VDQUNxQkMsTSxFQUFRO0FBQ3pCLGFBQU8sS0FBS0osb0JBQUwsQ0FBMEJJLE1BQTFCLEtBQXFDLEtBQUtGLGNBQUwsQ0FBb0JFLE1BQXBCLENBQXJDLEdBQ0gsSUFERyxHQUVILEtBRko7QUFHRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7Ozs7K0JBQ2E7QUFDVCxVQUFJQyxLQUFLLEdBQUcsQ0FBWjs7QUFFQSxXQUFLLElBQUlDLEVBQVQsSUFBZSxLQUFLVixJQUFwQjtBQUEwQlMsUUFBQUEsS0FBSyxJQUFJLEtBQUtULElBQUwsQ0FBVVUsRUFBVixFQUFjQyxNQUF2QjtBQUExQjs7QUFFQSxhQUFPRixLQUFLLEVBQVo7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O3dCQUNNRyxHLEVBQWM7QUFDaEIsVUFBSUMsQ0FBSjtBQUFBLFVBQ0VDLElBQUksR0FBR0YsR0FBRyxDQUFDRyxNQUFKLElBQWNDLGlCQUFLTixFQUFMLENBQVFFLEdBQVIsQ0FEdkI7O0FBRGdCLHlDQUFOSyxJQUFNO0FBQU5BLFFBQUFBLElBQU07QUFBQTs7QUFJaEIsVUFBSSxLQUFLakIsSUFBTCxDQUFVYyxJQUFWLEtBQW1CLEtBQUtkLElBQUwsQ0FBVWMsSUFBVixFQUFnQkgsTUFBaEIsR0FBeUIsQ0FBaEQsRUFDRUUsQ0FBQyxHQUFHLEtBQUtiLElBQUwsQ0FBVWMsSUFBVixFQUFnQkksR0FBaEIsRUFBSixDQURGLEtBRUtMLENBQUMsR0FBRyxLQUFLTSxNQUFMLGNBQVlQLEdBQVosU0FBb0JLLElBQXBCLEVBQUo7QUFFTEosTUFBQUEsQ0FBQyxDQUFDRSxNQUFGLEdBQVdILEdBQUcsQ0FBQ0csTUFBSixJQUFjRCxJQUF6QjtBQUVBLGFBQU9ELENBQVA7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OzsyQkFDU0QsRyxFQUFLO0FBQ1YsYUFBTyxLQUFLUSxRQUFMLENBQWNSLEdBQUcsQ0FBQ0csTUFBbEIsRUFBMEJNLElBQTFCLENBQStCVCxHQUEvQixDQUFQO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBOzs7OzhCQUNZO0FBQ1IsV0FBSyxJQUFJRixFQUFULElBQWUsS0FBS1YsSUFBcEIsRUFBMEI7QUFDeEIsYUFBS0EsSUFBTCxDQUFVVSxFQUFWLEVBQWNDLE1BQWQsR0FBdUIsQ0FBdkI7QUFDQSxlQUFPLEtBQUtYLElBQUwsQ0FBVVUsRUFBVixDQUFQO0FBQ0Q7QUFDRjtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs2QkFDV1ksRyxFQUFLO0FBQ1pBLE1BQUFBLEdBQUcsR0FBR0EsR0FBRyxJQUFJLFNBQWI7QUFDQSxVQUFJLENBQUMsS0FBS3RCLElBQUwsQ0FBVXNCLEdBQVYsQ0FBTCxFQUFxQixLQUFLdEIsSUFBTCxDQUFVc0IsR0FBVixJQUFpQixFQUFqQjtBQUVyQixhQUFPLEtBQUt0QixJQUFMLENBQVVzQixHQUFWLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQVUlEIGZyb20gJy4uL3V0aWxzL1BVSUQnO1xuaW1wb3J0IHsgQ09SRV9UWVBFX1BPT0wgYXMgdHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuLyoqXG4gKiBBbiBvYmplY3QgcG9vbCBpbXBsZW1lbnRhdGlvbi4gVXNlZCBmb3IgcG9vbGluZyBvYmplY3RzIHRvIGF2b2lkIHVubmVjZXNzYXJ5XG4gKiBnYXJiYWdlIGNvbGxlY3Rpb24uXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb29sIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBQb29sIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBjbGFzcyB0eXBlLlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBJbmNyZW1lbnRpbmcgaWQgdGhhdCBrZWVwcyBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyBjcmVhdGVkXG4gICAgICogQHR5cGUge2ludGVnZXJ9XG4gICAgICovXG4gICAgdGhpcy5jSUQgPSAwO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgTWFwIG9mIHBvb2xzIGluIHRoZSBmb3JtYXQgb2YgUFVJRDxTdHJpbmc+OiBwb29sPEFycmF5PlxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICovXG4gICAgdGhpcy5saXN0ID0ge307XG4gIH1cblxuICAvKipcbiAgICogQXR0ZW1wdHMgdG8gY3JlYXRlIGEgbmV3IG9iamVjdCBlaXRoZXIgYnkgY3JlYXRpbmcgYSBuZXcgaW5zdGFuY2Ugb3IgY2FsbGluZyBpdHNcbiAgICogY2xvbmUgbWV0aG9kLlxuICAgKlxuICAgKiBUT0RPIENPVkVSQUdFIC0gZm9yIHRoZSBjb25zdHJ1Y3RvckFyZ3NcbiAgICogQHBhcmFtIHtmdW5jdGlvbnxvYmplY3R9IGZ1bmN0aW9uT3JPYmplY3QgLSBUaGUgb2JqZWN0IHRvIGluc3RhbnRpYXRlIG9yIGNsb25lXG4gICAqIEByZXR1cm4ge29iamVjdHx1bmRlZmluZWR9XG4gICAqL1xuICBjcmVhdGUoZnVuY3Rpb25Pck9iamVjdCwgLi4uY29uc3RydWN0b3JBcmdzKSB7XG4gICAgaWYgKCF0aGlzLmNhbkNyZWF0ZU5ld09iamVjdChmdW5jdGlvbk9yT2JqZWN0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVGhlIHBvb2wgaXMgdW5hYmxlIHRvIGNyZWF0ZSBvciBjbG9uZSB0aGUgb2JqZWN0IHN1cHBsaWVkJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmNJRCsrO1xuXG4gICAgaWYgKHRoaXMuY2FuSW5zdGFudGlhdGVPYmplY3QoZnVuY3Rpb25Pck9iamVjdCkpIHtcbiAgICAgIHJldHVybiBuZXcgZnVuY3Rpb25Pck9iamVjdCguLi5jb25zdHJ1Y3RvckFyZ3MpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNhbkNsb25lT2JqZWN0KGZ1bmN0aW9uT3JPYmplY3QpKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb25Pck9iamVjdC5jbG9uZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBvYmplY3QgaXMgYWJsZSB0byBiZSBpbnN0YW50aWF0ZWQgb3Igbm90LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gb2JqZWN0IC0gVGhlIG9iamVjdCB0byBjaGVja1xuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgY2FuSW5zdGFudGlhdGVPYmplY3Qob2JqZWN0KSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgb2JqZWN0IGlzIGFibGUgdG8gYmUgY2xvbmVkIG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG9iamVjdCAtIFRoZSBvYmplY3QgdG8gY2hlY2tcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGNhbkNsb25lT2JqZWN0KG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QuY2xvbmUgJiYgdHlwZW9mIG9iamVjdC5jbG9uZSA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgbmV3IG9iamVjdCBpcyBhYmxlIHRvIGJlIGNyZWF0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvYmplY3QgLSBUaGUgb2JqZWN0IHRvIGNoZWNrXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBjYW5DcmVhdGVOZXdPYmplY3Qob2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMuY2FuSW5zdGFudGlhdGVPYmplY3Qob2JqZWN0KSB8fCB0aGlzLmNhbkNsb25lT2JqZWN0KG9iamVjdClcbiAgICAgID8gdHJ1ZVxuICAgICAgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgY291bnQgb2YgYWxsIG9iamVjdHMgaW4gdGhlIHBvb2wuXG4gICAqXG4gICAqIEByZXR1cm4ge2ludGVnZXJ9XG4gICAqL1xuICBnZXRDb3VudCgpIHtcbiAgICB2YXIgY291bnQgPSAwO1xuXG4gICAgZm9yICh2YXIgaWQgaW4gdGhpcy5saXN0KSBjb3VudCArPSB0aGlzLmxpc3RbaWRdLmxlbmd0aDtcblxuICAgIHJldHVybiBjb3VudCsrO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYW4gb2JqZWN0IGVpdGhlciBieSBjcmVhdGluZyBhIG5ldyBvbmUgb3IgcmV0cmlldmluZyBpdCBmcm9tIHRoZSBwb29sLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufG9iamVjdH0gb2JqIC0gVGhlIGZ1bmN0aW9uIG9yIG9iamVjdCB0byBnZXRcbiAgICogQHBhcmFtIHthcnJheX0gYXJncyAtIFRoZSBhcmdzIHRvIHBhc3MgdG8gdGhlIGZ1bmN0aW9uIG9uIGNyZWF0aW9uXG4gICAqIEByZXR1cm4ge29iamVjdH1cbiAgICovXG4gIGdldChvYmosIC4uLmFyZ3MpIHtcbiAgICB2YXIgcCxcbiAgICAgIHB1aWQgPSBvYmouX19wdWlkIHx8IFBVSUQuaWQob2JqKTtcblxuICAgIGlmICh0aGlzLmxpc3RbcHVpZF0gJiYgdGhpcy5saXN0W3B1aWRdLmxlbmd0aCA+IDApXG4gICAgICBwID0gdGhpcy5saXN0W3B1aWRdLnBvcCgpO1xuICAgIGVsc2UgcCA9IHRoaXMuY3JlYXRlKG9iaiwgLi4uYXJncyk7XG5cbiAgICBwLl9fcHVpZCA9IG9iai5fX3B1aWQgfHwgcHVpZDtcblxuICAgIHJldHVybiBwO1xuICB9XG5cbiAgLyoqXG4gICAqIFB1c2hlcyBhbiBvYmplY3QgaW50byB0aGUgcG9vbC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG9iaiAtIFRoZSBvYmplY3QgdG8gZXhwaXJlXG4gICAqIEByZXR1cm4ge2ludGVnZXJ9XG4gICAqL1xuICBleHBpcmUob2JqKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldExpc3Qob2JqLl9fcHVpZCkucHVzaChvYmopO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIGFsbCBwb29scy5cbiAgICpcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIGZvciAodmFyIGlkIGluIHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5saXN0W2lkXS5sZW5ndGggPSAwO1xuICAgICAgZGVsZXRlIHRoaXMubGlzdFtpZF07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHBvb2wgbWFwcGVkIHRvIHRoZSBVSUQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1aWQgLSBUaGUgcG9vbCB1aWRcbiAgICogQHJldHVybiB7YXJyYXl9XG4gICAqL1xuICBfZ2V0TGlzdCh1aWQpIHtcbiAgICB1aWQgPSB1aWQgfHwgJ2RlZmF1bHQnO1xuICAgIGlmICghdGhpcy5saXN0W3VpZF0pIHRoaXMubGlzdFt1aWRdID0gW107XG5cbiAgICByZXR1cm4gdGhpcy5saXN0W3VpZF07XG4gIH1cbn1cbiJdfQ==