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,357 +0,0 @@
1
- import { DEFAULT_AGE, DEFAULT_ALPHA, DEFAULT_BODY, DEFAULT_DEAD, DEFAULT_EASING, DEFAULT_ENERGY, DEFAULT_LIFE, DEFAULT_MASS, DEFAULT_PARENT, DEFAULT_RADIUS, DEFAULT_SCALE, DEFAULT_SLEEP, DEFAULT_USE_ALPHA, DEFAULT_USE_COLOR } from './constants';
2
- import { Util, uid } from '../utils';
3
- import { PI } from '../constants';
4
- import { Vector3D } from '../math';
5
- import { CORE_TYPE_PARTICLE as type } from './types';
6
- /**
7
- * A Particle is an object that is emitted by an emitter.
8
- *
9
- */
10
-
11
- export default class Particle {
12
- /**
13
- * Constructs a Particle instance.
14
- *
15
- * @param {object} properties - The properties to instantiate the particle with
16
- * @property {number} properties.life - The particle's life
17
- * @property {number} properties.age - The particle's age
18
- * @property {number} properties.energy - The particle's energy loss
19
- * @property {boolean} properties.dead - Determines if the particle is dead or not
20
- * @property {boolean} properties.sleep - Determines if the particle is sleeping or not
21
- * @property {object} properties.target - The particle's target
22
- * @property {object} properties.body - The particle's body
23
- * @property {number} properties.mass - The particle's mass
24
- * @property {number} properties.radius - The particle's radius
25
- * @property {number} properties.alpha - The particle's alpha
26
- * @property {number} properties.scale - The particle's scale
27
- * @property {number} properties.rotation - The particle's rotation
28
- * @property {string|number} properties.color - The particle's color
29
- * @property {function} properties.easing - The particle's easing
30
- * @property {Vector3D} properties.position - The particle's position
31
- * @property {Vector3D} properties.velocity - The particle's velocity
32
- * @property {Vector3D} properties.acceleration - The particle's acceleration
33
- * @property {array} properties.behaviours - The particle's behaviours array
34
- * @property {object} properties.transform - The particle's transform collection
35
- * @return void
36
- */
37
- constructor(properties) {
38
- /**
39
- * @desc The particle's unique id
40
- * @type {number}
41
- */
42
- this.id = `particle-${uid()}`;
43
- /**
44
- * @desc The class type.
45
- * @type {string}
46
- */
47
-
48
- this.type = type;
49
- /**
50
- * @desc The particle's life
51
- * @type {number}
52
- */
53
-
54
- this.life = DEFAULT_LIFE;
55
- /**
56
- * @desc The particle's age
57
- * @type {number}
58
- */
59
-
60
- this.age = DEFAULT_AGE;
61
- /**
62
- * @desc The particle's energy loss
63
- * @type {number}
64
- */
65
-
66
- this.energy = DEFAULT_ENERGY;
67
- /**
68
- * @desc Determines if the particle is dead or not
69
- * @type {number}
70
- */
71
-
72
- this.dead = DEFAULT_DEAD;
73
- /**
74
- * @desc Determines if the particle is sleeping or not
75
- * @type {number}
76
- */
77
-
78
- this.sleep = DEFAULT_SLEEP;
79
- /**
80
- * @desc The particle's body
81
- * @type {object}
82
- */
83
-
84
- this.body = DEFAULT_BODY;
85
- /**
86
- * @desc The particle's parent
87
- * @type {?Emitter}
88
- */
89
-
90
- this.parent = DEFAULT_PARENT;
91
- /**
92
- * @desc The particle's mass
93
- * @type {number}
94
- */
95
-
96
- this.mass = DEFAULT_MASS;
97
- /**
98
- * @desc The particle's radius
99
- * @type {number}
100
- */
101
-
102
- this.radius = DEFAULT_RADIUS;
103
- /**
104
- * @desc The particle's alpha
105
- * @type {number}
106
- */
107
-
108
- this.alpha = DEFAULT_ALPHA;
109
- /**
110
- * @desc The particle's scale
111
- * @type {number}
112
- */
113
-
114
- this.scale = DEFAULT_SCALE;
115
- /**
116
- * @desc Determines whether to use color or not
117
- * @type {boolean}
118
- */
119
-
120
- this.useColor = DEFAULT_USE_COLOR;
121
- /**
122
- * @desc Determines whether to use alpha or not
123
- * @type {boolean}
124
- */
125
-
126
- this.useAlpha = DEFAULT_USE_ALPHA;
127
- /**
128
- * @desc The particle's easing
129
- * @type {string}
130
- */
131
-
132
- this.easing = DEFAULT_EASING;
133
- /**
134
- * @desc The particle's position
135
- * @type {Vector3D}
136
- */
137
-
138
- this.position = new Vector3D();
139
- /**
140
- * @desc The particle's velocity
141
- * @type {Vector3D}
142
- */
143
-
144
- this.velocity = new Vector3D();
145
- /**
146
- * @desc The particle's acceleration
147
- * @type {Vector3D}
148
- */
149
-
150
- this.acceleration = new Vector3D();
151
- /**
152
- * @desc The particle's last position, velocity and acceleration
153
- * @type {Vector3D}
154
- */
155
-
156
- this.old = {};
157
- /**
158
- * @desc The particle's old position
159
- * @type {Vector3D}
160
- */
161
-
162
- this.old.position = this.position.clone();
163
- /**
164
- * @desc The particle's old velocity
165
- * @type {Vector3D}
166
- */
167
-
168
- this.old.velocity = this.velocity.clone();
169
- /**
170
- * @desc The particle's old acceleration
171
- * @type {Vector3D}
172
- */
173
-
174
- this.old.acceleration = this.acceleration.clone();
175
- /**
176
- * @desc The particle's behaviours array
177
- * @type {array}
178
- */
179
-
180
- this.behaviours = [];
181
- /**
182
- * @desc The particle's transform collection
183
- * @type {object}
184
- */
185
-
186
- this.transform = {};
187
- /**
188
- * @desc The particle's color store
189
- * @type {object}
190
- */
191
-
192
- this.color = {
193
- r: 0,
194
- g: 0,
195
- b: 0
196
- };
197
- /**
198
- * @desc The particle's rotation
199
- * @type {number}
200
- */
201
-
202
- this.rotation = new Vector3D();
203
- /**
204
- * @desc The particle's distance to the camera, only set by the GPURenderer for depth sorting purposes.
205
- * @type {number}
206
- */
207
-
208
- this.distanceToCamera = 0; // override constructor props with passed properties.
209
-
210
- Util.setPrototypeByObj(this, properties);
211
- }
212
- /**
213
- * Gets the particle's current direction.
214
- *
215
- * @return {number}
216
- */
217
-
218
-
219
- getDirection() {
220
- return Math.atan2(this.velocity.x, -this.velocity.y) * (180 / PI);
221
- }
222
- /**
223
- * Resets the particle's default properties and clear's its particle's position,
224
- * velocity, acceleration, color and rotation. Also destroy's the particle's
225
- * transform collection & removes all behaviours.
226
- *
227
- * @return {Particle}
228
- */
229
-
230
-
231
- reset() {
232
- this.life = DEFAULT_LIFE;
233
- this.age = DEFAULT_AGE;
234
- this.energy = DEFAULT_ENERGY;
235
- this.dead = DEFAULT_DEAD;
236
- this.sleep = DEFAULT_SLEEP;
237
- this.body = DEFAULT_BODY;
238
- this.parent = DEFAULT_PARENT;
239
- this.mass = DEFAULT_MASS;
240
- this.radius = DEFAULT_RADIUS;
241
- this.alpha = DEFAULT_ALPHA;
242
- this.scale = DEFAULT_SCALE;
243
- this.useColor = DEFAULT_USE_COLOR;
244
- this.useAlpha = DEFAULT_USE_ALPHA;
245
- this.easing = DEFAULT_EASING;
246
- this.position.set(0, 0, 0);
247
- this.velocity.set(0, 0, 0);
248
- this.acceleration.set(0, 0, 0);
249
- this.old.position.set(0, 0, 0);
250
- this.old.velocity.set(0, 0, 0);
251
- this.old.acceleration.set(0, 0, 0);
252
- this.color.r = 0;
253
- this.color.g = 0;
254
- this.color.b = 0;
255
- this.rotation.clear();
256
- Util.destroyObject(this.transform);
257
- this.removeAllBehaviours();
258
- return this;
259
- }
260
- /**
261
- * Updates the particle's properties by applying each behaviour to the particle.
262
- * Will also update the particle's energy, unless it's age is greater than it's life
263
- * in which case it will be destroyed.
264
- *
265
- * @param {number} time - Integration time
266
- * @param {integer} index - Particle index
267
- * @return void
268
- */
269
-
270
-
271
- update(time, index) {
272
- if (!this.sleep) {
273
- this.age += time;
274
- let i = this.behaviours.length;
275
-
276
- while (i--) {
277
- let behaviour = this.behaviours[i]; //behaviour &&
278
-
279
- behaviour.applyBehaviour(this, time, index);
280
- }
281
- }
282
-
283
- if (this.age >= this.life) {
284
- this.destroy();
285
- } else {
286
- const scale = this.easing(this.age / this.life);
287
- this.energy = Math.max(1 - scale, 0);
288
- }
289
- }
290
- /**
291
- * Adds a behaviour to the particle.
292
- *
293
- * @param {Behaviour} behaviour - The behaviour to add to the particle
294
- * @return void
295
- */
296
-
297
-
298
- addBehaviour(behaviour) {
299
- this.behaviours.push(behaviour);
300
- behaviour.initialize(this);
301
- }
302
- /**
303
- * Adds multiple behaviours to the particle.
304
- *
305
- * @param {array<Behaviour>} behaviours - An array of behaviours to add to the particle
306
- * @return void
307
- */
308
-
309
-
310
- addBehaviours(behaviours) {
311
- let i = behaviours.length;
312
-
313
- while (i--) {
314
- this.addBehaviour(behaviours[i]);
315
- }
316
- }
317
- /**
318
- * Removes the behaviour from the particle.
319
- *
320
- * @param {Behaviour} behaviour - The behaviour to remove from the particle
321
- * @return void
322
- */
323
-
324
-
325
- removeBehaviour(behaviour) {
326
- const index = this.behaviours.indexOf(behaviour);
327
-
328
- if (index > -1) {
329
- this.behaviours.splice(index, 1);
330
- }
331
- }
332
- /**
333
- * Removes all behaviours from the particle.
334
- *
335
- * @return void
336
- */
337
-
338
-
339
- removeAllBehaviours() {
340
- Util.destroyArray(this.behaviours);
341
- }
342
- /**
343
- * Destroys the particle.
344
- *
345
- * @return void
346
- */
347
-
348
-
349
- destroy() {
350
- this.removeAllBehaviours();
351
- this.energy = 0;
352
- this.dead = true;
353
- this.parent = null;
354
- }
355
-
356
- }
357
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL1BhcnRpY2xlLmpzIl0sIm5hbWVzIjpbIkRFRkFVTFRfQUdFIiwiREVGQVVMVF9BTFBIQSIsIkRFRkFVTFRfQk9EWSIsIkRFRkFVTFRfREVBRCIsIkRFRkFVTFRfRUFTSU5HIiwiREVGQVVMVF9FTkVSR1kiLCJERUZBVUxUX0xJRkUiLCJERUZBVUxUX01BU1MiLCJERUZBVUxUX1BBUkVOVCIsIkRFRkFVTFRfUkFESVVTIiwiREVGQVVMVF9TQ0FMRSIsIkRFRkFVTFRfU0xFRVAiLCJERUZBVUxUX1VTRV9BTFBIQSIsIkRFRkFVTFRfVVNFX0NPTE9SIiwiVXRpbCIsInVpZCIsIlBJIiwiVmVjdG9yM0QiLCJDT1JFX1RZUEVfUEFSVElDTEUiLCJ0eXBlIiwiUGFydGljbGUiLCJjb25zdHJ1Y3RvciIsInByb3BlcnRpZXMiLCJpZCIsImxpZmUiLCJhZ2UiLCJlbmVyZ3kiLCJkZWFkIiwic2xlZXAiLCJib2R5IiwicGFyZW50IiwibWFzcyIsInJhZGl1cyIsImFscGhhIiwic2NhbGUiLCJ1c2VDb2xvciIsInVzZUFscGhhIiwiZWFzaW5nIiwicG9zaXRpb24iLCJ2ZWxvY2l0eSIsImFjY2VsZXJhdGlvbiIsIm9sZCIsImNsb25lIiwiYmVoYXZpb3VycyIsInRyYW5zZm9ybSIsImNvbG9yIiwiciIsImciLCJiIiwicm90YXRpb24iLCJkaXN0YW5jZVRvQ2FtZXJhIiwic2V0UHJvdG90eXBlQnlPYmoiLCJnZXREaXJlY3Rpb24iLCJNYXRoIiwiYXRhbjIiLCJ4IiwieSIsInJlc2V0Iiwic2V0IiwiY2xlYXIiLCJkZXN0cm95T2JqZWN0IiwicmVtb3ZlQWxsQmVoYXZpb3VycyIsInVwZGF0ZSIsInRpbWUiLCJpbmRleCIsImkiLCJsZW5ndGgiLCJiZWhhdmlvdXIiLCJhcHBseUJlaGF2aW91ciIsImRlc3Ryb3kiLCJtYXgiLCJhZGRCZWhhdmlvdXIiLCJwdXNoIiwiaW5pdGlhbGl6ZSIsImFkZEJlaGF2aW91cnMiLCJyZW1vdmVCZWhh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VUFBVSxDQUFDc0IsQ0FBRCxDQUE1QjtBQUNEO0FBQ0Y7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNFVSxFQUFBQSxlQUFlLENBQUNSLFNBQUQsRUFBWTtBQUN6QixVQUFNSCxLQUFLLEdBQUcsS0FBS3JCLFVBQUwsQ0FBZ0JpQyxPQUFoQixDQUF3QlQsU0FBeEIsQ0FBZDs7QUFFQSxRQUFJSCxLQUFLLEdBQUcsQ0FBQyxDQUFiLEVBQWdCO0FBQ2QsV0FBS3JCLFVBQUwsQ0FBZ0JrQyxNQUFoQixDQUF1QmIsS0FBdkIsRUFBOEIsQ0FBOUI7QUFDRDtBQUNGO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0VILEVBQUFBLG1CQUFtQixHQUFHO0FBQ3BCL0MsSUFBQUEsSUFBSSxDQUFDZ0UsWUFBTCxDQUFrQixLQUFLbkMsVUFBdkI7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7OztBQUNFMEIsRUFBQUEsT0FBTyxHQUFHO0FBQ1IsU0FBS1IsbUJBQUw7QUFDQSxTQUFLbkMsTUFBTCxHQUFjLENBQWQ7QUFDQSxTQUFLQyxJQUFMLEdBQVksSUFBWjtBQUNBLFNBQUtHLE1BQUwsR0FBYyxJQUFkO0FBQ0Q7O0FBeFQyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERFRkFVTFRfQUdFLFxuICBERUZBVUxUX0FMUEhBLFxuICBERUZBVUxUX0JPRFksXG4gIERFRkFVTFRfREVBRCxcbiAgREVGQVVMVF9FQVNJTkcsXG4gIERFRkFVTFRfRU5FUkdZLFxuICBERUZBVUxUX0xJRkUsXG4gIERFRkFVTFRfTUFTUyxcbiAgREVGQVVMVF9QQVJFTlQsXG4gIERFRkFVTFRfUkFESVVTLFxuICBERUZBVUxUX1NDQUxFLFxuICBERUZBVUxUX1NMRUVQLFxuICBERUZBVUxUX1VTRV9BTFBIQSxcbiAgREVGQVVMVF9VU0VfQ09MT1IsXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFV0aWwsIHVpZCB9IGZyb20gJy4uL3V0aWxzJztcblxuaW1wb3J0IHsgUEkgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVmVjdG9yM0QgfSBmcm9tICcuLi9tYXRoJztcbmltcG9ydCB7IENPUkVfVFlQRV9QQVJUSUNMRSBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQSBQYXJ0aWNsZSBpcyBhbiBvYmplY3QgdGhhdCBpcyBlbWl0dGVkIGJ5IGFuIGVtaXR0ZXIuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJ0aWNsZSB7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgUGFydGljbGUgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wZXJ0aWVzIC0gVGhlIHByb3BlcnRpZXMgdG8gaW5zdGFudGlhdGUgdGhlIHBhcnRpY2xlIHdpdGhcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IHByb3BlcnRpZXMubGlmZSAtIFRoZSBwYXJ0aWNsZSdzIGxpZmVcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IHByb3BlcnRpZXMuYWdlIC0gVGhlIHBhcnRpY2xlJ3MgYWdlXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBwcm9wZXJ0aWVzLmVuZXJneSAtIFRoZSBwYXJ0aWNsZSdzIGVuZXJneSBsb3NzXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcHJvcGVydGllcy5kZWFkIC0gRGV0ZXJtaW5lcyBpZiB0aGUgcGFydGljbGUgaXMgZGVhZCBvciBub3RcbiAgICogQHByb3BlcnR5IHtib29sZWFufSBwcm9wZXJ0aWVzLnNsZWVwIC0gRGV0ZXJtaW5lcyBpZiB0aGUgcGFydGljbGUgaXMgc2xlZXBpbmcgb3Igbm90XG4gICAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBwcm9wZXJ0aWVzLnRhcmdldCAtIFRoZSBwYXJ0aWNsZSdzIHRhcmdldFxuICAgKiBAcHJvcGVydHkge29iamVjdH0gcHJvcGVydGllcy5ib2R5IC0gVGhlIHBhcnRpY2xlJ3MgYm9keVxuICAgKiBAcHJvcGVydHkge251bWJlcn0gcHJvcGVydGllcy5tYXNzIC0gVGhlIHBhcnRpY2xlJ3MgbWFzc1xuICAgKiBAcHJvcGVydHkge251bWJlcn0gcHJvcGVydGllcy5yYWRpdXMgLSBUaGUgcGFydGljbGUncyByYWRpdXNcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IHByb3BlcnRpZXMuYWxwaGEgLSBUaGUgcGFydGljbGUncyBhbHBoYVxuICAgKiBAcHJvcGVydHkge251bWJlcn0gcHJvcGVydGllcy5zY2FsZSAtIFRoZSBwYXJ0aWNsZSdzIHNjYWxlXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBwcm9wZXJ0aWVzLnJvdGF0aW9uIC0gVGhlIHBhcnRpY2xlJ3Mgcm90YXRpb25cbiAgICogQHByb3BlcnR5IHtzdHJpbmd8bnVtYmVyfSBwcm9wZXJ0aWVzLmNvbG9yIC0gVGhlIHBhcnRpY2xlJ3MgY29sb3JcbiAgICogQHByb3BlcnR5IHtmdW5jdGlvbn0gcHJvcGVydGllcy5lYXNpbmcgLSBUaGUgcGFydGljbGUncyBlYXNpbmdcbiAgICogQHByb3BlcnR5IHtWZWN0b3IzRH0gcHJvcGVydGllcy5wb3NpdGlvbiAtIFRoZSBwYXJ0aWNsZSdzIHBvc2l0aW9uXG4gICAqIEBwcm9wZXJ0eSB7VmVjdG9yM0R9IHByb3BlcnRpZXMudmVsb2NpdHkgLSBUaGUgcGFydGljbGUncyB2ZWxvY2l0eVxuICAgKiBAcHJvcGVydHkge1ZlY3RvcjNEfSBwcm9wZXJ0aWVzLmFjY2VsZXJhdGlvbiAtIFRoZSBwYXJ0aWNsZSdzIGFjY2VsZXJhdGlvblxuICAgKiBAcHJvcGVydHkge2FycmF5fSBwcm9wZXJ0aWVzLmJlaGF2aW91cnMgLSBUaGUgcGFydGljbGUncyBiZWhhdmlvdXJzIGFycmF5XG4gICAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBwcm9wZXJ0aWVzLnRyYW5zZm9ybSAtIFRoZSBwYXJ0aWNsZSdzIHRyYW5zZm9ybSBjb2xsZWN0aW9uXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcGVydGllcykge1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBwYXJ0aWNsZSdzIHVuaXF1ZSBpZFxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5pZCA9IGBwYXJ0aWNsZS0ke3VpZCgpfWA7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgY2xhc3MgdHlwZS5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHBhcnRpY2xlJ3MgbGlmZVxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5saWZlID0gREVGQVVMVF9MSUZFO1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBwYXJ0aWNsZSdzIGFnZVxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5hZ2UgPSBERUZBVUxUX0FHRTtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGUncyBlbmVyZ3kgbG9zc1xuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5lbmVyZ3kgPSBERUZBVUxUX0VORVJHWTtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBEZXRlcm1pbmVzIGlmIHRoZSBwYXJ0aWNsZSBpcyBkZWFkIG9yIG5vdFxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5kZWFkID0gREVGQVVMVF9ERUFEO1xuICAgIC8qKlxuICAgICAqIEBkZXNjIERldGVybWluZXMgaWYgdGhlIHBhcnRpY2xlIGlzIHNsZWVwaW5nIG9yIG5vdFxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5zbGVlcCA9IERFRkFVTFRfU0xFRVA7XG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHBhcnRpY2xlJ3MgYm9keVxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICovXG4gICAgdGhpcy5ib2R5ID0gREVGQVVMVF9CT0RZO1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBwYXJ0aWNsZSdzIHBhcmVudFxuICAgICAqIEB0eXBlIHs/RW1pdHRlcn1cbiAgICAgKi9cbiAgICB0aGlzLnBhcmVudCA9IERFRkFVTFRfUEFSRU5UO1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBwYXJ0aWNsZSdzIG1hc3NcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMubWFzcyA9IERFRkFVTFRfTUFTUztcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGUncyByYWRpdXNcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMucmFkaXVzID0gREVGQVVMVF9SQURJVVM7XG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHBhcnRpY2xlJ3MgYWxwaGFcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMuYWxwaGEgPSBERUZBVUxUX0FMUEhBO1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBwYXJ0aWNsZSdzIHNjYWxlXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLnNjYWxlID0gREVGQVVMVF9TQ0FMRTtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlIGNvbG9yIG9yIG5vdFxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMudXNlQ29sb3IgPSBERUZBVUxUX1VTRV9DT0xPUjtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlIGFscGhhIG9yIG5vdFxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMudXNlQWxwaGEgPSBERUZBVUxUX1VTRV9BTFBIQTtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGUncyBlYXNpbmdcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMuZWFzaW5nID0gREVGQVVMVF9FQVNJTkc7XG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHBhcnRpY2xlJ3MgcG9zaXRpb25cbiAgICAgKiBAdHlwZSB7VmVjdG9yM0R9XG4gICAgICovXG4gICAgdGhpcy5wb3NpdGlvbiA9IG5ldyBWZWN0b3IzRCgpO1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBwYXJ0aWNsZSdzIHZlbG9jaXR5XG4gICAgICogQHR5cGUge1ZlY3RvcjNEfVxuICAgICAqL1xuICAgIHRoaXMudmVsb2NpdHkgPSBuZXcgVmVjdG9yM0QoKTtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGUncyBhY2NlbGVyYXRpb25cbiAgICAgKiBAdHlwZSB7VmVjdG9yM0R9XG4gICAgICovXG4gICAgdGhpcy5hY2NlbGVyYXRpb24gPSBuZXcgVmVjdG9yM0QoKTtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGUncyBsYXN0IHBvc2l0aW9uLCB2ZWxvY2l0eSBhbmQgYWNjZWxlcmF0aW9uXG4gICAgICogQHR5cGUge1ZlY3RvcjNEfVxuICAgICAqL1xuICAgIHRoaXMub2xkID0ge307XG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHBhcnRpY2xlJ3Mgb2xkIHBvc2l0aW9uXG4gICAgICogQHR5cGUge1ZlY3RvcjNEfVxuICAgICAqL1xuICAgIHRoaXMub2xkLnBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbi5jbG9uZSgpO1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBwYXJ0aWNsZSdzIG9sZCB2ZWxvY2l0eVxuICAgICAqIEB0eXBlIHtWZWN0b3IzRH1cbiAgICAgKi9cbiAgICB0aGlzLm9sZC52ZWxvY2l0eSA9IHRoaXMudmVsb2NpdHkuY2xvbmUoKTtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGUncyBvbGQgYWNjZWxlcmF0aW9uXG4gICAgICogQHR5cGUge1ZlY3RvcjNEfVxuICAgICAqL1xuICAgIHRoaXMub2xkLmFjY2VsZXJhdGlvbiA9IHRoaXMuYWNjZWxlcmF0aW9uLmNsb25lKCk7XG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHBhcnRpY2xlJ3MgYmVoYXZpb3VycyBhcnJheVxuICAgICAqIEB0eXBlIHthcnJheX1cbiAgICAgKi9cbiAgICB0aGlzLmJlaGF2aW91cnMgPSBbXTtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGUncyB0cmFuc2Zvcm0gY29sbGVjdGlvblxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICovXG4gICAgdGhpcy50cmFuc2Zvcm0gPSB7fTtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGUncyBjb2xvciBzdG9yZVxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICovXG4gICAgdGhpcy5jb2xvciA9IHsgcjogMCwgZzogMCwgYjogMCB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBwYXJ0aWNsZSdzIHJvdGF0aW9uXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLnJvdGF0aW9uID0gbmV3IFZlY3RvcjNEKCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcGFydGljbGUncyBkaXN0YW5jZSB0byB0aGUgY2FtZXJhLCBvbmx5IHNldCBieSB0aGUgR1BVUmVuZGVyZXIgZm9yIGRlcHRoIHNvcnRpbmcgcHVycG9zZXMuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmRpc3RhbmNlVG9DYW1lcmEgPSAwO1xuXG4gICAgLy8gb3ZlcnJpZGUgY29uc3RydWN0b3IgcHJvcHMgd2l0aCBwYXNzZWQgcHJvcGVydGllcy5cbiAgICBVdGlsLnNldFByb3RvdHlwZUJ5T2JqKHRoaXMsIHByb3BlcnRpZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHBhcnRpY2xlJ3MgY3VycmVudCBkaXJlY3Rpb24uXG4gICAqXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIGdldERpcmVjdGlvbigpIHtcbiAgICByZXR1cm4gTWF0aC5hdGFuMih0aGlzLnZlbG9jaXR5LngsIC10aGlzLnZlbG9jaXR5LnkpICogKDE4MCAvIFBJKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIHBhcnRpY2xlJ3MgZGVmYXVsdCBwcm9wZXJ0aWVzIGFuZCBjbGVhcidzIGl0cyBwYXJ0aWNsZSdzIHBvc2l0aW9uLFxuICAgKiB2ZWxvY2l0eSwgYWNjZWxlcmF0aW9uLCBjb2xvciBhbmQgcm90YXRpb24uIEFsc28gZGVzdHJveSdzIHRoZSBwYXJ0aWNsZSdzXG4gICAqIHRyYW5zZm9ybSBjb2xsZWN0aW9uICYgcmVtb3ZlcyBhbGwgYmVoYXZpb3Vycy5cbiAgICpcbiAgICogQHJldHVybiB7UGFydGljbGV9XG4gICAqL1xuICByZXNldCgpIHtcbiAgICB0aGlzLmxpZmUgPSBERUZBVUxUX0xJRkU7XG4gICAgdGhpcy5hZ2UgPSBERUZBVUxUX0FHRTtcbiAgICB0aGlzLmVuZXJneSA9IERFRkFVTFRfRU5FUkdZO1xuICAgIHRoaXMuZGVhZCA9IERFRkFVTFRfREVBRDtcbiAgICB0aGlzLnNsZWVwID0gREVGQVVMVF9TTEVFUDtcbiAgICB0aGlzLmJvZHkgPSBERUZBVUxUX0JPRFk7XG4gICAgdGhpcy5wYXJlbnQgPSBERUZBVUxUX1BBUkVOVDtcbiAgICB0aGlzLm1hc3MgPSBERUZBVUxUX01BU1M7XG4gICAgdGhpcy5yYWRpdXMgPSBERUZBVUxUX1JBRElVUztcbiAgICB0aGlzLmFscGhhID0gREVGQVVMVF9BTFBIQTtcbiAgICB0aGlzLnNjYWxlID0gREVGQVVMVF9TQ0FMRTtcbiAgICB0aGlzLnVzZUNvbG9yID0gREVGQVVMVF9VU0VfQ09MT1I7XG4gICAgdGhpcy51c2VBbHBoYSA9IERFRkFVTFRfVVNFX0FMUEhBO1xuICAgIHRoaXMuZWFzaW5nID0gREVGQVVMVF9FQVNJTkc7XG4gICAgdGhpcy5wb3NpdGlvbi5zZXQoMCwgMCwgMCk7XG4gICAgdGhpcy52ZWxvY2l0eS5zZXQoMCwgMCwgMCk7XG4gICAgdGhpcy5hY2NlbGVyYXRpb24uc2V0KDAsIDAsIDApO1xuICAgIHRoaXMub2xkLnBvc2l0aW9uLnNldCgwLCAwLCAwKTtcbiAgICB0aGlzLm9sZC52ZWxvY2l0eS5zZXQoMCwgMCwgMCk7XG4gICAgdGhpcy5vbGQuYWNjZWxlcmF0aW9uLnNldCgwLCAwLCAwKTtcbiAgICB0aGlzLmNvbG9yLnIgPSAwO1xuICAgIHRoaXMuY29sb3IuZyA9IDA7XG4gICAgdGhpcy5jb2xvci5iID0gMDtcblxuICAgIHRoaXMucm90YXRpb24uY2xlYXIoKTtcbiAgICBVdGlsLmRlc3Ryb3lPYmplY3QodGhpcy50cmFuc2Zvcm0pO1xuICAgIHRoaXMucmVtb3ZlQWxsQmVoYXZpb3VycygpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcGFydGljbGUncyBwcm9wZXJ0aWVzIGJ5IGFwcGx5aW5nIGVhY2ggYmVoYXZpb3VyIHRvIHRoZSBwYXJ0aWNsZS5cbiAgICogV2lsbCBhbHNvIHVwZGF0ZSB0aGUgcGFydGljbGUncyBlbmVyZ3ksIHVubGVzcyBpdCdzIGFnZSBpcyBncmVhdGVyIHRoYW4gaXQncyBsaWZlXG4gICAqIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBiZSBkZXN0cm95ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gSW50ZWdyYXRpb24gdGltZVxuICAgKiBAcGFyYW0ge2ludGVnZXJ9IGluZGV4IC0gUGFydGljbGUgaW5kZXhcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICB1cGRhdGUodGltZSwgaW5kZXgpIHtcbiAgICBpZiAoIXRoaXMuc2xlZXApIHtcbiAgICAgIHRoaXMuYWdlICs9IHRpbWU7XG5cbiAgICAgIGxldCBpID0gdGhpcy5iZWhhdmlvdXJzLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICBsZXQgYmVoYXZpb3VyID0gdGhpcy5iZWhhdmlvdXJzW2ldO1xuXG4gICAgICAgIC8vYmVoYXZpb3VyICYmIFxuICAgICAgICBiZWhhdmlvdXIuYXBwbHlCZWhhdmlvdXIodGhpcywgdGltZSwgaW5kZXgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmFnZSA+PSB0aGlzLmxpZmUpIHtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzY2FsZSA9IHRoaXMuZWFzaW5nKHRoaXMuYWdlIC8gdGhpcy5saWZlKTtcblxuICAgICAgdGhpcy5lbmVyZ3kgPSBNYXRoLm1heCgxIC0gc2NhbGUsIDApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgYmVoYXZpb3VyIHRvIHRoZSBwYXJ0aWNsZS5cbiAgICpcbiAgICogQHBhcmFtIHtCZWhhdmlvdXJ9IGJlaGF2aW91ciAtIFRoZSBiZWhhdmlvdXIgdG8gYWRkIHRvIHRoZSBwYXJ0aWNsZVxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGFkZEJlaGF2aW91cihiZWhhdmlvdXIpIHtcbiAgICB0aGlzLmJlaGF2aW91cnMucHVzaChiZWhhdmlvdXIpO1xuICAgIGJlaGF2aW91ci5pbml0aWFsaXplKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgbXVsdGlwbGUgYmVoYXZpb3VycyB0byB0aGUgcGFydGljbGUuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXk8QmVoYXZpb3VyPn0gYmVoYXZpb3VycyAtIEFuIGFycmF5IG9mIGJlaGF2aW91cnMgdG8gYWRkIHRvIHRoZSBwYXJ0aWNsZVxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGFkZEJlaGF2aW91cnMoYmVoYXZpb3Vycykge1xuICAgIGxldCBpID0gYmVoYXZpb3Vycy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB0aGlzLmFkZEJlaGF2aW91cihiZWhhdmlvdXJzW2ldKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgYmVoYXZpb3VyIGZyb20gdGhlIHBhcnRpY2xlLlxuICAgKlxuICAgKiBAcGFyYW0ge0JlaGF2aW91cn0gYmVoYXZpb3VyIC0gVGhlIGJlaGF2aW91ciB0byByZW1vdmUgZnJvbSB0aGUgcGFydGljbGVcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICByZW1vdmVCZWhhdmlvdXIoYmVoYXZpb3VyKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmJlaGF2aW91cnMuaW5kZXhPZihiZWhhdmlvdXIpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuYmVoYXZpb3Vycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBiZWhhdmlvdXJzIGZyb20gdGhlIHBhcnRpY2xlLlxuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIHJlbW92ZUFsbEJlaGF2aW91cnMoKSB7XG4gICAgVXRpbC5kZXN0cm95QXJyYXkodGhpcy5iZWhhdmlvdXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgcGFydGljbGUuXG4gICAqXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbW92ZUFsbEJlaGF2aW91cnMoKTtcbiAgICB0aGlzLmVuZXJneSA9IDA7XG4gICAgdGhpcy5kZWFkID0gdHJ1ZTtcbiAgICB0aGlzLnBhcmVudCA9IG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -1,161 +0,0 @@
1
- import PUID from '../utils/PUID';
2
- import { CORE_TYPE_POOL as type } from './types';
3
- /**
4
- * An object pool implementation. Used for pooling objects to avoid unnecessary
5
- * garbage collection.
6
- *
7
- */
8
-
9
- export default class Pool {
10
- /**
11
- * Constructs a Pool instance.
12
- *
13
- * @return void
14
- */
15
- constructor() {
16
- /**
17
- * @desc The class type.
18
- * @type {string}
19
- */
20
- this.type = type;
21
- /**
22
- * @desc Incrementing id that keeps a count of the number of objects created
23
- * @type {integer}
24
- */
25
-
26
- this.cID = 0;
27
- /**
28
- * @desc Map of pools in the format of PUID<String>: pool<Array>
29
- * @type {object}
30
- */
31
-
32
- this.list = {};
33
- }
34
- /**
35
- * Attempts to create a new object either by creating a new instance or calling its
36
- * clone method.
37
- *
38
- * TODO COVERAGE - for the constructorArgs
39
- * @param {function|object} functionOrObject - The object to instantiate or clone
40
- * @return {object|undefined}
41
- */
42
-
43
-
44
- create(functionOrObject, ...constructorArgs) {
45
- if (!this.canCreateNewObject(functionOrObject)) {
46
- throw new Error('The pool is unable to create or clone the object supplied');
47
- }
48
-
49
- this.cID++;
50
-
51
- if (this.canInstantiateObject(functionOrObject)) {
52
- return new functionOrObject(...constructorArgs);
53
- }
54
-
55
- if (this.canCloneObject(functionOrObject)) {
56
- return functionOrObject.clone();
57
- }
58
- }
59
- /**
60
- * Determines if the object is able to be instantiated or not.
61
- *
62
- * @param {object} object - The object to check
63
- * @return {boolean}
64
- */
65
-
66
-
67
- canInstantiateObject(object) {
68
- return typeof object === 'function';
69
- }
70
- /**
71
- * Determines if the object is able to be cloned or not.
72
- *
73
- * @param {object} object - The object to check
74
- * @return {boolean}
75
- */
76
-
77
-
78
- canCloneObject(object) {
79
- return object.clone && typeof object.clone === 'function';
80
- }
81
- /**
82
- * Determines if a new object is able to be created.
83
- *
84
- * @param {object} object - The object to check
85
- * @return {boolean}
86
- */
87
-
88
-
89
- canCreateNewObject(object) {
90
- return this.canInstantiateObject(object) || this.canCloneObject(object) ? true : false;
91
- }
92
- /**
93
- * Gets a count of all objects in the pool.
94
- *
95
- * @return {integer}
96
- */
97
-
98
-
99
- getCount() {
100
- var count = 0;
101
-
102
- for (var id in this.list) count += this.list[id].length;
103
-
104
- return count++;
105
- }
106
- /**
107
- * Gets an object either by creating a new one or retrieving it from the pool.
108
- *
109
- * @param {function|object} obj - The function or object to get
110
- * @param {array} args - The args to pass to the function on creation
111
- * @return {object}
112
- */
113
-
114
-
115
- get(obj, ...args) {
116
- var p,
117
- puid = obj.__puid || PUID.id(obj);
118
- if (this.list[puid] && this.list[puid].length > 0) p = this.list[puid].pop();else p = this.create(obj, ...args);
119
- p.__puid = obj.__puid || puid;
120
- return p;
121
- }
122
- /**
123
- * Pushes an object into the pool.
124
- *
125
- * @param {object} obj - The object to expire
126
- * @return {integer}
127
- */
128
-
129
-
130
- expire(obj) {
131
- return this._getList(obj.__puid).push(obj);
132
- }
133
- /**
134
- * Destroys all pools.
135
- *
136
- * @return void
137
- */
138
-
139
-
140
- destroy() {
141
- for (var id in this.list) {
142
- this.list[id].length = 0;
143
- delete this.list[id];
144
- }
145
- }
146
- /**
147
- * Gets the pool mapped to the UID.
148
- *
149
- * @param {string} uid - The pool uid
150
- * @return {array}
151
- */
152
-
153
-
154
- _getList(uid) {
155
- uid = uid || 'default';
156
- if (!this.list[uid]) this.list[uid] = [];
157
- return this.list[uid];
158
- }
159
-
160
- }
161
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL1Bvb2wuanMiXSwibmFtZXMiOlsiUFVJRCIsIkNPUkVfVFlQRV9QT09MIiwidHlwZSIsIlBvb2wiLCJjb25zdHJ1Y3RvciIsImNJRCIsImxpc3QiLCJjcmVhdGUiLCJmdW5jdGlvbk9yT2JqZWN0IiwiY29uc3RydWN0b3JBcmdzIiwiY2FuQ3JlYXRlTmV3T2JqZWN0IiwiRXJyb3IiLCJjYW5JbnN0YW50aWF0ZU9iamVjdCIsImNhbkNsb25lT2JqZWN0IiwiY2xvbmUiLCJvYmplY3QiLCJnZXRDb3VudCIsImNvdW50IiwiaWQiLCJsZW5ndGgiLCJnZXQiLCJvYmoiLCJhcmdzIiwicCIsInB1aWQiLCJfX3B1aWQiLCJwb3AiLCJleHBpcmUiLCJfZ2V0TGlzdCIsInB1c2giLCJkZXN0cm95IiwidWlkIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxJQUFQLE1BQWlCLGVBQWpCO0FBQ0EsU0FBU0MsY0FBYyxJQUFJQyxJQUEzQixRQUF1QyxTQUF2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsZUFBZSxNQUFNQyxJQUFOLENBQVc7QUFDeEI7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNFQyxFQUFBQSxXQUFXLEdBQUc7QUFDWjtBQUNKO0FBQ0E7QUFDQTtBQUNJLFNBQUtGLElBQUwsR0FBWUEsSUFBWjtBQUNBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtHLEdBQUwsR0FBVyxDQUFYO0FBRUE7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS0MsSUFBTCxHQUFZLEVBQVo7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNFQyxFQUFBQSxNQUFNLENBQUNDLGdCQUFELEVBQW1CLEdBQUdDLGVBQXRCLEVBQXVDO0FBQzNDLFFBQUksQ0FBQyxLQUFLQyxrQkFBTCxDQUF3QkYsZ0JBQXhCLENBQUwsRUFBZ0Q7QUFDOUMsWUFBTSxJQUFJRyxLQUFKLENBQ0osMkRBREksQ0FBTjtBQUdEOztB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QUFpQixFQUFqQjtBQUVyQixXQUFPLEtBQUt6QixJQUFMLENBQVV5QixHQUFWLENBQVA7QUFDRDs7QUFySnVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFBVSUQgZnJvbSAnLi4vdXRpbHMvUFVJRCc7XG5pbXBvcnQgeyBDT1JFX1RZUEVfUE9PTCBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG4vKipcbiAqIEFuIG9iamVjdCBwb29sIGltcGxlbWVudGF0aW9uLiBVc2VkIGZvciBwb29saW5nIG9iamVjdHMgdG8gYXZvaWQgdW5uZWNlc3NhcnlcbiAqIGdhcmJhZ2UgY29sbGVjdGlvbi5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvb2wge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhIFBvb2wgaW5zdGFuY2UuXG4gICAqXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGNsYXNzIHR5cGUuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIC8qKlxuICAgICAqIEBkZXNjIEluY3JlbWVudGluZyBpZCB0aGF0IGtlZXBzIGEgY291bnQgb2YgdGhlIG51bWJlciBvZiBvYmplY3RzIGNyZWF0ZWRcbiAgICAgKiBAdHlwZSB7aW50ZWdlcn1cbiAgICAgKi9cbiAgICB0aGlzLmNJRCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBNYXAgb2YgcG9vbHMgaW4gdGhlIGZvcm1hdCBvZiBQVUlEPFN0cmluZz46IHBvb2w8QXJyYXk+XG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKi9cbiAgICB0aGlzLmxpc3QgPSB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0cyB0byBjcmVhdGUgYSBuZXcgb2JqZWN0IGVpdGhlciBieSBjcmVhdGluZyBhIG5ldyBpbnN0YW5jZSBvciBjYWxsaW5nIGl0c1xuICAgKiBjbG9uZSBtZXRob2QuXG4gICAqXG4gICAqIFRPRE8gQ09WRVJBR0UgLSBmb3IgdGhlIGNvbnN0cnVjdG9yQXJnc1xuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufG9iamVjdH0gZnVuY3Rpb25Pck9iamVjdCAtIFRoZSBvYmplY3QgdG8gaW5zdGFudGlhdGUgb3IgY2xvbmVcbiAgICogQHJldHVybiB7b2JqZWN0fHVuZGVmaW5lZH1cbiAgICovXG4gIGNyZWF0ZShmdW5jdGlvbk9yT2JqZWN0LCAuLi5jb25zdHJ1Y3RvckFyZ3MpIHtcbiAgICBpZiAoIXRoaXMuY2FuQ3JlYXRlTmV3T2JqZWN0KGZ1bmN0aW9uT3JPYmplY3QpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdUaGUgcG9vbCBpcyB1bmFibGUgdG8gY3JlYXRlIG9yIGNsb25lIHRoZSBvYmplY3Qgc3VwcGxpZWQnXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuY0lEKys7XG5cbiAgICBpZiAodGhpcy5jYW5JbnN0YW50aWF0ZU9iamVjdChmdW5jdGlvbk9yT2JqZWN0KSkge1xuICAgICAgcmV0dXJuIG5ldyBmdW5jdGlvbk9yT2JqZWN0KC4uLmNvbnN0cnVjdG9yQXJncyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2FuQ2xvbmVPYmplY3QoZnVuY3Rpb25Pck9iamVjdCkpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbk9yT2JqZWN0LmNsb25lKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIG9iamVjdCBpcyBhYmxlIHRvIGJlIGluc3RhbnRpYXRlZCBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvYmplY3QgLSBUaGUgb2JqZWN0IHRvIGNoZWNrXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBjYW5JbnN0YW50aWF0ZU9iamVjdChvYmplY3QpIHtcbiAgICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBvYmplY3QgaXMgYWJsZSB0byBiZSBjbG9uZWQgb3Igbm90LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gb2JqZWN0IC0gVGhlIG9iamVjdCB0byBjaGVja1xuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgY2FuQ2xvbmVPYmplY3Qob2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdC5jbG9uZSAmJiB0eXBlb2Ygb2JqZWN0LmNsb25lID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYSBuZXcgb2JqZWN0IGlzIGFibGUgdG8gYmUgY3JlYXRlZC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG9iamVjdCAtIFRoZSBvYmplY3QgdG8gY2hlY2tcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGNhbkNyZWF0ZU5ld09iamVjdChvYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy5jYW5JbnN0YW50aWF0ZU9iamVjdChvYmplY3QpIHx8IHRoaXMuY2FuQ2xvbmVPYmplY3Qob2JqZWN0KVxuICAgICAgPyB0cnVlXG4gICAgICA6IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBjb3VudCBvZiBhbGwgb2JqZWN0cyBpbiB0aGUgcG9vbC5cbiAgICpcbiAgICogQHJldHVybiB7aW50ZWdlcn1cbiAgICovXG4gIGdldENvdW50KCkge1xuICAgIHZhciBjb3VudCA9IDA7XG5cbiAgICBmb3IgKHZhciBpZCBpbiB0aGlzLmxpc3QpIGNvdW50ICs9IHRoaXMubGlzdFtpZF0ubGVuZ3RoO1xuXG4gICAgcmV0dXJuIGNvdW50Kys7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhbiBvYmplY3QgZWl0aGVyIGJ5IGNyZWF0aW5nIGEgbmV3IG9uZSBvciByZXRyaWV2aW5nIGl0IGZyb20gdGhlIHBvb2wuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb258b2JqZWN0fSBvYmogLSBUaGUgZnVuY3Rpb24gb3Igb2JqZWN0IHRvIGdldFxuICAgKiBAcGFyYW0ge2FycmF5fSBhcmdzIC0gVGhlIGFyZ3MgdG8gcGFzcyB0byB0aGUgZnVuY3Rpb24gb24gY3JlYXRpb25cbiAgICogQHJldHVybiB7b2JqZWN0fVxuICAgKi9cbiAgZ2V0KG9iaiwgLi4uYXJncykge1xuICAgIHZhciBwLFxuICAgICAgcHVpZCA9IG9iai5fX3B1aWQgfHwgUFVJRC5pZChvYmopO1xuXG4gICAgaWYgKHRoaXMubGlzdFtwdWlkXSAmJiB0aGlzLmxpc3RbcHVpZF0ubGVuZ3RoID4gMClcbiAgICAgIHAgPSB0aGlzLmxpc3RbcHVpZF0ucG9wKCk7XG4gICAgZWxzZSBwID0gdGhpcy5jcmVhdGUob2JqLCAuLi5hcmdzKTtcblxuICAgIHAuX19wdWlkID0gb2JqLl9fcHVpZCB8fCBwdWlkO1xuXG4gICAgcmV0dXJuIHA7XG4gIH1cblxuICAvKipcbiAgICogUHVzaGVzIGFuIG9iamVjdCBpbnRvIHRoZSBwb29sLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gb2JqIC0gVGhlIG9iamVjdCB0byBleHBpcmVcbiAgICogQHJldHVybiB7aW50ZWdlcn1cbiAgICovXG4gIGV4cGlyZShvYmopIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0TGlzdChvYmouX19wdWlkKS5wdXNoKG9iaik7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveXMgYWxsIHBvb2xzLlxuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgZm9yICh2YXIgaWQgaW4gdGhpcy5saXN0KSB7XG4gICAgICB0aGlzLmxpc3RbaWRdLmxlbmd0aCA9IDA7XG4gICAgICBkZWxldGUgdGhpcy5saXN0W2lkXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcG9vbCBtYXBwZWQgdG8gdGhlIFVJRC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVpZCAtIFRoZSBwb29sIHVpZFxuICAgKiBAcmV0dXJuIHthcnJheX1cbiAgICovXG4gIF9nZXRMaXN0KHVpZCkge1xuICAgIHVpZCA9IHVpZCB8fCAnZGVmYXVsdCc7XG4gICAgaWYgKCF0aGlzLmxpc3RbdWlkXSkgdGhpcy5saXN0W3VpZF0gPSBbXTtcblxuICAgIHJldHVybiB0aGlzLmxpc3RbdWlkXTtcbiAgfVxufVxuIl19