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,78 +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 _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
-
16
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
-
18
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
-
20
- var _Force2 = _interopRequireDefault(require("./Force"));
21
-
22
- var _ease = require("../ease");
23
-
24
- var _types = require("./types");
25
-
26
- 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); }; }
27
-
28
- 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; } }
29
-
30
- /**
31
- * Behaviour that forces particles down the y axis.
32
- *
33
- */
34
- var Gravity = /*#__PURE__*/function (_Force) {
35
- (0, _inherits2["default"])(Gravity, _Force);
36
-
37
- var _super = _createSuper(Gravity);
38
-
39
- /**
40
- * Constructs a Gravity behaviour instance.
41
- *
42
- * @param {number} gravity - the force to pull the particle down the y axis
43
- * @param {number} life - the life of the particle
44
- * @param {string} easing - the easing equation to use
45
- * @param {boolean} [isEnabled=true] - Determines if the behaviour will be applied or not
46
- * @return void
47
- */
48
- function Gravity(gravity, life, easing) {
49
- var _this;
50
-
51
- var isEnabled = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
52
- (0, _classCallCheck2["default"])(this, Gravity);
53
- _this = _super.call(this, 0, -gravity, 0, life, easing, isEnabled);
54
- /**
55
- * @desc The class type.
56
- * @type {string}
57
- */
58
-
59
- _this.type = _types.BEHAVIOUR_TYPE_GRAVITY;
60
- return _this;
61
- }
62
-
63
- (0, _createClass2["default"])(Gravity, null, [{
64
- key: "fromJSON",
65
- value: function fromJSON(json) {
66
- var gravity = json.gravity,
67
- life = json.life,
68
- easing = json.easing,
69
- _json$isEnabled = json.isEnabled,
70
- isEnabled = _json$isEnabled === void 0 ? true : _json$isEnabled;
71
- return new Gravity(gravity, life, (0, _ease.getEasingByName)(easing), isEnabled);
72
- }
73
- }]);
74
- return Gravity;
75
- }(_Force2["default"]);
76
-
77
- exports["default"] = Gravity;
78
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvR3Jhdml0eS5qcyJdLCJuYW1lcyI6WyJHcmF2aXR5IiwiZ3Jhdml0eSIsImxpZmUiLCJlYXNpbmciLCJpc0VuYWJsZWQiLCJ0eXBlIiwianNvbiIsIkZvcmNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0lBQ3FCQSxPOzs7OztBQUNuQjtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDRSxtQkFBWUMsT0FBWixFQUFxQkMsSUFBckIsRUFBMkJDLE1BQTNCLEVBQXFEO0FBQUE7O0FBQUEsUUFBbEJDLFNBQWtCLHVFQUFOLElBQU07QUFBQTtBQUNuRCw4QkFBTSxDQUFOLEVBQVMsQ0FBQ0gsT0FBVixFQUFtQixDQUFuQixFQUFzQkMsSUFBdEIsRUFBNEJDLE1BQTVCLEVBQW9DQyxTQUFwQztBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFVBQUtDLElBQUwsR0FBWUEsNkJBQVo7QUFQbUQ7QUFRcEQ7Ozs7NkJBRWVDLEksRUFBTTtBQUFBLFVBQ1pMLE9BRFksR0FDZ0NLLElBRGhDLENBQ1pMLE9BRFk7QUFBQSxVQUNIQyxJQURHLEdBQ2dDSSxJQURoQyxDQUNISixJQURHO0FBQUEsVUFDR0MsTUFESCxHQUNnQ0csSUFEaEMsQ0FDR0gsTUFESDtBQUFBLDRCQUNnQ0csSUFEaEMsQ0FDV0YsU0FEWDtBQUFBLFVBQ1dBLFNBRFgsZ0NBQ3VCLElBRHZCO0FBR3BCLGFBQU8sSUFBSUosT0FBSixDQUFZQyxPQUFaLEVBQXFCQyxJQUFyQixFQUEyQiwyQkFBZ0JDLE1BQWhCLENBQTNCLEVBQW9EQyxTQUFwRCxDQUFQO0FBQ0Q7OztFQXhCa0NHLGtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEZvcmNlIGZyb20gJy4vRm9yY2UnO1xuaW1wb3J0IHsgZ2V0RWFzaW5nQnlOYW1lIH0gZnJvbSAnLi4vZWFzZSc7XG5pbXBvcnQgeyBCRUhBVklPVVJfVFlQRV9HUkFWSVRZIGFzIHR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBCZWhhdmlvdXIgdGhhdCBmb3JjZXMgcGFydGljbGVzIGRvd24gdGhlIHkgYXhpcy5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdyYXZpdHkgZXh0ZW5kcyBGb3JjZSB7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgR3Jhdml0eSBiZWhhdmlvdXIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBncmF2aXR5IC0gdGhlIGZvcmNlIHRvIHB1bGwgdGhlIHBhcnRpY2xlIGRvd24gdGhlIHkgYXhpc1xuICAgKiBAcGFyYW0ge251bWJlcn0gbGlmZSAtIHRoZSBsaWZlIG9mIHRoZSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZWFzaW5nIC0gdGhlIGVhc2luZyBlcXVhdGlvbiB0byB1c2VcbiAgICogQHBhcmFtIHtib29sZWFufSBbaXNFbmFibGVkPXRydWVdIC0gRGV0ZXJtaW5lcyBpZiB0aGUgYmVoYXZpb3VyIHdpbGwgYmUgYXBwbGllZCBvciBub3RcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3RvcihncmF2aXR5LCBsaWZlLCBlYXNpbmcsIGlzRW5hYmxlZCA9IHRydWUpIHtcbiAgICBzdXBlcigwLCAtZ3Jhdml0eSwgMCwgbGlmZSwgZWFzaW5nLCBpc0VuYWJsZWQpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGNsYXNzIHR5cGUuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24pIHtcbiAgICBjb25zdCB7IGdyYXZpdHksIGxpZmUsIGVhc2luZywgaXNFbmFibGVkID0gdHJ1ZSB9ID0ganNvbjtcblxuICAgIHJldHVybiBuZXcgR3Jhdml0eShncmF2aXR5LCBsaWZlLCBnZXRFYXNpbmdCeU5hbWUoZWFzaW5nKSwgaXNFbmFibGVkKTtcbiAgfVxufVxuIl19
@@ -1,153 +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 causes particles to drift to random coordinates in 3D space.
38
- *
39
- */
40
- var RandomDrift = /*#__PURE__*/function (_Behaviour) {
41
- (0, _inherits2["default"])(RandomDrift, _Behaviour);
42
-
43
- var _super = _createSuper(RandomDrift);
44
-
45
- /**
46
- * Constructs a RandomDrift behaviour instance.
47
- *
48
- * @param {number} driftX - x axis drift
49
- * @param {number} driftY - y axis drift
50
- * @param {number} driftZ - z axis drift
51
- * @param {number} [delay=DEFAULT_RANDOM_DRIFT_DELAY] - drift delay
52
- * @param {number} life - The life of the particle
53
- * @param {function} easing - The behaviour's decaying trend
54
- * @return void
55
- */
56
- function RandomDrift(driftX, driftY, driftZ) {
57
- var _this;
58
-
59
- var delay = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _constants.DEFAULT_RANDOM_DRIFT_DELAY;
60
- var life = arguments.length > 4 ? arguments[4] : undefined;
61
- var easing = arguments.length > 5 ? arguments[5] : undefined;
62
- var isEnabled = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : true;
63
- (0, _classCallCheck2["default"])(this, RandomDrift);
64
- _this = _super.call(this, life, easing, _types.BEHAVIOUR_TYPE_RANDOM_DRIFT, isEnabled);
65
-
66
- _this.reset(driftX, driftY, driftZ, delay);
67
- /**
68
- * @desc Internal time used for calculating drift vs internal delay.
69
- * @type {number}
70
- */
71
-
72
-
73
- _this.time = 0;
74
- return _this;
75
- }
76
- /**
77
- * Resets the behaviour properties.
78
- *
79
- * @param {number} driftX - x axis drift
80
- * @param {number} driftY - y axis drift
81
- * @param {number} driftZ - z axis drift
82
- * @param {number} [delay=DEFAULT_RANDOM_DRIFT_DELAY] - drift delay
83
- * @param {number} life - The life of the particle
84
- * @param {function} easing - The behaviour's decaying trend
85
- */
86
-
87
-
88
- (0, _createClass2["default"])(RandomDrift, [{
89
- key: "reset",
90
- value: function reset(driftX, driftY, driftZ) {
91
- var delay = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _constants.DEFAULT_RANDOM_DRIFT_DELAY;
92
- var life = arguments.length > 4 ? arguments[4] : undefined;
93
- var easing = arguments.length > 5 ? arguments[5] : undefined;
94
-
95
- /**
96
- * @desc A Vector3D that stores the drift properties.
97
- * @type {Vector3D}
98
- */
99
- this.randomForce = this.normalizeForce(new _math.Vector3D(driftX, driftY, driftZ));
100
- /**
101
- * @desc A Span containing the delay supplied.
102
- * @type {Span}
103
- */
104
-
105
- this.delayPan = (0, _math.createSpan)(delay);
106
- this.time = 0;
107
- life && (0, _get2["default"])((0, _getPrototypeOf2["default"])(RandomDrift.prototype), "reset", this).call(this, life, easing);
108
- }
109
- /**
110
- * Mutates the particle.acceleration property.
111
- *
112
- * @param {object} particle - the particle to apply the behaviour to
113
- * @param {number} time - engine time
114
- * @param {integer} index - the particle index
115
- * @return void
116
- */
117
-
118
- }, {
119
- key: "mutate",
120
- value: function mutate(particle, time, index) {
121
- this.energize(particle, time, index);
122
- this.time += time;
123
-
124
- if (this.time >= this.delayPan.getValue()) {
125
- var ax = _math.MathUtils.randomAToB(-this.randomForce.x, this.randomForce.x);
126
-
127
- var ay = _math.MathUtils.randomAToB(-this.randomForce.y, this.randomForce.y);
128
-
129
- var az = _math.MathUtils.randomAToB(-this.randomForce.z, this.randomForce.z);
130
-
131
- particle.acceleration.addValue(ax, ay, az);
132
- this.time = 0;
133
- }
134
- }
135
- }], [{
136
- key: "fromJSON",
137
- value: function fromJSON(json) {
138
- var x = json.x,
139
- y = json.y,
140
- z = json.z,
141
- delay = json.delay,
142
- life = json.life,
143
- easing = json.easing,
144
- _json$isEnabled = json.isEnabled,
145
- isEnabled = _json$isEnabled === void 0 ? true : _json$isEnabled;
146
- return new RandomDrift(x, y, z, delay, life, (0, _ease.getEasingByName)(easing), isEnabled);
147
- }
148
- }]);
149
- return RandomDrift;
150
- }(_Behaviour2["default"]);
151
-
152
- exports["default"] = RandomDrift;
153
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvUmFuZG9tRHJpZnQuanMiXSwibmFtZXMiOlsiUmFuZG9tRHJpZnQiLCJkcmlmdFgiLCJkcmlmdFkiLCJkcmlmdFoiLCJkZWxheSIsIkRFRkFVTFRfUkFORE9NX0RSSUZUX0RFTEFZIiwibGlmZSIsImVhc2luZyIsImlzRW5hYmxlZCIsInR5cGUiLCJyZXNldCIsInRpbWUiLCJyYW5kb21Gb3JjZSIsIm5vcm1hbGl6ZUZvcmNlIiwiVmVjdG9yM0QiLCJkZWxheVBhbiIsInBhcnRpY2xlIiwiaW5kZXgiLCJlbmVyZ2l6ZSIsImdldFZhbHVlIiwiYXgiLCJNYXRoVXRpbHMiLCJyYW5kb21BVG9CIiwieCIsImF5IiwieSIsImF6IiwieiIsImFjY2VsZXJhdGlvbiIsImFkZFZhbHVlIiwianNvbiIsIkJlaGF2aW91ciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0lBQ3FCQSxXOzs7OztBQUNuQjtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0UsdUJBQ0VDLE1BREYsRUFFRUMsTUFGRixFQUdFQyxNQUhGLEVBUUU7QUFBQTs7QUFBQSxRQUpBQyxLQUlBLHVFQUpRQyxxQ0FJUjtBQUFBLFFBSEFDLElBR0E7QUFBQSxRQUZBQyxNQUVBO0FBQUEsUUFEQUMsU0FDQSx1RUFEWSxJQUNaO0FBQUE7QUFDQSw4QkFBTUYsSUFBTixFQUFZQyxNQUFaLEVBQW9CRSxrQ0FBcEIsRUFBMEJELFNBQTFCOztBQUVBLFVBQUtFLEtBQUwsQ0FBV1QsTUFBWCxFQUFtQkMsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxLQUFuQztBQUVBO0FBQ0o7QUFDQTtBQUNBOzs7QUFDSSxVQUFLTyxJQUFMLEdBQVksQ0FBWjtBQVRBO0FBVUQ7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7MEJBRUlWLE0sRUFDQUMsTSxFQUNBQyxNLEVBSUE7QUFBQSxVQUhBQyxLQUdBLHVFQUhRQyxxQ0FHUjtBQUFBLFVBRkFDLElBRUE7QUFBQSxVQURBQyxNQUNBOztBQUNBO0FBQ0o7QUFDQTtBQUNBO0FBQ0ksV0FBS0ssV0FBTCxHQUFtQixLQUFLQyxjQUFMLENBQ2pCLElBQUlDLGNBQUosQ0FBYWIsTUFBYixFQUFxQkMsTUFBckIsRUFBNkJDLE1BQTdCLENBRGlCLENBQW5CO0FBR0E7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksV0FBS1ksUUFBTCxHQUFnQixzQkFBV1gsS0FBWCxDQUFoQjtBQUNBLFdBQUtPLElBQUwsR0FBWSxDQUFaO0FBRUFMLE1BQUFBLElBQUksNkdBQWdCQSxJQUFoQixFQUFzQkMsTUFBdEIsQ0FBSjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OzsyQkFDU1MsUSxFQUFVTCxJLEVBQU1NLEssRUFBTztBQUM1QixXQUFLQyxRQUFMLENBQWNGLFFBQWQsRUFBd0JMLElBQXhCLEVBQThCTSxLQUE5QjtBQUVBLFdBQUtOLElBQUwsSUFBYUEsSUFBYjs7QUFFQSxVQUFJLEtBQUtBLElBQUwsSUFBYSxLQUFLSSxRQUFMLENBQWNJLFFBQWQsRUFBakIsRUFBMkM7QUFDekMsWUFBTUMsRUFBRSxHQUFHQyxnQkFBVUMsVUFBVixDQUFxQixDQUFDLEtBQUtWLFdBQUwsQ0FBaUJXLENBQXZDLEVBQTBDLEtBQUtYLFdBQUwsQ0FBaUJXLENBQTNELENBQVg7O0FBQ0EsWUFBTUMsRUFBRSxHQUFHSCxnQkFBVUMsVUFBVixDQUFxQixDQUFDLEtBQUtWLFdBQUwsQ0FBaUJhLENBQXZDLEVBQTBDLEtBQUtiLFdBQUwsQ0FBaUJhLENBQTNELENBQVg7O0FBQ0EsWUFBTUMsRUFBRSxHQUFHTCxnQkFBVUMsVUFBVixDQUFxQixDQUFDLEtBQUtWLFdBQUwsQ0FBaUJlLENBQXZDLEVBQTBDLEtBQUtmLFdBQUwsQ0FBaUJlLENBQTNELENBQVg7O0FBRUFYLFFBQUFBLFFBQVEsQ0FBQ1ksWUFBVCxDQUFzQkMsUUFBdEIsQ0FBK0JULEVBQS9CLEVBQW1DSSxFQUFuQyxFQUF1Q0UsRUFBdkM7QUFFQSxhQUFLZixJQUFMLEdBQVksQ0FBWjtBQUNEO0FBQ0Y7Ozs2QkFFZW1CLEksRUFBTTtBQUFBLFVBQ1pQLENBRFksR0FDdUNPLElBRHZDLENBQ1pQLENBRFk7QUFBQSxVQUNURSxDQURTLEdBQ3VDSyxJQUR2QyxDQUNUTCxDQURTO0FBQUEsVUFDTkUsQ0FETSxHQUN1Q0csSUFEdkMsQ0FDTkgsQ0FETTtBQUFBLFVBQ0h2QixLQURHLEdBQ3VDMEIsSUFEdkMsQ0FDSDFCLEtBREc7QUFBQSxVQUNJRSxJQURKLEdBQ3VDd0IsSUFEdkMsQ0FDSXhCLElBREo7QUFBQSxVQUNVQyxNQURWLEdBQ3VDdUIsSUFEdkMsQ0FDVXZCLE1BRFY7QUFBQSw0QkFDdUN1QixJQUR2QyxDQUNrQnRCLFNBRGxCO0FBQUEsVUFDa0JBLFNBRGxCLGdDQUM4QixJQUQ5QjtBQUdwQixhQUFPLElBQUlSLFdBQUosQ0FDTHVCLENBREssRUFFTEUsQ0FGSyxFQUdMRSxDQUhLLEVBSUx2QixLQUpLLEVBS0xFLElBTEssRUFNTCwyQkFBZ0JDLE1BQWhCLENBTkssRUFPTEMsU0FQSyxDQUFQO0FBU0Q7OztFQXZHc0N1QixzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hdGhVdGlscywgVmVjdG9yM0QsIGNyZWF0ZVNwYW4gfSBmcm9tICcuLi9tYXRoJztcblxuaW1wb3J0IEJlaGF2aW91ciBmcm9tICcuL0JlaGF2aW91cic7XG5pbXBvcnQgeyBERUZBVUxUX1JBTkRPTV9EUklGVF9ERUxBWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldEVhc2luZ0J5TmFtZSB9IGZyb20gJy4uL2Vhc2UnO1xuaW1wb3J0IHsgQkVIQVZJT1VSX1RZUEVfUkFORE9NX0RSSUZUIGFzIHR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBCZWhhdmlvdXIgdGhhdCBjYXVzZXMgcGFydGljbGVzIHRvIGRyaWZ0IHRvIHJhbmRvbSBjb29yZGluYXRlcyBpbiAzRCBzcGFjZS5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJhbmRvbURyaWZ0IGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBSYW5kb21EcmlmdCBiZWhhdmlvdXIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkcmlmdFggLSB4IGF4aXMgZHJpZnRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGRyaWZ0WSAtIHkgYXhpcyBkcmlmdFxuICAgKiBAcGFyYW0ge251bWJlcn0gZHJpZnRaIC0geiBheGlzIGRyaWZ0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZGVsYXk9REVGQVVMVF9SQU5ET01fRFJJRlRfREVMQVldIC0gZHJpZnQgZGVsYXlcbiAgICogQHBhcmFtIHtudW1iZXJ9IGxpZmUgLSBUaGUgbGlmZSBvZiB0aGUgcGFydGljbGVcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZWFzaW5nIC0gVGhlIGJlaGF2aW91cidzIGRlY2F5aW5nIHRyZW5kXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgZHJpZnRYLFxuICAgIGRyaWZ0WSxcbiAgICBkcmlmdFosXG4gICAgZGVsYXkgPSBERUZBVUxUX1JBTkRPTV9EUklGVF9ERUxBWSxcbiAgICBsaWZlLFxuICAgIGVhc2luZyxcbiAgICBpc0VuYWJsZWQgPSB0cnVlXG4gICkge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZywgdHlwZSwgaXNFbmFibGVkKTtcblxuICAgIHRoaXMucmVzZXQoZHJpZnRYLCBkcmlmdFksIGRyaWZ0WiwgZGVsYXkpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgSW50ZXJuYWwgdGltZSB1c2VkIGZvciBjYWxjdWxhdGluZyBkcmlmdCB2cyBpbnRlcm5hbCBkZWxheS5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMudGltZSA9IDA7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBiZWhhdmlvdXIgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGRyaWZ0WCAtIHggYXhpcyBkcmlmdFxuICAgKiBAcGFyYW0ge251bWJlcn0gZHJpZnRZIC0geSBheGlzIGRyaWZ0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkcmlmdFogLSB6IGF4aXMgZHJpZnRcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtkZWxheT1ERUZBVUxUX1JBTkRPTV9EUklGVF9ERUxBWV0gLSBkcmlmdCBkZWxheVxuICAgKiBAcGFyYW0ge251bWJlcn0gbGlmZSAtIFRoZSBsaWZlIG9mIHRoZSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBlYXNpbmcgLSBUaGUgYmVoYXZpb3VyJ3MgZGVjYXlpbmcgdHJlbmRcbiAgICovXG4gIHJlc2V0KFxuICAgIGRyaWZ0WCxcbiAgICBkcmlmdFksXG4gICAgZHJpZnRaLFxuICAgIGRlbGF5ID0gREVGQVVMVF9SQU5ET01fRFJJRlRfREVMQVksXG4gICAgbGlmZSxcbiAgICBlYXNpbmdcbiAgKSB7XG4gICAgLyoqXG4gICAgICogQGRlc2MgQSBWZWN0b3IzRCB0aGF0IHN0b3JlcyB0aGUgZHJpZnQgcHJvcGVydGllcy5cbiAgICAgKiBAdHlwZSB7VmVjdG9yM0R9XG4gICAgICovXG4gICAgdGhpcy5yYW5kb21Gb3JjZSA9IHRoaXMubm9ybWFsaXplRm9yY2UoXG4gICAgICBuZXcgVmVjdG9yM0QoZHJpZnRYLCBkcmlmdFksIGRyaWZ0WilcbiAgICApO1xuICAgIC8qKlxuICAgICAqIEBkZXNjIEEgU3BhbiBjb250YWluaW5nIHRoZSBkZWxheSBzdXBwbGllZC5cbiAgICAgKiBAdHlwZSB7U3Bhbn1cbiAgICAgKi9cbiAgICB0aGlzLmRlbGF5UGFuID0gY3JlYXRlU3BhbihkZWxheSk7XG4gICAgdGhpcy50aW1lID0gMDtcblxuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNdXRhdGVzIHRoZSBwYXJ0aWNsZS5hY2NlbGVyYXRpb24gcHJvcGVydHkuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWNsZSAtIHRoZSBwYXJ0aWNsZSB0byBhcHBseSB0aGUgYmVoYXZpb3VyIHRvXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gZW5naW5lIHRpbWVcbiAgICogQHBhcmFtIHtpbnRlZ2VyfSBpbmRleCAtIHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIG11dGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmVuZXJnaXplKHBhcnRpY2xlLCB0aW1lLCBpbmRleCk7XG5cbiAgICB0aGlzLnRpbWUgKz0gdGltZTtcblxuICAgIGlmICh0aGlzLnRpbWUgPj0gdGhpcy5kZWxheVBhbi5nZXRWYWx1ZSgpKSB7XG4gICAgICBjb25zdCBheCA9IE1hdGhVdGlscy5yYW5kb21BVG9CKC10aGlzLnJhbmRvbUZvcmNlLngsIHRoaXMucmFuZG9tRm9yY2UueCk7XG4gICAgICBjb25zdCBheSA9IE1hdGhVdGlscy5yYW5kb21BVG9CKC10aGlzLnJhbmRvbUZvcmNlLnksIHRoaXMucmFuZG9tRm9yY2UueSk7XG4gICAgICBjb25zdCBheiA9IE1hdGhVdGlscy5yYW5kb21BVG9CKC10aGlzLnJhbmRvbUZvcmNlLnosIHRoaXMucmFuZG9tRm9yY2Uueik7XG5cbiAgICAgIHBhcnRpY2xlLmFjY2VsZXJhdGlvbi5hZGRWYWx1ZShheCwgYXksIGF6KTtcblxuICAgICAgdGhpcy50aW1lID0gMDtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbikge1xuICAgIGNvbnN0IHsgeCwgeSwgeiwgZGVsYXksIGxpZmUsIGVhc2luZywgaXNFbmFibGVkID0gdHJ1ZSB9ID0ganNvbjtcblxuICAgIHJldHVybiBuZXcgUmFuZG9tRHJpZnQoXG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIHosXG4gICAgICBkZWxheSxcbiAgICAgIGxpZmUsXG4gICAgICBnZXRFYXNpbmdCeU5hbWUoZWFzaW5nKSxcbiAgICAgIGlzRW5hYmxlZFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,123 +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 _Attraction2 = _interopRequireDefault(require("./Attraction"));
23
-
24
- var _math = require("../math");
25
-
26
- var _ease = require("../ease");
27
-
28
- var _types = require("./types");
29
-
30
- 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); }; }
31
-
32
- 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; } }
33
-
34
- /**
35
- * Behaviour that causes particles to be repelled from a target position.
36
- *
37
- */
38
- var Repulsion = /*#__PURE__*/function (_Attraction) {
39
- (0, _inherits2["default"])(Repulsion, _Attraction);
40
-
41
- var _super = _createSuper(Repulsion);
42
-
43
- /**
44
- * Constructs an Repulsion behaviour instance.
45
- *
46
- * @param {Vector3D} targetPosition - The position the particles will be repelled from
47
- * @param {number} force - The repulsion force scalar multiplier
48
- * @param {number} radius - The repulsion radius
49
- * @param {number} life - The life of the particle
50
- * @param {function} easing - The behaviour's decaying trend
51
- * @return void
52
- */
53
- function Repulsion(targetPosition, force, radius, life, easing) {
54
- var _this;
55
-
56
- var isEnabled = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;
57
- (0, _classCallCheck2["default"])(this, Repulsion);
58
- _this = _super.call(this, targetPosition, force, radius, life, easing, isEnabled);
59
- /**
60
- * @desc Repulsion is attraction with negative force.
61
- * @type {number}
62
- */
63
-
64
- _this.force *= -1;
65
- /**
66
- * @desc The class type.
67
- * @type {string}
68
- */
69
-
70
- _this.type = _types.BEHAVIOUR_TYPE_REPULSION;
71
- return _this;
72
- }
73
- /**
74
- * Resets the behaviour properties.
75
- *
76
- * @param {Vector3D} targetPosition - the position the particles will be attracted to
77
- * @param {number} force - the attraction force multiplier
78
- * @param {number} radius - the attraction radius
79
- * @param {number} life - the life of the particle
80
- * @param {function} easing - The behaviour's decaying trend
81
- * @return void
82
- */
83
-
84
-
85
- (0, _createClass2["default"])(Repulsion, [{
86
- key: "reset",
87
- value: function reset(targetPosition, force, radius, life, easing) {
88
- (0, _get2["default"])((0, _getPrototypeOf2["default"])(Repulsion.prototype), "reset", this).call(this, targetPosition, force, radius, life, easing);
89
- this.force *= -1;
90
- }
91
- /**
92
- * Creates a Body initializer from JSON.
93
- *
94
- * @param {object} json - The JSON to construct the instance from.
95
- * @property {number} json.x - The target position x value
96
- * @property {number} json.y - The target position y value
97
- * @property {number} json.z - The target position z value
98
- * @property {number} json.force - The attraction force scalar multiplier
99
- * @property {number} json.life - The life of the particle
100
- * @property {string} json.easing - The behaviour's decaying trend
101
- * @return {Body}
102
- */
103
-
104
- }], [{
105
- key: "fromJSON",
106
- value: function fromJSON(json) {
107
- var x = json.x,
108
- y = json.y,
109
- z = json.z,
110
- force = json.force,
111
- radius = json.radius,
112
- life = json.life,
113
- easing = json.easing,
114
- _json$isEnabled = json.isEnabled,
115
- isEnabled = _json$isEnabled === void 0 ? true : _json$isEnabled;
116
- return new Repulsion(new _math.Vector3D(x, y, z), force, radius, life, (0, _ease.getEasingByName)(easing), isEnabled);
117
- }
118
- }]);
119
- return Repulsion;
120
- }(_Attraction2["default"]);
121
-
122
- exports["default"] = Repulsion;
123
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvUmVwdWxzaW9uLmpzIl0sIm5hbWVzIjpbIlJlcHVsc2lvbiIsInRhcmdldFBvc2l0aW9uIiwiZm9yY2UiLCJyYWRpdXMiLCJsaWZlIiwiZWFzaW5nIiwiaXNFbmFibGVkIiwidHlwZSIsImpzb24iLCJ4IiwieSIsInoiLCJWZWN0b3IzRCIsIkF0dHJhY3Rpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNxQkEsUzs7Ozs7QUFDbkI7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDRSxxQkFBWUMsY0FBWixFQUE0QkMsS0FBNUIsRUFBbUNDLE1BQW5DLEVBQTJDQyxJQUEzQyxFQUFpREMsTUFBakQsRUFBMkU7QUFBQTs7QUFBQSxRQUFsQkMsU0FBa0IsdUVBQU4sSUFBTTtBQUFBO0FBQ3pFLDhCQUFNTCxjQUFOLEVBQXNCQyxLQUF0QixFQUE2QkMsTUFBN0IsRUFBcUNDLElBQXJDLEVBQTJDQyxNQUEzQyxFQUFtREMsU0FBbkQ7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxVQUFLSixLQUFMLElBQWMsQ0FBQyxDQUFmO0FBRUE7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksVUFBS0ssSUFBTCxHQUFZQSwrQkFBWjtBQWJ5RTtBQWMxRTtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OzswQkFDUU4sYyxFQUFnQkMsSyxFQUFPQyxNLEVBQVFDLEksRUFBTUMsTSxFQUFRO0FBQ2pELDZHQUFZSixjQUFaLEVBQTRCQyxLQUE1QixFQUFtQ0MsTUFBbkMsRUFBMkNDLElBQTNDLEVBQWlEQyxNQUFqRDtBQUNBLFdBQUtILEtBQUwsSUFBYyxDQUFDLENBQWY7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs2QkFDa0JNLEksRUFBTTtBQUFBLFVBQ1pDLENBRFksR0FDK0NELElBRC9DLENBQ1pDLENBRFk7QUFBQSxVQUNUQyxDQURTLEdBQytDRixJQUQvQyxDQUNURSxDQURTO0FBQUEsVUFDTkMsQ0FETSxHQUMrQ0gsSUFEL0MsQ0FDTkcsQ0FETTtBQUFBLFVBQ0hULEtBREcsR0FDK0NNLElBRC9DLENBQ0hOLEtBREc7QUFBQSxVQUNJQyxNQURKLEdBQytDSyxJQUQvQyxDQUNJTCxNQURKO0FBQUEsVUFDWUMsSUFEWixHQUMrQ0ksSUFEL0MsQ0FDWUosSUFEWjtBQUFBLFVBQ2tCQyxNQURsQixHQUMrQ0csSUFEL0MsQ0FDa0JILE1BRGxCO0FBQUEsNEJBQytDRyxJQUQvQyxDQUMwQkYsU0FEMUI7QUFBQSxVQUMwQkEsU0FEMUIsZ0NBQ3NDLElBRHRDO0FBR3BCLGFBQU8sSUFBSU4sU0FBSixDQUNMLElBQUlZLGNBQUosQ0FBYUgsQ0FBYixFQUFnQkMsQ0FBaEIsRUFBbUJDLENBQW5CLENBREssRUFFTFQsS0FGSyxFQUdMQyxNQUhLLEVBSUxDLElBSkssRUFLTCwyQkFBZ0JDLE1BQWhCLENBTEssRUFNTEMsU0FOSyxDQUFQO0FBUUQ7OztFQWpFb0NPLHVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEF0dHJhY3Rpb24gZnJvbSAnLi9BdHRyYWN0aW9uJztcbmltcG9ydCB7IFZlY3RvcjNEIH0gZnJvbSAnLi4vbWF0aCc7XG5pbXBvcnQgeyBnZXRFYXNpbmdCeU5hbWUgfSBmcm9tICcuLi9lYXNlJztcbmltcG9ydCB7IEJFSEFWSU9VUl9UWVBFX1JFUFVMU0lPTiBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG4vKipcbiAqIEJlaGF2aW91ciB0aGF0IGNhdXNlcyBwYXJ0aWNsZXMgdG8gYmUgcmVwZWxsZWQgZnJvbSBhIHRhcmdldCBwb3NpdGlvbi5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlcHVsc2lvbiBleHRlbmRzIEF0dHJhY3Rpb24ge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBSZXB1bHNpb24gYmVoYXZpb3VyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1ZlY3RvcjNEfSB0YXJnZXRQb3NpdGlvbiAtIFRoZSBwb3NpdGlvbiB0aGUgcGFydGljbGVzIHdpbGwgYmUgcmVwZWxsZWQgZnJvbVxuICAgKiBAcGFyYW0ge251bWJlcn0gZm9yY2UgLSBUaGUgcmVwdWxzaW9uIGZvcmNlIHNjYWxhciBtdWx0aXBsaWVyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByYWRpdXMgLSBUaGUgcmVwdWxzaW9uIHJhZGl1c1xuICAgKiBAcGFyYW0ge251bWJlcn0gbGlmZSAtIFRoZSBsaWZlIG9mIHRoZSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBlYXNpbmcgLSBUaGUgYmVoYXZpb3VyJ3MgZGVjYXlpbmcgdHJlbmRcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih0YXJnZXRQb3NpdGlvbiwgZm9yY2UsIHJhZGl1cywgbGlmZSwgZWFzaW5nLCBpc0VuYWJsZWQgPSB0cnVlKSB7XG4gICAgc3VwZXIodGFyZ2V0UG9zaXRpb24sIGZvcmNlLCByYWRpdXMsIGxpZmUsIGVhc2luZywgaXNFbmFibGVkKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFJlcHVsc2lvbiBpcyBhdHRyYWN0aW9uIHdpdGggbmVnYXRpdmUgZm9yY2UuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmZvcmNlICo9IC0xO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGNsYXNzIHR5cGUuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgYmVoYXZpb3VyIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7VmVjdG9yM0R9IHRhcmdldFBvc2l0aW9uIC0gdGhlIHBvc2l0aW9uIHRoZSBwYXJ0aWNsZXMgd2lsbCBiZSBhdHRyYWN0ZWQgdG9cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZvcmNlIC0gdGhlIGF0dHJhY3Rpb24gZm9yY2UgbXVsdGlwbGllclxuICAgKiBAcGFyYW0ge251bWJlcn0gcmFkaXVzIC0gdGhlIGF0dHJhY3Rpb24gcmFkaXVzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsaWZlIC0gdGhlIGxpZmUgb2YgdGhlIHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGVhc2luZyAtIFRoZSBiZWhhdmlvdXIncyBkZWNheWluZyB0cmVuZFxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIHJlc2V0KHRhcmdldFBvc2l0aW9uLCBmb3JjZSwgcmFkaXVzLCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlci5yZXNldCh0YXJnZXRQb3NpdGlvbiwgZm9yY2UsIHJhZGl1cywgbGlmZSwgZWFzaW5nKTtcbiAgICB0aGlzLmZvcmNlICo9IC0xO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBCb2R5IGluaXRpYWxpemVyIGZyb20gSlNPTi5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGpzb24gLSBUaGUgSlNPTiB0byBjb25zdHJ1Y3QgdGhlIGluc3RhbmNlIGZyb20uXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBqc29uLnggLSBUaGUgdGFyZ2V0IHBvc2l0aW9uIHggdmFsdWVcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IGpzb24ueSAtIFRoZSB0YXJnZXQgcG9zaXRpb24geSB2YWx1ZVxuICAgKiBAcHJvcGVydHkge251bWJlcn0ganNvbi56IC0gVGhlIHRhcmdldCBwb3NpdGlvbiB6IHZhbHVlXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBqc29uLmZvcmNlIC0gVGhlIGF0dHJhY3Rpb24gZm9yY2Ugc2NhbGFyIG11bHRpcGxpZXJcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IGpzb24ubGlmZSAtIFRoZSBsaWZlIG9mIHRoZSBwYXJ0aWNsZVxuICAgKiBAcHJvcGVydHkge3N0cmluZ30ganNvbi5lYXNpbmcgLSBUaGUgYmVoYXZpb3VyJ3MgZGVjYXlpbmcgdHJlbmRcbiAgICogQHJldHVybiB7Qm9keX1cbiAgICovXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgeyB4LCB5LCB6LCBmb3JjZSwgcmFkaXVzLCBsaWZlLCBlYXNpbmcsIGlzRW5hYmxlZCA9IHRydWUgfSA9IGpzb247XG5cbiAgICByZXR1cm4gbmV3IFJlcHVsc2lvbihcbiAgICAgIG5ldyBWZWN0b3IzRCh4LCB5LCB6KSxcbiAgICAgIGZvcmNlLFxuICAgICAgcmFkaXVzLFxuICAgICAgbGlmZSxcbiAgICAgIGdldEVhc2luZ0J5TmFtZShlYXNpbmcpLFxuICAgICAgaXNFbmFibGVkXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -1,265 +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 _math = require("../math");
25
-
26
- var _Behaviour2 = _interopRequireDefault(require("./Behaviour"));
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 rotates particles.
38
- */
39
- var Rotate = /*#__PURE__*/function (_Behaviour) {
40
- (0, _inherits2["default"])(Rotate, _Behaviour);
41
-
42
- var _super = _createSuper(Rotate);
43
-
44
- /**
45
- * Constructs a Rotate behaviour instance.
46
- *
47
- * @param {number} x - X axis rotation
48
- * @param {number} y - Y axis rotation
49
- * @param {number} z - Z axis rotation
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 Rotate(x, y, z, life, easing) {
56
- var _this;
57
-
58
- var isEnabled = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;
59
- (0, _classCallCheck2["default"])(this, Rotate);
60
- _this = _super.call(this, life, easing, _types.BEHAVIOUR_TYPE_ROTATE, isEnabled);
61
-
62
- _this.reset(x, y, z);
63
-
64
- return _this;
65
- }
66
- /**
67
- * Gets the rotation type.
68
- *
69
- * @return {string}
70
- */
71
-
72
-
73
- (0, _createClass2["default"])(Rotate, [{
74
- key: "reset",
75
-
76
- /**
77
- * Resets the behaviour properties.
78
- *
79
- * @param {number} x - X axis rotation
80
- * @param {number} y - Y axis rotation
81
- * @param {number} z - Z axis rotation
82
- * @param {number} life - the life of the behaviour
83
- * @param {function} easing - the easing equation to use for transforms
84
- * @return void
85
- */
86
- value: function reset(x, y, z, life, easing) {
87
- /**
88
- * @desc X axis rotation.
89
- * @type {number|Span}
90
- */
91
- this.x = x || 0;
92
- /**
93
- * @desc Y axis rotation.
94
- * @type {number|Span}
95
- */
96
-
97
- this.y = y || 0;
98
- /**
99
- * @desc Z axis rotation.
100
- * @type {number|Span}
101
- */
102
-
103
- this.z = z || 0;
104
-
105
- if (x === undefined || x == 'same') {
106
- this.rotationType = 'same';
107
- } else if (y == undefined) {
108
- this.rotationType = 'set';
109
- } else if (z === undefined) {
110
- this.rotationType = 'to';
111
- } else {
112
- this.rotationType = 'add';
113
- this.x = (0, _math.createSpan)(this.x * _constants.DR);
114
- this.y = (0, _math.createSpan)(this.y * _constants.DR);
115
- this.z = (0, _math.createSpan)(this.z * _constants.DR);
116
- }
117
-
118
- life && (0, _get2["default"])((0, _getPrototypeOf2["default"])(Rotate.prototype), "reset", this).call(this, life, easing);
119
- }
120
- /**
121
- * Initializes the behaviour on a particle.
122
- *
123
- * @param {object} particle - the particle to initialize the behaviour on
124
- * @return void
125
- */
126
-
127
- }, {
128
- key: "initialize",
129
- value: function initialize(particle) {
130
- switch (this.rotationType) {
131
- case 'same':
132
- break;
133
-
134
- case 'set':
135
- this._setRotation(particle.rotation, this.x);
136
-
137
- break;
138
-
139
- case 'to':
140
- particle.transform.fR = particle.transform.fR || new _math.Vector3D();
141
- particle.transform.tR = particle.transform.tR || new _math.Vector3D();
142
-
143
- this._setRotation(particle.transform.fR, this.x);
144
-
145
- this._setRotation(particle.transform.tR, this.y);
146
-
147
- break;
148
-
149
- case 'add':
150
- particle.transform.addR = new _math.Vector3D(this.x.getValue(), this.y.getValue(), this.z.getValue());
151
- break;
152
- }
153
- }
154
- /**
155
- * Sets the particle's rotation prior to the behaviour being applied.
156
- *
157
- * NOTE It's hard to see here, but this is mutating the particle's rotation
158
- * even though the particle is not being passed in directly.
159
- *
160
- * NOTE the else if below will never be reached because the value being passed in
161
- * will never be of type Vector3D.
162
- *
163
- * @param {Vector3D} particleRotation - the particle's rotation vector
164
- * @param {string|number} value - the value to set the rotation value to, if 'random'
165
- * rotation is randomised
166
- * @return void
167
- */
168
-
169
- }, {
170
- key: "_setRotation",
171
- value: function _setRotation(particleRotation, value) {
172
- particleRotation = particleRotation || new _math.Vector3D();
173
-
174
- if (value == 'random') {
175
- var x = _math.MathUtils.randomAToB(-_constants.PI, _constants.PI);
176
-
177
- var y = _math.MathUtils.randomAToB(-_constants.PI, _constants.PI);
178
-
179
- var z = _math.MathUtils.randomAToB(-_constants.PI, _constants.PI);
180
-
181
- particleRotation.set(x, y, z);
182
- } // we can't ever get here because value will never be a Vector3D!
183
- // consider refactoring to
184
- // if (value instance of Span) { vec3.add(value.getValue()); }
185
- else if (value instanceof _math.Vector3D) {
186
- particleRotation.copy(value);
187
- }
188
- }
189
- /**
190
- * Mutates the particle.rotation property.
191
- *
192
- * @see http://stackoverflow.com/questions/21622956/how-to-convert-direction-vector-to-euler-angles
193
- * @param {object} particle - the particle to apply the behaviour to
194
- * @param {number} time - engine time
195
- * @param {integer} index - the particle index
196
- * @return void
197
- */
198
-
199
- }, {
200
- key: "mutate",
201
- value: function mutate(particle, time, index) {
202
- this.energize(particle, time, index);
203
-
204
- switch (this.rotationType) {
205
- // orients the particle in the direction it is moving
206
- case 'same':
207
- if (!particle.rotation) {
208
- particle.rotation = new _math.Vector3D();
209
- }
210
-
211
- particle.rotation.copy(particle.velocity);
212
- break;
213
-
214
- case 'set':
215
- //
216
- break;
217
-
218
- case 'to':
219
- particle.rotation.x = _math.MathUtils.lerp(particle.transform.fR.x, particle.transform.tR.x, this.energy);
220
- particle.rotation.y = _math.MathUtils.lerp(particle.transform.fR.y, particle.transform.tR.y, this.energy);
221
- particle.rotation.z = _math.MathUtils.lerp(particle.transform.fR.z, particle.transform.tR.z, this.energy);
222
- break;
223
-
224
- case 'add':
225
- particle.rotation.add(particle.transform.addR);
226
- break;
227
- }
228
- }
229
- }, {
230
- key: "rotationType",
231
- get: function get() {
232
- return this._rotationType;
233
- }
234
- /**
235
- * Sets the rotation type.
236
- *
237
- * @param {string}
238
- * @return void
239
- */
240
- ,
241
- set: function set(rotationType) {
242
- /**
243
- * @desc The rotation type. ENUM of ['same', 'set', 'to', 'add'].
244
- * @type {string}
245
- */
246
- this._rotationType = rotationType;
247
- }
248
- }], [{
249
- key: "fromJSON",
250
- value: function fromJSON(json) {
251
- var x = json.x,
252
- y = json.y,
253
- z = json.z,
254
- life = json.life,
255
- easing = json.easing,
256
- _json$isEnabled = json.isEnabled,
257
- isEnabled = _json$isEnabled === void 0 ? true : _json$isEnabled;
258
- return new Rotate(x, y, z, life, (0, _ease.getEasingByName)(easing), isEnabled);
259
- }
260
- }]);
261
- return Rotate;
262
- }(_Behaviour2["default"]);
263
-
264
- exports["default"] = Rotate;
265
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZWhhdmlvdXIvUm90YXRlLmpzIl0sIm5hbWVzIjpbIlJvdGF0ZSIsIngiLCJ5IiwieiIsImxpZmUiLCJlYXNpbmciLCJpc0VuYWJsZWQiLCJ0eXBlIiwicmVzZXQiLCJ1bmRlZmluZWQiLCJyb3RhdGlvblR5cGUiLCJEUiIsInBhcnRpY2xlIiwiX3NldFJvdGF0aW9uIiwicm90YXRpb24iLCJ0cmFuc2Zvcm0iLCJmUiIsIlZlY3RvcjNEIiwidFIiLCJhZGRSIiwiZ2V0VmFsdWUiLCJwYXJ0aWNsZVJvdGF0aW9uIiwidmFsdWUiLCJNYXRoVXRpbHMiLCJyYW5kb21BVG9CIiwiUEkiLCJzZXQiLCJjb3B5IiwidGltZSIsImluZGV4IiwiZW5lcmdpemUiLCJ2ZWxvY2l0eSIsImxlcnAiLCJlbmVyZ3kiLCJhZGQiLCJfcm90YXRpb25UeXBlIiwianNvbiIsIkJlaGF2aW91ciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBO0FBQ0E7QUFDQTtJQUNxQkEsTTs7Ozs7QUFDbkI7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFLGtCQUFZQyxDQUFaLEVBQWVDLENBQWYsRUFBa0JDLENBQWxCLEVBQXFCQyxJQUFyQixFQUEyQkMsTUFBM0IsRUFBcUQ7QUFBQTs7QUFBQSxRQUFsQkMsU0FBa0IsdUVBQU4sSUFBTTtBQUFBO0FBQ25ELDhCQUFNRixJQUFOLEVBQVlDLE1BQVosRUFBb0JFLDRCQUFwQixFQUEwQkQsU0FBMUI7O0FBRUEsVUFBS0UsS0FBTCxDQUFXUCxDQUFYLEVBQWNDLENBQWQsRUFBaUJDLENBQWpCOztBQUhtRDtBQUlwRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQW1CRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTswQkFDUUYsQyxFQUFHQyxD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LDJCQUFnQkMsTUFBaEIsQ0FBMUIsRUFBbURDLFNBQW5ELENBQVA7QUFDRDs7O0VBM01pQytCLHNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRFIsIFBJIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE1hdGhVdGlscywgVmVjdG9yM0QsIGNyZWF0ZVNwYW4gfSBmcm9tICcuLi9tYXRoJztcblxuaW1wb3J0IEJlaGF2aW91ciBmcm9tICcuL0JlaGF2aW91cic7XG5pbXBvcnQgeyBnZXRFYXNpbmdCeU5hbWUgfSBmcm9tICcuLi9lYXNlJztcbmltcG9ydCB7IEJFSEFWSU9VUl9UWVBFX1JPVEFURSBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQmVoYXZpb3VyIHRoYXQgcm90YXRlcyBwYXJ0aWNsZXMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJvdGF0ZSBleHRlbmRzIEJlaGF2aW91ciB7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgUm90YXRlIGJlaGF2aW91ciBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHggLSBYIGF4aXMgcm90YXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgLSBZIGF4aXMgcm90YXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IHogLSBaIGF4aXMgcm90YXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IGxpZmUgLSBUaGUgbGlmZSBvZiB0aGUgYmVoYXZpb3VyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGVhc2luZyAtIFRoZSBlYXNpbmcgZXF1YXRpb24gdG8gdXNlIGZvciB0cmFuc2Zvcm1zXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRW5hYmxlZD10cnVlXSAtIERldGVybWluZXMgaWYgdGhlIGJlaGF2aW91ciB3aWxsIGJlIGFwcGxpZWQgb3Igbm90XG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgY29uc3RydWN0b3IoeCwgeSwgeiwgbGlmZSwgZWFzaW5nLCBpc0VuYWJsZWQgPSB0cnVlKSB7XG4gICAgc3VwZXIobGlmZSwgZWFzaW5nLCB0eXBlLCBpc0VuYWJsZWQpO1xuXG4gICAgdGhpcy5yZXNldCh4LCB5LCB6KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSByb3RhdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgcm90YXRpb25UeXBlKCkge1xuICAgIHJldHVybiB0aGlzLl9yb3RhdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcm90YXRpb24gdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9XG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgc2V0IHJvdGF0aW9uVHlwZShyb3RhdGlvblR5cGUpIHtcbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgcm90YXRpb24gdHlwZS4gRU5VTSBvZiBbJ3NhbWUnLCAnc2V0JywgJ3RvJywgJ2FkZCddLlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5fcm90YXRpb25UeXBlID0gcm90YXRpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgYmVoYXZpb3VyIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4IC0gWCBheGlzIHJvdGF0aW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IC0gWSBheGlzIHJvdGF0aW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB6IC0gWiBheGlzIHJvdGF0aW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsaWZlIC0gdGhlIGxpZmUgb2YgdGhlIGJlaGF2aW91clxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBlYXNpbmcgLSB0aGUgZWFzaW5nIGVxdWF0aW9uIHRvIHVzZSBmb3IgdHJhbnNmb3Jtc1xuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIHJlc2V0KHgsIHksIHosIGxpZmUsIGVhc2luZykge1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFggYXhpcyByb3RhdGlvbi5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfFNwYW59XG4gICAgICovXG4gICAgdGhpcy54ID0geCB8fCAwO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgWSBheGlzIHJvdGF0aW9uLlxuICAgICAqIEB0eXBlIHtudW1iZXJ8U3Bhbn1cbiAgICAgKi9cbiAgICB0aGlzLnkgPSB5IHx8IDA7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBaIGF4aXMgcm90YXRpb24uXG4gICAgICogQHR5cGUge251bWJlcnxTcGFufVxuICAgICAqL1xuICAgIHRoaXMueiA9IHogfHwgMDtcblxuICAgIGlmICh4ID09PSB1bmRlZmluZWQgfHwgeCA9PSAnc2FtZScpIHtcbiAgICAgIHRoaXMucm90YXRpb25UeXBlID0gJ3NhbWUnO1xuICAgIH0gZWxzZSBpZiAoeSA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm90YXRpb25UeXBlID0gJ3NldCc7XG4gICAgfSBlbHNlIGlmICh6ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm90YXRpb25UeXBlID0gJ3RvJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3RhdGlvblR5cGUgPSAnYWRkJztcbiAgICAgIHRoaXMueCA9IGNyZWF0ZVNwYW4odGhpcy54ICogRFIpO1xuICAgICAgdGhpcy55ID0gY3JlYXRlU3Bhbih0aGlzLnkgKiBEUik7XG4gICAgICB0aGlzLnogPSBjcmVhdGVTcGFuKHRoaXMueiAqIERSKTtcbiAgICB9XG5cbiAgICBsaWZlICYmIHN1cGVyLnJlc2V0KGxpZmUsIGVhc2luZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGJlaGF2aW91ciBvbiBhIHBhcnRpY2xlLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGljbGUgLSB0aGUgcGFydGljbGUgdG8gaW5pdGlhbGl6ZSB0aGUgYmVoYXZpb3VyIG9uXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgaW5pdGlhbGl6ZShwYXJ0aWNsZSkge1xuICAgIHN3aXRjaCAodGhpcy5yb3RhdGlvblR5cGUpIHtcbiAgICAgIGNhc2UgJ3NhbWUnOlxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnc2V0JzpcbiAgICAgICAgdGhpcy5fc2V0Um90YXRpb24ocGFydGljbGUucm90YXRpb24sIHRoaXMueCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd0byc6XG4gICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS5mUiA9IHBhcnRpY2xlLnRyYW5zZm9ybS5mUiB8fCBuZXcgVmVjdG9yM0QoKTtcbiAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLnRSID0gcGFydGljbGUudHJhbnNmb3JtLnRSIHx8IG5ldyBWZWN0b3IzRCgpO1xuICAgICAgICB0aGlzLl9zZXRSb3RhdGlvbihwYXJ0aWNsZS50cmFuc2Zvcm0uZlIsIHRoaXMueCk7XG4gICAgICAgIHRoaXMuX3NldFJvdGF0aW9uKHBhcnRpY2xlLnRyYW5zZm9ybS50UiwgdGhpcy55KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2FkZCc6XG4gICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS5hZGRSID0gbmV3IFZlY3RvcjNEKFxuICAgICAgICAgIHRoaXMueC5nZXRWYWx1ZSgpLFxuICAgICAgICAgIHRoaXMueS5nZXRWYWx1ZSgpLFxuICAgICAgICAgIHRoaXMuei5nZXRWYWx1ZSgpXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwYXJ0aWNsZSdzIHJvdGF0aW9uIHByaW9yIHRvIHRoZSBiZWhhdmlvdXIgYmVpbmcgYXBwbGllZC5cbiAgICpcbiAgICogTk9URSBJdCdzIGhhcmQgdG8gc2VlIGhlcmUsIGJ1dCB0aGlzIGlzIG11dGF0aW5nIHRoZSBwYXJ0aWNsZSdzIHJvdGF0aW9uXG4gICAqIGV2ZW4gdGhvdWdoIHRoZSBwYXJ0aWNsZSBpcyBub3QgYmVpbmcgcGFzc2VkIGluIGRpcmVjdGx5LlxuICAgKlxuICAgKiBOT1RFIHRoZSBlbHNlIGlmIGJlbG93IHdpbGwgbmV2ZXIgYmUgcmVhY2hlZCBiZWNhdXNlIHRoZSB2YWx1ZSBiZWluZyBwYXNzZWQgaW5cbiAgICogd2lsbCBuZXZlciBiZSBvZiB0eXBlIFZlY3RvcjNELlxuICAgKlxuICAgKiBAcGFyYW0ge1ZlY3RvcjNEfSBwYXJ0aWNsZVJvdGF0aW9uIC0gdGhlIHBhcnRpY2xlJ3Mgcm90YXRpb24gdmVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gdmFsdWUgLSB0aGUgdmFsdWUgdG8gc2V0IHRoZSByb3RhdGlvbiB2YWx1ZSB0bywgaWYgJ3JhbmRvbSdcbiAgICogcm90YXRpb24gaXMgcmFuZG9taXNlZFxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIF9zZXRSb3RhdGlvbihwYXJ0aWNsZVJvdGF0aW9uLCB2YWx1ZSkge1xuICAgIHBhcnRpY2xlUm90YXRpb24gPSBwYXJ0aWNsZVJvdGF0aW9uIHx8IG5ldyBWZWN0b3IzRCgpO1xuICAgIGlmICh2YWx1ZSA9PSAncmFuZG9tJykge1xuICAgICAgdmFyIHggPSBNYXRoVXRpbHMucmFuZG9tQVRvQigtUEksIFBJKTtcbiAgICAgIHZhciB5ID0gTWF0aFV0aWxzLnJhbmRvbUFUb0IoLVBJLCBQSSk7XG4gICAgICB2YXIgeiA9IE1hdGhVdGlscy5yYW5kb21BVG9CKC1QSSwgUEkpO1xuXG4gICAgICBwYXJ0aWNsZVJvdGF0aW9uLnNldCh4LCB5LCB6KTtcbiAgICB9XG4gICAgLy8gd2UgY2FuJ3QgZXZlciBnZXQgaGVyZSBiZWNhdXNlIHZhbHVlIHdpbGwgbmV2ZXIgYmUgYSBWZWN0b3IzRCFcbiAgICAvLyBjb25zaWRlciByZWZhY3RvcmluZyB0b1xuICAgIC8vICBpZiAodmFsdWUgaW5zdGFuY2Ugb2YgU3BhbikgeyB2ZWMzLmFkZCh2YWx1ZS5nZXRWYWx1ZSgpKTsgfVxuICAgIGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgVmVjdG9yM0QpIHtcbiAgICAgIHBhcnRpY2xlUm90YXRpb24uY29weSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE11dGF0ZXMgdGhlIHBhcnRpY2xlLnJvdGF0aW9uIHByb3BlcnR5LlxuICAgKlxuICAgKiBAc2VlIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjE2MjI5NTYvaG93LXRvLWNvbnZlcnQtZGlyZWN0aW9uLXZlY3Rvci10by1ldWxlci1hbmdsZXNcbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpY2xlIC0gdGhlIHBhcnRpY2xlIHRvIGFwcGx5IHRoZSBiZWhhdmlvdXIgdG9cbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWUgLSBlbmdpbmUgdGltZVxuICAgKiBAcGFyYW0ge2ludGVnZXJ9IGluZGV4IC0gdGhlIHBhcnRpY2xlIGluZGV4XG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgbXV0YXRlKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuZW5lcmdpemUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcblxuICAgIHN3aXRjaCAodGhpcy5yb3RhdGlvblR5cGUpIHtcbiAgICAgIC8vIG9yaWVudHMgdGhlIHBhcnRpY2xlIGluIHRoZSBkaXJlY3Rpb24gaXQgaXMgbW92aW5nXG4gICAgICBjYXNlICdzYW1lJzpcbiAgICAgICAgaWYgKCFwYXJ0aWNsZS5yb3RhdGlvbikge1xuICAgICAgICAgIHBhcnRpY2xlLnJvdGF0aW9uID0gbmV3IFZlY3RvcjNEKCk7XG4gICAgICAgIH1cblxuICAgICAgICBwYXJ0aWNsZS5yb3RhdGlvbi5jb3B5KHBhcnRpY2xlLnZlbG9jaXR5KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3NldCc6XG4gICAgICAgIC8vXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd0byc6XG4gICAgICAgIHBhcnRpY2xlLnJvdGF0aW9uLnggPSBNYXRoVXRpbHMubGVycChcbiAgICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0uZlIueCxcbiAgICAgICAgICBwYXJ0aWNsZS50cmFuc2Zvcm0udFIueCxcbiAgICAgICAgICB0aGlzLmVuZXJneVxuICAgICAgICApO1xuICAgICAgICBwYXJ0aWNsZS5yb3RhdGlvbi55ID0gTWF0aFV0aWxzLmxlcnAoXG4gICAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLmZSLnksXG4gICAgICAgICAgcGFydGljbGUudHJhbnNmb3JtLnRSLnksXG4gICAgICAgICAgdGhpcy5lbmVyZ3lcbiAgICAgICAgKTtcbiAgICAgICAgcGFydGljbGUucm90YXRpb24ueiA9IE1hdGhVdGlscy5sZXJwKFxuICAgICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS5mUi56LFxuICAgICAgICAgIHBhcnRpY2xlLnRyYW5zZm9ybS50Ui56LFxuICAgICAgICAgIHRoaXMuZW5lcmd5XG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdhZGQnOlxuICAgICAgICBwYXJ0aWNsZS5yb3RhdGlvbi5hZGQocGFydGljbGUudHJhbnNmb3JtLmFkZFIpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbikge1xuICAgIGNvbnN0IHsgeCwgeSwgeiwgbGlmZSwgZWFzaW5nLCBpc0VuYWJsZWQgPSB0cnVlIH0gPSBqc29uO1xuXG4gICAgcmV0dXJuIG5ldyBSb3RhdGUoeCwgeSwgeiwgbGlmZSwgZ2V0RWFzaW5nQnlOYW1lKGVhc2luZyksIGlzRW5hYmxlZCk7XG4gIH1cbn1cbiJdfQ==