three-nebula 10.0.3 → 11.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/.claude/rules/no-coauthor.md +4 -0
  2. package/CHANGELOG.md +33 -0
  3. package/dist/three-nebula.cjs +109 -0
  4. package/dist/three-nebula.cjs.map +1 -0
  5. package/dist/three-nebula.mjs +2968 -0
  6. package/dist/three-nebula.mjs.map +1 -0
  7. package/dist/three-nebula.umd.js +109 -0
  8. package/dist/three-nebula.umd.js.map +1 -0
  9. package/package.json +32 -56
  10. package/specs/01-emitter-hierarchy.md +200 -0
  11. package/specs/02-determinism-scrubbing.md +188 -0
  12. package/specs/03-sound-renderer.md +183 -0
  13. package/specs/04-schema-versioning.md +140 -0
  14. package/specs/05-content-addressed-assets.md +288 -0
  15. package/specs/README.md +80 -0
  16. package/build/cjs/behaviour/Alpha.js +0 -189
  17. package/build/cjs/behaviour/Attraction.js +0 -189
  18. package/build/cjs/behaviour/Behaviour.js +0 -253
  19. package/build/cjs/behaviour/Collision.js +0 -146
  20. package/build/cjs/behaviour/Color.js +0 -148
  21. package/build/cjs/behaviour/CrossZone.js +0 -141
  22. package/build/cjs/behaviour/Force.js +0 -126
  23. package/build/cjs/behaviour/Gravity.js +0 -78
  24. package/build/cjs/behaviour/RandomDrift.js +0 -153
  25. package/build/cjs/behaviour/Repulsion.js +0 -123
  26. package/build/cjs/behaviour/Rotate.js +0 -265
  27. package/build/cjs/behaviour/Scale.js +0 -177
  28. package/build/cjs/behaviour/Spring.js +0 -133
  29. package/build/cjs/behaviour/constants.js +0 -28
  30. package/build/cjs/behaviour/index.js +0 -112
  31. package/build/cjs/behaviour/types.js +0 -33
  32. package/build/cjs/constants/index.js +0 -61
  33. package/build/cjs/core/Particle.js +0 -390
  34. package/build/cjs/core/Pool.js +0 -203
  35. package/build/cjs/core/System.js +0 -366
  36. package/build/cjs/core/constants.js +0 -163
  37. package/build/cjs/core/fromJSON.js +0 -128
  38. package/build/cjs/core/fromJSONAsync.js +0 -239
  39. package/build/cjs/core/index.js +0 -32
  40. package/build/cjs/core/three/Euler.js +0 -233
  41. package/build/cjs/core/three/Math.js +0 -91
  42. package/build/cjs/core/three/Matrix4.js +0 -745
  43. package/build/cjs/core/three/Quaternion.js +0 -451
  44. package/build/cjs/core/three/Vector3.js +0 -464
  45. package/build/cjs/core/three/constants.js +0 -298
  46. package/build/cjs/core/three/index.js +0 -48
  47. package/build/cjs/core/types.js +0 -13
  48. package/build/cjs/debug/Debug.js +0 -209
  49. package/build/cjs/debug/constants.js +0 -19
  50. package/build/cjs/debug/index.js +0 -24
  51. package/build/cjs/debug/log.js +0 -38
  52. package/build/cjs/ease/index.js +0 -149
  53. package/build/cjs/emitter/Emitter.js +0 -791
  54. package/build/cjs/emitter/FollowEmitter.js +0 -146
  55. package/build/cjs/emitter/constants.js +0 -20
  56. package/build/cjs/emitter/index.js +0 -24
  57. package/build/cjs/emitter/types.js +0 -11
  58. package/build/cjs/events/EventDispatcher.js +0 -105
  59. package/build/cjs/events/constants.js +0 -23
  60. package/build/cjs/events/index.js +0 -27
  61. package/build/cjs/index.js +0 -151
  62. package/build/cjs/initializer/Body.js +0 -122
  63. package/build/cjs/initializer/BodySprite.js +0 -146
  64. package/build/cjs/initializer/Initializer.js +0 -109
  65. package/build/cjs/initializer/InitializerUtil.js +0 -54
  66. package/build/cjs/initializer/Life.js +0 -106
  67. package/build/cjs/initializer/Mass.js +0 -101
  68. package/build/cjs/initializer/Position.js +0 -152
  69. package/build/cjs/initializer/Radius.js +0 -118
  70. package/build/cjs/initializer/Rate.js +0 -150
  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 -100
  79. package/build/cjs/initializer/types.js +0 -35
  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 -350
  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 -364
  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 -53
  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 -43
  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 -63
  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 -14
  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 -701
  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/Texture.js +0 -101
  187. package/build/esm/initializer/Velocity/PolarVelocity.js +0 -63
  188. package/build/esm/initializer/Velocity/RadialVelocity.js +0 -72
  189. package/build/esm/initializer/Velocity/VectorVelocity.js +0 -69
  190. package/build/esm/initializer/Velocity/Velocity.js +0 -52
  191. package/build/esm/initializer/Velocity/index.js +0 -4
  192. package/build/esm/initializer/constants.js +0 -26
  193. package/build/esm/initializer/index.js +0 -11
  194. package/build/esm/initializer/types.js +0 -15
  195. package/build/esm/math/ArraySpan.js +0 -62
  196. package/build/esm/math/Box.js +0 -25
  197. package/build/esm/math/ColorSpan.js +0 -71
  198. package/build/esm/math/MathUtils.js +0 -48
  199. package/build/esm/math/Polar3D.js +0 -81
  200. package/build/esm/math/Span.js +0 -63
  201. package/build/esm/math/Vector3D.js +0 -34
  202. package/build/esm/math/constants.js +0 -24
  203. package/build/esm/math/index.js +0 -10
  204. package/build/esm/math/integration.js +0 -47
  205. package/build/esm/math/types.js +0 -7
  206. package/build/esm/renderer/BaseRenderer.js +0 -78
  207. package/build/esm/renderer/CustomRenderer.js +0 -23
  208. package/build/esm/renderer/GPURenderer/Desktop/index.js +0 -331
  209. package/build/esm/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +0 -23
  210. package/build/esm/renderer/GPURenderer/Desktop/shaders/index.js +0 -3
  211. package/build/esm/renderer/GPURenderer/Desktop/shaders/vertexShader.js +0 -33
  212. package/build/esm/renderer/GPURenderer/Mobile/index.js +0 -349
  213. package/build/esm/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +0 -20
  214. package/build/esm/renderer/GPURenderer/Mobile/shaders/index.js +0 -3
  215. package/build/esm/renderer/GPURenderer/Mobile/shaders/vertexShader.js +0 -30
  216. package/build/esm/renderer/GPURenderer/common/ParticleBuffer/constants.js +0 -27
  217. package/build/esm/renderer/GPURenderer/common/ParticleBuffer/index.js +0 -70
  218. package/build/esm/renderer/GPURenderer/common/TextureAtlas/constants.js +0 -2
  219. package/build/esm/renderer/GPURenderer/common/TextureAtlas/index.js +0 -206
  220. package/build/esm/renderer/GPURenderer/common/constants.js +0 -13
  221. package/build/esm/renderer/GPURenderer/common/index.js +0 -4
  222. package/build/esm/renderer/GPURenderer/common/shaders/constants.js +0 -2
  223. package/build/esm/renderer/GPURenderer/common/stores/Target.js +0 -24
  224. package/build/esm/renderer/GPURenderer/common/stores/UniqueList.js +0 -29
  225. package/build/esm/renderer/GPURenderer/common/stores/index.js +0 -3
  226. package/build/esm/renderer/GPURenderer/index.js +0 -57
  227. package/build/esm/renderer/MeshRenderer.js +0 -94
  228. package/build/esm/renderer/SpriteRenderer.js +0 -26
  229. package/build/esm/renderer/index.js +0 -5
  230. package/build/esm/renderer/types.js +0 -8
  231. package/build/esm/utils/ColorUtil.js +0 -32
  232. package/build/esm/utils/PUID.js +0 -19
  233. package/build/esm/utils/THREEUtil.js +0 -31
  234. package/build/esm/utils/Util.js +0 -60
  235. package/build/esm/utils/index.js +0 -13
  236. package/build/esm/utils/uid.js +0 -3
  237. package/build/esm/zone/BoxZone.js +0 -133
  238. package/build/esm/zone/LineZone.js +0 -61
  239. package/build/esm/zone/MeshZone.js +0 -60
  240. package/build/esm/zone/PointZone.js +0 -59
  241. package/build/esm/zone/ScreenZone.js +0 -116
  242. package/build/esm/zone/SphereZone.js +0 -113
  243. package/build/esm/zone/Zone.js +0 -141
  244. package/build/esm/zone/index.js +0 -7
  245. package/build/esm/zone/types.js +0 -8
  246. package/build/three-nebula.js +0 -2
  247. package/build/three-nebula.js.map +0 -1
