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.
- package/CHANGELOG.md +10 -0
- package/dist/three-nebula.cjs +109 -0
- package/dist/three-nebula.cjs.map +1 -0
- package/dist/three-nebula.mjs +2968 -0
- package/dist/three-nebula.mjs.map +1 -0
- package/dist/three-nebula.umd.js +109 -0
- package/dist/three-nebula.umd.js.map +1 -0
- package/package.json +23 -47
- package/specs/01-emitter-hierarchy.md +200 -0
- package/specs/02-determinism-scrubbing.md +188 -0
- package/specs/03-sound-renderer.md +183 -0
- package/specs/04-schema-versioning.md +140 -0
- package/specs/05-content-addressed-assets.md +288 -0
- package/specs/README.md +80 -0
- package/build/cjs/behaviour/Alpha.js +0 -189
- package/build/cjs/behaviour/Attraction.js +0 -189
- package/build/cjs/behaviour/Behaviour.js +0 -253
- package/build/cjs/behaviour/Collision.js +0 -146
- package/build/cjs/behaviour/Color.js +0 -148
- package/build/cjs/behaviour/CrossZone.js +0 -141
- package/build/cjs/behaviour/Force.js +0 -126
- package/build/cjs/behaviour/Gravity.js +0 -78
- package/build/cjs/behaviour/RandomDrift.js +0 -153
- package/build/cjs/behaviour/Repulsion.js +0 -123
- package/build/cjs/behaviour/Rotate.js +0 -265
- package/build/cjs/behaviour/Scale.js +0 -177
- package/build/cjs/behaviour/Spring.js +0 -133
- package/build/cjs/behaviour/constants.js +0 -28
- package/build/cjs/behaviour/index.js +0 -112
- package/build/cjs/behaviour/types.js +0 -33
- package/build/cjs/constants/index.js +0 -61
- package/build/cjs/core/Particle.js +0 -390
- package/build/cjs/core/Pool.js +0 -203
- package/build/cjs/core/System.js +0 -366
- package/build/cjs/core/constants.js +0 -163
- package/build/cjs/core/fromJSON.js +0 -128
- package/build/cjs/core/fromJSONAsync.js +0 -239
- package/build/cjs/core/index.js +0 -32
- package/build/cjs/core/three/Euler.js +0 -233
- package/build/cjs/core/three/Math.js +0 -91
- package/build/cjs/core/three/Matrix4.js +0 -745
- package/build/cjs/core/three/Quaternion.js +0 -451
- package/build/cjs/core/three/Vector3.js +0 -464
- package/build/cjs/core/three/constants.js +0 -298
- package/build/cjs/core/three/index.js +0 -48
- package/build/cjs/core/types.js +0 -13
- package/build/cjs/debug/Debug.js +0 -209
- package/build/cjs/debug/constants.js +0 -19
- package/build/cjs/debug/index.js +0 -24
- package/build/cjs/debug/log.js +0 -38
- package/build/cjs/ease/index.js +0 -149
- package/build/cjs/emitter/Emitter.js +0 -798
- package/build/cjs/emitter/FollowEmitter.js +0 -146
- package/build/cjs/emitter/constants.js +0 -20
- package/build/cjs/emitter/index.js +0 -24
- package/build/cjs/emitter/types.js +0 -11
- package/build/cjs/events/EventDispatcher.js +0 -105
- package/build/cjs/events/constants.js +0 -23
- package/build/cjs/events/index.js +0 -27
- package/build/cjs/index.js +0 -151
- package/build/cjs/initializer/Body.js +0 -122
- package/build/cjs/initializer/BodySprite.js +0 -146
- package/build/cjs/initializer/Initializer.js +0 -109
- package/build/cjs/initializer/InitializerUtil.js +0 -54
- package/build/cjs/initializer/Life.js +0 -106
- package/build/cjs/initializer/Mass.js +0 -101
- package/build/cjs/initializer/Position.js +0 -152
- package/build/cjs/initializer/Radius.js +0 -118
- package/build/cjs/initializer/Rate.js +0 -150
- package/build/cjs/initializer/Rotation.js +0 -95
- package/build/cjs/initializer/Texture.js +0 -139
- package/build/cjs/initializer/Velocity/PolarVelocity.js +0 -102
- package/build/cjs/initializer/Velocity/RadialVelocity.js +0 -111
- package/build/cjs/initializer/Velocity/VectorVelocity.js +0 -108
- package/build/cjs/initializer/Velocity/Velocity.js +0 -94
- package/build/cjs/initializer/Velocity/index.js +0 -32
- package/build/cjs/initializer/constants.js +0 -43
- package/build/cjs/initializer/index.js +0 -108
- package/build/cjs/initializer/types.js +0 -37
- package/build/cjs/math/ArraySpan.js +0 -103
- package/build/cjs/math/Box.js +0 -46
- package/build/cjs/math/ColorSpan.js +0 -113
- package/build/cjs/math/MathUtils.js +0 -57
- package/build/cjs/math/Polar3D.js +0 -115
- package/build/cjs/math/Span.js +0 -88
- package/build/cjs/math/Vector3D.js +0 -76
- package/build/cjs/math/constants.js +0 -35
- package/build/cjs/math/index.js +0 -122
- package/build/cjs/math/integration.js +0 -59
- package/build/cjs/math/types.js +0 -19
- package/build/cjs/renderer/BaseRenderer.js +0 -108
- package/build/cjs/renderer/CustomRenderer.js +0 -65
- package/build/cjs/renderer/GPURenderer/Desktop/index.js +0 -371
- package/build/cjs/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +0 -13
- package/build/cjs/renderer/GPURenderer/Desktop/shaders/index.js +0 -22
- package/build/cjs/renderer/GPURenderer/Desktop/shaders/vertexShader.js +0 -17
- package/build/cjs/renderer/GPURenderer/Mobile/index.js +0 -385
- package/build/cjs/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +0 -13
- package/build/cjs/renderer/GPURenderer/Mobile/shaders/index.js +0 -22
- package/build/cjs/renderer/GPURenderer/Mobile/shaders/vertexShader.js +0 -15
- package/build/cjs/renderer/GPURenderer/common/ParticleBuffer/constants.js +0 -58
- package/build/cjs/renderer/GPURenderer/common/ParticleBuffer/index.js +0 -93
- package/build/cjs/renderer/GPURenderer/common/TextureAtlas/constants.js +0 -9
- package/build/cjs/renderer/GPURenderer/common/TextureAtlas/index.js +0 -221
- package/build/cjs/renderer/GPURenderer/common/constants.js +0 -22
- package/build/cjs/renderer/GPURenderer/common/index.js +0 -38
- package/build/cjs/renderer/GPURenderer/common/shaders/constants.js +0 -9
- package/build/cjs/renderer/GPURenderer/common/stores/Target.js +0 -45
- package/build/cjs/renderer/GPURenderer/common/stores/UniqueList.js +0 -51
- package/build/cjs/renderer/GPURenderer/common/stores/index.js +0 -22
- package/build/cjs/renderer/GPURenderer/index.js +0 -97
- package/build/cjs/renderer/MeshRenderer.js +0 -136
- package/build/cjs/renderer/SpriteRenderer.js +0 -68
- package/build/cjs/renderer/index.js +0 -40
- package/build/cjs/renderer/types.js +0 -21
- package/build/cjs/utils/ColorUtil.js +0 -39
- package/build/cjs/utils/PUID.js +0 -26
- package/build/cjs/utils/THREEUtil.js +0 -40
- package/build/cjs/utils/Util.js +0 -69
- package/build/cjs/utils/index.js +0 -61
- package/build/cjs/utils/uid.js +0 -12
- package/build/cjs/zone/BoxZone.js +0 -178
- package/build/cjs/zone/LineZone.js +0 -101
- package/build/cjs/zone/MeshZone.js +0 -101
- package/build/cjs/zone/PointZone.js +0 -99
- package/build/cjs/zone/ScreenZone.js +0 -164
- package/build/cjs/zone/SphereZone.js +0 -155
- package/build/cjs/zone/Zone.js +0 -172
- package/build/cjs/zone/index.js +0 -56
- package/build/cjs/zone/types.js +0 -21
- package/build/esm/behaviour/Alpha.js +0 -134
- package/build/esm/behaviour/Attraction.js +0 -135
- package/build/esm/behaviour/Behaviour.js +0 -215
- package/build/esm/behaviour/Collision.js +0 -100
- package/build/esm/behaviour/Color.js +0 -101
- package/build/esm/behaviour/CrossZone.js +0 -82
- package/build/esm/behaviour/Force.js +0 -83
- package/build/esm/behaviour/Gravity.js +0 -40
- package/build/esm/behaviour/RandomDrift.js +0 -97
- package/build/esm/behaviour/Repulsion.js +0 -81
- package/build/esm/behaviour/Rotate.js +0 -214
- package/build/esm/behaviour/Scale.js +0 -131
- package/build/esm/behaviour/Spring.js +0 -90
- package/build/esm/behaviour/constants.js +0 -11
- package/build/esm/behaviour/index.js +0 -14
- package/build/esm/behaviour/types.js +0 -14
- package/build/esm/constants/index.js +0 -42
- package/build/esm/core/Particle.js +0 -357
- package/build/esm/core/Pool.js +0 -161
- package/build/esm/core/System.js +0 -320
- package/build/esm/core/constants.js +0 -127
- package/build/esm/core/fromJSON.js +0 -107
- package/build/esm/core/fromJSONAsync.js +0 -210
- package/build/esm/core/index.js +0 -4
- package/build/esm/core/three/Euler.js +0 -224
- package/build/esm/core/three/Math.js +0 -84
- package/build/esm/core/three/Matrix4.js +0 -739
- package/build/esm/core/three/Quaternion.js +0 -445
- package/build/esm/core/three/Vector3.js +0 -457
- package/build/esm/core/three/constants.js +0 -148
- package/build/esm/core/three/index.js +0 -5
- package/build/esm/core/types.js +0 -4
- package/build/esm/debug/Debug.js +0 -195
- package/build/esm/debug/constants.js +0 -7
- package/build/esm/debug/index.js +0 -3
- package/build/esm/debug/log.js +0 -31
- package/build/esm/ease/index.js +0 -113
- package/build/esm/emitter/Emitter.js +0 -708
- package/build/esm/emitter/FollowEmitter.js +0 -97
- package/build/esm/emitter/constants.js +0 -7
- package/build/esm/emitter/index.js +0 -3
- package/build/esm/emitter/types.js +0 -3
- package/build/esm/events/EventDispatcher.js +0 -82
- package/build/esm/events/constants.js +0 -9
- package/build/esm/events/index.js +0 -4
- package/build/esm/index.js +0 -13
- package/build/esm/initializer/Body.js +0 -83
- package/build/esm/initializer/BodySprite.js +0 -108
- package/build/esm/initializer/Initializer.js +0 -84
- package/build/esm/initializer/InitializerUtil.js +0 -48
- package/build/esm/initializer/Life.js +0 -66
- package/build/esm/initializer/Mass.js +0 -60
- package/build/esm/initializer/Position.js +0 -98
- package/build/esm/initializer/Radius.js +0 -75
- package/build/esm/initializer/Rate.js +0 -107
- package/build/esm/initializer/Rotation.js +0 -54
- package/build/esm/initializer/Texture.js +0 -101
- package/build/esm/initializer/Velocity/PolarVelocity.js +0 -63
- package/build/esm/initializer/Velocity/RadialVelocity.js +0 -72
- package/build/esm/initializer/Velocity/VectorVelocity.js +0 -69
- package/build/esm/initializer/Velocity/Velocity.js +0 -52
- package/build/esm/initializer/Velocity/index.js +0 -4
- package/build/esm/initializer/constants.js +0 -26
- package/build/esm/initializer/index.js +0 -12
- package/build/esm/initializer/types.js +0 -16
- package/build/esm/math/ArraySpan.js +0 -62
- package/build/esm/math/Box.js +0 -25
- package/build/esm/math/ColorSpan.js +0 -71
- package/build/esm/math/MathUtils.js +0 -48
- package/build/esm/math/Polar3D.js +0 -81
- package/build/esm/math/Span.js +0 -63
- package/build/esm/math/Vector3D.js +0 -34
- package/build/esm/math/constants.js +0 -24
- package/build/esm/math/index.js +0 -10
- package/build/esm/math/integration.js +0 -47
- package/build/esm/math/types.js +0 -7
- package/build/esm/renderer/BaseRenderer.js +0 -78
- package/build/esm/renderer/CustomRenderer.js +0 -23
- package/build/esm/renderer/GPURenderer/Desktop/index.js +0 -357
- package/build/esm/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +0 -30
- package/build/esm/renderer/GPURenderer/Desktop/shaders/index.js +0 -3
- package/build/esm/renderer/GPURenderer/Desktop/shaders/vertexShader.js +0 -36
- package/build/esm/renderer/GPURenderer/Mobile/index.js +0 -375
- package/build/esm/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +0 -27
- package/build/esm/renderer/GPURenderer/Mobile/shaders/index.js +0 -3
- package/build/esm/renderer/GPURenderer/Mobile/shaders/vertexShader.js +0 -33
- package/build/esm/renderer/GPURenderer/common/ParticleBuffer/constants.js +0 -30
- package/build/esm/renderer/GPURenderer/common/ParticleBuffer/index.js +0 -70
- package/build/esm/renderer/GPURenderer/common/TextureAtlas/constants.js +0 -2
- package/build/esm/renderer/GPURenderer/common/TextureAtlas/index.js +0 -206
- package/build/esm/renderer/GPURenderer/common/constants.js +0 -13
- package/build/esm/renderer/GPURenderer/common/index.js +0 -4
- package/build/esm/renderer/GPURenderer/common/shaders/constants.js +0 -2
- package/build/esm/renderer/GPURenderer/common/stores/Target.js +0 -26
- package/build/esm/renderer/GPURenderer/common/stores/UniqueList.js +0 -29
- package/build/esm/renderer/GPURenderer/common/stores/index.js +0 -3
- package/build/esm/renderer/GPURenderer/index.js +0 -57
- package/build/esm/renderer/MeshRenderer.js +0 -93
- package/build/esm/renderer/SpriteRenderer.js +0 -30
- package/build/esm/renderer/index.js +0 -5
- package/build/esm/renderer/types.js +0 -8
- package/build/esm/utils/ColorUtil.js +0 -32
- package/build/esm/utils/PUID.js +0 -19
- package/build/esm/utils/THREEUtil.js +0 -31
- package/build/esm/utils/Util.js +0 -60
- package/build/esm/utils/index.js +0 -13
- package/build/esm/utils/uid.js +0 -3
- package/build/esm/zone/BoxZone.js +0 -133
- package/build/esm/zone/LineZone.js +0 -61
- package/build/esm/zone/MeshZone.js +0 -60
- package/build/esm/zone/PointZone.js +0 -59
- package/build/esm/zone/ScreenZone.js +0 -116
- package/build/esm/zone/SphereZone.js +0 -113
- package/build/esm/zone/Zone.js +0 -141
- package/build/esm/zone/index.js +0 -7
- package/build/esm/zone/types.js +0 -8
- package/build/three-nebula.js +0 -2
- package/build/three-nebula.js.map +0 -1
package/build/esm/core/System.js
DELETED
|
@@ -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=
|