three-nebula 11.0.0 → 11.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/three-nebula.cjs +109 -0
  3. package/dist/three-nebula.cjs.map +1 -0
  4. package/dist/three-nebula.mjs +2968 -0
  5. package/dist/three-nebula.mjs.map +1 -0
  6. package/dist/three-nebula.umd.js +109 -0
  7. package/dist/three-nebula.umd.js.map +1 -0
  8. package/package.json +23 -47
  9. package/specs/01-emitter-hierarchy.md +200 -0
  10. package/specs/02-determinism-scrubbing.md +188 -0
  11. package/specs/03-sound-renderer.md +183 -0
  12. package/specs/04-schema-versioning.md +140 -0
  13. package/specs/05-content-addressed-assets.md +288 -0
  14. package/specs/README.md +80 -0
  15. package/build/cjs/behaviour/Alpha.js +0 -189
  16. package/build/cjs/behaviour/Attraction.js +0 -189
  17. package/build/cjs/behaviour/Behaviour.js +0 -253
  18. package/build/cjs/behaviour/Collision.js +0 -146
  19. package/build/cjs/behaviour/Color.js +0 -148
  20. package/build/cjs/behaviour/CrossZone.js +0 -141
  21. package/build/cjs/behaviour/Force.js +0 -126
  22. package/build/cjs/behaviour/Gravity.js +0 -78
  23. package/build/cjs/behaviour/RandomDrift.js +0 -153
  24. package/build/cjs/behaviour/Repulsion.js +0 -123
  25. package/build/cjs/behaviour/Rotate.js +0 -265
  26. package/build/cjs/behaviour/Scale.js +0 -177
  27. package/build/cjs/behaviour/Spring.js +0 -133
  28. package/build/cjs/behaviour/constants.js +0 -28
  29. package/build/cjs/behaviour/index.js +0 -112
  30. package/build/cjs/behaviour/types.js +0 -33
  31. package/build/cjs/constants/index.js +0 -61
  32. package/build/cjs/core/Particle.js +0 -390
  33. package/build/cjs/core/Pool.js +0 -203
  34. package/build/cjs/core/System.js +0 -366
  35. package/build/cjs/core/constants.js +0 -163
  36. package/build/cjs/core/fromJSON.js +0 -128
  37. package/build/cjs/core/fromJSONAsync.js +0 -239
  38. package/build/cjs/core/index.js +0 -32
  39. package/build/cjs/core/three/Euler.js +0 -233
  40. package/build/cjs/core/three/Math.js +0 -91
  41. package/build/cjs/core/three/Matrix4.js +0 -745
  42. package/build/cjs/core/three/Quaternion.js +0 -451
  43. package/build/cjs/core/three/Vector3.js +0 -464
  44. package/build/cjs/core/three/constants.js +0 -298
  45. package/build/cjs/core/three/index.js +0 -48
  46. package/build/cjs/core/types.js +0 -13
  47. package/build/cjs/debug/Debug.js +0 -209
  48. package/build/cjs/debug/constants.js +0 -19
  49. package/build/cjs/debug/index.js +0 -24
  50. package/build/cjs/debug/log.js +0 -38
  51. package/build/cjs/ease/index.js +0 -149
  52. package/build/cjs/emitter/Emitter.js +0 -798
  53. package/build/cjs/emitter/FollowEmitter.js +0 -146
  54. package/build/cjs/emitter/constants.js +0 -20
  55. package/build/cjs/emitter/index.js +0 -24
  56. package/build/cjs/emitter/types.js +0 -11
  57. package/build/cjs/events/EventDispatcher.js +0 -105
  58. package/build/cjs/events/constants.js +0 -23
  59. package/build/cjs/events/index.js +0 -27
  60. package/build/cjs/index.js +0 -151
  61. package/build/cjs/initializer/Body.js +0 -122
  62. package/build/cjs/initializer/BodySprite.js +0 -146
  63. package/build/cjs/initializer/Initializer.js +0 -109
  64. package/build/cjs/initializer/InitializerUtil.js +0 -54
  65. package/build/cjs/initializer/Life.js +0 -106
  66. package/build/cjs/initializer/Mass.js +0 -101
  67. package/build/cjs/initializer/Position.js +0 -152
  68. package/build/cjs/initializer/Radius.js +0 -118
  69. package/build/cjs/initializer/Rate.js +0 -150
  70. package/build/cjs/initializer/Rotation.js +0 -95
  71. package/build/cjs/initializer/Texture.js +0 -139
  72. package/build/cjs/initializer/Velocity/PolarVelocity.js +0 -102
  73. package/build/cjs/initializer/Velocity/RadialVelocity.js +0 -111
  74. package/build/cjs/initializer/Velocity/VectorVelocity.js +0 -108
  75. package/build/cjs/initializer/Velocity/Velocity.js +0 -94
  76. package/build/cjs/initializer/Velocity/index.js +0 -32
  77. package/build/cjs/initializer/constants.js +0 -43
  78. package/build/cjs/initializer/index.js +0 -108
  79. package/build/cjs/initializer/types.js +0 -37
  80. package/build/cjs/math/ArraySpan.js +0 -103
  81. package/build/cjs/math/Box.js +0 -46
  82. package/build/cjs/math/ColorSpan.js +0 -113
  83. package/build/cjs/math/MathUtils.js +0 -57
  84. package/build/cjs/math/Polar3D.js +0 -115
  85. package/build/cjs/math/Span.js +0 -88
  86. package/build/cjs/math/Vector3D.js +0 -76
  87. package/build/cjs/math/constants.js +0 -35
  88. package/build/cjs/math/index.js +0 -122
  89. package/build/cjs/math/integration.js +0 -59
  90. package/build/cjs/math/types.js +0 -19
  91. package/build/cjs/renderer/BaseRenderer.js +0 -108
  92. package/build/cjs/renderer/CustomRenderer.js +0 -65
  93. package/build/cjs/renderer/GPURenderer/Desktop/index.js +0 -371
  94. package/build/cjs/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +0 -13
  95. package/build/cjs/renderer/GPURenderer/Desktop/shaders/index.js +0 -22
  96. package/build/cjs/renderer/GPURenderer/Desktop/shaders/vertexShader.js +0 -17
  97. package/build/cjs/renderer/GPURenderer/Mobile/index.js +0 -385
  98. package/build/cjs/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +0 -13
  99. package/build/cjs/renderer/GPURenderer/Mobile/shaders/index.js +0 -22
  100. package/build/cjs/renderer/GPURenderer/Mobile/shaders/vertexShader.js +0 -15
  101. package/build/cjs/renderer/GPURenderer/common/ParticleBuffer/constants.js +0 -58
  102. package/build/cjs/renderer/GPURenderer/common/ParticleBuffer/index.js +0 -93
  103. package/build/cjs/renderer/GPURenderer/common/TextureAtlas/constants.js +0 -9
  104. package/build/cjs/renderer/GPURenderer/common/TextureAtlas/index.js +0 -221
  105. package/build/cjs/renderer/GPURenderer/common/constants.js +0 -22
  106. package/build/cjs/renderer/GPURenderer/common/index.js +0 -38
  107. package/build/cjs/renderer/GPURenderer/common/shaders/constants.js +0 -9
  108. package/build/cjs/renderer/GPURenderer/common/stores/Target.js +0 -45
  109. package/build/cjs/renderer/GPURenderer/common/stores/UniqueList.js +0 -51
  110. package/build/cjs/renderer/GPURenderer/common/stores/index.js +0 -22
  111. package/build/cjs/renderer/GPURenderer/index.js +0 -97
  112. package/build/cjs/renderer/MeshRenderer.js +0 -136
  113. package/build/cjs/renderer/SpriteRenderer.js +0 -68
  114. package/build/cjs/renderer/index.js +0 -40
  115. package/build/cjs/renderer/types.js +0 -21
  116. package/build/cjs/utils/ColorUtil.js +0 -39
  117. package/build/cjs/utils/PUID.js +0 -26
  118. package/build/cjs/utils/THREEUtil.js +0 -40
  119. package/build/cjs/utils/Util.js +0 -69
  120. package/build/cjs/utils/index.js +0 -61
  121. package/build/cjs/utils/uid.js +0 -12
  122. package/build/cjs/zone/BoxZone.js +0 -178
  123. package/build/cjs/zone/LineZone.js +0 -101
  124. package/build/cjs/zone/MeshZone.js +0 -101
  125. package/build/cjs/zone/PointZone.js +0 -99
  126. package/build/cjs/zone/ScreenZone.js +0 -164
  127. package/build/cjs/zone/SphereZone.js +0 -155
  128. package/build/cjs/zone/Zone.js +0 -172
  129. package/build/cjs/zone/index.js +0 -56
  130. package/build/cjs/zone/types.js +0 -21
  131. package/build/esm/behaviour/Alpha.js +0 -134
  132. package/build/esm/behaviour/Attraction.js +0 -135
  133. package/build/esm/behaviour/Behaviour.js +0 -215
  134. package/build/esm/behaviour/Collision.js +0 -100
  135. package/build/esm/behaviour/Color.js +0 -101
  136. package/build/esm/behaviour/CrossZone.js +0 -82
  137. package/build/esm/behaviour/Force.js +0 -83
  138. package/build/esm/behaviour/Gravity.js +0 -40
  139. package/build/esm/behaviour/RandomDrift.js +0 -97
  140. package/build/esm/behaviour/Repulsion.js +0 -81
  141. package/build/esm/behaviour/Rotate.js +0 -214
  142. package/build/esm/behaviour/Scale.js +0 -131
  143. package/build/esm/behaviour/Spring.js +0 -90
  144. package/build/esm/behaviour/constants.js +0 -11
  145. package/build/esm/behaviour/index.js +0 -14
  146. package/build/esm/behaviour/types.js +0 -14
  147. package/build/esm/constants/index.js +0 -42
  148. package/build/esm/core/Particle.js +0 -357
  149. package/build/esm/core/Pool.js +0 -161
  150. package/build/esm/core/System.js +0 -320
  151. package/build/esm/core/constants.js +0 -127
  152. package/build/esm/core/fromJSON.js +0 -107
  153. package/build/esm/core/fromJSONAsync.js +0 -210
  154. package/build/esm/core/index.js +0 -4
  155. package/build/esm/core/three/Euler.js +0 -224
  156. package/build/esm/core/three/Math.js +0 -84
  157. package/build/esm/core/three/Matrix4.js +0 -739
  158. package/build/esm/core/three/Quaternion.js +0 -445
  159. package/build/esm/core/three/Vector3.js +0 -457
  160. package/build/esm/core/three/constants.js +0 -148
  161. package/build/esm/core/three/index.js +0 -5
  162. package/build/esm/core/types.js +0 -4
  163. package/build/esm/debug/Debug.js +0 -195
  164. package/build/esm/debug/constants.js +0 -7
  165. package/build/esm/debug/index.js +0 -3
  166. package/build/esm/debug/log.js +0 -31
  167. package/build/esm/ease/index.js +0 -113
  168. package/build/esm/emitter/Emitter.js +0 -708
  169. package/build/esm/emitter/FollowEmitter.js +0 -97
  170. package/build/esm/emitter/constants.js +0 -7
  171. package/build/esm/emitter/index.js +0 -3
  172. package/build/esm/emitter/types.js +0 -3
  173. package/build/esm/events/EventDispatcher.js +0 -82
  174. package/build/esm/events/constants.js +0 -9
  175. package/build/esm/events/index.js +0 -4
  176. package/build/esm/index.js +0 -13
  177. package/build/esm/initializer/Body.js +0 -83
  178. package/build/esm/initializer/BodySprite.js +0 -108
  179. package/build/esm/initializer/Initializer.js +0 -84
  180. package/build/esm/initializer/InitializerUtil.js +0 -48
  181. package/build/esm/initializer/Life.js +0 -66
  182. package/build/esm/initializer/Mass.js +0 -60
  183. package/build/esm/initializer/Position.js +0 -98
  184. package/build/esm/initializer/Radius.js +0 -75
  185. package/build/esm/initializer/Rate.js +0 -107
  186. package/build/esm/initializer/Rotation.js +0 -54
  187. package/build/esm/initializer/Texture.js +0 -101
  188. package/build/esm/initializer/Velocity/PolarVelocity.js +0 -63
  189. package/build/esm/initializer/Velocity/RadialVelocity.js +0 -72
  190. package/build/esm/initializer/Velocity/VectorVelocity.js +0 -69
  191. package/build/esm/initializer/Velocity/Velocity.js +0 -52
  192. package/build/esm/initializer/Velocity/index.js +0 -4
  193. package/build/esm/initializer/constants.js +0 -26
  194. package/build/esm/initializer/index.js +0 -12
  195. package/build/esm/initializer/types.js +0 -16
  196. package/build/esm/math/ArraySpan.js +0 -62
  197. package/build/esm/math/Box.js +0 -25
  198. package/build/esm/math/ColorSpan.js +0 -71
  199. package/build/esm/math/MathUtils.js +0 -48
  200. package/build/esm/math/Polar3D.js +0 -81
  201. package/build/esm/math/Span.js +0 -63
  202. package/build/esm/math/Vector3D.js +0 -34
  203. package/build/esm/math/constants.js +0 -24
  204. package/build/esm/math/index.js +0 -10
  205. package/build/esm/math/integration.js +0 -47
  206. package/build/esm/math/types.js +0 -7
  207. package/build/esm/renderer/BaseRenderer.js +0 -78
  208. package/build/esm/renderer/CustomRenderer.js +0 -23
  209. package/build/esm/renderer/GPURenderer/Desktop/index.js +0 -357
  210. package/build/esm/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +0 -30
  211. package/build/esm/renderer/GPURenderer/Desktop/shaders/index.js +0 -3
  212. package/build/esm/renderer/GPURenderer/Desktop/shaders/vertexShader.js +0 -36
  213. package/build/esm/renderer/GPURenderer/Mobile/index.js +0 -375
  214. package/build/esm/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +0 -27
  215. package/build/esm/renderer/GPURenderer/Mobile/shaders/index.js +0 -3
  216. package/build/esm/renderer/GPURenderer/Mobile/shaders/vertexShader.js +0 -33
  217. package/build/esm/renderer/GPURenderer/common/ParticleBuffer/constants.js +0 -30
  218. package/build/esm/renderer/GPURenderer/common/ParticleBuffer/index.js +0 -70
  219. package/build/esm/renderer/GPURenderer/common/TextureAtlas/constants.js +0 -2
  220. package/build/esm/renderer/GPURenderer/common/TextureAtlas/index.js +0 -206
  221. package/build/esm/renderer/GPURenderer/common/constants.js +0 -13
  222. package/build/esm/renderer/GPURenderer/common/index.js +0 -4
  223. package/build/esm/renderer/GPURenderer/common/shaders/constants.js +0 -2
  224. package/build/esm/renderer/GPURenderer/common/stores/Target.js +0 -26
  225. package/build/esm/renderer/GPURenderer/common/stores/UniqueList.js +0 -29
  226. package/build/esm/renderer/GPURenderer/common/stores/index.js +0 -3
  227. package/build/esm/renderer/GPURenderer/index.js +0 -57
  228. package/build/esm/renderer/MeshRenderer.js +0 -93
  229. package/build/esm/renderer/SpriteRenderer.js +0 -30
  230. package/build/esm/renderer/index.js +0 -5
  231. package/build/esm/renderer/types.js +0 -8
  232. package/build/esm/utils/ColorUtil.js +0 -32
  233. package/build/esm/utils/PUID.js +0 -19
  234. package/build/esm/utils/THREEUtil.js +0 -31
  235. package/build/esm/utils/Util.js +0 -60
  236. package/build/esm/utils/index.js +0 -13
  237. package/build/esm/utils/uid.js +0 -3
  238. package/build/esm/zone/BoxZone.js +0 -133
  239. package/build/esm/zone/LineZone.js +0 -61
  240. package/build/esm/zone/MeshZone.js +0 -60
  241. package/build/esm/zone/PointZone.js +0 -59
  242. package/build/esm/zone/ScreenZone.js +0 -116
  243. package/build/esm/zone/SphereZone.js +0 -113
  244. package/build/esm/zone/Zone.js +0 -141
  245. package/build/esm/zone/index.js +0 -7
  246. package/build/esm/zone/types.js +0 -8
  247. package/build/three-nebula.js +0 -2
  248. package/build/three-nebula.js.map +0 -1