@@ -1,164 +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 _THREEUtil = _interopRequireDefault(require("../utils/THREEUtil"));
21
-
22
- var _Vector3D = _interopRequireDefault(require("../math/Vector3D"));
23
-
24
- var _Zone2 = _interopRequireDefault(require("./Zone"));
25
-
26
- var _types = require("./types");
27
-
28
- 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); }; }
29
-
30
- 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; } }
31
-
32
- var ScreenZone = /*#__PURE__*/function (_Zone) {
33
- (0, _inherits2["default"])(ScreenZone, _Zone);
34
-
35
- var _super = _createSuper(ScreenZone);
36
-
37
- /**
38
- * ScreenZone is a 3d line zone
39
- * @param {Number|Vector3D} x1 - the line's start point of x value or a Vector3D Object
40
- * @param {Number|Vector3D} y1 - the line's start point of y value or a Vector3D Object
41
- * @param {Number} z1 - the line's start point of z value
42
- * @param {Number} x2 - the line's end point of x value
43
- * @param {Number} y2 - the line's end point of y value
44
- * @param {Number} z2 - the line's end point of z value
45
- * @example
46
- * var lineZone = new ScreenZone(0,0,0,100,100,0);
47
- * or
48
- * var lineZone = new ScreenZone(new Vector3D(0,0,0),new Vector3D(100,100,0));
49
- * @extends {Zone}
50
- * @constructor
51
- */
52
- function ScreenZone(camera, renderer, dis, dir) {
53
- var _this;
54
-
55
- (0, _classCallCheck2["default"])(this, ScreenZone);
56
- _this = _super.call(this, _types.ZONE_TYPE_SCREEN);
57
- _this.camera = camera;
58
- _this.renderer = renderer;
59
- _this.dis = dis || 20;
60
- dir = dir || '1234';
61
-
62
- for (var i = 1; i < 5; i++) {
63
- _this['d' + i] = dir.indexOf(i + '') >= 0;
64
- }
65
-
66
- return _this;
67
- }
68
- /**
69
- * Returns true to indicate this is a ScreenZone.
70
- *
71
- * @return {boolean}
72
- */
73
-
74
-
75
- (0, _createClass2["default"])(ScreenZone, [{
76
- key: "isScreenZone",
77
- value: function isScreenZone() {
78
- return true;
79
- }
80
- }, {
81
- key: "_dead",
82
- value: function _dead(particle) {
83
- var pos = _THREEUtil["default"].toScreenPos(particle.position, this.camera, this.renderer.domElement);
84
-
85
- var canvas = this.renderer.domElement;
86
-
87
- if (pos.y + particle.radius < -this.dis && this.d1) {
88
- particle.dead = true;
89
- } else if (pos.y - particle.radius > canvas.height + this.dis && this.d3) {
90
- particle.dead = true;
91
- }
92
-
93
- if (pos.x + particle.radius < -this.dis && this.d4) {
94
- particle.dead = true;
95
- } else if (pos.x - particle.radius > canvas.width + this.dis && this.d2) {
96
- particle.dead = true;
97
- }
98
- }
99
- }, {
100
- key: "_bound",
101
- value: function _bound(particle) {
102
- var pos = _THREEUtil["default"].toScreenPos(particle.position, this.camera, this.renderer.domElement);
103
-
104
- var canvas = this.renderer.domElement;
105
-
106
- if (pos.y + particle.radius < -this.dis) {
107
- particle.velocity.y *= -1;
108
- } else if (pos.y - particle.radius > canvas.height + this.dis) {
109
- particle.velocity.y *= -1;
110
- }
111
-
112
- if (pos.x + particle.radius < -this.dis) {
113
- particle.velocity.y *= -1;
114
- } else if (pos.x - particle.radius > canvas.width + this.dis) {
115
- particle.velocity.y *= -1;
116
- }
117
- }
118
- }]);
119
- return ScreenZone;
120
- }(_Zone2["default"]);
121
-
122
- exports["default"] = ScreenZone;
123
-
124
- ScreenZone.prototype.getPosition = function () {
125
- var vec2 = new _Vector3D["default"](),
126
- canvas;
127
- return function () {
128
- canvas = this.renderer.domElement;
129
- vec2.x = Math.random() * canvas.width;
130
- vec2.y = Math.random() * canvas.height;
131
- this.vector.copy(_THREEUtil["default"].toSpacePos(vec2, this.camera, canvas));
132
- return this.vector;
133
- };
134
- }();
135
-
136
- ScreenZone.prototype._cross = function () {
137
- var vec2 = new _Vector3D["default"]();
138
- return function (particle) {
139
- var pos = _THREEUtil["default"].toScreenPos(particle.position, this.camera, this.renderer.domElement);
140
-
141
- var canvas = this.renderer.domElement;
142
-
143
- if (pos.y + particle.radius < -this.dis) {
144
- vec2.x = pos.x;
145
- vec2.y = canvas.height + this.dis + particle.radius;
146
- particle.position.y = _THREEUtil["default"].toSpacePos(vec2, this.camera, canvas).y;
147
- } else if (pos.y - particle.radius > canvas.height + this.dis) {
148
- vec2.x = pos.x;
149
- vec2.y = -this.dis - particle.radius;
150
- particle.position.y = _THREEUtil["default"].toSpacePos(vec2, this.camera, canvas).y;
151
- }
152
-
153
- if (pos.x + particle.radius < -this.dis) {
154
- vec2.y = pos.y;
155
- vec2.x = canvas.width + this.dis + particle.radius;
156
- particle.position.x = _THREEUtil["default"].toSpacePos(vec2, this.camera, canvas).x;
157
- } else if (pos.x - particle.radius > canvas.width + this.dis) {
158
- vec2.y = pos.y;
159
- vec2.x = -this.dis - particle.radius;
160
- particle.position.x = _THREEUtil["default"].toSpacePos(vec2, this.camera, canvas).x;
161
- }
162
- };
163
- }();
164
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy96b25lL1NjcmVlblpvbmUuanMiXSwibmFtZXMiOlsiU2NyZWVuWm9uZSIsImNhbWVyYSIsInJlbmRlcmVyIiwiZGlzIiwiZGlyIiwidHlwZSIsImkiLCJpbmRleE9mIiwicGFydGljbGUiLCJwb3MiLCJUSFJFRVV0aWwiLCJ0b1NjcmVlblBvcyIsInBvc2l0aW9uIiwiZG9tRWxlbWVudCIsImNhbnZhcyIsInkiLCJyYWRpdXMiLCJkMSIsImRlYWQiLCJoZWlnaHQiLCJkMyIsIngiLCJkNCIsIndpZHRoIiwiZDIiLCJ2ZWxvY2l0eSIsIlpvbmUiLCJwcm90b3R5cGUiLCJnZXRQb3NpdGlvbiIsInZlYzIiLCJWZWN0b3IzRCIsIk1hdGgiLCJyYW5kb20iLCJ2ZWN0b3IiLCJjb3B5IiwidG9TcGFjZVBvcyIsIl9jcm9zcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7SUFFcUJBLFU7Ozs7O0FBQ25CO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFLHNCQUFZQyxNQUFaLEVBQW9CQyxRQUFwQixFQUE4QkMsR0FBOUIsRUFBbUNDLEdBQW5DLEVBQXdDO0FBQUE7O0FBQUE7QUFDdEMsOEJBQU1DLHVCQUFOO0FBRUEsVUFBS0osTUFBTCxHQUFjQSxNQUFkO0FBQ0EsVUFBS0MsUUFBTCxHQUFnQkEsUUFBaEI7QUFDQSxVQUFLQyxHQUFMLEdBQVdBLEdBQUcsSUFBSSxFQUFsQjtBQUNBQyxJQUFBQSxHQUFHLEdBQUdBLEdBQUcsSUFBSSxNQUFiOztBQUVBLFNBQUssSUFBSUUsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxDQUFwQixFQUF1QkEsQ0FBQyxFQUF4QjtBQUE0QixZQUFLLE1BQU1BLENBQVgsSUFBZ0JGLEdBQUcsQ0FBQ0csT0FBSixDQUFZRCxDQUFDLEdBQUcsRUFBaEIs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LENBQUwsR0FBU04sR0FBRyxDQUFDTSxDQUFiO0FBQ0FjLE1BQUFBLElBQUksQ0FBQ1IsQ0FBTCxHQUFTLENBQUMsS0FBS2xCLEdBQU4sR0FBWUssUUFBUSxDQUFDUSxNQUE5QjtBQUNBUixNQUFBQSxRQUFRLENBQUNJLFFBQVQsQ0FBa0JTLENBQWxCLEdBQXNCWCxzQkFBVXlCLFVBQVYsQ0FBcUJOLElBQXJCLEVBQTJCLEtBQUs1QixNQUFoQyxFQUF3Q2EsTUFBeEMsRUFBZ0RPLENBQXRFO0FBQ0Q7QUFDRixHQTNCRDtBQTRCRCxDQS9CNkIsRUFBOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVEhSRUVVdGlsIGZyb20gJy4uL3V0aWxzL1RIUkVFVXRpbCc7XG5pbXBvcnQgVmVjdG9yM0QgZnJvbSAnLi4vbWF0aC9WZWN0b3IzRCc7XG5pbXBvcnQgWm9uZSBmcm9tICcuL1pvbmUnO1xuaW1wb3J0IHsgWk9ORV9UWVBFX1NDUkVFTiBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjcmVlblpvbmUgZXh0ZW5kcyBab25lIHtcbiAgLyoqXG4gICAqIFNjcmVlblpvbmUgaXMgYSAzZCBsaW5lIHpvbmVcbiAgICogQHBhcmFtIHtOdW1iZXJ8VmVjdG9yM0R9IHgxIC0gdGhlIGxpbmUncyBzdGFydCBwb2ludCBvZiB4IHZhbHVlIG9yIGEgVmVjdG9yM0QgT2JqZWN0XG4gICAqIEBwYXJhbSB7TnVtYmVyfFZlY3RvcjNEfSB5MSAtIHRoZSBsaW5lJ3Mgc3RhcnQgcG9pbnQgb2YgeSB2YWx1ZSBvciBhIFZlY3RvcjNEIE9iamVjdFxuICAgKiBAcGFyYW0ge051bWJlcn0gejEgLSB0aGUgbGluZSdzIHN0YXJ0IHBvaW50IG9mIHogdmFsdWVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHgyIC0gdGhlIGxpbmUncyBlbmQgcG9pbnQgb2YgeCB2YWx1ZVxuICAgKiBAcGFyYW0ge051bWJlcn0geTIgLSB0aGUgbGluZSdzIGVuZCBwb2ludCBvZiB5IHZhbHVlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB6MiAtIHRoZSBsaW5lJ3MgZW5kIHBvaW50IG9mIHogdmFsdWVcbiAgICogQGV4YW1wbGVcbiAgICogdmFyIGxpbmVab25lID0gbmV3IFNjcmVlblpvbmUoMCwwLDAsMTAwLDEwMCwwKTtcbiAgICogb3JcbiAgICogdmFyIGxpbmVab25lID0gbmV3IFNjcmVlblpvbmUobmV3IFZlY3RvcjNEKDAsMCwwKSxuZXcgVmVjdG9yM0QoMTAwLDEwMCwwKSk7XG4gICAqIEBleHRlbmRzIHtab25lfVxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNhbWVyYSwgcmVuZGVyZXIsIGRpcywgZGlyKSB7XG4gICAgc3VwZXIodHlwZSk7XG5cbiAgICB0aGlzLmNhbWVyYSA9IGNhbWVyYTtcbiAgICB0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXI7XG4gICAgdGhpcy5kaXMgPSBkaXMgfHwgMjA7XG4gICAgZGlyID0gZGlyIHx8ICcxMjM0JztcblxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgNTsgaSsrKSB0aGlzWydkJyArIGldID0gZGlyLmluZGV4T2YoaSArICcnKSA+PSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSB0byBpbmRpY2F0ZSB0aGlzIGlzIGEgU2NyZWVuWm9uZS5cbiAgICpcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGlzU2NyZWVuWm9uZSgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIF9kZWFkKHBhcnRpY2xlKSB7XG4gICAgdmFyIHBvcyA9IFRIUkVFVXRpbC50b1NjcmVlblBvcyhcbiAgICAgIHBhcnRpY2xlLnBvc2l0aW9uLFxuICAgICAgdGhpcy5jYW1lcmEsXG4gICAgICB0aGlzLnJlbmRlcmVyLmRvbUVsZW1lbnRcbiAgICApO1xuICAgIHZhciBjYW52YXMgPSB0aGlzLnJlbmRlcmVyLmRvbUVsZW1lbnQ7XG5cbiAgICBpZiAocG9zLnkgKyBwYXJ0aWNsZS5yYWRpdXMgPCAtdGhpcy5kaXMgJiYgdGhpcy5kMSkge1xuICAgICAgcGFydGljbGUuZGVhZCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChwb3MueSAtIHBhcnRpY2xlLnJhZGl1cyA+IGNhbnZhcy5oZWlnaHQgKyB0aGlzLmRpcyAmJiB0aGlzLmQzKSB7XG4gICAgICBwYXJ0aWNsZS5kZWFkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocG9zLnggKyBwYXJ0aWNsZS5yYWRpdXMgPCAtdGhpcy5kaXMgJiYgdGhpcy5kNCkge1xuICAgICAgcGFydGljbGUuZGVhZCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChwb3MueCAtIHBhcnRpY2xlLnJhZGl1cyA+IGNhbnZhcy53aWR0aCArIHRoaXMuZGlzICYmIHRoaXMuZDIpIHtcbiAgICAgIHBhcnRpY2xlLmRlYWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIF9ib3VuZChwYXJ0aWNsZSkge1xuICAgIHZhciBwb3MgPSBUSFJFRVV0aWwudG9TY3JlZW5Qb3MoXG4gICAgICBwYXJ0aWNsZS5wb3NpdGlvbixcbiAgICAgIHRoaXMuY2FtZXJhLFxuICAgICAgdGhpcy5yZW5kZXJlci5kb21FbGVtZW50XG4gICAgKTtcbiAgICB2YXIgY2FudmFzID0gdGhpcy5yZW5kZXJlci5kb21FbGVtZW50O1xuXG4gICAgaWYgKHBvcy55ICsgcGFydGljbGUucmFkaXVzIDwgLXRoaXMuZGlzKSB7XG4gICAgICBwYXJ0aWNsZS52ZWxvY2l0eS55ICo9IC0xO1xuICAgIH0gZWxzZSBpZiAocG9zLnkgLSBwYXJ0aWNsZS5yYWRpdXMgPiBjYW52YXMuaGVpZ2h0ICsgdGhpcy5kaXMpIHtcbiAgICAgIHBhcnRpY2xlLnZlbG9jaXR5LnkgKj0gLTE7XG4gICAgfVxuXG4gICAgaWYgKHBvcy54ICsgcGFydGljbGUucmFkaXVzIDwgLXRoaXMuZGlzKSB7XG4gICAgICBwYXJ0aWNsZS52ZWxvY2l0eS55ICo9IC0xO1xuICAgIH0gZWxzZSBpZiAocG9zLnggLSBwYXJ0aWNsZS5yYWRpdXMgPiBjYW52YXMud2lkdGggKyB0aGlzLmRpcykge1xuICAgICAgcGFydGljbGUudmVsb2NpdHkueSAqPSAtMTtcbiAgICB9XG4gIH1cbn1cblxuU2NyZWVuWm9uZS5wcm90b3R5cGUuZ2V0UG9zaXRpb24gPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB2ZWMyID0gbmV3IFZlY3RvcjNEKCksXG4gICAgY2FudmFzO1xuXG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBjYW52YXMgPSB0aGlzLnJlbmRlcmVyLmRvbUVsZW1lbnQ7XG4gICAgdmVjMi54ID0gTWF0aC5yYW5kb20oKSAqIGNhbnZhcy53aWR0aDtcbiAgICB2ZWMyLnkgPSBNYXRoLnJhbmRvbSgpICogY2FudmFzLmhlaWdodDtcbiAgICB0aGlzLnZlY3Rvci5jb3B5KFRIUkVFVXRpbC50b1NwYWNlUG9zKHZlYzIsIHRoaXMuY2FtZXJhLCBjYW52YXMpKTtcblxuICAgIHJldHVybiB0aGlzLnZlY3RvcjtcbiAgfTtcbn0pKCk7XG5cblNjcmVlblpvbmUucHJvdG90eXBlLl9jcm9zcyA9IChmdW5jdGlvbigpIHtcbiAgdmFyIHZlYzIgPSBuZXcgVmVjdG9yM0QoKTtcblxuICByZXR1cm4gZnVuY3Rpb24ocGFydGljbGUpIHtcbiAgICB2YXIgcG9zID0gVEhSRUVVdGlsLnRvU2NyZWVuUG9zKFxuICAgICAgcGFydGljbGUucG9zaXRpb24sXG4gICAgICB0aGlzLmNhbWVyYSxcbiAgICAgIHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudFxuICAgICk7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudDtcblxuICAgIGlmIChwb3MueSArIHBhcnRpY2xlLnJhZGl1cyA8IC10aGlzLmRpcykge1xuICAgICAgdmVjMi54ID0gcG9zLng7XG4gICAgICB2ZWMyLnkgPSBjYW52YXMuaGVpZ2h0ICsgdGhpcy5kaXMgKyBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgICBwYXJ0aWNsZS5wb3NpdGlvbi55ID0gVEhSRUVVdGlsLnRvU3BhY2VQb3ModmVjMiwgdGhpcy5jYW1lcmEsIGNhbnZhcykueTtcbiAgICB9IGVsc2UgaWYgKHBvcy55IC0gcGFydGljbGUucmFkaXVzID4gY2FudmFzLmhlaWdodCArIHRoaXMuZGlzKSB7XG4gICAgICB2ZWMyLnggPSBwb3MueDtcbiAgICAgIHZlYzIueSA9IC10aGlzLmRpcyAtIHBhcnRpY2xlLnJhZGl1cztcbiAgICAgIHBhcnRpY2xlLnBvc2l0aW9uLnkgPSBUSFJFRVV0aWwudG9TcGFjZVBvcyh2ZWMyLCB0aGlzLmNhbWVyYSwgY2FudmFzKS55O1xuICAgIH1cblxuICAgIGlmIChwb3MueCArIHBhcnRpY2xlLnJhZGl1cyA8IC10aGlzLmRpcykge1xuICAgICAgdmVjMi55ID0gcG9zLnk7XG4gICAgICB2ZWMyLnggPSBjYW52YXMud2lkdGggKyB0aGlzLmRpcyArIHBhcnRpY2xlLnJhZGl1cztcbiAgICAgIHBhcnRpY2xlLnBvc2l0aW9uLnggPSBUSFJFRVV0aWwudG9TcGFjZVBvcyh2ZWMyLCB0aGlzLmNhbWVyYSwgY2FudmFzKS54O1xuICAgIH0gZWxzZSBpZiAocG9zLnggLSBwYXJ0aWNsZS5yYWRpdXMgPiBjYW52YXMud2lkdGggKyB0aGlzLmRpcykge1xuICAgICAgdmVjMi55ID0gcG9zLnk7XG4gICAgICB2ZWMyLnggPSAtdGhpcy5kaXMgLSBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgICBwYXJ0aWNsZS5wb3NpdGlvbi54ID0gVEhSRUVVdGlsLnRvU3BhY2VQb3ModmVjMiwgdGhpcy5jYW1lcmEsIGNhbnZhcykueDtcbiAgICB9XG4gIH07XG59KSgpO1xuIl19
@@ -1,155 +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 _constants = require("../constants");
21
-
22
- var _Util = _interopRequireDefault(require("../utils/Util"));
23
-
24
- var _Vector3D = _interopRequireDefault(require("../math/Vector3D"));
25
-
26
- var _Zone2 = _interopRequireDefault(require("./Zone"));
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
- * A spherical zone for particles to be emitted within.
36
- *
37
- */
38
- var SphereZone = /*#__PURE__*/function (_Zone) {
39
- (0, _inherits2["default"])(SphereZone, _Zone);
40
-
41
- var _super = _createSuper(SphereZone);
42
-
43
- /**
44
- * @constructs {SphereZone}
45
- *
46
- * @param {number} centerX - the sphere's center x coordinate
47
- * @param {number} centerY - the sphere's center y coordinate
48
- * @param {number} centerZ - the sphere's center z coordinate
49
- * @param {number} radius - the sphere's radius value
50
- * @return void
51
- */
52
- function SphereZone(centerX, centerY, centerZ, radius) {
53
- var _this;
54
-
55
- (0, _classCallCheck2["default"])(this, SphereZone);
56
- _this = _super.call(this, _types.ZONE_TYPE_SPHERE); // TODO see below, these should probably be assigned properly
57
- // eslint-disable-next-line
58
-
59
- var x, y, z, r;
60
-
61
- if (_Util["default"].isUndefined(centerY, centerZ, radius)) {
62
- x = y = z = 0;
63
- r = centerX || 100;
64
- } else {
65
- x = centerX; // eslint-disable-next-line
66
-
67
- y = centerY; // eslint-disable-next-line
68
-
69
- z = centerZ;
70
- r = radius;
71
- }
72
-
73
- _this.x = x; // TODO shouldn't this be set to y?
74
-
75
- _this.y = x; // TODO shouldn't this be set to z?
76
-
77
- _this.z = x;
78
- _this.radius = r;
79
- _this.the = _this.phi = 0;
80
- return _this;
81
- }
82
- /**
83
- * Returns true to indicate this is a SphereZone.
84
- *
85
- * @return {boolean}
86
- */
87
-
88
-
89
- (0, _createClass2["default"])(SphereZone, [{
90
- key: "isSphereZone",
91
- value: function isSphereZone() {
92
- return true;
93
- }
94
- /**
95
- * Sets the particle to dead if the particle collides with the sphere.
96
- *
97
- * @param {object} particle
98
- * @return void
99
- */
100
-
101
- }, {
102
- key: "_dead",
103
- value: function _dead(particle) {
104
- var d = particle.position.distanceTo(this);
105
- if (d - particle.radius > this.radius) particle.dead = true;
106
- }
107
- /**
108
- * Warns that this zone does not support the _cross method.
109
- *
110
- * @return void
111
- */
112
-
113
- }, {
114
- key: "_cross",
115
- value: function _cross() {
116
- console.warn("".concat(this.constructor.name, " does not support the _cross method"));
117
- }
118
- }]);
119
- return SphereZone;
120
- }(_Zone2["default"]);
121
-
122
- exports["default"] = SphereZone;
123
-
124
- SphereZone.prototype.getPosition = function () {
125
- var tha, phi, r;
126
- return function () {
127
- this.random = Math.random();
128
- r = this.random * this.radius;
129
- tha = _constants.PI * Math.random(); //[0-pi]
130
-
131
- phi = _constants.PI * 2 * Math.random(); //[0-2pi]
132
-
133
- this.vector.x = this.x + r * Math.sin(tha) * Math.cos(phi);
134
- this.vector.y = this.y + r * Math.sin(phi) * Math.sin(tha);
135
- this.vector.z = this.z + r * Math.cos(tha);
136
- return this.vector;
137
- };
138
- }();
139
-
140
- SphereZone.prototype._bound = function () {
141
- var normal = new _Vector3D["default"](),
142
- v = new _Vector3D["default"](),
143
- k;
144
- return function (particle) {
145
- var d = particle.position.distanceTo(this);
146
-
147
- if (d + particle.radius >= this.radius) {
148
- normal.copy(particle.position).sub(this).normalize();
149
- v.copy(particle.velocity);
150
- k = 2 * v.dot(normal);
151
- particle.velocity.sub(normal.scalar(k));
152
- }
153
- };
154
- }();
155
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy96b25lL1NwaGVyZVpvbmUuanMiXSwibmFtZXMiOlsiU3BoZXJlWm9uZSIsImNlbnRlclgiLCJjZW50ZXJZIiwiY2VudGVyWiIsInJhZGl1cyIsInR5cGUiLCJ4IiwieSIsInoiLCJyIiwiVXRpbCIsImlzVW5kZWZpbmVkIiwidGhlIiwicGhpIiwicGFydGljbGUiLCJkIiwicG9zaXRpb24iLCJkaXN0YW5jZVRvIiwiZGVhZCIsImNvbnNvbGUiLCJ3YXJuIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiWm9uZSIsInByb3RvdHlwZSIsImdldFBvc2l0aW9uIiwidGhhIiwicmFuZG9tIiwiTWF0aCIsIlBJIiwidmVjdG9yIiwic2luIiwiY29zIiwiX2JvdW5kIiwibm9ybWFsIiwiVmVjdG9yM0QiLCJ2IiwiayIsImNvcHkiLCJzdWIiLCJub3JtYWxpemUiLCJ2ZWxvY2l0eSIsImRvdCIsInNjYWxhciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtJQUNxQkEsVTs7Ozs7QUFDbkI7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Usc0JBQVlDLE9BQVosRUFBcUJDLE9BQXJCLEVBQThCQyxPQUE5QixFQUF1Q0MsTUFBdkMsRUFBK0M7QUFBQTs7QUFBQTtBQUM3Qyw4QkFBTUMsdUJBQU4sRUFENkMsQ0FHN0M7QUFDQTs7QUFDQSxRQUFJQyxDQUFKLEVBQU9DLENBQVAsRUFBVUMsQ0FBVixFQUFhQyxDQUFiOztBQUVBLFFBQUlDLGlCQUFLQyxXQUFMLENBQWlCVCxPQUFqQixFQUEwQkMsT0FBMUIsRUFBbUNDLE1BQW5DLENBQUosRUFBZ0Q7QUFDOUNFLE1BQUFBLENBQUMsR0FBR0MsQ0FBQyxHQUFHQyxDQUFDLEdBQUcsQ0FBWjtBQUNBQyxNQUFBQSxDQUFDLEdBQUdSLE9BQU8sSUFBSSxHQUFmO0FBQ0Qs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QUEsTUFBTSxDQUNISSxJQURILENBQ1F4QixRQUFRLENBQUNFLFFBRGpCLEVBRUd1QixHQUZILENBRU8sSUFGUCxFQUdHQyxTQUhIO0FBSUFKLE1BQUFBLENBQUMsQ0FBQ0UsSUFBRixDQUFPeEIsUUFBUSxDQUFDMkIsUUFBaEI7QUFDQUosTUFBQUEsQ0FBQyxHQUFHLElBQUlELENBQUMsQ0FBQ00sR0FBRixDQUFNUixNQUFOLENBQVI7QUFDQXBCLE1BQUFBLFFBQVEsQ0FBQzJCLFFBQVQsQ0FBa0JGLEdBQWxCLENBQXNCTCxNQUFNLENBQUNTLE1BQVAsQ0FBY04sQ0FBZCxDQUF0QjtBQUNEO0FBQ0YsR0FaRDtBQWFELENBbEI2QixFQUE5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBJIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBVdGlsIGZyb20gJy4uL3V0aWxzL1V0aWwnO1xuaW1wb3J0IFZlY3RvcjNEIGZyb20gJy4uL21hdGgvVmVjdG9yM0QnO1xuaW1wb3J0IFpvbmUgZnJvbSAnLi9ab25lJztcbmltcG9ydCB7IFpPTkVfVFlQRV9TUEhFUkUgYXMgdHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEEgc3BoZXJpY2FsIHpvbmUgZm9yIHBhcnRpY2xlcyB0byBiZSBlbWl0dGVkIHdpdGhpbi5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNwaGVyZVpvbmUgZXh0ZW5kcyBab25lIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RzIHtTcGhlcmVab25lfVxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY2VudGVyWCAtIHRoZSBzcGhlcmUncyBjZW50ZXIgeCBjb29yZGluYXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjZW50ZXJZIC0gdGhlIHNwaGVyZSdzIGNlbnRlciB5IGNvb3JkaW5hdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNlbnRlclogLSB0aGUgc3BoZXJlJ3MgY2VudGVyIHogY29vcmRpbmF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gcmFkaXVzIC0gdGhlIHNwaGVyZSdzIHJhZGl1cyB2YWx1ZVxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNlbnRlclgsIGNlbnRlclksIGNlbnRlclosIHJhZGl1cykge1xuICAgIHN1cGVyKHR5cGUpO1xuXG4gICAgLy8gVE9ETyBzZWUgYmVsb3csIHRoZXNlIHNob3VsZCBwcm9iYWJseSBiZSBhc3NpZ25lZCBwcm9wZXJseVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIGxldCB4LCB5LCB6LCByO1xuXG4gICAgaWYgKFV0aWwuaXNVbmRlZmluZWQoY2VudGVyWSwgY2VudGVyWiwgcmFkaXVzKSkge1xuICAgICAgeCA9IHkgPSB6ID0gMDtcbiAgICAgIHIgPSBjZW50ZXJYIHx8IDEwMDtcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IGNlbnRlclg7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIHkgPSBjZW50ZXJZO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICB6ID0gY2VudGVyWjtcbiAgICAgIHIgPSByYWRpdXM7XG4gICAgfVxuXG4gICAgdGhpcy54ID0geDtcblxuICAgIC8vIFRPRE8gc2hvdWxkbid0IHRoaXMgYmUgc2V0IHRvIHk/XG4gICAgdGhpcy55ID0geDtcblxuICAgIC8vIFRPRE8gc2hvdWxkbid0IHRoaXMgYmUgc2V0IHRvIHo/XG4gICAgdGhpcy56ID0geDtcbiAgICB0aGlzLnJhZGl1cyA9IHI7XG4gICAgdGhpcy50aGUgPSB0aGlzLnBoaSA9IDA7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIHRvIGluZGljYXRlIHRoaXMgaXMgYSBTcGhlcmVab25lLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaXNTcGhlcmVab25lKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHBhcnRpY2xlIHRvIGRlYWQgaWYgdGhlIHBhcnRpY2xlIGNvbGxpZGVzIHdpdGggdGhlIHNwaGVyZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpY2xlXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgX2RlYWQocGFydGljbGUpIHtcbiAgICB2YXIgZCA9IHBhcnRpY2xlLnBvc2l0aW9uLmRpc3RhbmNlVG8odGhpcyk7XG5cbiAgICBpZiAoZCAtIHBhcnRpY2xlLnJhZGl1cyA+IHRoaXMucmFkaXVzKSBwYXJ0aWNsZS5kZWFkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYXJucyB0aGF0IHRoaXMgem9uZSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBfY3Jvc3MgbWV0aG9kLlxuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIF9jcm9zcygpIHtcbiAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBfY3Jvc3MgbWV0aG9kYCk7XG4gIH1cbn1cblxuU3BoZXJlWm9uZS5wcm90b3R5cGUuZ2V0UG9zaXRpb24gPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB0aGEsIHBoaSwgcjtcblxuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5yYW5kb20gPSBNYXRoLnJhbmRvbSgpO1xuXG4gICAgciA9IHRoaXMucmFuZG9tICogdGhpcy5yYWRpdXM7XG4gICAgdGhhID0gUEkgKiBNYXRoLnJhbmRvbSgpOyAvL1swLXBpXVxuICAgIHBoaSA9IFBJICogMiAqIE1hdGgucmFuZG9tKCk7IC8vWzAtMnBpXVxuXG4gICAgdGhpcy52ZWN0b3IueCA9IHRoaXMueCArIHIgKiBNYXRoLnNpbih0aGEpICogTWF0aC5jb3MocGhpKTtcbiAgICB0aGlzLnZlY3Rvci55ID0gdGhpcy55ICsgciAqIE1hdGguc2luKHBoaSkgKiBNYXRoLnNpbih0aGEpO1xuICAgIHRoaXMudmVjdG9yLnogPSB0aGlzLnogKyByICogTWF0aC5jb3ModGhhKTtcblxuICAgIHJldHVybiB0aGlzLnZlY3RvcjtcbiAgfTtcbn0pKCk7XG5cblNwaGVyZVpvbmUucHJvdG90eXBlLl9ib3VuZCA9IChmdW5jdGlvbigpIHtcbiAgdmFyIG5vcm1hbCA9IG5ldyBWZWN0b3IzRCgpLFxuICAgIHYgPSBuZXcgVmVjdG9yM0QoKSxcbiAgICBrO1xuXG4gIHJldHVybiBmdW5jdGlvbihwYXJ0aWNsZSkge1xuICAgIHZhciBkID0gcGFydGljbGUucG9zaXRpb24uZGlzdGFuY2VUbyh0aGlzKTtcblxuICAgIGlmIChkICsgcGFydGljbGUucmFkaXVzID49IHRoaXMucmFkaXVzKSB7XG4gICAgICBub3JtYWxcbiAgICAgICAgLmNvcHkocGFydGljbGUucG9zaXRpb24pXG4gICAgICAgIC5zdWIodGhpcylcbiAgICAgICAgLm5vcm1hbGl6ZSgpO1xuICAgICAgdi5jb3B5KHBhcnRpY2xlLnZlbG9jaXR5KTtcbiAgICAgIGsgPSAyICogdi5kb3Qobm9ybWFsKTtcbiAgICAgIHBhcnRpY2xlLnZlbG9jaXR5LnN1Yihub3JtYWwuc2NhbGFyKGspKTtcbiAgICB9XG4gIH07XG59KSgpO1xuIl19
@@ -1,172 +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 _Vector3D = _interopRequireDefault(require("../math/Vector3D"));
15
-
16
- var _types = require("./types");
17
-
18
- /**
19
- * A Zone determines the area in 3D space where an emitter's particles can position
20
- * themselves. They are supplied to both the Position initializer
21
- * and the CrossZone behaviour.
22
- *
23
- * @see {@link '../initialize/Position.js'}
24
- * @see {@link '../behaviour/CrossZone.js'}
25
- * @abstract
26
- */
27
- var Zone = /*#__PURE__*/function () {
28
- /**
29
- * Constructs a Zone instance.
30
- *
31
- * @param {string} type - The zone type
32
- * @return void
33
- */
34
- function Zone() {
35
- var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _types.ZONE_TYPE_ABSTRACT;
36
- (0, _classCallCheck2["default"])(this, Zone);
37
- this.type = type;
38
- this.vector = new _Vector3D["default"](0, 0, 0);
39
- this.random = 0;
40
- this.crossType = 'dead';
41
- this.log = true;
42
- this.supportsCrossing = true;
43
- }
44
-
45
- (0, _createClass2["default"])(Zone, [{
46
- key: "getPosition",
47
- value: function getPosition() {
48
- return null;
49
- }
50
- }, {
51
- key: "crossing",
52
- value: function crossing(particle) {
53
- if (!this.supportsCrossing) {
54
- return console.warn("".concat(this.constructor.name, " does not support the crossing method"));
55
- }
56
-
57
- switch (this.crossType) {
58
- case 'bound':
59
- this._bound(particle);
60
-
61
- break;
62
-
63
- case 'cross':
64
- this._cross(particle);
65
-
66
- break;
67
-
68
- case 'dead':
69
- this._dead(particle);
70
-
71
- break;
72
- }
73
- }
74
- /**
75
- * Determines if this zone is a BoxZone.
76
- *
77
- * @return {boolean}
78
- */
79
-
80
- }, {
81
- key: "isBoxZone",
82
- value: function isBoxZone() {
83
- return false;
84
- }
85
- /**
86
- * Determines if this zone is a LineZone.
87
- *
88
- * @return {boolean}
89
- */
90
-
91
- }, {
92
- key: "isLineZone",
93
- value: function isLineZone() {
94
- return false;
95
- }
96
- /**
97
- * Determines if this zone is a MeshZone.
98
- *
99
- * @return {boolean}
100
- */
101
-
102
- }, {
103
- key: "isMeshZone",
104
- value: function isMeshZone() {
105
- return false;
106
- }
107
- /**
108
- * Determines if this zone is a PointZone.
109
- *
110
- * @return {boolean}
111
- */
112
-
113
- }, {
114
- key: "isPointZone",
115
- value: function isPointZone() {
116
- return false;
117
- }
118
- /**
119
- * Determines if this zone is a ScreenZone.
120
- *
121
- * @return {boolean}
122
- */
123
-
124
- }, {
125
- key: "isScreenZone",
126
- value: function isScreenZone() {
127
- return false;
128
- }
129
- /**
130
- * Determines if this zone is a SphereZone.
131
- *
132
- * @return {boolean}
133
- */
134
-
135
- }, {
136
- key: "isSphereZone",
137
- value: function isSphereZone() {
138
- return false;
139
- }
140
- /**
141
- * Sets the particle's dead property to true if required.
142
- *
143
- * @param {Particle} particle
144
- * @abstract
145
- */
146
-
147
- }, {
148
- key: "_dead",
149
- value: function _dead(particle) {} //eslint-disable-line
150
-
151
- /**
152
- * @abstract
153
- */
154
-
155
- }, {
156
- key: "_bound",
157
- value: function _bound(particle) {} //eslint-disable-line
158
-
159
- /**
160
- * @abstract
161
- */
162
-
163
- }, {
164
- key: "_cross",
165
- value: function _cross(particle) {} //eslint-disable-line
166
-
167
- }]);
168
- return Zone;
169
- }();
170
-
171
- exports["default"] = Zone;
172
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy96b25lL1pvbmUuanMiXSwibmFtZXMiOlsiWm9uZSIsInR5cGUiLCJaT05FX1RZUEVfQUJTVFJBQ1QiLCJ2ZWN0b3IiLCJWZWN0b3IzRCIsInJhbmRvbSIsImNyb3NzVHlwZSIsImxvZyIsInN1cHBvcnRzQ3Jvc3NpbmciLCJwYXJ0aWNsZSIsImNvbnNvbGUiLCJ3YXJuIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiX2JvdW5kIiwiX2Nyb3NzIiwiX2RlYWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDcUJBLEk7QUFDbkI7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Usa0JBQXVDO0FBQUEsUUFBM0JDLElBQTJCLHVFQUFwQkMseUJBQW9CO0FBQUE7QUFDckMsU0FBS0QsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0UsTUFBTCxHQUFjLElBQUlDLG9CQUFKLENBQWEsQ0FBYixFQUFnQixDQUFoQixFQUFtQixDQUFuQixDQUFkO0FBQ0EsU0FBS0MsTUFBTCxHQUFjLENBQWQ7QUFDQSxTQUFLQyxTQUFMLEdBQWlCLE1BQWpCO0FBQ0EsU0FBS0MsR0FBTCxHQUFXLElBQVg7QUFDQSxTQUFLQyxnQkFBTCxHQUF3QixJQUF4QjtBQUNEOzs7O2tDQUVhO0FBQ1osYUFBTyxJQUFQO0FBQ0Q7Ozs2QkFFUUMsUSxFQUFVO0FBQ2pCLFVBQUksQ0FBQyxLQUFLRCxnQkFBVixFQUE0QjtBQUMxQixlQUFPRSxPQUFPLENBQUNDLElBQVIsV0FDRixLQUFLQyxXQUFMLENBQWlCQyxJQURmLDJDQUFQO0FBR0Q7O0FBRUQsY0FBUSxLQUFLUCxTQUFiO0FBQ0UsYUFBSyxPQUFMO0FBQ0UsZUFBS1EsTUFBTCxDQUFZTCxRQUFaOztBQUNBOztBQUVGLGFBQUssT0FBTDtBQUNFLGVBQUtNLE1BQUwsQ0FBWU4sUUFBWjs7QUFDQTs7QUFFRixhQUFLLE1BQUw7QUFDRSxlQUFLTyxLQUFMLENBQVdQLFFBQVg7O0FBQ0E7QUFYSjtBQWFEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7OztnQ0FDYztBQUNWLGFBQU8sS0FBUDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7OztpQ0FDZTtBQUNYLGFBQU8sS0FBUDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7OztpQ0FDZTtBQUNYLGFBQU8sS0FBUDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7OztrQ0FDZ0I7QUFDWixhQUFPLEtBQVA7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7Ozs7bUNBQ2lCO0FBQ2IsYUFBTyxLQUFQO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBOzs7O21DQUNpQjtBQUNiLGFBQU8sS0FBUDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OzBCQUNRQSxRLEVBQVUsQ0FBRSxDLENBQUM7O0FBRW5CO0FBQ0Y7QUFDQTs7OzsyQkFDU0EsUSxFQUFVLENBQUUsQyxDQUFDOztBQUVwQjtBQUNGO0FBQ0E7Ozs7MkJBQ1NBLFEsRUFBVSxDQUFFLEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWZWN0b3IzRCBmcm9tICcuLi9tYXRoL1ZlY3RvcjNEJztcbmltcG9ydCB7IFpPTkVfVFlQRV9BQlNUUkFDVCB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEEgWm9uZSBkZXRlcm1pbmVzIHRoZSBhcmVhIGluIDNEIHNwYWNlIHdoZXJlIGFuIGVtaXR0ZXIncyBwYXJ0aWNsZXMgY2FuIHBvc2l0aW9uXG4gKiB0aGVtc2VsdmVzLiBUaGV5IGFyZSBzdXBwbGllZCB0byBib3RoIHRoZSBQb3NpdGlvbiBpbml0aWFsaXplclxuICogYW5kIHRoZSBDcm9zc1pvbmUgYmVoYXZpb3VyLlxuICpcbiAqIEBzZWUge0BsaW5rICcuLi9pbml0aWFsaXplL1Bvc2l0aW9uLmpzJ31cbiAqIEBzZWUge0BsaW5rICcuLi9iZWhhdmlvdXIvQ3Jvc3Nab25lLmpzJ31cbiAqIEBhYnN0cmFjdFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBab25lIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBab25lIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSAtIFRoZSB6b25lIHR5cGVcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih0eXBlID0gWk9ORV9UWVBFX0FCU1RSQUNUKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnZlY3RvciA9IG5ldyBWZWN0b3IzRCgwLCAwLCAwKTtcbiAgICB0aGlzLnJhbmRvbSA9IDA7XG4gICAgdGhpcy5jcm9zc1R5cGUgPSAnZGVhZCc7XG4gICAgdGhpcy5sb2cgPSB0cnVlO1xuICAgIHRoaXMuc3VwcG9ydHNDcm9zc2luZyA9IHRydWU7XG4gIH1cblxuICBnZXRQb3NpdGlvbigpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNyb3NzaW5nKHBhcnRpY2xlKSB7XG4gICAgaWYgKCF0aGlzLnN1cHBvcnRzQ3Jvc3NpbmcpIHtcbiAgICAgIHJldHVybiBjb25zb2xlLndhcm4oXG4gICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0gZG9lcyBub3Qgc3VwcG9ydCB0aGUgY3Jvc3NpbmcgbWV0aG9kYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRoaXMuY3Jvc3NUeXBlKSB7XG4gICAgICBjYXNlICdib3VuZCc6XG4gICAgICAgIHRoaXMuX2JvdW5kKHBhcnRpY2xlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2Nyb3NzJzpcbiAgICAgICAgdGhpcy5fY3Jvc3MocGFydGljbGUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZGVhZCc6XG4gICAgICAgIHRoaXMuX2RlYWQocGFydGljbGUpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGlzIHpvbmUgaXMgYSBCb3hab25lLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaXNCb3hab25lKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoaXMgem9uZSBpcyBhIExpbmVab25lLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaXNMaW5lWm9uZSgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGlzIHpvbmUgaXMgYSBNZXNoWm9uZS5cbiAgICpcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGlzTWVzaFpvbmUoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhpcyB6b25lIGlzIGEgUG9pbnRab25lLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaXNQb2ludFpvbmUoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhpcyB6b25lIGlzIGEgU2NyZWVuWm9uZS5cbiAgICpcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGlzU2NyZWVuWm9uZSgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGlzIHpvbmUgaXMgYSBTcGhlcmVab25lLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaXNTcGhlcmVab25lKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwYXJ0aWNsZSdzIGRlYWQgcHJvcGVydHkgdG8gdHJ1ZSBpZiByZXF1aXJlZC5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQGFic3RyYWN0XG4gICAqL1xuICBfZGVhZChwYXJ0aWNsZSkge30gLy9lc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgLyoqXG4gICAqIEBhYnN0cmFjdFxuICAgKi9cbiAgX2JvdW5kKHBhcnRpY2xlKSB7fSAvL2VzbGludC1kaXNhYmxlLWxpbmVcblxuICAvKipcbiAgICogQGFic3RyYWN0XG4gICAqL1xuICBfY3Jvc3MocGFydGljbGUpIHt9IC8vZXNsaW50LWRpc2FibGUtbGluZVxufVxuIl19
@@ -1,56 +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
- Object.defineProperty(exports, "BoxZone", {
9
- enumerable: true,
10
- get: function get() {
11
- return _BoxZone["default"];
12
- }
13
- });
14
- Object.defineProperty(exports, "LineZone", {
15
- enumerable: true,
16
- get: function get() {
17
- return _LineZone["default"];
18
- }
19
- });
20
- Object.defineProperty(exports, "MeshZone", {
21
- enumerable: true,
22
- get: function get() {
23
- return _MeshZone["default"];
24
- }
25
- });
26
- Object.defineProperty(exports, "PointZone", {
27
- enumerable: true,
28
- get: function get() {
29
- return _PointZone["default"];
30
- }
31
- });
32
- Object.defineProperty(exports, "ScreenZone", {
33
- enumerable: true,
34
- get: function get() {
35
- return _ScreenZone["default"];
36
- }
37
- });
38
- Object.defineProperty(exports, "SphereZone", {
39
- enumerable: true,
40
- get: function get() {
41
- return _SphereZone["default"];
42
- }
43
- });
44
-
45
- var _BoxZone = _interopRequireDefault(require("./BoxZone"));
46
-
47
- var _LineZone = _interopRequireDefault(require("./LineZone"));
48
-
49
- var _MeshZone = _interopRequireDefault(require("./MeshZone"));
50
-
51
- var _PointZone = _interopRequireDefault(require("./PointZone"));
52
-
53
- var _ScreenZone = _interopRequireDefault(require("./ScreenZone"));
54
-
55
- var _SphereZone = _interopRequireDefault(require("./SphereZone"));
56
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy96b25lL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0IGFzIEJveFpvbmUgfSBmcm9tICcuL0JveFpvbmUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBMaW5lWm9uZSB9IGZyb20gJy4vTGluZVpvbmUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBNZXNoWm9uZSB9IGZyb20gJy4vTWVzaFpvbmUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBQb2ludFpvbmUgfSBmcm9tICcuL1BvaW50Wm9uZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFNjcmVlblpvbmUgfSBmcm9tICcuL1NjcmVlblpvbmUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBTcGhlcmVab25lIH0gZnJvbSAnLi9TcGhlcmVab25lJztcbiJdfQ==
@@ -1,21 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.ZONE_TYPE_SPHERE = exports.ZONE_TYPE_SCREEN = exports.ZONE_TYPE_POINT = exports.ZONE_TYPE_MESH = exports.ZONE_TYPE_LINE = exports.ZONE_TYPE_BOX = exports.ZONE_TYPE_ABSTRACT = void 0;
7
- var ZONE_TYPE_ABSTRACT = 'Zone';
8
- exports.ZONE_TYPE_ABSTRACT = ZONE_TYPE_ABSTRACT;
9
- var ZONE_TYPE_BOX = 'BoxZone';
10
- exports.ZONE_TYPE_BOX = ZONE_TYPE_BOX;
11
- var ZONE_TYPE_LINE = 'LineZone';
12
- exports.ZONE_TYPE_LINE = ZONE_TYPE_LINE;
13
- var ZONE_TYPE_MESH = 'MeshZone';
14
- exports.ZONE_TYPE_MESH = ZONE_TYPE_MESH;
15
- var ZONE_TYPE_POINT = 'PointZone';
16
- exports.ZONE_TYPE_POINT = ZONE_TYPE_POINT;
17
- var ZONE_TYPE_SCREEN = 'ScreenZone';
18
- exports.ZONE_TYPE_SCREEN = ZONE_TYPE_SCREEN;
19
- var ZONE_TYPE_SPHERE = 'SphereZone';
20
- exports.ZONE_TYPE_SPHERE = ZONE_TYPE_SPHERE;
21
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy96b25lL3R5cGVzLmpzIl0sIm5hbWVzIjpbIlpPTkVfVFlQRV9BQlNUUkFDVCIsIlpPTkVfVFlQRV9CT1giLCJaT05FX1RZUEVfTElORSIsIlpPTkVfVFlQRV9NRVNIIiwiWk9ORV9UWVBFX1BPSU5UIiwiWk9ORV9UWVBFX1NDUkVFTiIsIlpPTkVfVFlQRV9TUEhFUkUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFPLElBQU1BLGtCQUFrQixHQUFHLE1BQTNCOztBQUNBLElBQU1DLGFBQWEsR0FBRyxTQUF0Qjs7QUFDQSxJQUFNQyxjQUFjLEdBQUcsVUFBdkI7O0FBQ0EsSUFBTUMsY0FBYyxHQUFHLFVBQXZCOztBQUNBLElBQU1DLGVBQWUsR0FBRyxXQUF4Qjs7QUFDQSxJQUFNQyxnQkFBZ0IsR0FBRyxZQUF6Qjs7QUFDQSxJQUFNQyxnQkFBZ0IsR0FBRyxZQUF6QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBaT05FX1RZUEVfQUJTVFJBQ1QgPSAnWm9uZSc7XG5leHBvcnQgY29uc3QgWk9ORV9UWVBFX0JPWCA9ICdCb3hab25lJztcbmV4cG9ydCBjb25zdCBaT05FX1RZUEVfTElORSA9ICdMaW5lWm9uZSc7XG5leHBvcnQgY29uc3QgWk9ORV9UWVBFX01FU0ggPSAnTWVzaFpvbmUnO1xuZXhwb3J0IGNvbnN0IFpPTkVfVFlQRV9QT0lOVCA9ICdQb2ludFpvbmUnO1xuZXhwb3J0IGNvbnN0IFpPTkVfVFlQRV9TQ1JFRU4gPSAnU2NyZWVuWm9uZSc7XG5leHBvcnQgY29uc3QgWk9ORV9UWVBFX1NQSEVSRSA9ICdTcGhlcmVab25lJztcbiJdfQ==