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,214 +0,0 @@
|
|
|
1
|
-
import { DR, PI } from '../constants';
|
|
2
|
-
import { MathUtils, Vector3D, createSpan } from '../math';
|
|
3
|
-
import Behaviour from './Behaviour';
|
|
4
|
-
import { getEasingByName } from '../ease';
|
|
5
|
-
import { BEHAVIOUR_TYPE_ROTATE as type } from './types';
|
|
6
|
-
/**
|
|
7
|
-
* Behaviour that rotates particles.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
export default class Rotate extends Behaviour {
|
|
11
|
-
/**
|
|
12
|
-
* Constructs a Rotate behaviour instance.
|
|
13
|
-
*
|
|
14
|
-
* @param {number} x - X axis rotation
|
|
15
|
-
* @param {number} y - Y axis rotation
|
|
16
|
-
* @param {number} z - Z axis rotation
|
|
17
|
-
* @param {number} life - The life of the behaviour
|
|
18
|
-
* @param {function} easing - The easing equation to use for transforms
|
|
19
|
-
* @param {boolean} [isEnabled=true] - Determines if the behaviour will be applied or not
|
|
20
|
-
* @return void
|
|
21
|
-
*/
|
|
22
|
-
constructor(x, y, z, life, easing, isEnabled = true) {
|
|
23
|
-
super(life, easing, type, isEnabled);
|
|
24
|
-
this.reset(x, y, z);
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Gets the rotation type.
|
|
28
|
-
*
|
|
29
|
-
* @return {string}
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
get rotationType() {
|
|
34
|
-
return this._rotationType;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Sets the rotation type.
|
|
38
|
-
*
|
|
39
|
-
* @param {string}
|
|
40
|
-
* @return void
|
|
41
|
-
*/
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
set rotationType(rotationType) {
|
|
45
|
-
/**
|
|
46
|
-
* @desc The rotation type. ENUM of ['same', 'set', 'to', 'add'].
|
|
47
|
-
* @type {string}
|
|
48
|
-
*/
|
|
49
|
-
this._rotationType = rotationType;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Resets the behaviour properties.
|
|
53
|
-
*
|
|
54
|
-
* @param {number} x - X axis rotation
|
|
55
|
-
* @param {number} y - Y axis rotation
|
|
56
|
-
* @param {number} z - Z axis rotation
|
|
57
|
-
* @param {number} life - the life of the behaviour
|
|
58
|
-
* @param {function} easing - the easing equation to use for transforms
|
|
59
|
-
* @return void
|
|
60
|
-
*/
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
reset(x, y, z, life, easing) {
|
|
64
|
-
/**
|
|
65
|
-
* @desc X axis rotation.
|
|
66
|
-
* @type {number|Span}
|
|
67
|
-
*/
|
|
68
|
-
this.x = x || 0;
|
|
69
|
-
/**
|
|
70
|
-
* @desc Y axis rotation.
|
|
71
|
-
* @type {number|Span}
|
|
72
|
-
*/
|
|
73
|
-
|
|
74
|
-
this.y = y || 0;
|
|
75
|
-
/**
|
|
76
|
-
* @desc Z axis rotation.
|
|
77
|
-
* @type {number|Span}
|
|
78
|
-
*/
|
|
79
|
-
|
|
80
|
-
this.z = z || 0;
|
|
81
|
-
|
|
82
|
-
if (x === undefined || x == 'same') {
|
|
83
|
-
this.rotationType = 'same';
|
|
84
|
-
} else if (y == undefined) {
|
|
85
|
-
this.rotationType = 'set';
|
|
86
|
-
} else if (z === undefined) {
|
|
87
|
-
this.rotationType = 'to';
|
|
88
|
-
} else {
|
|
89
|
-
this.rotationType = 'add';
|
|
90
|
-
this.x = createSpan(this.x * DR);
|
|
91
|
-
this.y = createSpan(this.y * DR);
|
|
92
|
-
this.z = createSpan(this.z * DR);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
life && super.reset(life, easing);
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Initializes the behaviour on a particle.
|
|
99
|
-
*
|
|
100
|
-
* @param {object} particle - the particle to initialize the behaviour on
|
|
101
|
-
* @return void
|
|
102
|
-
*/
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
initialize(particle) {
|
|
106
|
-
switch (this.rotationType) {
|
|
107
|
-
case 'same':
|
|
108
|
-
break;
|
|
109
|
-
|
|
110
|
-
case 'set':
|
|
111
|
-
this._setRotation(particle.rotation, this.x);
|
|
112
|
-
|
|
113
|
-
break;
|
|
114
|
-
|
|
115
|
-
case 'to':
|
|
116
|
-
particle.transform.fR = particle.transform.fR || new Vector3D();
|
|
117
|
-
particle.transform.tR = particle.transform.tR || new Vector3D();
|
|
118
|
-
|
|
119
|
-
this._setRotation(particle.transform.fR, this.x);
|
|
120
|
-
|
|
121
|
-
this._setRotation(particle.transform.tR, this.y);
|
|
122
|
-
|
|
123
|
-
break;
|
|
124
|
-
|
|
125
|
-
case 'add':
|
|
126
|
-
particle.transform.addR = new Vector3D(this.x.getValue(), this.y.getValue(), this.z.getValue());
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Sets the particle's rotation prior to the behaviour being applied.
|
|
132
|
-
*
|
|
133
|
-
* NOTE It's hard to see here, but this is mutating the particle's rotation
|
|
134
|
-
* even though the particle is not being passed in directly.
|
|
135
|
-
*
|
|
136
|
-
* NOTE the else if below will never be reached because the value being passed in
|
|
137
|
-
* will never be of type Vector3D.
|
|
138
|
-
*
|
|
139
|
-
* @param {Vector3D} particleRotation - the particle's rotation vector
|
|
140
|
-
* @param {string|number} value - the value to set the rotation value to, if 'random'
|
|
141
|
-
* rotation is randomised
|
|
142
|
-
* @return void
|
|
143
|
-
*/
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
_setRotation(particleRotation, value) {
|
|
147
|
-
particleRotation = particleRotation || new Vector3D();
|
|
148
|
-
|
|
149
|
-
if (value == 'random') {
|
|
150
|
-
var x = MathUtils.randomAToB(-PI, PI);
|
|
151
|
-
var y = MathUtils.randomAToB(-PI, PI);
|
|
152
|
-
var z = MathUtils.randomAToB(-PI, PI);
|
|
153
|
-
particleRotation.set(x, y, z);
|
|
154
|
-
} // we can't ever get here because value will never be a Vector3D!
|
|
155
|
-
// consider refactoring to
|
|
156
|
-
// if (value instance of Span) { vec3.add(value.getValue()); }
|
|
157
|
-
else if (value instanceof Vector3D) {
|
|
158
|
-
particleRotation.copy(value);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Mutates the particle.rotation property.
|
|
163
|
-
*
|
|
164
|
-
* @see http://stackoverflow.com/questions/21622956/how-to-convert-direction-vector-to-euler-angles
|
|
165
|
-
* @param {object} particle - the particle to apply the behaviour to
|
|
166
|
-
* @param {number} time - engine time
|
|
167
|
-
* @param {integer} index - the particle index
|
|
168
|
-
* @return void
|
|
169
|
-
*/
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
mutate(particle, time, index) {
|
|
173
|
-
this.energize(particle, time, index);
|
|
174
|
-
|
|
175
|
-
switch (this.rotationType) {
|
|
176
|
-
// orients the particle in the direction it is moving
|
|
177
|
-
case 'same':
|
|
178
|
-
if (!particle.rotation) {
|
|
179
|
-
particle.rotation = new Vector3D();
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
particle.rotation.copy(particle.velocity);
|
|
183
|
-
break;
|
|
184
|
-
|
|
185
|
-
case 'set':
|
|
186
|
-
//
|
|
187
|
-
break;
|
|
188
|
-
|
|
189
|
-
case 'to':
|
|
190
|
-
particle.rotation.x = MathUtils.lerp(particle.transform.fR.x, particle.transform.tR.x, this.energy);
|
|
191
|
-
particle.rotation.y = MathUtils.lerp(particle.transform.fR.y, particle.transform.tR.y, this.energy);
|
|
192
|
-
particle.rotation.z = MathUtils.lerp(particle.transform.fR.z, particle.transform.tR.z, this.energy);
|
|
193
|
-
break;
|
|
194
|
-
|
|
195
|
-
case 'add':
|
|
196
|
-
particle.rotation.add(particle.transform.addR);
|
|
197
|
-
break;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
static fromJSON(json) {
|
|
202
|
-
const {
|
|
203
|
-
x,
|
|
204
|
-
y,
|
|
205
|
-
z,
|
|
206
|
-
life,
|
|
207
|
-
easing,
|
|
208
|
-
isEnabled = true
|
|
209
|
-
} = json;
|
|
210
|
-
return new Rotate(x, y, z, life, getEasingByName(easing), isEnabled);
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
}
|
|
214
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvUm90YXRlLmpzIl0sIm5hbWVzIjpbIkRSIiwiUEkiLCJNYXRoVXRpbHMiLCJWZWN0b3IzRCIsImNyZWF0ZVNwYW4iLCJCZWhhdmlvdXIiLCJnZXRFYXNpbmdCeU5hbWUiLCJCRUhBVklPVVJfVFlQRV9ST1RBVEUiLCJ0eXBlIiwiUm90YXRlIiwiY29uc3RydWN0b3IiLCJ4IiwieSIsInoiLCJsaWZlIiwiZWFzaW5nIiwiaXNFbmFibGVkIiwicmVzZXQiLCJyb3RhdGlvblR5cGUiLCJfcm90YXRpb25UeXBlIiwidW5kZWZpbmVkIiwiaW5pdGlhbGl6ZSIsInBhcnRpY2xlIiwiX3NldFJvdGF0aW9uIiwicm90YXRpb24iLCJ0cmFuc2Zvcm0iLCJmUiIsInRSIiwiYWRkUiIsImdldFZhbHVlIiwicGFydGljbGVSb3RhdGlvbiIsInZhbHVlIiwicmFuZG9tQVRvQiIsInNldCIsImNvcHkiLCJtdXRhdGUiLCJ0aW1lIiwiaW5kZXgiLCJlbmVyZ2l6ZSIsInZlbG9jaXR5IiwibGVycCIsImVuZXJneSIsImFkZCIsImZyb21KU09OIiwianNvbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsRUFBVCxFQUFhQyxFQUFiLFFBQXVCLGNBQXZCO0FBQ0EsU0FBU0MsU0FBVCxFQUFvQkMsUUFBcEIsRUFBOEJDLFVBQTlCLFFBQWdELFNBQWhEO0FBRUEsT0FBT0MsU0FBUCxNQUFzQixhQUF0QjtBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsU0FBaEM7QUFDQSxTQUFTQyxxQkFBcUIsSUFBSUMsSUFBbEMsUUFBOEMsU0FBOUM7QUFFQTtBQUNBO0FBQ0E7O0FBQ0EsZUFBZSxNQUFNQyxNQUFOLFNBQXFCSixTQUFyQixDQUErQjtBQUM1QztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0VLLEVBQUFBLFdBQVcsQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKLEVBQU9DLENBQVAsRUFBVUMsSUFBVixFQUFn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QmtCLEdBQWxCLENBQXNCcEIsUUFBUSxDQUFDRyxTQUFULENBQW1CRyxJQUF6QztBQUNBO0FBbENKO0FBb0NEOztBQUVjLFNBQVJlLFFBQVEsQ0FBQ0MsSUFBRCxFQUFPO0FBQ3BCLFVBQU07QUFBRWpDLE1BQUFBLENBQUY7QUFBS0MsTUFBQUEsQ0FBTDtBQUFRQyxNQUFBQSxDQUFSO0FBQVdDLE1BQUFBLElBQVg7QUFBaUJDLE1BQUFBLE1BQWpCO0FBQXlCQyxNQUFBQSxTQUFTLEdBQUc7QUFBckMsUUFBOEM0QixJQUFwRDtBQUVBLFdBQU8sSUFBSW5DLE1BQUosQ0FBV0UsQ0FBWCxFQUFjQyxDQUFkLEVBQWlCQyxDQUFqQixFQUFvQkMsSUFBcEIsRUFBMEJSLGVBQWUsQ0FBQ1MsTUFBRCxDQUF6QyxFQUFtREMsU0FBbkQsQ0FBUDtBQUNEOztBQTNNMkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEUiwgUEkgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgTWF0aFV0aWxzLCBWZWN0b3IzRCwgY3JlYXRlU3BhbiB9IGZyb20gJy4uL21hdGgnO1xuXG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gJy4vQmVoYXZpb3VyJztcbmltcG9ydCB7IGdldEVhc2luZ0J5TmFtZSB9IGZyb20gJy4uL2Vhc2UnO1xuaW1wb3J0IHsgQkVIQVZJT1VSX1RZUEVfUk9UQVRFIGFzIHR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBCZWhhdmlvdXIgdGhhdCByb3RhdGVzIHBhcnRpY2xlcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm90YXRlIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBSb3RhdGUgYmVoYXZpb3VyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0geCAtIFggYXhpcyByb3RhdGlvblxuICAgKiBAcGFyYW0ge251bWJlcn0geSAtIFkgYXhpcyByb3RhdGlvblxuICAgKiBAcGFyYW0ge251bWJlcn0geiAtIFogYXhpcyByb3RhdGlvblxuICAgKiBAcGFyYW0ge251bWJlcn0gbGlmZSAtIFRoZSBsaWZlIG9mIHRoZSBiZWhhdmlvdXJcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZWFzaW5nIC0gVGhlIGVhc2luZyBlcXVhdGlvbiB0byB1c2UgZm9yIHRyYW5zZm9ybXNcbiAgICogQHBhcmFtIHtib29sZWFufSBbaXNFbmFibGVkPXRydWVdIC0gRGV0ZXJtaW5lcyBpZiB0aGUgYmVoYXZpb3VyIHdpbGwgYmUgYXBwbGllZCBvciBub3RcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih4LCB5LCB6LCBsaWZlLCBlYXNpbmcsIGlzRW5hYmxlZCA9IHRydWUpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcsIHR5cGUsIGlzRW5hYmxlZCk7XG5cbiAgICB0aGlzLnJlc2V0KHgsIHksIHopO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJvdGF0aW9uIHR5cGUuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIGdldCByb3RhdGlvblR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdGF0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByb3RhdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ31cbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBzZXQgcm90YXRpb25UeXBlKHJvdGF0aW9uVHlwZSkge1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSByb3RhdGlvbiB0eXBlLiBFTlVNIG9mIFsnc2FtZScsICdzZXQnLCAndG8nLCAnYWRkJ10uXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLl9yb3RhdGlvblR5cGUgPSByb3RhdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBiZWhhdmlvdXIgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHggLSBYIGF4aXMgcm90YXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgLSBZIGF4aXMgcm90YXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IHogLSBaIGF4aXMgcm90YXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IGxpZmUgLSB0aGUgbGlmZSBvZiB0aGUgYmVoYXZpb3VyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGVhc2luZyAtIHRoZSBlYXNpbmcgZXF1YXRpb24gdG8gdXNlIGZvciB0cmFuc2Zvcm1zXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgcmVzZXQoeCwgeSwgeiwgbGlmZSwgZWFzaW5nKSB7XG4gICAgLyoqXG4gICAgICogQGRlc2MgWCBheGlzIHJvdGF0aW9uLlxuICAgICAqIEB0eXBlIHtudW1iZXJ8U3Bhbn1cbiAgICAgKi9cbiAgICB0aGlzLnggPSB4IHx8IDA7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBZIGF4aXMgcm90YXRpb24uXG4gICAgICogQHR5cGUge251bWJlcnxTcGFufVxuICAgICAqL1xuICAgIHRoaXMueSA9IHkgfHwgMDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFogYXhpcyByb3RhdGlvbi5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfFNwYW59XG4gICAgICovXG4gICAgdGhpcy56ID0geiB8fCAwO1xuXG4gICAgaWYgKHggPT09IHVuZGVmaW5lZCB8fCB4ID09ICdzYW1lJykge1xuICAgICAgdGhpcy5yb3RhdGlvblR5cGUgPSAnc2FtZSc7XG4gICAgfSBlbHNlIGlmICh5ID09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yb3RhdGlvblR5cGUgPSAnc2V0JztcbiAgICB9IGVsc2UgaWYgKHogPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yb3RhdGlvblR5cGUgPSAndG8nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdGF0aW9uVHlwZSA9ICdhZGQnO1xuICAgICAgdGhpcy54ID0gY3JlYXRlU3Bhbih0aGlzLnggKiBEUik7XG4gICAgICB0aGlzLnkgPSBjcmVhdGVTcGFuKHRoaXMueSAqIERSKTtcbiAgICAgIHRoaXMueiA9IGNyZWF0ZVNwYW4odGhpcy56ICogRFIpO1xuICAgIH1cblxuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgYmVoYXZpb3VyIG9uIGEgcGFydGljbGUuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWNsZSAtIHRoZSBwYXJ0aWNsZSB0byBpbml0aWFsaXplIHRoZSBiZWhhdmlvdXIgb25cbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7XG4gICAgc3dpdGNoICh0aGlzLnJvdGF0aW9uVHlwZSkge1xuICAgICAgY2FzZSAnc2FtZSc6XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzZXQnOlxuICAgICAgICB0aGlzLl9zZXRSb3RhdGlvbihwYXJ0aWNsZS5yb3RhdGlvbiwgdGhpcy54KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3RvJzpcbiAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLmZSID0gcGFydGljbGUudHJhbnNmb3JtLmZSIHx8IG5ldyBWZWN0b3IzRCgpO1xuICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0udFIgPSBwYXJ0aWNsZS50cmFuc2Zvcm0udFIgfHwgbmV3IFZlY3RvcjNEKCk7XG4gICAgICAgIHRoaXMuX3NldFJvdGF0aW9uKHBhcnRpY2xlLnRyYW5zZm9ybS5mUiwgdGhpcy54KTtcbiAgICAgICAgdGhpcy5fc2V0Um90YXRpb24ocGFydGljbGUudHJhbnNmb3JtLnRSLCB0aGlzLnkpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYWRkJzpcbiAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLmFkZFIgPSBuZXcgVmVjdG9yM0QoXG4gICAgICAgICAgdGhpcy54LmdldFZhbHVlKCksXG4gICAgICAgICAgdGhpcy55LmdldFZhbHVlKCksXG4gICAgICAgICAgdGhpcy56LmdldFZhbHVlKClcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHBhcnRpY2xlJ3Mgcm90YXRpb24gcHJpb3IgdG8gdGhlIGJlaGF2aW91ciBiZWluZyBhcHBsaWVkLlxuICAgKlxuICAgKiBOT1RFIEl0J3MgaGFyZCB0byBzZWUgaGVyZSwgYnV0IHRoaXMgaXMgbXV0YXRpbmcgdGhlIHBhcnRpY2xlJ3Mgcm90YXRpb25cbiAgICogZXZlbiB0aG91Z2ggdGhlIHBhcnRpY2xlIGlzIG5vdCBiZWluZyBwYXNzZWQgaW4gZGlyZWN0bHkuXG4gICAqXG4gICAqIE5PVEUgdGhlIGVsc2UgaWYgYmVsb3cgd2lsbCBuZXZlciBiZSByZWFjaGVkIGJlY2F1c2UgdGhlIHZhbHVlIGJlaW5nIHBhc3NlZCBpblxuICAgKiB3aWxsIG5ldmVyIGJlIG9mIHR5cGUgVmVjdG9yM0QuXG4gICAqXG4gICAqIEBwYXJhbSB7VmVjdG9yM0R9IHBhcnRpY2xlUm90YXRpb24gLSB0aGUgcGFydGljbGUncyByb3RhdGlvbiB2ZWN0b3JcbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YWx1ZSAtIHRoZSB2YWx1ZSB0byBzZXQgdGhlIHJvdGF0aW9uIHZhbHVlIHRvLCBpZiAncmFuZG9tJ1xuICAgKiByb3RhdGlvbiBpcyByYW5kb21pc2VkXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgX3NldFJvdGF0aW9uKHBhcnRpY2xlUm90YXRpb24sIHZhbHVlKSB7XG4gICAgcGFydGljbGVSb3RhdGlvbiA9IHBhcnRpY2xlUm90YXRpb24gfHwgbmV3IFZlY3RvcjNEKCk7XG4gICAgaWYgKHZhbHVlID09ICdyYW5kb20nKSB7XG4gICAgICB2YXIgeCA9IE1hdGhVdGlscy5yYW5kb21BVG9CKC1QSSwgUEkpO1xuICAgICAgdmFyIHkgPSBNYXRoVXRpbHMucmFuZG9tQVRvQigtUEksIFBJKTtcbiAgICAgIHZhciB6ID0gTWF0aFV0aWxzLnJhbmRvbUFUb0IoLVBJLCBQSSk7XG5cbiAgICAgIHBhcnRpY2xlUm90YXRpb24uc2V0KHgsIHksIHopO1xuICAgIH1cbiAgICAvLyB3ZSBjYW4ndCBldmVyIGdldCBoZXJlIGJlY2F1c2UgdmFsdWUgd2lsbCBuZXZlciBiZSBhIFZlY3RvcjNEIVxuICAgIC8vIGNvbnNpZGVyIHJlZmFjdG9yaW5nIHRvXG4gICAgLy8gIGlmICh2YWx1ZSBpbnN0YW5jZSBvZiBTcGFuKSB7IHZlYzMuYWRkKHZhbHVlLmdldFZhbHVlKCkpOyB9XG4gICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBWZWN0b3IzRCkge1xuICAgICAgcGFydGljbGVSb3RhdGlvbi5jb3B5KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTXV0YXRlcyB0aGUgcGFydGljbGUucm90YXRpb24gcHJvcGVydHkuXG4gICAqXG4gICAqIEBzZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMTYyMjk1Ni9ob3ctdG8tY29udmVydC1kaXJlY3Rpb24tdmVjdG9yLXRvLWV1bGVyLWFuZ2xlc1xuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGljbGUgLSB0aGUgcGFydGljbGUgdG8gYXBwbHkgdGhlIGJlaGF2aW91ciB0b1xuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIGVuZ2luZSB0aW1lXG4gICAqIEBwYXJhbSB7aW50ZWdlcn0gaW5kZXggLSB0aGUgcGFydGljbGUgaW5kZXhcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBtdXRhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5lbmVyZ2l6ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuXG4gICAgc3dpdGNoICh0aGlzLnJvdGF0aW9uVHlwZSkge1xuICAgICAgLy8gb3JpZW50cyB0aGUgcGFydGljbGUgaW4gdGhlIGRpcmVjdGlvbiBpdCBpcyBtb3ZpbmdcbiAgICAgIGNhc2UgJ3NhbWUnOlxuICAgICAgICBpZiAoIXBhcnRpY2xlLnJvdGF0aW9uKSB7XG4gICAgICAgICAgcGFydGljbGUucm90YXRpb24gPSBuZXcgVmVjdG9yM0QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhcnRpY2xlLnJvdGF0aW9uLmNvcHkocGFydGljbGUudmVsb2NpdHkpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnc2V0JzpcbiAgICAgICAgLy9cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3RvJzpcbiAgICAgICAgcGFydGljbGUucm90YXRpb24ueCA9IE1hdGhVdGlscy5sZXJwKFxuICAgICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS5mUi54LFxuICAgICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS50Ui54LFxuICAgICAgICAgIHRoaXMuZW5lcmd5XG4gICAgICAgICk7XG4gICAgICAgIHBhcnRpY2xlLnJvdGF0aW9uLnkgPSBNYXRoVXRpbHMubGVycChcbiAgICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0uZlIueSxcbiAgICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0udFIueSxcbiAgICAgICAgICB0aGlzLmVuZXJneVxuICAgICAgICApO1xuICAgICAgICBwYXJ0aWNsZS5yb3RhdGlvbi56ID0gTWF0aFV0aWxzLmxlcnAoXG4gICAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLmZSLnosXG4gICAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLnRSLnosXG4gICAgICAgICAgdGhpcy5lbmVyZ3lcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2FkZCc6XG4gICAgICAgIHBhcnRpY2xlLnJvdGF0aW9uLmFkZChwYXJ0aWNsZS50cmFuc2Zvcm0uYWRkUik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgeyB4LCB5LCB6LCBsaWZlLCBlYXNpbmcsIGlzRW5hYmxlZCA9IHRydWUgfSA9IGpzb247XG5cbiAgICByZXR1cm4gbmV3IFJvdGF0ZSh4LCB5LCB6LCBsaWZlLCBnZXRFYXNpbmdCeU5hbWUoZWFzaW5nKSwgaXNFbmFibGVkKTtcbiAgfVxufVxuIl19
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { MathUtils, createSpan } from '../math';
|
|
2
|
-
import Behaviour from './Behaviour';
|
|
3
|
-
import { getEasingByName } from '../ease';
|
|
4
|
-
import { BEHAVIOUR_TYPE_SCALE as type } from './types';
|
|
5
|
-
/**
|
|
6
|
-
* Behaviour that scales particles.
|
|
7
|
-
*
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
export default class Scale extends Behaviour {
|
|
11
|
-
/**
|
|
12
|
-
* Constructs a Scale behaviour instance.
|
|
13
|
-
*
|
|
14
|
-
* @param {number} scaleA - the starting scale value
|
|
15
|
-
* @param {?number} scaleB - the ending scale value
|
|
16
|
-
* @param {number} life - the life of the behaviour
|
|
17
|
-
* @param {function} easing - the easing equation to use for transforms
|
|
18
|
-
* @param {boolean} [isEnabled=true] - Determines if the behaviour will be applied or not
|
|
19
|
-
* @return void
|
|
20
|
-
*/
|
|
21
|
-
constructor(scaleA, scaleB, life, easing, isEnabled = true) {
|
|
22
|
-
super(life, easing, type, isEnabled);
|
|
23
|
-
this.reset(scaleA, scaleB);
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Gets the _same property which determines if the scale props are the same.
|
|
27
|
-
*
|
|
28
|
-
* @return {boolean}
|
|
29
|
-
*/
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
get same() {
|
|
33
|
-
return this._same;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Sets the _same property which determines if the scale props are the same.
|
|
37
|
-
*
|
|
38
|
-
* @param {boolean} same
|
|
39
|
-
* @return {boolean}
|
|
40
|
-
*/
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
set same(same) {
|
|
44
|
-
/**
|
|
45
|
-
* @type {boolean}
|
|
46
|
-
*/
|
|
47
|
-
this._same = same;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Resets the behaviour properties.
|
|
51
|
-
*
|
|
52
|
-
* @param {number} scaleA - the starting scale value
|
|
53
|
-
* @param {?number} scaleB - the ending scale value
|
|
54
|
-
* @param {number} life - the life of the behaviour
|
|
55
|
-
* @param {function} easing - the easing equation to use for transforms
|
|
56
|
-
* @return void
|
|
57
|
-
*/
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
reset(scaleA, scaleB, life, easing) {
|
|
61
|
-
this.same = scaleB === null || scaleB === undefined ? true : false;
|
|
62
|
-
/**
|
|
63
|
-
* @desc The starting scale.
|
|
64
|
-
* @type {Span}
|
|
65
|
-
*/
|
|
66
|
-
|
|
67
|
-
this.scaleA = createSpan(scaleA || 1);
|
|
68
|
-
/**
|
|
69
|
-
* @desc The ending scale.
|
|
70
|
-
* @type {Span}
|
|
71
|
-
*/
|
|
72
|
-
|
|
73
|
-
this.scaleB = createSpan(scaleB);
|
|
74
|
-
life && super.reset(life, easing);
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Initializes the behaviour on a particle.
|
|
78
|
-
* Stores initial values for comparison and mutation in the applyBehaviour method.
|
|
79
|
-
*
|
|
80
|
-
* @param {object} particle - the particle to initialize the behaviour on
|
|
81
|
-
* @return void
|
|
82
|
-
*/
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
initialize(particle) {
|
|
86
|
-
particle.transform.scaleA = this.scaleA.getValue();
|
|
87
|
-
particle.transform.oldRadius = particle.radius;
|
|
88
|
-
particle.transform.scaleB = this.same ? particle.transform.scaleA : this.scaleB.getValue();
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Applies the behaviour to the particle.
|
|
92
|
-
* Mutates the particle's scale and its radius according to this scale.
|
|
93
|
-
*
|
|
94
|
-
* @param {object} particle - the particle to apply the behaviour to
|
|
95
|
-
* @param {number} time - engine time
|
|
96
|
-
* @param {integer} index - the particle index
|
|
97
|
-
* @return void
|
|
98
|
-
*/
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
mutate(particle, time, index) {
|
|
102
|
-
this.energize(particle, time, index);
|
|
103
|
-
particle.scale = MathUtils.lerp(particle.transform.scaleA, particle.transform.scaleB, this.energy);
|
|
104
|
-
|
|
105
|
-
if (particle.scale < 0.0005) {
|
|
106
|
-
particle.scale = 0;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
particle.radius = particle.transform.oldRadius * particle.scale;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Returns a new instance of the behaviour from the JSON object passed.
|
|
113
|
-
*
|
|
114
|
-
* @param {object} json - JSON object containing the required constructor properties
|
|
115
|
-
* @return {Spring}
|
|
116
|
-
*/
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
static fromJSON(json) {
|
|
120
|
-
const {
|
|
121
|
-
scaleA,
|
|
122
|
-
scaleB,
|
|
123
|
-
life,
|
|
124
|
-
easing,
|
|
125
|
-
isEnabled = true
|
|
126
|
-
} = json;
|
|
127
|
-
return new Scale(scaleA, scaleB, life, getEasingByName(easing), isEnabled);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
}
|
|
131
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvU2NhbGUuanMiXSwibmFtZXMiOlsiTWF0aFV0aWxzIiwiY3JlYXRlU3BhbiIsIkJlaGF2aW91ciIsImdldEVhc2luZ0J5TmFtZSIsIkJFSEFWSU9VUl9UWVBFX1NDQUxFIiwidHlwZSIsIlNjYWxlIiwiY29uc3RydWN0b3IiLCJzY2FsZUEiLCJzY2FsZUIiLCJsaWZlIiwiZWFzaW5nIiwiaXNFbmFibGVkIiwicmVzZXQiLCJzYW1lIiwiX3NhbWUiLCJ1bmRlZmluZWQiLCJpbml0aWFsaXplIiwicGFydGljbGUiLCJ0cmFuc2Zvcm0iLCJnZXRWYWx1ZSIsIm9sZFJhZGl1cyIsInJhZGl1cyIsIm11dGF0ZSIsInRpbWUiLCJpbmRleCIsImVuZXJnaXplIiwic2NhbGUiLCJsZXJwIiwiZW5lcmd5IiwiZnJvbUpTT04iLCJqc29uIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxTQUFULEVBQW9CQyxVQUFwQixRQUFzQyxTQUF0QztBQUVBLE9BQU9DLFNBQVAsTUFBc0IsYUFBdEI7QUFDQSxTQUFTQyxlQUFULFFBQWdDLFNBQWhDO0FBQ0EsU0FBU0Msb0JBQW9CLElBQUlDLElBQWpDLFFBQTZDLFNBQTdDO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsZUFBZSxNQUFNQyxLQUFOLFNBQW9CSixTQUFwQixDQUE4QjtBQUMzQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFSyxFQUFBQSxXQUFXLENBQUNDLE1BQUQsRUFBU0MsTUFBVCxFQUFpQkMsSUFBakIsRUFBdUJDLE1BQXZCLEVBQStCQyxTQUFTLEdBQUcsSUFBM0MsRUFBaUQ7QUFDMUQsVUFBTUYsSUFBTixFQUFZQyxNQUFaLEVBQW9CTixJQUFwQixFQUEwQk8sU0FBMUI7QUFFQSxTQUFLQyxLQUFMLENBQVdMLE1BQVgsRUFBbUJDLE1BQW5CO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBOzs7QUFDVSxNQUFKSyxJQUFJLEdBQUc7QUFDVCxXQUFPLEtBQUtDLEtBQVo7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ1UsTUFBSkQsSUFBSSxDQUFDQSxJQUFELEVBQU87QUFDYjtBQUNKO0FBQ0E7QUFDSSxTQUFLQyxLQUFMLEdBQWFELElBQWI7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0VELEVBQUFBLEtBQUssQ0FBQ0wsTUFBRCxFQUFTQyxNQUFULEVBQWlCQyxJQUFqQixFQUF1QkMsTUFBdkIsRUFBK0I7QUFDbEMsU0FBS0csSUFBTCxHQUFZTCxNQUFNLEtBQUssSUFBWCxJQUFtQkEsTUFBTSxLQUFLTyxTQUE5QixHQUEwQyxJQUExQyxHQUFpRCxLQUE3RDtBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtSLE1BQUwsR0FBY1AsVUFBVSxDQUFDTyxNQUFNLElBQUksQ0FBWCxDQUF4QjtBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtDLE1BQUwsR0FBY1IsVUFBVSxDQUFDUSxNQUFELENBQXhCO0FBRUFDLElBQUFBLElBQUksSUFBSSxNQUFNRyxLQUFOLENBQVlILElBQVosRUFBa0JDLE1BQWxCLENBQVI7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDRU0sRUFBQUEsVUFBVSxDQUFDQyxRQUFELEVBQVc7QUFDbkJBLElBQUFBLFFBQVEsQ0FBQ0MsU0FBVCxDQUFtQlgsTUFBbkIsR0FBNEIsS0FBS0EsTUFBTCxDQUFZWSxRQUFaLEVBQTVCO0FBQ0FGLElBQUFBLFFBQVEsQ0FBQ0MsU0FBVCxDQUFtQkUsU0FBbkIsR0FBK0JILFFBQVEsQ0FBQ0ksTUFBeEM7QUFFQUosSUFBQUEsUUFBUSxDQUFDQyxTQUFULENBQW1CVixNQUFuQixHQUE0QixLQUFLSyxJQUFMLEdBQ3hCSSxRQUFRLENBQUNDLFNBQVQsQ0FBbUJYLE1BREssR0FFeEIsS0FBS0MsTUFBTCxDQUFZVyxRQUFaLEVBRko7QUFHRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0VHLEVBQUFBLE1BQU0sQ0FBQ0wsUUFBRCxFQUFXTSxJQUFYLEVBQWlCQyxLQUFqQixFQUF3QjtBQUM1QixTQUFLQyxRQUFMLENBQWNSLFFBQWQsRUFBd0JNLElBQXhCLEVBQThCQyxLQUE5QjtBQUVBUCxJQUFBQSxRQUFRLENBQUNTLEtBQVQsR0FBaUIzQixTQUFTLENBQUM0QixJQUFWLENBQ2ZWLFFBQVEsQ0FBQ0MsU0FBVCxDQUFtQlgsTUFESixFQUVmVSxRQUFRLENBQUNDLFNBQVQsQ0FBbUJWLE1BRkosRUFHZixLQUFLb0IsTUFIVSxDQUFqQjs7QUFNQSxRQUFJWCxRQUFRLENBQUNTLEtBQVQsR0FBaUIsTUFBckIsRUFBNkI7QUFDM0JULE1BQUFBLFFBQVEsQ0FBQ1MsS0FBVCxHQUFpQixDQUFqQjtBQUNEOztBQUVEVCxJQUFBQSxRQUFRLENBQUNJLE1BQVQsR0FBa0JKLFFBQVEsQ0FBQ0MsU0FBVCxDQUFtQkUsU0FBbkIsR0FBK0JILFFBQVEsQ0FBQ1MsS0FBMUQ7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ2lCLFNBQVJHLFFBQVEsQ0FBQ0MsSUFBRCxFQUFPO0FBQ3BCLFVBQU07QUFBRXZCLE1BQUFBLE1BQUY7QUFBVUMsTUFBQUEsTUFBVjtBQUFrQkMsTUFBQUEsSUFBbEI7QUFBd0JDLE1BQUFBLE1BQXhCO0FBQWdDQyxNQUFBQSxTQUFTLEdBQUc7QUFBNUMsUUFBcURtQixJQUEzRDtBQUVBLFdBQU8sSUFBSXpCLEtBQUosQ0FBVUUsTUFBVixFQUFrQkMsTUFBbEIsRUFBMEJDLElBQTFCLEVBQWdDUCxlQUFlLENBQUNRLE1BQUQsQ0FBL0MsRUFBeURDLFNBQXpELENBQVA7QUFDRDs7QUFySDBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF0aFV0aWxzLCBjcmVhdGVTcGFuIH0gZnJvbSAnLi4vbWF0aCc7XG5cbmltcG9ydCBCZWhhdmlvdXIgZnJvbSAnLi9CZWhhdmlvdXInO1xuaW1wb3J0IHsgZ2V0RWFzaW5nQnlOYW1lIH0gZnJvbSAnLi4vZWFzZSc7XG5pbXBvcnQgeyBCRUhBVklPVVJfVFlQRV9TQ0FMRSBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQmVoYXZpb3VyIHRoYXQgc2NhbGVzIHBhcnRpY2xlcy5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjYWxlIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBTY2FsZSBiZWhhdmlvdXIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzY2FsZUEgLSB0aGUgc3RhcnRpbmcgc2NhbGUgdmFsdWVcbiAgICogQHBhcmFtIHs/bnVtYmVyfSBzY2FsZUIgLSB0aGUgZW5kaW5nIHNjYWxlIHZhbHVlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsaWZlIC0gdGhlIGxpZmUgb2YgdGhlIGJlaGF2aW91clxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBlYXNpbmcgLSB0aGUgZWFzaW5nIGVxdWF0aW9uIHRvIHVzZSBmb3IgdHJhbnNmb3Jtc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0VuYWJsZWQ9dHJ1ZV0gLSBEZXRlcm1pbmVzIGlmIHRoZSBiZWhhdmlvdXIgd2lsbCBiZSBhcHBsaWVkIG9yIG5vdFxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjYWxlQSwgc2NhbGVCLCBsaWZlLCBlYXNpbmcsIGlzRW5hYmxlZCA9IHRydWUpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcsIHR5cGUsIGlzRW5hYmxlZCk7XG5cbiAgICB0aGlzLnJlc2V0KHNjYWxlQSwgc2NhbGVCKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBfc2FtZSBwcm9wZXJ0eSB3aGljaCBkZXRlcm1pbmVzIGlmIHRoZSBzY2FsZSBwcm9wcyBhcmUgdGhlIHNhbWUuXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgc2FtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2FtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBfc2FtZSBwcm9wZXJ0eSB3aGljaCBkZXRlcm1pbmVzIGlmIHRoZSBzY2FsZSBwcm9wcyBhcmUgdGhlIHNhbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2FtZVxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgc2V0IHNhbWUoc2FtZSkge1xuICAgIC8qKlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMuX3NhbWUgPSBzYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgYmVoYXZpb3VyIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzY2FsZUEgLSB0aGUgc3RhcnRpbmcgc2NhbGUgdmFsdWVcbiAgICogQHBhcmFtIHs/bnVtYmVyfSBzY2FsZUIgLSB0aGUgZW5kaW5nIHNjYWxlIHZhbHVlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsaWZlIC0gdGhlIGxpZmUgb2YgdGhlIGJlaGF2aW91clxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBlYXNpbmcgLSB0aGUgZWFzaW5nIGVxdWF0aW9uIHRvIHVzZSBmb3IgdHJhbnNmb3Jtc1xuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIHJlc2V0KHNjYWxlQSwgc2NhbGVCLCBsaWZlLCBlYXNpbmcpIHtcbiAgICB0aGlzLnNhbWUgPSBzY2FsZUIgPT09IG51bGwgfHwgc2NhbGVCID09PSB1bmRlZmluZWQgPyB0cnVlIDogZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgc3RhcnRpbmcgc2NhbGUuXG4gICAgICogQHR5cGUge1NwYW59XG4gICAgICovXG4gICAgdGhpcy5zY2FsZUEgPSBjcmVhdGVTcGFuKHNjYWxlQSB8fCAxKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBlbmRpbmcgc2NhbGUuXG4gICAgICogQHR5cGUge1NwYW59XG4gICAgICovXG4gICAgdGhpcy5zY2FsZUIgPSBjcmVhdGVTcGFuKHNjYWxlQik7XG5cbiAgICBsaWZlICYmIHN1cGVyLnJlc2V0KGxpZmUsIGVhc2luZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGJlaGF2aW91ciBvbiBhIHBhcnRpY2xlLlxuICAgKiBTdG9yZXMgaW5pdGlhbCB2YWx1ZXMgZm9yIGNvbXBhcmlzb24gYW5kIG11dGF0aW9uIGluIHRoZSBhcHBseUJlaGF2aW91ciBtZXRob2QuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWNsZSAtIHRoZSBwYXJ0aWNsZSB0byBpbml0aWFsaXplIHRoZSBiZWhhdmlvdXIgb25cbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7XG4gICAgcGFydGljbGUudHJhbnNmb3JtLnNjYWxlQSA9IHRoaXMuc2NhbGVBLmdldFZhbHVlKCk7XG4gICAgcGFydGljbGUudHJhbnNmb3JtLm9sZFJhZGl1cyA9IHBhcnRpY2xlLnJhZGl1cztcblxuICAgIHBhcnRpY2xlLnRyYW5zZm9ybS5zY2FsZUIgPSB0aGlzLnNhbWVcbiAgICAgID8gcGFydGljbGUudHJhbnNmb3JtLnNjYWxlQVxuICAgICAgOiB0aGlzLnNjYWxlQi5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgdGhlIGJlaGF2aW91ciB0byB0aGUgcGFydGljbGUuXG4gICAqIE11dGF0ZXMgdGhlIHBhcnRpY2xlJ3Mgc2NhbGUgYW5kIGl0cyByYWRpdXMgYWNjb3JkaW5nIHRvIHRoaXMgc2NhbGUuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWNsZSAtIHRoZSBwYXJ0aWNsZSB0byBhcHBseSB0aGUgYmVoYXZpb3VyIHRvXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gZW5naW5lIHRpbWVcbiAgICogQHBhcmFtIHtpbnRlZ2VyfSBpbmRleCAtIHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIG11dGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmVuZXJnaXplKHBhcnRpY2xlLCB0aW1lLCBpbmRleCk7XG5cbiAgICBwYXJ0aWNsZS5zY2FsZSA9IE1hdGhVdGlscy5sZXJwKFxuICAgICAgcGFydGljbGUudHJhbnNmb3JtLnNjYWxlQSxcbiAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS5zY2FsZUIsXG4gICAgICB0aGlzLmVuZXJneVxuICAgICk7XG5cbiAgICBpZiAocGFydGljbGUuc2NhbGUgPCAwLjAwMDUpIHtcbiAgICAgIHBhcnRpY2xlLnNjYWxlID0gMDtcbiAgICB9XG5cbiAgICBwYXJ0aWNsZS5yYWRpdXMgPSBwYXJ0aWNsZS50cmFuc2Zvcm0ub2xkUmFkaXVzICogcGFydGljbGUuc2NhbGU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYmVoYXZpb3VyIGZyb20gdGhlIEpTT04gb2JqZWN0IHBhc3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGpzb24gLSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSByZXF1aXJlZCBjb25zdHJ1Y3RvciBwcm9wZXJ0aWVzXG4gICAqIEByZXR1cm4ge1NwcmluZ31cbiAgICovXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgeyBzY2FsZUEsIHNjYWxlQiwgbGlmZSwgZWFzaW5nLCBpc0VuYWJsZWQgPSB0cnVlIH0gPSBqc29uO1xuXG4gICAgcmV0dXJuIG5ldyBTY2FsZShzY2FsZUEsIHNjYWxlQiwgbGlmZSwgZ2V0RWFzaW5nQnlOYW1lKGVhc2luZyksIGlzRW5hYmxlZCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import Behaviour from './Behaviour';
|
|
2
|
-
import { Vector3D } from '../math';
|
|
3
|
-
import { getEasingByName } from '../ease';
|
|
4
|
-
import { BEHAVIOUR_TYPE_SPRING as type } from './types';
|
|
5
|
-
/**
|
|
6
|
-
* Behaviour that causes particles to spring.
|
|
7
|
-
*
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
export default class Spring extends Behaviour {
|
|
11
|
-
/**
|
|
12
|
-
* Constructs a Spring behaviour instance.
|
|
13
|
-
*
|
|
14
|
-
* @param {number} x - X axis spring
|
|
15
|
-
* @param {number} y - Y axis spring
|
|
16
|
-
* @param {number} z - Z axis spring
|
|
17
|
-
* @param {number} spring - Spring factor
|
|
18
|
-
* @param {number} friction - Spring friction
|
|
19
|
-
* @param {number} life - The life of the behaviour
|
|
20
|
-
* @param {function} easing - The easing equation to use for transforms
|
|
21
|
-
* @param {boolean} [isEnabled=true] - Determines if the behaviour will be applied or not
|
|
22
|
-
* @return void
|
|
23
|
-
*/
|
|
24
|
-
constructor(x, y, z, spring, friction, life, easing, isEnabled = true) {
|
|
25
|
-
super(life, easing, type, isEnabled);
|
|
26
|
-
this.reset(x, y, z, spring, friction);
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Resets the behaviour properties.
|
|
30
|
-
*
|
|
31
|
-
* @param {number} x - X axis spring
|
|
32
|
-
* @param {number} y - Y axis spring
|
|
33
|
-
* @param {number} z - Z axis spring
|
|
34
|
-
* @param {number} spring - Spring factor
|
|
35
|
-
* @param {number} friction - Spring friction
|
|
36
|
-
* @return void
|
|
37
|
-
*/
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
reset(x, y, z, spring, friction) {
|
|
41
|
-
if (!this.pos) {
|
|
42
|
-
this.pos = new Vector3D(x, y, z);
|
|
43
|
-
} else {
|
|
44
|
-
this.pos.set(x, y, z);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
this.spring = spring || 0.1;
|
|
48
|
-
this.friction = friction || 0.98;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Applies the behaviour to the particle.
|
|
52
|
-
* Mutates the particle's velocity according to this.pos and this.spring.
|
|
53
|
-
*
|
|
54
|
-
* @param {object} particle - the particle to apply the behaviour to
|
|
55
|
-
* @param {number} time - engine time
|
|
56
|
-
* @param {integer} index - the particle index
|
|
57
|
-
* @return void
|
|
58
|
-
*/
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
mutate(particle, time, index) {
|
|
62
|
-
this.energize(particle, time, index);
|
|
63
|
-
particle.velocity.x += (this.pos.x - particle.position.x) * this.spring;
|
|
64
|
-
particle.velocity.y += (this.pos.y - particle.position.y) * this.spring;
|
|
65
|
-
particle.velocity.z += (this.pos.z - particle.position.z) * this.spring;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Returns a new instance of the behaviour from the JSON object passed.
|
|
69
|
-
*
|
|
70
|
-
* @param {object} json - JSON object containing the required constructor properties
|
|
71
|
-
* @return {Spring}
|
|
72
|
-
*/
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
static fromJSON(json) {
|
|
76
|
-
const {
|
|
77
|
-
x,
|
|
78
|
-
y,
|
|
79
|
-
z,
|
|
80
|
-
spring,
|
|
81
|
-
friction,
|
|
82
|
-
life,
|
|
83
|
-
easing,
|
|
84
|
-
isEnabled = true
|
|
85
|
-
} = json;
|
|
86
|
-
return new Spring(x, y, z, spring, friction, life, getEasingByName(easing), isEnabled);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvU3ByaW5nLmpzIl0sIm5hbWVzIjpbIkJlaGF2aW91ciIsIlZlY3RvcjNEIiwiZ2V0RWFzaW5nQnlOYW1lIiwiQkVIQVZJT1VSX1RZUEVfU1BSSU5HIiwidHlwZSIsIlNwcmluZyIsImNvbnN0cnVjdG9yIiwieCIsInkiLCJ6Iiwic3ByaW5nIiwiZnJpY3Rpb24iLCJsaWZlIiwiZWFzaW5nIiwiaXNFbmFibGVkIiwicmVzZXQiLCJwb3MiLCJzZXQiLCJtdXRhdGUiLCJwYXJ0aWNsZSIsInRpbWUiLCJpbmRleCIsImVuZXJnaXplIiwidmVsb2NpdHkiLCJwb3NpdGlvbiIsImZyb21KU09OIiwianNvbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsU0FBUCxNQUFzQixhQUF0QjtBQUNBLFNBQVNDLFFBQVQsUUFBeUIsU0FBekI7QUFDQSxTQUFTQyxlQUFULFFBQWdDLFNBQWhDO0FBQ0EsU0FBU0MscUJBQXFCLElBQUlDLElBQWxDLFFBQThDLFNBQTlDO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsZUFBZSxNQUFNQyxNQUFOLFNBQXFCTCxTQUFyQixDQUErQjtBQUM1QztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFTSxFQUFBQSxXQUFXLENBQUNDLENBQUQsRUFBSUMsQ0FBSixFQUFPQyxDQUFQLEVBQVVDLE1BQVYsRUFBa0JDLFFBQWxCLEVBQTRCQyxJQUE1QixFQUFrQ0MsTUFBbEMsRUFBMENDLFNBQVMsR0FBRyxJQUF0RCxFQUE0RDtBQUNyRSxVQUFNRixJQUFOLEVBQVlDLE1BQVosRUFBb0JULElBQXBCLEVBQTBCVSxTQUExQjtBQUVBLFNBQUtDLEtBQUwsQ0FBV1IsQ0FBWCxFQUFjQyxDQUFkLEVBQWlCQyxDQUFqQixFQUFvQkMsTUFBcEIsRUFBNEJDLFFBQTVCO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0VJLEVBQUFBLEtBQUssQ0FBQ1IsQ0FBRCxFQUFJQyxDQUFKLEVBQU9DLENBQVAsRUFBVUMsTUFBVixFQUFrQkMsUUFBbEIsRUFBNEI7QUFDL0IsUUFBSSxDQUFDLEtBQUtLLEdBQVYsRUFBZTtBQUNiLFdBQUtBLEdBQUwsR0FBVyxJQUFJZixRQUFKLENBQWFNLENBQWIsRUFBZ0JDLENBQWhCLEVBQW1CQyxDQUFuQixDQUFYO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsV0FBS08sR0FBTCxDQUFTQyxHQUFULENBQWFWLENBQWIsRUFBZ0JDLENBQWhCLEVBQW1CQyxDQUFuQjtBQUNEOztBQUVELFNBQUtDLE1BQUwsR0FBY0EsTUFBTSxJQUFJLEdBQXhCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQkEsUUFBUSxJQUFJLElBQTVCO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNFTyxFQUFBQSxNQUFNLENBQUNDLFFBQUQsRUFBV0MsSUFBWCxFQUFpQkMsS0FBakIsRUFBd0I7QUFDNUIsU0FBS0MsUUFBTCxDQUFjSCxRQUFkLEVBQXdCQyxJQUF4QixFQUE4QkMsS0FBOUI7QUFFQUYsSUFBQUEsUUFBUSxDQUFDSSxRQUFULENBQWtCaEIsQ0FBbEIsSUFBdUIsQ0FBQyxLQUFLUyxHQUFMLENBQVNULENBQVQsR0FBYVksUUFBUSxDQUFDSyxRQUFULENBQWtCakIsQ0FBaEMsSUFBcUMsS0FBS0csTUFBakU7QUFDQVMsSUFBQUEsUUFBUSxDQUFDSSxRQUFULENBQWtCZixDQUFsQixJQUF1QixDQUFDLEtBQUtRLEdBQUwsQ0FBU1IsQ0FBVCxHQUFhVyxRQUFRLENBQUNLLFFBQVQsQ0FBa0JoQixDQUFoQyxJQUFxQyxLQUFLRSxNQUFqRTtBQUNBUyxJQUFBQSxRQUFRLENBQUNJLFFBQVQsQ0FBa0JkLENBQWxCLElBQXVCLENBQUMsS0FBS08sR0FBTCxDQUFTUCxDQUFULEdBQWFVLFFBQVEsQ0FBQ0ssUUFBVCxDQUFrQmYsQ0FBaEMsSUFBcUMsS0FBS0MsTUFBakU7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ2lCLFNBQVJlLFFBQVEsQ0FBQ0MsSUFBRCxFQUFPO0FBQ3BCLFVBQU07QUFBRW5CLE1BQUFBLENBQUY7QUFBS0MsTUFBQUEsQ0FBTDtBQUFRQyxNQUFBQSxDQUFSO0FBQVdDLE1BQUFBLE1BQVg7QUFBbUJDLE1BQUFBLFFBQW5CO0FBQTZCQyxNQUFBQSxJQUE3QjtBQUFtQ0MsTUFBQUEsTUFBbkM7QUFBMkNDLE1BQUFBLFNBQVMsR0FBRztBQUF2RCxRQUFnRVksSUFBdEU7QUFFQSxXQUFPLElBQUlyQixNQUFKLENBQ0xFLENBREssRUFFTEMsQ0FGSyxFQUdMQyxDQUhLLEVBSUxDLE1BSkssRUFLTEMsUUFMSyxFQU1MQyxJQU5LLEVBT0xWLGVBQWUsQ0FBQ1csTUFBRCxDQVBWLEVBUUxDLFNBUkssQ0FBUDtBQVVEOztBQTdFMkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmVoYXZpb3VyIGZyb20gJy4vQmVoYXZpb3VyJztcbmltcG9ydCB7IFZlY3RvcjNEIH0gZnJvbSAnLi4vbWF0aCc7XG5pbXBvcnQgeyBnZXRFYXNpbmdCeU5hbWUgfSBmcm9tICcuLi9lYXNlJztcbmltcG9ydCB7IEJFSEFWSU9VUl9UWVBFX1NQUklORyBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQmVoYXZpb3VyIHRoYXQgY2F1c2VzIHBhcnRpY2xlcyB0byBzcHJpbmcuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTcHJpbmcgZXh0ZW5kcyBCZWhhdmlvdXIge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhIFNwcmluZyBiZWhhdmlvdXIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4IC0gWCBheGlzIHNwcmluZ1xuICAgKiBAcGFyYW0ge251bWJlcn0geSAtIFkgYXhpcyBzcHJpbmdcbiAgICogQHBhcmFtIHtudW1iZXJ9IHogLSBaIGF4aXMgc3ByaW5nXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzcHJpbmcgLSBTcHJpbmcgZmFjdG9yXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcmljdGlvbiAtIFNwcmluZyBmcmljdGlvblxuICAgKiBAcGFyYW0ge251bWJlcn0gbGlmZSAtIFRoZSBsaWZlIG9mIHRoZSBiZWhhdmlvdXJcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZWFzaW5nIC0gVGhlIGVhc2luZyBlcXVhdGlvbiB0byB1c2UgZm9yIHRyYW5zZm9ybXNcbiAgICogQHBhcmFtIHtib29sZWFufSBbaXNFbmFibGVkPXRydWVdIC0gRGV0ZXJtaW5lcyBpZiB0aGUgYmVoYXZpb3VyIHdpbGwgYmUgYXBwbGllZCBvciBub3RcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih4LCB5LCB6LCBzcHJpbmcsIGZyaWN0aW9uLCBsaWZlLCBlYXNpbmcsIGlzRW5hYmxlZCA9IHRydWUpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcsIHR5cGUsIGlzRW5hYmxlZCk7XG5cbiAgICB0aGlzLnJlc2V0KHgsIHksIHosIHNwcmluZywgZnJpY3Rpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgYmVoYXZpb3VyIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4IC0gWCBheGlzIHNwcmluZ1xuICAgKiBAcGFyYW0ge251bWJlcn0geSAtIFkgYXhpcyBzcHJpbmdcbiAgICogQHBhcmFtIHtudW1iZXJ9IHogLSBaIGF4aXMgc3ByaW5nXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzcHJpbmcgLSBTcHJpbmcgZmFjdG9yXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcmljdGlvbiAtIFNwcmluZyBmcmljdGlvblxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIHJlc2V0KHgsIHksIHosIHNwcmluZywgZnJpY3Rpb24pIHtcbiAgICBpZiAoIXRoaXMucG9zKSB7XG4gICAgICB0aGlzLnBvcyA9IG5ldyBWZWN0b3IzRCh4LCB5LCB6KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb3Muc2V0KHgsIHksIHopO1xuICAgIH1cblxuICAgIHRoaXMuc3ByaW5nID0gc3ByaW5nIHx8IDAuMTtcbiAgICB0aGlzLmZyaWN0aW9uID0gZnJpY3Rpb24gfHwgMC45ODtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSBiZWhhdmlvdXIgdG8gdGhlIHBhcnRpY2xlLlxuICAgKiBNdXRhdGVzIHRoZSBwYXJ0aWNsZSdzIHZlbG9jaXR5IGFjY29yZGluZyB0byB0aGlzLnBvcyBhbmQgdGhpcy5zcHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWNsZSAtIHRoZSBwYXJ0aWNsZSB0byBhcHBseSB0aGUgYmVoYXZpb3VyIHRvXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gZW5naW5lIHRpbWVcbiAgICogQHBhcmFtIHtpbnRlZ2VyfSBpbmRleCAtIHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIG11dGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmVuZXJnaXplKHBhcnRpY2xlLCB0aW1lLCBpbmRleCk7XG5cbiAgICBwYXJ0aWNsZS52ZWxvY2l0eS54ICs9ICh0aGlzLnBvcy54IC0gcGFydGljbGUucG9zaXRpb24ueCkgKiB0aGlzLnNwcmluZztcbiAgICBwYXJ0aWNsZS52ZWxvY2l0eS55ICs9ICh0aGlzLnBvcy55IC0gcGFydGljbGUucG9zaXRpb24ueSkgKiB0aGlzLnNwcmluZztcbiAgICBwYXJ0aWNsZS52ZWxvY2l0eS56ICs9ICh0aGlzLnBvcy56IC0gcGFydGljbGUucG9zaXRpb24ueikgKiB0aGlzLnNwcmluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBiZWhhdmlvdXIgZnJvbSB0aGUgSlNPTiBvYmplY3QgcGFzc2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0ganNvbiAtIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlcXVpcmVkIGNvbnN0cnVjdG9yIHByb3BlcnRpZXNcbiAgICogQHJldHVybiB7U3ByaW5nfVxuICAgKi9cbiAgc3RhdGljIGZyb21KU09OKGpzb24pIHtcbiAgICBjb25zdCB7IHgsIHksIHosIHNwcmluZywgZnJpY3Rpb24sIGxpZmUsIGVhc2luZywgaXNFbmFibGVkID0gdHJ1ZSB9ID0ganNvbjtcblxuICAgIHJldHVybiBuZXcgU3ByaW5nKFxuICAgICAgeCxcbiAgICAgIHksXG4gICAgICB6LFxuICAgICAgc3ByaW5nLFxuICAgICAgZnJpY3Rpb24sXG4gICAgICBsaWZlLFxuICAgICAgZ2V0RWFzaW5nQnlOYW1lKGVhc2luZyksXG4gICAgICBpc0VuYWJsZWRcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { easeLinear } from '../ease';
|
|
2
|
-
export const DEFAULT_LIFE = Infinity;
|
|
3
|
-
export const DEFAULT_ATTRACITON_RADIUS = 1000;
|
|
4
|
-
export const DEFAULT_ATTRACTION_FORCE_SCALAR = 100;
|
|
5
|
-
export const DEFAULT_BEHAVIOUR_EASING = easeLinear;
|
|
6
|
-
export const DEFAULT_BEHAVIOUR_EASING_TYPE = 'easeLinear';
|
|
7
|
-
export const DEFAULT_RANDOM_DRIFT_DELAY = 0.03;
|
|
8
|
-
export const PARTICLE_ALPHA_THRESHOLD = 0.002;
|
|
9
|
-
export const PARTICLE_LENGTH_SQ_THRESHOLD = 0.000004;
|
|
10
|
-
export const DEFAULT_CROSS_TYPE = 'dead';
|
|
11
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvY29uc3RhbnRzLmpzIl0sIm5hbWVzIjpbImVhc2VMaW5lYXIiLCJERUZBVUxUX0xJRkUiLCJJbmZpbml0eSIsIkRFRkFVTFRfQVRUUkFDSVRPTl9SQURJVVMiLCJERUZBVUxUX0FUVFJBQ1RJT05fRk9SQ0VfU0NBTEFSIiwiREVGQVVMVF9CRUhBVklPVVJfRUFTSU5HIiwiREVGQVVMVF9CRUhBVklPVVJfRUFTSU5HX1RZUEUiLCJERUZBVUxUX1JBTkRPTV9EUklGVF9ERUxBWSIsIlBBUlRJQ0xFX0FMUEhBX1RIUkVTSE9MRCIsIlBBUlRJQ0xFX0xFTkdUSF9TUV9USFJFU0hPTEQiLCJERUZBVUxUX0NST1NTX1RZUEUiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFVBQVQsUUFBMkIsU0FBM0I7QUFFQSxPQUFPLE1BQU1DLFlBQVksR0FBR0MsUUFBckI7QUFDUCxPQUFPLE1BQU1DLHlCQUF5QixHQUFHLElBQWxDO0FBQ1AsT0FBTyxNQUFNQywrQkFBK0IsR0FBRyxHQUF4QztBQUNQLE9BQU8sTUFBTUMsd0JBQXdCLEdBQUdMLFVBQWpDO0FBQ1AsT0FBTyxNQUFNTSw2QkFBNkIsR0FBRyxZQUF0QztBQUNQLE9BQU8sTUFBTUMsMEJBQTBCLEdBQUcsSUFBbkM7QUFDUCxPQUFPLE1BQU1DLHdCQUF3QixHQUFHLEtBQWpDO0FBQ1AsT0FBTyxNQUFNQyw0QkFBNEIsR0FBRyxRQUFyQztBQUNQLE9BQU8sTUFBTUMsa0JBQWtCLEdBQUcsTUFBM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlYXNlTGluZWFyIH0gZnJvbSAnLi4vZWFzZSc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xJRkUgPSBJbmZpbml0eTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0FUVFJBQ0lUT05fUkFESVVTID0gMTAwMDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0FUVFJBQ1RJT05fRk9SQ0VfU0NBTEFSID0gMTAwO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQkVIQVZJT1VSX0VBU0lORyA9IGVhc2VMaW5lYXI7XG5leHBvcnQgY29uc3QgREVGQVVMVF9CRUhBVklPVVJfRUFTSU5HX1RZUEUgPSAnZWFzZUxpbmVhcic7XG5leHBvcnQgY29uc3QgREVGQVVMVF9SQU5ET01fRFJJRlRfREVMQVkgPSAwLjAzO1xuZXhwb3J0IGNvbnN0IFBBUlRJQ0xFX0FMUEhBX1RIUkVTSE9MRCA9IDAuMDAyO1xuZXhwb3J0IGNvbnN0IFBBUlRJQ0xFX0xFTkdUSF9TUV9USFJFU0hPTEQgPSAwLjAwMDAwNDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0NST1NTX1RZUEUgPSAnZGVhZCc7XG4iXX0=
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export { default as Alpha } from './Alpha';
|
|
2
|
-
export { default as Attraction } from './Attraction';
|
|
3
|
-
export { default as Collision } from './Collision';
|
|
4
|
-
export { default as Color } from './Color';
|
|
5
|
-
export { default as CrossZone } from './CrossZone';
|
|
6
|
-
export { default as Force } from './Force';
|
|
7
|
-
export { default as Gravity } from './Gravity';
|
|
8
|
-
export { default as RandomDrift } from './RandomDrift';
|
|
9
|
-
export { default as Repulsion } from './Repulsion';
|
|
10
|
-
export { default as Rotate } from './Rotate';
|
|
11
|
-
export { default as Scale } from './Scale';
|
|
12
|
-
export { default as Spring } from './Spring';
|
|
13
|
-
export { default as Behaviour } from './Behaviour';
|
|
14
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvaW5kZXguanMiXSwibmFtZXMiOlsiZGVmYXVsdCIsIkFscGhhIiwiQXR0cmFjdGlvbiIsIkNvbGxpc2lvbiIsIkNvbG9yIiwiQ3Jvc3Nab25lIiwiRm9yY2UiLCJHcmF2aXR5IiwiUmFuZG9tRHJpZnQiLCJSZXB1bHNpb24iLCJSb3RhdGUiLCJTY2FsZSIsIlNwcmluZyIsIkJlaGF2aW91ciJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsT0FBTyxJQUFJQyxLQUFwQixRQUFpQyxTQUFqQztBQUNBLFNBQVNELE9BQU8sSUFBSUUsVUFBcEIsUUFBc0MsY0FBdEM7QUFDQSxTQUFTRixPQUFPLElBQUlHLFNBQXBCLFFBQXFDLGFBQXJDO0FBQ0EsU0FBU0gsT0FBTyxJQUFJSSxLQUFwQixRQUFpQyxTQUFqQztBQUNBLFNBQVNKLE9BQU8sSUFBSUssU0FBcEIsUUFBcUMsYUFBckM7QUFDQSxTQUFTTCxPQUFPLElBQUlNLEtBQXBCLFFBQWlDLFNBQWpDO0FBQ0EsU0FBU04sT0FBTyxJQUFJTyxPQUFwQixRQUFtQyxXQUFuQztBQUNBLFNBQVNQLE9BQU8sSUFBSVEsV0FBcEIsUUFBdUMsZUFBdkM7QUFDQSxTQUFTUixPQUFPLElBQUlTLFNBQXBCLFFBQXFDLGFBQXJDO0FBQ0EsU0FBU1QsT0FBTyxJQUFJVSxNQUFwQixRQUFrQyxVQUFsQztBQUNBLFNBQVNWLE9BQU8sSUFBSVcsS0FBcEIsUUFBaUMsU0FBakM7QUFDQSxTQUFTWCxPQUFPLElBQUlZLE1BQXBCLFFBQWtDLFVBQWxDO0FBQ0EsU0FBU1osT0FBTyxJQUFJYSxTQUFwQixRQUFxQyxhQUFyQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgQWxwaGEgfSBmcm9tICcuL0FscGhhJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQXR0cmFjdGlvbiB9IGZyb20gJy4vQXR0cmFjdGlvbic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIENvbGxpc2lvbiB9IGZyb20gJy4vQ29sbGlzaW9uJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29sb3IgfSBmcm9tICcuL0NvbG9yJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ3Jvc3Nab25lIH0gZnJvbSAnLi9Dcm9zc1pvbmUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBGb3JjZSB9IGZyb20gJy4vRm9yY2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBHcmF2aXR5IH0gZnJvbSAnLi9HcmF2aXR5JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmFuZG9tRHJpZnQgfSBmcm9tICcuL1JhbmRvbURyaWZ0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmVwdWxzaW9uIH0gZnJvbSAnLi9SZXB1bHNpb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSb3RhdGUgfSBmcm9tICcuL1JvdGF0ZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFNjYWxlIH0gZnJvbSAnLi9TY2FsZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFNwcmluZyB9IGZyb20gJy4vU3ByaW5nJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQmVoYXZpb3VyIH0gZnJvbSAnLi9CZWhhdmlvdXInO1xuIl19
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export const BEHAVIOUR_TYPE_ABSTRACT = 'Behaviour';
|
|
2
|
-
export const BEHAVIOUR_TYPE_ALPHA = 'Alpha';
|
|
3
|
-
export const BEHAVIOUR_TYPE_ATTRACTION = 'Attraction';
|
|
4
|
-
export const BEHAVIOUR_TYPE_COLLISION = 'Collision';
|
|
5
|
-
export const BEHAVIOUR_TYPE_COLOR = 'Color';
|
|
6
|
-
export const BEHAVIOUR_TYPE_CROSS_ZONE = 'CrossZone';
|
|
7
|
-
export const BEHAVIOUR_TYPE_FORCE = 'Force';
|
|
8
|
-
export const BEHAVIOUR_TYPE_GRAVITY = 'Gravity';
|
|
9
|
-
export const BEHAVIOUR_TYPE_RANDOM_DRIFT = 'RandomDrift';
|
|
10
|
-
export const BEHAVIOUR_TYPE_REPULSION = 'Repulsion';
|
|
11
|
-
export const BEHAVIOUR_TYPE_ROTATE = 'Rotate';
|
|
12
|
-
export const BEHAVIOUR_TYPE_SCALE = 'Scale';
|
|
13
|
-
export const BEHAVIOUR_TYPE_SPRING = 'Spring';
|
|
14
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvdHlwZXMuanMiXSwibmFtZXMiOlsiQkVIQVZJT1VSX1RZUEVfQUJTVFJBQ1QiLCJCRUhBVklPVVJfVFlQRV9BTFBIQSIsIkJFSEFWSU9VUl9UWVBFX0FUVFJBQ1RJT04iLCJCRUhBVklPVVJfVFlQRV9DT0xMSVNJT04iLCJCRUhBVklPVVJfVFlQRV9DT0xPUiIsIkJFSEFWSU9VUl9UWVBFX0NST1NTX1pPTkUiLCJCRUhBVklPVVJfVFlQRV9GT1JDRSIsIkJFSEFWSU9VUl9UWVBFX0dSQVZJVFkiLCJCRUhBVklPVVJfVFlQRV9SQU5ET01fRFJJRlQiLCJCRUhBVklPVVJfVFlQRV9SRVBVTFNJT04iLCJCRUhBVklPVVJfVFlQRV9ST1RBVEUiLCJCRUhBVklPVVJfVFlQRV9TQ0FMRSIsIkJFSEFWSU9VUl9UWVBFX1NQUklORyJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNQSx1QkFBdUIsR0FBRyxXQUFoQztBQUNQLE9BQU8sTUFBTUMsb0JBQW9CLEdBQUcsT0FBN0I7QUFDUCxPQUFPLE1BQU1DLHlCQUF5QixHQUFHLFlBQWxDO0FBQ1AsT0FBTyxNQUFNQyx3QkFBd0IsR0FBRyxXQUFqQztBQUNQLE9BQU8sTUFBTUMsb0JBQW9CLEdBQUcsT0FBN0I7QUFDUCxPQUFPLE1BQU1DLHlCQUF5QixHQUFHLFdBQWxDO0FBQ1AsT0FBTyxNQUFNQyxvQkFBb0IsR0FBRyxPQUE3QjtBQUNQLE9BQU8sTUFBTUMsc0JBQXNCLEdBQUcsU0FBL0I7QUFDUCxPQUFPLE1BQU1DLDJCQUEyQixHQUFHLGFBQXBDO0FBQ1AsT0FBTyxNQUFNQyx3QkFBd0IsR0FBRyxXQUFqQztBQUNQLE9BQU8sTUFBTUMscUJBQXFCLEdBQUcsUUFBOUI7QUFDUCxPQUFPLE1BQU1DLG9CQUFvQixHQUFHLE9BQTdCO0FBQ1AsT0FBTyxNQUFNQyxxQkFBcUIsR0FBRyxRQUE5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBCRUhBVklPVVJfVFlQRV9BQlNUUkFDVCA9ICdCZWhhdmlvdXInO1xuZXhwb3J0IGNvbnN0IEJFSEFWSU9VUl9UWVBFX0FMUEhBID0gJ0FscGhhJztcbmV4cG9ydCBjb25zdCBCRUhBVklPVVJfVFlQRV9BVFRSQUNUSU9OID0gJ0F0dHJhY3Rpb24nO1xuZXhwb3J0IGNvbnN0IEJFSEFWSU9VUl9UWVBFX0NPTExJU0lPTiA9ICdDb2xsaXNpb24nO1xuZXhwb3J0IGNvbnN0IEJFSEFWSU9VUl9UWVBFX0NPTE9SID0gJ0NvbG9yJztcbmV4cG9ydCBjb25zdCBCRUhBVklPVVJfVFlQRV9DUk9TU19aT05FID0gJ0Nyb3NzWm9uZSc7XG5leHBvcnQgY29uc3QgQkVIQVZJT1VSX1RZUEVfRk9SQ0UgPSAnRm9yY2UnO1xuZXhwb3J0IGNvbnN0IEJFSEFWSU9VUl9UWVBFX0dSQVZJVFkgPSAnR3Jhdml0eSc7XG5leHBvcnQgY29uc3QgQkVIQVZJT1VSX1RZUEVfUkFORE9NX0RSSUZUID0gJ1JhbmRvbURyaWZ0JztcbmV4cG9ydCBjb25zdCBCRUhBVklPVVJfVFlQRV9SRVBVTFNJT04gPSAnUmVwdWxzaW9uJztcbmV4cG9ydCBjb25zdCBCRUhBVklPVVJfVFlQRV9ST1RBVEUgPSAnUm90YXRlJztcbmV4cG9ydCBjb25zdCBCRUhBVklPVVJfVFlQRV9TQ0FMRSA9ICdTY2FsZSc7XG5leHBvcnQgY29uc3QgQkVIQVZJT1VSX1RZUEVfU1BSSU5HID0gJ1NwcmluZyc7XG4iXX0=
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
export const PI = 3.142;
|
|
2
|
-
/**
|
|
3
|
-
* The max particle number in pool.
|
|
4
|
-
*
|
|
5
|
-
* @const {integer}
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
export const POOL_MAX = 500;
|
|
9
|
-
export const TIME_STEP = 60;
|
|
10
|
-
export const DR = PI / 180;
|
|
11
|
-
/**
|
|
12
|
-
* 1:100
|
|
13
|
-
*
|
|
14
|
-
* @const {integer}
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
export const MEASURE = 100;
|
|
18
|
-
export const EULER = 'euler';
|
|
19
|
-
export const RK2 = 'runge-kutta2';
|
|
20
|
-
export const RK4 = 'runge-kutta4';
|
|
21
|
-
export const VERLET = 'verlet';
|
|
22
|
-
export const BIND_EMITTER_EVENT = false;
|
|
23
|
-
export const __DEV__ = () => {
|
|
24
|
-
if (!process) {
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
if (!process.env) {
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
if (!process.env.NODE_ENV) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if (process.env.NODE_ENV !== 'development') {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return true;
|
|
41
|
-
};
|
|
42
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb25zdGFudHMvaW5kZXguanMiXSwibmFtZXMiOlsiUEkiLCJQT09MX01BWCIsIlRJTUVfU1RFUCIsIkRSIiwiTUVBU1VSRSIsIkVVTEVSIiwiUksyIiwiUks0IiwiVkVSTEVUIiwiQklORF9FTUlUVEVSX0VWRU5UIiwiX19ERVZfXyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNQSxFQUFFLEdBQUcsS0FBWDtBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxRQUFRLEdBQUcsR0FBakI7QUFDUCxPQUFPLE1BQU1DLFNBQVMsR0FBRyxFQUFsQjtBQUNQLE9BQU8sTUFBTUMsRUFBRSxHQUFHSCxFQUFFLEdBQUcsR0FBaEI7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTUksT0FBTyxHQUFHLEdBQWhCO0FBQ1AsT0FBTyxNQUFNQyxLQUFLLEdBQUcsT0FBZDtBQUNQLE9BQU8sTUFBTUMsR0FBRyxHQUFHLGNBQVo7QUFDUCxPQUFPLE1BQU1DLEdBQUcsR0FBRyxjQUFaO0FBQ1AsT0FBTyxNQUFNQyxNQUFNLEdBQUcsUUFBZjtBQUNQLE9BQU8sTUFBTUMsa0JBQWtCLEdBQUcsS0FBM0I7QUFFUCxPQUFPLE1BQU1DLE9BQU8sR0FBRyxNQUFNO0FBQzNCLE1BQUksQ0FBQ0MsT0FBTCxFQUFjO0FBQ1osV0FBTyxLQUFQO0FBQ0Q7O0FBRUQsTUFBSSxDQUFDQSxPQUFPLENBQUNDLEdBQWIsRUFBa0I7QUFDaEIsV0FBTyxLQUFQO0FBQ0Q7O0FBRUQsTUFBSSxDQUFDRCxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBakIsRUFBMkI7QUFDekIsV0FBTyxLQUFQO0FBQ0Q7O0FBRUQsTUFBSUYsT0FBTyxDQUFDQyxHQUFSLENBQVlDLFFBQVosS0FBeUIsYUFBN0IsRUFBNEM7QUFDMUMsV0FBTyxLQUFQO0FBQ0Q7O0FBRUQsU0FBTyxJQUFQO0FBQ0QsQ0FsQk0iLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUEkgPSAzLjE0MjtcblxuLyoqXG4gKiBUaGUgbWF4IHBhcnRpY2xlIG51bWJlciBpbiBwb29sLlxuICpcbiAqIEBjb25zdCB7aW50ZWdlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IFBPT0xfTUFYID0gNTAwO1xuZXhwb3J0IGNvbnN0IFRJTUVfU1RFUCA9IDYwO1xuZXhwb3J0IGNvbnN0IERSID0gUEkgLyAxODA7XG5cbi8qKlxuICogMToxMDBcbiAqXG4gKiBAY29uc3Qge2ludGVnZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBNRUFTVVJFID0gMTAwO1xuZXhwb3J0IGNvbnN0IEVVTEVSID0gJ2V1bGVyJztcbmV4cG9ydCBjb25zdCBSSzIgPSAncnVuZ2Uta3V0dGEyJztcbmV4cG9ydCBjb25zdCBSSzQgPSAncnVuZ2Uta3V0dGE0JztcbmV4cG9ydCBjb25zdCBWRVJMRVQgPSAndmVybGV0JztcbmV4cG9ydCBjb25zdCBCSU5EX0VNSVRURVJfRVZFTlQgPSBmYWxzZTtcblxuZXhwb3J0IGNvbnN0IF9fREVWX18gPSAoKSA9PiB7XG4gIGlmICghcHJvY2Vzcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghcHJvY2Vzcy5lbnYpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIXByb2Nlc3MuZW52Lk5PREVfRU5WKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIl19
|