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,320 +0,0 @@
1
- import EventDispatcher, { EMITTER_ADDED, EMITTER_REMOVED, SYSTEM_UPDATE, SYSTEM_UPDATE_AFTER } from '../events';
2
- import { DEFAULT_SYSTEM_DELTA } from './constants';
3
- import Emitter from '../emitter/Emitter';
4
- import { INTEGRATION_TYPE_EULER } from '../math/constants';
5
- import { POOL_MAX } from '../constants';
6
- import Pool from './Pool';
7
- import fromJSON from './fromJSON';
8
- import fromJSONAsync from './fromJSONAsync';
9
- import { CORE_TYPE_SYSTEM as type } from './types';
10
- /**
11
- * The core of the three-system particle engine.
12
- * A System instance can contain multiple emitters, each with their own initializers
13
- * and behaviours.
14
- *
15
- */
16
-
17
- export default class System {
18
- /**
19
- * Constructs a System instance.
20
- *
21
- * @param {object} THREE - ThreeJs
22
- * @param {number} [preParticles=POOL_MAX] - The number of particles to start with
23
- * @param {string} [integrationType=INTEGRATION_TYPE_EULER] - The integration type to use
24
- * @return void
25
- */
26
- constructor(preParticles = POOL_MAX, integrationType = INTEGRATION_TYPE_EULER) {
27
- /**
28
- * @desc The class type.
29
- * @type {string}
30
- */
31
- this.type = type;
32
- /**
33
- * @desc Determines if the system can update or not. Set to false when destroying
34
- * to ensure that external calls to update do not throw errors.
35
- * @type {boolean}
36
- */
37
-
38
- this.canUpdate = true;
39
- /**
40
- * @desc The number of particles to start with.
41
- * @type {number}
42
- */
43
-
44
- this.preParticles = preParticles;
45
- /**
46
- * @desc The integration algorithm type to use.
47
- * @param {string}
48
- */
49
-
50
- this.integrationType = integrationType;
51
- /**
52
- * @desc The emitters in the particle system.
53
- * @type {array<Emitter>}
54
- */
55
-
56
- this.emitters = [];
57
- /**
58
- * @desc The renderers for the system.
59
- * @type {array<Renderer>}
60
- */
61
-
62
- this.renderers = [];
63
- /**
64
- * @desc A pool used to manage the internal system cache of objects
65
- * @type {Pool}
66
- */
67
-
68
- this.pool = new Pool();
69
- /**
70
- * @desc Internal event dispatcher
71
- * @type {EventDispatcher}
72
- */
73
-
74
- this.eventDispatcher = new EventDispatcher();
75
- }
76
- /**
77
- * Creates a System instance from a JSON object.
78
- *
79
- * @param {object} json - The JSON to create the System instance from
80
- * @param {object} THREE - The Web GL Api to use eg., THREE
81
- * @return {System}
82
- *
83
- * @deprecated use fromJSONAsync instead
84
- */
85
-
86
-
87
- static fromJSON(json, THREE) {
88
- return fromJSON(json, THREE, System, Emitter);
89
- }
90
- /**
91
- * Loads a System instance from JSON asynchronously. Ensures all textures are
92
- * fully loaded before resolving with the instantiated System instance.
93
- *
94
- * @param {object} json - The JSON to create the System instance from
95
- * @param {object} THREE - The Web GL Api to use eg., THREE
96
- * @param {?object} options - Optional config options
97
- * @return {Promise<System>}
98
- */
99
-
100
-
101
- static fromJSONAsync(json, THREE, options) {
102
- return fromJSONAsync(json, THREE, System, Emitter, options);
103
- }
104
- /**
105
- * Proxy method for the internal event dispatcher's dispatchEvent method.
106
- *
107
- * @param {string} event - The event to dispatch
108
- * @param {object<System|Emitter|Particle>} [target=this] - The event target
109
- */
110
-
111
-
112
- dispatch(event, target = this) {
113
- this.eventDispatcher.dispatchEvent(event, target);
114
- }
115
- /**
116
- * Adds a renderer to the System instance and initializes it.
117
- *
118
- * @param {Renderer} renderer - The renderer to add
119
- * @return {System}
120
- */
121
-
122
-
123
- addRenderer(renderer) {
124
- this.renderers.push(renderer);
125
- renderer.init(this);
126
- return this;
127
- }
128
- /**
129
- * Removes a renderer from the System instance.
130
- *
131
- * @param {Renderer} renderer
132
- * @return {System}
133
- */
134
-
135
-
136
- removeRenderer(renderer) {
137
- this.renderers.splice(this.renderers.indexOf(renderer), 1);
138
- renderer.remove(this);
139
- return this;
140
- }
141
- /**
142
- * Adds an emitter to the System instance.
143
- * Dispatches the EMITTER_ADDED event.
144
- *
145
- * @param {Emitter} emitter - The emitter to add
146
- * @return {System}
147
- */
148
-
149
-
150
- addEmitter(emitter) {
151
- const index = this.emitters.length;
152
- emitter.parent = this;
153
- emitter.index = index;
154
- this.emitters.push(emitter);
155
- this.dispatch(EMITTER_ADDED, emitter);
156
- return this;
157
- }
158
- /**
159
- * Removes an emitter from the System instance.
160
- * Dispatches the EMITTER_REMOVED event.
161
- *
162
- * @param {Emitter} emitter - The emitter to remove
163
- * @return {System}
164
- */
165
-
166
-
167
- removeEmitter(emitter) {
168
- if (emitter.parent !== this) {
169
- return this;
170
- }
171
-
172
- emitter.parent = null;
173
- emitter.index = undefined;
174
- this.emitters.splice(this.emitters.indexOf(emitter), 1);
175
- this.dispatch(EMITTER_REMOVED, emitter);
176
- return this;
177
- }
178
- /**
179
- * Wires up life cycle methods and causes a system's emitters to emit particles.
180
- * Expects emitters to have their totalEmitTimes and life set already.
181
- * Inifnite systems will resolve immediately.
182
- *
183
- * @param {object} hooks - Functions to hook into the life cycle API
184
- * @param {function} hooks.onStart - Called when the system starts to emit particles
185
- * @param {function} hooks.onUpdate - Called each time the system updates
186
- * @param {function} hooks.onEnd - Called when the system's emitters have all died
187
- * @return {Promise}
188
- */
189
-
190
-
191
- emit({
192
- onStart,
193
- onUpdate,
194
- onEnd
195
- }) {
196
- if (onStart) {
197
- onStart();
198
- }
199
-
200
- if (onUpdate) {
201
- this.eventDispatcher.addEventListener(SYSTEM_UPDATE, onUpdate);
202
- }
203
-
204
- const emitters = this.emitters.map(emitter => {
205
- const {
206
- life
207
- } = emitter;
208
-
209
- if (life === Infinity) {
210
- if (onEnd) {
211
- onEnd();
212
- }
213
-
214
- emitter.experimental_emit();
215
- return Promise.resolve();
216
- }
217
-
218
- return new Promise(resolve => {
219
- emitter.addOnEmitterDeadEventListener(() => {
220
- if (onEnd) {
221
- onEnd();
222
- }
223
-
224
- resolve();
225
- });
226
- emitter.experimental_emit();
227
- });
228
- });
229
-
230
- try {
231
- return Promise.all(emitters);
232
- } catch (e) {
233
- console.warn(e);
234
- }
235
- }
236
- /**
237
- * Updates the particle system based on the delta passed.
238
- *
239
- * @example
240
- * animate = () => {
241
- * threeRenderer.render(threeScene, threeCamera);
242
- * system.update();
243
- * requestAnimationFrame(animate);
244
- * }
245
- * animate();
246
- *
247
- * @param {number} delta - Delta time
248
- * @return {Promise}
249
- */
250
-
251
-
252
- update(delta = DEFAULT_SYSTEM_DELTA) {
253
- const d = delta || DEFAULT_SYSTEM_DELTA;
254
-
255
- if (this.canUpdate) {
256
- if (d > 0) {
257
- let i = this.emitters.length;
258
-
259
- while (i--) {
260
- const emitter = this.emitters[i];
261
- emitter.update(d);
262
- emitter.particles.length && this.dispatch(SYSTEM_UPDATE);
263
- }
264
- }
265
-
266
- this.dispatch(SYSTEM_UPDATE_AFTER);
267
- }
268
-
269
- return Promise.resolve();
270
- }
271
- /**
272
- * Gets a count of the total number of particles in the system.
273
- *
274
- * @return {integer}
275
- */
276
-
277
-
278
- getCount() {
279
- const length = this.emitters.length;
280
- let total = 0;
281
- let i;
282
-
283
- for (i = 0; i < length; i++) {
284
- total += this.emitters[i].particles.length;
285
- }
286
-
287
- return total;
288
- }
289
- /**
290
- * Destroys all emitters, renderers and the Nebula pool.
291
- * Ensures that this.update will not perform any operations while the system
292
- * is being destroyed.
293
- *
294
- * @return void
295
- */
296
-
297
-
298
- destroy() {
299
- const length = this.emitters.length;
300
- this.canUpdate = false;
301
-
302
- for (let e = 0; e < length; e++) {
303
- this.emitters[e] && this.emitters[e].destroy();
304
- delete this.emitters[e];
305
- }
306
-
307
- for (let r = 0; r < length; r++) {
308
- if (this.renderers[r] && this.renderers[r].destroy) {
309
- this.renderers[r].destroy();
310
- delete this.renderers[r];
311
- }
312
- }
313
-
314
- this.emitters.length = 0;
315
- this.pool.destroy();
316
- this.canUpdate = true;
317
- }
318
-
319
- }
320
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL1N5c3RlbS5qcyJdLCJuYW1lcyI6WyJFdmVudERpc3BhdGNoZXIiLCJFTUlUVEVSX0FEREVEIiwiRU1JVFRFUl9SRU1PVkVEIiwiU1lTVEVNX1VQREFURSIsIlNZU1RFTV9VUERBVEVfQUZURVIiLCJERUZBVUxUX1NZU1RFTV9ERUxUQSIsIkVtaXR0ZXIiLCJJTlRFR1JBVElPTl9UWVBFX0VVTEVSIiwiUE9PTF9NQVgiLCJQb29sIiwiZnJvbUpTT04iLCJmcm9tSlNPTkFzeW5jIiwiQ09SRV9UWVBFX1NZU1RFTSIsInR5cGUiLCJTeXN0ZW0iLCJjb25zdHJ1Y3RvciIsInByZVBhcnRpY2xlcyIsImludGVncmF0aW9uVHlwZSIsImNhblVwZGF0ZSIsImVtaXR0ZXJzIiwicmVuZGVyZXJzIiwicG9vbCIsImV2ZW50RGlzcGF0Y2hlciIsImpzb24iLCJUSFJFRSIsIm9wdGlvbnMiLCJkaXNwYXRjaCIsImV2ZW50IiwidGFyZ2V0IiwiZGlzcGF0Y2hFdmVudCIsImFkZFJlbmRlcmVyIiwicmVuZGVyZXIiLCJwdXNoIiwiaW5pdCIsInJlbW92ZVJlbmRlcmVyIiwic3BsaWNlIiwiaW5kZXhPZiIsInJlbW92ZSIsImFkZEVtaXR0ZXIiLCJlbWl0dGVyIiwiaW5kZXgiLCJsZW5ndGgiLCJwYXJlbnQiLCJyZW1vdmVFbWl0dGVyIiwidW5kZWZpbmVkIiwiZW1pdCIsIm9uU3RhcnQiLCJvblVwZGF0ZSIsIm9uRW5kIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm1hcCIsImxpZmUiLCJJbmZpbml0eSIsImV4cGVyaW1lbnRhbF9lbWl0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJhZGRPbkVtaXR0ZXJEZWFkRXZlbnRMaXN0ZW5lciIsImFsbCIsImUiLCJjb25zb2xlIiwid2FybiIsInVwZGF0ZSIsImRlbHRhIiwiZCIsImkiLCJwYXJ0aWNsZXMiLCJnZXRDb3VudCIsInRvdGFsIiwiZGVzdHJveSIsInIiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9B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QUFLakQsUUFBTCxDQUFjdUMsQ0FBZCxDQUFQO0FBQ0Q7O0FBRUQsU0FBSyxJQUFJVyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHNUIsTUFBcEIsRUFBNEI0QixDQUFDLEVBQTdCLEVBQWlDO0FBQy9CLFVBQUksS0FBS2pELFNBQUwsQ0FBZWlELENBQWYsS0FBcUIsS0FBS2pELFNBQUwsQ0FBZWlELENBQWYsRUFBa0JELE9BQTNDLEVBQW9EO0FBQ2xELGFBQUtoRCxTQUFMLENBQWVpRCxDQUFmLEVBQWtCRCxPQUFsQjtBQUNBLGVBQU8sS0FBS2hELFNBQUwsQ0FBZWlELENBQWYsQ0FBUDtBQUNEO0FBQ0Y7O0FBRUQsU0FBS2xELFFBQUwsQ0FBY3NCLE1BQWQsR0FBdUIsQ0FBdkI7QUFDQSxTQUFLcEIsSUFBTCxDQUFVK0MsT0FBVjtBQUNBLFNBQUtsRCxTQUFMLEdBQWlCLElBQWpCO0FBQ0Q7O0FBM1N5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFdmVudERpc3BhdGNoZXIsIHtcbiAgRU1JVFRFUl9BRERFRCxcbiAgRU1JVFRFUl9SRU1PVkVELFxuICBTWVNURU1fVVBEQVRFLFxuICBTWVNURU1fVVBEQVRFX0FGVEVSLFxufSBmcm9tICcuLi9ldmVudHMnO1xuXG5pbXBvcnQgeyBERUZBVUxUX1NZU1RFTV9ERUxUQSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCBFbWl0dGVyIGZyb20gJy4uL2VtaXR0ZXIvRW1pdHRlcic7XG5pbXBvcnQgeyBJTlRFR1JBVElPTl9UWVBFX0VVTEVSIH0gZnJvbSAnLi4vbWF0aC9jb25zdGFudHMnO1xuaW1wb3J0IHsgUE9PTF9NQVggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IFBvb2wgZnJvbSAnLi9Qb29sJztcbmltcG9ydCBmcm9tSlNPTiBmcm9tICcuL2Zyb21KU09OJztcbmltcG9ydCBmcm9tSlNPTkFzeW5jIGZyb20gJy4vZnJvbUpTT05Bc3luYyc7XG5pbXBvcnQgeyBDT1JFX1RZUEVfU1lTVEVNIGFzIHR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBUaGUgY29yZSBvZiB0aGUgdGhyZWUtc3lzdGVtIHBhcnRpY2xlIGVuZ2luZS5cbiAqIEEgU3lzdGVtIGluc3RhbmNlIGNhbiBjb250YWluIG11bHRpcGxlIGVtaXR0ZXJzLCBlYWNoIHdpdGggdGhlaXIgb3duIGluaXRpYWxpemVyc1xuICogYW5kIGJlaGF2aW91cnMuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTeXN0ZW0ge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhIFN5c3RlbSBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IFRIUkVFIC0gVGhyZWVKc1xuICAgKiBAcGFyYW0ge251bWJlcn0gW3ByZVBhcnRpY2xlcz1QT09MX01BWF0gLSBUaGUgbnVtYmVyIG9mIHBhcnRpY2xlcyB0byBzdGFydCB3aXRoXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbaW50ZWdyYXRpb25UeXBlPUlOVEVHUkFUSU9OX1RZUEVfRVVMRVJdIC0gVGhlIGludGVncmF0aW9uIHR5cGUgdG8gdXNlXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJlUGFydGljbGVzID0gUE9PTF9NQVgsXG4gICAgaW50ZWdyYXRpb25UeXBlID0gSU5URUdSQVRJT05fVFlQRV9FVUxFUlxuICApIHtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgY2xhc3MgdHlwZS5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBEZXRlcm1pbmVzIGlmIHRoZSBzeXN0ZW0gY2FuIHVwZGF0ZSBvciBub3QuIFNldCB0byBmYWxzZSB3aGVuIGRlc3Ryb3lpbmdcbiAgICAgKiB0byBlbnN1cmUgdGhhdCBleHRlcm5hbCBjYWxscyB0byB1cGRhdGUgZG8gbm90IHRocm93IGVycm9ycy5cbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLmNhblVwZGF0ZSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgbnVtYmVyIG9mIHBhcnRpY2xlcyB0byBzdGFydCB3aXRoLlxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5wcmVQYXJ0aWNsZXMgPSBwcmVQYXJ0aWNsZXM7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgaW50ZWdyYXRpb24gYWxnb3JpdGhtIHR5cGUgdG8gdXNlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMuaW50ZWdyYXRpb25UeXBlID0gaW50ZWdyYXRpb25UeXBlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGVtaXR0ZXJzIGluIHRoZSBwYXJ0aWNsZSBzeXN0ZW0uXG4gICAgICogQHR5cGUge2FycmF5PEVtaXR0ZXI+fVxuICAgICAqL1xuICAgIHRoaXMuZW1pdHRlcnMgPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSByZW5kZXJlcnMgZm9yIHRoZSBzeXN0ZW0uXG4gICAgICogQHR5cGUge2FycmF5PFJlbmRlcmVyPn1cbiAgICAgKi9cbiAgICB0aGlzLnJlbmRlcmVycyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgQSBwb29sIHVzZWQgdG8gbWFuYWdlIHRoZSBpbnRlcm5hbCBzeXN0ZW0gY2FjaGUgb2Ygb2JqZWN0c1xuICAgICAqIEB0eXBlIHtQb29sfVxuICAgICAqL1xuICAgIHRoaXMucG9vbCA9IG5ldyBQb29sKCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBJbnRlcm5hbCBldmVudCBkaXNwYXRjaGVyXG4gICAgICogQHR5cGUge0V2ZW50RGlzcGF0Y2hlcn1cbiAgICAgKi9cbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlciA9IG5ldyBFdmVudERpc3BhdGNoZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgU3lzdGVtIGluc3RhbmNlIGZyb20gYSBKU09OIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGpzb24gLSBUaGUgSlNPTiB0byBjcmVhdGUgdGhlIFN5c3RlbSBpbnN0YW5jZSBmcm9tXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBUSFJFRSAtIFRoZSBXZWIgR0wgQXBpIHRvIHVzZSBlZy4sIFRIUkVFXG4gICAqIEByZXR1cm4ge1N5c3RlbX1cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21KU09OQXN5bmMgaW5zdGVhZFxuICAgKi9cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIFRIUkVFKSB7XG4gICAgcmV0dXJuIGZyb21KU09OKGpzb24sIFRIUkVFLCBTeXN0ZW0sIEVtaXR0ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIGEgU3lzdGVtIGluc3RhbmNlIGZyb20gSlNPTiBhc3luY2hyb25vdXNseS4gRW5zdXJlcyBhbGwgdGV4dHVyZXMgYXJlXG4gICAqIGZ1bGx5IGxvYWRlZCBiZWZvcmUgcmVzb2x2aW5nIHdpdGggdGhlIGluc3RhbnRpYXRlZCBTeXN0ZW0gaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBqc29uIC0gVGhlIEpTT04gdG8gY3JlYXRlIHRoZSBTeXN0ZW0gaW5zdGFuY2UgZnJvbVxuICAgKiBAcGFyYW0ge29iamVjdH0gVEhSRUUgLSBUaGUgV2ViIEdMIEFwaSB0byB1c2UgZWcuLCBUSFJFRVxuICAgKiBAcGFyYW0gez9vYmplY3R9IG9wdGlvbnMgLSBPcHRpb25hbCBjb25maWcgb3B0aW9uc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPFN5c3RlbT59XG4gICAqL1xuICBzdGF0aWMgZnJvbUpTT05Bc3luYyhqc29uLCBUSFJFRSwgb3B0aW9ucykge1xuICAgIHJldHVybiBmcm9tSlNPTkFzeW5jKGpzb24sIFRIUkVFLCBTeXN0ZW0sIEVtaXR0ZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3h5IG1ldGhvZCBmb3IgdGhlIGludGVybmFsIGV2ZW50IGRpc3BhdGNoZXIncyBkaXNwYXRjaEV2ZW50IG1ldGhvZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50IC0gVGhlIGV2ZW50IHRvIGRpc3BhdGNoXG4gICAqIEBwYXJhbSB7b2JqZWN0PFN5c3RlbXxFbWl0dGVyfFBhcnRpY2xlPn0gW3RhcmdldD10aGlzXSAtIFRoZSBldmVudCB0YXJnZXRcbiAgICovXG4gIGRpc3BhdGNoKGV2ZW50LCB0YXJnZXQgPSB0aGlzKSB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXIuZGlzcGF0Y2hFdmVudChldmVudCwgdGFyZ2V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcmVuZGVyZXIgdG8gdGhlIFN5c3RlbSBpbnN0YW5jZSBhbmQgaW5pdGlhbGl6ZXMgaXQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVuZGVyZXJ9IHJlbmRlcmVyIC0gVGhlIHJlbmRlcmVyIHRvIGFkZFxuICAgKiBAcmV0dXJuIHtTeXN0ZW19XG4gICAqL1xuICBhZGRSZW5kZXJlcihyZW5kZXJlcikge1xuICAgIHRoaXMucmVuZGVyZXJzLnB1c2gocmVuZGVyZXIpO1xuICAgIHJlbmRlcmVyLmluaXQodGhpcyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgcmVuZGVyZXIgZnJvbSB0aGUgU3lzdGVtIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlbmRlcmVyfSByZW5kZXJlclxuICAgKiBAcmV0dXJuIHtTeXN0ZW19XG4gICAqL1xuICByZW1vdmVSZW5kZXJlcihyZW5kZXJlcikge1xuICAgIHRoaXMucmVuZGVyZXJzLnNwbGljZSh0aGlzLnJlbmRlcmVycy5pbmRleE9mKHJlbmRlcmVyKSwgMSk7XG4gICAgcmVuZGVyZXIucmVtb3ZlKHRoaXMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBlbWl0dGVyIHRvIHRoZSBTeXN0ZW0gaW5zdGFuY2UuXG4gICAqIERpc3BhdGNoZXMgdGhlIEVNSVRURVJfQURERUQgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7RW1pdHRlcn0gZW1pdHRlciAtIFRoZSBlbWl0dGVyIHRvIGFkZFxuICAgKiBAcmV0dXJuIHtTeXN0ZW19XG4gICAqL1xuICBhZGRFbWl0dGVyKGVtaXR0ZXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZW1pdHRlcnMubGVuZ3RoO1xuXG4gICAgZW1pdHRlci5wYXJlbnQgPSB0aGlzO1xuICAgIGVtaXR0ZXIuaW5kZXggPSBpbmRleDtcblxuICAgIHRoaXMuZW1pdHRlcnMucHVzaChlbWl0dGVyKTtcbiAgICB0aGlzLmRpc3BhdGNoKEVNSVRURVJfQURERUQsIGVtaXR0ZXIpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbiBlbWl0dGVyIGZyb20gdGhlIFN5c3RlbSBpbnN0YW5jZS5cbiAgICogRGlzcGF0Y2hlcyB0aGUgRU1JVFRFUl9SRU1PVkVEIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge0VtaXR0ZXJ9IGVtaXR0ZXIgLSBUaGUgZW1pdHRlciB0byByZW1vdmVcbiAgICogQHJldHVybiB7U3lzdGVtfVxuICAgKi9cbiAgcmVtb3ZlRW1pdHRlcihlbWl0dGVyKSB7XG4gICAgaWYgKGVtaXR0ZXIucGFyZW50ICE9PSB0aGlzKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBlbWl0dGVyLnBhcmVudCA9IG51bGw7XG4gICAgZW1pdHRlci5pbmRleCA9IHVuZGVmaW5lZDtcblxuICAgIHRoaXMuZW1pdHRlcnMuc3BsaWNlKHRoaXMuZW1pdHRlcnMuaW5kZXhPZihlbWl0dGVyKSwgMSk7XG4gICAgdGhpcy5kaXNwYXRjaChFTUlUVEVSX1JFTU9WRUQsIGVtaXR0ZXIpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogV2lyZXMgdXAgbGlmZSBjeWNsZSBtZXRob2RzIGFuZCBjYXVzZXMgYSBzeXN0ZW0ncyBlbWl0dGVycyB0byBlbWl0IHBhcnRpY2xlcy5cbiAgICogRXhwZWN0cyBlbWl0dGVycyB0byBoYXZlIHRoZWlyIHRvdGFsRW1pdFRpbWVzIGFuZCBsaWZlIHNldCBhbHJlYWR5LlxuICAgKiBJbmlmbml0ZSBzeXN0ZW1zIHdpbGwgcmVzb2x2ZSBpbW1lZGlhdGVseS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGhvb2tzIC0gRnVuY3Rpb25zIHRvIGhvb2sgaW50byB0aGUgbGlmZSBjeWNsZSBBUElcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gaG9va3Mub25TdGFydCAtIENhbGxlZCB3aGVuIHRoZSBzeXN0ZW0gc3RhcnRzIHRvIGVtaXQgcGFydGljbGVzXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGhvb2tzLm9uVXBkYXRlIC0gQ2FsbGVkIGVhY2ggdGltZSB0aGUgc3lzdGVtIHVwZGF0ZXNcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gaG9va3Mub25FbmQgLSBDYWxsZWQgd2hlbiB0aGUgc3lzdGVtJ3MgZW1pdHRlcnMgaGF2ZSBhbGwgZGllZFxuICAgKiBAcmV0dXJuIHtQcm9taXNlfVxuICAgKi9cbiAgZW1pdCh7IG9uU3RhcnQsIG9uVXBkYXRlLCBvbkVuZCB9KSB7XG4gICAgaWYgKG9uU3RhcnQpIHtcbiAgICAgIG9uU3RhcnQoKTtcbiAgICB9XG5cbiAgICBpZiAob25VcGRhdGUpIHtcbiAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyLmFkZEV2ZW50TGlzdGVuZXIoU1lTVEVNX1VQREFURSwgb25VcGRhdGUpO1xuICAgIH1cblxuICAgIGNvbnN0IGVtaXR0ZXJzID0gdGhpcy5lbWl0dGVycy5tYXAoZW1pdHRlciA9PiB7XG4gICAgICBjb25zdCB7IGxpZmUgfSA9IGVtaXR0ZXI7XG5cbiAgICAgIGlmIChsaWZlID09PSBJbmZpbml0eSkge1xuICAgICAgICBpZiAob25FbmQpIHtcbiAgICAgICAgICBvbkVuZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZW1pdHRlci5leHBlcmltZW50YWxfZW1pdCgpO1xuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICBlbWl0dGVyLmFkZE9uRW1pdHRlckRlYWRFdmVudExpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgICBpZiAob25FbmQpIHtcbiAgICAgICAgICAgIG9uRW5kKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBlbWl0dGVyLmV4cGVyaW1lbnRhbF9lbWl0KCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwoZW1pdHRlcnMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcGFydGljbGUgc3lzdGVtIGJhc2VkIG9uIHRoZSBkZWx0YSBwYXNzZWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGFuaW1hdGUgPSAoKSA9PiB7XG4gICAqICAgdGhyZWVSZW5kZXJlci5yZW5kZXIodGhyZWVTY2VuZSwgdGhyZWVDYW1lcmEpO1xuICAgKiAgIHN5c3RlbS51cGRhdGUoKTtcbiAgICogICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7XG4gICAqIH1cbiAgICogYW5pbWF0ZSgpO1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gZGVsdGEgLSBEZWx0YSB0aW1lXG4gICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAqL1xuICB1cGRhdGUoZGVsdGEgPSBERUZBVUxUX1NZU1RFTV9ERUxUQSkge1xuICAgIGNvbnN0IGQgPSBkZWx0YSB8fCBERUZBVUxUX1NZU1RFTV9ERUxUQTtcblxuICAgIGlmICh0aGlzLmNhblVwZGF0ZSkge1xuICAgICAgaWYgKGQgPiAwKSB7XG4gICAgICAgIGxldCBpID0gdGhpcy5lbWl0dGVycy5sZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICAgIGNvbnN0IGVtaXR0ZXIgPSB0aGlzLmVtaXR0ZXJzW2ldO1xuXG4gICAgICAgICAgZW1pdHRlci51cGRhdGUoZCk7XG4gICAgICAgICAgZW1pdHRlci5wYXJ0aWNsZXMubGVuZ3RoICYmIHRoaXMuZGlzcGF0Y2goU1lTVEVNX1VQREFURSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5kaXNwYXRjaChTWVNURU1fVVBEQVRFX0FGVEVSKTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGNvdW50IG9mIHRoZSB0b3RhbCBudW1iZXIgb2YgcGFydGljbGVzIGluIHRoZSBzeXN0ZW0uXG4gICAqXG4gICAqIEByZXR1cm4ge2ludGVnZXJ9XG4gICAqL1xuICBnZXRDb3VudCgpIHtcbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLmVtaXR0ZXJzLmxlbmd0aDtcblxuICAgIGxldCB0b3RhbCA9IDA7XG5cbiAgICBsZXQgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdG90YWwgKz0gdGhpcy5lbWl0dGVyc1tpXS5wYXJ0aWNsZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIHJldHVybiB0b3RhbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyBhbGwgZW1pdHRlcnMsIHJlbmRlcmVycyBhbmQgdGhlIE5lYnVsYSBwb29sLlxuICAgKiBFbnN1cmVzIHRoYXQgdGhpcy51cGRhdGUgd2lsbCBub3QgcGVyZm9ybSBhbnkgb3BlcmF0aW9ucyB3aGlsZSB0aGUgc3lzdGVtXG4gICAqIGlzIGJlaW5nIGRlc3Ryb3llZC5cbiAgICpcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuZW1pdHRlcnMubGVuZ3RoO1xuXG4gICAgdGhpcy5jYW5VcGRhdGUgPSBmYWxzZTtcblxuICAgIGZvciAobGV0IGUgPSAwOyBlIDwgbGVuZ3RoOyBlKyspIHtcbiAgICAgIHRoaXMuZW1pdHRlcnNbZV0gJiYgdGhpcy5lbWl0dGVyc1tlXS5kZXN0cm95KCk7XG4gICAgICBkZWxldGUgdGhpcy5lbWl0dGVyc1tlXTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCByID0gMDsgciA8IGxlbmd0aDsgcisrKSB7XG4gICAgICBpZiAodGhpcy5yZW5kZXJlcnNbcl0gJiYgdGhpcy5yZW5kZXJlcnNbcl0uZGVzdHJveSkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyc1tyXS5kZXN0cm95KCk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnJlbmRlcmVyc1tyXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmVtaXR0ZXJzLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5wb29sLmRlc3Ryb3koKTtcbiAgICB0aGlzLmNhblVwZGF0ZSA9IHRydWU7XG4gIH1cbn1cbiJdfQ==
@@ -1,127 +0,0 @@
1
- import { BEHAVIOUR_TYPE_ALPHA, BEHAVIOUR_TYPE_ATTRACTION, BEHAVIOUR_TYPE_COLOR, BEHAVIOUR_TYPE_CROSS_ZONE, BEHAVIOUR_TYPE_FORCE, BEHAVIOUR_TYPE_GRAVITY, BEHAVIOUR_TYPE_RANDOM_DRIFT, BEHAVIOUR_TYPE_REPULSION, BEHAVIOUR_TYPE_ROTATE, BEHAVIOUR_TYPE_SCALE, BEHAVIOUR_TYPE_SPRING } from '../behaviour/types';
2
- import { INITIALIZER_TYPE_BODY, INITIALIZER_TYPE_BODY_SPRITE, INITIALIZER_TYPE_LIFE, INITIALIZER_TYPE_MASS, INITIALIZER_TYPE_POLAR_VELOCITY, INITIALIZER_TYPE_POSITION, INITIALIZER_TYPE_ROTATION, INITIALIZER_TYPE_RADIAL_VELOCITY, INITIALIZER_TYPE_RADIUS, INITIALIZER_TYPE_TEXTURE, INITIALIZER_TYPE_VECTOR_VELOCITY } from '../initializer/types';
3
- import { ZONE_TYPE_BOX, ZONE_TYPE_LINE, ZONE_TYPE_MESH, ZONE_TYPE_POINT, ZONE_TYPE_SPHERE } from '../zone/types';
4
- import { RENDERER_TYPE_SPRITE } from '../renderer/types';
5
- import { easeLinear } from '../ease';
6
- /**
7
- * @desc Default particle life
8
- * @type {number}
9
- */
10
-
11
- export const DEFAULT_LIFE = Infinity;
12
- /**
13
- * @desc Default particle age
14
- * @type {number}
15
- */
16
-
17
- export const DEFAULT_AGE = 0;
18
- /**
19
- * @desc Default particle energy
20
- * @type {number}
21
- */
22
-
23
- export const DEFAULT_ENERGY = 1;
24
- /**
25
- * @desc Default particle dead
26
- * @type {boolean}
27
- */
28
-
29
- export const DEFAULT_DEAD = false;
30
- /**
31
- * @desc Default particle sleep
32
- * @type {boolean}
33
- */
34
-
35
- export const DEFAULT_SLEEP = false;
36
- /**
37
- * @desc Default particle index
38
- * @type {number}
39
- */
40
-
41
- export const DEFAULT_INDEX = 0;
42
- /**
43
- * @desc Default particle body
44
- * @type {?object}
45
- */
46
-
47
- export const DEFAULT_BODY = null;
48
- /**
49
- * @desc Default particle parent
50
- * @type {?Emitter}
51
- */
52
-
53
- export const DEFAULT_PARENT = null;
54
- /**
55
- * @desc Default particle mass
56
- * @type {number}
57
- */
58
-
59
- export const DEFAULT_MASS = 1;
60
- /**
61
- * @desc Default particle radius
62
- * @type {number}
63
- */
64
-
65
- export const DEFAULT_RADIUS = 10;
66
- /**
67
- * @desc Default particle alpha
68
- * @type {number}
69
- */
70
-
71
- export const DEFAULT_ALPHA = 1;
72
- /**
73
- * @desc Default particle scale
74
- * @type {number}
75
- */
76
-
77
- export const DEFAULT_SCALE = 1;
78
- /**
79
- * @desc Default particle useColor
80
- * @type {boolean}
81
- */
82
-
83
- export const DEFAULT_USE_COLOR = false;
84
- /**
85
- * @desc Default particle useAlpha
86
- * @type {boolean}
87
- */
88
-
89
- export const DEFAULT_USE_ALPHA = false;
90
- /**
91
- * @desc Default particle easing
92
- * @type {function}
93
- */
94
-
95
- export const DEFAULT_EASING = easeLinear;
96
- /**
97
- * @desc The default delta provided to the System instance
98
- * @type {number}
99
- */
100
-
101
- export const DEFAULT_SYSTEM_DELTA = 0.0167;
102
- /**
103
- * @desc The types of initializers supported by the System.fromJSON method.
104
- * @type {array<string>}
105
- */
106
-
107
- export const SUPPORTED_JSON_INITIALIZER_TYPES = [INITIALIZER_TYPE_POSITION, INITIALIZER_TYPE_ROTATION, INITIALIZER_TYPE_LIFE, INITIALIZER_TYPE_RADIUS, INITIALIZER_TYPE_MASS, INITIALIZER_TYPE_BODY, INITIALIZER_TYPE_BODY_SPRITE, INITIALIZER_TYPE_TEXTURE, INITIALIZER_TYPE_POLAR_VELOCITY, INITIALIZER_TYPE_RADIAL_VELOCITY, INITIALIZER_TYPE_VECTOR_VELOCITY];
108
- /**
109
- * @desc The types of behaviours supported by the System.fromJSON method.
110
- * @type {array<string>}
111
- */
112
-
113
- export const SUPPORTED_JSON_BEHAVIOUR_TYPES = [BEHAVIOUR_TYPE_ALPHA, BEHAVIOUR_TYPE_ATTRACTION, BEHAVIOUR_TYPE_COLOR, BEHAVIOUR_TYPE_CROSS_ZONE, BEHAVIOUR_TYPE_FORCE, BEHAVIOUR_TYPE_GRAVITY, BEHAVIOUR_TYPE_RANDOM_DRIFT, BEHAVIOUR_TYPE_REPULSION, BEHAVIOUR_TYPE_ROTATE, BEHAVIOUR_TYPE_SCALE, BEHAVIOUR_TYPE_SPRING];
114
- /**
115
- * @desc The types of renderers supported by the System.fromJSON method.
116
- * @type {array<string>}
117
- */
118
-
119
- export const SUPPORTED_JSON_RENDERER_TYPES = [RENDERER_TYPE_SPRITE];
120
- /**
121
- * @desc The types of zones supported by the System.fromJSON method.
122
- * @type {array<string>}
123
- */
124
-
125
- export const SUPPORTED_JSON_ZONE_TYPES = [ZONE_TYPE_BOX, ZONE_TYPE_LINE, ZONE_TYPE_MESH, ZONE_TYPE_POINT, ZONE_TYPE_SPHERE];
126
- export { INITIALIZER_TYPES_THAT_REQUIRE_THREE } from '../initializer/types';
127
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL2NvbnN0YW50cy5qcyJdLCJuYW1lcyI6WyJCRUhBVklPVVJfVFlQRV9BTFBIQSIsIkJFSEFWSU9VUl9UWVBFX0FUVFJBQ1RJT04iLCJCRUhBVklPVVJfVFlQRV9DT0xPUiIsIkJFSEFWSU9VUl9UWVBFX0NST1NTX1pPTkUiLCJCRUhBVklPVVJfVFlQRV9GT1JDRSIsIkJFSEFWSU9VUl9UWVBFX0dSQVZJVFkiLCJCRUhBVklPVVJfVFlQRV9SQU5ET01fRFJJRlQiLCJCRUhBVklPVVJfVFlQRV9SRVBVTFNJT04iLCJCRUhBVklPVVJfVFlQRV9ST1RBVEUiLCJCRUhBVklPVVJfVFlQRV9TQ0FMRSIsIkJFSEFWSU9VUl9UWVBFX1NQUklORyIsIklOSVRJQUxJWkVSX1RZUEVfQk9EWSIsIklOSVRJQUxJWkVSX1RZUEVfQk9EWV9TUFJJVEUiLCJJTklUSUFMSVpFUl9UWVBFX0xJRkUiLCJJTklUSUFMSVpFUl9UWVBFX01BU1MiLCJJTklUSUFMSVpFUl9UWVBFX1BPTEFSX1ZFTE9DSVRZIiwiSU5JVElBTElaRVJfVFlQRV9QT1NJVElPTiIsIklOSVRJQUxJWkVSX1RZUEVfUk9UQVRJT04iLCJJTklUSUFMSVpFUl9UWVBFX1JBRElBTF9WRUxPQ0lUWSIsIklOSVRJQUxJWkVSX1RZUEVfUkFESVVTIiwiSU5JVElBTElaRVJfVFlQRV9URVhUVVJFIiwiSU5JVElBTElaRVJfVFlQRV9WRUNUT1JfVkVMT0NJVFkiLCJaT05FX1RZUEVfQk9YIiwiWk9ORV9UWVBFX0xJTkUiLCJaT05FX1RZUEVfTUVTSCIsIlpPTkVfVFlQRV9QT0lOVCIsIlpPTkVfVFlQRV9TUEhFUkUiLCJSRU5ERVJFUl9UWVBFX1NQUklURSIsImVhc2VMaW5lYXIiLCJERUZBVUxUX0xJRkUiLCJJbmZpbml0eSIsIkRFRkFVTFRfQUdFIiwiREVGQVVMVF9FTkVSR1kiLCJERUZBVUxUX0RFQUQiLCJERUZBVUxUX1NMRUVQIiwiREVGQVVMVF9JTkRFWCIsIkRFRkFVTFRfQk9EWSIsIkRFRkFVTFRfUEFSRU5UIiwiREVGQVVMVF9NQVNTIiwiREVGQVVMVF9SQURJVVMiLCJERUZBVUxUX0FMUEhBIiwiREVGQVVMVF9TQ0FMRSIsIkRFRkFVTFRfVVNFX0NPTE9SIiwiREVGQVVMVF9VU0VfQUxQSEEiLCJERUZBVUxUX0VBU0lORyIsIkRFRkFVTFRfU1lTVEVNX0RFTFRBIiwiU1VQUE9SVEVEX0pTT05fSU5JVElBTElaRVJfVFlQRVMiLCJTVVBQT1JURURfSlNPTl9CRUhBVklPVVJfVFlQRVMiLCJTVVBQT1JURURfSlNPTl9SRU5ERVJFUl9UWVBFUyIsIlNVUFBPUlRFRF9KU09OX1pPTkVfVFlQRVMiLCJJTklUSUFMSVpFUl9UWVBFU19USEFUX1JFUVVJUkVfVEhSRUUiXSwibWFwcGluZ3MiOiJBQUFBLFNBQ0VBLG9CQURGLEVBRUVDLHlCQUZGLEVBR0VDLG9CQUhGLEVBSUVDLHlCQUpGLEVBS0VDLG9CQUxGLEVBTUVDLHNCQU5GLEVBT0VDLDJCQVBGLEVBUUVDLHdCQVJGLEVBU0VDLHFCQVRGLEVBVUVDLG9CQVZGLEVBV0VDLHFCQVhGLFFBWU8sb0JBWlA7QUFhQSxTQUNFQyxxQkFERixFQUVFQyw0QkFGRixFQUdFQyxxQkFIRixFQUlFQyxxQkFKRixFQUtFQywrQkFMRixFQU1FQyx5QkFORixFQU9FQyx5QkFQRixFQVFFQyxnQ0FSRixFQVNFQyx1QkFURixFQVVFQyx3QkFWRixFQVdFQyxnQ0FYRixRQVlPLHNCQVpQO0FBYUEsU0FDRUMsYUFERixFQUVFQyxjQUZGLEVBR0VDLGNBSEYsRUFJRUMsZUFKRixFQUtFQyxnQkFMRixRQU1PLGVBTlA7QUFRQSxTQUFTQyxvQkFBVCxRQUFxQyxtQkFBckM7QUFDQSxTQUFTQyxVQUFULFFBQTJCLFNBQTNCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxZQUFZLEdBQUdDLFFBQXJCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxXQUFXLEdBQUcsQ0FBcEI7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLGNBQWMsR0FBRyxDQUF2QjtBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTUMsWUFBWSxHQUFHLEtBQXJCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxhQUFhLEdBQUcsS0FBdEI7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLGFBQWEsR0FBRyxDQUF0QjtBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTUMsWUFBWSxHQUFHLElBQXJCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxjQUFjLEdBQUcsSUFBdkI7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLFlBQVksR0FBRyxDQUFyQjtBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTUMsY0FBYyxHQUFHLEVBQXZCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxhQUFhLEdBQUcsQ0FBdEI7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLGFBQWEsR0FBRyxDQUF0QjtBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTUMsaUJBQWlCLEdBQUcsS0FBMUI7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLGlCQUFpQixHQUFHLEtBQTFCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxjQUFjLEdBQUdoQixVQUF2QjtBQUVQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTWlCLG9CQUFvQixHQUFHLE1BQTdCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxnQ0FBZ0MsR0FBRyxDQUM5QzlCLHlCQUQ4QyxFQUU5Q0MseUJBRjhDLEVBRzlDSixxQkFIOEMsRUFJOUNNLHVCQUo4QyxFQUs5Q0wscUJBTDhDLEVBTTlDSCxxQkFOOEMsRUFPOUNDLDRCQVA4QyxFQVE5Q1Esd0JBUjhDLEVBUzlDTCwrQkFUOEMsRUFVOUNHLGdDQVY4QyxFQVc5Q0csZ0NBWDhDLENBQXpDO0FBY1A7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNMEIsOEJBQThCLEdBQUcsQ0FDNUMvQyxvQkFENEMsRUFFNUNDLHlCQUY0QyxFQUc1Q0Msb0JBSDRDLEVBSTVDQyx5QkFKNEMsRUFLNUNDLG9CQUw0QyxFQU01Q0Msc0JBTjRDLEVBTzVDQywyQkFQNEMsRUFRNUNDLHdCQVI0QyxFQVM1Q0MscUJBVDRDLEVBVTVDQyxvQkFWNEMsRUFXNUNDLHFCQVg0QyxDQUF2QztBQWNQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTXNDLDZCQUE2QixHQUFHLENBQUNyQixvQkFBRCxDQUF0QztBQUVQO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTXNCLHlCQUF5QixHQUFHLENBQ3ZDM0IsYUFEdUMsRUFFdkNDLGNBRnVDLEVBR3ZDQyxjQUh1QyxFQUl2Q0MsZUFKdUMsRUFLdkNDLGdCQUx1QyxDQUFsQztBQVFQLFNBQVN3QixvQ0FBVCxRQUFxRCxzQkFBckQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCRUhBVklPVVJfVFlQRV9BTFBIQSxcbiAgQkVIQVZJT1VSX1RZUEVfQVRUUkFDVElPTixcbiAgQkVIQVZJT1VSX1RZUEVfQ09MT1IsXG4gIEJFSEFWSU9VUl9UWVBFX0NST1NTX1pPTkUsXG4gIEJFSEFWSU9VUl9UWVBFX0ZPUkNFLFxuICBCRUhBVklPVVJfVFlQRV9HUkFWSVRZLFxuICBCRUhBVklPVVJfVFlQRV9SQU5ET01fRFJJRlQsXG4gIEJFSEFWSU9VUl9UWVBFX1JFUFVMU0lPTixcbiAgQkVIQVZJT1VSX1RZUEVfUk9UQVRFLFxuICBCRUhBVklPVVJfVFlQRV9TQ0FMRSxcbiAgQkVIQVZJT1VSX1RZUEVfU1BSSU5HLFxufSBmcm9tICcuLi9iZWhhdmlvdXIvdHlwZXMnO1xuaW1wb3J0IHtcbiAgSU5JVElBTElaRVJfVFlQRV9CT0RZLFxuICBJTklUSUFMSVpFUl9UWVBFX0JPRFlfU1BSSVRFLFxuICBJTklUSUFMSVpFUl9UWVBFX0xJRkUsXG4gIElOSVRJQUxJWkVSX1RZUEVfTUFTUyxcbiAgSU5JVElBTElaRVJfVFlQRV9QT0xBUl9WRUxPQ0lUWSxcbiAgSU5JVElBTElaRVJfVFlQRV9QT1NJVElPTixcbiAgSU5JVElBTElaRVJfVFlQRV9ST1RBVElPTixcbiAgSU5JVElBTElaRVJfVFlQRV9SQURJQUxfVkVMT0NJVFksXG4gIElOSVRJQUxJWkVSX1RZUEVfUkFESVVTLFxuICBJTklUSUFMSVpFUl9UWVBFX1RFWFRVUkUsXG4gIElOSVRJQUxJWkVSX1RZUEVfVkVDVE9SX1ZFTE9DSVRZLFxufSBmcm9tICcuLi9pbml0aWFsaXplci90eXBlcyc7XG5pbXBvcnQge1xuICBaT05FX1RZUEVfQk9YLFxuICBaT05FX1RZUEVfTElORSxcbiAgWk9ORV9UWVBFX01FU0gsXG4gIFpPTkVfVFlQRV9QT0lOVCxcbiAgWk9ORV9UWVBFX1NQSEVSRSxcbn0gZnJvbSAnLi4vem9uZS90eXBlcyc7XG5cbmltcG9ydCB7IFJFTkRFUkVSX1RZUEVfU1BSSVRFIH0gZnJvbSAnLi4vcmVuZGVyZXIvdHlwZXMnO1xuaW1wb3J0IHsgZWFzZUxpbmVhciB9IGZyb20gJy4uL2Vhc2UnO1xuXG4vKipcbiAqIEBkZXNjIERlZmF1bHQgcGFydGljbGUgbGlmZVxuICogQHR5cGUge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElGRSA9IEluZmluaXR5O1xuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIGFnZVxuICogQHR5cGUge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQUdFID0gMDtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBlbmVyZ3lcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VORVJHWSA9IDE7XG4vKipcbiAqIEBkZXNjIERlZmF1bHQgcGFydGljbGUgZGVhZFxuICogQHR5cGUge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0RFQUQgPSBmYWxzZTtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBzbGVlcFxuICogQHR5cGUge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NMRUVQID0gZmFsc2U7XG5cbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBpbmRleFxuICogQHR5cGUge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5ERVggPSAwO1xuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIGJvZHlcbiAqIEB0eXBlIHs/b2JqZWN0fVxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9CT0RZID0gbnVsbDtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBwYXJlbnRcbiAqIEB0eXBlIHs/RW1pdHRlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUEFSRU5UID0gbnVsbDtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSBtYXNzXG4gKiBAdHlwZSB7bnVtYmVyfVxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVNTID0gMTtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSByYWRpdXNcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1JBRElVUyA9IDEwO1xuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIGFscGhhXG4gKiBAdHlwZSB7bnVtYmVyfVxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9BTFBIQSA9IDE7XG4vKipcbiAqIEBkZXNjIERlZmF1bHQgcGFydGljbGUgc2NhbGVcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NDQUxFID0gMTtcbi8qKlxuICogQGRlc2MgRGVmYXVsdCBwYXJ0aWNsZSB1c2VDb2xvclxuICogQHR5cGUge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1VTRV9DT0xPUiA9IGZhbHNlO1xuLyoqXG4gKiBAZGVzYyBEZWZhdWx0IHBhcnRpY2xlIHVzZUFscGhhXG4gKiBAdHlwZSB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVVNFX0FMUEhBID0gZmFsc2U7XG4vKipcbiAqIEBkZXNjIERlZmF1bHQgcGFydGljbGUgZWFzaW5nXG4gKiBAdHlwZSB7ZnVuY3Rpb259XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VBU0lORyA9IGVhc2VMaW5lYXI7XG5cbi8qKlxuICogQGRlc2MgVGhlIGRlZmF1bHQgZGVsdGEgcHJvdmlkZWQgdG8gdGhlIFN5c3RlbSBpbnN0YW5jZVxuICogQHR5cGUge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1lTVEVNX0RFTFRBID0gMC4wMTY3O1xuXG4vKipcbiAqIEBkZXNjIFRoZSB0eXBlcyBvZiBpbml0aWFsaXplcnMgc3VwcG9ydGVkIGJ5IHRoZSBTeXN0ZW0uZnJvbUpTT04gbWV0aG9kLlxuICogQHR5cGUge2FycmF5PHN0cmluZz59XG4gKi9cbmV4cG9ydCBjb25zdCBTVVBQT1JURURfSlNPTl9JTklUSUFMSVpFUl9UWVBFUyA9IFtcbiAgSU5JVElBTElaRVJfVFlQRV9QT1NJVElPTixcbiAgSU5JVElBTElaRVJfVFlQRV9ST1RBVElPTixcbiAgSU5JVElBTElaRVJfVFlQRV9MSUZFLFxuICBJTklUSUFMSVpFUl9UWVBFX1JBRElVUyxcbiAgSU5JVElBTElaRVJfVFlQRV9NQVNTLFxuICBJTklUSUFMSVpFUl9UWVBFX0JPRFksXG4gIElOSVRJQUxJWkVSX1RZUEVfQk9EWV9TUFJJVEUsXG4gIElOSVRJQUxJWkVSX1RZUEVfVEVYVFVSRSxcbiAgSU5JVElBTElaRVJfVFlQRV9QT0xBUl9WRUxPQ0lUWSxcbiAgSU5JVElBTElaRVJfVFlQRV9SQURJQUxfVkVMT0NJVFksXG4gIElOSVRJQUxJWkVSX1RZUEVfVkVDVE9SX1ZFTE9DSVRZLFxuXTtcblxuLyoqXG4gKiBAZGVzYyBUaGUgdHlwZXMgb2YgYmVoYXZpb3VycyBzdXBwb3J0ZWQgYnkgdGhlIFN5c3RlbS5mcm9tSlNPTiBtZXRob2QuXG4gKiBAdHlwZSB7YXJyYXk8c3RyaW5nPn1cbiAqL1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9KU09OX0JFSEFWSU9VUl9UWVBFUyA9IFtcbiAgQkVIQVZJT1VSX1RZUEVfQUxQSEEsXG4gIEJFSEFWSU9VUl9UWVBFX0FUVFJBQ1RJT04sXG4gIEJFSEFWSU9VUl9UWVBFX0NPTE9SLFxuICBCRUhBVklPVVJfVFlQRV9DUk9TU19aT05FLFxuICBCRUhBVklPVVJfVFlQRV9GT1JDRSxcbiAgQkVIQVZJT1VSX1RZUEVfR1JBVklUWSxcbiAgQkVIQVZJT1VSX1RZUEVfUkFORE9NX0RSSUZULFxuICBCRUhBVklPVVJfVFlQRV9SRVBVTFNJT04sXG4gIEJFSEFWSU9VUl9UWVBFX1JPVEFURSxcbiAgQkVIQVZJT1VSX1RZUEVfU0NBTEUsXG4gIEJFSEFWSU9VUl9UWVBFX1NQUklORyxcbl07XG5cbi8qKlxuICogQGRlc2MgVGhlIHR5cGVzIG9mIHJlbmRlcmVycyBzdXBwb3J0ZWQgYnkgdGhlIFN5c3RlbS5mcm9tSlNPTiBtZXRob2QuXG4gKiBAdHlwZSB7YXJyYXk8c3RyaW5nPn1cbiAqL1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9KU09OX1JFTkRFUkVSX1RZUEVTID0gW1JFTkRFUkVSX1RZUEVfU1BSSVRFXTtcblxuLyoqXG4gKiBAZGVzYyBUaGUgdHlwZXMgb2Ygem9uZXMgc3VwcG9ydGVkIGJ5IHRoZSBTeXN0ZW0uZnJvbUpTT04gbWV0aG9kLlxuICogQHR5cGUge2FycmF5PHN0cmluZz59XG4gKi9cbmV4cG9ydCBjb25zdCBTVVBQT1JURURfSlNPTl9aT05FX1RZUEVTID0gW1xuICBaT05FX1RZUEVfQk9YLFxuICBaT05FX1RZUEVfTElORSxcbiAgWk9ORV9UWVBFX01FU0gsXG4gIFpPTkVfVFlQRV9QT0lOVCxcbiAgWk9ORV9UWVBFX1NQSEVSRSxcbl07XG5cbmV4cG9ydCB7IElOSVRJQUxJWkVSX1RZUEVTX1RIQVRfUkVRVUlSRV9USFJFRSB9IGZyb20gJy4uL2luaXRpYWxpemVyL3R5cGVzJztcbiJdfQ==
@@ -1,107 +0,0 @@
1
- import * as Behaviour from '../behaviour';
2
- import * as Initializer from '../initializer';
3
- import { EULER, POOL_MAX } from '../constants';
4
- import { INITIALIZER_TYPES_THAT_REQUIRE_THREE, SUPPORTED_JSON_BEHAVIOUR_TYPES, SUPPORTED_JSON_INITIALIZER_TYPES } from './constants';
5
- import Rate from '../initializer/Rate';
6
- /**
7
- * Makes a rate instance.
8
- *
9
- * @param {object} json - The data required to construct a Rate instance
10
- * @return {Rate}
11
- */
12
-
13
- const makeRate = json => Rate.fromJSON(json);
14
- /**
15
- * Makes initializers from json items.
16
- *
17
- * @param {array<object>} items - An array of objects which provide initializer constructor params
18
- * @param {object} THREE - The Web GL Api to use
19
- * @return {array<Initializer>}
20
- */
21
-
22
-
23
- const makeInitializers = (items, THREE) => {
24
- const initializers = [];
25
- items.forEach(data => {
26
- const {
27
- type,
28
- properties
29
- } = data;
30
-
31
- if (!SUPPORTED_JSON_INITIALIZER_TYPES.includes(type)) {
32
- throw new Error(`The initializer type ${type} is invalid or not yet supported`);
33
- }
34
-
35
- if (INITIALIZER_TYPES_THAT_REQUIRE_THREE.includes(type)) {
36
- initializers.push(Initializer[type].fromJSON(properties, THREE));
37
- } else {
38
- initializers.push(Initializer[type].fromJSON(properties));
39
- }
40
- });
41
- return initializers;
42
- };
43
- /**
44
- * Makes behaviours from json items.
45
- *
46
- * @param {array<object>} items - An array of objects which provide behaviour constructor params
47
- * @return {array<Behaviour>}
48
- */
49
-
50
-
51
- const makeBehaviours = items => {
52
- const behaviours = [];
53
- items.forEach(data => {
54
- const {
55
- type,
56
- properties
57
- } = data;
58
-
59
- if (!SUPPORTED_JSON_BEHAVIOUR_TYPES.includes(type)) {
60
- throw new Error(`The behaviour type ${type} is invalid or not yet supported`);
61
- }
62
-
63
- behaviours.push(Behaviour[type].fromJSON(properties));
64
- });
65
- return behaviours;
66
- };
67
- /**
68
- * Creates a System instance from a JSON object.
69
- *
70
- * @deprecated Use fromJSONAsync instead.
71
- *
72
- * @param {object} json - The JSON to create the System instance from
73
- * @param {object} THREE - The Web GL Api to use
74
- * @param {function} System - The system class
75
- * @param {function} Emitter - The emitter class
76
- * @param {number} json.preParticles - The predetermined number of particles
77
- * @param {string} json.integrationType - The integration algorithm to use
78
- * @param {array<object>} json.emitters - The emitters for the system instance
79
- * @return {System}
80
- */
81
-
82
-
83
- export default ((json, THREE, System, Emitter) => {
84
- const {
85
- preParticles = POOL_MAX,
86
- integrationType = EULER,
87
- emitters = []
88
- } = json;
89
- const system = new System(THREE, preParticles, integrationType);
90
- emitters.forEach(data => {
91
- const emitter = new Emitter();
92
- const {
93
- rate,
94
- rotation,
95
- initializers,
96
- behaviours,
97
- emitterBehaviours = [],
98
- position,
99
- totalEmitTimes = Infinity,
100
- life = Infinity
101
- } = data;
102
- emitter.setRate(makeRate(rate)).setRotation(rotation).setInitializers(makeInitializers(initializers, THREE)).setBehaviours(makeBehaviours(behaviours)).setEmitterBehaviours(makeBehaviours(emitterBehaviours)).setPosition(position).emit(totalEmitTimes, life);
103
- system.addEmitter(emitter);
104
- });
105
- return system;
106
- });
107
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL2Zyb21KU09OLmpzIl0sIm5hbWVzIjpbIkJlaGF2aW91ciIsIkluaXRpYWxpemVyIiwiRVVMRVIiLCJQT09MX01BWCIsIklOSVRJQUxJWkVSX1RZUEVTX1RIQVRfUkVRVUlSRV9USFJFRSIsIlNVUFBPUlRFRF9KU09OX0JFSEFWSU9VUl9UWVBFUyIsIlNVUFBPUlRFRF9KU09OX0lOSVRJQUxJWkVSX1RZUEVTIiwiUmF0ZSIsIm1ha2VSYXRlIiwianNvbiIsImZyb21KU09OIiwibWFrZUluaXRpYWxpemVycyIsIml0ZW1zIiwiVEhSRUUiLCJpbml0aWFsaXplcnMiLCJmb3JFYWNoIiwiZGF0YSIsInR5cGUiLCJwcm9wZXJ0aWVzIiwiaW5jbHVkZXMiLCJFcnJvciIsInB1c2giLCJtYWtlQmVoYXZpb3VycyIsImJlaGF2aW91cnMiLCJTeXN0ZW0iLCJFbWl0dGVyIiwicHJlUGFydGljbGVzIiwiaW50ZWdyYXRpb25UeXBlIiwiZW1pdHRlcnMiLCJzeXN0ZW0iLCJlbWl0dGVyIiwicmF0ZSIsInJvdGF0aW9uIiwiZW1pdHRlckJlaGF2aW91cnMiLCJwb3NpdGlvbiIsInRvdGFsRW1pdFRpbWVzIiwiSW5maW5pdHkiLCJsaWZlIiwic2V0UmF0ZSIsInNldFJvdGF0aW9uIiwic2V0SW5pdGlhbGl6ZXJzIiwic2V0QmVoYXZpb3VycyIsInNldEVtaXR0ZXJCZWhhdmlvdXJzIiwic2V0UG9zaXRpb24iLCJlbWl0IiwiYWRkRW1pdHRlciJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLQSxTQUFaLE1BQTJCLGNBQTNCO0FBQ0EsT0FBTyxLQUFLQyxXQUFaLE1BQTZCLGdCQUE3QjtBQUVBLFNBQVNDLEtBQVQsRUFBZ0JDLFFBQWhCLFFBQWdDLGNBQWhDO0FBQ0EsU0FDRUMsb0NBREYsRUFFRUMsOEJBRkYsRUFHRUMsZ0NBSEYsUUFJTyxhQUpQO0FBTUEsT0FBT0MsSUFBUCxNQUFpQixxQkFBakI7QUFFQTtBQUNBO0FBQ0E7QUFDQTtB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Q3VCLElBQUQsQ0FEbkIsRUFFR1EsV0FGSCxDQUVlUCxRQUZmLEVBR0dRLGVBSEgsQ0FHbUI3QixnQkFBZ0IsQ0FBQ0csWUFBRCxFQUFlRCxLQUFmLENBSG5DLEVBSUc0QixhQUpILENBSWlCbkIsY0FBYyxDQUFDQyxVQUFELENBSi9CLEVBS0dtQixvQkFMSCxDQUt3QnBCLGNBQWMsQ0FBQ1csaUJBQUQsQ0FMdEMsRUFNR1UsV0FOSCxDQU1lVCxRQU5mLEVBT0dVLElBUEgsQ0FPUVQsY0FQUixFQU93QkUsSUFQeEI7QUFTQVIsSUFBQUEsTUFBTSxDQUFDZ0IsVUFBUCxDQUFrQmYsT0FBbEI7QUFDRCxHQXZCRDtBQXlCQSxTQUFPRCxNQUFQO0FBQ0QsQ0FsQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBCZWhhdmlvdXIgZnJvbSAnLi4vYmVoYXZpb3VyJztcbmltcG9ydCAqIGFzIEluaXRpYWxpemVyIGZyb20gJy4uL2luaXRpYWxpemVyJztcblxuaW1wb3J0IHsgRVVMRVIsIFBPT0xfTUFYIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIElOSVRJQUxJWkVSX1RZUEVTX1RIQVRfUkVRVUlSRV9USFJFRSxcbiAgU1VQUE9SVEVEX0pTT05fQkVIQVZJT1VSX1RZUEVTLFxuICBTVVBQT1JURURfSlNPTl9JTklUSUFMSVpFUl9UWVBFUyxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5pbXBvcnQgUmF0ZSBmcm9tICcuLi9pbml0aWFsaXplci9SYXRlJztcblxuLyoqXG4gKiBNYWtlcyBhIHJhdGUgaW5zdGFuY2UuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGpzb24gLSBUaGUgZGF0YSByZXF1aXJlZCB0byBjb25zdHJ1Y3QgYSBSYXRlIGluc3RhbmNlXG4gKiBAcmV0dXJuIHtSYXRlfVxuICovXG5jb25zdCBtYWtlUmF0ZSA9IGpzb24gPT4gUmF0ZS5mcm9tSlNPTihqc29uKTtcblxuLyoqXG4gKiBNYWtlcyBpbml0aWFsaXplcnMgZnJvbSBqc29uIGl0ZW1zLlxuICpcbiAqIEBwYXJhbSB7YXJyYXk8b2JqZWN0Pn0gaXRlbXMgLSBBbiBhcnJheSBvZiBvYmplY3RzIHdoaWNoIHByb3ZpZGUgaW5pdGlhbGl6ZXIgY29uc3RydWN0b3IgcGFyYW1zXG4gKiBAcGFyYW0ge29iamVjdH0gVEhSRUUgLSBUaGUgV2ViIEdMIEFwaSB0byB1c2VcbiAqIEByZXR1cm4ge2FycmF5PEluaXRpYWxpemVyPn1cbiAqL1xuY29uc3QgbWFrZUluaXRpYWxpemVycyA9IChpdGVtcywgVEhSRUUpID0+IHtcbiAgY29uc3QgaW5pdGlhbGl6ZXJzID0gW107XG5cbiAgaXRlbXMuZm9yRWFjaChkYXRhID0+IHtcbiAgICBjb25zdCB7IHR5cGUsIHByb3BlcnRpZXMgfSA9IGRhdGE7XG5cbiAgICBpZiAoIVNVUFBPUlRFRF9KU09OX0lOSVRJQUxJWkVSX1RZUEVTLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBUaGUgaW5pdGlhbGl6ZXIgdHlwZSAke3R5cGV9IGlzIGludmFsaWQgb3Igbm90IHlldCBzdXBwb3J0ZWRgXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChJTklUSUFMSVpFUl9UWVBFU19USEFUX1JFUVVJUkVfVEhSRUUuaW5jbHVkZXModHlwZSkpIHtcbiAgICAgIGluaXRpYWxpemVycy5wdXNoKEluaXRpYWxpemVyW3R5cGVdLmZyb21KU09OKHByb3BlcnRpZXMsIFRIUkVFKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluaXRpYWxpemVycy5wdXNoKEluaXRpYWxpemVyW3R5cGVdLmZyb21KU09OKHByb3BlcnRpZXMpKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBpbml0aWFsaXplcnM7XG59O1xuXG4vKipcbiAqIE1ha2VzIGJlaGF2aW91cnMgZnJvbSBqc29uIGl0ZW1zLlxuICpcbiAqIEBwYXJhbSB7YXJyYXk8b2JqZWN0Pn0gaXRlbXMgLSBBbiBhcnJheSBvZiBvYmplY3RzIHdoaWNoIHByb3ZpZGUgYmVoYXZpb3VyIGNvbnN0cnVjdG9yIHBhcmFtc1xuICogQHJldHVybiB7YXJyYXk8QmVoYXZpb3VyPn1cbiAqL1xuY29uc3QgbWFrZUJlaGF2aW91cnMgPSBpdGVtcyA9PiB7XG4gIGNvbnN0IGJlaGF2aW91cnMgPSBbXTtcblxuICBpdGVtcy5mb3JFYWNoKGRhdGEgPT4ge1xuICAgIGNvbnN0IHsgdHlwZSwgcHJvcGVydGllcyB9ID0gZGF0YTtcblxuICAgIGlmICghU1VQUE9SVEVEX0pTT05fQkVIQVZJT1VSX1RZUEVTLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBUaGUgYmVoYXZpb3VyIHR5cGUgJHt0eXBlfSBpcyBpbnZhbGlkIG9yIG5vdCB5ZXQgc3VwcG9ydGVkYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBiZWhhdmlvdXJzLnB1c2goQmVoYXZpb3VyW3R5cGVdLmZyb21KU09OKHByb3BlcnRpZXMpKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGJlaGF2aW91cnM7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBTeXN0ZW0gaW5zdGFuY2UgZnJvbSBhIEpTT04gb2JqZWN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBmcm9tSlNPTkFzeW5jIGluc3RlYWQuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGpzb24gLSBUaGUgSlNPTiB0byBjcmVhdGUgdGhlIFN5c3RlbSBpbnN0YW5jZSBmcm9tXG4gKiBAcGFyYW0ge29iamVjdH0gVEhSRUUgLSBUaGUgV2ViIEdMIEFwaSB0byB1c2VcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFN5c3RlbSAtIFRoZSBzeXN0ZW0gY2xhc3NcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IEVtaXR0ZXIgLSBUaGUgZW1pdHRlciBjbGFzc1xuICogQHBhcmFtIHtudW1iZXJ9IGpzb24ucHJlUGFydGljbGVzIC0gVGhlIHByZWRldGVybWluZWQgbnVtYmVyIG9mIHBhcnRpY2xlc1xuICogQHBhcmFtIHtzdHJpbmd9IGpzb24uaW50ZWdyYXRpb25UeXBlIC0gVGhlIGludGVncmF0aW9uIGFsZ29yaXRobSB0byB1c2VcbiAqIEBwYXJhbSB7YXJyYXk8b2JqZWN0Pn0ganNvbi5lbWl0dGVycyAtIFRoZSBlbWl0dGVycyBmb3IgdGhlIHN5c3RlbSBpbnN0YW5jZVxuICogQHJldHVybiB7U3lzdGVtfVxuICovXG5leHBvcnQgZGVmYXVsdCAoanNvbiwgVEhSRUUsIFN5c3RlbSwgRW1pdHRlcikgPT4ge1xuICBjb25zdCB7XG4gICAgcHJlUGFydGljbGVzID0gUE9PTF9NQVgsXG4gICAgaW50ZWdyYXRpb25UeXBlID0gRVVMRVIsXG4gICAgZW1pdHRlcnMgPSBbXSxcbiAgfSA9IGpzb247XG4gIGNvbnN0IHN5c3RlbSA9IG5ldyBTeXN0ZW0oVEhSRUUsIHByZVBhcnRpY2xlcywgaW50ZWdyYXRpb25UeXBlKTtcblxuICBlbWl0dGVycy5mb3JFYWNoKGRhdGEgPT4ge1xuICAgIGNvbnN0IGVtaXR0ZXIgPSBuZXcgRW1pdHRlcigpO1xuICAgIGNvbnN0IHtcbiAgICAgIHJhdGUsXG4gICAgICByb3RhdGlvbixcbiAgICAgIGluaXRpYWxpemVycyxcbiAgICAgIGJlaGF2aW91cnMsXG4gICAgICBlbWl0dGVyQmVoYXZpb3VycyA9IFtdLFxuICAgICAgcG9zaXRpb24sXG4gICAgICB0b3RhbEVtaXRUaW1lcyA9IEluZmluaXR5LFxuICAgICAgbGlmZSA9IEluZmluaXR5LFxuICAgIH0gPSBkYXRhO1xuXG4gICAgZW1pdHRlclxuICAgICAgLnNldFJhdGUobWFrZVJhdGUocmF0ZSkpXG4gICAgICAuc2V0Um90YXRpb24ocm90YXRpb24pXG4gICAgICAuc2V0SW5pdGlhbGl6ZXJzKG1ha2VJbml0aWFsaXplcnMoaW5pdGlhbGl6ZXJzLCBUSFJFRSkpXG4gICAgICAuc2V0QmVoYXZpb3VycyhtYWtlQmVoYXZpb3VycyhiZWhhdmlvdXJzKSlcbiAgICAgIC5zZXRFbWl0dGVyQmVoYXZpb3VycyhtYWtlQmVoYXZpb3VycyhlbWl0dGVyQmVoYXZpb3VycykpXG4gICAgICAuc2V0UG9zaXRpb24ocG9zaXRpb24pXG4gICAgICAuZW1pdCh0b3RhbEVtaXRUaW1lcywgbGlmZSk7XG5cbiAgICBzeXN0ZW0uYWRkRW1pdHRlcihlbWl0dGVyKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHN5c3RlbTtcbn07XG4iXX0=