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.
- package/CHANGELOG.md +10 -0
- package/dist/three-nebula.cjs +109 -0
- package/dist/three-nebula.cjs.map +1 -0
- package/dist/three-nebula.mjs +2968 -0
- package/dist/three-nebula.mjs.map +1 -0
- package/dist/three-nebula.umd.js +109 -0
- package/dist/three-nebula.umd.js.map +1 -0
- package/package.json +23 -47
- package/specs/01-emitter-hierarchy.md +200 -0
- package/specs/02-determinism-scrubbing.md +188 -0
- package/specs/03-sound-renderer.md +183 -0
- package/specs/04-schema-versioning.md +140 -0
- package/specs/05-content-addressed-assets.md +288 -0
- package/specs/README.md +80 -0
- package/build/cjs/behaviour/Alpha.js +0 -189
- package/build/cjs/behaviour/Attraction.js +0 -189
- package/build/cjs/behaviour/Behaviour.js +0 -253
- package/build/cjs/behaviour/Collision.js +0 -146
- package/build/cjs/behaviour/Color.js +0 -148
- package/build/cjs/behaviour/CrossZone.js +0 -141
- package/build/cjs/behaviour/Force.js +0 -126
- package/build/cjs/behaviour/Gravity.js +0 -78
- package/build/cjs/behaviour/RandomDrift.js +0 -153
- package/build/cjs/behaviour/Repulsion.js +0 -123
- package/build/cjs/behaviour/Rotate.js +0 -265
- package/build/cjs/behaviour/Scale.js +0 -177
- package/build/cjs/behaviour/Spring.js +0 -133
- package/build/cjs/behaviour/constants.js +0 -28
- package/build/cjs/behaviour/index.js +0 -112
- package/build/cjs/behaviour/types.js +0 -33
- package/build/cjs/constants/index.js +0 -61
- package/build/cjs/core/Particle.js +0 -390
- package/build/cjs/core/Pool.js +0 -203
- package/build/cjs/core/System.js +0 -366
- package/build/cjs/core/constants.js +0 -163
- package/build/cjs/core/fromJSON.js +0 -128
- package/build/cjs/core/fromJSONAsync.js +0 -239
- package/build/cjs/core/index.js +0 -32
- package/build/cjs/core/three/Euler.js +0 -233
- package/build/cjs/core/three/Math.js +0 -91
- package/build/cjs/core/three/Matrix4.js +0 -745
- package/build/cjs/core/three/Quaternion.js +0 -451
- package/build/cjs/core/three/Vector3.js +0 -464
- package/build/cjs/core/three/constants.js +0 -298
- package/build/cjs/core/three/index.js +0 -48
- package/build/cjs/core/types.js +0 -13
- package/build/cjs/debug/Debug.js +0 -209
- package/build/cjs/debug/constants.js +0 -19
- package/build/cjs/debug/index.js +0 -24
- package/build/cjs/debug/log.js +0 -38
- package/build/cjs/ease/index.js +0 -149
- package/build/cjs/emitter/Emitter.js +0 -798
- package/build/cjs/emitter/FollowEmitter.js +0 -146
- package/build/cjs/emitter/constants.js +0 -20
- package/build/cjs/emitter/index.js +0 -24
- package/build/cjs/emitter/types.js +0 -11
- package/build/cjs/events/EventDispatcher.js +0 -105
- package/build/cjs/events/constants.js +0 -23
- package/build/cjs/events/index.js +0 -27
- package/build/cjs/index.js +0 -151
- package/build/cjs/initializer/Body.js +0 -122
- package/build/cjs/initializer/BodySprite.js +0 -146
- package/build/cjs/initializer/Initializer.js +0 -109
- package/build/cjs/initializer/InitializerUtil.js +0 -54
- package/build/cjs/initializer/Life.js +0 -106
- package/build/cjs/initializer/Mass.js +0 -101
- package/build/cjs/initializer/Position.js +0 -152
- package/build/cjs/initializer/Radius.js +0 -118
- package/build/cjs/initializer/Rate.js +0 -150
- package/build/cjs/initializer/Rotation.js +0 -95
- package/build/cjs/initializer/Texture.js +0 -139
- package/build/cjs/initializer/Velocity/PolarVelocity.js +0 -102
- package/build/cjs/initializer/Velocity/RadialVelocity.js +0 -111
- package/build/cjs/initializer/Velocity/VectorVelocity.js +0 -108
- package/build/cjs/initializer/Velocity/Velocity.js +0 -94
- package/build/cjs/initializer/Velocity/index.js +0 -32
- package/build/cjs/initializer/constants.js +0 -43
- package/build/cjs/initializer/index.js +0 -108
- package/build/cjs/initializer/types.js +0 -37
- package/build/cjs/math/ArraySpan.js +0 -103
- package/build/cjs/math/Box.js +0 -46
- package/build/cjs/math/ColorSpan.js +0 -113
- package/build/cjs/math/MathUtils.js +0 -57
- package/build/cjs/math/Polar3D.js +0 -115
- package/build/cjs/math/Span.js +0 -88
- package/build/cjs/math/Vector3D.js +0 -76
- package/build/cjs/math/constants.js +0 -35
- package/build/cjs/math/index.js +0 -122
- package/build/cjs/math/integration.js +0 -59
- package/build/cjs/math/types.js +0 -19
- package/build/cjs/renderer/BaseRenderer.js +0 -108
- package/build/cjs/renderer/CustomRenderer.js +0 -65
- package/build/cjs/renderer/GPURenderer/Desktop/index.js +0 -371
- package/build/cjs/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +0 -13
- package/build/cjs/renderer/GPURenderer/Desktop/shaders/index.js +0 -22
- package/build/cjs/renderer/GPURenderer/Desktop/shaders/vertexShader.js +0 -17
- package/build/cjs/renderer/GPURenderer/Mobile/index.js +0 -385
- package/build/cjs/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +0 -13
- package/build/cjs/renderer/GPURenderer/Mobile/shaders/index.js +0 -22
- package/build/cjs/renderer/GPURenderer/Mobile/shaders/vertexShader.js +0 -15
- package/build/cjs/renderer/GPURenderer/common/ParticleBuffer/constants.js +0 -58
- package/build/cjs/renderer/GPURenderer/common/ParticleBuffer/index.js +0 -93
- package/build/cjs/renderer/GPURenderer/common/TextureAtlas/constants.js +0 -9
- package/build/cjs/renderer/GPURenderer/common/TextureAtlas/index.js +0 -221
- package/build/cjs/renderer/GPURenderer/common/constants.js +0 -22
- package/build/cjs/renderer/GPURenderer/common/index.js +0 -38
- package/build/cjs/renderer/GPURenderer/common/shaders/constants.js +0 -9
- package/build/cjs/renderer/GPURenderer/common/stores/Target.js +0 -45
- package/build/cjs/renderer/GPURenderer/common/stores/UniqueList.js +0 -51
- package/build/cjs/renderer/GPURenderer/common/stores/index.js +0 -22
- package/build/cjs/renderer/GPURenderer/index.js +0 -97
- package/build/cjs/renderer/MeshRenderer.js +0 -136
- package/build/cjs/renderer/SpriteRenderer.js +0 -68
- package/build/cjs/renderer/index.js +0 -40
- package/build/cjs/renderer/types.js +0 -21
- package/build/cjs/utils/ColorUtil.js +0 -39
- package/build/cjs/utils/PUID.js +0 -26
- package/build/cjs/utils/THREEUtil.js +0 -40
- package/build/cjs/utils/Util.js +0 -69
- package/build/cjs/utils/index.js +0 -61
- package/build/cjs/utils/uid.js +0 -12
- package/build/cjs/zone/BoxZone.js +0 -178
- package/build/cjs/zone/LineZone.js +0 -101
- package/build/cjs/zone/MeshZone.js +0 -101
- package/build/cjs/zone/PointZone.js +0 -99
- package/build/cjs/zone/ScreenZone.js +0 -164
- package/build/cjs/zone/SphereZone.js +0 -155
- package/build/cjs/zone/Zone.js +0 -172
- package/build/cjs/zone/index.js +0 -56
- package/build/cjs/zone/types.js +0 -21
- package/build/esm/behaviour/Alpha.js +0 -134
- package/build/esm/behaviour/Attraction.js +0 -135
- package/build/esm/behaviour/Behaviour.js +0 -215
- package/build/esm/behaviour/Collision.js +0 -100
- package/build/esm/behaviour/Color.js +0 -101
- package/build/esm/behaviour/CrossZone.js +0 -82
- package/build/esm/behaviour/Force.js +0 -83
- package/build/esm/behaviour/Gravity.js +0 -40
- package/build/esm/behaviour/RandomDrift.js +0 -97
- package/build/esm/behaviour/Repulsion.js +0 -81
- package/build/esm/behaviour/Rotate.js +0 -214
- package/build/esm/behaviour/Scale.js +0 -131
- package/build/esm/behaviour/Spring.js +0 -90
- package/build/esm/behaviour/constants.js +0 -11
- package/build/esm/behaviour/index.js +0 -14
- package/build/esm/behaviour/types.js +0 -14
- package/build/esm/constants/index.js +0 -42
- package/build/esm/core/Particle.js +0 -357
- package/build/esm/core/Pool.js +0 -161
- package/build/esm/core/System.js +0 -320
- package/build/esm/core/constants.js +0 -127
- package/build/esm/core/fromJSON.js +0 -107
- package/build/esm/core/fromJSONAsync.js +0 -210
- package/build/esm/core/index.js +0 -4
- package/build/esm/core/three/Euler.js +0 -224
- package/build/esm/core/three/Math.js +0 -84
- package/build/esm/core/three/Matrix4.js +0 -739
- package/build/esm/core/three/Quaternion.js +0 -445
- package/build/esm/core/three/Vector3.js +0 -457
- package/build/esm/core/three/constants.js +0 -148
- package/build/esm/core/three/index.js +0 -5
- package/build/esm/core/types.js +0 -4
- package/build/esm/debug/Debug.js +0 -195
- package/build/esm/debug/constants.js +0 -7
- package/build/esm/debug/index.js +0 -3
- package/build/esm/debug/log.js +0 -31
- package/build/esm/ease/index.js +0 -113
- package/build/esm/emitter/Emitter.js +0 -708
- package/build/esm/emitter/FollowEmitter.js +0 -97
- package/build/esm/emitter/constants.js +0 -7
- package/build/esm/emitter/index.js +0 -3
- package/build/esm/emitter/types.js +0 -3
- package/build/esm/events/EventDispatcher.js +0 -82
- package/build/esm/events/constants.js +0 -9
- package/build/esm/events/index.js +0 -4
- package/build/esm/index.js +0 -13
- package/build/esm/initializer/Body.js +0 -83
- package/build/esm/initializer/BodySprite.js +0 -108
- package/build/esm/initializer/Initializer.js +0 -84
- package/build/esm/initializer/InitializerUtil.js +0 -48
- package/build/esm/initializer/Life.js +0 -66
- package/build/esm/initializer/Mass.js +0 -60
- package/build/esm/initializer/Position.js +0 -98
- package/build/esm/initializer/Radius.js +0 -75
- package/build/esm/initializer/Rate.js +0 -107
- package/build/esm/initializer/Rotation.js +0 -54
- package/build/esm/initializer/Texture.js +0 -101
- package/build/esm/initializer/Velocity/PolarVelocity.js +0 -63
- package/build/esm/initializer/Velocity/RadialVelocity.js +0 -72
- package/build/esm/initializer/Velocity/VectorVelocity.js +0 -69
- package/build/esm/initializer/Velocity/Velocity.js +0 -52
- package/build/esm/initializer/Velocity/index.js +0 -4
- package/build/esm/initializer/constants.js +0 -26
- package/build/esm/initializer/index.js +0 -12
- package/build/esm/initializer/types.js +0 -16
- package/build/esm/math/ArraySpan.js +0 -62
- package/build/esm/math/Box.js +0 -25
- package/build/esm/math/ColorSpan.js +0 -71
- package/build/esm/math/MathUtils.js +0 -48
- package/build/esm/math/Polar3D.js +0 -81
- package/build/esm/math/Span.js +0 -63
- package/build/esm/math/Vector3D.js +0 -34
- package/build/esm/math/constants.js +0 -24
- package/build/esm/math/index.js +0 -10
- package/build/esm/math/integration.js +0 -47
- package/build/esm/math/types.js +0 -7
- package/build/esm/renderer/BaseRenderer.js +0 -78
- package/build/esm/renderer/CustomRenderer.js +0 -23
- package/build/esm/renderer/GPURenderer/Desktop/index.js +0 -357
- package/build/esm/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +0 -30
- package/build/esm/renderer/GPURenderer/Desktop/shaders/index.js +0 -3
- package/build/esm/renderer/GPURenderer/Desktop/shaders/vertexShader.js +0 -36
- package/build/esm/renderer/GPURenderer/Mobile/index.js +0 -375
- package/build/esm/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +0 -27
- package/build/esm/renderer/GPURenderer/Mobile/shaders/index.js +0 -3
- package/build/esm/renderer/GPURenderer/Mobile/shaders/vertexShader.js +0 -33
- package/build/esm/renderer/GPURenderer/common/ParticleBuffer/constants.js +0 -30
- package/build/esm/renderer/GPURenderer/common/ParticleBuffer/index.js +0 -70
- package/build/esm/renderer/GPURenderer/common/TextureAtlas/constants.js +0 -2
- package/build/esm/renderer/GPURenderer/common/TextureAtlas/index.js +0 -206
- package/build/esm/renderer/GPURenderer/common/constants.js +0 -13
- package/build/esm/renderer/GPURenderer/common/index.js +0 -4
- package/build/esm/renderer/GPURenderer/common/shaders/constants.js +0 -2
- package/build/esm/renderer/GPURenderer/common/stores/Target.js +0 -26
- package/build/esm/renderer/GPURenderer/common/stores/UniqueList.js +0 -29
- package/build/esm/renderer/GPURenderer/common/stores/index.js +0 -3
- package/build/esm/renderer/GPURenderer/index.js +0 -57
- package/build/esm/renderer/MeshRenderer.js +0 -93
- package/build/esm/renderer/SpriteRenderer.js +0 -30
- package/build/esm/renderer/index.js +0 -5
- package/build/esm/renderer/types.js +0 -8
- package/build/esm/utils/ColorUtil.js +0 -32
- package/build/esm/utils/PUID.js +0 -19
- package/build/esm/utils/THREEUtil.js +0 -31
- package/build/esm/utils/Util.js +0 -60
- package/build/esm/utils/index.js +0 -13
- package/build/esm/utils/uid.js +0 -3
- package/build/esm/zone/BoxZone.js +0 -133
- package/build/esm/zone/LineZone.js +0 -61
- package/build/esm/zone/MeshZone.js +0 -60
- package/build/esm/zone/PointZone.js +0 -59
- package/build/esm/zone/ScreenZone.js +0 -116
- package/build/esm/zone/SphereZone.js +0 -113
- package/build/esm/zone/Zone.js +0 -141
- package/build/esm/zone/index.js +0 -7
- package/build/esm/zone/types.js +0 -8
- package/build/three-nebula.js +0 -2
- package/build/three-nebula.js.map +0 -1
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { Vector3 } from '../core/three/';
|
|
2
|
-
export default {
|
|
3
|
-
toScreenPos: function () {
|
|
4
|
-
var vector = new Vector3();
|
|
5
|
-
return function (pos, camera, canvas) {
|
|
6
|
-
vector.copy(pos); // map to normalized device coordinate (NDC) space
|
|
7
|
-
|
|
8
|
-
vector.project(camera); // map to 2D screen space
|
|
9
|
-
|
|
10
|
-
vector.x = Math.round((vector.x + 1) * canvas.width / 2);
|
|
11
|
-
vector.y = Math.round((-vector.y + 1) * canvas.height / 2);
|
|
12
|
-
vector.z = 0;
|
|
13
|
-
return vector;
|
|
14
|
-
};
|
|
15
|
-
}(),
|
|
16
|
-
toSpacePos: function () {
|
|
17
|
-
var vector = new Vector3(),
|
|
18
|
-
dir = new Vector3(),
|
|
19
|
-
distance;
|
|
20
|
-
return function (pos, camera, canvas) {
|
|
21
|
-
vector.set(pos.x / canvas.width * 2 - 1, -(pos.y / canvas.height) * 2 + 1, 0.5);
|
|
22
|
-
vector.unproject(camera);
|
|
23
|
-
dir.copy(vector.sub(camera.position).normalize());
|
|
24
|
-
distance = -camera.position.z / dir.z;
|
|
25
|
-
vector.copy(camera.position);
|
|
26
|
-
vector.add(dir.multiplyScalar(distance));
|
|
27
|
-
return vector;
|
|
28
|
-
};
|
|
29
|
-
}()
|
|
30
|
-
};
|
|
31
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9USFJFRVV0aWwuanMiXSwibmFtZXMiOlsiVmVjdG9yMyIsInRvU2NyZWVuUG9zIiwidmVjdG9yIiwicG9zIiwiY2FtZXJhIiwiY2FudmFzIiwiY29weSIsInByb2plY3QiLCJ4IiwiTWF0aCIsInJvdW5kIiwid2lkdGgiLCJ5IiwiaGVpZ2h0IiwieiIsInRvU3BhY2VQb3MiLCJkaXIiLCJkaXN0YW5jZSIsInNldCIsInVucHJvamVjdCIsInN1YiIsInBvc2l0aW9uIiwibm9ybWFsaXplIiwiYWRkIiwibXVsdGlwbHlTY2FsYXIiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLE9BQVQsUUFBd0IsZ0JBQXhCO0FBRUEsZUFBZTtBQUNiQyxFQUFBQSxXQUFXLEVBQUcsWUFBVztBQUN2QixRQUFJQyxNQUFNLEdBQUcsSUFBSUYsT0FBSixFQUFiO0FBRUEsV0FBTyxVQUFTRyxHQUFULEVBQWNDLE1BQWQsRUFBc0JDLE1BQXRCLEVBQThCO0FBQ25DSCxNQUFBQSxNQUFNLENBQUNJLElBQVAsQ0FBWUgsR0FBWixFQURtQyxDQUVuQzs7QUFDQUQsTUFBQUEsTUFBTSxDQUFDSyxPQUFQLENBQWVILE1BQWYsRUFIbUMsQ0FJbkM7O0FBQ0FGLE1BQUFBLE1BQU0sQ0FBQ00sQ0FBUCxHQUFXQyxJQUFJLENBQUNDLEtBQUwsQ0FBWSxDQUFDUixNQUFNLENBQUNNLENBQVAsR0FBVyxDQUFaLElBQWlCSCxNQUFNLENBQUNNLEtBQXpCLEdBQWtDLENBQTdDLENBQVg7QUFDQVQsTUFBQUEsTUFBTSxDQUFDVSxDQUFQLEdBQVdILElBQUksQ0FBQ0MsS0FBTCxDQUFZLENBQUMsQ0FBQ1IsTUFBTSxDQUFDVSxDQUFSLEdBQVksQ0FBYixJQUFrQlAsTUFBTSxDQUFDUSxNQUExQixHQUFvQyxDQUEvQyxDQUFYO0FBQ0FYLE1BQUFBLE1BQU0sQ0FBQ1ksQ0FBUCxHQUFXLENBQVg7QUFFQSxhQUFPWixNQUFQO0FBQ0QsS0FWRDtBQVdELEdBZFksRUFEQTtBQWlCYmEsRUFBQUEsVUFBVSxFQUFHLFlBQVc7QUFDdEIsUUFBSWIsTUFBTSxHQUFHLElBQUlGLE9BQUosRUFBYjtBQUFBLFFBQ0VnQixHQUFHLEdBQUcsSUFBSWhCLE9BQUosRUFEUjtBQUFBLFFBRUVpQixRQUZGO0FBSUEsV0FBTyxVQUFTZCxHQUFULEVBQWNDLE1BQWQsRUFBc0JDLE1BQXRCLEVBQThCO0FBQ25DSCxNQUFBQSxNQUFNLENBQUNnQixHQUFQLENBQ0dmLEdBQUcsQ0FBQ0ssQ0FBSixHQUFRSCxNQUFNLENBQUNNLEtBQWhCLEdBQXlCLENBQXpCLEdBQTZCLENBRC9CLEVBRUUsRUFBRVIsR0FBRyxDQUFDUyxDQUFKLEdBQVFQLE1BQU0sQ0FBQ1EsTUFBakIsSUFBMkIsQ0FBM0IsR0FBK0IsQ0FGakMsRUFHRSxHQUhGO0FBS0FYLE1BQUFBLE1BQU0sQ0FBQ2lCLFNBQVAsQ0FBaUJmLE1BQWpCO0FBRUFZLE1BQUFBLEdBQUcsQ0FBQ1YsSUFBSixDQUFTSixNQUFNLENBQUNrQixHQUFQLENBQVdoQixNQUFNLENBQUNpQixRQUFsQixFQUE0QkMsU0FBNUIsRUFBVDtBQUNBTCxNQUFBQSxRQUFRLEdBQUcsQ0FBQ2IsTUFBTSxDQUFDaUIsUUFBUCxDQUFnQlAsQ0FBakIsR0FBcUJFLEdBQUcsQ0FBQ0YsQ0FBcEM7QUFDQVosTUFBQUEsTUFBTSxDQUFDSSxJQUFQLENBQVlGLE1BQU0sQ0FBQ2lCLFFBQW5CO0FBQ0FuQixNQUFBQSxNQUFNLENBQUNxQixHQUFQLENBQVdQLEdBQUcsQ0FBQ1EsY0FBSixDQUFtQlAsUUFBbkIsQ0FBWDtBQUVBLGFBQU9mLE1BQVA7QUFDRCxLQWREO0FBZUQsR0FwQlc7QUFqQkMsQ0FBZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZlY3RvcjMgfSBmcm9tICcuLi9jb3JlL3RocmVlLyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdG9TY3JlZW5Qb3M6IChmdW5jdGlvbigpIHtcbiAgICB2YXIgdmVjdG9yID0gbmV3IFZlY3RvcjMoKTtcblxuICAgIHJldHVybiBmdW5jdGlvbihwb3MsIGNhbWVyYSwgY2FudmFzKSB7XG4gICAgICB2ZWN0b3IuY29weShwb3MpO1xuICAgICAgLy8gbWFwIHRvIG5vcm1hbGl6ZWQgZGV2aWNlIGNvb3JkaW5hdGUgKE5EQykgc3BhY2VcbiAgICAgIHZlY3Rvci5wcm9qZWN0KGNhbWVyYSk7XG4gICAgICAvLyBtYXAgdG8gMkQgc2NyZWVuIHNwYWNlXG4gICAgICB2ZWN0b3IueCA9IE1hdGgucm91bmQoKCh2ZWN0b3IueCArIDEpICogY2FudmFzLndpZHRoKSAvIDIpO1xuICAgICAgdmVjdG9yLnkgPSBNYXRoLnJvdW5kKCgoLXZlY3Rvci55ICsgMSkgKiBjYW52YXMuaGVpZ2h0KSAvIDIpO1xuICAgICAgdmVjdG9yLnogPSAwO1xuXG4gICAgICByZXR1cm4gdmVjdG9yO1xuICAgIH07XG4gIH0pKCksXG5cbiAgdG9TcGFjZVBvczogKGZ1bmN0aW9uKCkge1xuICAgIHZhciB2ZWN0b3IgPSBuZXcgVmVjdG9yMygpLFxuICAgICAgZGlyID0gbmV3IFZlY3RvcjMoKSxcbiAgICAgIGRpc3RhbmNlO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uKHBvcywgY2FtZXJhLCBjYW52YXMpIHtcbiAgICAgIHZlY3Rvci5zZXQoXG4gICAgICAgIChwb3MueCAvIGNhbnZhcy53aWR0aCkgKiAyIC0gMSxcbiAgICAgICAgLShwb3MueSAvIGNhbnZhcy5oZWlnaHQpICogMiArIDEsXG4gICAgICAgIDAuNVxuICAgICAgKTtcbiAgICAgIHZlY3Rvci51bnByb2plY3QoY2FtZXJhKTtcblxuICAgICAgZGlyLmNvcHkodmVjdG9yLnN1YihjYW1lcmEucG9zaXRpb24pLm5vcm1hbGl6ZSgpKTtcbiAgICAgIGRpc3RhbmNlID0gLWNhbWVyYS5wb3NpdGlvbi56IC8gZGlyLno7XG4gICAgICB2ZWN0b3IuY29weShjYW1lcmEucG9zaXRpb24pO1xuICAgICAgdmVjdG9yLmFkZChkaXIubXVsdGlwbHlTY2FsYXIoZGlzdGFuY2UpKTtcblxuICAgICAgcmV0dXJuIHZlY3RvcjtcbiAgICB9O1xuICB9KSgpLFxufTtcbiJdfQ==
|
package/build/esm/utils/Util.js
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
initValue: function (value, defaults) {
|
|
3
|
-
var _value = value != null && value != undefined ? value : defaults;
|
|
4
|
-
|
|
5
|
-
return _value;
|
|
6
|
-
},
|
|
7
|
-
isArray: function (value) {
|
|
8
|
-
return Object.prototype.toString.call(value) === '[object Array]';
|
|
9
|
-
},
|
|
10
|
-
destroyArray: function (array) {
|
|
11
|
-
array.length = 0;
|
|
12
|
-
},
|
|
13
|
-
destroyObject: function (obj) {
|
|
14
|
-
for (var o in obj) delete obj[o];
|
|
15
|
-
},
|
|
16
|
-
isUndefined: function () {
|
|
17
|
-
for (var id in arguments) {
|
|
18
|
-
var arg = arguments[id];
|
|
19
|
-
if (arg !== undefined) return false;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
return true;
|
|
23
|
-
},
|
|
24
|
-
setVectorByObj: function (target, pOBJ) {
|
|
25
|
-
if (pOBJ['x'] !== undefined) target.position.x = pOBJ['x'];
|
|
26
|
-
if (pOBJ['y'] !== undefined) target.position.y = pOBJ['y'];
|
|
27
|
-
if (pOBJ['z'] !== undefined) target.position.z = pOBJ['z'];
|
|
28
|
-
if (pOBJ['vx'] !== undefined) target.velocity.x = pOBJ['vx'];
|
|
29
|
-
if (pOBJ['vy'] !== undefined) target.velocity.y = pOBJ['vy'];
|
|
30
|
-
if (pOBJ['vz'] !== undefined) target.velocity.z = pOBJ['vz'];
|
|
31
|
-
if (pOBJ['ax'] !== undefined) target.acceleration.x = pOBJ['ax'];
|
|
32
|
-
if (pOBJ['ay'] !== undefined) target.acceleration.y = pOBJ['ay'];
|
|
33
|
-
if (pOBJ['az'] !== undefined) target.acceleration.z = pOBJ['az'];
|
|
34
|
-
if (pOBJ['p'] !== undefined) target.position.copy(pOBJ['p']);
|
|
35
|
-
if (pOBJ['v'] !== undefined) target.velocity.copy(pOBJ['v']);
|
|
36
|
-
if (pOBJ['a'] !== undefined) target.acceleration.copy(pOBJ['a']);
|
|
37
|
-
if (pOBJ['position'] !== undefined) target.position.copy(pOBJ['position']);
|
|
38
|
-
if (pOBJ['velocity'] !== undefined) target.velocity.copy(pOBJ['velocity']);
|
|
39
|
-
if (pOBJ['accelerate'] !== undefined) target.acceleration.copy(pOBJ['accelerate']);
|
|
40
|
-
},
|
|
41
|
-
//set prototype
|
|
42
|
-
setPrototypeByObj: function (target, proObj, filters) {
|
|
43
|
-
for (var key in proObj) {
|
|
44
|
-
// eslint-disable-next-line no-prototype-builtins
|
|
45
|
-
if (target.hasOwnProperty(key)) {
|
|
46
|
-
if (filters) {
|
|
47
|
-
if (filters.indexOf(key) < 0) target[key] = this._getValue(proObj[key]);
|
|
48
|
-
} else {
|
|
49
|
-
target[key] = this._getValue(proObj[key]);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return target;
|
|
55
|
-
},
|
|
56
|
-
_getValue: function (pan) {
|
|
57
|
-
if (pan.constructor.type === 'Span') return pan.getValue();else return pan;
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9VdGlsLmpzIl0sIm5hbWVzIjpbImluaXRWYWx1ZSIsInZhbHVlIiwiZGVmYXVsdHMiLCJfdmFsdWUiLCJ1bmRlZmluZWQiLCJpc0FycmF5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwiZGVzdHJveUFycmF5IiwiYXJyYXkiLCJsZW5ndGgiLCJkZXN0cm95T2JqZWN0Iiwib2JqIiwibyIsImlzVW5kZWZpbmVkIiwiaWQiLCJhcmd1bWVudHMiLCJhcmciLCJzZXRWZWN0b3JCeU9iaiIsInRhcmdldCIsInBPQkoiLCJwb3NpdGlvbiIsIngiLCJ5IiwieiIsInZlbG9jaXR5IiwiYWNjZWxlcmF0aW9uIiwiY29weSIsInNldFByb3RvdHlwZUJ5T2JqIiwicHJvT2JqIiwiZmlsdGVycyIsImtleSIsImhhc093blByb3BlcnR5IiwiaW5kZXhPZiIsIl9nZXRWYWx1ZSIsInBhbiIsImNvbnN0cnVjdG9yIiwidHlwZSIsImdldFZhbHVlIl0sIm1hcHBpbmdzIjoiQUFBQSxlQUFlO0FBQ2JBLEVBQUFBLFNBQVMsRUFBRSxVQUFTQyxLQUFULEVBQWdCQyxRQUFoQixFQUEwQjtBQUNuQyxRQUFJQyxNQUFNLEdBQUdGLEtBQUssSUFBSSxJQUFULElBQWlCQSxLQUFLLElBQUlHLFNBQTFCLEdBQXNDSCxLQUF0QyxHQUE4Q0MsUUFBM0Q7O0FBRUEsV0FBT0MsTUFBUDtBQUNELEdBTFk7QUFPYkUsRUFBQUEsT0FBTyxFQUFFLFVBQVNKLEtBQVQsRUFBZ0I7QUFDdkIsV0FBT0ssTUFBTSxDQUFDQyxTQUFQLENBQWlCQyxRQUFqQixDQUEwQkMsSUFBMUIsQ0FBK0JSLEtBQS9CLE1BQTBDLGdCQUFqRDtBQUNELEdBVFk7QUFXYlMsRUFBQUEsWUFBWSxFQUFFLFVBQVNDLEtBQVQsRUFBZ0I7QUFDNUJBLElBQUFBLEtBQUssQ0FBQ0MsTUFBTixHQUFlLENBQWY7QUFDRCxHQWJZO0FBZWJDLEVBQUFBLGFBQWEsRUFBRSxV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QXFCbEIsU0FBekIsRUFBb0NpQixNQUFNLENBQUNNLFFBQVAsQ0FBZ0JFLElBQWhCLENBQXFCUCxJQUFJLENBQUMsVUFBRCxDQUF6QjtBQUNwQyxRQUFJQSxJQUFJLENBQUMsWUFBRCxDQUFKLEtBQXVCbEIsU0FBM0IsRUFDRWlCLE1BQU0sQ0FBQ08sWUFBUCxDQUFvQkMsSUFBcEIsQ0FBeUJQLElBQUksQ0FBQyxZQUFELENBQTdCO0FBQ0gsR0FsRFk7QUFvRGI7QUFDQVEsRUFBQUEsaUJBQWlCLEVBQUUsVUFBU1QsTUFBVCxFQUFpQlUsTUFBakIsRUFBeUJDLE9BQXpCLEVBQWtDO0FBQ25ELFNBQUssSUFBSUMsR0FBVCxJQUFnQkYsTUFBaEIsRUFBd0I7QUFDdEI7QUFDQSxVQUFJVixNQUFNLENBQUNhLGNBQVAsQ0FBc0JELEdBQXRCLENBQUosRUFBZ0M7QUFDOUIsWUFBSUQsT0FBSixFQUFhO0FBQ1gsY0FBSUEsT0FBTyxDQUFDRyxPQUFSLENBQWdCRixHQUFoQixJQUF1QixDQUEzQixFQUNFWixNQUFNLENBQUNZLEdBQUQsQ0FBTixHQUFjLEtBQUtHLFNBQUwsQ0FBZUwsTUFBTSxDQUFDRSxHQUFELENBQXJCLENBQWQ7QUFDSCxTQUhELE1BR087QUFDTFosVUFBQUEsTUFBTSxDQUFDWSxHQUFELENBQU4sR0FBYyxLQUFLRyxTQUFMLENBQWVMLE1BQU0sQ0FBQ0UsR0FBRCxDQUFyQixDQUFkO0FBQ0Q7QUFDRjtBQUNGOztBQUVELFdBQU9aLE1BQVA7QUFDRCxHQW5FWTtBQXFFYmUsRUFBQUEsU0FBUyxFQUFFLFVBQVNDLEdBQVQsRUFBYztBQUN2QixRQUFJQSxHQUFHLENBQUNDLFdBQUosQ0FBZ0JDLElBQWhCLEtBQXlCLE1BQTdCLEVBQXFDLE9BQU9GLEdBQUcsQ0FBQ0csUUFBSixFQUFQLENBQXJDLEtBQ0ssT0FBT0gsR0FBUDtBQUNOO0FBeEVZLENBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIGluaXRWYWx1ZTogZnVuY3Rpb24odmFsdWUsIGRlZmF1bHRzKSB7XG4gICAgdmFyIF92YWx1ZSA9IHZhbHVlICE9IG51bGwgJiYgdmFsdWUgIT0gdW5kZWZpbmVkID8gdmFsdWUgOiBkZWZhdWx0cztcblxuICAgIHJldHVybiBfdmFsdWU7XG4gIH0sXG5cbiAgaXNBcnJheTogZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbiAgfSxcblxuICBkZXN0cm95QXJyYXk6IGZ1bmN0aW9uKGFycmF5KSB7XG4gICAgYXJyYXkubGVuZ3RoID0gMDtcbiAgfSxcblxuICBkZXN0cm95T2JqZWN0OiBmdW5jdGlvbihvYmopIHtcbiAgICBmb3IgKHZhciBvIGluIG9iaikgZGVsZXRlIG9ialtvXTtcbiAgfSxcblxuICBpc1VuZGVmaW5lZDogZnVuY3Rpb24oKSB7XG4gICAgZm9yICh2YXIgaWQgaW4gYXJndW1lbnRzKSB7XG4gICAgICB2YXIgYXJnID0gYXJndW1lbnRzW2lkXTtcblxuICAgICAgaWYgKGFyZyAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG5cbiAgc2V0VmVjdG9yQnlPYmo6IGZ1bmN0aW9uKHRhcmdldCwgcE9CSikge1xuICAgIGlmIChwT0JKWyd4J10gIT09IHVuZGVmaW5lZCkgdGFyZ2V0LnBvc2l0aW9uLnggPSBwT0JKWyd4J107XG4gICAgaWYgKHBPQkpbJ3knXSAhPT0gdW5kZWZpbmVkKSB0YXJnZXQucG9zaXRpb24ueSA9IHBPQkpbJ3knXTtcbiAgICBpZiAocE9CSlsneiddICE9PSB1bmRlZmluZWQpIHRhcmdldC5wb3NpdGlvbi56ID0gcE9CSlsneiddO1xuXG4gICAgaWYgKHBPQkpbJ3Z4J10gIT09IHVuZGVmaW5lZCkgdGFyZ2V0LnZlbG9jaXR5LnggPSBwT0JKWyd2eCddO1xuICAgIGlmIChwT0JKWyd2eSddICE9PSB1bmRlZmluZWQpIHRhcmdldC52ZWxvY2l0eS55ID0gcE9CSlsndnknXTtcbiAgICBpZiAocE9CSlsndnonXSAhPT0gdW5kZWZpbmVkKSB0YXJnZXQudmVsb2NpdHkueiA9IHBPQkpbJ3Z6J107XG5cbiAgICBpZiAocE9CSlsnYXgnXSAhPT0gdW5kZWZpbmVkKSB0YXJnZXQuYWNjZWxlcmF0aW9uLnggPSBwT0JKWydheCddO1xuICAgIGlmIChwT0JKWydheSddICE9PSB1bmRlZmluZWQpIHRhcmdldC5hY2NlbGVyYXRpb24ueSA9IHBPQkpbJ2F5J107XG4gICAgaWYgKHBPQkpbJ2F6J10gIT09IHVuZGVmaW5lZCkgdGFyZ2V0LmFjY2VsZXJhdGlvbi56ID0gcE9CSlsnYXonXTtcblxuICAgIGlmIChwT0JKWydwJ10gIT09IHVuZGVmaW5lZCkgdGFyZ2V0LnBvc2l0aW9uLmNvcHkocE9CSlsncCddKTtcbiAgICBpZiAocE9CSlsndiddICE9PSB1bmRlZmluZWQpIHRhcmdldC52ZWxvY2l0eS5jb3B5KHBPQkpbJ3YnXSk7XG4gICAgaWYgKHBPQkpbJ2EnXSAhPT0gdW5kZWZpbmVkKSB0YXJnZXQuYWNjZWxlcmF0aW9uLmNvcHkocE9CSlsnYSddKTtcblxuICAgIGlmIChwT0JKWydwb3NpdGlvbiddICE9PSB1bmRlZmluZWQpIHRhcmdldC5wb3NpdGlvbi5jb3B5KHBPQkpbJ3Bvc2l0aW9uJ10pO1xuICAgIGlmIChwT0JKWyd2ZWxvY2l0eSddICE9PSB1bmRlZmluZWQpIHRhcmdldC52ZWxvY2l0eS5jb3B5KHBPQkpbJ3ZlbG9jaXR5J10pO1xuICAgIGlmIChwT0JKWydhY2NlbGVyYXRlJ10gIT09IHVuZGVmaW5lZClcbiAgICAgIHRhcmdldC5hY2NlbGVyYXRpb24uY29weShwT0JKWydhY2NlbGVyYXRlJ10pO1xuICB9LFxuXG4gIC8vc2V0IHByb3RvdHlwZVxuICBzZXRQcm90b3R5cGVCeU9iajogZnVuY3Rpb24odGFyZ2V0LCBwcm9PYmosIGZpbHRlcnMpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gcHJvT2JqKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gICAgICBpZiAodGFyZ2V0Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgaWYgKGZpbHRlcnMpIHtcbiAgICAgICAgICBpZiAoZmlsdGVycy5pbmRleE9mKGtleSkgPCAwKVxuICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSB0aGlzLl9nZXRWYWx1ZShwcm9PYmpba2V5XSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSB0aGlzLl9nZXRWYWx1ZShwcm9PYmpba2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9LFxuXG4gIF9nZXRWYWx1ZTogZnVuY3Rpb24ocGFuKSB7XG4gICAgaWYgKHBhbi5jb25zdHJ1Y3Rvci50eXBlID09PSAnU3BhbicpIHJldHVybiBwYW4uZ2V0VmFsdWUoKTtcbiAgICBlbHNlIHJldHVybiBwYW47XG4gIH0sXG59O1xuIl19
|
package/build/esm/utils/index.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
|
|
3
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
4
|
-
|
|
5
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
6
|
-
|
|
7
|
-
export { default as ColorUtil } from './ColorUtil';
|
|
8
|
-
export { default as PUID } from './PUID';
|
|
9
|
-
export { default as THREEUtil } from './THREEUtil';
|
|
10
|
-
export { default as Util } from './Util';
|
|
11
|
-
export { default as uid } from './uid';
|
|
12
|
-
export const withDefaults = (defaults, properties) => _objectSpread(_objectSpread({}, defaults), properties);
|
|
13
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9pbmRleC5qcyJdLCJuYW1lcyI6WyJkZWZhdWx0IiwiQ29sb3JVdGlsIiwiUFVJRCIsIlRIUkVFVXRpbCIsIlV0aWwiLCJ1aWQiLCJ3aXRoRGVmYXVsdHMiLCJkZWZhdWx0cyIsInByb3BlcnRpZXMiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLFNBQVNBLE9BQU8sSUFBSUMsU0FBcEIsUUFBcUMsYUFBckM7QUFDQSxTQUFTRCxPQUFPLElBQUlFLElBQXBCLFFBQWdDLFFBQWhDO0FBQ0EsU0FBU0YsT0FBTyxJQUFJRyxTQUFwQixRQUFxQyxhQUFyQztBQUNBLFNBQVNILE9BQU8sSUFBSUksSUFBcEIsUUFBZ0MsUUFBaEM7QUFDQSxTQUFTSixPQUFPLElBQUlLLEdBQXBCLFFBQStCLE9BQS9CO0FBRUEsT0FBTyxNQUFNQyxZQUFZLEdBQUcsQ0FBQ0MsUUFBRCxFQUFXQyxVQUFYLHFDQUN2QkQsUUFEdUIsR0FFdkJDLFVBRnVCLENBQXJCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCBhcyBDb2xvclV0aWwgfSBmcm9tICcuL0NvbG9yVXRpbCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFBVSUQgfSBmcm9tICcuL1BVSUQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBUSFJFRVV0aWwgfSBmcm9tICcuL1RIUkVFVXRpbCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFV0aWwgfSBmcm9tICcuL1V0aWwnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1aWQgfSBmcm9tICcuL3VpZCc7XG5cbmV4cG9ydCBjb25zdCB3aXRoRGVmYXVsdHMgPSAoZGVmYXVsdHMsIHByb3BlcnRpZXMpID0+ICh7XG4gIC4uLmRlZmF1bHRzLFxuICAuLi5wcm9wZXJ0aWVzLFxufSk7XG4iXX0=
|
package/build/esm/utils/uid.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { v1 as uid } from 'uuid';
|
|
2
|
-
export default uid;
|
|
3
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy91aWQuanMiXSwibmFtZXMiOlsidjEiLCJ1aWQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLEVBQUUsSUFBSUMsR0FBZixRQUEwQixNQUExQjtBQUVBLGVBQWVBLEdBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2MSBhcyB1aWQgfSBmcm9tICd1dWlkJztcblxuZXhwb3J0IGRlZmF1bHQgdWlkO1xuIl19
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import MathUtils from '../math/MathUtils';
|
|
2
|
-
import Util from '../utils/Util';
|
|
3
|
-
import Zone from './Zone';
|
|
4
|
-
import { ZONE_TYPE_BOX as type } from './types';
|
|
5
|
-
export default class BoxZone extends Zone {
|
|
6
|
-
/**
|
|
7
|
-
* BoxZone is a box zone
|
|
8
|
-
* @param {Number|Vector3D} x - the position's x value or a Vector3D Object
|
|
9
|
-
* @param {Number} y - the position's y value
|
|
10
|
-
* @param {Number} z - the position's z value
|
|
11
|
-
* @param {Number} w - the Box's width
|
|
12
|
-
* @param {Number} h - the Box's height
|
|
13
|
-
* @param {Number} d - the Box's depth
|
|
14
|
-
* @example
|
|
15
|
-
* var boxZone = new BoxZone(0,0,0,50,50,50);
|
|
16
|
-
* or
|
|
17
|
-
* var boxZone = new BoxZone(new Vector3D(0,0,0), 50, 50, 50);
|
|
18
|
-
* @extends {Zone}
|
|
19
|
-
* @constructor
|
|
20
|
-
*/
|
|
21
|
-
constructor(a, b, c, d, e, f) {
|
|
22
|
-
super(type); // TODO this reassigning of arguments is pretty dangerous, need to fix it.
|
|
23
|
-
// eslint-disable-next-line
|
|
24
|
-
|
|
25
|
-
var x, y, z, w, h, d;
|
|
26
|
-
|
|
27
|
-
if (Util.isUndefined(b, c, d, e, f)) {
|
|
28
|
-
x = y = z = 0;
|
|
29
|
-
w = h = d = a || 100;
|
|
30
|
-
} else if (Util.isUndefined(d, e, f)) {
|
|
31
|
-
x = y = z = 0;
|
|
32
|
-
w = a;
|
|
33
|
-
h = b;
|
|
34
|
-
d = c;
|
|
35
|
-
} else {
|
|
36
|
-
x = a;
|
|
37
|
-
y = b;
|
|
38
|
-
z = c;
|
|
39
|
-
w = d;
|
|
40
|
-
h = e;
|
|
41
|
-
d = f;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
this.x = x;
|
|
45
|
-
this.y = y;
|
|
46
|
-
this.z = z;
|
|
47
|
-
this.width = w;
|
|
48
|
-
this.height = h;
|
|
49
|
-
this.depth = d; // TODO Set this via an argument to the constructor
|
|
50
|
-
|
|
51
|
-
this.friction = 0.85; // TODO Set this via an argument to the constructor
|
|
52
|
-
|
|
53
|
-
this.max = 6;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Returns true to indicate this is a BoxZone.
|
|
57
|
-
*
|
|
58
|
-
* @return {boolean}
|
|
59
|
-
*/
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
isBoxZone() {
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
getPosition() {
|
|
67
|
-
this.vector.x = this.x + MathUtils.randomAToB(-0.5, 0.5) * this.width;
|
|
68
|
-
this.vector.y = this.y + MathUtils.randomAToB(-0.5, 0.5) * this.height;
|
|
69
|
-
this.vector.z = this.z + MathUtils.randomAToB(-0.5, 0.5) * this.depth;
|
|
70
|
-
return this.vector;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
_dead(particle) {
|
|
74
|
-
if (particle.position.x + particle.radius < this.x - this.width / 2) particle.dead = true;else if (particle.position.x - particle.radius > this.x + this.width / 2) particle.dead = true;
|
|
75
|
-
if (particle.position.y + particle.radius < this.y - this.height / 2) particle.dead = true;else if (particle.position.y - particle.radius > this.y + this.height / 2) particle.dead = true;
|
|
76
|
-
if (particle.position.z + particle.radius < this.z - this.depth / 2) particle.dead = true;else if (particle.position.z - particle.radius > this.z + this.depth / 2) particle.dead = true;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
_bound(particle) {
|
|
80
|
-
if (particle.position.x - particle.radius < this.x - this.width / 2) {
|
|
81
|
-
particle.position.x = this.x - this.width / 2 + particle.radius;
|
|
82
|
-
particle.velocity.x *= -this.friction;
|
|
83
|
-
|
|
84
|
-
this._static(particle, 'x');
|
|
85
|
-
} else if (particle.position.x + particle.radius > this.x + this.width / 2) {
|
|
86
|
-
particle.position.x = this.x + this.width / 2 - particle.radius;
|
|
87
|
-
particle.velocity.x *= -this.friction;
|
|
88
|
-
|
|
89
|
-
this._static(particle, 'x');
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
if (particle.position.y - particle.radius < this.y - this.height / 2) {
|
|
93
|
-
particle.position.y = this.y - this.height / 2 + particle.radius;
|
|
94
|
-
particle.velocity.y *= -this.friction;
|
|
95
|
-
|
|
96
|
-
this._static(particle, 'y');
|
|
97
|
-
} else if (particle.position.y + particle.radius > this.y + this.height / 2) {
|
|
98
|
-
particle.position.y = this.y + this.height / 2 - particle.radius;
|
|
99
|
-
particle.velocity.y *= -this.friction;
|
|
100
|
-
|
|
101
|
-
this._static(particle, 'y');
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
if (particle.position.z - particle.radius < this.z - this.depth / 2) {
|
|
105
|
-
particle.position.z = this.z - this.depth / 2 + particle.radius;
|
|
106
|
-
particle.velocity.z *= -this.friction;
|
|
107
|
-
|
|
108
|
-
this._static(particle, 'z');
|
|
109
|
-
} else if (particle.position.z + particle.radius > this.z + this.depth / 2) {
|
|
110
|
-
particle.position.z = this.z + this.depth / 2 - particle.radius;
|
|
111
|
-
particle.velocity.z *= -this.friction;
|
|
112
|
-
|
|
113
|
-
this._static(particle, 'z');
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
_static(particle, axis) {
|
|
118
|
-
if (particle.velocity[axis] * particle.acceleration[axis] > 0) return;
|
|
119
|
-
|
|
120
|
-
if (Math.abs(particle.velocity[axis]) < Math.abs(particle.acceleration[axis]) * 0.0167 * this.max) {
|
|
121
|
-
particle.velocity[axis] = 0;
|
|
122
|
-
particle.acceleration[axis] = 0;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
_cross(particle) {
|
|
127
|
-
if (particle.position.x + particle.radius < this.x - this.width / 2 && particle.velocity.x <= 0) particle.position.x = this.x + this.width / 2 + particle.radius;else if (particle.position.x - particle.radius > this.x + this.width / 2 && particle.velocity.x >= 0) particle.position.x = this.x - this.width / 2 - particle.radius;
|
|
128
|
-
if (particle.position.y + particle.radius < this.y - this.height / 2 && particle.velocity.y <= 0) particle.position.y = this.y + this.height / 2 + particle.radius;else if (particle.position.y - particle.radius > this.y + this.height / 2 && particle.velocity.y >= 0) particle.position.y = this.y - this.height / 2 - particle.radius;
|
|
129
|
-
if (particle.position.z + particle.radius < this.z - this.depth / 2 && particle.velocity.z <= 0) particle.position.z = this.z + this.depth / 2 + particle.radius;else if (particle.position.z - particle.radius > this.z + this.depth / 2 && particle.velocity.z >= 0) particle.position.z = this.z - this.depth / 2 - particle.radius;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy96b25lL0JveFpvbmUuanMiXSwibmFtZXMiOlsiTWF0aFV0aWxzIiwiVXRpbCIsIlpvbmUiLCJaT05FX1RZUEVfQk9YIiwidHlwZSIsIkJveFpvbmUiLCJjb25zdHJ1Y3RvciIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsIngiLCJ5IiwieiIsInciLCJoIiwiaXNVbmRlZmluZWQiLCJ3aWR0aCIsImhlaWdodCIsImRlcHRoIiwiZnJpY3Rpb24iLCJtYXgiLCJpc0JveFpvbmUiLCJnZXRQb3NpdGlvbiIsInZlY3RvciIsInJhbmRvbUFUb0IiLCJfZGVhZCIsInBhcnRpY2xlIiwicG9zaXRpb24iLCJyYWRpdXMiLCJkZWFkIiwiX2JvdW5kIiwidmVsb2NpdHkiLCJfc3RhdGljIiwiYXhpcyIsImFjY2VsZXJhdGlvbiIsIk1hdGgiLCJhYnMiLCJfY3Jvc3MiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFNBQVAsTUFBc0IsbUJBQXRCO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixlQUFqQjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsUUFBakI7QUFDQSxTQUFTQyxhQUFhLElBQUlDLElBQTFCLFFBQXNDLFNBQXRDO0FBRUEsZUFBZSxNQUFNQyxPQUFOLFNBQXNCSCxJQUF0QixDQUEyQjtBQUN4QztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDRUksRUFBQUEsV0FBVyxDQUFDQyxDQUFELEVBQUlDLENBQUosRUFBT0MsQ0FBUCxFQUFVQyxDQUFWLEVBQWFDLENBQWIsRUFBZ0JDLENBQWhCLEVBQW1CO0FBQzVCLFVBQU1SLElBQU4sRUFENEIsQ0FHNUI7QUFDQTs7QUFDQSxRQUFJUyxDQUFKLEVBQU9DLENBQVAsRUFBVUMsQ0FBVixFQUFhQyxDQUFiLEVBQWdCQyxDQUFoQixFQUFtQlAsQ0FBbkI7O0FBRUEsUUFBSVQsSUFBSSxDQUFDaUIsV0FBTCxDQUFpQlYsQ0FB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S00sS0FBTCxHQUFhLENBQXRCLEdBQTBCUSxRQUFRLENBQUNFLE1BQXpEO0FBQ0g7O0FBbEt1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNYXRoVXRpbHMgZnJvbSAnLi4vbWF0aC9NYXRoVXRpbHMnO1xuaW1wb3J0IFV0aWwgZnJvbSAnLi4vdXRpbHMvVXRpbCc7XG5pbXBvcnQgWm9uZSBmcm9tICcuL1pvbmUnO1xuaW1wb3J0IHsgWk9ORV9UWVBFX0JPWCBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJveFpvbmUgZXh0ZW5kcyBab25lIHtcbiAgLyoqXG4gICAqIEJveFpvbmUgaXMgYSBib3ggem9uZVxuICAgKiBAcGFyYW0ge051bWJlcnxWZWN0b3IzRH0geCAtIHRoZSBwb3NpdGlvbidzIHggdmFsdWUgb3IgYSBWZWN0b3IzRCBPYmplY3RcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHkgLSB0aGUgcG9zaXRpb24ncyB5IHZhbHVlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB6IC0gdGhlIHBvc2l0aW9uJ3MgeiB2YWx1ZVxuICAgKiBAcGFyYW0ge051bWJlcn0gdyAtIHRoZSBCb3gncyB3aWR0aFxuICAgKiBAcGFyYW0ge051bWJlcn0gaCAtIHRoZSBCb3gncyBoZWlnaHRcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGQgLSB0aGUgQm94J3MgZGVwdGhcbiAgICogQGV4YW1wbGVcbiAgICogdmFyIGJveFpvbmUgPSBuZXcgQm94Wm9uZSgwLDAsMCw1MCw1MCw1MCk7XG4gICAqIG9yXG4gICAqIHZhciBib3hab25lID0gbmV3IEJveFpvbmUobmV3IFZlY3RvcjNEKDAsMCwwKSwgNTAsIDUwLCA1MCk7XG4gICAqIEBleHRlbmRzIHtab25lfVxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgICBzdXBlcih0eXBlKTtcblxuICAgIC8vIFRPRE8gdGhpcyByZWFzc2lnbmluZyBvZiBhcmd1bWVudHMgaXMgcHJldHR5IGRhbmdlcm91cywgbmVlZCB0byBmaXggaXQuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgdmFyIHgsIHksIHosIHcsIGgsIGQ7XG5cbiAgICBpZiAoVXRpbC5pc1VuZGVmaW5lZChiLCBjLCBkLCBlLCBmKSkge1xuICAgICAgeCA9IHkgPSB6ID0gMDtcbiAgICAgIHcgPSBoID0gZCA9IGEgfHwgMTAwO1xuICAgIH0gZWxzZSBpZiAoVXRpbC5pc1VuZGVmaW5lZChkLCBlLCBmKSkge1xuICAgICAgeCA9IHkgPSB6ID0gMDtcbiAgICAgIHcgPSBhO1xuICAgICAgaCA9IGI7XG4gICAgICBkID0gYztcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IGE7XG4gICAgICB5ID0gYjtcbiAgICAgIHogPSBjO1xuICAgICAgdyA9IGQ7XG4gICAgICBoID0gZTtcbiAgICAgIGQgPSBmO1xuICAgIH1cblxuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgICB0aGlzLnogPSB6O1xuICAgIHRoaXMud2lkdGggPSB3O1xuICAgIHRoaXMuaGVpZ2h0ID0gaDtcbiAgICB0aGlzLmRlcHRoID0gZDtcbiAgICAvLyBUT0RPIFNldCB0aGlzIHZpYSBhbiBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3JcbiAgICB0aGlzLmZyaWN0aW9uID0gMC44NTtcbiAgICAvLyBUT0RPIFNldCB0aGlzIHZpYSBhbiBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3JcbiAgICB0aGlzLm1heCA9IDY7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIHRvIGluZGljYXRlIHRoaXMgaXMgYSBCb3hab25lLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaXNCb3hab25lKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0UG9zaXRpb24oKSB7XG4gICAgdGhpcy52ZWN0b3IueCA9IHRoaXMueCArIE1hdGhVdGlscy5yYW5kb21BVG9CKC0wLjUsIDAuNSkgKiB0aGlzLndpZHRoO1xuICAgIHRoaXMudmVjdG9yLnkgPSB0aGlzLnkgKyBNYXRoVXRpbHMucmFuZG9tQVRvQigtMC41LCAwLjUpICogdGhpcy5oZWlnaHQ7XG4gICAgdGhpcy52ZWN0b3IueiA9IHRoaXMueiArIE1hdGhVdGlscy5yYW5kb21BVG9CKC0wLjUsIDAuNSkgKiB0aGlzLmRlcHRoO1xuXG4gICAgcmV0dXJuIHRoaXMudmVjdG9yO1xuICB9XG5cbiAgX2RlYWQocGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUucG9zaXRpb24ueCArIHBhcnRpY2xlLnJhZGl1cyA8IHRoaXMueCAtIHRoaXMud2lkdGggLyAyKVxuICAgICAgcGFydGljbGUuZGVhZCA9IHRydWU7XG4gICAgZWxzZSBpZiAocGFydGljbGUucG9zaXRpb24ueCAtIHBhcnRpY2xlLnJhZGl1cyA+IHRoaXMueCArIHRoaXMud2lkdGggLyAyKVxuICAgICAgcGFydGljbGUuZGVhZCA9IHRydWU7XG5cbiAgICBpZiAocGFydGljbGUucG9zaXRpb24ueSArIHBhcnRpY2xlLnJhZGl1cyA8IHRoaXMueSAtIHRoaXMuaGVpZ2h0IC8gMilcbiAgICAgIHBhcnRpY2xlLmRlYWQgPSB0cnVlO1xuICAgIGVsc2UgaWYgKHBhcnRpY2xlLnBvc2l0aW9uLnkgLSBwYXJ0aWNsZS5yYWRpdXMgPiB0aGlzLnkgKyB0aGlzLmhlaWdodCAvIDIpXG4gICAgICBwYXJ0aWNsZS5kZWFkID0gdHJ1ZTtcblxuICAgIGlmIChwYXJ0aWNsZS5wb3NpdGlvbi56ICsgcGFydGljbGUucmFkaXVzIDwgdGhpcy56IC0gdGhpcy5kZXB0aCAvIDIpXG4gICAgICBwYXJ0aWNsZS5kZWFkID0gdHJ1ZTtcbiAgICBlbHNlIGlmIChwYXJ0aWNsZS5wb3NpdGlvbi56IC0gcGFydGljbGUucmFkaXVzID4gdGhpcy56ICsgdGhpcy5kZXB0aCAvIDIpXG4gICAgICBwYXJ0aWNsZS5kZWFkID0gdHJ1ZTtcbiAgfVxuXG4gIF9ib3VuZChwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZS5wb3NpdGlvbi54IC0gcGFydGljbGUucmFkaXVzIDwgdGhpcy54IC0gdGhpcy53aWR0aCAvIDIpIHtcbiAgICAgIHBhcnRpY2xlLnBvc2l0aW9uLnggPSB0aGlzLnggLSB0aGlzLndpZHRoIC8gMiArIHBhcnRpY2xlLnJhZGl1cztcbiAgICAgIHBhcnRpY2xlLnZlbG9jaXR5LnggKj0gLXRoaXMuZnJpY3Rpb247XG4gICAgICB0aGlzLl9zdGF0aWMocGFydGljbGUsICd4Jyk7XG4gICAgfSBlbHNlIGlmIChwYXJ0aWNsZS5wb3NpdGlvbi54ICsgcGFydGljbGUucmFkaXVzID4gdGhpcy54ICsgdGhpcy53aWR0aCAvIDIpIHtcbiAgICAgIHBhcnRpY2xlLnBvc2l0aW9uLnggPSB0aGlzLnggKyB0aGlzLndpZHRoIC8gMiAtIHBhcnRpY2xlLnJhZGl1cztcbiAgICAgIHBhcnRpY2xlLnZlbG9jaXR5LnggKj0gLXRoaXMuZnJpY3Rpb247XG4gICAgICB0aGlzLl9zdGF0aWMocGFydGljbGUsICd4Jyk7XG4gICAgfVxuXG4gICAgaWYgKHBhcnRpY2xlLnBvc2l0aW9uLnkgLSBwYXJ0aWNsZS5yYWRpdXMgPCB0aGlzLnkgLSB0aGlzLmhlaWdodCAvIDIpIHtcbiAgICAgIHBhcnRpY2xlLnBvc2l0aW9uLnkgPSB0aGlzLnkgLSB0aGlzLmhlaWdodCAvIDIgKyBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgICBwYXJ0aWNsZS52ZWxvY2l0eS55ICo9IC10aGlzLmZyaWN0aW9uO1xuICAgICAgdGhpcy5fc3RhdGljKHBhcnRpY2xlLCAneScpO1xuICAgIH0gZWxzZSBpZiAocGFydGljbGUucG9zaXRpb24ueSArIHBhcnRpY2xlLnJhZGl1cyA+IHRoaXMueSArIHRoaXMuaGVpZ2h0IC8gMikge1xuICAgICAgcGFydGljbGUucG9zaXRpb24ueSA9IHRoaXMueSArIHRoaXMuaGVpZ2h0IC8gMiAtIHBhcnRpY2xlLnJhZGl1cztcbiAgICAgIHBhcnRpY2xlLnZlbG9jaXR5LnkgKj0gLXRoaXMuZnJpY3Rpb247XG4gICAgICB0aGlzLl9zdGF0aWMocGFydGljbGUsICd5Jyk7XG4gICAgfVxuXG4gICAgaWYgKHBhcnRpY2xlLnBvc2l0aW9uLnogLSBwYXJ0aWNsZS5yYWRpdXMgPCB0aGlzLnogLSB0aGlzLmRlcHRoIC8gMikge1xuICAgICAgcGFydGljbGUucG9zaXRpb24ueiA9IHRoaXMueiAtIHRoaXMuZGVwdGggLyAyICsgcGFydGljbGUucmFkaXVzO1xuICAgICAgcGFydGljbGUudmVsb2NpdHkueiAqPSAtdGhpcy5mcmljdGlvbjtcbiAgICAgIHRoaXMuX3N0YXRpYyhwYXJ0aWNsZSwgJ3onKTtcbiAgICB9IGVsc2UgaWYgKHBhcnRpY2xlLnBvc2l0aW9uLnogKyBwYXJ0aWNsZS5yYWRpdXMgPiB0aGlzLnogKyB0aGlzLmRlcHRoIC8gMikge1xuICAgICAgcGFydGljbGUucG9zaXRpb24ueiA9IHRoaXMueiArIHRoaXMuZGVwdGggLyAyIC0gcGFydGljbGUucmFkaXVzO1xuICAgICAgcGFydGljbGUudmVsb2NpdHkueiAqPSAtdGhpcy5mcmljdGlvbjtcbiAgICAgIHRoaXMuX3N0YXRpYyhwYXJ0aWNsZSwgJ3onKTtcbiAgICB9XG4gIH1cblxuICBfc3RhdGljKHBhcnRpY2xlLCBheGlzKSB7XG4gICAgaWYgKHBhcnRpY2xlLnZlbG9jaXR5W2F4aXNdICogcGFydGljbGUuYWNjZWxlcmF0aW9uW2F4aXNdID4gMCkgcmV0dXJuO1xuICAgIGlmIChcbiAgICAgIE1hdGguYWJzKHBhcnRpY2xlLnZlbG9jaXR5W2F4aXNdKSA8XG4gICAgICBNYXRoLmFicyhwYXJ0aWNsZS5hY2NlbGVyYXRpb25bYXhpc10pICogMC4wMTY3ICogdGhpcy5tYXhcbiAgICApIHtcbiAgICAgIHBhcnRpY2xlLnZlbG9jaXR5W2F4aXNdID0gMDtcbiAgICAgIHBhcnRpY2xlLmFjY2VsZXJhdGlvbltheGlzXSA9IDA7XG4gICAgfVxuICB9XG5cbiAgX2Nyb3NzKHBhcnRpY2xlKSB7XG4gICAgaWYgKFxuICAgICAgcGFydGljbGUucG9zaXRpb24ueCArIHBhcnRpY2xlLnJhZGl1cyA8IHRoaXMueCAtIHRoaXMud2lkdGggLyAyICYmXG4gICAgICBwYXJ0aWNsZS52ZWxvY2l0eS54IDw9IDBcbiAgICApXG4gICAgICBwYXJ0aWNsZS5wb3NpdGlvbi54ID0gdGhpcy54ICsgdGhpcy53aWR0aCAvIDIgKyBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgZWxzZSBpZiAoXG4gICAgICBwYXJ0aWNsZS5wb3NpdGlvbi54IC0gcGFydGljbGUucmFkaXVzID4gdGhpcy54ICsgdGhpcy53aWR0aCAvIDIgJiZcbiAgICAgIHBhcnRpY2xlLnZlbG9jaXR5LnggPj0gMFxuICAgIClcbiAgICAgIHBhcnRpY2xlLnBvc2l0aW9uLnggPSB0aGlzLnggLSB0aGlzLndpZHRoIC8gMiAtIHBhcnRpY2xlLnJhZGl1cztcblxuICAgIGlmIChcbiAgICAgIHBhcnRpY2xlLnBvc2l0aW9uLnkgKyBwYXJ0aWNsZS5yYWRpdXMgPCB0aGlzLnkgLSB0aGlzLmhlaWdodCAvIDIgJiZcbiAgICAgIHBhcnRpY2xlLnZlbG9jaXR5LnkgPD0gMFxuICAgIClcbiAgICAgIHBhcnRpY2xlLnBvc2l0aW9uLnkgPSB0aGlzLnkgKyB0aGlzLmhlaWdodCAvIDIgKyBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgZWxzZSBpZiAoXG4gICAgICBwYXJ0aWNsZS5wb3NpdGlvbi55IC0gcGFydGljbGUucmFkaXVzID4gdGhpcy55ICsgdGhpcy5oZWlnaHQgLyAyICYmXG4gICAgICBwYXJ0aWNsZS52ZWxvY2l0eS55ID49IDBcbiAgICApXG4gICAgICBwYXJ0aWNsZS5wb3NpdGlvbi55ID0gdGhpcy55IC0gdGhpcy5oZWlnaHQgLyAyIC0gcGFydGljbGUucmFkaXVzO1xuXG4gICAgaWYgKFxuICAgICAgcGFydGljbGUucG9zaXRpb24ueiArIHBhcnRpY2xlLnJhZGl1cyA8IHRoaXMueiAtIHRoaXMuZGVwdGggLyAyICYmXG4gICAgICBwYXJ0aWNsZS52ZWxvY2l0eS56IDw9IDBcbiAgICApXG4gICAgICBwYXJ0aWNsZS5wb3NpdGlvbi56ID0gdGhpcy56ICsgdGhpcy5kZXB0aCAvIDIgKyBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgZWxzZSBpZiAoXG4gICAgICBwYXJ0aWNsZS5wb3NpdGlvbi56IC0gcGFydGljbGUucmFkaXVzID4gdGhpcy56ICsgdGhpcy5kZXB0aCAvIDIgJiZcbiAgICAgIHBhcnRpY2xlLnZlbG9jaXR5LnogPj0gMFxuICAgIClcbiAgICAgIHBhcnRpY2xlLnBvc2l0aW9uLnogPSB0aGlzLnogLSB0aGlzLmRlcHRoIC8gMiAtIHBhcnRpY2xlLnJhZGl1cztcbiAgfVxufVxuIl19
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import Vector3D from '../math/Vector3D';
|
|
2
|
-
import Zone from './Zone';
|
|
3
|
-
import { ZONE_TYPE_LINE as type } from './types';
|
|
4
|
-
export default class LineZone extends Zone {
|
|
5
|
-
/**
|
|
6
|
-
* LineZone is a 3d line zone
|
|
7
|
-
* @param {Number|Vector3D} x1 - the line's start point of x value or a Vector3D Object
|
|
8
|
-
* @param {Number|Vector3D} y1 - the line's start point of y value or a Vector3D Object
|
|
9
|
-
* @param {Number} z1 - the line's start point of z value
|
|
10
|
-
* @param {Number} x2 - the line's end point of x value
|
|
11
|
-
* @param {Number} y2 - the line's end point of y value
|
|
12
|
-
* @param {Number} z2 - the line's end point of z value
|
|
13
|
-
* @example
|
|
14
|
-
* var lineZone = new System.LineZone(0,0,0,100,100,0);
|
|
15
|
-
* or
|
|
16
|
-
* var lineZone = new System.LineZone(new System.Vector3D(0,0,0),new System.Vector3D(100,100,0));
|
|
17
|
-
* @extends {Zone}
|
|
18
|
-
* @constructor
|
|
19
|
-
*/
|
|
20
|
-
constructor(x1, y1, z1, x2, y2, z2) {
|
|
21
|
-
super(type);
|
|
22
|
-
|
|
23
|
-
if (x1 instanceof Vector3D) {
|
|
24
|
-
this.x1 = x1.x;
|
|
25
|
-
this.y1 = x1.y;
|
|
26
|
-
this.z1 = x1.z;
|
|
27
|
-
this.x2 = x2.x;
|
|
28
|
-
this.y2 = x2.y;
|
|
29
|
-
this.z2 = x2.z;
|
|
30
|
-
} else {
|
|
31
|
-
this.x1 = x1;
|
|
32
|
-
this.y1 = y1;
|
|
33
|
-
this.z1 = z1;
|
|
34
|
-
this.x2 = x2;
|
|
35
|
-
this.y2 = y2;
|
|
36
|
-
this.z2 = z2;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
this.supportsCrossing = false;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Returns true to indicate this is a LineZone.
|
|
43
|
-
*
|
|
44
|
-
* @return {boolean}
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
isLineZone() {
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
getPosition() {
|
|
53
|
-
this.random = Math.random();
|
|
54
|
-
this.vector.x = this.x1 + this.random * (this.x2 - this.x1);
|
|
55
|
-
this.vector.y = this.y1 + this.random * (this.y2 - this.y1);
|
|
56
|
-
this.vector.z = this.z1 + this.random * (this.z2 - this.z1);
|
|
57
|
-
return this.vector;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy96b25lL0xpbmVab25lLmpzIl0sIm5hbWVzIjpbIlZlY3RvcjNEIiwiWm9uZSIsIlpPTkVfVFlQRV9MSU5FIiwidHlwZSIsIkxpbmVab25lIiwiY29uc3RydWN0b3IiLCJ4MSIsInkxIiwiejEiLCJ4MiIsInkyIiwiejIiLCJ4IiwieSIsInoiLCJzdXBwb3J0c0Nyb3NzaW5nIiwiaXNMaW5lWm9uZSIsImdldFBvc2l0aW9uIiwicmFuZG9tIiwiTWF0aCIsInZlY3RvciJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsUUFBUCxNQUFxQixrQkFBckI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLFFBQWpCO0FBQ0EsU0FBU0MsY0FBYyxJQUFJQyxJQUEzQixRQUF1QyxTQUF2QztBQUVBLGVBQWUsTUFBTUMsUUFBTixTQUF1QkgsSUFBdkIsQ0FBNEI7QUFDekM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0VJLEVBQUFBLFdBQVcsQ0FBQ0MsRUFBRCxFQUFLQyxFQUFMLEVBQVNDLEVBQVQsRUFBYUMsRUFBYixFQUFpQkMsRUFBakIsRUFBcUJDLEVBQXJCLEVBQXlCO0FBQ2xDLFVBQU1SLElBQU47O0FBRUEsUUFBSUcsRUFBRSxZQUFZTixRQUFsQixFQUE0QjtBQUMxQixXQUFLTSxFQUFMLEdBQVVBLEVBQUUsQ0FBQ00sQ0FBYjtBQUNBLFdBQUtMLEVBQUwsR0FBVUQsRUFBRSxDQUFDTyxDQUFiO0FBQ0EsV0FBS0wsRUFBTCxHQUFVRixFQUFFLENBQUNRLENBQWI7QUFFQSxXQUFLTCxFQUFMLEdBQVVBLEVBQUUsQ0FBQ0csQ0FBYjtBQUNBLFdBQUtGLEVBQUwsR0FBVUQsRUFBRSxDQUFDSSxDQUFiO0FBQ0EsV0FBS0YsRUFBTCxHQUFVRixFQUFFLENBQUNLLENBQWI7QUFDRCxLQVJELE1BUU87QUFDTCxXQUFLUixFQUFMLEdBQVVBLEVBQVY7QUFDQSxXQUFLQyxFQUFMLEdBQVVBLEVBQVY7QUFDQSxXQUFLQyxFQUFMLEdBQVVBLEVBQVY7QUFFQSxXQUFLQyxFQUFMLEdBQVVBLEVBQVY7QUFDQSxXQUFLQyxFQUFMLEdBQVVBLEVBQVY7QUFDQSxXQUFLQyxFQUFMLEdBQVVBLEVBQVY7QUFDRDs7QUFFRCxTQUFLSSxnQkFBTCxHQUF3QixLQUF4QjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0VDLEVBQUFBLFVBQVUsR0FBRztBQUNYLFdBQU8sSUFBUDtBQUNEOztBQUVEQyxFQUFBQSxXQUFXLEdBQUc7QUFDWixTQUFLQyxNQUFMLEdBQWNDLElBQUksQ0FBQ0QsTUFBTCxFQUFkO0FBQ0EsU0FBS0UsTUFBTCxDQUFZUixDQUFaLEdBQWdCLEtBQUtOLEVBQUwsR0FBVSxLQUFLWSxNQUFMLElBQWUsS0FBS1QsRUFBTCxHQUFVLEtBQUtILEVBQTlCLENBQTFCO0FBQ0EsU0FBS2MsTUFBTCxDQUFZUCxDQUFaLEdBQWdCLEtBQUtOLEVBQUwsR0FBVSxLQUFLVyxNQUFMLElBQWUsS0FBS1IsRUFBTCxHQUFVLEtBQUtILEVBQTlCLENBQTFCO0FBQ0EsU0FBS2EsTUFBTCxDQUFZTixDQUFaLEdBQWdCLEtBQUtOLEVBQUwsR0FBVSxLQUFLVSxNQUFMLElBQWUsS0FBS1AsRUFBTCxHQUFVLEtBQUtILEVBQTlCLENBQTFCO0FBRUEsV0FBTyxLQUFLWSxNQUFaO0FBQ0Q7O0FBeER3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWZWN0b3IzRCBmcm9tICcuLi9tYXRoL1ZlY3RvcjNEJztcbmltcG9ydCBab25lIGZyb20gJy4vWm9uZSc7XG5pbXBvcnQgeyBaT05FX1RZUEVfTElORSBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExpbmVab25lIGV4dGVuZHMgWm9uZSB7XG4gIC8qKlxuICAgKiBMaW5lWm9uZSBpcyBhIDNkIGxpbmUgem9uZVxuICAgKiBAcGFyYW0ge051bWJlcnxWZWN0b3IzRH0geDEgLSB0aGUgbGluZSdzIHN0YXJ0IHBvaW50IG9mIHggdmFsdWUgb3IgYSBWZWN0b3IzRCBPYmplY3RcbiAgICogQHBhcmFtIHtOdW1iZXJ8VmVjdG9yM0R9IHkxIC0gdGhlIGxpbmUncyBzdGFydCBwb2ludCBvZiB5IHZhbHVlIG9yIGEgVmVjdG9yM0QgT2JqZWN0XG4gICAqIEBwYXJhbSB7TnVtYmVyfSB6MSAtIHRoZSBsaW5lJ3Mgc3RhcnQgcG9pbnQgb2YgeiB2YWx1ZVxuICAgKiBAcGFyYW0ge051bWJlcn0geDIgLSB0aGUgbGluZSdzIGVuZCBwb2ludCBvZiB4IHZhbHVlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB5MiAtIHRoZSBsaW5lJ3MgZW5kIHBvaW50IG9mIHkgdmFsdWVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHoyIC0gdGhlIGxpbmUncyBlbmQgcG9pbnQgb2YgeiB2YWx1ZVxuICAgKiBAZXhhbXBsZVxuICAgKiB2YXIgbGluZVpvbmUgPSBuZXcgU3lzdGVtLkxpbmVab25lKDAsMCwwLDEwMCwxMDAsMCk7XG4gICAqIG9yXG4gICAqIHZhciBsaW5lWm9uZSA9IG5ldyBTeXN0ZW0uTGluZVpvbmUobmV3IFN5c3RlbS5WZWN0b3IzRCgwLDAsMCksbmV3IFN5c3RlbS5WZWN0b3IzRCgxMDAsMTAwLDApKTtcbiAgICogQGV4dGVuZHMge1pvbmV9XG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKi9cbiAgY29uc3RydWN0b3IoeDEsIHkxLCB6MSwgeDIsIHkyLCB6Mikge1xuICAgIHN1cGVyKHR5cGUpO1xuXG4gICAgaWYgKHgxIGluc3RhbmNlb2YgVmVjdG9yM0QpIHtcbiAgICAgIHRoaXMueDEgPSB4MS54O1xuICAgICAgdGhpcy55MSA9IHgxLnk7XG4gICAgICB0aGlzLnoxID0geDEuejtcblxuICAgICAgdGhpcy54MiA9IHgyLng7XG4gICAgICB0aGlzLnkyID0geDIueTtcbiAgICAgIHRoaXMuejIgPSB4Mi56O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLngxID0geDE7XG4gICAgICB0aGlzLnkxID0geTE7XG4gICAgICB0aGlzLnoxID0gejE7XG5cbiAgICAgIHRoaXMueDIgPSB4MjtcbiAgICAgIHRoaXMueTIgPSB5MjtcbiAgICAgIHRoaXMuejIgPSB6MjtcbiAgICB9XG5cbiAgICB0aGlzLnN1cHBvcnRzQ3Jvc3NpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgdG8gaW5kaWNhdGUgdGhpcyBpcyBhIExpbmVab25lLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaXNMaW5lWm9uZSgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldFBvc2l0aW9uKCkge1xuICAgIHRoaXMucmFuZG9tID0gTWF0aC5yYW5kb20oKTtcbiAgICB0aGlzLnZlY3Rvci54ID0gdGhpcy54MSArIHRoaXMucmFuZG9tICogKHRoaXMueDIgLSB0aGlzLngxKTtcbiAgICB0aGlzLnZlY3Rvci55ID0gdGhpcy55MSArIHRoaXMucmFuZG9tICogKHRoaXMueTIgLSB0aGlzLnkxKTtcbiAgICB0aGlzLnZlY3Rvci56ID0gdGhpcy56MSArIHRoaXMucmFuZG9tICogKHRoaXMuejIgLSB0aGlzLnoxKTtcblxuICAgIHJldHVybiB0aGlzLnZlY3RvcjtcbiAgfVxufVxuIl19
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import Zone from './Zone';
|
|
2
|
-
import { ZONE_TYPE_MESH as type } from './types';
|
|
3
|
-
/**
|
|
4
|
-
* Uses a three THREE.Geometry to determine the zone parameters.
|
|
5
|
-
*
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
export default class MeshZone extends Zone {
|
|
9
|
-
/**
|
|
10
|
-
* @constructs {MeshZone}
|
|
11
|
-
*
|
|
12
|
-
* @param {THREE.Geometry|Mesh} bounds - the geometry or mesh that will determine the zone bounds
|
|
13
|
-
* @param {number} scale - the zone scale
|
|
14
|
-
* @param {THREE.Geometry} ThreeGeometry - the three geometry class
|
|
15
|
-
* @return void
|
|
16
|
-
*/
|
|
17
|
-
constructor(bounds, scale = 1, ThreeGeometry) {
|
|
18
|
-
super(type);
|
|
19
|
-
this.geometry = null;
|
|
20
|
-
this.scale = scale;
|
|
21
|
-
this.supportsCrossing = false;
|
|
22
|
-
|
|
23
|
-
if (bounds.type && bounds.type === 'Geometry') {
|
|
24
|
-
this.geometry = bounds;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
if (bounds.geometry) {
|
|
28
|
-
this.geometry = bounds.geometry;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (!this.geometry) {
|
|
32
|
-
throw new Error('MeshZone unable to set geometry from the supplied bounds');
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
if (this.geometry.isBufferGeometry) {
|
|
36
|
-
this.geometry = new ThreeGeometry().fromBufferGeometry(this.geometry);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Returns true to indicate this is a MeshZone.
|
|
41
|
-
*
|
|
42
|
-
* @return {boolean}
|
|
43
|
-
*/
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
isMeshZone() {
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
getPosition() {
|
|
51
|
-
const vertices = this.geometry.vertices;
|
|
52
|
-
const rVector = vertices[vertices.length * Math.random() >> 0];
|
|
53
|
-
this.vector.x = rVector.x * this.scale;
|
|
54
|
-
this.vector.y = rVector.y * this.scale;
|
|
55
|
-
this.vector.z = rVector.z * this.scale;
|
|
56
|
-
return this.vector;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy96b25lL01lc2hab25lLmpzIl0sIm5hbWVzIjpbIlpvbmUiLCJaT05FX1RZUEVfTUVTSCIsInR5cGUiLCJNZXNoWm9uZSIsImNvbnN0cnVjdG9yIiwiYm91bmRzIiwic2NhbGUiLCJUaHJlZUdlb21ldHJ5IiwiZ2VvbWV0cnkiLCJzdXBwb3J0c0Nyb3NzaW5nIiwiRXJyb3IiLCJpc0J1ZmZlckdlb21ldHJ5IiwiZnJvbUJ1ZmZlckdlb21ldHJ5IiwiaXNNZXNoWm9uZSIsImdldFBvc2l0aW9uIiwidmVydGljZXMiLCJyVmVjdG9yIiwibGVuZ3RoIiwiTWF0aCIsInJhbmRvbSIsInZlY3RvciIsIngiLCJ5IiwieiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsSUFBUCxNQUFpQixRQUFqQjtBQUNBLFNBQVNDLGNBQWMsSUFBSUMsSUFBM0IsUUFBdUMsU0FBdkM7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxlQUFlLE1BQU1DLFFBQU4sU0FBdUJILElBQXZCLENBQTRCO0FBQ3pDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDRUksRUFBQUEsV0FBVyxDQUFDQyxNQUFELEVBQVNDLEtBQUssR0FBRyxDQUFqQixFQUFvQkMsYUFBcEIsRUFBbUM7QUFDNUMsVUFBTUwsSUFBTjtBQUVBLFNBQUtNLFFBQUwsR0FBZ0IsSUFBaEI7QUFDQSxTQUFLRixLQUFMLEdBQWFBLEtBQWI7QUFDQSxTQUFLRyxnQkFBTCxHQUF3QixLQUF4Qjs7QUFFQSxRQUFJSixNQUFNLENBQUNILElBQVAsSUFBZUcsTUFBTSxDQUFDSCxJQUFQLEtBQWdCLFVBQW5DLEVBQStDO0FBQzdDLFdBQUtNLFFBQUwsR0FBZ0JILE1BQWhCO0FBQ0Q7O0FBRUQsUUFBSUEsTUFBTSxDQUFDRyxRQUFYLEVBQXFCO0FBQ25CLFdBQUtBLFFBQUwsR0FBZ0JILE1BQU0sQ0FBQ0csUUFBdkI7QUFDRDs7QUFFRCxRQUFJLENBQUMsS0FBS0EsUUFBVixFQUFvQjtBQUNsQixZQUFNLElBQUlFLEtBQUosQ0FDSiwwREFESSxDQUFOO0FBR0Q7O0FBRUQsUUFBSSxLQUFLRixRQUFMLENBQWNHLGdCQUFsQixFQUFvQztBQUNsQyxXQUFLSCxRQUFMLEdBQWdCLElBQUlELGFBQUosR0FBb0JLLGtCQUFwQixDQUF1QyxLQUFLSixRQUE1QyxDQUFoQjtBQUNEO0FBQ0Y7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBOzs7QUFDRUssRUFBQUEsVUFBVSxHQUFHO0FBQ1gsV0FBTyxJQUFQO0FBQ0Q7O0FBRURDLEVBQUFBLFdBQVcsR0FBRztBQUNaLFVBQU1DLFFBQVEsR0FBRyxLQUFLUCxRQUFMLENBQWNPLFFBQS9CO0FBQ0EsVUFBTUMsT0FBTyxHQUFHRCxRQUFRLENBQUVBLFFBQVEsQ0FBQ0UsTUFBVCxHQUFrQkMsSUFBSSxDQUFDQyxNQUFMLEVBQW5CLElBQXFDLENBQXRDLENBQXhCO0FBRUEsU0FBS0MsTUFBTCxDQUFZQyxDQUFaLEdBQWdCTCxPQUFPLENBQUNLLENBQVIsR0FBWSxLQUFLZixLQUFqQztBQUNBLFNBQUtjLE1BQUwsQ0FBWUUsQ0FBWixHQUFnQk4sT0FBTyxDQUFDTSxDQUFSLEdBQVksS0FBS2hCLEtBQWpDO0FBQ0EsU0FBS2MsTUFBTCxDQUFZRyxDQUFaLEdBQWdCUCxPQUFPLENBQUNPLENBQVIsR0FBWSxLQUFLakIsS0FBakM7QUFFQSxXQUFPLEtBQUtjLE1BQVo7QUFDRDs7QUFyRHdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFpvbmUgZnJvbSAnLi9ab25lJztcbmltcG9ydCB7IFpPTkVfVFlQRV9NRVNIIGFzIHR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBVc2VzIGEgdGhyZWUgVEhSRUUuR2VvbWV0cnkgdG8gZGV0ZXJtaW5lIHRoZSB6b25lIHBhcmFtZXRlcnMuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXNoWm9uZSBleHRlbmRzIFpvbmUge1xuICAvKipcbiAgICogQGNvbnN0cnVjdHMge01lc2hab25lfVxuICAgKlxuICAgKiBAcGFyYW0ge1RIUkVFLkdlb21ldHJ5fE1lc2h9IGJvdW5kcyAtIHRoZSBnZW9tZXRyeSBvciBtZXNoIHRoYXQgd2lsbCBkZXRlcm1pbmUgdGhlIHpvbmUgYm91bmRzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzY2FsZSAtIHRoZSB6b25lIHNjYWxlXG4gICAqIEBwYXJhbSB7VEhSRUUuR2VvbWV0cnl9IFRocmVlR2VvbWV0cnkgLSB0aGUgdGhyZWUgZ2VvbWV0cnkgY2xhc3NcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihib3VuZHMsIHNjYWxlID0gMSwgVGhyZWVHZW9tZXRyeSkge1xuICAgIHN1cGVyKHR5cGUpO1xuXG4gICAgdGhpcy5nZW9tZXRyeSA9IG51bGw7XG4gICAgdGhpcy5zY2FsZSA9IHNjYWxlO1xuICAgIHRoaXMuc3VwcG9ydHNDcm9zc2luZyA9IGZhbHNlO1xuXG4gICAgaWYgKGJvdW5kcy50eXBlICYmIGJvdW5kcy50eXBlID09PSAnR2VvbWV0cnknKSB7XG4gICAgICB0aGlzLmdlb21ldHJ5ID0gYm91bmRzO1xuICAgIH1cblxuICAgIGlmIChib3VuZHMuZ2VvbWV0cnkpIHtcbiAgICAgIHRoaXMuZ2VvbWV0cnkgPSBib3VuZHMuZ2VvbWV0cnk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmdlb21ldHJ5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdNZXNoWm9uZSB1bmFibGUgdG8gc2V0IGdlb21ldHJ5IGZyb20gdGhlIHN1cHBsaWVkIGJvdW5kcydcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZ2VvbWV0cnkuaXNCdWZmZXJHZW9tZXRyeSkge1xuICAgICAgdGhpcy5nZW9tZXRyeSA9IG5ldyBUaHJlZUdlb21ldHJ5KCkuZnJvbUJ1ZmZlckdlb21ldHJ5KHRoaXMuZ2VvbWV0cnkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgdG8gaW5kaWNhdGUgdGhpcyBpcyBhIE1lc2hab25lLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaXNNZXNoWm9uZSgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldFBvc2l0aW9uKCkge1xuICAgIGNvbnN0IHZlcnRpY2VzID0gdGhpcy5nZW9tZXRyeS52ZXJ0aWNlcztcbiAgICBjb25zdCByVmVjdG9yID0gdmVydGljZXNbKHZlcnRpY2VzLmxlbmd0aCAqIE1hdGgucmFuZG9tKCkpID4+IDBdO1xuXG4gICAgdGhpcy52ZWN0b3IueCA9IHJWZWN0b3IueCAqIHRoaXMuc2NhbGU7XG4gICAgdGhpcy52ZWN0b3IueSA9IHJWZWN0b3IueSAqIHRoaXMuc2NhbGU7XG4gICAgdGhpcy52ZWN0b3IueiA9IHJWZWN0b3IueiAqIHRoaXMuc2NhbGU7XG5cbiAgICByZXR1cm4gdGhpcy52ZWN0b3I7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import Util from '../utils/Util';
|
|
2
|
-
import Zone from './Zone';
|
|
3
|
-
import { ZONE_TYPE_POINT as type } from './types';
|
|
4
|
-
export default class PointZone extends Zone {
|
|
5
|
-
/**
|
|
6
|
-
* PointZone is a point zone
|
|
7
|
-
* @param {Number|Vector3D} x - the center's x value or a Vector3D Object
|
|
8
|
-
* @param {Number} y - the center's y value
|
|
9
|
-
* @param {Number} z - the center's z value
|
|
10
|
-
* @example
|
|
11
|
-
* var pointZone = new System.PointZone(0,30,10);
|
|
12
|
-
* or
|
|
13
|
-
* var pointZone = new System.PointZone(new System.Vector3D(0,30,10));
|
|
14
|
-
* @extends {Zone}
|
|
15
|
-
* @constructor
|
|
16
|
-
*/
|
|
17
|
-
constructor(a, b, c) {
|
|
18
|
-
super(type); // TODO see below, these should probably be assigned properly
|
|
19
|
-
// eslint-disable-next-line
|
|
20
|
-
|
|
21
|
-
var x, y, z;
|
|
22
|
-
|
|
23
|
-
if (Util.isUndefined(a, b, c)) {
|
|
24
|
-
x = y = z = 0;
|
|
25
|
-
} else {
|
|
26
|
-
x = a; // eslint-disable-next-line
|
|
27
|
-
|
|
28
|
-
y = b; // eslint-disable-next-line
|
|
29
|
-
|
|
30
|
-
z = c;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
this.x = x; // TODO shouldn't this be set to y?
|
|
34
|
-
|
|
35
|
-
this.y = x; // TODO shouldn't this be set to z?
|
|
36
|
-
|
|
37
|
-
this.z = x;
|
|
38
|
-
this.supportsCrossing = false;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Returns true to indicate this is a PointZone.
|
|
42
|
-
*
|
|
43
|
-
* @return {boolean}
|
|
44
|
-
*/
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
isPointZone() {
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
getPosition() {
|
|
52
|
-
this.vector.x = this.x;
|
|
53
|
-
this.vector.y = this.y;
|
|
54
|
-
this.vector.z = this.z;
|
|
55
|
-
return this.vector;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy96b25lL1BvaW50Wm9uZS5qcyJdLCJuYW1lcyI6WyJVdGlsIiwiWm9uZSIsIlpPTkVfVFlQRV9QT0lOVCIsInR5cGUiLCJQb2ludFpvbmUiLCJjb25zdHJ1Y3RvciIsImEiLCJiIiwiYyIsIngiLCJ5IiwieiIsImlzVW5kZWZpbmVkIiwic3VwcG9ydHNDcm9zc2luZyIsImlzUG9pbnRab25lIiwiZ2V0UG9zaXRpb24iLCJ2ZWN0b3IiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLElBQVAsTUFBaUIsZUFBakI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLFFBQWpCO0FBQ0EsU0FBU0MsZUFBZSxJQUFJQyxJQUE1QixRQUF3QyxTQUF4QztBQUVBLGVBQWUsTUFBTUMsU0FBTixTQUF3QkgsSUFBeEIsQ0FBNkI7QUFDMUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0VJLEVBQUFBLFdBQVcsQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKLEVBQU9DLENBQVAsRUFBVTtBQUNuQixVQUFNTCxJQUFOLEVBRG1CLENBR25CO0FBQ0E7O0FBQ0EsUUFBSU0sQ0FBSixFQUFPQyxDQUFQLEVBQVVDLENBQVY7O0FBRUEsUUFBSVgsSUFBSSxDQUFDWSxXQUFMLENBQWlCTixDQUFqQixFQUFvQkMsQ0FBcEIsRUFBdUJDLENBQXZCLENBQUosRUFBK0I7QUFDN0JDLE1BQUFBLENBQUMsR0FBR0MsQ0FBQyxHQUFHQyxDQUFDLEdBQUcsQ0FBWjtBQUNELEtBRkQsTUFFTztBQUNMRixNQUFBQSxDQUFDLEdBQUdILENBQUosQ0FESyxDQUVMOztBQUNBSSxNQUFBQSxDQUFDLEdBQUdILENBQUosQ0FISyxDQUlMOztBQUNBSSxNQUFBQSxDQUFDLEdBQUdILENBQUo7QUFDRDs7QUFFRCxTQUFLQyxDQUFMLEdBQVNBLENBQVQsQ0FqQm1CLENBbUJuQjs7QUFDQSxTQUFLQyxDQUFMLEdBQVNELENBQVQsQ0FwQm1CLENBc0JuQjs7QUFDQSxTQUFLRSxDQUFMLEdBQVNGLENBQVQ7QUFDQSxTQUFLSSxnQkFBTCxHQUF3QixLQUF4QjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0VDLEVBQUFBLFdBQVcsR0FBRztBQUNaLFdBQU8sSUFBUDtBQUNEOztBQUVEQyxFQUFBQSxXQUFXLEdBQUc7QUFDWixTQUFLQyxNQUFMLENBQVlQLENBQVosR0FBZ0IsS0FBS0EsQ0FBckI7QUFDQSxTQUFLTyxNQUFMLENBQVlOLENBQVosR0FBZ0IsS0FBS0EsQ0FBckI7QUFDQSxTQUFLTSxNQUFMLENBQVlMLENBQVosR0FBZ0IsS0FBS0EsQ0FBckI7QUFFQSxXQUFPLEtBQUtLLE1BQVo7QUFDRDs7QUF2RHlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFV0aWwgZnJvbSAnLi4vdXRpbHMvVXRpbCc7XG5pbXBvcnQgWm9uZSBmcm9tICcuL1pvbmUnO1xuaW1wb3J0IHsgWk9ORV9UWVBFX1BPSU5UIGFzIHR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUG9pbnRab25lIGV4dGVuZHMgWm9uZSB7XG4gIC8qKlxuICAgKiBQb2ludFpvbmUgaXMgYSBwb2ludCB6b25lXG4gICAqIEBwYXJhbSB7TnVtYmVyfFZlY3RvcjNEfSB4IC0gdGhlIGNlbnRlcidzIHggdmFsdWUgb3IgYSBWZWN0b3IzRCBPYmplY3RcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHkgLSB0aGUgY2VudGVyJ3MgeSB2YWx1ZVxuICAgKiBAcGFyYW0ge051bWJlcn0geiAtIHRoZSBjZW50ZXIncyB6IHZhbHVlXG4gICAqIEBleGFtcGxlXG4gICAqIHZhciBwb2ludFpvbmUgPSBuZXcgU3lzdGVtLlBvaW50Wm9uZSgwLDMwLDEwKTtcbiAgICogb3JcbiAgICogdmFyIHBvaW50Wm9uZSA9IG5ldyBTeXN0ZW0uUG9pbnRab25lKG5ldyBTeXN0ZW0uVmVjdG9yM0QoMCwzMCwxMCkpO1xuICAgKiBAZXh0ZW5kcyB7Wm9uZX1cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhLCBiLCBjKSB7XG4gICAgc3VwZXIodHlwZSk7XG5cbiAgICAvLyBUT0RPIHNlZSBiZWxvdywgdGhlc2Ugc2hvdWxkIHByb2JhYmx5IGJlIGFzc2lnbmVkIHByb3Blcmx5XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgdmFyIHgsIHksIHo7XG5cbiAgICBpZiAoVXRpbC5pc1VuZGVmaW5lZChhLCBiLCBjKSkge1xuICAgICAgeCA9IHkgPSB6ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IGE7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIHkgPSBiO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICB6ID0gYztcbiAgICB9XG5cbiAgICB0aGlzLnggPSB4O1xuXG4gICAgLy8gVE9ETyBzaG91bGRuJ3QgdGhpcyBiZSBzZXQgdG8geT9cbiAgICB0aGlzLnkgPSB4O1xuXG4gICAgLy8gVE9ETyBzaG91bGRuJ3QgdGhpcyBiZSBzZXQgdG8gej9cbiAgICB0aGlzLnogPSB4O1xuICAgIHRoaXMuc3VwcG9ydHNDcm9zc2luZyA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSB0byBpbmRpY2F0ZSB0aGlzIGlzIGEgUG9pbnRab25lLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaXNQb2ludFpvbmUoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXRQb3NpdGlvbigpIHtcbiAgICB0aGlzLnZlY3Rvci54ID0gdGhpcy54O1xuICAgIHRoaXMudmVjdG9yLnkgPSB0aGlzLnk7XG4gICAgdGhpcy52ZWN0b3IueiA9IHRoaXMuejtcblxuICAgIHJldHVybiB0aGlzLnZlY3RvcjtcbiAgfVxufVxuIl19
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import THREEUtil from '../utils/THREEUtil';
|
|
2
|
-
import Vector3D from '../math/Vector3D';
|
|
3
|
-
import Zone from './Zone';
|
|
4
|
-
import { ZONE_TYPE_SCREEN as type } from './types';
|
|
5
|
-
export default class ScreenZone extends Zone {
|
|
6
|
-
/**
|
|
7
|
-
* ScreenZone is a 3d line zone
|
|
8
|
-
* @param {Number|Vector3D} x1 - the line's start point of x value or a Vector3D Object
|
|
9
|
-
* @param {Number|Vector3D} y1 - the line's start point of y value or a Vector3D Object
|
|
10
|
-
* @param {Number} z1 - the line's start point of z value
|
|
11
|
-
* @param {Number} x2 - the line's end point of x value
|
|
12
|
-
* @param {Number} y2 - the line's end point of y value
|
|
13
|
-
* @param {Number} z2 - the line's end point of z value
|
|
14
|
-
* @example
|
|
15
|
-
* var lineZone = new ScreenZone(0,0,0,100,100,0);
|
|
16
|
-
* or
|
|
17
|
-
* var lineZone = new ScreenZone(new Vector3D(0,0,0),new Vector3D(100,100,0));
|
|
18
|
-
* @extends {Zone}
|
|
19
|
-
* @constructor
|
|
20
|
-
*/
|
|
21
|
-
constructor(camera, renderer, dis, dir) {
|
|
22
|
-
super(type);
|
|
23
|
-
this.camera = camera;
|
|
24
|
-
this.renderer = renderer;
|
|
25
|
-
this.dis = dis || 20;
|
|
26
|
-
dir = dir || '1234';
|
|
27
|
-
|
|
28
|
-
for (var i = 1; i < 5; i++) this['d' + i] = dir.indexOf(i + '') >= 0;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Returns true to indicate this is a ScreenZone.
|
|
32
|
-
*
|
|
33
|
-
* @return {boolean}
|
|
34
|
-
*/
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
isScreenZone() {
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
_dead(particle) {
|
|
42
|
-
var pos = THREEUtil.toScreenPos(particle.position, this.camera, this.renderer.domElement);
|
|
43
|
-
var canvas = this.renderer.domElement;
|
|
44
|
-
|
|
45
|
-
if (pos.y + particle.radius < -this.dis && this.d1) {
|
|
46
|
-
particle.dead = true;
|
|
47
|
-
} else if (pos.y - particle.radius > canvas.height + this.dis && this.d3) {
|
|
48
|
-
particle.dead = true;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (pos.x + particle.radius < -this.dis && this.d4) {
|
|
52
|
-
particle.dead = true;
|
|
53
|
-
} else if (pos.x - particle.radius > canvas.width + this.dis && this.d2) {
|
|
54
|
-
particle.dead = true;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
_bound(particle) {
|
|
59
|
-
var pos = THREEUtil.toScreenPos(particle.position, this.camera, this.renderer.domElement);
|
|
60
|
-
var canvas = this.renderer.domElement;
|
|
61
|
-
|
|
62
|
-
if (pos.y + particle.radius < -this.dis) {
|
|
63
|
-
particle.velocity.y *= -1;
|
|
64
|
-
} else if (pos.y - particle.radius > canvas.height + this.dis) {
|
|
65
|
-
particle.velocity.y *= -1;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
if (pos.x + particle.radius < -this.dis) {
|
|
69
|
-
particle.velocity.y *= -1;
|
|
70
|
-
} else if (pos.x - particle.radius > canvas.width + this.dis) {
|
|
71
|
-
particle.velocity.y *= -1;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
ScreenZone.prototype.getPosition = function () {
|
|
78
|
-
var vec2 = new Vector3D(),
|
|
79
|
-
canvas;
|
|
80
|
-
return function () {
|
|
81
|
-
canvas = this.renderer.domElement;
|
|
82
|
-
vec2.x = Math.random() * canvas.width;
|
|
83
|
-
vec2.y = Math.random() * canvas.height;
|
|
84
|
-
this.vector.copy(THREEUtil.toSpacePos(vec2, this.camera, canvas));
|
|
85
|
-
return this.vector;
|
|
86
|
-
};
|
|
87
|
-
}();
|
|
88
|
-
|
|
89
|
-
ScreenZone.prototype._cross = function () {
|
|
90
|
-
var vec2 = new Vector3D();
|
|
91
|
-
return function (particle) {
|
|
92
|
-
var pos = THREEUtil.toScreenPos(particle.position, this.camera, this.renderer.domElement);
|
|
93
|
-
var canvas = this.renderer.domElement;
|
|
94
|
-
|
|
95
|
-
if (pos.y + particle.radius < -this.dis) {
|
|
96
|
-
vec2.x = pos.x;
|
|
97
|
-
vec2.y = canvas.height + this.dis + particle.radius;
|
|
98
|
-
particle.position.y = THREEUtil.toSpacePos(vec2, this.camera, canvas).y;
|
|
99
|
-
} else if (pos.y - particle.radius > canvas.height + this.dis) {
|
|
100
|
-
vec2.x = pos.x;
|
|
101
|
-
vec2.y = -this.dis - particle.radius;
|
|
102
|
-
particle.position.y = THREEUtil.toSpacePos(vec2, this.camera, canvas).y;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
if (pos.x + particle.radius < -this.dis) {
|
|
106
|
-
vec2.y = pos.y;
|
|
107
|
-
vec2.x = canvas.width + this.dis + particle.radius;
|
|
108
|
-
particle.position.x = THREEUtil.toSpacePos(vec2, this.camera, canvas).x;
|
|
109
|
-
} else if (pos.x - particle.radius > canvas.width + this.dis) {
|
|
110
|
-
vec2.y = pos.y;
|
|
111
|
-
vec2.x = -this.dis - particle.radius;
|
|
112
|
-
particle.position.x = THREEUtil.toSpacePos(vec2, this.camera, canvas).x;
|
|
113
|
-
}
|
|
114
|
-
};
|
|
115
|
-
}();
|
|
116
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy96b25lL1NjcmVlblpvbmUuanMiXSwibmFtZXMiOlsiVEhSRUVVdGlsIiwiVmVjdG9yM0QiLCJab25lIiwiWk9ORV9UWVBFX1NDUkVFTiIsInR5cGUiLCJTY3JlZW5ab25lIiwiY29uc3RydWN0b3IiLCJjYW1lcmEiLCJyZW5kZXJlciIsImRpcyIsImRpciIsImkiLCJpbmRleE9mIiwiaXNTY3JlZW5ab25lIiwiX2RlYWQiLCJwYXJ0aWNsZSIsInBvcyIsInRvU2NyZWVuUG9zIiwicG9zaXRpb24iLCJkb21FbGVtZW50IiwiY2FudmFzIiwieSIsInJhZGl1cyIsImQxIiwiZGVhZCIsImhlaWdodCIsImQzIiwieCIsImQ0Iiwid2lkdGgiLCJkMiIsIl9ib3VuZCIsInZlbG9jaXR5IiwicHJvdG90eXBlIiwiZ2V0UG9zaXRpb24iLCJ2ZWMyIiwiTWF0aCIsInJhbmRvbSIsInZlY3RvciIsImNvcHkiLCJ0b1NwYWNlUG9zIiwiX2Nyb3NzIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxTQUFQLE1BQXNCLG9CQUF0QjtBQUNBLE9BQU9DLFFBQVAsTUFBcUIsa0JBQXJCO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixRQUFqQjtBQUNBLFNBQVNDLGdCQUFnQixJQUFJQyxJQUE3QixRQUF5QyxTQUF6QztBQUVBLGVBQWUsTUFBTUMsVUFBTixTQUF5QkgsSUFBekIsQ0FBOEI7QUFDM0M7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0VJLEVBQUFBLFdBQVcsQ0FBQ0MsTUFBRCxFQUFTQyxRQUFULEVBQW1CQyxHQUFuQixFQUF3QkMsR0FBeEIsRUFBNkI7QUFDdEMsVUFBTU4sSUFBTjtBQUVBLFNBQUtHLE1BQUwsR0FBY0EsTUFBZDtBQUNBLFNBQUtDLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0EsU0FBS0MsR0FBTCxHQUFXQSxHQUFHLElBQUksRUFBbEI7QUFDQUMsSUFB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QVQsQ0FBa0JTLENBQWxCLEdBQXNCM0IsU0FBUyxDQUFDd0MsVUFBVixDQUFxQkwsSUFBckIsRUFBMkIsS0FBSzVCLE1BQWhDLEVBQXdDYSxNQUF4QyxFQUFnRE8sQ0FBdEU7QUFDRCxLQUpELE1BSU8sSUFBSVgsR0FBRyxDQUFDVyxDQUFKLEdBQVFaLFFBQVEsQ0FBQ08sTUFBakIsR0FBMEJGLE1BQU0sQ0FBQ1MsS0FBUCxHQUFlLEtBQUtwQixHQUFsRCxFQUF1RDtBQUM1RDBCLE1BQUFBLElBQUksQ0FBQ2QsQ0FBTCxHQUFTTCxHQUFHLENBQUNLLENBQWI7QUFDQWMsTUFBQUEsSUFBSSxDQUFDUixDQUFMLEdBQVMsQ0FBQyxLQUFLbEIsR0FBTixHQUFZTSxRQUFRLENBQUNPLE1BQTlCO0FBQ0FQLE1BQUFBLFFBQVEsQ0FBQ0csUUFBVCxDQUFrQlMsQ0FBbEIsR0FBc0IzQixTQUFTLENBQUN3QyxVQUFWLENBQXFCTCxJQUFyQixFQUEyQixLQUFLNUIsTUFBaEMsRUFBd0NhLE1BQXhDLEVBQWdETyxDQUF0RTtBQUNEO0FBQ0YsR0EzQkQ7QUE0QkQsQ0EvQjZCLEVBQTlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRIUkVFVXRpbCBmcm9tICcuLi91dGlscy9USFJFRVV0aWwnO1xuaW1wb3J0IFZlY3RvcjNEIGZyb20gJy4uL21hdGgvVmVjdG9yM0QnO1xuaW1wb3J0IFpvbmUgZnJvbSAnLi9ab25lJztcbmltcG9ydCB7IFpPTkVfVFlQRV9TQ1JFRU4gYXMgdHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY3JlZW5ab25lIGV4dGVuZHMgWm9uZSB7XG4gIC8qKlxuICAgKiBTY3JlZW5ab25lIGlzIGEgM2QgbGluZSB6b25lXG4gICAqIEBwYXJhbSB7TnVtYmVyfFZlY3RvcjNEfSB4MSAtIHRoZSBsaW5lJ3Mgc3RhcnQgcG9pbnQgb2YgeCB2YWx1ZSBvciBhIFZlY3RvcjNEIE9iamVjdFxuICAgKiBAcGFyYW0ge051bWJlcnxWZWN0b3IzRH0geTEgLSB0aGUgbGluZSdzIHN0YXJ0IHBvaW50IG9mIHkgdmFsdWUgb3IgYSBWZWN0b3IzRCBPYmplY3RcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHoxIC0gdGhlIGxpbmUncyBzdGFydCBwb2ludCBvZiB6IHZhbHVlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB4MiAtIHRoZSBsaW5lJ3MgZW5kIHBvaW50IG9mIHggdmFsdWVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHkyIC0gdGhlIGxpbmUncyBlbmQgcG9pbnQgb2YgeSB2YWx1ZVxuICAgKiBAcGFyYW0ge051bWJlcn0gejIgLSB0aGUgbGluZSdzIGVuZCBwb2ludCBvZiB6IHZhbHVlXG4gICAqIEBleGFtcGxlXG4gICAqIHZhciBsaW5lWm9uZSA9IG5ldyBTY3JlZW5ab25lKDAsMCwwLDEwMCwxMDAsMCk7XG4gICAqIG9yXG4gICAqIHZhciBsaW5lWm9uZSA9IG5ldyBTY3JlZW5ab25lKG5ldyBWZWN0b3IzRCgwLDAsMCksbmV3IFZlY3RvcjNEKDEwMCwxMDAsMCkpO1xuICAgKiBAZXh0ZW5kcyB7Wm9uZX1cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3RvcihjYW1lcmEsIHJlbmRlcmVyLCBkaXMsIGRpcikge1xuICAgIHN1cGVyKHR5cGUpO1xuXG4gICAgdGhpcy5jYW1lcmEgPSBjYW1lcmE7XG4gICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyO1xuICAgIHRoaXMuZGlzID0gZGlzIHx8IDIwO1xuICAgIGRpciA9IGRpciB8fCAnMTIzNCc7XG5cbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IDU7IGkrKykgdGhpc1snZCcgKyBpXSA9IGRpci5pbmRleE9mKGkgKyAnJykgPj0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgdG8gaW5kaWNhdGUgdGhpcyBpcyBhIFNjcmVlblpvbmUuXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBpc1NjcmVlblpvbmUoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBfZGVhZChwYXJ0aWNsZSkge1xuICAgIHZhciBwb3MgPSBUSFJFRVV0aWwudG9TY3JlZW5Qb3MoXG4gICAgICBwYXJ0aWNsZS5wb3NpdGlvbixcbiAgICAgIHRoaXMuY2FtZXJhLFxuICAgICAgdGhpcy5yZW5kZXJlci5kb21FbGVtZW50XG4gICAgKTtcbiAgICB2YXIgY2FudmFzID0gdGhpcy5yZW5kZXJlci5kb21FbGVtZW50O1xuXG4gICAgaWYgKHBvcy55ICsgcGFydGljbGUucmFkaXVzIDwgLXRoaXMuZGlzICYmIHRoaXMuZDEpIHtcbiAgICAgIHBhcnRpY2xlLmRlYWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAocG9zLnkgLSBwYXJ0aWNsZS5yYWRpdXMgPiBjYW52YXMuaGVpZ2h0ICsgdGhpcy5kaXMgJiYgdGhpcy5kMykge1xuICAgICAgcGFydGljbGUuZGVhZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHBvcy54ICsgcGFydGljbGUucmFkaXVzIDwgLXRoaXMuZGlzICYmIHRoaXMuZDQpIHtcbiAgICAgIHBhcnRpY2xlLmRlYWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAocG9zLnggLSBwYXJ0aWNsZS5yYWRpdXMgPiBjYW52YXMud2lkdGggKyB0aGlzLmRpcyAmJiB0aGlzLmQyKSB7XG4gICAgICBwYXJ0aWNsZS5kZWFkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBfYm91bmQocGFydGljbGUpIHtcbiAgICB2YXIgcG9zID0gVEhSRUVVdGlsLnRvU2NyZWVuUG9zKFxuICAgICAgcGFydGljbGUucG9zaXRpb24sXG4gICAgICB0aGlzLmNhbWVyYSxcbiAgICAgIHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudFxuICAgICk7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudDtcblxuICAgIGlmIChwb3MueSArIHBhcnRpY2xlLnJhZGl1cyA8IC10aGlzLmRpcykge1xuICAgICAgcGFydGljbGUudmVsb2NpdHkueSAqPSAtMTtcbiAgICB9IGVsc2UgaWYgKHBvcy55IC0gcGFydGljbGUucmFkaXVzID4gY2FudmFzLmhlaWdodCArIHRoaXMuZGlzKSB7XG4gICAgICBwYXJ0aWNsZS52ZWxvY2l0eS55ICo9IC0xO1xuICAgIH1cblxuICAgIGlmIChwb3MueCArIHBhcnRpY2xlLnJhZGl1cyA8IC10aGlzLmRpcykge1xuICAgICAgcGFydGljbGUudmVsb2NpdHkueSAqPSAtMTtcbiAgICB9IGVsc2UgaWYgKHBvcy54IC0gcGFydGljbGUucmFkaXVzID4gY2FudmFzLndpZHRoICsgdGhpcy5kaXMpIHtcbiAgICAgIHBhcnRpY2xlLnZlbG9jaXR5LnkgKj0gLTE7XG4gICAgfVxuICB9XG59XG5cblNjcmVlblpvbmUucHJvdG90eXBlLmdldFBvc2l0aW9uID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgdmVjMiA9IG5ldyBWZWN0b3IzRCgpLFxuICAgIGNhbnZhcztcblxuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgY2FudmFzID0gdGhpcy5yZW5kZXJlci5kb21FbGVtZW50O1xuICAgIHZlYzIueCA9IE1hdGgucmFuZG9tKCkgKiBjYW52YXMud2lkdGg7XG4gICAgdmVjMi55ID0gTWF0aC5yYW5kb20oKSAqIGNhbnZhcy5oZWlnaHQ7XG4gICAgdGhpcy52ZWN0b3IuY29weShUSFJFRVV0aWwudG9TcGFjZVBvcyh2ZWMyLCB0aGlzLmNhbWVyYSwgY2FudmFzKSk7XG5cbiAgICByZXR1cm4gdGhpcy52ZWN0b3I7XG4gIH07XG59KSgpO1xuXG5TY3JlZW5ab25lLnByb3RvdHlwZS5fY3Jvc3MgPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB2ZWMyID0gbmV3IFZlY3RvcjNEKCk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHBhcnRpY2xlKSB7XG4gICAgdmFyIHBvcyA9IFRIUkVFVXRpbC50b1NjcmVlblBvcyhcbiAgICAgIHBhcnRpY2xlLnBvc2l0aW9uLFxuICAgICAgdGhpcy5jYW1lcmEsXG4gICAgICB0aGlzLnJlbmRlcmVyLmRvbUVsZW1lbnRcbiAgICApO1xuICAgIHZhciBjYW52YXMgPSB0aGlzLnJlbmRlcmVyLmRvbUVsZW1lbnQ7XG5cbiAgICBpZiAocG9zLnkgKyBwYXJ0aWNsZS5yYWRpdXMgPCAtdGhpcy5kaXMpIHtcbiAgICAgIHZlYzIueCA9IHBvcy54O1xuICAgICAgdmVjMi55ID0gY2FudmFzLmhlaWdodCArIHRoaXMuZGlzICsgcGFydGljbGUucmFkaXVzO1xuICAgICAgcGFydGljbGUucG9zaXRpb24ueSA9IFRIUkVFVXRpbC50b1NwYWNlUG9zKHZlYzIsIHRoaXMuY2FtZXJhLCBjYW52YXMpLnk7XG4gICAgfSBlbHNlIGlmIChwb3MueSAtIHBhcnRpY2xlLnJhZGl1cyA+IGNhbnZhcy5oZWlnaHQgKyB0aGlzLmRpcykge1xuICAgICAgdmVjMi54ID0gcG9zLng7XG4gICAgICB2ZWMyLnkgPSAtdGhpcy5kaXMgLSBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgICBwYXJ0aWNsZS5wb3NpdGlvbi55ID0gVEhSRUVVdGlsLnRvU3BhY2VQb3ModmVjMiwgdGhpcy5jYW1lcmEsIGNhbnZhcykueTtcbiAgICB9XG5cbiAgICBpZiAocG9zLnggKyBwYXJ0aWNsZS5yYWRpdXMgPCAtdGhpcy5kaXMpIHtcbiAgICAgIHZlYzIueSA9IHBvcy55O1xuICAgICAgdmVjMi54ID0gY2FudmFzLndpZHRoICsgdGhpcy5kaXMgKyBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgICBwYXJ0aWNsZS5wb3NpdGlvbi54ID0gVEhSRUVVdGlsLnRvU3BhY2VQb3ModmVjMiwgdGhpcy5jYW1lcmEsIGNhbnZhcykueDtcbiAgICB9IGVsc2UgaWYgKHBvcy54IC0gcGFydGljbGUucmFkaXVzID4gY2FudmFzLndpZHRoICsgdGhpcy5kaXMpIHtcbiAgICAgIHZlYzIueSA9IHBvcy55O1xuICAgICAgdmVjMi54ID0gLXRoaXMuZGlzIC0gcGFydGljbGUucmFkaXVzO1xuICAgICAgcGFydGljbGUucG9zaXRpb24ueCA9IFRIUkVFVXRpbC50b1NwYWNlUG9zKHZlYzIsIHRoaXMuY2FtZXJhLCBjYW52YXMpLng7XG4gICAgfVxuICB9O1xufSkoKTtcbiJdfQ==
|