three-nebula 10.0.3 → 11.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/rules/no-coauthor.md +4 -0
- package/CHANGELOG.md +33 -0
- package/dist/three-nebula.cjs +109 -0
- package/dist/three-nebula.cjs.map +1 -0
- package/dist/three-nebula.mjs +2968 -0
- package/dist/three-nebula.mjs.map +1 -0
- package/dist/three-nebula.umd.js +109 -0
- package/dist/three-nebula.umd.js.map +1 -0
- package/package.json +32 -56
- 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 -791
- 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/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 -100
- package/build/cjs/initializer/types.js +0 -35
- 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 -350
- 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 -364
- 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 -53
- 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 -43
- 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 -63
- 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 -14
- 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 -701
- 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/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 -11
- package/build/esm/initializer/types.js +0 -15
- 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 -331
- package/build/esm/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +0 -23
- package/build/esm/renderer/GPURenderer/Desktop/shaders/index.js +0 -3
- package/build/esm/renderer/GPURenderer/Desktop/shaders/vertexShader.js +0 -33
- package/build/esm/renderer/GPURenderer/Mobile/index.js +0 -349
- package/build/esm/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +0 -20
- package/build/esm/renderer/GPURenderer/Mobile/shaders/index.js +0 -3
- package/build/esm/renderer/GPURenderer/Mobile/shaders/vertexShader.js +0 -30
- package/build/esm/renderer/GPURenderer/common/ParticleBuffer/constants.js +0 -27
- 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 -24
- 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 -94
- package/build/esm/renderer/SpriteRenderer.js +0 -26
- 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,101 +0,0 @@
|
|
|
1
|
-
import { MathUtils, createColorSpan } from '../math';
|
|
2
|
-
import Behaviour from './Behaviour';
|
|
3
|
-
import { ColorUtil } from '../utils';
|
|
4
|
-
import { getEasingByName } from '../ease';
|
|
5
|
-
import { BEHAVIOUR_TYPE_COLOR as type } from './types';
|
|
6
|
-
/**
|
|
7
|
-
* A behaviour which mutates the color of a particle over time.
|
|
8
|
-
*
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
export default class Color extends Behaviour {
|
|
12
|
-
/**
|
|
13
|
-
* Constructs a Color behaviour instance.
|
|
14
|
-
*
|
|
15
|
-
* @param {number|string} colorA - the starting color
|
|
16
|
-
* @param {number|string} colorB - the ending color
|
|
17
|
-
* @param {number} life - the life of the particle
|
|
18
|
-
* @param {function} easing - The behaviour's decaying trend
|
|
19
|
-
* @param {boolean} [isEnabled=true] - Determines if the behaviour will be applied or not
|
|
20
|
-
* @return void
|
|
21
|
-
*/
|
|
22
|
-
constructor(colorA, colorB, life, easing, isEnabled = true) {
|
|
23
|
-
super(life, easing, type, isEnabled);
|
|
24
|
-
this.reset(colorA, colorB);
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Gets the _same property which determines if the alpha are the same.
|
|
28
|
-
*
|
|
29
|
-
* @return {boolean}
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
get same() {
|
|
34
|
-
return this._same;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Sets the _same property which determines if the alpha are the same.
|
|
38
|
-
*
|
|
39
|
-
* @param {boolean} same
|
|
40
|
-
* @return {boolean}
|
|
41
|
-
*/
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
set same(same) {
|
|
45
|
-
/**
|
|
46
|
-
* @type {boolean}
|
|
47
|
-
*/
|
|
48
|
-
this._same = same;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
reset(colorA, colorB, life, easing) {
|
|
52
|
-
this.same = colorB === null || colorB === undefined ? true : false;
|
|
53
|
-
this.colorA = createColorSpan(colorA);
|
|
54
|
-
this.colorB = createColorSpan(colorB);
|
|
55
|
-
life && super.reset(life, easing);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
initialize(particle) {
|
|
59
|
-
particle.transform.colorA = ColorUtil.getRGB(this.colorA.getValue());
|
|
60
|
-
particle.useColor = true;
|
|
61
|
-
particle.transform.colorB = this.same ? particle.transform.colorA : ColorUtil.getRGB(this.colorB.getValue());
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
mutate(particle, time, index) {
|
|
65
|
-
this.energize(particle, time, index);
|
|
66
|
-
|
|
67
|
-
if (!this._same) {
|
|
68
|
-
particle.color.r = MathUtils.lerp(particle.transform.colorA.r, particle.transform.colorB.r, this.energy);
|
|
69
|
-
particle.color.g = MathUtils.lerp(particle.transform.colorA.g, particle.transform.colorB.g, this.energy);
|
|
70
|
-
particle.color.b = MathUtils.lerp(particle.transform.colorA.b, particle.transform.colorB.b, this.energy);
|
|
71
|
-
} else {
|
|
72
|
-
particle.color.r = particle.transform.colorA.r;
|
|
73
|
-
particle.color.g = particle.transform.colorA.g;
|
|
74
|
-
particle.color.b = particle.transform.colorA.b;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Creates a Color initializer from JSON.
|
|
79
|
-
*
|
|
80
|
-
* @param {object} json - The JSON to construct the instance from.
|
|
81
|
-
* @property {number} json.colorA - The starting color
|
|
82
|
-
* @property {number} json.colorB - The ending color
|
|
83
|
-
* @property {number} json.life - The life of the particle
|
|
84
|
-
* @property {string} json.easing - The behaviour's decaying trend
|
|
85
|
-
* @return {Color}
|
|
86
|
-
*/
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
static fromJSON(json) {
|
|
90
|
-
const {
|
|
91
|
-
colorA,
|
|
92
|
-
colorB,
|
|
93
|
-
life,
|
|
94
|
-
easing,
|
|
95
|
-
isEnabled = true
|
|
96
|
-
} = json;
|
|
97
|
-
return new Color(colorA, colorB, life, getEasingByName(easing), isEnabled);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvQ29sb3IuanMiXSwibmFtZXMiOlsiTWF0aFV0aWxzIiwiY3JlYXRlQ29sb3JTcGFuIiwiQmVoYXZpb3VyIiwiQ29sb3JVdGlsIiwiZ2V0RWFzaW5nQnlOYW1lIiwiQkVIQVZJT1VSX1RZUEVfQ09MT1IiLCJ0eXBlIiwiQ29sb3IiLCJjb25zdHJ1Y3RvciIsImNvbG9yQSIsImNvbG9yQiIsImxpZmUiLCJlYXNpbmciLCJpc0VuYWJsZWQiLCJyZXNldCIsInNhbWUiLCJfc2FtZSIsInVuZGVmaW5lZCIsImluaXRpYWxpemUiLCJwYXJ0aWNsZSIsInRyYW5zZm9ybSIsImdldFJHQiIsImdldFZhbHVlIiwidXNlQ29sb3IiLCJtdXRhdGUiLCJ0aW1lIiwiaW5kZXgiLCJlbmVyZ2l6ZSIsImNvbG9yIiwiciIsImxlcnAiLCJlbmVyZ3kiLCJnIiwiYiIsImZyb21KU09OIiwianNvbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsU0FBVCxFQUFvQkMsZUFBcEIsUUFBMkMsU0FBM0M7QUFFQSxPQUFPQyxTQUFQLE1BQXNCLGFBQXRCO0FBQ0EsU0FBU0MsU0FBVCxRQUEwQixVQUExQjtBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsU0FBaEM7QUFDQSxTQUFTQyxvQkFBb0IsSUFBSUMsSUFBakMsUUFBNkMsU0FBN0M7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxlQUFlLE1BQU1DLEtBQU4sU0FBb0JMLFNBQXBCLENBQThCO0FBQzNDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0VNLEVBQUFBLFdBQVcsQ0FBQ0MsTUFBRCxFQUFTQyxNQUFULEVBQWlCQyxJQUFqQixFQUF1QkMsTUFBdkIsRUFBK0JDLFNBQVMsR0FBRyxJQUEzQyxFQUFpRDtBQUMxRCxVQUFNRixJQUFOLEVBQVlDLE1BQVosRUFBb0JOLElBQXBCLEVBQTBCTyxTQUExQjtBQUVBLFNBQUtDLEtBQUwsQ0FBV0wsTUFBWCxFQUFtQkMsTUFBbkI7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7OztBQUNVLE1BQUpLLElBQUksR0FBRztBQUNULFdBQU8sS0FBS0MsS0FBWjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDVSxNQUFKRCxJQUFJLENBQUNBLElBQUQsRUFBTztBQUNiO0FBQ0o7QUFDQTtBQUNJLFNBQUtDLEtBQUwsR0FBYUQsSUFBYjtBQUNEOztBQUVERCxFQUFBQSxLQUFLLENBQUNMLE1BQUQsRUFBU0MsTUFBVCxFQUFpQkMsSUFBakIsRUFBdUJDLE1BQXZCLEVBQStCO0FBQ2xDLFNBQUtHLElBQUwsR0FBWUwsTUFBTSxLQUFLLElBQVgsSUFBbUJBLE1BQU0sS0FBS08sU0FBOUIsR0FBMEMsSUFBMUMsR0FBaUQsS0FBN0Q7QUFFQSxTQUFLUixNQUFMLEdBQWNSLGVBQWUsQ0FBQ1EsTUFBRCxDQUE3QjtBQUNBLFNBQUtDLE1BQUwsR0FBY1QsZUFBZSxDQUFDUyxNQUFELENBQTdCO0FBQ0FDLElBQUFBLElBQUksSUFBSSxNQUFNRyxLQUFOLENBQVlILElBQVosRUFBa0JDLE1BQWxCLENBQVI7QUFDRDs7QUFFRE0sRUFBQUEsVUFBVSxDQUFDQyxRQUFELEVBQVc7QUFDbkJBLElBQUFBLFFBQVEsQ0FBQ0MsU0FBVCxDQUFtQlgsTUFBbkIsR0FBNEJOLFNBQVMsQ0FBQ2tCLE1BQVYsQ0FBaUIsS0FBS1osTUFBTCxDQUFZYSxRQUFaLEVBQWpCLENBQTVCO0FBRUFILElBQUFBLFFBQVEsQ0FBQ0ksUUFBVCxHQUFvQixJQUFwQjtBQUNBSixJQUFBQSxRQUFRLENBQUNDLFNBQVQsQ0FBbUJWLE1BQW5CLEdBQTRCLEtBQUtLLElBQUwsR0FDeEJJLFFBQVEsQ0FBQ0MsU0FBVCxDQUFtQlgsTUFESyxHQUV4Qk4sU0FBUyxDQUFDa0IsTUFBVixDQUFpQixLQUFLWCxNQUFMLENBQVlZLFFBQVosRUFBakIsQ0FGSjtBQUdEOztBQUVERSxFQUFBQSxNQUFNLENBQUNMLFFBQUQsRUFBV00sSUFBWCxFQUFpQkMsS0FBakIsRUFBd0I7QUFDNUIsU0FBS0MsUUFBTCxDQUFjUixRQUFkLEVBQXdCTSxJQUF4QixFQUE4QkMsS0FBOUI7O0FBRUEsUUFBSSxDQUFDLEtBQUtWLEtBQVYsRUFBaUI7QUFDZkcsTUFBQUEsUUFBUSxDQUFDUyxLQUFULENBQWVDLENBQWYsR0FBbUI3QixTQUFTLENBQUM4QixJQUFWLENBQ2pCWCxRQUFRLENBQUNDLFNBQVQsQ0FBbUJYLE1BQW5CLENBQTBCb0IsQ0FEVCxFQUVqQlYsUUFBUSxDQUFDQyxTQUFULENBQW1CVixNQUFuQixDQUEwQm1CLENBRlQsRUFHakIsS0FBS0UsTUFIWSxDQUFuQjtBQUtBWixNQUFBQSxRQUFRLENBQUNTLEtBQVQsQ0FBZUksQ0FBZixHQUFtQmhDLFNBQVMsQ0FBQzhCLElBQVYsQ0FDakJYLFFBQVEsQ0FBQ0MsU0FBVCxDQUFtQlgsTUFBbkIsQ0FBMEJ1QixDQURULEVBRWpCYixRQUFRLENBQUNDLFNBQVQsQ0FBbUJWLE1BQW5CLENBQTBCc0IsQ0FGVCxFQUdqQixLQUFLRCxNQUhZLENBQW5CO0FBS0FaLE1BQUFBLFFBQVEsQ0FBQ1MsS0FBVCxDQUFlSyxDQUFmLEdBQW1CakMsU0FBUyxDQUFDOEIsSUFBVixDQUNqQlgsUUFBUSxDQUFDQyxTQUFULENBQW1CWCxNQUFuQixDQUEwQndCLENBRFQsRUFFakJkLFFBQVEsQ0FBQ0MsU0FBVCxDQUFtQlYsTUFBbkIsQ0FBMEJ1QixDQUZULEVBR2pCLEtBQUtGLE1BSFksQ0FBbkI7QUFLRCxLQWhCRCxNQWdCTztBQUNMWixNQUFBQSxRQUFRLENBQUNTLEtBQVQsQ0FBZUMsQ0FBZixHQUFtQlYsUUFBUSxDQUFDQyxTQUFULENBQW1CWCxNQUFuQixDQUEwQm9CLENBQTdDO0FBQ0FWLE1BQUFBLFFBQVEsQ0FBQ1MsS0FBVCxDQUFlSSxDQUFmLEdBQW1CYixRQUFRLENBQUNDLFNBQVQsQ0FBbUJYLE1BQW5CLENBQTBCdUIsQ0FBN0M7QUFDQWIsTUFBQUEsUUFBUSxDQUFDUyxLQUFULENBQWVLLENBQWYsR0FBbUJkLFFBQVEsQ0FBQ0MsU0FBVCxDQUFtQlgsTUFBbkIsQ0FBMEJ3QixDQUE3QztBQUNEO0FBQ0Y7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ2lCLFNBQVJDLFFBQVEsQ0FBQ0MsSUFBRCxFQUFPO0FBQ3BCLFVBQU07QUFBRTFCLE1BQUFBLE1BQUY7QUFBVUMsTUFBQUEsTUFBVjtBQUFrQkMsTUFBQUEsSUFBbEI7QUFBd0JDLE1BQUFBLE1BQXhCO0FBQWdDQyxNQUFBQSxTQUFTLEdBQUc7QUFBNUMsUUFBcURzQixJQUEzRDtBQUVBLFdBQU8sSUFBSTVCLEtBQUosQ0FBVUUsTUFBVixFQUFrQkMsTUFBbEIsRUFBMEJDLElBQTFCLEVBQWdDUCxlQUFlLENBQUNRLE1BQUQsQ0FBL0MsRUFBeURDLFNBQXpELENBQVA7QUFDRDs7QUFoRzBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF0aFV0aWxzLCBjcmVhdGVDb2xvclNwYW4gfSBmcm9tICcuLi9tYXRoJztcblxuaW1wb3J0IEJlaGF2aW91ciBmcm9tICcuL0JlaGF2aW91cic7XG5pbXBvcnQgeyBDb2xvclV0aWwgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBnZXRFYXNpbmdCeU5hbWUgfSBmcm9tICcuLi9lYXNlJztcbmltcG9ydCB7IEJFSEFWSU9VUl9UWVBFX0NPTE9SIGFzIHR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBBIGJlaGF2aW91ciB3aGljaCBtdXRhdGVzIHRoZSBjb2xvciBvZiBhIHBhcnRpY2xlIG92ZXIgdGltZS5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbG9yIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBDb2xvciBiZWhhdmlvdXIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gY29sb3JBIC0gdGhlIHN0YXJ0aW5nIGNvbG9yXG4gICAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gY29sb3JCIC0gdGhlIGVuZGluZyBjb2xvclxuICAgKiBAcGFyYW0ge251bWJlcn0gbGlmZSAtIHRoZSBsaWZlIG9mIHRoZSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBlYXNpbmcgLSBUaGUgYmVoYXZpb3VyJ3MgZGVjYXlpbmcgdHJlbmRcbiAgICogQHBhcmFtIHtib29sZWFufSBbaXNFbmFibGVkPXRydWVdIC0gRGV0ZXJtaW5lcyBpZiB0aGUgYmVoYXZpb3VyIHdpbGwgYmUgYXBwbGllZCBvciBub3RcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb2xvckEsIGNvbG9yQiwgbGlmZSwgZWFzaW5nLCBpc0VuYWJsZWQgPSB0cnVlKSB7XG4gICAgc3VwZXIobGlmZSwgZWFzaW5nLCB0eXBlLCBpc0VuYWJsZWQpO1xuXG4gICAgdGhpcy5yZXNldChjb2xvckEsIGNvbG9yQik7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgX3NhbWUgcHJvcGVydHkgd2hpY2ggZGV0ZXJtaW5lcyBpZiB0aGUgYWxwaGEgYXJlIHRoZSBzYW1lLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IHNhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NhbWU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgX3NhbWUgcHJvcGVydHkgd2hpY2ggZGV0ZXJtaW5lcyBpZiB0aGUgYWxwaGEgYXJlIHRoZSBzYW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNhbWVcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIHNldCBzYW1lKHNhbWUpIHtcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLl9zYW1lID0gc2FtZTtcbiAgfVxuXG4gIHJlc2V0KGNvbG9yQSwgY29sb3JCLCBsaWZlLCBlYXNpbmcpIHtcbiAgICB0aGlzLnNhbWUgPSBjb2xvckIgPT09IG51bGwgfHwgY29sb3JCID09PSB1bmRlZmluZWQgPyB0cnVlIDogZmFsc2U7XG5cbiAgICB0aGlzLmNvbG9yQSA9IGNyZWF0ZUNvbG9yU3Bhbihjb2xvckEpO1xuICAgIHRoaXMuY29sb3JCID0gY3JlYXRlQ29sb3JTcGFuKGNvbG9yQik7XG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLnRyYW5zZm9ybS5jb2xvckEgPSBDb2xvclV0aWwuZ2V0UkdCKHRoaXMuY29sb3JBLmdldFZhbHVlKCkpO1xuXG4gICAgcGFydGljbGUudXNlQ29sb3IgPSB0cnVlO1xuICAgIHBhcnRpY2xlLnRyYW5zZm9ybS5jb2xvckIgPSB0aGlzLnNhbWVcbiAgICAgID8gcGFydGljbGUudHJhbnNmb3JtLmNvbG9yQVxuICAgICAgOiBDb2xvclV0aWwuZ2V0UkdCKHRoaXMuY29sb3JCLmdldFZhbHVlKCkpO1xuICB9XG5cbiAgbXV0YXRlKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuZW5lcmdpemUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcblxuICAgIGlmICghdGhpcy5fc2FtZSkge1xuICAgICAgcGFydGljbGUuY29sb3IuciA9IE1hdGhVdGlscy5sZXJwKFxuICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0uY29sb3JBLnIsXG4gICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS5jb2xvckIucixcbiAgICAgICAgdGhpcy5lbmVyZ3lcbiAgICAgICk7XG4gICAgICBwYXJ0aWNsZS5jb2xvci5nID0gTWF0aFV0aWxzLmxlcnAoXG4gICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS5jb2xvckEuZyxcbiAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLmNvbG9yQi5nLFxuICAgICAgICB0aGlzLmVuZXJneVxuICAgICAgKTtcbiAgICAgIHBhcnRpY2xlLmNvbG9yLmIgPSBNYXRoVXRpbHMubGVycChcbiAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLmNvbG9yQS5iLFxuICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0uY29sb3JCLmIsXG4gICAgICAgIHRoaXMuZW5lcmd5XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0aWNsZS5jb2xvci5yID0gcGFydGljbGUudHJhbnNmb3JtLmNvbG9yQS5yO1xuICAgICAgcGFydGljbGUuY29sb3IuZyA9IHBhcnRpY2xlLnRyYW5zZm9ybS5jb2xvckEuZztcbiAgICAgIHBhcnRpY2xlLmNvbG9yLmIgPSBwYXJ0aWNsZS50cmFuc2Zvcm0uY29sb3JBLmI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBDb2xvciBpbml0aWFsaXplciBmcm9tIEpTT04uXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBqc29uIC0gVGhlIEpTT04gdG8gY29uc3RydWN0IHRoZSBpbnN0YW5jZSBmcm9tLlxuICAgKiBAcHJvcGVydHkge251bWJlcn0ganNvbi5jb2xvckEgLSBUaGUgc3RhcnRpbmcgY29sb3JcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IGpzb24uY29sb3JCIC0gVGhlIGVuZGluZyBjb2xvclxuICAgKiBAcHJvcGVydHkge251bWJlcn0ganNvbi5saWZlIC0gVGhlIGxpZmUgb2YgdGhlIHBhcnRpY2xlXG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBqc29uLmVhc2luZyAtIFRoZSBiZWhhdmlvdXIncyBkZWNheWluZyB0cmVuZFxuICAgKiBAcmV0dXJuIHtDb2xvcn1cbiAgICovXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgeyBjb2xvckEsIGNvbG9yQiwgbGlmZSwgZWFzaW5nLCBpc0VuYWJsZWQgPSB0cnVlIH0gPSBqc29uO1xuXG4gICAgcmV0dXJuIG5ldyBDb2xvcihjb2xvckEsIGNvbG9yQiwgbGlmZSwgZ2V0RWFzaW5nQnlOYW1lKGVhc2luZyksIGlzRW5hYmxlZCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import * as Zone from '../zone';
|
|
2
|
-
import Behaviour from './Behaviour';
|
|
3
|
-
import { DEFAULT_CROSS_TYPE } from './constants';
|
|
4
|
-
import { getEasingByName } from '../ease';
|
|
5
|
-
import { BEHAVIOUR_TYPE_CROSS_ZONE as type } from './types';
|
|
6
|
-
/**
|
|
7
|
-
* Behaviour that allows for specific functions to be called on particles when
|
|
8
|
-
* they interact with a zone.
|
|
9
|
-
*
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
export default class CrossZone extends Behaviour {
|
|
13
|
-
/**
|
|
14
|
-
* Constructs a CrossZone behaviour instance.
|
|
15
|
-
*
|
|
16
|
-
* @param {Zone} zone - the zone used to apply to particles with this behaviour
|
|
17
|
-
* @param {string} [crossType=DEFAULT_CROSS_TYPE] - enum of cross types, valid strings include 'dead', 'bound', 'cross'
|
|
18
|
-
* @param {number} life - The life of the particle
|
|
19
|
-
* @param {function} easing - The behaviour's decaying trend
|
|
20
|
-
* @param {boolean} [isEnabled=true] - Determines if the behaviour will be applied or not
|
|
21
|
-
*/
|
|
22
|
-
constructor(zone, crossType, life, easing, isEnabled) {
|
|
23
|
-
super(life, easing, type, isEnabled);
|
|
24
|
-
this.reset(zone, crossType);
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Resets the behaviour properties.
|
|
28
|
-
*
|
|
29
|
-
* @param {Zone} zone - the zone used to apply to particles with this behaviour
|
|
30
|
-
* @param {string} [crossType=DEFAULT_CROSS_TYPE] - enum of cross types, valid strings include 'dead', 'bound', 'cross'
|
|
31
|
-
* @param {number} life - The life of the particle
|
|
32
|
-
* @param {function} easing - The behaviour's decaying trend
|
|
33
|
-
*/
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
reset(zone, crossType = DEFAULT_CROSS_TYPE, life, easing) {
|
|
37
|
-
/**
|
|
38
|
-
* @desc The zone used to apply to particles with this behaviour
|
|
39
|
-
* @type {Zone}
|
|
40
|
-
*/
|
|
41
|
-
this.zone = zone;
|
|
42
|
-
this.zone.crossType = crossType;
|
|
43
|
-
life && super.reset(life, easing);
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Applies the behaviour to the particle.
|
|
47
|
-
*
|
|
48
|
-
* @see {@link '../zone/Zone.js'} crossing
|
|
49
|
-
* @param {object} particle - the particle to apply the behaviour to
|
|
50
|
-
* @param {number} time - engine time
|
|
51
|
-
* @param {integer} index - the particle index
|
|
52
|
-
* @return void
|
|
53
|
-
*/
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
mutate(particle, time, index) {
|
|
57
|
-
this.energize(particle, time, index);
|
|
58
|
-
this.zone.crossing.call(this.zone, particle);
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Creates a CrossZone initializer from JSON.
|
|
62
|
-
*
|
|
63
|
-
* @param {object} json - The JSON to construct the instance from.
|
|
64
|
-
* @return {CrossZone}
|
|
65
|
-
*/
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
static fromJSON(json) {
|
|
69
|
-
const {
|
|
70
|
-
zoneType,
|
|
71
|
-
zoneParams,
|
|
72
|
-
crossType,
|
|
73
|
-
life,
|
|
74
|
-
easing,
|
|
75
|
-
isEnabled = true
|
|
76
|
-
} = json;
|
|
77
|
-
const zone = new Zone[zoneType](...Object.values(zoneParams));
|
|
78
|
-
return new CrossZone(zone, crossType, life, getEasingByName(easing), isEnabled);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvQ3Jvc3Nab25lLmpzIl0sIm5hbWVzIjpbIlpvbmUiLCJCZWhhdmlvdXIiLCJERUZBVUxUX0NST1NTX1RZUEUiLCJnZXRFYXNpbmdCeU5hbWUiLCJCRUhBVklPVVJfVFlQRV9DUk9TU19aT05FIiwidHlwZSIsIkNyb3NzWm9uZSIsImNvbnN0cnVjdG9yIiwiem9uZSIsImNyb3NzVHlwZSIsImxpZmUiLCJlYXNpbmciLCJpc0VuYWJsZWQiLCJyZXNldCIsIm11dGF0ZSIsInBhcnRpY2xlIiwidGltZSIsImluZGV4IiwiZW5lcmdpemUiLCJjcm9zc2luZyIsImNhbGwiLCJmcm9tSlNPTiIsImpzb24iLCJ6b25lVHlwZSIsInpvbmVQYXJhbXMiLCJPYmplY3QiLCJ2YWx1ZXMiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBS0EsSUFBWixNQUFzQixTQUF0QjtBQUVBLE9BQU9DLFNBQVAsTUFBc0IsYUFBdEI7QUFDQSxTQUFTQyxrQkFBVCxRQUFtQyxhQUFuQztBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsU0FBaEM7QUFDQSxTQUFTQyx5QkFBeUIsSUFBSUMsSUFBdEMsUUFBa0QsU0FBbEQ7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLGVBQWUsTUFBTUMsU0FBTixTQUF3QkwsU0FBeEIsQ0FBa0M7QUFDL0M7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0VNLEVBQUFBLFdBQVcsQ0FBQ0MsSUFBRCxFQUFPQyxTQUFQLEVBQWtCQyxJQUFsQixFQUF3QkMsTUFBeEIsRUFBZ0NDLFNBQWhDLEVBQTJDO0FBQ3BELFVBQU1GLElBQU4sRUFBWUMsTUFBWixFQUFvQk4sSUFBcEIsRUFBMEJPLFNBQTFCO0FBRUEsU0FBS0MsS0FBTCxDQUFXTCxJQUFYLEVBQWlCQyxTQUFqQjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0VJLEVBQUFBLEtBQUssQ0FBQ0wsSUFBRCxFQUFPQyxTQUFTLEdBQUdQLGtCQUFuQixFQUF1Q1EsSUFBdkMsRUFBNkNDLE1BQTdDLEVBQXFEO0FBQ3hEO0FBQ0o7QUFDQTtBQUNBO0FBQ0ksU0FBS0gsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0EsSUFBTCxDQUFVQyxTQUFWLEdBQXNCQSxTQUF0QjtBQUVBQyxJQUFBQSxJQUFJLElBQUksTUFBTUcsS0FBTixDQUFZSCxJQUFaLEVBQWtCQyxNQUFsQixDQUFSO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNFRyxFQUFBQSxNQUFNLENBQUNDLFFBQUQsRUFBV0MsSUFBWCxFQUFpQkMsS0FBakIsRUFBd0I7QUFDNUIsU0FBS0MsUUFBTCxDQUFjSCxRQUFkLEVBQXdCQyxJQUF4QixFQUE4QkMsS0FBOUI7QUFFQSxTQUFLVCxJQUFMLENBQVVXLFFBQVYsQ0FBbUJDLElBQW5CLENBQXdCLEtBQUtaLElBQTdCLEVBQW1DTyxRQUFuQztBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDaUIsU0FBUk0sUUFBUSxDQUFDQyxJQUFELEVBQU87QUFDcEIsVUFBTTtBQUNKQyxNQUFBQSxRQURJO0FBRUpDLE1BQUFBLFVBRkk7QUFHSmYsTUFBQUEsU0FISTtBQUlKQyxNQUFBQSxJQUpJO0FBS0pDLE1BQUFBLE1BTEk7QUFNSkMsTUFBQUEsU0FBUyxHQUFHO0FBTlIsUUFPRlUsSUFQSjtBQVNBLFVBQU1kLElBQUksR0FBRyxJQUFJUixJQUFJLENBQUN1QixRQUFELENBQVIsQ0FBbUIsR0FBR0UsTUFBTSxDQUFDQyxNQUFQLENBQWNGLFVBQWQsQ0FBdEIsQ0FBYjtBQUVBLFdBQU8sSUFBSWxCLFNBQUosQ0FDTEUsSUFESyxFQUVMQyxTQUZLLEVBR0xDLElBSEssRUFJTFAsZUFBZSxDQUFDUSxNQUFELENBSlYsRUFLTEMsU0FMSyxDQUFQO0FBT0Q7O0FBM0U4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFpvbmUgZnJvbSAnLi4vem9uZSc7XG5cbmltcG9ydCBCZWhhdmlvdXIgZnJvbSAnLi9CZWhhdmlvdXInO1xuaW1wb3J0IHsgREVGQVVMVF9DUk9TU19UWVBFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0RWFzaW5nQnlOYW1lIH0gZnJvbSAnLi4vZWFzZSc7XG5pbXBvcnQgeyBCRUhBVklPVVJfVFlQRV9DUk9TU19aT05FIGFzIHR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBCZWhhdmlvdXIgdGhhdCBhbGxvd3MgZm9yIHNwZWNpZmljIGZ1bmN0aW9ucyB0byBiZSBjYWxsZWQgb24gcGFydGljbGVzIHdoZW5cbiAqIHRoZXkgaW50ZXJhY3Qgd2l0aCBhIHpvbmUuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDcm9zc1pvbmUgZXh0ZW5kcyBCZWhhdmlvdXIge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhIENyb3NzWm9uZSBiZWhhdmlvdXIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7Wm9uZX0gem9uZSAtIHRoZSB6b25lIHVzZWQgdG8gYXBwbHkgdG8gcGFydGljbGVzIHdpdGggdGhpcyBiZWhhdmlvdXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtjcm9zc1R5cGU9REVGQVVMVF9DUk9TU19UWVBFXSAtIGVudW0gb2YgY3Jvc3MgdHlwZXMsIHZhbGlkIHN0cmluZ3MgaW5jbHVkZSAnZGVhZCcsICdib3VuZCcsICdjcm9zcydcbiAgICogQHBhcmFtIHtudW1iZXJ9IGxpZmUgLSBUaGUgbGlmZSBvZiB0aGUgcGFydGljbGVcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZWFzaW5nIC0gVGhlIGJlaGF2aW91cidzIGRlY2F5aW5nIHRyZW5kXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRW5hYmxlZD10cnVlXSAtIERldGVybWluZXMgaWYgdGhlIGJlaGF2aW91ciB3aWxsIGJlIGFwcGxpZWQgb3Igbm90XG4gICAqL1xuICBjb25zdHJ1Y3Rvcih6b25lLCBjcm9zc1R5cGUsIGxpZmUsIGVhc2luZywgaXNFbmFibGVkKSB7XG4gICAgc3VwZXIobGlmZSwgZWFzaW5nLCB0eXBlLCBpc0VuYWJsZWQpO1xuXG4gICAgdGhpcy5yZXNldCh6b25lLCBjcm9zc1R5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgYmVoYXZpb3VyIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7Wm9uZX0gem9uZSAtIHRoZSB6b25lIHVzZWQgdG8gYXBwbHkgdG8gcGFydGljbGVzIHdpdGggdGhpcyBiZWhhdmlvdXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtjcm9zc1R5cGU9REVGQVVMVF9DUk9TU19UWVBFXSAtIGVudW0gb2YgY3Jvc3MgdHlwZXMsIHZhbGlkIHN0cmluZ3MgaW5jbHVkZSAnZGVhZCcsICdib3VuZCcsICdjcm9zcydcbiAgICogQHBhcmFtIHtudW1iZXJ9IGxpZmUgLSBUaGUgbGlmZSBvZiB0aGUgcGFydGljbGVcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZWFzaW5nIC0gVGhlIGJlaGF2aW91cidzIGRlY2F5aW5nIHRyZW5kXG4gICAqL1xuICByZXNldCh6b25lLCBjcm9zc1R5cGUgPSBERUZBVUxUX0NST1NTX1RZUEUsIGxpZmUsIGVhc2luZykge1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSB6b25lIHVzZWQgdG8gYXBwbHkgdG8gcGFydGljbGVzIHdpdGggdGhpcyBiZWhhdmlvdXJcbiAgICAgKiBAdHlwZSB7Wm9uZX1cbiAgICAgKi9cbiAgICB0aGlzLnpvbmUgPSB6b25lO1xuICAgIHRoaXMuem9uZS5jcm9zc1R5cGUgPSBjcm9zc1R5cGU7XG5cbiAgICBsaWZlICYmIHN1cGVyLnJlc2V0KGxpZmUsIGVhc2luZyk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyB0aGUgYmVoYXZpb3VyIHRvIHRoZSBwYXJ0aWNsZS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgJy4uL3pvbmUvWm9uZS5qcyd9IGNyb3NzaW5nXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWNsZSAtIHRoZSBwYXJ0aWNsZSB0byBhcHBseSB0aGUgYmVoYXZpb3VyIHRvXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gZW5naW5lIHRpbWVcbiAgICogQHBhcmFtIHtpbnRlZ2VyfSBpbmRleCAtIHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIG11dGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmVuZXJnaXplKHBhcnRpY2xlLCB0aW1lLCBpbmRleCk7XG5cbiAgICB0aGlzLnpvbmUuY3Jvc3NpbmcuY2FsbCh0aGlzLnpvbmUsIHBhcnRpY2xlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgQ3Jvc3Nab25lIGluaXRpYWxpemVyIGZyb20gSlNPTi5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGpzb24gLSBUaGUgSlNPTiB0byBjb25zdHJ1Y3QgdGhlIGluc3RhbmNlIGZyb20uXG4gICAqIEByZXR1cm4ge0Nyb3NzWm9uZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3Qge1xuICAgICAgem9uZVR5cGUsXG4gICAgICB6b25lUGFyYW1zLFxuICAgICAgY3Jvc3NUeXBlLFxuICAgICAgbGlmZSxcbiAgICAgIGVhc2luZyxcbiAgICAgIGlzRW5hYmxlZCA9IHRydWUsXG4gICAgfSA9IGpzb247XG5cbiAgICBjb25zdCB6b25lID0gbmV3IFpvbmVbem9uZVR5cGVdKC4uLk9iamVjdC52YWx1ZXMoem9uZVBhcmFtcykpO1xuXG4gICAgcmV0dXJuIG5ldyBDcm9zc1pvbmUoXG4gICAgICB6b25lLFxuICAgICAgY3Jvc3NUeXBlLFxuICAgICAgbGlmZSxcbiAgICAgIGdldEVhc2luZ0J5TmFtZShlYXNpbmcpLFxuICAgICAgaXNFbmFibGVkXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import Behaviour from './Behaviour';
|
|
2
|
-
import { Vector3D } from '../math';
|
|
3
|
-
import { getEasingByName } from '../ease';
|
|
4
|
-
import { BEHAVIOUR_TYPE_FORCE as type } from './types';
|
|
5
|
-
/**
|
|
6
|
-
* Behaviour that forces particles along a specific axis.
|
|
7
|
-
*
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
export default class Force extends Behaviour {
|
|
11
|
-
/**
|
|
12
|
-
* Constructs a Force behaviour instance.
|
|
13
|
-
*
|
|
14
|
-
* @param {number} fx - the x axis force
|
|
15
|
-
* @param {number} fy - the y axis force
|
|
16
|
-
* @param {number} fz - the z axis force
|
|
17
|
-
* @param {number} life - the life of the particle
|
|
18
|
-
* @param {function} easing - The behaviour's decaying trend
|
|
19
|
-
* @param {boolean} [isEnabled=true] - Determines if the behaviour will be applied or not
|
|
20
|
-
* @return void
|
|
21
|
-
*/
|
|
22
|
-
constructor(fx, fy, fz, life, easing, isEnabled = true) {
|
|
23
|
-
super(life, easing, type, isEnabled);
|
|
24
|
-
this.reset(fx, fy, fz);
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Resets the behaviour properties.
|
|
28
|
-
*
|
|
29
|
-
* @param {number} fx - the x axis force
|
|
30
|
-
* @param {number} fy - the y axis force
|
|
31
|
-
* @param {number} fz - the z axis force
|
|
32
|
-
*/
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
reset(fx, fy, fz) {
|
|
36
|
-
/**
|
|
37
|
-
* @desc The normalized force to exert on the particle in
|
|
38
|
-
* @type {Vector3D}
|
|
39
|
-
*/
|
|
40
|
-
this.force = this.normalizeForce(new Vector3D(fx, fy, fz));
|
|
41
|
-
/**
|
|
42
|
-
* @desc The id of the force vector
|
|
43
|
-
* @property {number} this.force.id
|
|
44
|
-
*/
|
|
45
|
-
|
|
46
|
-
this.force.id = Math.random();
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Mutates the particle.acceleration property.
|
|
50
|
-
*
|
|
51
|
-
* @param {object} particle - the particle to apply the behaviour to
|
|
52
|
-
* @param {number} time - engine time
|
|
53
|
-
* @param {integer} index - the particle index
|
|
54
|
-
* @return void
|
|
55
|
-
*/
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
mutate(particle, time, index) {
|
|
59
|
-
this.energize(particle, time, index);
|
|
60
|
-
particle.acceleration.add(this.force);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Creates a Force initializer from JSON.
|
|
64
|
-
*
|
|
65
|
-
* @param {object} json - The JSON to construct the instance from.
|
|
66
|
-
* @return {Force}
|
|
67
|
-
*/
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
static fromJSON(json) {
|
|
71
|
-
const {
|
|
72
|
-
fx,
|
|
73
|
-
fy,
|
|
74
|
-
fz,
|
|
75
|
-
life,
|
|
76
|
-
easing,
|
|
77
|
-
isEnabled = true
|
|
78
|
-
} = json;
|
|
79
|
-
return new Force(fx, fy, fz, life, getEasingByName(easing), isEnabled);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvRm9yY2UuanMiXSwibmFtZXMiOlsiQmVoYXZpb3VyIiwiVmVjdG9yM0QiLCJnZXRFYXNpbmdCeU5hbWUiLCJCRUhBVklPVVJfVFlQRV9GT1JDRSIsInR5cGUiLCJGb3JjZSIsImNvbnN0cnVjdG9yIiwiZngiLCJmeSIsImZ6IiwibGlmZSIsImVhc2luZyIsImlzRW5hYmxlZCIsInJlc2V0IiwiZm9yY2UiLCJub3JtYWxpemVGb3JjZSIsImlkIiwiTWF0aCIsInJhbmRvbSIsIm11dGF0ZSIsInBhcnRpY2xlIiwidGltZSIsImluZGV4IiwiZW5lcmdpemUiLCJhY2NlbGVyYXRpb24iLCJhZGQiLCJmcm9tSlNPTiIsImpzb24iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFNBQVAsTUFBc0IsYUFBdEI7QUFDQSxTQUFTQyxRQUFULFFBQXlCLFNBQXpCO0FBQ0EsU0FBU0MsZUFBVCxRQUFnQyxTQUFoQztBQUNBLFNBQVNDLG9CQUFvQixJQUFJQyxJQUFqQyxRQUE2QyxTQUE3QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLGVBQWUsTUFBTUMsS0FBTixTQUFvQkwsU0FBcEIsQ0FBOEI7QUFDM0M7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFTSxFQUFBQSxXQUFXLENBQUNDLEVBQUQsRUFBS0MsRUFBTCxFQUFTQyxFQUFULEVBQWFDLElBQWIsRUFBbUJDLE1BQW5CLEVBQTJCQyxTQUFTLEdBQUcsSUFBdkMsRUFBNkM7QUFDdEQsVUFBTUYsSUFBTixFQUFZQyxNQUFaLEVBQW9CUCxJQUFwQixFQUEwQlEsU0FBMUI7QUFFQSxTQUFLQyxLQUFMLENBQVdOLEVBQVgsRUFBZUMsRUFBZixFQUFtQkMsRUFBbkI7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDRUksRUFBQUEsS0FBSyxDQUFDTixFQUFELEVBQUtDLEVBQUwsRUFBU0MsRUFBVCxFQUFhO0FBQ2hCO0FBQ0o7QUFDQTtBQUNBO0FBQ0ksU0FBS0ssS0FBTCxHQUFhLEtBQUtDLGNBQUwsQ0FBb0IsSUFBSWQsUUFBSixDQUFhTSxFQUFiLEVBQWlCQyxFQUFqQixFQUFxQkMsRUFBckIsQ0FBcEIsQ0FBYjtBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtLLEtBQUwsQ0FBV0UsRUFBWCxHQUFnQkMsSUFBSSxDQUFDQyxNQUFMLEVBQWhCO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDRUMsRUFBQUEsTUFBTSxDQUFDQyxRQUFELEVBQVdDLElBQVgsRUFBaUJDLEtBQWpCLEVBQXdCO0FBQzVCLFNBQUtDLFFBQUwsQ0FBY0gsUUFBZCxFQUF3QkMsSUFBeEIsRUFBOEJDLEtBQTlCO0FBRUFGLElBQUFBLFFBQVEsQ0FBQ0ksWUFBVCxDQUFzQkMsR0FBdEIsQ0FBMEIsS0FBS1gsS0FBL0I7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ2lCLFNBQVJZLFFBQVEsQ0FBQ0MsSUFBRCxFQUFPO0FBQ3BCLFVBQU07QUFBRXBCLE1BQUFBLEVBQUY7QUFBTUMsTUFBQUEsRUFBTjtBQUFVQyxNQUFBQSxFQUFWO0FBQWNDLE1BQUFBLElBQWQ7QUFBb0JDLE1BQUFBLE1BQXBCO0FBQTRCQyxNQUFBQSxTQUFTLEdBQUc7QUFBeEMsUUFBaURlLElBQXZEO0FBRUEsV0FBTyxJQUFJdEIsS0FBSixDQUFVRSxFQUFWLEVBQWNDLEVBQWQsRUFBa0JDLEVBQWxCLEVBQXNCQyxJQUF0QixFQUE0QlIsZUFBZSxDQUFDUyxNQUFELENBQTNDLEVBQXFEQyxTQUFyRCxDQUFQO0FBQ0Q7O0FBL0QwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCZWhhdmlvdXIgZnJvbSAnLi9CZWhhdmlvdXInO1xuaW1wb3J0IHsgVmVjdG9yM0QgfSBmcm9tICcuLi9tYXRoJztcbmltcG9ydCB7IGdldEVhc2luZ0J5TmFtZSB9IGZyb20gJy4uL2Vhc2UnO1xuaW1wb3J0IHsgQkVIQVZJT1VSX1RZUEVfRk9SQ0UgYXMgdHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuLyoqXG4gKiBCZWhhdmlvdXIgdGhhdCBmb3JjZXMgcGFydGljbGVzIGFsb25nIGEgc3BlY2lmaWMgYXhpcy5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZvcmNlIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBGb3JjZSBiZWhhdmlvdXIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmeCAtIHRoZSB4IGF4aXMgZm9yY2VcbiAgICogQHBhcmFtIHtudW1iZXJ9IGZ5IC0gdGhlIHkgYXhpcyBmb3JjZVxuICAgKiBAcGFyYW0ge251bWJlcn0gZnogLSB0aGUgeiBheGlzIGZvcmNlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsaWZlIC0gdGhlIGxpZmUgb2YgdGhlIHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGVhc2luZyAtIFRoZSBiZWhhdmlvdXIncyBkZWNheWluZyB0cmVuZFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0VuYWJsZWQ9dHJ1ZV0gLSBEZXRlcm1pbmVzIGlmIHRoZSBiZWhhdmlvdXIgd2lsbCBiZSBhcHBsaWVkIG9yIG5vdFxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGNvbnN0cnVjdG9yKGZ4LCBmeSwgZnosIGxpZmUsIGVhc2luZywgaXNFbmFibGVkID0gdHJ1ZSkge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZywgdHlwZSwgaXNFbmFibGVkKTtcblxuICAgIHRoaXMucmVzZXQoZngsIGZ5LCBmeik7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBiZWhhdmlvdXIgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGZ4IC0gdGhlIHggYXhpcyBmb3JjZVxuICAgKiBAcGFyYW0ge251bWJlcn0gZnkgLSB0aGUgeSBheGlzIGZvcmNlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmeiAtIHRoZSB6IGF4aXMgZm9yY2VcbiAgICovXG4gIHJlc2V0KGZ4LCBmeSwgZnopIHtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgbm9ybWFsaXplZCBmb3JjZSB0byBleGVydCBvbiB0aGUgcGFydGljbGUgaW5cbiAgICAgKiBAdHlwZSB7VmVjdG9yM0R9XG4gICAgICovXG4gICAgdGhpcy5mb3JjZSA9IHRoaXMubm9ybWFsaXplRm9yY2UobmV3IFZlY3RvcjNEKGZ4LCBmeSwgZnopKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBpZCBvZiB0aGUgZm9yY2UgdmVjdG9yXG4gICAgICogQHByb3BlcnR5IHtudW1iZXJ9IHRoaXMuZm9yY2UuaWRcbiAgICAgKi9cbiAgICB0aGlzLmZvcmNlLmlkID0gTWF0aC5yYW5kb20oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNdXRhdGVzIHRoZSBwYXJ0aWNsZS5hY2NlbGVyYXRpb24gcHJvcGVydHkuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWNsZSAtIHRoZSBwYXJ0aWNsZSB0byBhcHBseSB0aGUgYmVoYXZpb3VyIHRvXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gZW5naW5lIHRpbWVcbiAgICogQHBhcmFtIHtpbnRlZ2VyfSBpbmRleCAtIHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIG11dGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmVuZXJnaXplKHBhcnRpY2xlLCB0aW1lLCBpbmRleCk7XG5cbiAgICBwYXJ0aWNsZS5hY2NlbGVyYXRpb24uYWRkKHRoaXMuZm9yY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBGb3JjZSBpbml0aWFsaXplciBmcm9tIEpTT04uXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBqc29uIC0gVGhlIEpTT04gdG8gY29uc3RydWN0IHRoZSBpbnN0YW5jZSBmcm9tLlxuICAgKiBAcmV0dXJuIHtGb3JjZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgeyBmeCwgZnksIGZ6LCBsaWZlLCBlYXNpbmcsIGlzRW5hYmxlZCA9IHRydWUgfSA9IGpzb247XG5cbiAgICByZXR1cm4gbmV3IEZvcmNlKGZ4LCBmeSwgZnosIGxpZmUsIGdldEVhc2luZ0J5TmFtZShlYXNpbmcpLCBpc0VuYWJsZWQpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import Force from './Force';
|
|
2
|
-
import { getEasingByName } from '../ease';
|
|
3
|
-
import { BEHAVIOUR_TYPE_GRAVITY as type } from './types';
|
|
4
|
-
/**
|
|
5
|
-
* Behaviour that forces particles down the y axis.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
export default class Gravity extends Force {
|
|
10
|
-
/**
|
|
11
|
-
* Constructs a Gravity behaviour instance.
|
|
12
|
-
*
|
|
13
|
-
* @param {number} gravity - the force to pull the particle down the y axis
|
|
14
|
-
* @param {number} life - the life of the particle
|
|
15
|
-
* @param {string} easing - the easing equation to use
|
|
16
|
-
* @param {boolean} [isEnabled=true] - Determines if the behaviour will be applied or not
|
|
17
|
-
* @return void
|
|
18
|
-
*/
|
|
19
|
-
constructor(gravity, life, easing, isEnabled = true) {
|
|
20
|
-
super(0, -gravity, 0, life, easing, isEnabled);
|
|
21
|
-
/**
|
|
22
|
-
* @desc The class type.
|
|
23
|
-
* @type {string}
|
|
24
|
-
*/
|
|
25
|
-
|
|
26
|
-
this.type = type;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
static fromJSON(json) {
|
|
30
|
-
const {
|
|
31
|
-
gravity,
|
|
32
|
-
life,
|
|
33
|
-
easing,
|
|
34
|
-
isEnabled = true
|
|
35
|
-
} = json;
|
|
36
|
-
return new Gravity(gravity, life, getEasingByName(easing), isEnabled);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvR3Jhdml0eS5qcyJdLCJuYW1lcyI6WyJGb3JjZSIsImdldEVhc2luZ0J5TmFtZSIsIkJFSEFWSU9VUl9UWVBFX0dSQVZJVFkiLCJ0eXBlIiwiR3Jhdml0eSIsImNvbnN0cnVjdG9yIiwiZ3Jhdml0eSIsImxpZmUiLCJlYXNpbmciLCJpc0VuYWJsZWQiLCJmcm9tSlNPTiIsImpzb24iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLEtBQVAsTUFBa0IsU0FBbEI7QUFDQSxTQUFTQyxlQUFULFFBQWdDLFNBQWhDO0FBQ0EsU0FBU0Msc0JBQXNCLElBQUlDLElBQW5DLFFBQStDLFNBQS9DO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsZUFBZSxNQUFNQyxPQUFOLFNBQXNCSixLQUF0QixDQUE0QjtBQUN6QztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDRUssRUFBQUEsV0FBVyxDQUFDQyxPQUFELEVBQVVDLElBQVYsRUFBZ0JDLE1BQWhCLEVBQXdCQyxTQUFTLEdBQUcsSUFBcEMsRUFBMEM7QUFDbkQsVUFBTSxDQUFOLEVBQVMsQ0FBQ0gsT0FBVixFQUFtQixDQUFuQixFQUFzQkMsSUFBdEIsRUFBNEJDLE1BQTVCLEVBQW9DQyxTQUFwQztBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtOLElBQUwsR0FBWUEsSUFBWjtBQUNEOztBQUVjLFNBQVJPLFFBQVEsQ0FBQ0MsSUFBRCxFQUFPO0FBQ3BCLFVBQU07QUFBRUwsTUFBQUEsT0FBRjtBQUFXQyxNQUFBQSxJQUFYO0FBQWlCQyxNQUFBQSxNQUFqQjtBQUF5QkMsTUFBQUEsU0FBUyxHQUFHO0FBQXJDLFFBQThDRSxJQUFwRDtBQUVBLFdBQU8sSUFBSVAsT0FBSixDQUFZRSxPQUFaLEVBQXFCQyxJQUFyQixFQUEyQk4sZUFBZSxDQUFDTyxNQUFELENBQTFDLEVBQW9EQyxTQUFwRCxDQUFQO0FBQ0Q7O0FBeEJ3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBGb3JjZSBmcm9tICcuL0ZvcmNlJztcbmltcG9ydCB7IGdldEVhc2luZ0J5TmFtZSB9IGZyb20gJy4uL2Vhc2UnO1xuaW1wb3J0IHsgQkVIQVZJT1VSX1RZUEVfR1JBVklUWSBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQmVoYXZpb3VyIHRoYXQgZm9yY2VzIHBhcnRpY2xlcyBkb3duIHRoZSB5IGF4aXMuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHcmF2aXR5IGV4dGVuZHMgRm9yY2Uge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhIEdyYXZpdHkgYmVoYXZpb3VyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gZ3Jhdml0eSAtIHRoZSBmb3JjZSB0byBwdWxsIHRoZSBwYXJ0aWNsZSBkb3duIHRoZSB5IGF4aXNcbiAgICogQHBhcmFtIHtudW1iZXJ9IGxpZmUgLSB0aGUgbGlmZSBvZiB0aGUgcGFydGljbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGVhc2luZyAtIHRoZSBlYXNpbmcgZXF1YXRpb24gdG8gdXNlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRW5hYmxlZD10cnVlXSAtIERldGVybWluZXMgaWYgdGhlIGJlaGF2aW91ciB3aWxsIGJlIGFwcGxpZWQgb3Igbm90XG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgY29uc3RydWN0b3IoZ3Jhdml0eSwgbGlmZSwgZWFzaW5nLCBpc0VuYWJsZWQgPSB0cnVlKSB7XG4gICAgc3VwZXIoMCwgLWdyYXZpdHksIDAsIGxpZmUsIGVhc2luZywgaXNFbmFibGVkKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBjbGFzcyB0eXBlLlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgeyBncmF2aXR5LCBsaWZlLCBlYXNpbmcsIGlzRW5hYmxlZCA9IHRydWUgfSA9IGpzb247XG5cbiAgICByZXR1cm4gbmV3IEdyYXZpdHkoZ3Jhdml0eSwgbGlmZSwgZ2V0RWFzaW5nQnlOYW1lKGVhc2luZyksIGlzRW5hYmxlZCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { MathUtils, Vector3D, createSpan } from '../math';
|
|
2
|
-
import Behaviour from './Behaviour';
|
|
3
|
-
import { DEFAULT_RANDOM_DRIFT_DELAY } from './constants';
|
|
4
|
-
import { getEasingByName } from '../ease';
|
|
5
|
-
import { BEHAVIOUR_TYPE_RANDOM_DRIFT as type } from './types';
|
|
6
|
-
/**
|
|
7
|
-
* Behaviour that causes particles to drift to random coordinates in 3D space.
|
|
8
|
-
*
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
export default class RandomDrift extends Behaviour {
|
|
12
|
-
/**
|
|
13
|
-
* Constructs a RandomDrift behaviour instance.
|
|
14
|
-
*
|
|
15
|
-
* @param {number} driftX - x axis drift
|
|
16
|
-
* @param {number} driftY - y axis drift
|
|
17
|
-
* @param {number} driftZ - z axis drift
|
|
18
|
-
* @param {number} [delay=DEFAULT_RANDOM_DRIFT_DELAY] - drift delay
|
|
19
|
-
* @param {number} life - The life of the particle
|
|
20
|
-
* @param {function} easing - The behaviour's decaying trend
|
|
21
|
-
* @return void
|
|
22
|
-
*/
|
|
23
|
-
constructor(driftX, driftY, driftZ, delay = DEFAULT_RANDOM_DRIFT_DELAY, life, easing, isEnabled = true) {
|
|
24
|
-
super(life, easing, type, isEnabled);
|
|
25
|
-
this.reset(driftX, driftY, driftZ, delay);
|
|
26
|
-
/**
|
|
27
|
-
* @desc Internal time used for calculating drift vs internal delay.
|
|
28
|
-
* @type {number}
|
|
29
|
-
*/
|
|
30
|
-
|
|
31
|
-
this.time = 0;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Resets the behaviour properties.
|
|
35
|
-
*
|
|
36
|
-
* @param {number} driftX - x axis drift
|
|
37
|
-
* @param {number} driftY - y axis drift
|
|
38
|
-
* @param {number} driftZ - z axis drift
|
|
39
|
-
* @param {number} [delay=DEFAULT_RANDOM_DRIFT_DELAY] - drift delay
|
|
40
|
-
* @param {number} life - The life of the particle
|
|
41
|
-
* @param {function} easing - The behaviour's decaying trend
|
|
42
|
-
*/
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
reset(driftX, driftY, driftZ, delay = DEFAULT_RANDOM_DRIFT_DELAY, life, easing) {
|
|
46
|
-
/**
|
|
47
|
-
* @desc A Vector3D that stores the drift properties.
|
|
48
|
-
* @type {Vector3D}
|
|
49
|
-
*/
|
|
50
|
-
this.randomForce = this.normalizeForce(new Vector3D(driftX, driftY, driftZ));
|
|
51
|
-
/**
|
|
52
|
-
* @desc A Span containing the delay supplied.
|
|
53
|
-
* @type {Span}
|
|
54
|
-
*/
|
|
55
|
-
|
|
56
|
-
this.delayPan = createSpan(delay);
|
|
57
|
-
this.time = 0;
|
|
58
|
-
life && super.reset(life, easing);
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Mutates the particle.acceleration property.
|
|
62
|
-
*
|
|
63
|
-
* @param {object} particle - the particle to apply the behaviour to
|
|
64
|
-
* @param {number} time - engine time
|
|
65
|
-
* @param {integer} index - the particle index
|
|
66
|
-
* @return void
|
|
67
|
-
*/
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
mutate(particle, time, index) {
|
|
71
|
-
this.energize(particle, time, index);
|
|
72
|
-
this.time += time;
|
|
73
|
-
|
|
74
|
-
if (this.time >= this.delayPan.getValue()) {
|
|
75
|
-
const ax = MathUtils.randomAToB(-this.randomForce.x, this.randomForce.x);
|
|
76
|
-
const ay = MathUtils.randomAToB(-this.randomForce.y, this.randomForce.y);
|
|
77
|
-
const az = MathUtils.randomAToB(-this.randomForce.z, this.randomForce.z);
|
|
78
|
-
particle.acceleration.addValue(ax, ay, az);
|
|
79
|
-
this.time = 0;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
static fromJSON(json) {
|
|
84
|
-
const {
|
|
85
|
-
x,
|
|
86
|
-
y,
|
|
87
|
-
z,
|
|
88
|
-
delay,
|
|
89
|
-
life,
|
|
90
|
-
easing,
|
|
91
|
-
isEnabled = true
|
|
92
|
-
} = json;
|
|
93
|
-
return new RandomDrift(x, y, z, delay, life, getEasingByName(easing), isEnabled);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvUmFuZG9tRHJpZnQuanMiXSwibmFtZXMiOlsiTWF0aFV0aWxzIiwiVmVjdG9yM0QiLCJjcmVhdGVTcGFuIiwiQmVoYXZpb3VyIiwiREVGQVVMVF9SQU5ET01fRFJJRlRfREVMQVkiLCJnZXRFYXNpbmdCeU5hbWUiLCJCRUhBVklPVVJfVFlQRV9SQU5ET01fRFJJRlQiLCJ0eXBlIiwiUmFuZG9tRHJpZnQiLCJjb25zdHJ1Y3RvciIsImRyaWZ0WCIsImRyaWZ0WSIsImRyaWZ0WiIsImRlbGF5IiwibGlmZSIsImVhc2luZyIsImlzRW5hYmxlZCIsInJlc2V0IiwidGltZSIsInJhbmRvbUZvcmNlIiwibm9ybWFsaXplRm9yY2UiLCJkZWxheVBhbiIsIm11dGF0ZSIsInBhcnRpY2xlIiwiaW5kZXgiLCJlbmVyZ2l6ZSIsImdldFZhbHVlIiwiYXgiLCJyYW5kb21BVG9CIiwieCIsImF5IiwieSIsImF6IiwieiIsImFjY2VsZXJhdGlvbiIsImFkZFZhbHVlIiwiZnJvbUpTT04iLCJqc29uIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxTQUFULEVBQW9CQyxRQUFwQixFQUE4QkMsVUFBOUIsUUFBZ0QsU0FBaEQ7QUFFQSxPQUFPQyxTQUFQLE1BQXNCLGFBQXRCO0FBQ0EsU0FBU0MsMEJBQVQsUUFBMkMsYUFBM0M7QUFDQSxTQUFTQyxlQUFULFFBQWdDLFNBQWhDO0FBQ0EsU0FBU0MsMkJBQTJCLElBQUlDLElBQXhDLFFBQW9ELFNBQXBEO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsZUFBZSxNQUFNQyxXQUFOLFNBQTBCTCxTQUExQixDQUFvQztBQUNqRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0VNLEVBQUFBLFdBQVcsQ0FDVEMsTUFEUyxFQUVUQyxNQUZTLEVBR1RDLE1BSFMsRUFJVEMsS0FBSyxHQUFHVCwwQkFKQyxFQUtUVSxJQUxTLEVBTVRDLE1BTlMsRUFPVEMsU0FBUyxHQUFHLElBUEgsRUFRVDtBQUNBLFVBQU1GLElBQU4sRUFBWUMsTUFBWixFQUFvQlIsSUFBcEIsRUFBMEJTLFNBQTFCO0FBRUEsU0FBS0MsS0FBTCxDQUFXUCxNQUFYLEVBQW1CQyxNQUFuQixFQUEyQkMsTUFBM0IsRUFBbUNDLEtBQW5DO0FBRUE7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS0ssSUFBTCxHQUFZLENBQVo7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDRUQsRUFBQUEsS0FBSyxDQUNIUCxNQURHLEVBRUhDLE1BRkcsRUFHSEMsTUFIRyxFQUlIQyxLQUFLLEdBQUdULDBCQUpMLEVBS0hVLElBTEcsRUFNSEMsTUFORyxFQU9IO0FBQ0E7QUFDSjtBQUNBO0FBQ0E7QUFDSSxTQUFLSSxXQUFMLEdBQW1CLEtBQUtDLGNBQUwsQ0FDakIsSUFBSW5CLFFBQUosQ0FBYVMsTUFBYixFQUFxQkMsTUFBckIsRUFBNkJDLE1BQTdCLENBRGlCLENBQW5CO0FBR0E7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS1MsUUFBTCxHQUFnQm5CLFVBQVUsQ0FBQ1csS0FBRCxDQUExQjtBQUNBLFNBQUtLLElBQUwsR0FBWSxDQUFaO0FBRUFKLElBQUFBLElBQUksSUFBSSxNQUFNRyxLQUFOLENBQVlILElBQVosRUFBa0JDLE1BQWxCLENBQVI7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNFTyxFQUFBQSxNQUFNLENBQUNDLFFBQUQsRUFBV0wsSUFBWCxFQUFpQk0sS0FBakIsRUFBd0I7QUFDNUIsU0FBS0MsUUFBTCxDQUFjRixRQUFkLEVBQXdCTCxJQUF4QixFQUE4Qk0sS0FBOUI7QUFFQSxTQUFLTixJQUFMLElBQWFBLElBQWI7O0FBRUEsUUFBSSxLQUFLQSxJQUFMLElBQWEsS0FBS0csUUFBTCxDQUFjSyxRQUFkLEVBQWpCLEVBQTJDO0FBQ3pDLFlBQU1DLEVBQUUsR0FBRzNCLFNBQVMsQ0FBQzRCLFVBQVYsQ0FBcUIsQ0FBQyxLQUFLVCxXQUFMLENBQWlCVSxDQUF2QyxFQUEwQyxLQUFLVixXQUFMLENBQWlCVSxDQUEzRCxDQUFYO0FBQ0EsWUFBTUMsRUFBRSxHQUFHOUIsU0FBUyxDQUFDNEIsVUFBVixDQUFxQixDQUFDLEtBQUtULFdBQUwsQ0FBaUJZLENBQXZDLEVBQTBDLEtBQUtaLFdBQUwsQ0FBaUJZLENBQTNELENBQVg7QUFDQSxZQUFNQyxFQUFFLEdBQUdoQyxTQUFTLENBQUM0QixVQUFWLENBQXFCLENBQUMsS0FBS1QsV0FBTCxDQUFpQmMsQ0FBdkMsRUFBMEMsS0FBS2QsV0FBTCxDQUFpQmMsQ0FBM0QsQ0FBWDtBQUVBVixNQUFBQSxRQUFRLENBQUNXLFlBQVQsQ0FBc0JDLFFBQXRCLENBQStCUixFQUEvQixFQUFtQ0csRUFBbkMsRUFBdUNFLEVBQXZDO0FBRUEsV0FBS2QsSUFBTCxHQUFZLENBQVo7QUFDRDtBQUNGOztBQUVjLFNBQVJrQixRQUFRLENBQUNDLElBQUQsRUFBTztBQUNwQixVQUFNO0FBQUVSLE1BQUFBLENBQUY7QUFBS0UsTUFBQUEsQ0FBTDtBQUFRRSxNQUFBQSxDQUFSO0FBQVdwQixNQUFBQSxLQUFYO0FBQWtCQyxNQUFBQSxJQUFsQjtBQUF3QkMsTUFBQUEsTUFBeEI7QUFBZ0NDLE1BQUFBLFNBQVMsR0FBRztBQUE1QyxRQUFxRHFCLElBQTNEO0FBRUEsV0FBTyxJQUFJN0IsV0FBSixDQUNMcUIsQ0FESyxFQUVMRSxDQUZLLEVBR0xFLENBSEssRUFJTHBCLEtBSkssRUFLTEMsSUFMSyxFQU1MVCxlQUFlLENBQUNVLE1BQUQsQ0FOVixFQU9MQyxTQVBLLENBQVA7QUFTRDs7QUF2R2dEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF0aFV0aWxzLCBWZWN0b3IzRCwgY3JlYXRlU3BhbiB9IGZyb20gJy4uL21hdGgnO1xuXG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gJy4vQmVoYXZpb3VyJztcbmltcG9ydCB7IERFRkFVTFRfUkFORE9NX0RSSUZUX0RFTEFZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0RWFzaW5nQnlOYW1lIH0gZnJvbSAnLi4vZWFzZSc7XG5pbXBvcnQgeyBCRUhBVklPVVJfVFlQRV9SQU5ET01fRFJJRlQgYXMgdHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEJlaGF2aW91ciB0aGF0IGNhdXNlcyBwYXJ0aWNsZXMgdG8gZHJpZnQgdG8gcmFuZG9tIGNvb3JkaW5hdGVzIGluIDNEIHNwYWNlLlxuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmFuZG9tRHJpZnQgZXh0ZW5kcyBCZWhhdmlvdXIge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhIFJhbmRvbURyaWZ0IGJlaGF2aW91ciBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGRyaWZ0WCAtIHggYXhpcyBkcmlmdFxuICAgKiBAcGFyYW0ge251bWJlcn0gZHJpZnRZIC0geSBheGlzIGRyaWZ0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkcmlmdFogLSB6IGF4aXMgZHJpZnRcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtkZWxheT1ERUZBVUxUX1JBTkRPTV9EUklGVF9ERUxBWV0gLSBkcmlmdCBkZWxheVxuICAgKiBAcGFyYW0ge251bWJlcn0gbGlmZSAtIFRoZSBsaWZlIG9mIHRoZSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBlYXNpbmcgLSBUaGUgYmVoYXZpb3VyJ3MgZGVjYXlpbmcgdHJlbmRcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBkcmlmdFgsXG4gICAgZHJpZnRZLFxuICAgIGRyaWZ0WixcbiAgICBkZWxheSA9IERFRkFVTFRfUkFORE9NX0RSSUZUX0RFTEFZLFxuICAgIGxpZmUsXG4gICAgZWFzaW5nLFxuICAgIGlzRW5hYmxlZCA9IHRydWVcbiAgKSB7XG4gICAgc3VwZXIobGlmZSwgZWFzaW5nLCB0eXBlLCBpc0VuYWJsZWQpO1xuXG4gICAgdGhpcy5yZXNldChkcmlmdFgsIGRyaWZ0WSwgZHJpZnRaLCBkZWxheSk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBJbnRlcm5hbCB0aW1lIHVzZWQgZm9yIGNhbGN1bGF0aW5nIGRyaWZ0IHZzIGludGVybmFsIGRlbGF5LlxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy50aW1lID0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGJlaGF2aW91ciBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gZHJpZnRYIC0geCBheGlzIGRyaWZ0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkcmlmdFkgLSB5IGF4aXMgZHJpZnRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGRyaWZ0WiAtIHogYXhpcyBkcmlmdFxuICAgKiBAcGFyYW0ge251bWJlcn0gW2RlbGF5PURFRkFVTFRfUkFORE9NX0RSSUZUX0RFTEFZXSAtIGRyaWZ0IGRlbGF5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsaWZlIC0gVGhlIGxpZmUgb2YgdGhlIHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGVhc2luZyAtIFRoZSBiZWhhdmlvdXIncyBkZWNheWluZyB0cmVuZFxuICAgKi9cbiAgcmVzZXQoXG4gICAgZHJpZnRYLFxuICAgIGRyaWZ0WSxcbiAgICBkcmlmdFosXG4gICAgZGVsYXkgPSBERUZBVUxUX1JBTkRPTV9EUklGVF9ERUxBWSxcbiAgICBsaWZlLFxuICAgIGVhc2luZ1xuICApIHtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBBIFZlY3RvcjNEIHRoYXQgc3RvcmVzIHRoZSBkcmlmdCBwcm9wZXJ0aWVzLlxuICAgICAqIEB0eXBlIHtWZWN0b3IzRH1cbiAgICAgKi9cbiAgICB0aGlzLnJhbmRvbUZvcmNlID0gdGhpcy5ub3JtYWxpemVGb3JjZShcbiAgICAgIG5ldyBWZWN0b3IzRChkcmlmdFgsIGRyaWZ0WSwgZHJpZnRaKVxuICAgICk7XG4gICAgLyoqXG4gICAgICogQGRlc2MgQSBTcGFuIGNvbnRhaW5pbmcgdGhlIGRlbGF5IHN1cHBsaWVkLlxuICAgICAqIEB0eXBlIHtTcGFufVxuICAgICAqL1xuICAgIHRoaXMuZGVsYXlQYW4gPSBjcmVhdGVTcGFuKGRlbGF5KTtcbiAgICB0aGlzLnRpbWUgPSAwO1xuXG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIE11dGF0ZXMgdGhlIHBhcnRpY2xlLmFjY2VsZXJhdGlvbiBwcm9wZXJ0eS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpY2xlIC0gdGhlIHBhcnRpY2xlIHRvIGFwcGx5IHRoZSBiZWhhdmlvdXIgdG9cbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWUgLSBlbmdpbmUgdGltZVxuICAgKiBAcGFyYW0ge2ludGVnZXJ9IGluZGV4IC0gdGhlIHBhcnRpY2xlIGluZGV4XG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgbXV0YXRlKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuZW5lcmdpemUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcblxuICAgIHRoaXMudGltZSArPSB0aW1lO1xuXG4gICAgaWYgKHRoaXMudGltZSA+PSB0aGlzLmRlbGF5UGFuLmdldFZhbHVlKCkpIHtcbiAgICAgIGNvbnN0IGF4ID0gTWF0aFV0aWxzLnJhbmRvbUFUb0IoLXRoaXMucmFuZG9tRm9yY2UueCwgdGhpcy5yYW5kb21Gb3JjZS54KTtcbiAgICAgIGNvbnN0IGF5ID0gTWF0aFV0aWxzLnJhbmRvbUFUb0IoLXRoaXMucmFuZG9tRm9yY2UueSwgdGhpcy5yYW5kb21Gb3JjZS55KTtcbiAgICAgIGNvbnN0IGF6ID0gTWF0aFV0aWxzLnJhbmRvbUFUb0IoLXRoaXMucmFuZG9tRm9yY2UueiwgdGhpcy5yYW5kb21Gb3JjZS56KTtcblxuICAgICAgcGFydGljbGUuYWNjZWxlcmF0aW9uLmFkZFZhbHVlKGF4LCBheSwgYXopO1xuXG4gICAgICB0aGlzLnRpbWUgPSAwO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgeyB4LCB5LCB6LCBkZWxheSwgbGlmZSwgZWFzaW5nLCBpc0VuYWJsZWQgPSB0cnVlIH0gPSBqc29uO1xuXG4gICAgcmV0dXJuIG5ldyBSYW5kb21EcmlmdChcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgeixcbiAgICAgIGRlbGF5LFxuICAgICAgbGlmZSxcbiAgICAgIGdldEVhc2luZ0J5TmFtZShlYXNpbmcpLFxuICAgICAgaXNFbmFibGVkXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import Attraction from './Attraction';
|
|
2
|
-
import { Vector3D } from '../math';
|
|
3
|
-
import { getEasingByName } from '../ease';
|
|
4
|
-
import { BEHAVIOUR_TYPE_REPULSION as type } from './types';
|
|
5
|
-
/**
|
|
6
|
-
* Behaviour that causes particles to be repelled from a target position.
|
|
7
|
-
*
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
export default class Repulsion extends Attraction {
|
|
11
|
-
/**
|
|
12
|
-
* Constructs an Repulsion behaviour instance.
|
|
13
|
-
*
|
|
14
|
-
* @param {Vector3D} targetPosition - The position the particles will be repelled from
|
|
15
|
-
* @param {number} force - The repulsion force scalar multiplier
|
|
16
|
-
* @param {number} radius - The repulsion radius
|
|
17
|
-
* @param {number} life - The life of the particle
|
|
18
|
-
* @param {function} easing - The behaviour's decaying trend
|
|
19
|
-
* @return void
|
|
20
|
-
*/
|
|
21
|
-
constructor(targetPosition, force, radius, life, easing, isEnabled = true) {
|
|
22
|
-
super(targetPosition, force, radius, life, easing, isEnabled);
|
|
23
|
-
/**
|
|
24
|
-
* @desc Repulsion is attraction with negative force.
|
|
25
|
-
* @type {number}
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
this.force *= -1;
|
|
29
|
-
/**
|
|
30
|
-
* @desc The class type.
|
|
31
|
-
* @type {string}
|
|
32
|
-
*/
|
|
33
|
-
|
|
34
|
-
this.type = type;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Resets the behaviour properties.
|
|
38
|
-
*
|
|
39
|
-
* @param {Vector3D} targetPosition - the position the particles will be attracted to
|
|
40
|
-
* @param {number} force - the attraction force multiplier
|
|
41
|
-
* @param {number} radius - the attraction radius
|
|
42
|
-
* @param {number} life - the life of the particle
|
|
43
|
-
* @param {function} easing - The behaviour's decaying trend
|
|
44
|
-
* @return void
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
reset(targetPosition, force, radius, life, easing) {
|
|
49
|
-
super.reset(targetPosition, force, radius, life, easing);
|
|
50
|
-
this.force *= -1;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Creates a Body initializer from JSON.
|
|
54
|
-
*
|
|
55
|
-
* @param {object} json - The JSON to construct the instance from.
|
|
56
|
-
* @property {number} json.x - The target position x value
|
|
57
|
-
* @property {number} json.y - The target position y value
|
|
58
|
-
* @property {number} json.z - The target position z value
|
|
59
|
-
* @property {number} json.force - The attraction force scalar multiplier
|
|
60
|
-
* @property {number} json.life - The life of the particle
|
|
61
|
-
* @property {string} json.easing - The behaviour's decaying trend
|
|
62
|
-
* @return {Body}
|
|
63
|
-
*/
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
static fromJSON(json) {
|
|
67
|
-
const {
|
|
68
|
-
x,
|
|
69
|
-
y,
|
|
70
|
-
z,
|
|
71
|
-
force,
|
|
72
|
-
radius,
|
|
73
|
-
life,
|
|
74
|
-
easing,
|
|
75
|
-
isEnabled = true
|
|
76
|
-
} = json;
|
|
77
|
-
return new Repulsion(new Vector3D(x, y, z), force, radius, life, getEasingByName(easing), isEnabled);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvUmVwdWxzaW9uLmpzIl0sIm5hbWVzIjpbIkF0dHJhY3Rpb24iLCJWZWN0b3IzRCIsImdldEVhc2luZ0J5TmFtZSIsIkJFSEFWSU9VUl9UWVBFX1JFUFVMU0lPTiIsInR5cGUiLCJSZXB1bHNpb24iLCJjb25zdHJ1Y3RvciIsInRhcmdldFBvc2l0aW9uIiwiZm9yY2UiLCJyYWRpdXMiLCJsaWZlIiwiZWFzaW5nIiwiaXNFbmFibGVkIiwicmVzZXQiLCJmcm9tSlNPTiIsImpzb24iLCJ4IiwieSIsInoiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFVBQVAsTUFBdUIsY0FBdkI7QUFDQSxTQUFTQyxRQUFULFFBQXlCLFNBQXpCO0FBQ0EsU0FBU0MsZUFBVCxRQUFnQyxTQUFoQztBQUNBLFNBQVNDLHdCQUF3QixJQUFJQyxJQUFyQyxRQUFpRCxTQUFqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLGVBQWUsTUFBTUMsU0FBTixTQUF3QkwsVUFBeEIsQ0FBbUM7QUFDaEQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDRU0sRUFBQUEsV0FBVyxDQUFDQyxjQUFELEVBQWlCQyxLQUFqQixFQUF3QkMsTUFBeEIsRUFBZ0NDLElBQWhDLEVBQXNDQyxNQUF0QyxFQUE4Q0MsU0FBUyxHQUFHLElBQTFELEVBQWdFO0FBQ3pFLFVBQU1MLGNBQU4sRUFBc0JDLEtBQXRCLEVBQTZCQyxNQUE3QixFQUFxQ0MsSUFBckMsRUFBMkNDLE1BQTNDLEVBQW1EQyxTQUFuRDtBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtKLEtBQUwsSUFBYyxDQUFDLENBQWY7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxTQUFLSixJQUFMLEdBQVlBLElBQVo7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDRVMsRUFBQUEsS0FBSyxDQUFDTixjQUFELEVBQWlCQyxLQUFqQixFQUF3QkMsTUFBeEIsRUFBZ0NDLElBQWhDLEVBQXNDQyxNQUF0QyxFQUE4QztBQUNqRCxVQUFNRSxLQUFOLENBQVlOLGNBQVosRUFBNEJDLEtBQTVCLEVBQW1DQyxNQUFuQyxFQUEyQ0MsSUFBM0MsRUFBaURDLE1BQWpEO0FBQ0EsU0FBS0gsS0FBTCxJQUFjLENBQUMsQ0FBZjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDaUIsU0FBUk0sUUFBUSxDQUFDQyxJQUFELEVBQU87QUFDcEIsVUFBTTtBQUFFQyxNQUFBQSxDQUFGO0FBQUtDLE1BQUFBLENBQUw7QUFBUUMsTUFBQUEsQ0FBUjtBQUFXVixNQUFBQSxLQUFYO0FBQWtCQyxNQUFBQSxNQUFsQjtBQUEwQkMsTUFBQUEsSUFBMUI7QUFBZ0NDLE1BQUFBLE1BQWhDO0FBQXdDQyxNQUFBQSxTQUFTLEdBQUc7QUFBcEQsUUFBNkRHLElBQW5FO0FBRUEsV0FBTyxJQUFJVixTQUFKLENBQ0wsSUFBSUosUUFBSixDQUFhZSxDQUFiLEVBQWdCQyxDQUFoQixFQUFtQkMsQ0FBbkIsQ0FESyxFQUVMVixLQUZLLEVBR0xDLE1BSEssRUFJTEMsSUFKSyxFQUtMUixlQUFlLENBQUNTLE1BQUQsQ0FMVixFQU1MQyxTQU5LLENBQVA7QUFRRDs7QUFqRStDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEF0dHJhY3Rpb24gZnJvbSAnLi9BdHRyYWN0aW9uJztcbmltcG9ydCB7IFZlY3RvcjNEIH0gZnJvbSAnLi4vbWF0aCc7XG5pbXBvcnQgeyBnZXRFYXNpbmdCeU5hbWUgfSBmcm9tICcuLi9lYXNlJztcbmltcG9ydCB7IEJFSEFWSU9VUl9UWVBFX1JFUFVMU0lPTiBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG4vKipcbiAqIEJlaGF2aW91ciB0aGF0IGNhdXNlcyBwYXJ0aWNsZXMgdG8gYmUgcmVwZWxsZWQgZnJvbSBhIHRhcmdldCBwb3NpdGlvbi5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlcHVsc2lvbiBleHRlbmRzIEF0dHJhY3Rpb24ge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBSZXB1bHNpb24gYmVoYXZpb3VyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1ZlY3RvcjNEfSB0YXJnZXRQb3NpdGlvbiAtIFRoZSBwb3NpdGlvbiB0aGUgcGFydGljbGVzIHdpbGwgYmUgcmVwZWxsZWQgZnJvbVxuICAgKiBAcGFyYW0ge251bWJlcn0gZm9yY2UgLSBUaGUgcmVwdWxzaW9uIGZvcmNlIHNjYWxhciBtdWx0aXBsaWVyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByYWRpdXMgLSBUaGUgcmVwdWxzaW9uIHJhZGl1c1xuICAgKiBAcGFyYW0ge251bWJlcn0gbGlmZSAtIFRoZSBsaWZlIG9mIHRoZSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBlYXNpbmcgLSBUaGUgYmVoYXZpb3VyJ3MgZGVjYXlpbmcgdHJlbmRcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih0YXJnZXRQb3NpdGlvbiwgZm9yY2UsIHJhZGl1cywgbGlmZSwgZWFzaW5nLCBpc0VuYWJsZWQgPSB0cnVlKSB7XG4gICAgc3VwZXIodGFyZ2V0UG9zaXRpb24sIGZvcmNlLCByYWRpdXMsIGxpZmUsIGVhc2luZywgaXNFbmFibGVkKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFJlcHVsc2lvbiBpcyBhdHRyYWN0aW9uIHdpdGggbmVnYXRpdmUgZm9yY2UuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmZvcmNlICo9IC0xO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGNsYXNzIHR5cGUuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgYmVoYXZpb3VyIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7VmVjdG9yM0R9IHRhcmdldFBvc2l0aW9uIC0gdGhlIHBvc2l0aW9uIHRoZSBwYXJ0aWNsZXMgd2lsbCBiZSBhdHRyYWN0ZWQgdG9cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZvcmNlIC0gdGhlIGF0dHJhY3Rpb24gZm9yY2UgbXVsdGlwbGllclxuICAgKiBAcGFyYW0ge251bWJlcn0gcmFkaXVzIC0gdGhlIGF0dHJhY3Rpb24gcmFkaXVzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsaWZlIC0gdGhlIGxpZmUgb2YgdGhlIHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGVhc2luZyAtIFRoZSBiZWhhdmlvdXIncyBkZWNheWluZyB0cmVuZFxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIHJlc2V0KHRhcmdldFBvc2l0aW9uLCBmb3JjZSwgcmFkaXVzLCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlci5yZXNldCh0YXJnZXRQb3NpdGlvbiwgZm9yY2UsIHJhZGl1cywgbGlmZSwgZWFzaW5nKTtcbiAgICB0aGlzLmZvcmNlICo9IC0xO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBCb2R5IGluaXRpYWxpemVyIGZyb20gSlNPTi5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGpzb24gLSBUaGUgSlNPTiB0byBjb25zdHJ1Y3QgdGhlIGluc3RhbmNlIGZyb20uXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBqc29uLnggLSBUaGUgdGFyZ2V0IHBvc2l0aW9uIHggdmFsdWVcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IGpzb24ueSAtIFRoZSB0YXJnZXQgcG9zaXRpb24geSB2YWx1ZVxuICAgKiBAcHJvcGVydHkge251bWJlcn0ganNvbi56IC0gVGhlIHRhcmdldCBwb3NpdGlvbiB6IHZhbHVlXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBqc29uLmZvcmNlIC0gVGhlIGF0dHJhY3Rpb24gZm9yY2Ugc2NhbGFyIG11bHRpcGxpZXJcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IGpzb24ubGlmZSAtIFRoZSBsaWZlIG9mIHRoZSBwYXJ0aWNsZVxuICAgKiBAcHJvcGVydHkge3N0cmluZ30ganNvbi5lYXNpbmcgLSBUaGUgYmVoYXZpb3VyJ3MgZGVjYXlpbmcgdHJlbmRcbiAgICogQHJldHVybiB7Qm9keX1cbiAgICovXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgeyB4LCB5LCB6LCBmb3JjZSwgcmFkaXVzLCBsaWZlLCBlYXNpbmcsIGlzRW5hYmxlZCA9IHRydWUgfSA9IGpzb247XG5cbiAgICByZXR1cm4gbmV3IFJlcHVsc2lvbihcbiAgICAgIG5ldyBWZWN0b3IzRCh4LCB5LCB6KSxcbiAgICAgIGZvcmNlLFxuICAgICAgcmFkaXVzLFxuICAgICAgbGlmZSxcbiAgICAgIGdldEVhc2luZ0J5TmFtZShlYXNpbmcpLFxuICAgICAgaXNFbmFibGVkXG4gICAgKTtcbiAgfVxufVxuIl19
|