@@ -1,189 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
-
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
15
-
16
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
22
- var _math = require("../math");
23
-
24
- var _Behaviour2 = _interopRequireDefault(require("./Behaviour"));
25
-
26
- var _constants = require("./constants");
27
-
28
- var _ease = require("../ease");
29
-
30
- var _types = require("./types");
31
-
32
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
33
-
34
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
35
-
36
- /**
37
- * Behaviour that applies an alpha transition effect to particles.
38
- *
39
- */
40
- var Alpha = /*#__PURE__*/function (_Behaviour) {
41
- (0, _inherits2["default"])(Alpha, _Behaviour);
42
-
43
- var _super = _createSuper(Alpha);
44
-
45
- /**
46
- * Constructs an Alpha behaviour instance.
47
- *
48
- * @param {number} alphaA - The starting alpha value
49
- * @param {?number} alphaB - The ending alpha value
50
- * @param {number} life - The life of the behaviour
51
- * @param {function} easing - The easing equation to use for transforms
52
- * @param {boolean} [isEnabled=true] - Determines if the behaviour will be applied or not
53
- * @return void
54
- */
55
- function Alpha() {
56
- var _this;
57
-
58
- var alphaA = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
59
- var alphaB = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
60
- var life = arguments.length > 2 ? arguments[2] : undefined;
61
- var easing = arguments.length > 3 ? arguments[3] : undefined;
62
- var isEnabled = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
63
- (0, _classCallCheck2["default"])(this, Alpha);
64
- _this = _super.call(this, life, easing, _types.BEHAVIOUR_TYPE_ALPHA, isEnabled);
65
- /**
66
- * @desc The starting alpha value
67
- * @type {number|Span}
68
- */
69
-
70
- _this.alphaA = alphaA;
71
- /**
72
- * @desc The ending alpha value
73
- * @type {number|Span}
74
- */
75
-
76
- _this.alphaB = alphaB;
77
-
78
- _this.reset(alphaA, alphaB);
79
-
80
- return _this;
81
- }
82
- /**
83
- * Gets the _same property which determines if the alpha are the same.
84
- *
85
- * @return {boolean}
86
- */
87
-
88
-
89
- (0, _createClass2["default"])(Alpha, [{
90
- key: "reset",
91
-
92
- /**
93
- * Resets the behaviour properties.
94
- *
95
- * @param {number} alphaA - the starting alpha value
96
- * @param {?number} alphaB - the ending alpha value
97
- * @param {number} life - the life of the behaviour
98
- * @param {function} easing - the easing equation to use for transforms
99
- * @return void
100
- */
101
- value: function reset() {
102
- var alphaA = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
103
- var alphaB = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
104
- var life = arguments.length > 2 ? arguments[2] : undefined;
105
- var easing = arguments.length > 3 ? arguments[3] : undefined;
106
- this.same = alphaB === null || alphaB === undefined ? true : false;
107
- this.alphaA = (0, _math.createSpan)(alphaA);
108
- this.alphaB = (0, _math.createSpan)(alphaB);
109
- life && (0, _get2["default"])((0, _getPrototypeOf2["default"])(Alpha.prototype), "reset", this).call(this, life, easing);
110
- }
111
- /**
112
- * Initializes the behaviour on a particle.
113
- *
114
- * @param {object} particle - the particle to initialize the behaviour on
115
- * @return void
116
- */
117
-
118
- }, {
119
- key: "initialize",
120
- value: function initialize(particle) {
121
- particle.useAlpha = true;
122
- particle.transform.alphaA = this.alphaA.getValue();
123
- particle.transform.alphaB = this.same ? particle.transform.alphaA : this.alphaB.getValue();
124
- }
125
- /**
126
- * Mutates the target's alpha/opacity property.
127
- *
128
- * @param {object} particle - the particle to apply the behaviour to
129
- * @param {number} time - engine time
130
- * @param {integer} index - the particle index
131
- * @return void
132
- */
133
-
134
- }, {
135
- key: "mutate",
136
- value: function mutate(particle, time, index) {
137
- this.energize(particle, time, index);
138
- particle.alpha = _math.MathUtils.lerp(particle.transform.alphaA, particle.transform.alphaB, this.energy);
139
-
140
- if (particle.alpha < _constants.PARTICLE_ALPHA_THRESHOLD) {
141
- particle.alpha = 0;
142
- }
143
- }
144
- /**
145
- * Creates a Body initializer from JSON.
146
- *
147
- * @param {object} json - The JSON to construct the instance from.
148
- * @property {number} json.alphaA - The starting alpha value
149
- * @property {number} json.alphaB - The ending alpha value
150
- * @property {number} json.life - The life of the behaviour
151
- * @property {string} json.easing - The easing equation to use for transforms
152
- * @return {Body}
153
- */
154
-
155
- }, {
156
- key: "same",
157
- get: function get() {
158
- return this._same;
159
- }
160
- /**
161
- * Sets the _same property which determines if the alpha are the same.
162
- *
163
- * @param {boolean} same
164
- * @return {boolean}
165
- */
166
- ,
167
- set: function set(same) {
168
- /**
169
- * @type {boolean}
170
- */
171
- this._same = same;
172
- }
173
- }], [{
174
- key: "fromJSON",
175
- value: function fromJSON(json) {
176
- var alphaA = json.alphaA,
177
- alphaB = json.alphaB,
178
- life = json.life,
179
- easing = json.easing,
180
- _json$isEnabled = json.isEnabled,
181
- isEnabled = _json$isEnabled === void 0 ? true : _json$isEnabled;
182
- return new Alpha(alphaA, alphaB, life, (0, _ease.getEasingByName)(easing), isEnabled);
183
- }
184
- }]);
185
- return Alpha;
186
- }(_Behaviour2["default"]);
187
-
188
- exports["default"] = Alpha;
189
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvQWxwaGEuanMiXSwibmFtZXMiOlsiQWxwaGEiLCJhbHBoYUEiLCJhbHBoYUIiLCJsaWZlIiwiZWFzaW5nIiwiaXNFbmFibGVkIiwidHlwZSIsInJlc2V0Iiwic2FtZSIsInVuZGVmaW5lZCIsInBhcnRpY2xlIiwidXNlQWxwaGEiLCJ0cmFuc2Zvcm0iLCJnZXRWYWx1ZSIsInRpbWUiLCJpbmRleCIsImVuZXJnaXplIiwiYWxwaGEiLCJNYXRoVXRpbHMiLCJsZXJwIiwiZW5lcmd5IiwiUEFSVElDTEVfQUxQSEFfVEhSRVNIT0xEIiwiX3NhbWUiLCJqc29uIiwiQmVoYXZpb3VyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7SUFDcUJBLEs7Ozs7O0FBQ25CO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0UsbUJBQXVFO0FBQUE7O0FBQUEsUUFBM0RDLE1BQTJELHVFQUFsRCxDQUFrRDtBQUFBLFFBQS9DQyxNQUErQyx1RUFBdEMsSUFBc0M7QUFBQSxRQUFoQ0MsSUFBZ0M7QUFBQSxRQUExQkMsTUFBMEI7QUFBQSxRQUFsQkMsU0FBa0IsdUVBQU4sSUFBTTtBQUFBO0FBQ3JFLDhCQUFNRixJQUFOLEVBQVlDLE1BQVosRUFBb0JFLDJCQUFwQixFQUEwQkQsU0FBMUI7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxVQUFLSixNQUFMLEdBQWNBLE1BQWQ7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxVQUFLQyxNQUFMLEdBQWNBLE1BQWQ7O0FBRUEsVUFBS0ssS0FBTCxDQUFXTixNQUFYLEVBQW1CQyxNQUFuQjs7QUFmcUU7QUFnQnRFO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBa0JFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs0QkFDaUQ7QUFBQSxVQUF6Q0QsTUFBeUMsdUVBQWhDLENBQWdDO0FBQUEsVUFBN0JDLE1BQTZCLHVFQUFwQixJQUFvQjtBQUFBLFVBQWRDLElBQWM7QUFBQSxVQUFSQyxNQUFRO0FBQzdDLFdBQUtJLElBQUwsR0FBWU4sTUFBTSxLQUFLLElBQVgsSUFBbUJBLE1BQU0sS0FBS08sU0FBOUIsR0FBMEMsSUFBMUMsR0FBaUQsS0FBN0Q7QUFDQSxXQUFLUixNQUFMLEdBQWMsc0JBQVdBLE1BQVgsQ0FBZDtBQUNBLFdBQUtDLE1BQUwsR0FBYyxzQkFBV0EsTUFBWCxDQUFkO0FBRUFDLE1BQUFBLElBQUksdUdBQWdCQSxJQUFoQixFQUFzQkMsTUFBdEIsQ0FBSjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OytCQUNhTSxRLEVBQVU7QUFDbkJBLE1BQUFBLFFBQVEsQ0FBQ0MsUUFBVCxHQUFvQixJQUFwQjtBQUNBRCxNQUFBQSxRQUFRLENBQUNFLFNBQVQsQ0FBbUJYLE1BQW5CLEdBQTRCLEtBQUtBLE1BQUwsQ0FBWVksUUFBWixFQUE1QjtBQUVBSCxNQUFBQSxRQUFRLENBQUNFLFNBQVQsQ0FBbUJWLE1BQW5CLEdBQTRCLEtBQUtNLElBQUwsR0FDeEJFLFFBQVEsQ0FBQ0UsU0FBVCxDQUFtQlgsTUFESyxHQUV4QixLQUFLQyxNQUFMLENBQVlXLFFBQVosRUFGSjtBQUdEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OzsyQkFDU0gsUSxFQUFVSSxJLEVBQU1DLEssRUFBTztBQUM1QixXQUFLQyxRQUFMLENBQWNOLFFBQWQsRUFBd0JJLElBQXhCLEVBQThCQyxLQUE5QjtBQUVBTCxNQUFBQSxRQUFRLENBQUNPLEtBQVQsR0FBaUJDLGdCQUFVQyxJQUFWLENBQ2ZULFFBQVEsQ0FBQ0UsU0FBVCxDQUFtQlgsTUFESixFQUVmUyxRQUFRLENBQUNFLFNBQVQsQ0FBbUJWLE1BRkosRUFHZixLQUFLa0IsTUFIVSxDQUFqQjs7QUFNQSxVQUFJVixRQUFRLENBQUNPLEtBQVQsR0FBaUJJLG1DQUFyQixFQUErQztBQUM3Q1gsUUFBQUEsUUFBUSxDQUFDTyxLQUFULEdBQWlCLENBQWpCO0FBQ0Q7QUFDRjtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O3dCQWhGYTtBQUNULGFBQU8sS0FBS0ssS0FBWjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztzQkFDV2QsSSxFQUFNO0FBQ2I7QUFDSjtBQUNBO0FBQ0ksV0FBS2MsS0FBTCxHQUFhZCxJQUFiO0FBQ0Q7Ozs2QkFrRWVlLEksRUFBTTtBQUFBLFVBQ1p0QixNQURZLEdBQ3VDc0IsSUFEdkMsQ0FDWnRCLE1BRFk7QUFBQSxVQUNKQyxNQURJLEdBQ3VDcUIsSUFEdkMsQ0FDSnJCLE1BREk7QUFBQSxVQUNJQyxJQURKLEdBQ3VDb0IsSUFEdkMsQ0FDSXBCLElBREo7QUFBQSxVQUNVQyxNQURWLEdBQ3VDbUIsSUFEdkMsQ0FDVW5CLE1BRFY7QUFBQSw0QkFDdUNtQixJQUR2QyxDQUNrQmxCLFNBRGxCO0FBQUEsVUFDa0JBLFNBRGxCLGdDQUM4QixJQUQ5QjtBQUdwQixhQUFPLElBQUlMLEtBQUosQ0FBVUMsTUFBVixFQUFrQkMsTUFBbEIsRUFBMEJDLElBQTFCLEVBQWdDLDJCQUFnQkMsTUFBaEIsQ0FBaEMsRUFBeURDLFNBQXpELENBQVA7QUFDRDs7O0VBdkhnQ21CLHNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF0aFV0aWxzLCBjcmVhdGVTcGFuIH0gZnJvbSAnLi4vbWF0aCc7XG5cbmltcG9ydCBCZWhhdmlvdXIgZnJvbSAnLi9CZWhhdmlvdXInO1xuaW1wb3J0IHsgUEFSVElDTEVfQUxQSEFfVEhSRVNIT0xEIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0RWFzaW5nQnlOYW1lIH0gZnJvbSAnLi4vZWFzZSc7XG5pbXBvcnQgeyBCRUhBVklPVVJfVFlQRV9BTFBIQSBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQmVoYXZpb3VyIHRoYXQgYXBwbGllcyBhbiBhbHBoYSB0cmFuc2l0aW9uIGVmZmVjdCB0byBwYXJ0aWNsZXMuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBbHBoYSBleHRlbmRzIEJlaGF2aW91ciB7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGFuIEFscGhhIGJlaGF2aW91ciBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGFscGhhQSAtIFRoZSBzdGFydGluZyBhbHBoYSB2YWx1ZVxuICAgKiBAcGFyYW0gez9udW1iZXJ9IGFscGhhQiAtIFRoZSBlbmRpbmcgYWxwaGEgdmFsdWVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGxpZmUgLSBUaGUgbGlmZSBvZiB0aGUgYmVoYXZpb3VyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGVhc2luZyAtIFRoZSBlYXNpbmcgZXF1YXRpb24gdG8gdXNlIGZvciB0cmFuc2Zvcm1zXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRW5hYmxlZD10cnVlXSAtIERldGVybWluZXMgaWYgdGhlIGJlaGF2aW91ciB3aWxsIGJlIGFwcGxpZWQgb3Igbm90XG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgY29uc3RydWN0b3IoYWxwaGFBID0gMSwgYWxwaGFCID0gbnVsbCwgbGlmZSwgZWFzaW5nLCBpc0VuYWJsZWQgPSB0cnVlKSB7XG4gICAgc3VwZXIobGlmZSwgZWFzaW5nLCB0eXBlLCBpc0VuYWJsZWQpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIHN0YXJ0aW5nIGFscGhhIHZhbHVlXG4gICAgICogQHR5cGUge251bWJlcnxTcGFufVxuICAgICAqL1xuICAgIHRoaXMuYWxwaGFBID0gYWxwaGFBO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGVuZGluZyBhbHBoYSB2YWx1ZVxuICAgICAqIEB0eXBlIHtudW1iZXJ8U3Bhbn1cbiAgICAgKi9cbiAgICB0aGlzLmFscGhhQiA9IGFscGhhQjtcblxuICAgIHRoaXMucmVzZXQoYWxwaGFBLCBhbHBoYUIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIF9zYW1lIHByb3BlcnR5IHdoaWNoIGRldGVybWluZXMgaWYgdGhlIGFscGhhIGFyZSB0aGUgc2FtZS5cbiAgICpcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBzYW1lKCkge1xuICAgIHJldHVybiB0aGlzLl9zYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIF9zYW1lIHByb3BlcnR5IHdoaWNoIGRldGVybWluZXMgaWYgdGhlIGFscGhhIGFyZSB0aGUgc2FtZS5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBzYW1lXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBzZXQgc2FtZShzYW1lKSB7XG4gICAgLyoqXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5fc2FtZSA9IHNhbWU7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBiZWhhdmlvdXIgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGFscGhhQSAtIHRoZSBzdGFydGluZyBhbHBoYSB2YWx1ZVxuICAgKiBAcGFyYW0gez9udW1iZXJ9IGFscGhhQiAtIHRoZSBlbmRpbmcgYWxwaGEgdmFsdWVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGxpZmUgLSB0aGUgbGlmZSBvZiB0aGUgYmVoYXZpb3VyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGVhc2luZyAtIHRoZSBlYXNpbmcgZXF1YXRpb24gdG8gdXNlIGZvciB0cmFuc2Zvcm1zXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgcmVzZXQoYWxwaGFBID0gMSwgYWxwaGFCID0gbnVsbCwgbGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy5zYW1lID0gYWxwaGFCID09PSBudWxsIHx8IGFscGhhQiA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMuYWxwaGFBID0gY3JlYXRlU3BhbihhbHBoYUEpO1xuICAgIHRoaXMuYWxwaGFCID0gY3JlYXRlU3BhbihhbHBoYUIpO1xuXG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBiZWhhdmlvdXIgb24gYSBwYXJ0aWNsZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpY2xlIC0gdGhlIHBhcnRpY2xlIHRvIGluaXRpYWxpemUgdGhlIGJlaGF2aW91ciBvblxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGluaXRpYWxpemUocGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS51c2VBbHBoYSA9IHRydWU7XG4gICAgcGFydGljbGUudHJhbnNmb3JtLmFscGhhQSA9IHRoaXMuYWxwaGFBLmdldFZhbHVlKCk7XG5cbiAgICBwYXJ0aWNsZS50cmFuc2Zvcm0uYWxwaGFCID0gdGhpcy5zYW1lXG4gICAgICA/IHBhcnRpY2xlLnRyYW5zZm9ybS5hbHBoYUFcbiAgICAgIDogdGhpcy5hbHBoYUIuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNdXRhdGVzIHRoZSB0YXJnZXQncyBhbHBoYS9vcGFjaXR5IHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGljbGUgLSB0aGUgcGFydGljbGUgdG8gYXBwbHkgdGhlIGJlaGF2aW91ciB0b1xuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIGVuZ2luZSB0aW1lXG4gICAqIEBwYXJhbSB7aW50ZWdlcn0gaW5kZXggLSB0aGUgcGFydGljbGUgaW5kZXhcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBtdXRhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5lbmVyZ2l6ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuXG4gICAgcGFydGljbGUuYWxwaGEgPSBNYXRoVXRpbHMubGVycChcbiAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS5hbHBoYUEsXG4gICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0uYWxwaGFCLFxuICAgICAgdGhpcy5lbmVyZ3lcbiAgICApO1xuXG4gICAgaWYgKHBhcnRpY2xlLmFscGhhIDwgUEFSVElDTEVfQUxQSEFfVEhSRVNIT0xEKSB7XG4gICAgICBwYXJ0aWNsZS5hbHBoYSA9IDA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBCb2R5IGluaXRpYWxpemVyIGZyb20gSlNPTi5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGpzb24gLSBUaGUgSlNPTiB0byBjb25zdHJ1Y3QgdGhlIGluc3RhbmNlIGZyb20uXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBqc29uLmFscGhhQSAtIFRoZSBzdGFydGluZyBhbHBoYSB2YWx1ZVxuICAgKiBAcHJvcGVydHkge251bWJlcn0ganNvbi5hbHBoYUIgLSBUaGUgZW5kaW5nIGFscGhhIHZhbHVlXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBqc29uLmxpZmUgLSBUaGUgbGlmZSBvZiB0aGUgYmVoYXZpb3VyXG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBqc29uLmVhc2luZyAtIFRoZSBlYXNpbmcgZXF1YXRpb24gdG8gdXNlIGZvciB0cmFuc2Zvcm1zXG4gICAqIEByZXR1cm4ge0JvZHl9XG4gICAqL1xuICBzdGF0aWMgZnJvbUpTT04oanNvbikge1xuICAgIGNvbnN0IHsgYWxwaGFBLCBhbHBoYUIsIGxpZmUsIGVhc2luZywgaXNFbmFibGVkID0gdHJ1ZSB9ID0ganNvbjtcblxuICAgIHJldHVybiBuZXcgQWxwaGEoYWxwaGFBLCBhbHBoYUIsIGxpZmUsIGdldEVhc2luZ0J5TmFtZShlYXNpbmcpLCBpc0VuYWJsZWQpO1xuICB9XG59XG4iXX0=
@@ -1,189 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
-
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
15
-
16
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
22
- var _constants = require("./constants");
23
-
24
- var _Behaviour2 = _interopRequireDefault(require("./Behaviour"));
25
-
26
- var _math = require("../math");
27
-
28
- var _ease = require("../ease");
29
-
30
- var _types = require("./types");
31
-
32
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
33
-
34
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
35
-
36
- /**
37
- * Behaviour that causes particles to be attracted to a target position.
38
- *
39
- */
40
- var Attraction = /*#__PURE__*/function (_Behaviour) {
41
- (0, _inherits2["default"])(Attraction, _Behaviour);
42
-
43
- var _super = _createSuper(Attraction);
44
-
45
- /**
46
- * Constructs an Attraction behaviour instance.
47
- *
48
- * @param {Vector3D} targetPosition - The position the particles will be attracted to
49
- * @param {number} force - The attraction force scalar multiplier
50
- * @param {number} radius - The attraction radius
51
- * @param {number} [life=DEFAULT_LIFE] - The life of the particle
52
- * @param {function} [easing=DEFAULT_BEHAVIOUR_EASING] - The behaviour's decaying trend
53
- * @param {boolean} [isEnabled=true] - Determines if the behaviour will be applied or not
54
- * @return void
55
- */
56
- function Attraction() {
57
- var _this;
58
-
59
- var targetPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new _math.Vector3D();
60
- var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.DEFAULT_ATTRACTION_FORCE_SCALAR;
61
- var radius = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _constants.DEFAULT_ATTRACITON_RADIUS;
62
- var life = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _constants.DEFAULT_LIFE;
63
- var easing = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _constants.DEFAULT_BEHAVIOUR_EASING;
64
- var isEnabled = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;
65
- (0, _classCallCheck2["default"])(this, Attraction);
66
- _this = _super.call(this, life, easing, _types.BEHAVIOUR_TYPE_ATTRACTION, isEnabled);
67
- /**
68
- * @desc The position the particles will be attracted to
69
- * @type {Vector3D}
70
- */
71
-
72
- _this.targetPosition = targetPosition;
73
- /**
74
- * @desc The attraction radius
75
- * @type {number} - the attraction radius
76
- */
77
-
78
- _this.radius = radius;
79
- /**
80
- * @desc The attraction force scalar multiplier
81
- * @type {number}
82
- */
83
-
84
- _this.force = _this.normalizeValue(force);
85
- /**
86
- * @desc The radius of the attraction squared
87
- * @type {number}
88
- */
89
-
90
- _this.radiusSq = _this.radius * _this.radius;
91
- /**
92
- * @desc The attraction force in 3D space
93
- * @type {Vector3D}
94
- */
95
-
96
- _this.attractionForce = new _math.Vector3D();
97
- /**
98
- * @desc The linear attraction force
99
- * @type {number}
100
- */
101
-
102
- _this.lengthSq = 0;
103
- return _this;
104
- }
105
- /**
106
- * Resets the behaviour properties.
107
- *
108
- * @param {Vector3D} targetPosition - the position the particles will be attracted to
109
- * @param {number} force - the attraction force multiplier
110
- * @param {number} radius - the attraction radius
111
- * @param {number} life - the life of the particle
112
- * @param {function} easing - The behaviour's decaying trend
113
- * @return void
114
- */
115
-
116
-
117
- (0, _createClass2["default"])(Attraction, [{
118
- key: "reset",
119
- value: function reset() {
120
- var targetPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new _math.Vector3D();
121
- var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.DEFAULT_ATTRACTION_FORCE_SCALAR;
122
- var radius = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _constants.DEFAULT_ATTRACITON_RADIUS;
123
- var life = arguments.length > 3 ? arguments[3] : undefined;
124
- var easing = arguments.length > 4 ? arguments[4] : undefined;
125
- this.targetPosition = targetPosition;
126
- this.radius = radius;
127
- this.force = this.normalizeValue(force);
128
- this.radiusSq = this.radius * this.radius;
129
- this.attractionForce = new _math.Vector3D();
130
- this.lengthSq = 0;
131
- life && (0, _get2["default"])((0, _getPrototypeOf2["default"])(Attraction.prototype), "reset", this).call(this, life, easing);
132
- }
133
- /**
134
- * Mutates particle acceleration.
135
- *
136
- * @param {Particle} particle - the particle to apply the behaviour to
137
- * @param {number} time - particle engine time
138
- * @param {integer} index - the particle index
139
- * @return void
140
- */
141
-
142
- }, {
143
- key: "mutate",
144
- value: function mutate(particle, time, index) {
145
- this.energize(particle, time, index);
146
- this.attractionForce.copy(this.targetPosition);
147
- this.attractionForce.sub(particle.position);
148
- this.lengthSq = this.attractionForce.lengthSq();
149
-
150
- if (this.lengthSq > _constants.PARTICLE_LENGTH_SQ_THRESHOLD && this.lengthSq < this.radiusSq) {
151
- this.attractionForce.normalize();
152
- this.attractionForce.scalar(1 - this.lengthSq / this.radiusSq);
153
- this.attractionForce.scalar(this.force);
154
- particle.acceleration.add(this.attractionForce);
155
- }
156
- }
157
- /**
158
- * Creates a Body initializer from JSON.
159
- *
160
- * @param {object} json - The JSON to construct the instance from.
161
- * @property {number} json.x - The target position x value
162
- * @property {number} json.y - The target position y value
163
- * @property {number} json.z - The target position z value
164
- * @property {number} json.force - The attraction force scalar multiplier
165
- * @property {number} json.life - The life of the particle
166
- * @property {string} json.easing - The behaviour's decaying trend
167
- * @return {Body}
168
- */
169
-
170
- }], [{
171
- key: "fromJSON",
172
- value: function fromJSON(json) {
173
- var x = json.x,
174
- y = json.y,
175
- z = json.z,
176
- force = json.force,
177
- radius = json.radius,
178
- life = json.life,
179
- easing = json.easing,
180
- _json$isEnabled = json.isEnabled,
181
- isEnabled = _json$isEnabled === void 0 ? true : _json$isEnabled;
182
- return new Attraction(new _math.Vector3D(x, y, z), force, radius, life, (0, _ease.getEasingByName)(easing), isEnabled);
183
- }
184
- }]);
185
- return Attraction;
186
- }(_Behaviour2["default"]);
187
-
188
- exports["default"] = Attraction;
189
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvQXR0cmFjdGlvbi5qcyJdLCJuYW1lcyI6WyJBdHRyYWN0aW9uIiwidGFyZ2V0UG9zaXRpb24iLCJWZWN0b3IzRCIsImZvcmNlIiwiREVGQVVMVF9BVFRSQUNUSU9OX0ZPUkNFX1NDQUxBUiIsInJhZGl1cyIsIkRFRkFVTFRfQVRUUkFDSVRPTl9SQURJVVMiLCJsaWZlIiwiREVGQVVMVF9MSUZFIiwiZWFzaW5nIiwiREVGQVVMVF9CRUhBVklPVVJfRUFTSU5HIiwiaXNFbmFibGVkIiwidHlwZSIsIm5vcm1hbGl6ZVZhbHVlIiwicmFkaXVzU3EiLCJhdHRyYWN0aW9uRm9yY2UiLCJsZW5ndGhTcSIsInBhcnRpY2xlIiwidGltZSIsImluZGV4IiwiZW5lcmdpemUiLCJjb3B5Iiwic3ViIiwicG9zaXRpb24iLCJQQVJUSUNMRV9MRU5HVEhfU1FfVEhSRVNIT0xEIiwibm9ybWFsaXplIiwic2NhbGFyIiwiYWNjZWxlcmF0aW9uIiwiYWRkIiwianNvbiIsIngiLCJ5IiwieiIsIkJlaGF2aW91ciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBUUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0lBQ3FCQSxVOzs7OztBQUNuQjtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Usd0JBT0U7QUFBQTs7QUFBQSxRQU5BQyxjQU1BLHVFQU5pQixJQUFJQyxjQUFKLEVBTWpCO0FBQUEsUUFMQUMsS0FLQSx1RUFMUUMsMENBS1I7QUFBQSxRQUpBQyxNQUlBLHVFQUpTQyxvQ0FJVDtBQUFBLFFBSEFDLElBR0EsdUVBSE9DLHVCQUdQO0FBQUEsUUFGQUMsTUFFQSx1RUFGU0MsbUNBRVQ7QUFBQSxRQURBQyxTQUNBLHVFQURZLElBQ1o7QUFBQTtBQUNBLDhCQUFNSixJQUFOLEVBQVlFLE1BQVosRUFBb0JHLGdDQUFwQixFQUEwQkQsU0FBMUI7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxVQUFLVixjQUFMLEdBQXNCQSxjQUF0QjtBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFVBQUtJLE1BQUwsR0FBY0EsTUFBZDtBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFVBQUtGLEtBQUwsR0FBYSxNQUFLVSxjQUFMLENBQW9CVixLQUFwQixDQUFiO0FBRUE7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksVUFBS1csUUFBTCxHQUFnQixNQUFLVCxNQUFMLEdBQWMsTUFBS0EsTUFBbkM7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxVQUFLVSxlQUFMLEdBQXVCLElBQUliLGNBQUosRUFBdkI7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxVQUFLYyxRQUFMLEdBQWdCLENBQWhCO0FBckNBO0FBc0NEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OzRCQU9JO0FBQUEsVUFMQWYsY0FLQSx1RUFMaUIsSUFBSUMsY0FBSixFQUtqQjtBQUFBLFVBSkFDLEtBSUEsdUVBSlFDLDBDQUlSO0FBQUEsVUFIQUMsTUFHQSx1RUFIU0Msb0NBR1Q7QUFBQSxVQUZBQyxJQUVBO0FBQUEsVUFEQUUsTUFDQTtBQUNBLFdBQUtSLGNBQUwsR0FBc0JBLGNBQXRCO0FBQ0EsV0FBS0ksTUFBTCxHQUFjQSxNQUFkO0FBQ0EsV0FBS0YsS0FBTCxHQUFhLEtBQUtVLGNBQUwsQ0FBb0JWLEtBQXBCLENBQWI7QUFDQSxXQUFLVyxRQUFMLEdBQWdCLEtBQUtULE1BQUwsR0FBYyxLQUFLQSxNQUFuQztBQUNBLFdBQUtVLGVBQUwsR0FBdUIsSUFBSWIsY0FBSixFQUF2QjtBQUNBLFdBQUtjLFFBQUwsR0FBZ0IsQ0FBaEI7QUFFQVQsTUFBQUEsSUFBSSw0R0FBZ0JBLElBQWhCLEVBQXNCRSxNQUF0QixDQUFKO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OzJCQUNTUSxRLEVBQVVDLEksRUFBTUMsSyxFQUFPO0FBQzVCLFdBQUtDLFFBQUwsQ0FBY0gsUUFBZCxFQUF3QkMsSUFBeEIsRUFBOEJDLEtBQTlCO0FBRUEsV0FBS0osZUFBTCxDQUFxQk0sSUFBckIsQ0FBMEIsS0FBS3BCLGNBQS9CO0FBQ0EsV0FBS2MsZUFBTCxDQUFxQk8sR0FBckIsQ0FBeUJMLFFBQVEsQ0FBQ00sUUFBbEM7QUFFQSxXQUFLUCxRQUFMLEdBQWdCLEtBQUtELGVBQUwsQ0FBcUJDLFFBQXJCLEVBQWhCOztBQUVBLFVBQ0UsS0FBS0EsUUFBTCxHQUFnQlEsdUNBQWhCLElBQ0EsS0FBS1IsUUFBTCxHQUFnQixLQUFLRixRQUZ2QixFQUdFO0FBQ0EsYUFBS0MsZUFBTCxDQUFxQlUsU0FBckI7QUFDQSxhQUFLVixlQUFMLENBQXFCVyxNQUFyQixDQUE0QixJQUFJLEtBQUtWLFFBQUwsR0FBZ0IsS0FBS0YsUUFBckQ7QUFDQSxhQUFLQyxlQUFMLENBQXFCVyxNQUFyQixDQUE0QixLQUFLdkIsS0FBakM7QUFFQWMsUUFBQUEsUUFBUSxDQUFDVSxZQUFULENBQXNCQyxHQUF0QixDQUEwQixLQUFLYixlQUEvQjtBQUNEO0FBQ0Y7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7NkJBQ2tCYyxJLEVBQU07QUFBQSxVQUNaQyxDQURZLEdBQytDRCxJQUQvQyxDQUNaQyxDQURZO0FBQUEsVUFDVEMsQ0FEUyxHQUMrQ0YsSUFEL0MsQ0FDVEUsQ0FEUztBQUFBLFVBQ05DLENBRE0sR0FDK0NILElBRC9DLENBQ05HLENBRE07QUFBQSxVQUNIN0IsS0FERyxHQUMrQzBCLElBRC9DLENBQ0gxQixLQURHO0FBQUEsVUFDSUUsTUFESixHQUMrQ3dCLElBRC9DLENBQ0l4QixNQURKO0FBQUEsVUFDWUUsSUFEWixHQUMrQ3NCLElBRC9DLENBQ1l0QixJQURaO0FBQUEsVUFDa0JFLE1BRGxCLEdBQytDb0IsSUFEL0MsQ0FDa0JwQixNQURsQjtBQUFBLDRCQUMrQ29CLElBRC9DLENBQzBCbEIsU0FEMUI7QUFBQSxVQUMwQkEsU0FEMUIsZ0NBQ3NDLElBRHRDO0FBR3BCLGFBQU8sSUFBSVgsVUFBSixDQUNMLElBQUlFLGNBQUosQ0FBYTRCLENBQWIsRUFBZ0JDLENBQWhCLEVBQW1CQyxDQUFuQixDQURLLEVBRUw3QixLQUZLLEVBR0xFLE1BSEssRUFJTEUsSUFKSyxFQUtMLDJCQUFnQkUsTUFBaEIsQ0FMSyxFQU1MRSxTQU5LLENBQVA7QUFRRDs7O0VBeklxQ3NCLHNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgREVGQVVMVF9BVFRSQUNJVE9OX1JBRElVUyxcbiAgREVGQVVMVF9BVFRSQUNUSU9OX0ZPUkNFX1NDQUxBUixcbiAgREVGQVVMVF9CRUhBVklPVVJfRUFTSU5HLFxuICBERUZBVUxUX0xJRkUsXG4gIFBBUlRJQ0xFX0xFTkdUSF9TUV9USFJFU0hPTEQsXG59IGZyb20gJy4vY29uc3RhbnRzJztcblxuaW1wb3J0IEJlaGF2aW91ciBmcm9tICcuL0JlaGF2aW91cic7XG5pbXBvcnQgeyBWZWN0b3IzRCB9IGZyb20gJy4uL21hdGgnO1xuaW1wb3J0IHsgZ2V0RWFzaW5nQnlOYW1lIH0gZnJvbSAnLi4vZWFzZSc7XG5pbXBvcnQgeyBCRUhBVklPVVJfVFlQRV9BVFRSQUNUSU9OIGFzIHR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBCZWhhdmlvdXIgdGhhdCBjYXVzZXMgcGFydGljbGVzIHRvIGJlIGF0dHJhY3RlZCB0byBhIHRhcmdldCBwb3NpdGlvbi5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF0dHJhY3Rpb24gZXh0ZW5kcyBCZWhhdmlvdXIge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBBdHRyYWN0aW9uIGJlaGF2aW91ciBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtWZWN0b3IzRH0gdGFyZ2V0UG9zaXRpb24gLSBUaGUgcG9zaXRpb24gdGhlIHBhcnRpY2xlcyB3aWxsIGJlIGF0dHJhY3RlZCB0b1xuICAgKiBAcGFyYW0ge251bWJlcn0gZm9yY2UgLSBUaGUgYXR0cmFjdGlvbiBmb3JjZSBzY2FsYXIgbXVsdGlwbGllclxuICAgKiBAcGFyYW0ge251bWJlcn0gcmFkaXVzIC0gVGhlIGF0dHJhY3Rpb24gcmFkaXVzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbGlmZT1ERUZBVUxUX0xJRkVdIC0gVGhlIGxpZmUgb2YgdGhlIHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IFtlYXNpbmc9REVGQVVMVF9CRUhBVklPVVJfRUFTSU5HXSAtIFRoZSBiZWhhdmlvdXIncyBkZWNheWluZyB0cmVuZFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0VuYWJsZWQ9dHJ1ZV0gLSBEZXRlcm1pbmVzIGlmIHRoZSBiZWhhdmlvdXIgd2lsbCBiZSBhcHBsaWVkIG9yIG5vdFxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHRhcmdldFBvc2l0aW9uID0gbmV3IFZlY3RvcjNEKCksXG4gICAgZm9yY2UgPSBERUZBVUxUX0FUVFJBQ1RJT05fRk9SQ0VfU0NBTEFSLFxuICAgIHJhZGl1cyA9IERFRkFVTFRfQVRUUkFDSVRPTl9SQURJVVMsXG4gICAgbGlmZSA9IERFRkFVTFRfTElGRSxcbiAgICBlYXNpbmcgPSBERUZBVUxUX0JFSEFWSU9VUl9FQVNJTkcsXG4gICAgaXNFbmFibGVkID0gdHJ1ZVxuICApIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcsIHR5cGUsIGlzRW5hYmxlZCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcG9zaXRpb24gdGhlIHBhcnRpY2xlcyB3aWxsIGJlIGF0dHJhY3RlZCB0b1xuICAgICAqIEB0eXBlIHtWZWN0b3IzRH1cbiAgICAgKi9cbiAgICB0aGlzLnRhcmdldFBvc2l0aW9uID0gdGFyZ2V0UG9zaXRpb247XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgYXR0cmFjdGlvbiByYWRpdXNcbiAgICAgKiBAdHlwZSB7bnVtYmVyfSAtIHRoZSBhdHRyYWN0aW9uIHJhZGl1c1xuICAgICAqL1xuICAgIHRoaXMucmFkaXVzID0gcmFkaXVzO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGF0dHJhY3Rpb24gZm9yY2Ugc2NhbGFyIG11bHRpcGxpZXJcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMuZm9yY2UgPSB0aGlzLm5vcm1hbGl6ZVZhbHVlKGZvcmNlKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSByYWRpdXMgb2YgdGhlIGF0dHJhY3Rpb24gc3F1YXJlZFxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5yYWRpdXNTcSA9IHRoaXMucmFkaXVzICogdGhpcy5yYWRpdXM7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgYXR0cmFjdGlvbiBmb3JjZSBpbiAzRCBzcGFjZVxuICAgICAqIEB0eXBlIHtWZWN0b3IzRH1cbiAgICAgKi9cbiAgICB0aGlzLmF0dHJhY3Rpb25Gb3JjZSA9IG5ldyBWZWN0b3IzRCgpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGxpbmVhciBhdHRyYWN0aW9uIGZvcmNlXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmxlbmd0aFNxID0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGJlaGF2aW91ciBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge1ZlY3RvcjNEfSB0YXJnZXRQb3NpdGlvbiAtIHRoZSBwb3NpdGlvbiB0aGUgcGFydGljbGVzIHdpbGwgYmUgYXR0cmFjdGVkIHRvXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmb3JjZSAtIHRoZSBhdHRyYWN0aW9uIGZvcmNlIG11bHRpcGxpZXJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHJhZGl1cyAtIHRoZSBhdHRyYWN0aW9uIHJhZGl1c1xuICAgKiBAcGFyYW0ge251bWJlcn0gbGlmZSAtIHRoZSBsaWZlIG9mIHRoZSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBlYXNpbmcgLSBUaGUgYmVoYXZpb3VyJ3MgZGVjYXlpbmcgdHJlbmRcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICByZXNldChcbiAgICB0YXJnZXRQb3NpdGlvbiA9IG5ldyBWZWN0b3IzRCgpLFxuICAgIGZvcmNlID0gREVGQVVMVF9BVFRSQUNUSU9OX0ZPUkNFX1NDQUxBUixcbiAgICByYWRpdXMgPSBERUZBVUxUX0FUVFJBQ0lUT05fUkFESVVTLFxuICAgIGxpZmUsXG4gICAgZWFzaW5nXG4gICkge1xuICAgIHRoaXMudGFyZ2V0UG9zaXRpb24gPSB0YXJnZXRQb3NpdGlvbjtcbiAgICB0aGlzLnJhZGl1cyA9IHJhZGl1cztcbiAgICB0aGlzLmZvcmNlID0gdGhpcy5ub3JtYWxpemVWYWx1ZShmb3JjZSk7XG4gICAgdGhpcy5yYWRpdXNTcSA9IHRoaXMucmFkaXVzICogdGhpcy5yYWRpdXM7XG4gICAgdGhpcy5hdHRyYWN0aW9uRm9yY2UgPSBuZXcgVmVjdG9yM0QoKTtcbiAgICB0aGlzLmxlbmd0aFNxID0gMDtcblxuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNdXRhdGVzIHBhcnRpY2xlIGFjY2VsZXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSB0aGUgcGFydGljbGUgdG8gYXBwbHkgdGhlIGJlaGF2aW91ciB0b1xuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIHBhcnRpY2xlIGVuZ2luZSB0aW1lXG4gICAqIEBwYXJhbSB7aW50ZWdlcn0gaW5kZXggLSB0aGUgcGFydGljbGUgaW5kZXhcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBtdXRhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5lbmVyZ2l6ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuXG4gICAgdGhpcy5hdHRyYWN0aW9uRm9yY2UuY29weSh0aGlzLnRhcmdldFBvc2l0aW9uKTtcbiAgICB0aGlzLmF0dHJhY3Rpb25Gb3JjZS5zdWIocGFydGljbGUucG9zaXRpb24pO1xuXG4gICAgdGhpcy5sZW5ndGhTcSA9IHRoaXMuYXR0cmFjdGlvbkZvcmNlLmxlbmd0aFNxKCk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmxlbmd0aFNxID4gUEFSVElDTEVfTEVOR1RIX1NRX1RIUkVTSE9MRCAmJlxuICAgICAgdGhpcy5sZW5ndGhTcSA8IHRoaXMucmFkaXVzU3FcbiAgICApIHtcbiAgICAgIHRoaXMuYXR0cmFjdGlvbkZvcmNlLm5vcm1hbGl6ZSgpO1xuICAgICAgdGhpcy5hdHRyYWN0aW9uRm9yY2Uuc2NhbGFyKDEgLSB0aGlzLmxlbmd0aFNxIC8gdGhpcy5yYWRpdXNTcSk7XG4gICAgICB0aGlzLmF0dHJhY3Rpb25Gb3JjZS5zY2FsYXIodGhpcy5mb3JjZSk7XG5cbiAgICAgIHBhcnRpY2xlLmFjY2VsZXJhdGlvbi5hZGQodGhpcy5hdHRyYWN0aW9uRm9yY2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgQm9keSBpbml0aWFsaXplciBmcm9tIEpTT04uXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBqc29uIC0gVGhlIEpTT04gdG8gY29uc3RydWN0IHRoZSBpbnN0YW5jZSBmcm9tLlxuICAgKiBAcHJvcGVydHkge251bWJlcn0ganNvbi54IC0gVGhlIHRhcmdldCBwb3NpdGlvbiB4IHZhbHVlXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBqc29uLnkgLSBUaGUgdGFyZ2V0IHBvc2l0aW9uIHkgdmFsdWVcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IGpzb24ueiAtIFRoZSB0YXJnZXQgcG9zaXRpb24geiB2YWx1ZVxuICAgKiBAcHJvcGVydHkge251bWJlcn0ganNvbi5mb3JjZSAtIFRoZSBhdHRyYWN0aW9uIGZvcmNlIHNjYWxhciBtdWx0aXBsaWVyXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBqc29uLmxpZmUgLSBUaGUgbGlmZSBvZiB0aGUgcGFydGljbGVcbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IGpzb24uZWFzaW5nIC0gVGhlIGJlaGF2aW91cidzIGRlY2F5aW5nIHRyZW5kXG4gICAqIEByZXR1cm4ge0JvZHl9XG4gICAqL1xuICBzdGF0aWMgZnJvbUpTT04oanNvbikge1xuICAgIGNvbnN0IHsgeCwgeSwgeiwgZm9yY2UsIHJhZGl1cywgbGlmZSwgZWFzaW5nLCBpc0VuYWJsZWQgPSB0cnVlIH0gPSBqc29uO1xuXG4gICAgcmV0dXJuIG5ldyBBdHRyYWN0aW9uKFxuICAgICAgbmV3IFZlY3RvcjNEKHgsIHksIHopLFxuICAgICAgZm9yY2UsXG4gICAgICByYWRpdXMsXG4gICAgICBsaWZlLFxuICAgICAgZ2V0RWFzaW5nQnlOYW1lKGVhc2luZyksXG4gICAgICBpc0VuYWJsZWRcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -1,253 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
-
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _constants = require("./constants");
15
-
16
- var _types = require("./types");
17
-
18
- var _constants2 = require("../constants");
19
-
20
- var _isNumber = _interopRequireDefault(require("lodash/isNumber"));
21
-
22
- var _utils = require("../utils");
23
-
24
- /**
25
- * The base behaviour class.
26
- * Behaviours manage a particle's behaviour after they have been emitted.
27
- *
28
- */
29
- var Behaviour = /*#__PURE__*/function () {
30
- /**
31
- * Constructs a Behaviour instance.
32
- *
33
- * @param {number} [life=Infinity] - The life of the behaviour
34
- * @param {function} [easing=DEFAULT_BEHAVIOUR_EASING] - The behaviour's decaying trend
35
- * @param {string} [type=BEHAVIOUR_TYPE_ABSTRACT] - The behaviour type
36
- * @param {boolean} [isEnabled=true] - Determines if the behaviour will be applied or not
37
- * @return void
38
- */
39
- function Behaviour() {
40
- var life = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Infinity;
41
- var easing = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.DEFAULT_BEHAVIOUR_EASING;
42
- var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _types.BEHAVIOUR_TYPE_ABSTRACT;
43
- var isEnabled = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
44
- (0, _classCallCheck2["default"])(this, Behaviour);
45
-
46
- /**
47
- * @desc The class type.
48
- * @type {string}
49
- */
50
- this.type = type;
51
- /**
52
- * @desc Determines if the behaviour will be applied or not
53
- * @type {boolean}
54
- */
55
-
56
- this.isEnabled = isEnabled;
57
- /**
58
- * @desc The behaviour's id
59
- * @type {string} id
60
- */
61
-
62
- this.id = "behaviour-".concat((0, _utils.uid)());
63
- /**
64
- * @desc The life of the behaviour
65
- * @type {number}
66
- */
67
-
68
- this.life = life;
69
- /**
70
- * @desc The behaviour's decaying trend
71
- * @type {function}
72
- */
73
-
74
- this.easing = easing;
75
- /**
76
- * @desc The age of the behaviour
77
- * @type {number}
78
- */
79
-
80
- this.age = 0;
81
- /**
82
- * @desc The energy of the behaviour
83
- * @type {number}
84
- */
85
-
86
- this.energy = 1;
87
- /**
88
- * Determines if the behaviour is dead or not
89
- * @type {boolean}
90
- */
91
-
92
- this.dead = false;
93
- }
94
- /**
95
- * Reset this behaviour's parameters
96
- *
97
- * @param {number} [life=DEFAULT_LIFE] - The life of the behaviour
98
- * @param {function} [easing=DEFAULT_BEHAVIOUR_EASING] - The behaviour's decaying trend
99
- */
100
-
101
-
102
- (0, _createClass2["default"])(Behaviour, [{
103
- key: "reset",
104
- value: function reset() {
105
- var life = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _constants.DEFAULT_LIFE;
106
- var easing = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.DEFAULT_BEHAVIOUR_EASING;
107
- this.life = life;
108
- this.easing = easing || _constants.DEFAULT_BEHAVIOUR_EASING;
109
- }
110
- /**
111
- * Ensures that life is infinity if an invalid value is supplied.
112
- *
113
- * @return void
114
- */
115
-
116
- }, {
117
- key: "normalizeForce",
118
-
119
- /**
120
- * Normalize a force by 1:100;
121
- *
122
- * @param {Vector3D} force - The force to normalize.
123
- * @return {Vector3D}
124
- */
125
- value: function normalizeForce(force) {
126
- return force.scalar(_constants2.MEASURE);
127
- }
128
- /**
129
- * Normalize a value by 1:100;
130
- *
131
- * @param {number} value - The value to normalize
132
- * @return {number}
133
- */
134
-
135
- }, {
136
- key: "normalizeValue",
137
- value: function normalizeValue(value) {
138
- return value * _constants2.MEASURE;
139
- }
140
- /**
141
- * Set the behaviour's initial properties on the particle.
142
- *
143
- * @param {Particle} particle
144
- * @abstract
145
- */
146
-
147
- }, {
148
- key: "initialize",
149
- value: function initialize(particle) {} // eslint-disable-line
150
-
151
- /**
152
- * Apply behaviour to the target as a factor of time.
153
- * Internally calls the mutate method to change properties on the target
154
- * Will not do so if the behaviour is disabled
155
- *
156
- * @abstract
157
- * @param {Particle|Emitter} target - The particle or emitter to apply the behaviour to
158
- * @param {Number} time - the system integration time
159
- * @param {integer} index - the target index
160
- * @return mixed
161
- */
162
-
163
- }, {
164
- key: "applyBehaviour",
165
- value: function applyBehaviour(target, time, index) {
166
- if (!this.isEnabled) {
167
- return;
168
- }
169
-
170
- this.mutate(target, time, index);
171
- }
172
- /**
173
- * Change the target's properties according to specific behaviour logic.
174
- *
175
- * @abstract
176
- * @param {Particle|Emitter} target - The particle or emitter to apply the behaviour to
177
- * @param {Number} time - the system integration time
178
- * @return mixed
179
- */
180
-
181
- }, {
182
- key: "mutate",
183
- value: function mutate(target, time, index) {} // eslint-disable-line
184
-
185
- /**
186
- * Compares the age of the behaviour vs integration time and determines
187
- * if the behaviour should be set to dead or not.
188
- * Sets the behaviour energy as a factor of particle age and life.
189
- *
190
- * @param {Particle} particle - The particle to apply the behaviour to
191
- * @param {Number} time - the system integration time
192
- * @return void
193
- */
194
-
195
- }, {
196
- key: "energize",
197
- value: function energize(particle, time) {
198
- if (this.dead) {
199
- return;
200
- }
201
-
202
- this.age += time;
203
-
204
- if (this.age >= this.life) {
205
- this.energy = 0;
206
- this.dead = true;
207
- return;
208
- }
209
-
210
- var scale = this.easing(particle.age / particle.life);
211
- this.energy = Math.max(1 - scale, 0);
212
- }
213
- /**
214
- * Destory this behaviour.
215
- *
216
- * @abstract
217
- */
218
-
219
- }, {
220
- key: "destroy",
221
- value: function destroy() {}
222
- /**
223
- * Returns a new instance of the behaviour from the JSON object passed.
224
- *
225
- * @abstract
226
- * @param {object} json - JSON object containing the required constructor properties
227
- * @return {Behaviour}
228
- */
229
-
230
- }, {
231
- key: "fromJSON",
232
- value: function fromJSON(json) {} // eslint-disable-line
233
-
234
- }, {
235
- key: "life",
236
- set: function set(life) {
237
- this._life = (0, _isNumber["default"])(life) ? life : _constants.DEFAULT_LIFE;
238
- }
239
- /**
240
- * Gets the behaviour's life.
241
- *
242
- * @return {Number}
243
- */
244
- ,
245
- get: function get() {
246
- return this._life;
247
- }
248
- }]);
249
- return Behaviour;
250
- }();
251
-
252
- exports["default"] = Behaviour;
253
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvQmVoYXZpb3VyLmpzIl0sIm5hbWVzIjpbIkJlaGF2aW91ciIsImxpZmUiLCJJbmZpbml0eSIsImVhc2luZyIsIkRFRkFVTFRfQkVIQVZJT1VSX0VBU0lORyIsInR5cGUiLCJCRUhBVklPVVJfVFlQRV9BQlNUUkFDVCIsImlzRW5hYmxlZCIsImlkIiwiYWdlIiwiZW5lcmd5IiwiZGVhZCIsIkRFRkFVTFRfTElGRSIsImZvcmNlIiwic2NhbGFyIiwiTUVBU1VSRSIsInZhbHVlIiwicGFydGljbGUiLCJ0YXJnZXQiLCJ0aW1lIiwiaW5kZXgiLCJtdXRhdGUiLCJzY2FsZSIsIk1hdGgiLCJtYXgiLCJqc29uIiwiX2xpZmUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ3FCQSxTO0FBQ25CO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFLHVCQUtFO0FBQUEsUUFKQUMsSUFJQSx1RUFKT0MsUUFJUDtBQUFBLFFBSEFDLE1BR0EsdUVBSFNDLG1DQUdUO0FBQUEsUUFGQUMsSUFFQSx1RUFGT0MsOEJBRVA7QUFBQSxRQURBQyxTQUNBLHVFQURZLElBQ1o7QUFBQTs7QUFDQTtBQUNKO0FBQ0E7QUFDQTtBQUNJLFNBQUtGLElBQUwsR0FBWUEsSUFBWjtBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtFLFNBQUwsR0FBaUJBLFNBQWpCO0FBRUE7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS0MsRUFBTCx1QkFBdUIsaUJBQXZCO0FBRUE7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS1AsSUFBTCxHQUFZQSxJQUFaO0FBRUE7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS0UsTUFBTCxHQUFjQSxNQUFkO0FBRUE7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS00sR0FBTCxHQUFXLENBQVg7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxTQUFLQyxNQUFMLEdBQWMsQ0FBZDtBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtDLElBQUwsR0FBWSxLQUFaO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OzRCQUNnRTtBQUFBLFVBQXhEVixJQUF3RCx1RUFBakRXLHVCQUFpRDtBQUFBLFVBQW5DVCxNQUFtQyx1RUFBMUJDLG1DQUEwQjtBQUM1RCxXQUFLSCxJQUFMLEdBQVlBLElBQVo7QUFDQSxXQUFLRSxNQUFMLEdBQWNBLE1BQU0sSUFBSUMsbUNBQXhCO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBOzs7OztBQWNFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTttQ0FDaUJTLEssRUFBTztBQUNwQixhQUFPQSxLQUFLLENBQUNDLE1BQU4sQ0FBYUMsbUJBQWIsQ0FBUDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O21DQUNpQkMsSyxFQUFPO0FBQ3BCLGFBQU9BLEtBQUssR0FBR0QsbUJBQWY7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OzsrQkFDYUUsUSxFQUFVLENBQUUsQyxDQUFDOztBQUV4QjtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O21DQUNpQkMsTSxFQUFRQyxJLEVBQU1DLEssRUFBTztBQUNsQyxVQUFJLENBQUMsS0FBS2IsU0FBVixFQUFxQjtBQUNuQjtBQUNEOztBQUVELFdBQUtjLE1BQUwsQ0FBWUgsTUFBWixFQUFvQkMsSUFBcEIsRUFBMEJDLEtBQTFCO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OzJCQUNTRixNLEVBQVFDLEksRUFBTUMsSyxFQUFPLENBQUUsQyxDQUFDOztBQUUvQjtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7NkJBQ1dILFEsRUFBVUUsSSxFQUFNO0FBQ3ZCLFVBQUksS0FBS1IsSUFBVCxFQUFlO0FBQ2I7QUFDRDs7QUFFRCxXQUFLRixHQUFMLElBQVlVLElBQVo7O0FBRUEsVUFBSSxLQUFLVixHQUFMLElBQVksS0FBS1IsSUFBckIsRUFBMkI7QUFDekIsYUFBS1MsTUFBTCxHQUFjLENBQWQ7QUFDQSxhQUFLQyxJQUFMLEdBQVksSUFBWjtBQUVBO0FBQ0Q7O0FBRUQsVUFBTVcsS0FBSyxHQUFHLEtBQUtuQixNQUFMLENBQVljLFFBQVEsQ0FBQ1IsR0FBVCxHQUFlUSxRQUFRLENBQUNoQixJQUFwQyxDQUFkO0FBRUEsV0FBS1MsTUFBTCxHQUFjYSxJQUFJLENBQUNDLEdBQUwsQ0FBUyxJQUFJRixLQUFiLEVBQW9CLENBQXBCLENBQWQ7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7Ozs7OEJBQ1ksQ0FBRTtBQUVaO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OzZCQUNXRyxJLEVBQU0sQ0FBRSxDLENBQUM7Ozs7c0JBaEhUeEIsSSxFQUFNO0FBQ2IsV0FBS3lCLEtBQUwsR0FBYSwwQkFBU3pCLElBQVQsSUFBaUJBLElBQWpCLEdBQXdCVyx1QkFBckM7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7O3dCQUNhO0FBQ1QsYUFBTyxLQUFLYyxLQUFaO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUZBVUxUX0JFSEFWSU9VUl9FQVNJTkcsIERFRkFVTFRfTElGRSB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuaW1wb3J0IHsgQkVIQVZJT1VSX1RZUEVfQUJTVFJBQ1QgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IE1FQVNVUkUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGlzTnVtYmVyIGZyb20gJ2xvZGFzaC9pc051bWJlcic7XG5pbXBvcnQgeyB1aWQgfSBmcm9tICcuLi91dGlscyc7XG5cbi8qKlxuICogVGhlIGJhc2UgYmVoYXZpb3VyIGNsYXNzLlxuICogQmVoYXZpb3VycyBtYW5hZ2UgYSBwYXJ0aWNsZSdzIGJlaGF2aW91ciBhZnRlciB0aGV5IGhhdmUgYmVlbiBlbWl0dGVkLlxuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBCZWhhdmlvdXIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gLSBUaGUgbGlmZSBvZiB0aGUgYmVoYXZpb3VyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IFtlYXNpbmc9REVGQVVMVF9CRUhBVklPVVJfRUFTSU5HXSAtIFRoZSBiZWhhdmlvdXIncyBkZWNheWluZyB0cmVuZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3R5cGU9QkVIQVZJT1VSX1RZUEVfQUJTVFJBQ1RdIC0gVGhlIGJlaGF2aW91ciB0eXBlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRW5hYmxlZD10cnVlXSAtIERldGVybWluZXMgaWYgdGhlIGJlaGF2aW91ciB3aWxsIGJlIGFwcGxpZWQgb3Igbm90XG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgbGlmZSA9IEluZmluaXR5LFxuICAgIGVhc2luZyA9IERFRkFVTFRfQkVIQVZJT1VSX0VBU0lORyxcbiAgICB0eXBlID0gQkVIQVZJT1VSX1RZUEVfQUJTVFJBQ1QsXG4gICAgaXNFbmFibGVkID0gdHJ1ZVxuICApIHtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgY2xhc3MgdHlwZS5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBEZXRlcm1pbmVzIGlmIHRoZSBiZWhhdmlvdXIgd2lsbCBiZSBhcHBsaWVkIG9yIG5vdFxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMuaXNFbmFibGVkID0gaXNFbmFibGVkO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGJlaGF2aW91cidzIGlkXG4gICAgICogQHR5cGUge3N0cmluZ30gaWRcbiAgICAgKi9cbiAgICB0aGlzLmlkID0gYGJlaGF2aW91ci0ke3VpZCgpfWA7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgbGlmZSBvZiB0aGUgYmVoYXZpb3VyXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmxpZmUgPSBsaWZlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGJlaGF2aW91cidzIGRlY2F5aW5nIHRyZW5kXG4gICAgICogQHR5cGUge2Z1bmN0aW9ufVxuICAgICAqL1xuICAgIHRoaXMuZWFzaW5nID0gZWFzaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGFnZSBvZiB0aGUgYmVoYXZpb3VyXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmFnZSA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgZW5lcmd5IG9mIHRoZSBiZWhhdmlvdXJcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMuZW5lcmd5ID0gMTtcblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgaWYgdGhlIGJlaGF2aW91ciBpcyBkZWFkIG9yIG5vdFxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMuZGVhZCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2xpZmU9REVGQVVMVF9MSUZFXSAtIFRoZSBsaWZlIG9mIHRoZSBiZWhhdmlvdXJcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gW2Vhc2luZz1ERUZBVUxUX0JFSEFWSU9VUl9FQVNJTkddIC0gVGhlIGJlaGF2aW91cidzIGRlY2F5aW5nIHRyZW5kXG4gICAqL1xuICByZXNldChsaWZlID0gREVGQVVMVF9MSUZFLCBlYXNpbmcgPSBERUZBVUxUX0JFSEFWSU9VUl9FQVNJTkcpIHtcbiAgICB0aGlzLmxpZmUgPSBsaWZlO1xuICAgIHRoaXMuZWFzaW5nID0gZWFzaW5nIHx8IERFRkFVTFRfQkVIQVZJT1VSX0VBU0lORztcbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIHRoYXQgbGlmZSBpcyBpbmZpbml0eSBpZiBhbiBpbnZhbGlkIHZhbHVlIGlzIHN1cHBsaWVkLlxuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIHNldCBsaWZlKGxpZmUpIHtcbiAgICB0aGlzLl9saWZlID0gaXNOdW1iZXIobGlmZSkgPyBsaWZlIDogREVGQVVMVF9MSUZFO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGJlaGF2aW91cidzIGxpZmUuXG4gICAqXG4gICAqIEByZXR1cm4ge051bWJlcn1cbiAgICovXG4gIGdldCBsaWZlKCkge1xuICAgIHJldHVybiB0aGlzLl9saWZlO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZSBhIGZvcmNlIGJ5IDE6MTAwO1xuICAgKlxuICAgKiBAcGFyYW0ge1ZlY3RvcjNEfSBmb3JjZSAtIFRoZSBmb3JjZSB0byBub3JtYWxpemUuXG4gICAqIEByZXR1cm4ge1ZlY3RvcjNEfVxuICAgKi9cbiAgbm9ybWFsaXplRm9yY2UoZm9yY2UpIHtcbiAgICByZXR1cm4gZm9yY2Uuc2NhbGFyKE1FQVNVUkUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZSBhIHZhbHVlIGJ5IDE6MTAwO1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gbm9ybWFsaXplXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICogTUVBU1VSRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGJlaGF2aW91cidzIGluaXRpYWwgcHJvcGVydGllcyBvbiB0aGUgcGFydGljbGUuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlXG4gICAqIEBhYnN0cmFjdFxuICAgKi9cbiAgaW5pdGlhbGl6ZShwYXJ0aWNsZSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gIC8qKlxuICAgKiBBcHBseSBiZWhhdmlvdXIgdG8gdGhlIHRhcmdldCBhcyBhIGZhY3RvciBvZiB0aW1lLlxuICAgKiBJbnRlcm5hbGx5IGNhbGxzIHRoZSBtdXRhdGUgbWV0aG9kIHRvIGNoYW5nZSBwcm9wZXJ0aWVzIG9uIHRoZSB0YXJnZXRcbiAgICogV2lsbCBub3QgZG8gc28gaWYgdGhlIGJlaGF2aW91ciBpcyBkaXNhYmxlZFxuICAgKlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHBhcmFtIHtQYXJ0aWNsZXxFbWl0dGVyfSB0YXJnZXQgLSBUaGUgcGFydGljbGUgb3IgZW1pdHRlciB0byBhcHBseSB0aGUgYmVoYXZpb3VyIHRvXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB0aW1lIC0gdGhlIHN5c3RlbSBpbnRlZ3JhdGlvbiB0aW1lXG4gICAqIEBwYXJhbSB7aW50ZWdlcn0gaW5kZXggLSB0aGUgdGFyZ2V0IGluZGV4XG4gICAqIEByZXR1cm4gbWl4ZWRcbiAgICovXG4gIGFwcGx5QmVoYXZpb3VyKHRhcmdldCwgdGltZSwgaW5kZXgpIHtcbiAgICBpZiAoIXRoaXMuaXNFbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tdXRhdGUodGFyZ2V0LCB0aW1lLCBpbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSB0YXJnZXQncyBwcm9wZXJ0aWVzIGFjY29yZGluZyB0byBzcGVjaWZpYyBiZWhhdmlvdXIgbG9naWMuXG4gICAqXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfEVtaXR0ZXJ9IHRhcmdldCAtIFRoZSBwYXJ0aWNsZSBvciBlbWl0dGVyIHRvIGFwcGx5IHRoZSBiZWhhdmlvdXIgdG9cbiAgICogQHBhcmFtIHtOdW1iZXJ9IHRpbWUgLSB0aGUgc3lzdGVtIGludGVncmF0aW9uIHRpbWVcbiAgICogQHJldHVybiBtaXhlZFxuICAgKi9cbiAgbXV0YXRlKHRhcmdldCwgdGltZSwgaW5kZXgpIHt9IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICAvKipcbiAgICogQ29tcGFyZXMgdGhlIGFnZSBvZiB0aGUgYmVoYXZpb3VyIHZzIGludGVncmF0aW9uIHRpbWUgYW5kIGRldGVybWluZXNcbiAgICogaWYgdGhlIGJlaGF2aW91ciBzaG91bGQgYmUgc2V0IHRvIGRlYWQgb3Igbm90LlxuICAgKiBTZXRzIHRoZSBiZWhhdmlvdXIgZW5lcmd5IGFzIGEgZmFjdG9yIG9mIHBhcnRpY2xlIGFnZSBhbmQgbGlmZS5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gYXBwbHkgdGhlIGJlaGF2aW91ciB0b1xuICAgKiBAcGFyYW0ge051bWJlcn0gdGltZSAtIHRoZSBzeXN0ZW0gaW50ZWdyYXRpb24gdGltZVxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGVuZXJnaXplKHBhcnRpY2xlLCB0aW1lKSB7XG4gICAgaWYgKHRoaXMuZGVhZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWdlICs9IHRpbWU7XG5cbiAgICBpZiAodGhpcy5hZ2UgPj0gdGhpcy5saWZlKSB7XG4gICAgICB0aGlzLmVuZXJneSA9IDA7XG4gICAgICB0aGlzLmRlYWQgPSB0cnVlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2NhbGUgPSB0aGlzLmVhc2luZyhwYXJ0aWNsZS5hZ2UgLyBwYXJ0aWNsZS5saWZlKTtcblxuICAgIHRoaXMuZW5lcmd5ID0gTWF0aC5tYXgoMSAtIHNjYWxlLCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0b3J5IHRoaXMgYmVoYXZpb3VyLlxuICAgKlxuICAgKiBAYWJzdHJhY3RcbiAgICovXG4gIGRlc3Ryb3koKSB7fVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBiZWhhdmlvdXIgZnJvbSB0aGUgSlNPTiBvYmplY3QgcGFzc2VkLlxuICAgKlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHBhcmFtIHtvYmplY3R9IGpzb24gLSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSByZXF1aXJlZCBjb25zdHJ1Y3RvciBwcm9wZXJ0aWVzXG4gICAqIEByZXR1cm4ge0JlaGF2aW91cn1cbiAgICovXG4gIGZyb21KU09OKGpzb24pIHt9IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbn1cbiJdfQ==