three-nebula 11.0.0 → 11.1.1
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 +16 -0
- package/dist/three-nebula.cjs +109 -0
- package/dist/three-nebula.cjs.map +1 -0
- package/dist/three-nebula.mjs +2969 -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
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import Initializer from './Initializer';
|
|
2
|
-
import { createSpan } from '../math';
|
|
3
|
-
import { INITIALIZER_TYPE_LIFE as type } from './types';
|
|
4
|
-
/**
|
|
5
|
-
* Sets the life property on initialized particles.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
export default class Life extends Initializer {
|
|
10
|
-
/**
|
|
11
|
-
* Constructs a Life property instance.
|
|
12
|
-
*
|
|
13
|
-
* @param {number} min - The minimum life
|
|
14
|
-
* @param {number} max - The maximum life
|
|
15
|
-
* @param {boolean} [center] - Determines whether to average the life value
|
|
16
|
-
* @param {boolean} [isEnabled=true] - Determines if the initializer should be enabled or not
|
|
17
|
-
* @return void
|
|
18
|
-
*/
|
|
19
|
-
constructor(min, max, center, isEnabled = true) {
|
|
20
|
-
super(type, isEnabled);
|
|
21
|
-
/**
|
|
22
|
-
* @desc The life span of the particle.
|
|
23
|
-
* @type {Span}
|
|
24
|
-
*/
|
|
25
|
-
|
|
26
|
-
this.lifePan = createSpan(min, max, center);
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Sets the particle's initial life.
|
|
30
|
-
*
|
|
31
|
-
* @param {Particle} particle - the particle to initialize the property on
|
|
32
|
-
* @return void
|
|
33
|
-
*/
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
initialize(particle) {
|
|
37
|
-
if (this.lifePan.a == Infinity || this.lifePan.a == 'infi') {
|
|
38
|
-
particle.life = Infinity;
|
|
39
|
-
} else {
|
|
40
|
-
particle.life = this.lifePan.getValue();
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Creates a Life initializer from JSON.
|
|
45
|
-
*
|
|
46
|
-
* @param {object} json - The JSON to construct the instance from.
|
|
47
|
-
* @param {number} json.min - The minimum life time
|
|
48
|
-
* @param {number} json.max - The maximum life time
|
|
49
|
-
* @param {number} json.center - The center of the life time
|
|
50
|
-
* @param {boolean} [json.isEnabled=true] - Determines if the initializer should be enabled or not
|
|
51
|
-
* @return {Life}
|
|
52
|
-
*/
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
static fromJSON(json) {
|
|
56
|
-
const {
|
|
57
|
-
min,
|
|
58
|
-
max,
|
|
59
|
-
center = false,
|
|
60
|
-
isEnabled = true
|
|
61
|
-
} = json;
|
|
62
|
-
return new Life(min, max, center, isEnabled);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbml0aWFsaXplci9MaWZlLmpzIl0sIm5hbWVzIjpbIkluaXRpYWxpemVyIiwiY3JlYXRlU3BhbiIsIklOSVRJQUxJWkVSX1RZUEVfTElGRSIsInR5cGUiLCJMaWZlIiwiY29uc3RydWN0b3IiLCJtaW4iLCJtYXgiLCJjZW50ZXIiLCJpc0VuYWJsZWQiLCJsaWZlUGFuIiwiaW5pdGlhbGl6ZSIsInBhcnRpY2xlIiwiYSIsIkluZmluaXR5IiwibGlmZSIsImdldFZhbHVlIiwiZnJvbUpTT04iLCJqc29uIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxXQUFQLE1BQXdCLGVBQXhCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixTQUEzQjtBQUNBLFNBQVNDLHFCQUFxQixJQUFJQyxJQUFsQyxRQUE4QyxTQUE5QztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLGVBQWUsTUFBTUMsSUFBTixTQUFtQkosV0FBbkIsQ0FBK0I7QUFDNUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0VLLEVBQUFBLFdBQVcsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLE1BQVgsRUFBbUJDLFNBQVMsR0FBRyxJQUEvQixFQUFxQztBQUM5QyxVQUFNTixJQUFOLEVBQVlNLFNBQVo7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxTQUFLQyxPQUFMLEdBQWVULFVBQVUsQ0FBQ0ssR0FBRCxFQUFNQyxHQUFOLEVBQVdDLE1BQVgsQ0FBekI7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0VHLEVBQUFBLFVBQVUsQ0FBQ0MsUUFBRCxFQUFXO0FBQ25CLFFBQUksS0FBS0YsT0FBTCxDQUFhRyxDQUFiLElBQWtCQyxRQUFsQixJQUE4QixLQUFLSixPQUFMLENBQWFHLENBQWIsSUFBa0IsTUFBcEQsRUFBNEQ7QUFDMURELE1BQUFBLFFBQVEsQ0FBQ0csSUFBVCxHQUFnQkQsUUFBaEI7QUFDRCxLQUZELE1BRU87QUFDTEYsTUFBQUEsUUFBUSxDQUFDRyxJQUFULEdBQWdCLEtBQUtMLE9BQUwsQ0FBYU0sUUFBYixFQUFoQjtBQUNEO0FBQ0Y7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ2lCLFNBQVJDLFFBQVEsQ0FBQ0MsSUFBRCxFQUFPO0FBQ3BCLFVBQU07QUFBRVosTUFBQUEsR0FBRjtBQUFPQyxNQUFBQSxHQUFQO0FBQVlDLE1BQUFBLE1BQU0sR0FBRyxLQUFyQjtBQUE0QkMsTUFBQUEsU0FBUyxHQUFHO0FBQXhDLFFBQWlEUyxJQUF2RDtBQUVBLFdBQU8sSUFBSWQsSUFBSixDQUFTRSxHQUFULEVBQWNDLEdBQWQsRUFBbUJDLE1BQW5CLEVBQTJCQyxTQUEzQixDQUFQO0FBQ0Q7O0FBaEQyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBJbml0aWFsaXplciBmcm9tICcuL0luaXRpYWxpemVyJztcbmltcG9ydCB7IGNyZWF0ZVNwYW4gfSBmcm9tICcuLi9tYXRoJztcbmltcG9ydCB7IElOSVRJQUxJWkVSX1RZUEVfTElGRSBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogU2V0cyB0aGUgbGlmZSBwcm9wZXJ0eSBvbiBpbml0aWFsaXplZCBwYXJ0aWNsZXMuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaWZlIGV4dGVuZHMgSW5pdGlhbGl6ZXIge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhIExpZmUgcHJvcGVydHkgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtaW4gLSBUaGUgbWluaW11bSBsaWZlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtYXggLSBUaGUgbWF4aW11bSBsaWZlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2NlbnRlcl0gLSBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gYXZlcmFnZSB0aGUgbGlmZSB2YWx1ZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0VuYWJsZWQ9dHJ1ZV0gLSBEZXRlcm1pbmVzIGlmIHRoZSBpbml0aWFsaXplciBzaG91bGQgYmUgZW5hYmxlZCBvciBub3RcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3RvcihtaW4sIG1heCwgY2VudGVyLCBpc0VuYWJsZWQgPSB0cnVlKSB7XG4gICAgc3VwZXIodHlwZSwgaXNFbmFibGVkKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBsaWZlIHNwYW4gb2YgdGhlIHBhcnRpY2xlLlxuICAgICAqIEB0eXBlIHtTcGFufVxuICAgICAqL1xuICAgIHRoaXMubGlmZVBhbiA9IGNyZWF0ZVNwYW4obWluLCBtYXgsIGNlbnRlcik7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcGFydGljbGUncyBpbml0aWFsIGxpZmUuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlIC0gdGhlIHBhcnRpY2xlIHRvIGluaXRpYWxpemUgdGhlIHByb3BlcnR5IG9uXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgaW5pdGlhbGl6ZShwYXJ0aWNsZSkge1xuICAgIGlmICh0aGlzLmxpZmVQYW4uYSA9PSBJbmZpbml0eSB8fCB0aGlzLmxpZmVQYW4uYSA9PSAnaW5maScpIHtcbiAgICAgIHBhcnRpY2xlLmxpZmUgPSBJbmZpbml0eTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydGljbGUubGlmZSA9IHRoaXMubGlmZVBhbi5nZXRWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgTGlmZSBpbml0aWFsaXplciBmcm9tIEpTT04uXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBqc29uIC0gVGhlIEpTT04gdG8gY29uc3RydWN0IHRoZSBpbnN0YW5jZSBmcm9tLlxuICAgKiBAcGFyYW0ge251bWJlcn0ganNvbi5taW4gLSBUaGUgbWluaW11bSBsaWZlIHRpbWVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGpzb24ubWF4IC0gVGhlIG1heGltdW0gbGlmZSB0aW1lXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBqc29uLmNlbnRlciAtIFRoZSBjZW50ZXIgb2YgdGhlIGxpZmUgdGltZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtqc29uLmlzRW5hYmxlZD10cnVlXSAtIERldGVybWluZXMgaWYgdGhlIGluaXRpYWxpemVyIHNob3VsZCBiZSBlbmFibGVkIG9yIG5vdFxuICAgKiBAcmV0dXJuIHtMaWZlfVxuICAgKi9cbiAgc3RhdGljIGZyb21KU09OKGpzb24pIHtcbiAgICBjb25zdCB7IG1pbiwgbWF4LCBjZW50ZXIgPSBmYWxzZSwgaXNFbmFibGVkID0gdHJ1ZSB9ID0ganNvbjtcblxuICAgIHJldHVybiBuZXcgTGlmZShtaW4sIG1heCwgY2VudGVyLCBpc0VuYWJsZWQpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import Initializer from './Initializer';
|
|
2
|
-
import { createSpan } from '../math';
|
|
3
|
-
import { INITIALIZER_TYPE_MASS as type } from './types';
|
|
4
|
-
/**
|
|
5
|
-
* Sets the mass property on initialized particles.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
export default class Mass extends Initializer {
|
|
10
|
-
/**
|
|
11
|
-
* Constructs a Mass initializer instance.
|
|
12
|
-
*
|
|
13
|
-
* @param {number} min - The minumum mass for the particle
|
|
14
|
-
* @param {number} max - The maximum mass for the particle
|
|
15
|
-
* @param {boolean} [center] - Determines whether to average the mass value
|
|
16
|
-
* @return void
|
|
17
|
-
*/
|
|
18
|
-
constructor(min, max, center = false, isEnabled = true) {
|
|
19
|
-
super(type, isEnabled);
|
|
20
|
-
/**
|
|
21
|
-
* @desc The mass span which is used to set the particle mass value.
|
|
22
|
-
* @type {Span}
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
this.massPan = createSpan(min, max, center);
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Sets the particle's initial mass.
|
|
29
|
-
*
|
|
30
|
-
* @param {Particle} particle - the particle to initialize the property on
|
|
31
|
-
* @return void
|
|
32
|
-
*/
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
initialize(particle) {
|
|
36
|
-
particle.mass = this.massPan.getValue();
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Creates a Mass initializer from JSON.
|
|
40
|
-
*
|
|
41
|
-
* @param {object} json - The JSON to construct the instance from.
|
|
42
|
-
* @property {number} json.min - The minimum mass
|
|
43
|
-
* @property {number} json.max - The maximum mass
|
|
44
|
-
* @property {number} json.center - The center of the mass
|
|
45
|
-
* @return {Mass}
|
|
46
|
-
*/
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
static fromJSON(json) {
|
|
50
|
-
const {
|
|
51
|
-
min,
|
|
52
|
-
max,
|
|
53
|
-
center = false,
|
|
54
|
-
isEnabled = true
|
|
55
|
-
} = json;
|
|
56
|
-
return new Mass(min, max, center, isEnabled);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbml0aWFsaXplci9NYXNzLmpzIl0sIm5hbWVzIjpbIkluaXRpYWxpemVyIiwiY3JlYXRlU3BhbiIsIklOSVRJQUxJWkVSX1RZUEVfTUFTUyIsInR5cGUiLCJNYXNzIiwiY29uc3RydWN0b3IiLCJtaW4iLCJtYXgiLCJjZW50ZXIiLCJpc0VuYWJsZWQiLCJtYXNzUGFuIiwiaW5pdGlhbGl6ZSIsInBhcnRpY2xlIiwibWFzcyIsImdldFZhbHVlIiwiZnJvbUpTT04iLCJqc29uIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxXQUFQLE1BQXdCLGVBQXhCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixTQUEzQjtBQUNBLFNBQVNDLHFCQUFxQixJQUFJQyxJQUFsQyxRQUE4QyxTQUE5QztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLGVBQWUsTUFBTUMsSUFBTixTQUFtQkosV0FBbkIsQ0FBK0I7QUFDNUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFSyxFQUFBQSxXQUFXLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxNQUFNLEdBQUcsS0FBcEIsRUFBMkJDLFNBQVMsR0FBRyxJQUF2QyxFQUE2QztBQUN0RCxVQUFNTixJQUFOLEVBQVlNLFNBQVo7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxTQUFLQyxPQUFMLEdBQWVULFVBQVUsQ0FBQ0ssR0FBRCxFQUFNQyxHQUFOLEVBQVdDLE1BQVgsQ0FBekI7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0VHLEVBQUFBLFVBQVUsQ0FBQ0MsUUFBRCxFQUFXO0FBQ25CQSxJQUFBQSxRQUFRLENBQUNDLElBQVQsR0FBZ0IsS0FBS0gsT0FBTCxDQUFhSSxRQUFiLEVBQWhCO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNpQixTQUFSQyxRQUFRLENBQUNDLElBQUQsRUFBTztBQUNwQixVQUFNO0FBQUVWLE1BQUFBLEdBQUY7QUFBT0MsTUFBQUEsR0FBUDtBQUFZQyxNQUFBQSxNQUFNLEdBQUcsS0FBckI7QUFBNEJDLE1BQUFBLFNBQVMsR0FBRztBQUF4QyxRQUFpRE8sSUFBdkQ7QUFFQSxXQUFPLElBQUlaLElBQUosQ0FBU0UsR0FBVCxFQUFjQyxHQUFkLEVBQW1CQyxNQUFuQixFQUEyQkMsU0FBM0IsQ0FBUDtBQUNEOztBQTFDMkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgSW5pdGlhbGl6ZXIgZnJvbSAnLi9Jbml0aWFsaXplcic7XG5pbXBvcnQgeyBjcmVhdGVTcGFuIH0gZnJvbSAnLi4vbWF0aCc7XG5pbXBvcnQgeyBJTklUSUFMSVpFUl9UWVBFX01BU1MgYXMgdHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFNldHMgdGhlIG1hc3MgcHJvcGVydHkgb24gaW5pdGlhbGl6ZWQgcGFydGljbGVzLlxuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWFzcyBleHRlbmRzIEluaXRpYWxpemVyIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBNYXNzIGluaXRpYWxpemVyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbWluIC0gVGhlIG1pbnVtdW0gbWFzcyBmb3IgdGhlIHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtYXggLSBUaGUgbWF4aW11bSBtYXNzIGZvciB0aGUgcGFydGljbGVcbiAgICogQHBhcmFtIHtib29sZWFufSBbY2VudGVyXSAtIERldGVybWluZXMgd2hldGhlciB0byBhdmVyYWdlIHRoZSBtYXNzIHZhbHVlXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgY29uc3RydWN0b3IobWluLCBtYXgsIGNlbnRlciA9IGZhbHNlLCBpc0VuYWJsZWQgPSB0cnVlKSB7XG4gICAgc3VwZXIodHlwZSwgaXNFbmFibGVkKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBtYXNzIHNwYW4gd2hpY2ggaXMgdXNlZCB0byBzZXQgdGhlIHBhcnRpY2xlIG1hc3MgdmFsdWUuXG4gICAgICogQHR5cGUge1NwYW59XG4gICAgICovXG4gICAgdGhpcy5tYXNzUGFuID0gY3JlYXRlU3BhbihtaW4sIG1heCwgY2VudGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwYXJ0aWNsZSdzIGluaXRpYWwgbWFzcy5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSB0aGUgcGFydGljbGUgdG8gaW5pdGlhbGl6ZSB0aGUgcHJvcGVydHkgb25cbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7XG4gICAgcGFydGljbGUubWFzcyA9IHRoaXMubWFzc1Bhbi5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBNYXNzIGluaXRpYWxpemVyIGZyb20gSlNPTi5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGpzb24gLSBUaGUgSlNPTiB0byBjb25zdHJ1Y3QgdGhlIGluc3RhbmNlIGZyb20uXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBqc29uLm1pbiAtIFRoZSBtaW5pbXVtIG1hc3NcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IGpzb24ubWF4IC0gVGhlIG1heGltdW0gbWFzc1xuICAgKiBAcHJvcGVydHkge251bWJlcn0ganNvbi5jZW50ZXIgLSBUaGUgY2VudGVyIG9mIHRoZSBtYXNzXG4gICAqIEByZXR1cm4ge01hc3N9XG4gICAqL1xuICBzdGF0aWMgZnJvbUpTT04oanNvbikge1xuICAgIGNvbnN0IHsgbWluLCBtYXgsIGNlbnRlciA9IGZhbHNlLCBpc0VuYWJsZWQgPSB0cnVlIH0gPSBqc29uO1xuXG4gICAgcmV0dXJuIG5ldyBNYXNzKG1pbiwgbWF4LCBjZW50ZXIsIGlzRW5hYmxlZCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
2
|
-
const _excluded = ["zoneType"];
|
|
3
|
-
import * as Zone from '../zone';
|
|
4
|
-
import Initializer from './Initializer';
|
|
5
|
-
import { SUPPORTED_JSON_ZONE_TYPES } from '../core/constants';
|
|
6
|
-
import { INITIALIZER_TYPE_POSITION as type } from './types';
|
|
7
|
-
/**
|
|
8
|
-
* Sets the starting position property for initialized particles.
|
|
9
|
-
* This is derived from a zone randomly chosen from those supplied to the constructor.
|
|
10
|
-
*
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
export default class Position extends Initializer {
|
|
14
|
-
/**
|
|
15
|
-
* Constructs a Position initializer instance.
|
|
16
|
-
*
|
|
17
|
-
* @param {Zone|array<Zone>}
|
|
18
|
-
* @return void
|
|
19
|
-
*/
|
|
20
|
-
constructor() {
|
|
21
|
-
super(type);
|
|
22
|
-
this.reset.apply(this, arguments);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Resets the initializer properties.
|
|
26
|
-
* Clears all previously set zones and resets the zones according to args passed.
|
|
27
|
-
*
|
|
28
|
-
* @param {Zone|array<Zone>}
|
|
29
|
-
* @return void
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
reset() {
|
|
34
|
-
if (!this.zones) {
|
|
35
|
-
this.zones = [];
|
|
36
|
-
} else {
|
|
37
|
-
this.zones.length = 0;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* @desc The zones to use as bounds for calculating the particle's starting position.
|
|
41
|
-
* @type {array<Zone>}
|
|
42
|
-
*/
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
this.zones = this.zones.concat(Array.prototype.slice.call(arguments));
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Adds a zone or zones to this.zones.
|
|
49
|
-
*
|
|
50
|
-
* @param {Zone|array<Zone>}
|
|
51
|
-
* @return void
|
|
52
|
-
*/
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
addZone() {
|
|
56
|
-
this.zones = this.zones.concat(Array.prototype.slice.call(arguments));
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Creates a Position initializer from JSON.
|
|
60
|
-
*
|
|
61
|
-
* @param {object} json - The JSON to construct the instance from.
|
|
62
|
-
* @param {string} json.zoneType - The type of zone to use for initial position
|
|
63
|
-
* @return {Position}
|
|
64
|
-
*/
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
static fromJSON(json) {
|
|
68
|
-
const {
|
|
69
|
-
zoneType
|
|
70
|
-
} = json,
|
|
71
|
-
params = _objectWithoutProperties(json, _excluded);
|
|
72
|
-
|
|
73
|
-
if (!SUPPORTED_JSON_ZONE_TYPES.includes(zoneType)) {
|
|
74
|
-
throw new Error(`The zone type ${zoneType} is invalid or not yet supported`);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return new Position(new Zone[zoneType](...Object.values(params)));
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Sets the particle's initial position.
|
|
83
|
-
*
|
|
84
|
-
* @param {Particle} particle - the particle to initialize the property on
|
|
85
|
-
* @return void
|
|
86
|
-
*/
|
|
87
|
-
|
|
88
|
-
Position.prototype.initialize = function () {
|
|
89
|
-
let zone;
|
|
90
|
-
return function (target) {
|
|
91
|
-
zone = this.zones[Math.random() * this.zones.length >> 0];
|
|
92
|
-
zone.getPosition();
|
|
93
|
-
target.position.x = zone.vector.x;
|
|
94
|
-
target.position.y = zone.vector.y;
|
|
95
|
-
target.position.z = zone.vector.z;
|
|
96
|
-
};
|
|
97
|
-
}();
|
|
98
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbml0aWFsaXplci9Qb3NpdGlvbi5qcyJdLCJuYW1lcyI6WyJab25lIiwiSW5pdGlhbGl6ZXIiLCJTVVBQT1JURURfSlNPTl9aT05FX1RZUEVTIiwiSU5JVElBTElaRVJfVFlQRV9QT1NJVElPTiIsInR5cGUiLCJQb3NpdGlvbiIsImNvbnN0cnVjdG9yIiwicmVzZXQiLCJhcHBseSIsImFyZ3VtZW50cyIsInpvbmVzIiwibGVuZ3RoIiwiY29uY2F0IiwiQXJyYXkiLCJwcm90b3R5cGUiLCJzbGljZSIsImNhbGwiLCJhZGRab25lIiwiZnJvbUpTT04iLCJqc29uIiwiem9uZVR5cGUiLCJwYXJhbXMiLCJpbmNsdWRlcyIsIkVycm9yIiwiT2JqZWN0IiwidmFsdWVzIiwiaW5pdGlhbGl6ZSIsInpvbmUiLCJ0YXJnZXQiLCJNYXRoIiwicmFuZG9tIiwiZ2V0UG9zaXRpb24iLCJwb3NpdGlvbiIsIngiLCJ2ZWN0b3IiLCJ5IiwieiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEtBQUtBLElBQVosTUFBc0IsU0FBdEI7QUFFQSxPQUFPQyxXQUFQLE1BQXdCLGVBQXhCO0FBQ0EsU0FBU0MseUJBQVQsUUFBMEMsbUJBQTFDO0FBQ0EsU0FBU0MseUJBQXlCLElBQUlDLElBQXRDLFFBQWtELFNBQWxEO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxlQUFlLE1BQU1DLFFBQU4sU0FBdUJKLFdBQXZCLENBQW1DO0FBQ2hEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFSyxFQUFBQSxXQUFXLEdBQUc7QUFDWixVQUFNRixJQUFOO0FBRUEsU0FBS0csS0FBTCxDQUFXQyxLQUFYLENBQWlCLElBQWpCLEVBQXVCQyxTQUF2QjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNFRixFQUFBQSxLQUFLLEdBQUc7QUFDTixRQUFJLENBQUMsS0FBS0csS0FBVixFQUFpQjtBQUNmLFdBQUtBLEtBQUwsR0FBYSxFQUFiO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsV0FBS0EsS0FBTCxDQUFXQyxNQUFYLEdBQW9CLENBQXBCO0FBQ0Q7QUFFRDtBQUNKO0FBQ0E7QUFDQTs7O0FBQ0ksU0FBS0QsS0FBTCxHQUFhLEtBQUtBLEtBQUwsQ0FBV0UsTUFBWCxDQUFrQkMsS0FBSyxDQUFDQyxTQUFOLENBQWdCQyxLQUFoQixDQUFzQkMsSUFBdEIsQ0FBMkJQLFNBQTNCLENBQWxCLENBQWI7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0VRLEVBQUFBLE9BQU8sR0FBRztBQUNSLFNBQUtQLEtBQUwsR0FBYSxLQUFLQSxLQUFMLENBQVdFLE1BQVgsQ0FBa0JDLEtBQUssQ0FBQ0MsU0FBTixDQUFnQkMsS0FBaEIsQ0FBc0JDLElBQXRCLENBQTJCUCxTQUEzQixDQUFsQixDQUFiO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ2lCLFNBQVJTLFFBQVEsQ0FBQ0MsSUFBRCxFQUFPO0FBQ3BCLFVBQU07QUFBRUMsTUFBQUE7QUFBRixRQUEwQkQsSUFBaEM7QUFBQSxVQUFxQkUsTUFBckIsNEJBQWdDRixJQUFoQzs7QUFFQSxRQUFJLENBQUNqQix5QkFBeUIsQ0FBQ29CLFFBQTFCLENBQW1DRixRQUFuQyxDQUFMLEVBQW1EO0FBQ2pELFlBQU0sSUFBSUcsS0FBSixDQUNILGlCQUFnQkgsUUFBUyxrQ0FEdEIsQ0FBTjtBQUdEOztBQUVELFdBQU8sSUFBSWYsUUFBSixDQUFhLElBQUlMLElBQUksQ0FBQ29CLFFBQUQsQ0FBUixDQUFtQixHQUFHSSxNQUFNLENBQUNDLE1BQVAsQ0FBY0osTUFBZCxDQUF0QixDQUFiLENBQVA7QUFDRDs7QUE3RCtDO0FBZ0VsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0FoQixRQUFRLENBQUNTLFNBQVQsQ0FBbUJZLFVBQW5CLEdBQWlDLFlBQVc7QUFDMUMsTUFBSUMsSUFBSjtBQUVBLFNBQU8sVUFBU0MsTUFBVCxFQUFpQjtBQUN0QkQsSUFBQUEsSUFBSSxHQUFHLEtBQUtqQixLQUFMLENBQVltQixJQUFJLENBQUNDLE1BQUwsS0FBZ0IsS0FBS3BCLEtBQUwsQ0FBV0MsTUFBNUIsSUFBdUMsQ0FBbEQsQ0FBUDtBQUVBZ0IsSUFBQUEsSUFBSSxDQUFDSSxXQUFMO0FBRUFILElBQUFBLE1BQU0sQ0FBQ0ksUUFBUCxDQUFnQkMsQ0FBaEIsR0FBb0JOLElBQUksQ0FBQ08sTUFBTCxDQUFZRCxDQUFoQztBQUNBTCxJQUFBQSxNQUFNLENBQUNJLFFBQVAsQ0FBZ0JHLENBQWhCLEdBQW9CUixJQUFJLENBQUNPLE1BQUwsQ0FBWUMsQ0FBaEM7QUFDQVAsSUFBQUEsTUFBTSxDQUFDSSxRQUFQLENBQWdCSSxDQUFoQixHQUFvQlQsSUFBSSxDQUFDTyxNQUFMLENBQVlFLENBQWhDO0FBQ0QsR0FSRDtBQVNELENBWitCLEVBQWhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgWm9uZSBmcm9tICcuLi96b25lJztcblxuaW1wb3J0IEluaXRpYWxpemVyIGZyb20gJy4vSW5pdGlhbGl6ZXInO1xuaW1wb3J0IHsgU1VQUE9SVEVEX0pTT05fWk9ORV9UWVBFUyB9IGZyb20gJy4uL2NvcmUvY29uc3RhbnRzJztcbmltcG9ydCB7IElOSVRJQUxJWkVSX1RZUEVfUE9TSVRJT04gYXMgdHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFNldHMgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIHByb3BlcnR5IGZvciBpbml0aWFsaXplZCBwYXJ0aWNsZXMuXG4gKiBUaGlzIGlzIGRlcml2ZWQgZnJvbSBhIHpvbmUgcmFuZG9tbHkgY2hvc2VuIGZyb20gdGhvc2Ugc3VwcGxpZWQgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUG9zaXRpb24gZXh0ZW5kcyBJbml0aWFsaXplciB7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgUG9zaXRpb24gaW5pdGlhbGl6ZXIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7Wm9uZXxhcnJheTxab25lPn1cbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcih0eXBlKTtcblxuICAgIHRoaXMucmVzZXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGluaXRpYWxpemVyIHByb3BlcnRpZXMuXG4gICAqIENsZWFycyBhbGwgcHJldmlvdXNseSBzZXQgem9uZXMgYW5kIHJlc2V0cyB0aGUgem9uZXMgYWNjb3JkaW5nIHRvIGFyZ3MgcGFzc2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge1pvbmV8YXJyYXk8Wm9uZT59XG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgcmVzZXQoKSB7XG4gICAgaWYgKCF0aGlzLnpvbmVzKSB7XG4gICAgICB0aGlzLnpvbmVzID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuem9uZXMubGVuZ3RoID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgem9uZXMgdG8gdXNlIGFzIGJvdW5kcyBmb3IgY2FsY3VsYXRpbmcgdGhlIHBhcnRpY2xlJ3Mgc3RhcnRpbmcgcG9zaXRpb24uXG4gICAgICogQHR5cGUge2FycmF5PFpvbmU+fVxuICAgICAqL1xuICAgIHRoaXMuem9uZXMgPSB0aGlzLnpvbmVzLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgem9uZSBvciB6b25lcyB0byB0aGlzLnpvbmVzLlxuICAgKlxuICAgKiBAcGFyYW0ge1pvbmV8YXJyYXk8Wm9uZT59XG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgYWRkWm9uZSgpIHtcbiAgICB0aGlzLnpvbmVzID0gdGhpcy56b25lcy5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIFBvc2l0aW9uIGluaXRpYWxpemVyIGZyb20gSlNPTi5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGpzb24gLSBUaGUgSlNPTiB0byBjb25zdHJ1Y3QgdGhlIGluc3RhbmNlIGZyb20uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBqc29uLnpvbmVUeXBlIC0gVGhlIHR5cGUgb2Ygem9uZSB0byB1c2UgZm9yIGluaXRpYWwgcG9zaXRpb25cbiAgICogQHJldHVybiB7UG9zaXRpb259XG4gICAqL1xuICBzdGF0aWMgZnJvbUpTT04oanNvbikge1xuICAgIGNvbnN0IHsgem9uZVR5cGUsIC4uLnBhcmFtcyB9ID0ganNvbjtcblxuICAgIGlmICghU1VQUE9SVEVEX0pTT05fWk9ORV9UWVBFUy5pbmNsdWRlcyh6b25lVHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoZSB6b25lIHR5cGUgJHt6b25lVHlwZX0gaXMgaW52YWxpZCBvciBub3QgeWV0IHN1cHBvcnRlZGBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQb3NpdGlvbihuZXcgWm9uZVt6b25lVHlwZV0oLi4uT2JqZWN0LnZhbHVlcyhwYXJhbXMpKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBwYXJ0aWNsZSdzIGluaXRpYWwgcG9zaXRpb24uXG4gKlxuICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSB0aGUgcGFydGljbGUgdG8gaW5pdGlhbGl6ZSB0aGUgcHJvcGVydHkgb25cbiAqIEByZXR1cm4gdm9pZFxuICovXG5Qb3NpdGlvbi5wcm90b3R5cGUuaW5pdGlhbGl6ZSA9IChmdW5jdGlvbigpIHtcbiAgbGV0IHpvbmU7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHRhcmdldCkge1xuICAgIHpvbmUgPSB0aGlzLnpvbmVzWyhNYXRoLnJhbmRvbSgpICogdGhpcy56b25lcy5sZW5ndGgpID4+IDBdO1xuXG4gICAgem9uZS5nZXRQb3NpdGlvbigpO1xuXG4gICAgdGFyZ2V0LnBvc2l0aW9uLnggPSB6b25lLnZlY3Rvci54O1xuICAgIHRhcmdldC5wb3NpdGlvbi55ID0gem9uZS52ZWN0b3IueTtcbiAgICB0YXJnZXQucG9zaXRpb24ueiA9IHpvbmUudmVjdG9yLno7XG4gIH07XG59KSgpO1xuIl19
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import Initializer from './Initializer';
|
|
2
|
-
import { createSpan } from '../math';
|
|
3
|
-
import { INITIALIZER_TYPE_RADIUS as type } from './types';
|
|
4
|
-
/**
|
|
5
|
-
* Sets the radius property on initialized particles.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
export default class Radius extends Initializer {
|
|
10
|
-
/**
|
|
11
|
-
* Constructs a Radius initializer instance.
|
|
12
|
-
*
|
|
13
|
-
* @param {number} width - The width of the particle radius
|
|
14
|
-
* @param {number} height - The height of the particle radius
|
|
15
|
-
* @param {boolean} [center=false] - Determines whether to average the radius value
|
|
16
|
-
* @return void
|
|
17
|
-
*/
|
|
18
|
-
constructor(width, height, center = false, isEnabled = true) {
|
|
19
|
-
super(type, isEnabled);
|
|
20
|
-
/**
|
|
21
|
-
* @desc The radius span which is used to set the particle radius value.
|
|
22
|
-
* @type {Span}
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
this.radius = createSpan(width, height, center);
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Resets the initializer properties.
|
|
29
|
-
* Clears all previously set zones and resets the zones according to args passed.
|
|
30
|
-
*
|
|
31
|
-
* @param {number} width - The width of the particle radius
|
|
32
|
-
* @param {number} height - The height of the particle radius
|
|
33
|
-
* @param {boolean} [center=false] - Determines whether to average the radius value
|
|
34
|
-
* @return void
|
|
35
|
-
*/
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
reset(width, height, center = false) {
|
|
39
|
-
this.radius = createSpan(width, height, center);
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Sets the particle's initial radius.
|
|
43
|
-
*
|
|
44
|
-
* @param {Particle} particle - the particle to initialize the property on
|
|
45
|
-
* @return void
|
|
46
|
-
*/
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
initialize(particle) {
|
|
50
|
-
particle.radius = this.radius.getValue();
|
|
51
|
-
particle.transform.oldRadius = particle.radius;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Creates a Radius initializer from JSON.
|
|
55
|
-
*
|
|
56
|
-
* @param {object} json - The JSON to construct the instance from.
|
|
57
|
-
* @property {number} json.width - The width of the particle radius
|
|
58
|
-
* @property {number} json.height - The height of the particle radius
|
|
59
|
-
* @property {number} json.center - The center of the particle radius
|
|
60
|
-
* @return {Radius}
|
|
61
|
-
*/
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
static fromJSON(json) {
|
|
65
|
-
const {
|
|
66
|
-
width,
|
|
67
|
-
height,
|
|
68
|
-
center = false,
|
|
69
|
-
isEnabled = true
|
|
70
|
-
} = json;
|
|
71
|
-
return new Radius(width, height, center, isEnabled);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbml0aWFsaXplci9SYWRpdXMuanMiXSwibmFtZXMiOlsiSW5pdGlhbGl6ZXIiLCJjcmVhdGVTcGFuIiwiSU5JVElBTElaRVJfVFlQRV9SQURJVVMiLCJ0eXBlIiwiUmFkaXVzIiwiY29uc3RydWN0b3IiLCJ3aWR0aCIsImhlaWdodCIsImNlbnRlciIsImlzRW5hYmxlZCIsInJhZGl1cyIsInJlc2V0IiwiaW5pdGlhbGl6ZSIsInBhcnRpY2xlIiwiZ2V0VmFsdWUiLCJ0cmFuc2Zvcm0iLCJvbGRSYWRpdXMiLCJmcm9tSlNPTiIsImpzb24iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFdBQVAsTUFBd0IsZUFBeEI7QUFDQSxTQUFTQyxVQUFULFFBQTJCLFNBQTNCO0FBQ0EsU0FBU0MsdUJBQXVCLElBQUlDLElBQXBDLFFBQWdELFNBQWhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsZUFBZSxNQUFNQyxNQUFOLFNBQXFCSixXQUFyQixDQUFpQztBQUM5QztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0VLLEVBQUFBLFdBQVcsQ0FBQ0MsS0FBRCxFQUFRQyxNQUFSLEVBQWdCQyxNQUFNLEdBQUcsS0FBekIsRUFBZ0NDLFNBQVMsR0FBRyxJQUE1QyxFQUFrRDtBQUMzRCxVQUFNTixJQUFOLEVBQVlNLFNBQVo7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxTQUFLQyxNQUFMLEdBQWNULFVBQVUsQ0FBQ0ssS0FBRCxFQUFRQyxNQUFSLEVBQWdCQyxNQUFoQixDQUF4QjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDRUcsRUFBQUEsS0FBSyxDQUFDTCxLQUFELEVBQVFDLE1BQVIsRUFBZ0JDLE1BQU0sR0FBRyxLQUF6QixFQUFnQztBQUNuQyxTQUFLRSxNQUFMLEdBQWNULFVBQVUsQ0FBQ0ssS0FBRCxFQUFRQyxNQUFSLEVBQWdCQyxNQUFoQixDQUF4QjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDRUksRUFBQUEsVUFBVSxDQUFDQyxRQUFELEVBQVc7QUFDbkJBLElBQUFBLFFBQVEsQ0FBQ0gsTUFBVCxHQUFrQixLQUFLQSxNQUFMLENBQVlJLFFBQVosRUFBbEI7QUFDQUQsSUFBQUEsUUFBUSxDQUFDRSxTQUFULENBQW1CQyxTQUFuQixHQUErQkgsUUFBUSxDQUFDSCxNQUF4QztBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDaUIsU0FBUk8sUUFBUSxDQUFDQyxJQUFELEVBQU87QUFDcEIsVUFBTTtBQUFFWixNQUFBQSxLQUFGO0FBQVNDLE1BQUFBLE1BQVQ7QUFBaUJDLE1BQUFBLE1BQU0sR0FBRyxLQUExQjtBQUFpQ0MsTUFBQUEsU0FBUyxHQUFHO0FBQTdDLFFBQXNEUyxJQUE1RDtBQUVBLFdBQU8sSUFBSWQsTUFBSixDQUFXRSxLQUFYLEVBQWtCQyxNQUFsQixFQUEwQkMsTUFBMUIsRUFBa0NDLFNBQWxDLENBQVA7QUFDRDs7QUF4RDZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEluaXRpYWxpemVyIGZyb20gJy4vSW5pdGlhbGl6ZXInO1xuaW1wb3J0IHsgY3JlYXRlU3BhbiB9IGZyb20gJy4uL21hdGgnO1xuaW1wb3J0IHsgSU5JVElBTElaRVJfVFlQRV9SQURJVVMgYXMgdHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuLyoqXG4gKiBTZXRzIHRoZSByYWRpdXMgcHJvcGVydHkgb24gaW5pdGlhbGl6ZWQgcGFydGljbGVzLlxuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmFkaXVzIGV4dGVuZHMgSW5pdGlhbGl6ZXIge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhIFJhZGl1cyBpbml0aWFsaXplciBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoIC0gVGhlIHdpZHRoIG9mIHRoZSBwYXJ0aWNsZSByYWRpdXNcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodCAtIFRoZSBoZWlnaHQgb2YgdGhlIHBhcnRpY2xlIHJhZGl1c1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtjZW50ZXI9ZmFsc2VdIC0gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGF2ZXJhZ2UgdGhlIHJhZGl1cyB2YWx1ZVxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGNvbnN0cnVjdG9yKHdpZHRoLCBoZWlnaHQsIGNlbnRlciA9IGZhbHNlLCBpc0VuYWJsZWQgPSB0cnVlKSB7XG4gICAgc3VwZXIodHlwZSwgaXNFbmFibGVkKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSByYWRpdXMgc3BhbiB3aGljaCBpcyB1c2VkIHRvIHNldCB0aGUgcGFydGljbGUgcmFkaXVzIHZhbHVlLlxuICAgICAqIEB0eXBlIHtTcGFufVxuICAgICAqL1xuICAgIHRoaXMucmFkaXVzID0gY3JlYXRlU3Bhbih3aWR0aCwgaGVpZ2h0LCBjZW50ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgaW5pdGlhbGl6ZXIgcHJvcGVydGllcy5cbiAgICogQ2xlYXJzIGFsbCBwcmV2aW91c2x5IHNldCB6b25lcyBhbmQgcmVzZXRzIHRoZSB6b25lcyBhY2NvcmRpbmcgdG8gYXJncyBwYXNzZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aCAtIFRoZSB3aWR0aCBvZiB0aGUgcGFydGljbGUgcmFkaXVzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQgLSBUaGUgaGVpZ2h0IG9mIHRoZSBwYXJ0aWNsZSByYWRpdXNcbiAgICogQHBhcmFtIHtib29sZWFufSBbY2VudGVyPWZhbHNlXSAtIERldGVybWluZXMgd2hldGhlciB0byBhdmVyYWdlIHRoZSByYWRpdXMgdmFsdWVcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICByZXNldCh3aWR0aCwgaGVpZ2h0LCBjZW50ZXIgPSBmYWxzZSkge1xuICAgIHRoaXMucmFkaXVzID0gY3JlYXRlU3Bhbih3aWR0aCwgaGVpZ2h0LCBjZW50ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHBhcnRpY2xlJ3MgaW5pdGlhbCByYWRpdXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlIC0gdGhlIHBhcnRpY2xlIHRvIGluaXRpYWxpemUgdGhlIHByb3BlcnR5IG9uXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgaW5pdGlhbGl6ZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLnJhZGl1cyA9IHRoaXMucmFkaXVzLmdldFZhbHVlKCk7XG4gICAgcGFydGljbGUudHJhbnNmb3JtLm9sZFJhZGl1cyA9IHBhcnRpY2xlLnJhZGl1cztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgUmFkaXVzIGluaXRpYWxpemVyIGZyb20gSlNPTi5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGpzb24gLSBUaGUgSlNPTiB0byBjb25zdHJ1Y3QgdGhlIGluc3RhbmNlIGZyb20uXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBqc29uLndpZHRoIC0gVGhlIHdpZHRoIG9mIHRoZSBwYXJ0aWNsZSByYWRpdXNcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IGpzb24uaGVpZ2h0IC0gVGhlIGhlaWdodCBvZiB0aGUgcGFydGljbGUgcmFkaXVzXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBqc29uLmNlbnRlciAtIFRoZSBjZW50ZXIgb2YgdGhlIHBhcnRpY2xlIHJhZGl1c1xuICAgKiBAcmV0dXJuIHtSYWRpdXN9XG4gICAqL1xuICBzdGF0aWMgZnJvbUpTT04oanNvbikge1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgY2VudGVyID0gZmFsc2UsIGlzRW5hYmxlZCA9IHRydWUgfSA9IGpzb247XG5cbiAgICByZXR1cm4gbmV3IFJhZGl1cyh3aWR0aCwgaGVpZ2h0LCBjZW50ZXIsIGlzRW5hYmxlZCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { DEFAULT_RATE_NUM_PAN, DEFAULT_RATE_TIME_PAN } from './constants';
|
|
2
|
-
import { Span, createSpan } from '../math';
|
|
3
|
-
import Initializer from './Initializer';
|
|
4
|
-
import { INITIALIZER_TYPE_RATE as type } from './types';
|
|
5
|
-
/**
|
|
6
|
-
* Calculates the rate of particle emission.
|
|
7
|
-
*
|
|
8
|
-
* NOTE This doesn't need to be an initializer, it doesn't have an initialize
|
|
9
|
-
* method, it overrides the base init method and it is only relevent to the Emitter class.
|
|
10
|
-
* It would be better to move this to the Emitter module itself as a standalone class.
|
|
11
|
-
*
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
export default class Rate extends Initializer {
|
|
15
|
-
/**
|
|
16
|
-
* Constructs a Rate instance.
|
|
17
|
-
*
|
|
18
|
-
* @param {number|array|Span} numPan - The number of particles to emit
|
|
19
|
-
* @param {number|array|Span} timePan - The time between each particle emission
|
|
20
|
-
* @return void
|
|
21
|
-
*/
|
|
22
|
-
constructor(numPan = DEFAULT_RATE_NUM_PAN, timePan = DEFAULT_RATE_TIME_PAN) {
|
|
23
|
-
super(type);
|
|
24
|
-
/**
|
|
25
|
-
* @desc Sets the number of particles to emit.
|
|
26
|
-
* @type {Span}
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
this.numPan = createSpan(numPan);
|
|
30
|
-
/**
|
|
31
|
-
* @desc Sets the time between each particle emission.
|
|
32
|
-
* @type {Span}
|
|
33
|
-
*/
|
|
34
|
-
|
|
35
|
-
this.timePan = createSpan(timePan);
|
|
36
|
-
/**
|
|
37
|
-
* @desc The rate's start time.
|
|
38
|
-
* @type {number}
|
|
39
|
-
*/
|
|
40
|
-
|
|
41
|
-
this.startTime = 0;
|
|
42
|
-
/**
|
|
43
|
-
* @desc The rate's next time.
|
|
44
|
-
* @type {number}
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
this.nextTime = 0;
|
|
48
|
-
this.init();
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Sets the startTime and nextTime properties.
|
|
52
|
-
*
|
|
53
|
-
* @return void
|
|
54
|
-
*/
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
init() {
|
|
58
|
-
this.startTime = 0;
|
|
59
|
-
this.nextTime = this.timePan.getValue();
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Gets the number of particles to emit.
|
|
63
|
-
*
|
|
64
|
-
* @param {number} time - Current particle engine time
|
|
65
|
-
* @return {number}
|
|
66
|
-
*/
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
getValue(time) {
|
|
70
|
-
this.startTime += time;
|
|
71
|
-
|
|
72
|
-
if (this.startTime >= this.nextTime) {
|
|
73
|
-
this.init();
|
|
74
|
-
|
|
75
|
-
if (this.numPan.b == 1) {
|
|
76
|
-
if (this.numPan.getValue('Float') > 0.5) return 1;else return 0;
|
|
77
|
-
} else {
|
|
78
|
-
return this.numPan.getValue('Int');
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
return 0;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Creates a Rate initializer from JSON.
|
|
86
|
-
*
|
|
87
|
-
* @param {object} json - The JSON to construct the instance from.
|
|
88
|
-
* @property {number} json.particlesMin - The minimum number of particles to emit
|
|
89
|
-
* @property {number} json.particlesMax - The maximum number of particles to emit
|
|
90
|
-
* @property {number} json.perSecondMin - The minimum per second emit rate
|
|
91
|
-
* @property {number} json.perSecondMax - The maximum per second emit rate
|
|
92
|
-
* @return {Rate}
|
|
93
|
-
*/
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
static fromJSON(json) {
|
|
97
|
-
const {
|
|
98
|
-
particlesMin,
|
|
99
|
-
particlesMax,
|
|
100
|
-
perSecondMin,
|
|
101
|
-
perSecondMax
|
|
102
|
-
} = json;
|
|
103
|
-
return new Rate(new Span(particlesMin, particlesMax), new Span(perSecondMin, perSecondMax));
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbml0aWFsaXplci9SYXRlLmpzIl0sIm5hbWVzIjpbIkRFRkFVTFRfUkFURV9OVU1fUEFOIiwiREVGQVVMVF9SQVRFX1RJTUVfUEFOIiwiU3BhbiIsImNyZWF0ZVNwYW4iLCJJbml0aWFsaXplciIsIklOSVRJQUxJWkVSX1RZUEVfUkFURSIsInR5cGUiLCJSYXRlIiwiY29uc3RydWN0b3IiLCJudW1QYW4iLCJ0aW1lUGFuIiwic3RhcnRUaW1lIiwibmV4dFRpbWUiLCJpbml0IiwiZ2V0VmFsdWUiLCJ0aW1lIiwiYiIsImZyb21KU09OIiwianNvbiIsInBhcnRpY2xlc01pbiIsInBhcnRpY2xlc01heCIsInBlclNlY29uZE1pbiIsInBlclNlY29uZE1heCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0Esb0JBQVQsRUFBK0JDLHFCQUEvQixRQUE0RCxhQUE1RDtBQUNBLFNBQVNDLElBQVQsRUFBZUMsVUFBZixRQUFpQyxTQUFqQztBQUVBLE9BQU9DLFdBQVAsTUFBd0IsZUFBeEI7QUFDQSxTQUFTQyxxQkFBcUIsSUFBSUMsSUFBbEMsUUFBOEMsU0FBOUM7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLGVBQWUsTUFBTUMsSUFBTixTQUFtQkgsV0FBbkIsQ0FBK0I7QUFDNUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDRUksRUFBQUEsV0FBVyxDQUFDQyxNQUFNLEdBQUdULG9CQUFWLEVBQWdDVSxPQUFPLEdBQUdULHFCQUExQyxFQUFpRTtBQUMxRSxVQUFNSyxJQUFOO0FBRUE7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS0csTUFBTCxHQUFjTixVQUFVLENBQUNNLE1BQUQsQ0FBeEI7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxTQUFLQyxPQUFMLEdBQWVQLFVBQVUsQ0FBQ08sT0FBRCxDQUF6QjtBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtDLFNBQUwsR0FBaUIsQ0FBakI7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxTQUFLQyxRQUFMLEdBQWdCLENBQWhCO0FBRUEsU0FBS0MsSUFBTDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0VBLEVBQUFBLElBQUksR0FBRztBQUNMLFNBQUtGLFNBQUwsR0FBaUIsQ0FBakI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLEtBQUtGLE9BQUwsQ0FBYUksUUFBYixFQUFoQjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDRUEsRUFBQUEsUUFBUSxDQUFDQyxJQUFELEVBQU87QUFDYixTQUFLSixTQUFMLElBQWtCSSxJQUFsQjs7QUFFQSxRQUFJLEtBQUtKLFNBQUwsSUFBa0IsS0FBS0MsUUFBM0IsRUFBcUM7QUFDbkMsV0FBS0MsSUFBTDs7QUFFQSxVQUFJLEtBQUtKLE1BQUwsQ0FBWU8sQ0FBWixJQUFpQixDQUFyQixFQUF3QjtBQUN0QixZQUFJLEtBQUtQLE1BQUwsQ0FBWUssUUFBWixDQUFxQixPQUFyQixJQUFnQyxHQUFwQyxFQUF5QyxPQUFPLENBQVAsQ0FBekMsS0FDSyxPQUFPLENBQVA7QUFDTixPQUhELE1BR087QUFDTCxlQUFPLEtBQUtMLE1BQUwsQ0FBWUssUUFBWixDQUFxQixLQUFyQixDQUFQO0FBQ0Q7QUFDRjs7QUFFRCxXQUFPLENBQVA7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDaUIsU0FBUkcsUUFBUSxDQUFDQyxJQUFELEVBQU87QUFDcEIsVUFBTTtBQUFFQyxNQUFBQSxZQUFGO0FBQWdCQyxNQUFBQSxZQUFoQjtBQUE4QkMsTUFBQUEsWUFBOUI7QUFBNENDLE1BQUFBO0FBQTVDLFFBQTZESixJQUFuRTtBQUVBLFdBQU8sSUFBSVgsSUFBSixDQUNMLElBQUlMLElBQUosQ0FBU2lCLFlBQVQsRUFBdUJDLFlBQXZCLENBREssRUFFTCxJQUFJbEIsSUFBSixDQUFTbUIsWUFBVCxFQUF1QkMsWUFBdkIsQ0FGSyxDQUFQO0FBSUQ7O0FBeEYyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERFRkFVTFRfUkFURV9OVU1fUEFOLCBERUZBVUxUX1JBVEVfVElNRV9QQU4gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTcGFuLCBjcmVhdGVTcGFuIH0gZnJvbSAnLi4vbWF0aCc7XG5cbmltcG9ydCBJbml0aWFsaXplciBmcm9tICcuL0luaXRpYWxpemVyJztcbmltcG9ydCB7IElOSVRJQUxJWkVSX1RZUEVfUkFURSBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgcmF0ZSBvZiBwYXJ0aWNsZSBlbWlzc2lvbi5cbiAqXG4gKiBOT1RFIFRoaXMgZG9lc24ndCBuZWVkIHRvIGJlIGFuIGluaXRpYWxpemVyLCBpdCBkb2Vzbid0IGhhdmUgYW4gaW5pdGlhbGl6ZVxuICogbWV0aG9kLCBpdCBvdmVycmlkZXMgdGhlIGJhc2UgaW5pdCBtZXRob2QgYW5kIGl0IGlzIG9ubHkgcmVsZXZlbnQgdG8gdGhlIEVtaXR0ZXIgY2xhc3MuXG4gKiBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gbW92ZSB0aGlzIHRvIHRoZSBFbWl0dGVyIG1vZHVsZSBpdHNlbGYgYXMgYSBzdGFuZGFsb25lIGNsYXNzLlxuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmF0ZSBleHRlbmRzIEluaXRpYWxpemVyIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBSYXRlIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcnxhcnJheXxTcGFufSBudW1QYW4gLSBUaGUgbnVtYmVyIG9mIHBhcnRpY2xlcyB0byBlbWl0XG4gICAqIEBwYXJhbSB7bnVtYmVyfGFycmF5fFNwYW59IHRpbWVQYW4gLSBUaGUgdGltZSBiZXR3ZWVuIGVhY2ggcGFydGljbGUgZW1pc3Npb25cbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3RvcihudW1QYW4gPSBERUZBVUxUX1JBVEVfTlVNX1BBTiwgdGltZVBhbiA9IERFRkFVTFRfUkFURV9USU1FX1BBTikge1xuICAgIHN1cGVyKHR5cGUpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgU2V0cyB0aGUgbnVtYmVyIG9mIHBhcnRpY2xlcyB0byBlbWl0LlxuICAgICAqIEB0eXBlIHtTcGFufVxuICAgICAqL1xuICAgIHRoaXMubnVtUGFuID0gY3JlYXRlU3BhbihudW1QYW4pO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgU2V0cyB0aGUgdGltZSBiZXR3ZWVuIGVhY2ggcGFydGljbGUgZW1pc3Npb24uXG4gICAgICogQHR5cGUge1NwYW59XG4gICAgICovXG4gICAgdGhpcy50aW1lUGFuID0gY3JlYXRlU3Bhbih0aW1lUGFuKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSByYXRlJ3Mgc3RhcnQgdGltZS5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMuc3RhcnRUaW1lID0gMDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSByYXRlJ3MgbmV4dCB0aW1lLlxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5uZXh0VGltZSA9IDA7XG5cbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFydFRpbWUgYW5kIG5leHRUaW1lIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgaW5pdCgpIHtcbiAgICB0aGlzLnN0YXJ0VGltZSA9IDA7XG4gICAgdGhpcy5uZXh0VGltZSA9IHRoaXMudGltZVBhbi5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG51bWJlciBvZiBwYXJ0aWNsZXMgdG8gZW1pdC5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWUgLSBDdXJyZW50IHBhcnRpY2xlIGVuZ2luZSB0aW1lXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIGdldFZhbHVlKHRpbWUpIHtcbiAgICB0aGlzLnN0YXJ0VGltZSArPSB0aW1lO1xuXG4gICAgaWYgKHRoaXMuc3RhcnRUaW1lID49IHRoaXMubmV4dFRpbWUpIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuXG4gICAgICBpZiAodGhpcy5udW1QYW4uYiA9PSAxKSB7XG4gICAgICAgIGlmICh0aGlzLm51bVBhbi5nZXRWYWx1ZSgnRmxvYXQnKSA+IDAuNSkgcmV0dXJuIDE7XG4gICAgICAgIGVsc2UgcmV0dXJuIDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5udW1QYW4uZ2V0VmFsdWUoJ0ludCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBSYXRlIGluaXRpYWxpemVyIGZyb20gSlNPTi5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGpzb24gLSBUaGUgSlNPTiB0byBjb25zdHJ1Y3QgdGhlIGluc3RhbmNlIGZyb20uXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBqc29uLnBhcnRpY2xlc01pbiAtIFRoZSBtaW5pbXVtIG51bWJlciBvZiBwYXJ0aWNsZXMgdG8gZW1pdFxuICAgKiBAcHJvcGVydHkge251bWJlcn0ganNvbi5wYXJ0aWNsZXNNYXggLSBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGFydGljbGVzIHRvIGVtaXRcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IGpzb24ucGVyU2Vjb25kTWluIC0gVGhlIG1pbmltdW0gcGVyIHNlY29uZCBlbWl0IHJhdGVcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IGpzb24ucGVyU2Vjb25kTWF4IC0gVGhlIG1heGltdW0gcGVyIHNlY29uZCBlbWl0IHJhdGVcbiAgICogQHJldHVybiB7UmF0ZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgeyBwYXJ0aWNsZXNNaW4sIHBhcnRpY2xlc01heCwgcGVyU2Vjb25kTWluLCBwZXJTZWNvbmRNYXggfSA9IGpzb247XG5cbiAgICByZXR1cm4gbmV3IFJhdGUoXG4gICAgICBuZXcgU3BhbihwYXJ0aWNsZXNNaW4sIHBhcnRpY2xlc01heCksXG4gICAgICBuZXcgU3BhbihwZXJTZWNvbmRNaW4sIHBlclNlY29uZE1heClcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { Vector3 } from '../core/three';
|
|
2
|
-
import Initializer from './Initializer';
|
|
3
|
-
import { INITIALIZER_TYPE_ROTATION as type } from './types';
|
|
4
|
-
/**
|
|
5
|
-
* Sets the rotation property on initialized particles.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
export default class Rotation extends Initializer {
|
|
10
|
-
/**
|
|
11
|
-
* Constructs a Rotation property instance.
|
|
12
|
-
*
|
|
13
|
-
* @param {number} x - X axis rotation
|
|
14
|
-
* @param {number} y - Y axis rotation
|
|
15
|
-
* @param {number} z - Z axis rotation
|
|
16
|
-
* @param {boolean} [useEmitterRotation=true] - Determines if we should use the emitter's rotation as the starting rotation
|
|
17
|
-
* @param {boolean} [isEnabled=true] - Determines if the initializer should be enabled or not
|
|
18
|
-
* @return void
|
|
19
|
-
*/
|
|
20
|
-
constructor(x, y, z, useEmitterRotation = true, isEnabled = true) {
|
|
21
|
-
super(type, isEnabled);
|
|
22
|
-
this.rotation = new Vector3(x, y, z);
|
|
23
|
-
this.useEmitterRotation = useEmitterRotation;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Sets the particle's initial rotation.
|
|
27
|
-
*
|
|
28
|
-
* @param {Particle} particle - the particle to initialize the property on
|
|
29
|
-
* @return void
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
initialize(particle) {
|
|
34
|
-
if (this.useEmitterRotation) {
|
|
35
|
-
// set initial particle rotation to that of the particle's emitter then add our set rotation
|
|
36
|
-
particle.rotation.copy(particle.parent.rotation).add(this.rotation);
|
|
37
|
-
} else {
|
|
38
|
-
particle.rotation.copy(this.rotation);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
static fromJSON(json) {
|
|
43
|
-
const {
|
|
44
|
-
x,
|
|
45
|
-
y,
|
|
46
|
-
z,
|
|
47
|
-
useEmitterRotation = true,
|
|
48
|
-
isEnabled = true
|
|
49
|
-
} = json;
|
|
50
|
-
return new Rotation(x, y, z, useEmitterRotation, isEnabled);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbml0aWFsaXplci9Sb3RhdGlvbi5qcyJdLCJuYW1lcyI6WyJWZWN0b3IzIiwiSW5pdGlhbGl6ZXIiLCJJTklUSUFMSVpFUl9UWVBFX1JPVEFUSU9OIiwidHlwZSIsIlJvdGF0aW9uIiwiY29uc3RydWN0b3IiLCJ4IiwieSIsInoiLCJ1c2VFbWl0dGVyUm90YXRpb24iLCJpc0VuYWJsZWQiLCJyb3RhdGlvbiIsImluaXRpYWxpemUiLCJwYXJ0aWNsZSIsImNvcHkiLCJwYXJlbnQiLCJhZGQiLCJmcm9tSlNPTiIsImpzb24iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLE9BQVQsUUFBd0IsZUFBeEI7QUFDQSxPQUFPQyxXQUFQLE1BQXdCLGVBQXhCO0FBQ0EsU0FBU0MseUJBQXlCLElBQUlDLElBQXRDLFFBQWtELFNBQWxEO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsZUFBZSxNQUFNQyxRQUFOLFNBQXVCSCxXQUF2QixDQUFtQztBQUNoRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFSSxFQUFBQSxXQUFXLENBQUNDLENBQUQsRUFBSUMsQ0FBSixFQUFPQyxDQUFQLEVBQVVDLGtCQUFrQixHQUFDLElBQTdCLEVBQW1DQyxTQUFTLEdBQUcsSUFBL0MsRUFBcUQ7QUFDOUQsVUFBTVAsSUFBTixFQUFZTyxTQUFaO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixJQUFJWCxPQUFKLENBQVlNLENBQVosRUFBY0MsQ0FBZCxFQUFnQkMsQ0FBaEIsQ0FBaEI7QUFDQSxTQUFLQyxrQkFBTCxHQUEwQkEsa0JBQTFCO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNFRyxFQUFBQSxVQUFVLENBQUNDLFFBQUQsRUFBVztBQUNuQixRQUFHLEtBQUtKLGtCQUFSLEVBQ0E7QUFDRTtBQUNBSSxNQUFBQSxRQUFRLENBQUNGLFFBQVQsQ0FBa0JHLElBQWxCLENBQXVCRCxRQUFRLENBQUNFLE1BQVQsQ0FBZ0JKLFFBQXZDLEVBQWlESyxHQUFqRCxDQUFxRCxLQUFLTCxRQUExRDtBQUNELEtBSkQsTUFNQTtBQUNFRSxNQUFBQSxRQUFRLENBQUNGLFFBQVQsQ0FBa0JHLElBQWxCLENBQXVCLEtBQUtILFFBQTVCO0FBQ0Q7QUFDRjs7QUFFYyxTQUFSTSxRQUFRLENBQUNDLElBQUQsRUFBTztBQUNwQixVQUFNO0FBQUVaLE1BQUFBLENBQUY7QUFBS0MsTUFBQUEsQ0FBTDtBQUFRQyxNQUFBQSxDQUFSO0FBQVdDLE1BQUFBLGtCQUFrQixHQUFHLElBQWhDO0FBQXNDQyxNQUFBQSxTQUFTLEdBQUc7QUFBbEQsUUFBMkRRLElBQWpFO0FBRUEsV0FBTyxJQUFJZCxRQUFKLENBQWFFLENBQWIsRUFBZ0JDLENBQWhCLEVBQW1CQyxDQUFuQixFQUFzQkMsa0JBQXRCLEVBQTBDQyxTQUExQyxDQUFQO0FBQ0Q7O0FBdkMrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZlY3RvcjMgfSBmcm9tICcuLi9jb3JlL3RocmVlJztcbmltcG9ydCBJbml0aWFsaXplciBmcm9tICcuL0luaXRpYWxpemVyJztcbmltcG9ydCB7IElOSVRJQUxJWkVSX1RZUEVfUk9UQVRJT04gYXMgdHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFNldHMgdGhlIHJvdGF0aW9uIHByb3BlcnR5IG9uIGluaXRpYWxpemVkIHBhcnRpY2xlcy5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJvdGF0aW9uIGV4dGVuZHMgSW5pdGlhbGl6ZXIge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhIFJvdGF0aW9uIHByb3BlcnR5IGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0geCAtIFggYXhpcyByb3RhdGlvblxuICAgKiBAcGFyYW0ge251bWJlcn0geSAtIFkgYXhpcyByb3RhdGlvblxuICAgKiBAcGFyYW0ge251bWJlcn0geiAtIFogYXhpcyByb3RhdGlvblxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFt1c2VFbWl0dGVyUm90YXRpb249dHJ1ZV0gLSBEZXRlcm1pbmVzIGlmIHdlIHNob3VsZCB1c2UgdGhlIGVtaXR0ZXIncyByb3RhdGlvbiBhcyB0aGUgc3RhcnRpbmcgcm90YXRpb25cbiAgICogQHBhcmFtIHtib29sZWFufSBbaXNFbmFibGVkPXRydWVdIC0gRGV0ZXJtaW5lcyBpZiB0aGUgaW5pdGlhbGl6ZXIgc2hvdWxkIGJlIGVuYWJsZWQgb3Igbm90XG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgY29uc3RydWN0b3IoeCwgeSwgeiwgdXNlRW1pdHRlclJvdGF0aW9uPXRydWUsIGlzRW5hYmxlZCA9IHRydWUpIHtcbiAgICBzdXBlcih0eXBlLCBpc0VuYWJsZWQpO1xuICAgIHRoaXMucm90YXRpb24gPSBuZXcgVmVjdG9yMyh4LHkseik7XG4gICAgdGhpcy51c2VFbWl0dGVyUm90YXRpb24gPSB1c2VFbWl0dGVyUm90YXRpb247XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcGFydGljbGUncyBpbml0aWFsIHJvdGF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIHRoZSBwYXJ0aWNsZSB0byBpbml0aWFsaXplIHRoZSBwcm9wZXJ0eSBvblxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGluaXRpYWxpemUocGFydGljbGUpIHtcbiAgICBpZih0aGlzLnVzZUVtaXR0ZXJSb3RhdGlvbilcbiAgICB7XG4gICAgICAvLyBzZXQgaW5pdGlhbCBwYXJ0aWNsZSByb3RhdGlvbiB0byB0aGF0IG9mIHRoZSBwYXJ0aWNsZSdzIGVtaXR0ZXIgdGhlbiBhZGQgb3VyIHNldCByb3RhdGlvblxuICAgICAgcGFydGljbGUucm90YXRpb24uY29weShwYXJ0aWNsZS5wYXJlbnQucm90YXRpb24pLmFkZCh0aGlzLnJvdGF0aW9uKTtcbiAgICB9XG4gICAgZWxzZVxuICAgIHtcbiAgICAgIHBhcnRpY2xlLnJvdGF0aW9uLmNvcHkodGhpcy5yb3RhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24pIHtcbiAgICBjb25zdCB7IHgsIHksIHosIHVzZUVtaXR0ZXJSb3RhdGlvbiA9IHRydWUsIGlzRW5hYmxlZCA9IHRydWUgfSA9IGpzb247XG5cbiAgICByZXR1cm4gbmV3IFJvdGF0aW9uKHgsIHksIHosIHVzZUVtaXR0ZXJSb3RhdGlvbiwgaXNFbmFibGVkKTtcbiAgfVxufSJdfQ==
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
|
|
3
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
4
|
-
|
|
5
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
6
|
-
|
|
7
|
-
import { DEFAULT_JSON_MATERIAL_PROPERTIES, DEFAULT_MATERIAL_PROPERTIES, SUPPORTED_MATERIAL_BLENDING_MODES } from './constants';
|
|
8
|
-
import Initializer from './Initializer';
|
|
9
|
-
import { INITIALIZER_TYPE_TEXTURE as type } from './types';
|
|
10
|
-
import { withDefaults } from '../utils';
|
|
11
|
-
/**
|
|
12
|
-
* Sets the body property to be a THREE.Sprite with a texture map on initialized particles.
|
|
13
|
-
*
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
export default class Texture extends Initializer {
|
|
17
|
-
/**
|
|
18
|
-
* Constructs an Texture initializer.
|
|
19
|
-
*
|
|
20
|
-
* @param {object} THREE - The Web GL API we are using eg., THREE
|
|
21
|
-
* @param {string} texture - The sprite texture
|
|
22
|
-
* @param {object|undefined} materialProperties - The sprite material properties
|
|
23
|
-
* @param {?Texture} loadedTexture - Preloaded THREE.Texture instance
|
|
24
|
-
*/
|
|
25
|
-
constructor(THREE, loadedTexture, materialProperties = DEFAULT_MATERIAL_PROPERTIES, isEnabled = true) {
|
|
26
|
-
super(type, isEnabled);
|
|
27
|
-
const {
|
|
28
|
-
Sprite,
|
|
29
|
-
SpriteMaterial
|
|
30
|
-
} = THREE;
|
|
31
|
-
/**
|
|
32
|
-
* @desc The material properties for this object's SpriteMaterial
|
|
33
|
-
* NOTE This is required for testing purposes
|
|
34
|
-
* @type {object}
|
|
35
|
-
*/
|
|
36
|
-
|
|
37
|
-
this.materialProperties = withDefaults(DEFAULT_MATERIAL_PROPERTIES, materialProperties);
|
|
38
|
-
/**
|
|
39
|
-
* @desc The texture for the THREE.SpriteMaterial map.
|
|
40
|
-
* @type {Texture}
|
|
41
|
-
*/
|
|
42
|
-
|
|
43
|
-
this.texture = loadedTexture;
|
|
44
|
-
/**
|
|
45
|
-
* @desc THREE.SpriteMaterial instance.
|
|
46
|
-
* @type {SpriteMaterial}
|
|
47
|
-
*/
|
|
48
|
-
|
|
49
|
-
this.material = new SpriteMaterial(_objectSpread(_objectSpread({}, {
|
|
50
|
-
map: loadedTexture
|
|
51
|
-
}), this.materialProperties));
|
|
52
|
-
/**
|
|
53
|
-
* @desc THREE.Sprite instance.
|
|
54
|
-
* @type {Sprite}
|
|
55
|
-
*/
|
|
56
|
-
|
|
57
|
-
this.sprite = new Sprite(this.material);
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Sets the particle body to the sprite.
|
|
61
|
-
*
|
|
62
|
-
* @param {Particle} particle - The particle to set the body of
|
|
63
|
-
* @return void
|
|
64
|
-
*/
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
initialize(particle) {
|
|
68
|
-
particle.body = this.sprite;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Creates a Texture initializer from JSON.
|
|
72
|
-
*
|
|
73
|
-
* @param {object} json - The JSON to construct the instance from
|
|
74
|
-
* @param {object} THREE - The Web GL API we are using eg., THREE
|
|
75
|
-
* @param {Texture} json.loadedTexture - The loaded sprite texture
|
|
76
|
-
* @param {object} json.materialProperties - The sprite material properties
|
|
77
|
-
* @return {BodySprite}
|
|
78
|
-
*/
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
static fromJSON(json, THREE) {
|
|
82
|
-
const {
|
|
83
|
-
loadedTexture,
|
|
84
|
-
materialProperties = DEFAULT_JSON_MATERIAL_PROPERTIES,
|
|
85
|
-
isEnabled = true
|
|
86
|
-
} = json;
|
|
87
|
-
|
|
88
|
-
const ensureMappedBlendingMode = properties => {
|
|
89
|
-
const {
|
|
90
|
-
blending
|
|
91
|
-
} = properties;
|
|
92
|
-
return _objectSpread(_objectSpread({}, properties), {}, {
|
|
93
|
-
blending: blending ? SUPPORTED_MATERIAL_BLENDING_MODES[blending] : SUPPORTED_MATERIAL_BLENDING_MODES[DEFAULT_JSON_MATERIAL_PROPERTIES.blending]
|
|
94
|
-
});
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
return new Texture(THREE, loadedTexture, withDefaults(DEFAULT_JSON_MATERIAL_PROPERTIES, ensureMappedBlendingMode(materialProperties)), isEnabled);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbml0aWFsaXplci9UZXh0dXJlLmpzIl0sIm5hbWVzIjpbIkRFRkFVTFRfSlNPTl9NQVRFUklBTF9QUk9QRVJUSUVTIiwiREVGQVVMVF9NQVRFUklBTF9QUk9QRVJUSUVTIiwiU1VQUE9SVEVEX01BVEVSSUFMX0JMRU5ESU5HX01PREVTIiwiSW5pdGlhbGl6ZXIiLCJJTklUSUFMSVpFUl9UWVBFX1RFWFRVUkUiLCJ0eXBlIiwid2l0aERlZmF1bHRzIiwiVGV4dHVyZSIsImNvbnN0cnVjdG9yIiwiVEhSRUUiLCJsb2FkZWRUZXh0dXJlIiwibWF0ZXJpYWxQcm9wZXJ0aWVzIiwiaXNFbmFibGVkIiwiU3ByaXRlIiwiU3ByaXRlTWF0ZXJpYWwiLCJ0ZXh0dXJlIiwibWF0ZXJpYWwiLCJtYXAiLCJzcHJpdGUiLCJpbml0aWFsaXplIiwicGFydGljbGUiLCJib2R5IiwiZnJvbUpTT04iLCJqc29uIiwiZW5zdXJlTWFwcGVkQmxlbmRpbmdNb2RlIiwicHJvcGVydGllcyIsImJsZW5kaW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxTQUNFQSxnQ0FERixFQUVFQywyQkFGRixFQUdFQyxpQ0FIRixRQUlPLGFBSlA7QUFNQSxPQUFPQyxXQUFQLE1BQXdCLGVBQXhCO0FBQ0EsU0FBU0Msd0JBQXdCLElBQUlDLElBQXJDLFFBQWlELFNBQWpEO0FBQ0EsU0FBU0MsWUFBVCxRQUE2QixVQUE3QjtBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLGVBQWUsTUFBTUMsT0FBTixTQUFzQkosV0FBdEIsQ0FBa0M7QUFDL0M7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFSyxFQUFBQSxXQUFXLENBQ1RDLEtBRFMsRUFFVEMsYUFGUyxFQUdUQyxrQkFBa0IsR0FBR1YsMkJBSFosRUFJVFcsU0FBUyxHQUFHLElBSkgsRUFLVDtBQUNBLFVBQU1QLElBQU4sRUFBWU8sU0FBWjtBQUVBLFVBQU07QUFBRUMsTUFBQUEsTUFBRjtBQUFVQyxNQUFBQTtBQUFWLFFBQTZCTCxLQUFuQztBQUVBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBQ0ksU0FBS0Usa0JBQUwsR0FBMEJMLFlBQVksQ0FDcENMLDJCQURvQyxFQUVwQ1Usa0JBRm9DLENBQXRDO0FBS0E7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS0ksT0FBTCxHQUFlTCxhQUFmO0FBRUE7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS00sUUFBTCxHQUFnQixJQUFJRixjQUFKLGlDQUNYO0FBQUVHLE1BQUFBLEdBQUcsRUFBRVA7QUFBUCxLQURXLEdBRVgsS0FBS0Msa0JBRk0sRUFBaEI7QUFLQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxTQUFLTyxNQUFMLEdBQWMsSUFBSUwsTUFBSixDQUFXLEtBQUtHLFFBQWhCLENBQWQ7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0VHLEVBQUFBLFVBQVUsQ0FBQ0MsUUFBRCxFQUFXO0FBQ25CQSxJQUFBQSxRQUFRLENBQUNDLElBQVQsR0FBZ0IsS0FBS0gsTUFBckI7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ2lCLFNBQVJJLFFBQVEsQ0FBQ0MsSUFBRCxFQUFPZCxLQUFQLEVBQWM7QUFDM0IsVUFBTTtBQUNKQyxNQUFBQSxhQURJO0FBRUpDLE1BQUFBLGtCQUFrQixHQUFHWCxnQ0FGakI7QUFHSlksTUFBQUEsU0FBUyxHQUFHO0FBSFIsUUFJRlcsSUFKSjs7QUFNQSxVQUFNQyx3QkFBd0IsR0FBR0MsVUFBVSxJQUFJO0FBQzdDLFlBQU07QUFBRUMsUUFBQUE7QUFBRixVQUFlRCxVQUFyQjtBQUVBLDZDQUNLQSxVQURMO0FBRUVDLFFBQUFBLFFBQVEsRUFBRUEsUUFBUSxHQUNkeEIsaUNBQWlDLENBQUN3QixRQUFELENBRG5CLEdBRWR4QixpQ0FBaUMsQ0FDakNGLGdDQUFnQyxDQUFDMEIsUUFEQTtBQUp2QztBQVFELEtBWEQ7O0FBYUEsV0FBTyxJQUFJbkIsT0FBSixDQUNMRSxLQURLLEVBRUxDLGFBRkssRUFHTEosWUFBWSxDQUNWTixnQ0FEVSxFQUVWd0Isd0JBQXdCLENBQUNiLGtCQUFELENBRmQsQ0FIUCxFQU9MQyxTQVBLLENBQVA7QUFTRDs7QUFuRzhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgREVGQVVMVF9KU09OX01BVEVSSUFMX1BST1BFUlRJRVMsXG4gIERFRkFVTFRfTUFURVJJQUxfUFJPUEVSVElFUyxcbiAgU1VQUE9SVEVEX01BVEVSSUFMX0JMRU5ESU5HX01PREVTLFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmltcG9ydCBJbml0aWFsaXplciBmcm9tICcuL0luaXRpYWxpemVyJztcbmltcG9ydCB7IElOSVRJQUxJWkVSX1RZUEVfVEVYVFVSRSBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyB3aXRoRGVmYXVsdHMgfSBmcm9tICcuLi91dGlscyc7XG5cbi8qKlxuICogU2V0cyB0aGUgYm9keSBwcm9wZXJ0eSB0byBiZSBhIFRIUkVFLlNwcml0ZSB3aXRoIGEgdGV4dHVyZSBtYXAgb24gaW5pdGlhbGl6ZWQgcGFydGljbGVzLlxuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGV4dHVyZSBleHRlbmRzIEluaXRpYWxpemVyIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYW4gVGV4dHVyZSBpbml0aWFsaXplci5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IFRIUkVFIC0gVGhlIFdlYiBHTCBBUEkgd2UgYXJlIHVzaW5nIGVnLiwgVEhSRUVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHR1cmUgLSBUaGUgc3ByaXRlIHRleHR1cmVcbiAgICogQHBhcmFtIHtvYmplY3R8dW5kZWZpbmVkfSBtYXRlcmlhbFByb3BlcnRpZXMgLSBUaGUgc3ByaXRlIG1hdGVyaWFsIHByb3BlcnRpZXNcbiAgICogQHBhcmFtIHs/VGV4dHVyZX0gbG9hZGVkVGV4dHVyZSAtIFByZWxvYWRlZCBUSFJFRS5UZXh0dXJlIGluc3RhbmNlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBUSFJFRSxcbiAgICBsb2FkZWRUZXh0dXJlLFxuICAgIG1hdGVyaWFsUHJvcGVydGllcyA9IERFRkFVTFRfTUFURVJJQUxfUFJPUEVSVElFUyxcbiAgICBpc0VuYWJsZWQgPSB0cnVlXG4gICkge1xuICAgIHN1cGVyKHR5cGUsIGlzRW5hYmxlZCk7XG5cbiAgICBjb25zdCB7IFNwcml0ZSwgU3ByaXRlTWF0ZXJpYWwgfSA9IFRIUkVFO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIG1hdGVyaWFsIHByb3BlcnRpZXMgZm9yIHRoaXMgb2JqZWN0J3MgU3ByaXRlTWF0ZXJpYWxcbiAgICAgKiBOT1RFIFRoaXMgaXMgcmVxdWlyZWQgZm9yIHRlc3RpbmcgcHVycG9zZXNcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqL1xuICAgIHRoaXMubWF0ZXJpYWxQcm9wZXJ0aWVzID0gd2l0aERlZmF1bHRzKFxuICAgICAgREVGQVVMVF9NQVRFUklBTF9QUk9QRVJUSUVTLFxuICAgICAgbWF0ZXJpYWxQcm9wZXJ0aWVzXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSB0ZXh0dXJlIGZvciB0aGUgVEhSRUUuU3ByaXRlTWF0ZXJpYWwgbWFwLlxuICAgICAqIEB0eXBlIHtUZXh0dXJlfVxuICAgICAqL1xuICAgIHRoaXMudGV4dHVyZSA9IGxvYWRlZFRleHR1cmU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUSFJFRS5TcHJpdGVNYXRlcmlhbCBpbnN0YW5jZS5cbiAgICAgKiBAdHlwZSB7U3ByaXRlTWF0ZXJpYWx9XG4gICAgICovXG4gICAgdGhpcy5tYXRlcmlhbCA9IG5ldyBTcHJpdGVNYXRlcmlhbCh7XG4gICAgICAuLi57IG1hcDogbG9hZGVkVGV4dHVyZSB9LFxuICAgICAgLi4udGhpcy5tYXRlcmlhbFByb3BlcnRpZXMsXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUSFJFRS5TcHJpdGUgaW5zdGFuY2UuXG4gICAgICogQHR5cGUge1Nwcml0ZX1cbiAgICAgKi9cbiAgICB0aGlzLnNwcml0ZSA9IG5ldyBTcHJpdGUodGhpcy5tYXRlcmlhbCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcGFydGljbGUgYm9keSB0byB0aGUgc3ByaXRlLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBzZXQgdGhlIGJvZHkgb2ZcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7XG4gICAgcGFydGljbGUuYm9keSA9IHRoaXMuc3ByaXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBUZXh0dXJlIGluaXRpYWxpemVyIGZyb20gSlNPTi5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGpzb24gLSBUaGUgSlNPTiB0byBjb25zdHJ1Y3QgdGhlIGluc3RhbmNlIGZyb21cbiAgICogQHBhcmFtIHtvYmplY3R9IFRIUkVFIC0gVGhlIFdlYiBHTCBBUEkgd2UgYXJlIHVzaW5nIGVnLiwgVEhSRUVcbiAgICogQHBhcmFtIHtUZXh0dXJlfSBqc29uLmxvYWRlZFRleHR1cmUgLSBUaGUgbG9hZGVkIHNwcml0ZSB0ZXh0dXJlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBqc29uLm1hdGVyaWFsUHJvcGVydGllcyAtIFRoZSBzcHJpdGUgbWF0ZXJpYWwgcHJvcGVydGllc1xuICAgKiBAcmV0dXJuIHtCb2R5U3ByaXRlfVxuICAgKi9cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIFRIUkVFKSB7XG4gICAgY29uc3Qge1xuICAgICAgbG9hZGVkVGV4dHVyZSxcbiAgICAgIG1hdGVyaWFsUHJvcGVydGllcyA9IERFRkFVTFRfSlNPTl9NQVRFUklBTF9QUk9QRVJUSUVTLFxuICAgICAgaXNFbmFibGVkID0gdHJ1ZSxcbiAgICB9ID0ganNvbjtcblxuICAgIGNvbnN0IGVuc3VyZU1hcHBlZEJsZW5kaW5nTW9kZSA9IHByb3BlcnRpZXMgPT4ge1xuICAgICAgY29uc3QgeyBibGVuZGluZyB9ID0gcHJvcGVydGllcztcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJvcGVydGllcyxcbiAgICAgICAgYmxlbmRpbmc6IGJsZW5kaW5nXG4gICAgICAgICAgPyBTVVBQT1JURURfTUFURVJJQUxfQkxFTkRJTkdfTU9ERVNbYmxlbmRpbmddXG4gICAgICAgICAgOiBTVVBQT1JURURfTUFURVJJQUxfQkxFTkRJTkdfTU9ERVNbXG4gICAgICAgICAgICBERUZBVUxUX0pTT05fTUFURVJJQUxfUFJPUEVSVElFUy5ibGVuZGluZ1xuICAgICAgICAgIF0sXG4gICAgICB9O1xuICAgIH07XG5cbiAgICByZXR1cm4gbmV3IFRleHR1cmUoXG4gICAgICBUSFJFRSxcbiAgICAgIGxvYWRlZFRleHR1cmUsXG4gICAgICB3aXRoRGVmYXVsdHMoXG4gICAgICAgIERFRkFVTFRfSlNPTl9NQVRFUklBTF9QUk9QRVJUSUVTLFxuICAgICAgICBlbnN1cmVNYXBwZWRCbGVuZGluZ01vZGUobWF0ZXJpYWxQcm9wZXJ0aWVzKVxuICAgICAgKSxcbiAgICAgIGlzRW5hYmxlZFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|