three-nebula 11.0.0 → 11.1.1
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 +16 -0
- package/dist/three-nebula.cjs +109 -0
- package/dist/three-nebula.cjs.map +1 -0
- package/dist/three-nebula.mjs +2969 -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,210 +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
|
-
import * as Behaviour from '../behaviour';
|
|
8
|
-
import * as Initializer from '../initializer';
|
|
9
|
-
import { EULER, POOL_MAX } from '../constants';
|
|
10
|
-
import { INITIALIZER_TYPES_THAT_REQUIRE_THREE, SUPPORTED_JSON_BEHAVIOUR_TYPES, SUPPORTED_JSON_INITIALIZER_TYPES } from './constants';
|
|
11
|
-
import Rate from '../initializer/Rate';
|
|
12
|
-
import TextureInitializer from '../initializer/Texture';
|
|
13
|
-
const DEFAULT_OPTIONS = {
|
|
14
|
-
shouldAutoEmit: true
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* Makes a rate instance.
|
|
18
|
-
*
|
|
19
|
-
* @param {object} json - The data required to construct a Rate instance
|
|
20
|
-
* @return {Rate}
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
const makeRate = json => Rate.fromJSON(json);
|
|
24
|
-
/**
|
|
25
|
-
* Makes initializers from json items.
|
|
26
|
-
*
|
|
27
|
-
* @param {array<object>} items - An array of objects which provide initializer constructor params
|
|
28
|
-
* @param {object} THREE - The Web GL Api to use
|
|
29
|
-
* @return {array<Initializer>}
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const makeInitializers = (items, THREE) => new Promise((resolve, reject) => {
|
|
34
|
-
if (!items.length) {
|
|
35
|
-
return resolve([]);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const numberOfInitializers = items.length;
|
|
39
|
-
const madeInitializers = [];
|
|
40
|
-
const doNotRequireTextureLoading = items.filter(({
|
|
41
|
-
properties
|
|
42
|
-
}) => !properties.texture);
|
|
43
|
-
const doRequireTextureLoading = items.filter(({
|
|
44
|
-
properties
|
|
45
|
-
}) => properties.texture);
|
|
46
|
-
doNotRequireTextureLoading.forEach(data => {
|
|
47
|
-
const {
|
|
48
|
-
type,
|
|
49
|
-
properties
|
|
50
|
-
} = data;
|
|
51
|
-
|
|
52
|
-
if (!SUPPORTED_JSON_INITIALIZER_TYPES.includes(type)) {
|
|
53
|
-
return reject(`The initializer type ${type} is invalid or not yet supported`);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
if (INITIALIZER_TYPES_THAT_REQUIRE_THREE.includes(type)) {
|
|
57
|
-
madeInitializers.push(Initializer[type].fromJSON(properties, THREE));
|
|
58
|
-
} else {
|
|
59
|
-
madeInitializers.push(Initializer[type].fromJSON(properties));
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
if (madeInitializers.length === numberOfInitializers) {
|
|
63
|
-
return resolve(madeInitializers);
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
doRequireTextureLoading.forEach(data => {
|
|
67
|
-
const {
|
|
68
|
-
type,
|
|
69
|
-
properties,
|
|
70
|
-
properties: {
|
|
71
|
-
texture
|
|
72
|
-
}
|
|
73
|
-
} = data;
|
|
74
|
-
const textureLoader = new THREE.TextureLoader();
|
|
75
|
-
|
|
76
|
-
if (!SUPPORTED_JSON_INITIALIZER_TYPES.includes(type)) {
|
|
77
|
-
return reject(`The initializer type ${type} is invalid or not yet supported`);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
textureLoader.load(texture, loadedTexture => {
|
|
81
|
-
madeInitializers.push(TextureInitializer.fromJSON(_objectSpread(_objectSpread({}, properties), {}, {
|
|
82
|
-
loadedTexture
|
|
83
|
-
}), THREE));
|
|
84
|
-
|
|
85
|
-
if (madeInitializers.length === numberOfInitializers) {
|
|
86
|
-
return resolve(madeInitializers);
|
|
87
|
-
}
|
|
88
|
-
}, undefined, reject);
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
/**
|
|
92
|
-
* Makes behaviours from json items.
|
|
93
|
-
*
|
|
94
|
-
* @param {array<object>} items - An array of objects which provide behaviour constructor params
|
|
95
|
-
* @return {Promise<array>}
|
|
96
|
-
*/
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const makeBehaviours = items => new Promise((resolve, reject) => {
|
|
100
|
-
if (!items.length) {
|
|
101
|
-
return resolve([]);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
const numberOfBehaviours = items.length;
|
|
105
|
-
const madeBehaviours = [];
|
|
106
|
-
items.forEach(data => {
|
|
107
|
-
const {
|
|
108
|
-
type,
|
|
109
|
-
properties
|
|
110
|
-
} = data;
|
|
111
|
-
|
|
112
|
-
if (!SUPPORTED_JSON_BEHAVIOUR_TYPES.includes(type)) {
|
|
113
|
-
return reject(`The behaviour type ${type} is invalid or not yet supported`);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
madeBehaviours.push(Behaviour[type].fromJSON(properties));
|
|
117
|
-
|
|
118
|
-
if (madeBehaviours.length === numberOfBehaviours) {
|
|
119
|
-
return resolve(madeBehaviours);
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
const makeEmitters = (emitters, Emitter, THREE, shouldAutoEmit) => new Promise((resolve, reject) => {
|
|
125
|
-
if (!emitters.length) {
|
|
126
|
-
return resolve([]);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
const madeEmitters = [];
|
|
130
|
-
const numberOfEmitters = emitters.length;
|
|
131
|
-
|
|
132
|
-
if (!numberOfEmitters) {
|
|
133
|
-
return resolve(madeEmitters);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
emitters.forEach(data => {
|
|
137
|
-
const emitter = new Emitter();
|
|
138
|
-
const {
|
|
139
|
-
rate,
|
|
140
|
-
rotation,
|
|
141
|
-
initializers,
|
|
142
|
-
behaviours,
|
|
143
|
-
emitterBehaviours = [],
|
|
144
|
-
position,
|
|
145
|
-
totalEmitTimes = Infinity,
|
|
146
|
-
life = Infinity
|
|
147
|
-
} = data;
|
|
148
|
-
emitter.setRate(makeRate(rate)).setRotation(rotation).setPosition(position);
|
|
149
|
-
makeInitializers(initializers, THREE).then(madeInitializers => {
|
|
150
|
-
emitter.setInitializers(madeInitializers);
|
|
151
|
-
return makeBehaviours(behaviours);
|
|
152
|
-
}).then(madeBehaviours => {
|
|
153
|
-
emitter.setBehaviours(madeBehaviours);
|
|
154
|
-
return makeBehaviours(emitterBehaviours);
|
|
155
|
-
}).then(madeEmitterBehaviours => {
|
|
156
|
-
emitter.setEmitterBehaviours(madeEmitterBehaviours);
|
|
157
|
-
return Promise.resolve(emitter);
|
|
158
|
-
}).then(emitter => {
|
|
159
|
-
madeEmitters.push(shouldAutoEmit ? emitter.emit(totalEmitTimes, life) : emitter.setTotalEmitTimes(totalEmitTimes).setLife(life));
|
|
160
|
-
|
|
161
|
-
if (madeEmitters.length === numberOfEmitters) {
|
|
162
|
-
return resolve(madeEmitters);
|
|
163
|
-
}
|
|
164
|
-
}).catch(reject);
|
|
165
|
-
});
|
|
166
|
-
});
|
|
167
|
-
/**
|
|
168
|
-
* Creates a System instance from a JSON object.
|
|
169
|
-
*
|
|
170
|
-
* @param {object} json - The JSON to create the System instance from
|
|
171
|
-
* @param {number} json.preParticles - The predetermined number of particles
|
|
172
|
-
* @param {string} json.integrationType - The integration algorithm to use
|
|
173
|
-
* @param {array<object>} json.emitters - The emitters for the system instance
|
|
174
|
-
* @param {object} THREE - The Web GL Api to use
|
|
175
|
-
* @param {function} System - The system class
|
|
176
|
-
* @param {function} Emitter - The emitter class
|
|
177
|
-
* @param {object} [options={}] - Optional config options
|
|
178
|
-
* @return {Promise<System>}
|
|
179
|
-
*/
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
export default ((json, THREE, System, Emitter, options = {}) => new Promise((resolve, reject) => {
|
|
183
|
-
const {
|
|
184
|
-
preParticles = POOL_MAX,
|
|
185
|
-
integrationType = EULER,
|
|
186
|
-
emitters = []
|
|
187
|
-
} = json;
|
|
188
|
-
const system = new System(preParticles, integrationType);
|
|
189
|
-
|
|
190
|
-
const {
|
|
191
|
-
shouldAutoEmit
|
|
192
|
-
} = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
|
|
193
|
-
|
|
194
|
-
makeEmitters(emitters, Emitter, THREE, shouldAutoEmit).then(madeEmitters => {
|
|
195
|
-
const numberOfEmitters = madeEmitters.length;
|
|
196
|
-
|
|
197
|
-
if (!numberOfEmitters) {
|
|
198
|
-
return resolve(system);
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
madeEmitters.forEach(madeEmitter => {
|
|
202
|
-
system.addEmitter(madeEmitter);
|
|
203
|
-
|
|
204
|
-
if (system.emitters.length === numberOfEmitters) {
|
|
205
|
-
resolve(system);
|
|
206
|
-
}
|
|
207
|
-
});
|
|
208
|
-
}).catch(reject);
|
|
209
|
-
}));
|
|
210
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL2Zyb21KU09OQXN5bmMuanMiXSwibmFtZXMiOlsiQmVoYXZpb3VyIiwiSW5pdGlhbGl6ZXIiLCJFVUxFUiIsIlBPT0xfTUFYIiwiSU5JVElBTElaRVJfVFlQRVNfVEhBVF9SRVFVSVJFX1RIUkVFIiwiU1VQUE9SVEVEX0pTT05fQkVIQVZJT1VSX1RZUEVTIiwiU1VQUE9SVEVEX0pTT05fSU5JVElBTElaRVJfVFlQRVMiLCJSYXRlIiwiVGV4dHVyZUluaXRpYWxpemVyIiwiREVGQVVMVF9PUFRJT05TIiwic2hvdWxkQXV0b0VtaXQiLCJtYWtlUmF0ZSIsImpzb24iLCJmcm9tSlNPTiIsIm1ha2VJbml0aWFsaXplcnMiLCJpdGVtcyIsIlRIUkVFIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJsZW5ndGgiLCJudW1iZXJPZkluaXRpYWxpemVycyIsIm1hZGVJbml0aWFsaXplcnMiLCJkb05vdFJlcXVpcmVUZXh0dXJlTG9hZGluZyIsImZpbHRlciIsInByb3BlcnRpZXMiLCJ0ZXh0dXJlIiwiZG9SZXF1aXJlVGV4dHVyZUxvYWRpbmciLCJmb3JFYWNoIiwiZGF0YSIsInR5cGUiLCJpbmNsdWRlcyIsInB1c2giLCJ0ZXh0dXJlTG9hZGVyIiwiVGV4dHVyZUxvYWRlciIsImxvYWQiLCJsb2FkZWRUZXh0dXJlIiwidW5kZWZpbmVkIiwibWFrZUJlaGF2aW91cnMiLCJudW1iZXJPZkJlaGF2aW91cnMiLCJtYWRlQmVoYXZpb3VycyIsIm1ha2VFbWl0dGVycyIsImVtaXR0ZXJzIiwiRW1pdHRlciIsIm1hZGVFbWl0dGVycyIsIm51bWJlck9mRW1pdHRlcnMiLCJlbWl0dGVyIiwicmF0ZSIsInJvdGF0aW9uIiwiaW5pdGlhbGl6ZXJzIiwiYmVoYXZpb3VycyIsImVtaXR0ZXJCZWhhdmlvdXJzIiwicG9zaXRpb24iLCJ0b3RhbEVtaXRUaW1lcyIsIkluZmluaXR5IiwibGlmZSIsInNldFJhdGUiLCJzZXRSb3RhdGlvbiIsInNldFBvc2l0aW9uIiwidGhlbiIsInNldEluaXRpYWxpemVycyIsInNldEJlaGF2aW91cnMiLCJtYWRlRW1pdHRlckJlaGF2aW91cnMiLCJzZXRFbWl0dGVyQmVoYXZpb3VycyIsImVtaXQiLCJzZXRUb3RhbEVtaXRUaW1lcyIsInNldExpZmUiLCJjYXRjaCIsIlN5c3RlbSIsIm9wdGlvbnMiLCJwcmVQYXJ0aWNsZXMiLCJpbnRlZ3JhdGlvblR5cGUiLCJzeXN0ZW0iLCJtYWRlRW1pdHRlciIsImFkZEVtaXR0ZXIiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sS0FBS0EsU0FBWixNQUEyQixjQUEzQjtBQUNBLE9BQU8sS0FBS0MsV0FBWixNQUE2QixnQkFBN0I7QUFFQSxTQUFTQyxLQUFULEVBQWdCQyxRQUFoQixRQUFnQyxjQUFoQztBQUNBLFNBQ0VDLG9DQURGLEVBRUVDLDhCQUZGLEVBR0VDLGdDQUhGLFFBSU8sYUFKUDtBQU1BLE9BQU9DLElBQVAsTUFBaUIscUJBQWpCO0FBQ0EsT0FBT0Msa0JBQVAsTUFBK0Isd0JBQS9CO0FBRUEsTUFBTUMsZUFBZSxHQUFHO0FBQUVDLEVBQUFBLGNBQWMsRUFBRTtBQUFsQixDQUF4QjtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxNQUFNQyxRQUFRLEdBQUdDLElBQUksSUFBSUwsSUFBSSxDQUFDTSxRQUFMLENBQWNELElBQWQsQ0FBekI7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsTUFBTUUsZ0JBQWdCLEdBQUcsQ0FBQ0MsS0FBRCxFQUFRQyxLQUFSLEtBQ3ZCLElBQUlDLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FBcUI7QUFDL0IsTUFBSSxDQUFDSixLQUFLLENBQUNLLE1BQVgsRUFBbUI7QUFDakIsV0FBT0YsT0FBTyxDQUFDLEVBQUQsQ0FBZDtBQUNEOztBQUVELFFBQU1HLG9CQUFvQixHQUFHTixLQUFLLENBQUNLLE1BQW5DO0FBQ0EsUUFBTUUsZ0JBQWdCLEdBQUcsRUFBekI7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TUFoQlQ7QUFpQkQsQ0ExQkQsQ0FERiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEJlaGF2aW91ciBmcm9tICcuLi9iZWhhdmlvdXInO1xuaW1wb3J0ICogYXMgSW5pdGlhbGl6ZXIgZnJvbSAnLi4vaW5pdGlhbGl6ZXInO1xuXG5pbXBvcnQgeyBFVUxFUiwgUE9PTF9NQVggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgSU5JVElBTElaRVJfVFlQRVNfVEhBVF9SRVFVSVJFX1RIUkVFLFxuICBTVVBQT1JURURfSlNPTl9CRUhBVklPVVJfVFlQRVMsXG4gIFNVUFBPUlRFRF9KU09OX0lOSVRJQUxJWkVSX1RZUEVTLFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmltcG9ydCBSYXRlIGZyb20gJy4uL2luaXRpYWxpemVyL1JhdGUnO1xuaW1wb3J0IFRleHR1cmVJbml0aWFsaXplciBmcm9tICcuLi9pbml0aWFsaXplci9UZXh0dXJlJztcblxuY29uc3QgREVGQVVMVF9PUFRJT05TID0geyBzaG91bGRBdXRvRW1pdDogdHJ1ZSB9O1xuXG4vKipcbiAqIE1ha2VzIGEgcmF0ZSBpbnN0YW5jZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0ganNvbiAtIFRoZSBkYXRhIHJlcXVpcmVkIHRvIGNvbnN0cnVjdCBhIFJhdGUgaW5zdGFuY2VcbiAqIEByZXR1cm4ge1JhdGV9XG4gKi9cbmNvbnN0IG1ha2VSYXRlID0ganNvbiA9PiBSYXRlLmZyb21KU09OKGpzb24pO1xuXG4vKipcbiAqIE1ha2VzIGluaXRpYWxpemVycyBmcm9tIGpzb24gaXRlbXMuXG4gKlxuICogQHBhcmFtIHthcnJheTxvYmplY3Q+fSBpdGVtcyAtIEFuIGFycmF5IG9mIG9iamVjdHMgd2hpY2ggcHJvdmlkZSBpbml0aWFsaXplciBjb25zdHJ1Y3RvciBwYXJhbXNcbiAqIEBwYXJhbSB7b2JqZWN0fSBUSFJFRSAtIFRoZSBXZWIgR0wgQXBpIHRvIHVzZVxuICogQHJldHVybiB7YXJyYXk8SW5pdGlhbGl6ZXI+fVxuICovXG5jb25zdCBtYWtlSW5pdGlhbGl6ZXJzID0gKGl0ZW1zLCBUSFJFRSkgPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGlmICghaXRlbXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZShbXSk7XG4gICAgfVxuXG4gICAgY29uc3QgbnVtYmVyT2ZJbml0aWFsaXplcnMgPSBpdGVtcy5sZW5ndGg7XG4gICAgY29uc3QgbWFkZUluaXRpYWxpemVycyA9IFtdO1xuICAgIGNvbnN0IGRvTm90UmVxdWlyZVRleHR1cmVMb2FkaW5nID0gaXRlbXMuZmlsdGVyKFxuICAgICAgKHsgcHJvcGVydGllcyB9KSA9PiAhcHJvcGVydGllcy50ZXh0dXJlXG4gICAgKTtcbiAgICBjb25zdCBkb1JlcXVpcmVUZXh0dXJlTG9hZGluZyA9IGl0ZW1zLmZpbHRlcihcbiAgICAgICh7IHByb3BlcnRpZXMgfSkgPT4gcHJvcGVydGllcy50ZXh0dXJlXG4gICAgKTtcblxuICAgIGRvTm90UmVxdWlyZVRleHR1cmVMb2FkaW5nLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICBjb25zdCB7IHR5cGUsIHByb3BlcnRpZXMgfSA9IGRhdGE7XG5cbiAgICAgIGlmICghU1VQUE9SVEVEX0pTT05fSU5JVElBTElaRVJfVFlQRVMuaW5jbHVkZXModHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChcbiAgICAgICAgICBgVGhlIGluaXRpYWxpemVyIHR5cGUgJHt0eXBlfSBpcyBpbnZhbGlkIG9yIG5vdCB5ZXQgc3VwcG9ydGVkYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoSU5JVElBTElaRVJfVFlQRVNfVEhBVF9SRVFVSVJFX1RIUkVFLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgICAgIG1hZGVJbml0aWFsaXplcnMucHVzaChJbml0aWFsaXplclt0eXBlXS5mcm9tSlNPTihwcm9wZXJ0aWVzLCBUSFJFRSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFkZUluaXRpYWxpemVycy5wdXNoKEluaXRpYWxpemVyW3R5cGVdLmZyb21KU09OKHByb3BlcnRpZXMpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1hZGVJbml0aWFsaXplcnMubGVuZ3RoID09PSBudW1iZXJPZkluaXRpYWxpemVycykge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZShtYWRlSW5pdGlhbGl6ZXJzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGRvUmVxdWlyZVRleHR1cmVMb2FkaW5nLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIHByb3BlcnRpZXMsXG4gICAgICAgIHByb3BlcnRpZXM6IHsgdGV4dHVyZSB9LFxuICAgICAgfSA9IGRhdGE7XG4gICAgICBjb25zdCB0ZXh0dXJlTG9hZGVyID0gbmV3IFRIUkVFLlRleHR1cmVMb2FkZXIoKTtcblxuICAgICAgaWYgKCFTVVBQT1JURURfSlNPTl9JTklUSUFMSVpFUl9UWVBFUy5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KFxuICAgICAgICAgIGBUaGUgaW5pdGlhbGl6ZXIgdHlwZSAke3R5cGV9IGlzIGludmFsaWQgb3Igbm90IHlldCBzdXBwb3J0ZWRgXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRleHR1cmVMb2FkZXIubG9hZChcbiAgICAgICAgdGV4dHVyZSxcbiAgICAgICAgbG9hZGVkVGV4dHVyZSA9PiB7XG4gICAgICAgICAgbWFkZUluaXRpYWxpemVycy5wdXNoKFxuICAgICAgICAgICAgVGV4dHVyZUluaXRpYWxpemVyLmZyb21KU09OKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4ucHJvcGVydGllcyxcbiAgICAgICAgICAgICAgICBsb2FkZWRUZXh0dXJlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBUSFJFRVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAobWFkZUluaXRpYWxpemVycy5sZW5ndGggPT09IG51bWJlck9mSW5pdGlhbGl6ZXJzKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShtYWRlSW5pdGlhbGl6ZXJzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgcmVqZWN0XG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuLyoqXG4gKiBNYWtlcyBiZWhhdmlvdXJzIGZyb20ganNvbiBpdGVtcy5cbiAqXG4gKiBAcGFyYW0ge2FycmF5PG9iamVjdD59IGl0ZW1zIC0gQW4gYXJyYXkgb2Ygb2JqZWN0cyB3aGljaCBwcm92aWRlIGJlaGF2aW91ciBjb25zdHJ1Y3RvciBwYXJhbXNcbiAqIEByZXR1cm4ge1Byb21pc2U8YXJyYXk+fVxuICovXG5jb25zdCBtYWtlQmVoYXZpb3VycyA9IGl0ZW1zID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBpZiAoIWl0ZW1zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHJlc29sdmUoW10pO1xuICAgIH1cblxuICAgIGNvbnN0IG51bWJlck9mQmVoYXZpb3VycyA9IGl0ZW1zLmxlbmd0aDtcbiAgICBjb25zdCBtYWRlQmVoYXZpb3VycyA9IFtdO1xuXG4gICAgaXRlbXMuZm9yRWFjaChkYXRhID0+IHtcbiAgICAgIGNvbnN0IHsgdHlwZSwgcHJvcGVydGllcyB9ID0gZGF0YTtcblxuICAgICAgaWYgKCFTVVBQT1JURURfSlNPTl9CRUhBVklPVVJfVFlQRVMuaW5jbHVkZXModHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChcbiAgICAgICAgICBgVGhlIGJlaGF2aW91ciB0eXBlICR7dHlwZX0gaXMgaW52YWxpZCBvciBub3QgeWV0IHN1cHBvcnRlZGBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgbWFkZUJlaGF2aW91cnMucHVzaChCZWhhdmlvdXJbdHlwZV0uZnJvbUpTT04ocHJvcGVydGllcykpO1xuXG4gICAgICBpZiAobWFkZUJlaGF2aW91cnMubGVuZ3RoID09PSBudW1iZXJPZkJlaGF2aW91cnMpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUobWFkZUJlaGF2aW91cnMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuY29uc3QgbWFrZUVtaXR0ZXJzID0gKGVtaXR0ZXJzLCBFbWl0dGVyLCBUSFJFRSwgc2hvdWxkQXV0b0VtaXQpID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBpZiAoIWVtaXR0ZXJzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHJlc29sdmUoW10pO1xuICAgIH1cblxuICAgIGNvbnN0IG1hZGVFbWl0dGVycyA9IFtdO1xuICAgIGNvbnN0IG51bWJlck9mRW1pdHRlcnMgPSBlbWl0dGVycy5sZW5ndGg7XG5cbiAgICBpZiAoIW51bWJlck9mRW1pdHRlcnMpIHtcbiAgICAgIHJldHVybiByZXNvbHZlKG1hZGVFbWl0dGVycyk7XG4gICAgfVxuXG4gICAgZW1pdHRlcnMuZm9yRWFjaChkYXRhID0+IHtcbiAgICAgIGNvbnN0IGVtaXR0ZXIgPSBuZXcgRW1pdHRlcigpO1xuICAgICAgY29uc3Qge1xuICAgICAgICByYXRlLFxuICAgICAgICByb3RhdGlvbixcbiAgICAgICAgaW5pdGlhbGl6ZXJzLFxuICAgICAgICBiZWhhdmlvdXJzLFxuICAgICAgICBlbWl0dGVyQmVoYXZpb3VycyA9IFtdLFxuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgdG90YWxFbWl0VGltZXMgPSBJbmZpbml0eSxcbiAgICAgICAgbGlmZSA9IEluZmluaXR5LFxuICAgICAgfSA9IGRhdGE7XG5cbiAgICAgIGVtaXR0ZXJcbiAgICAgICAgLnNldFJhdGUobWFrZVJhdGUocmF0ZSkpXG4gICAgICAgIC5zZXRSb3RhdGlvbihyb3RhdGlvbilcbiAgICAgICAgLnNldFBvc2l0aW9uKHBvc2l0aW9uKTtcblxuICAgICAgbWFrZUluaXRpYWxpemVycyhpbml0aWFsaXplcnMsIFRIUkVFKVxuICAgICAgICAudGhlbihtYWRlSW5pdGlhbGl6ZXJzID0+IHtcbiAgICAgICAgICBlbWl0dGVyLnNldEluaXRpYWxpemVycyhtYWRlSW5pdGlhbGl6ZXJzKTtcblxuICAgICAgICAgIHJldHVybiBtYWtlQmVoYXZpb3VycyhiZWhhdmlvdXJzKTtcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4obWFkZUJlaGF2aW91cnMgPT4ge1xuICAgICAgICAgIGVtaXR0ZXIuc2V0QmVoYXZpb3VycyhtYWRlQmVoYXZpb3Vycyk7XG5cbiAgICAgICAgICByZXR1cm4gbWFrZUJlaGF2aW91cnMoZW1pdHRlckJlaGF2aW91cnMpO1xuICAgICAgICB9KVxuICAgICAgICAudGhlbihtYWRlRW1pdHRlckJlaGF2aW91cnMgPT4ge1xuICAgICAgICAgIGVtaXR0ZXIuc2V0RW1pdHRlckJlaGF2aW91cnMobWFkZUVtaXR0ZXJCZWhhdmlvdXJzKTtcblxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZW1pdHRlcik7XG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKGVtaXR0ZXIgPT4ge1xuICAgICAgICAgIG1hZGVFbWl0dGVycy5wdXNoKFxuICAgICAgICAgICAgc2hvdWxkQXV0b0VtaXRcbiAgICAgICAgICAgICAgPyBlbWl0dGVyLmVtaXQodG90YWxFbWl0VGltZXMsIGxpZmUpXG4gICAgICAgICAgICAgIDogZW1pdHRlci5zZXRUb3RhbEVtaXRUaW1lcyh0b3RhbEVtaXRUaW1lcykuc2V0TGlmZShsaWZlKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAobWFkZUVtaXR0ZXJzLmxlbmd0aCA9PT0gbnVtYmVyT2ZFbWl0dGVycykge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUobWFkZUVtaXR0ZXJzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChyZWplY3QpO1xuICAgIH0pO1xuICB9KTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgU3lzdGVtIGluc3RhbmNlIGZyb20gYSBKU09OIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0ganNvbiAtIFRoZSBKU09OIHRvIGNyZWF0ZSB0aGUgU3lzdGVtIGluc3RhbmNlIGZyb21cbiAqIEBwYXJhbSB7bnVtYmVyfSBqc29uLnByZVBhcnRpY2xlcyAtIFRoZSBwcmVkZXRlcm1pbmVkIG51bWJlciBvZiBwYXJ0aWNsZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSBqc29uLmludGVncmF0aW9uVHlwZSAtIFRoZSBpbnRlZ3JhdGlvbiBhbGdvcml0aG0gdG8gdXNlXG4gKiBAcGFyYW0ge2FycmF5PG9iamVjdD59IGpzb24uZW1pdHRlcnMgLSBUaGUgZW1pdHRlcnMgZm9yIHRoZSBzeXN0ZW0gaW5zdGFuY2VcbiAqIEBwYXJhbSB7b2JqZWN0fSBUSFJFRSAtIFRoZSBXZWIgR0wgQXBpIHRvIHVzZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gU3lzdGVtIC0gVGhlIHN5c3RlbSBjbGFzc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gRW1pdHRlciAtIFRoZSBlbWl0dGVyIGNsYXNzXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnM9e31dIC0gT3B0aW9uYWwgY29uZmlnIG9wdGlvbnNcbiAqIEByZXR1cm4ge1Byb21pc2U8U3lzdGVtPn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgKGpzb24sIFRIUkVFLCBTeXN0ZW0sIEVtaXR0ZXIsIG9wdGlvbnMgPSB7fSkgPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHByZVBhcnRpY2xlcyA9IFBPT0xfTUFYLFxuICAgICAgaW50ZWdyYXRpb25UeXBlID0gRVVMRVIsXG4gICAgICBlbWl0dGVycyA9IFtdLFxuICAgIH0gPSBqc29uO1xuICAgIGNvbnN0IHN5c3RlbSA9IG5ldyBTeXN0ZW0ocHJlUGFydGljbGVzLCBpbnRlZ3JhdGlvblR5cGUpO1xuICAgIGNvbnN0IHsgc2hvdWxkQXV0b0VtaXQgfSA9IHsgLi4uREVGQVVMVF9PUFRJT05TLCAuLi5vcHRpb25zIH07XG5cbiAgICBtYWtlRW1pdHRlcnMoZW1pdHRlcnMsIEVtaXR0ZXIsIFRIUkVFLCBzaG91bGRBdXRvRW1pdClcbiAgICAgIC50aGVuKG1hZGVFbWl0dGVycyA9PiB7XG4gICAgICAgIGNvbnN0IG51bWJlck9mRW1pdHRlcnMgPSBtYWRlRW1pdHRlcnMubGVuZ3RoO1xuXG4gICAgICAgIGlmICghbnVtYmVyT2ZFbWl0dGVycykge1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKHN5c3RlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBtYWRlRW1pdHRlcnMuZm9yRWFjaChtYWRlRW1pdHRlciA9PiB7XG4gICAgICAgICAgc3lzdGVtLmFkZEVtaXR0ZXIobWFkZUVtaXR0ZXIpO1xuXG4gICAgICAgICAgaWYgKHN5c3RlbS5lbWl0dGVycy5sZW5ndGggPT09IG51bWJlck9mRW1pdHRlcnMpIHtcbiAgICAgICAgICAgIHJlc29sdmUoc3lzdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChyZWplY3QpO1xuICB9KTtcbiJdfQ==
|
package/build/esm/core/index.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export { default as Particle } from './Particle';
|
|
2
|
-
export { default as Pool } from './Pool';
|
|
3
|
-
export { default as System } from './System';
|
|
4
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL2luZGV4LmpzIl0sIm5hbWVzIjpbImRlZmF1bHQiLCJQYXJ0aWNsZSIsIlBvb2wiLCJTeXN0ZW0iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLE9BQU8sSUFBSUMsUUFBcEIsUUFBb0MsWUFBcEM7QUFDQSxTQUFTRCxPQUFPLElBQUlFLElBQXBCLFFBQWdDLFFBQWhDO0FBQ0EsU0FBU0YsT0FBTyxJQUFJRyxNQUFwQixRQUFrQyxVQUFsQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgUGFydGljbGUgfSBmcm9tICcuL1BhcnRpY2xlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUG9vbCB9IGZyb20gJy4vUG9vbCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFN5c3RlbSB9IGZyb20gJy4vU3lzdGVtJztcbiJdfQ==
|
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
import { Quaternion } from './Quaternion.js';
|
|
2
|
-
import { Vector3 } from './Vector3.js';
|
|
3
|
-
import { Matrix4 } from './Matrix4.js';
|
|
4
|
-
import { _Math } from './Math.js';
|
|
5
|
-
/**
|
|
6
|
-
* @author mrdoob / http://mrdoob.com/
|
|
7
|
-
* @author WestLangley / http://github.com/WestLangley
|
|
8
|
-
* @author bhouston / http://clara.io
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
function Euler(x, y, z, order) {
|
|
12
|
-
this._x = x || 0;
|
|
13
|
-
this._y = y || 0;
|
|
14
|
-
this._z = z || 0;
|
|
15
|
-
this._order = order || Euler.DefaultOrder;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
Euler.RotationOrders = ['XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX'];
|
|
19
|
-
Euler.DefaultOrder = 'XYZ';
|
|
20
|
-
Object.defineProperties(Euler.prototype, {
|
|
21
|
-
x: {
|
|
22
|
-
get: function () {
|
|
23
|
-
return this._x;
|
|
24
|
-
},
|
|
25
|
-
set: function (value) {
|
|
26
|
-
this._x = value;
|
|
27
|
-
|
|
28
|
-
this._onChangeCallback();
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
y: {
|
|
32
|
-
get: function () {
|
|
33
|
-
return this._y;
|
|
34
|
-
},
|
|
35
|
-
set: function (value) {
|
|
36
|
-
this._y = value;
|
|
37
|
-
|
|
38
|
-
this._onChangeCallback();
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
z: {
|
|
42
|
-
get: function () {
|
|
43
|
-
return this._z;
|
|
44
|
-
},
|
|
45
|
-
set: function (value) {
|
|
46
|
-
this._z = value;
|
|
47
|
-
|
|
48
|
-
this._onChangeCallback();
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
order: {
|
|
52
|
-
get: function () {
|
|
53
|
-
return this._order;
|
|
54
|
-
},
|
|
55
|
-
set: function (value) {
|
|
56
|
-
this._order = value;
|
|
57
|
-
|
|
58
|
-
this._onChangeCallback();
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
Object.assign(Euler.prototype, {
|
|
63
|
-
isEuler: true,
|
|
64
|
-
set: function (x, y, z, order) {
|
|
65
|
-
this._x = x;
|
|
66
|
-
this._y = y;
|
|
67
|
-
this._z = z;
|
|
68
|
-
this._order = order || this._order;
|
|
69
|
-
|
|
70
|
-
this._onChangeCallback();
|
|
71
|
-
|
|
72
|
-
return this;
|
|
73
|
-
},
|
|
74
|
-
clone: function () {
|
|
75
|
-
return new this.constructor(this._x, this._y, this._z, this._order);
|
|
76
|
-
},
|
|
77
|
-
copy: function (euler) {
|
|
78
|
-
this._x = euler._x;
|
|
79
|
-
this._y = euler._y;
|
|
80
|
-
this._z = euler._z;
|
|
81
|
-
this._order = euler._order;
|
|
82
|
-
|
|
83
|
-
this._onChangeCallback();
|
|
84
|
-
|
|
85
|
-
return this;
|
|
86
|
-
},
|
|
87
|
-
setFromRotationMatrix: function (m, order, update) {
|
|
88
|
-
var clamp = _Math.clamp; // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)
|
|
89
|
-
|
|
90
|
-
var te = m.elements;
|
|
91
|
-
var m11 = te[0],
|
|
92
|
-
m12 = te[4],
|
|
93
|
-
m13 = te[8];
|
|
94
|
-
var m21 = te[1],
|
|
95
|
-
m22 = te[5],
|
|
96
|
-
m23 = te[9];
|
|
97
|
-
var m31 = te[2],
|
|
98
|
-
m32 = te[6],
|
|
99
|
-
m33 = te[10];
|
|
100
|
-
order = order || this._order;
|
|
101
|
-
|
|
102
|
-
if (order === 'XYZ') {
|
|
103
|
-
this._y = Math.asin(clamp(m13, -1, 1));
|
|
104
|
-
|
|
105
|
-
if (Math.abs(m13) < 0.99999) {
|
|
106
|
-
this._x = Math.atan2(-m23, m33);
|
|
107
|
-
this._z = Math.atan2(-m12, m11);
|
|
108
|
-
} else {
|
|
109
|
-
this._x = Math.atan2(m32, m22);
|
|
110
|
-
this._z = 0;
|
|
111
|
-
}
|
|
112
|
-
} else if (order === 'YXZ') {
|
|
113
|
-
this._x = Math.asin(-clamp(m23, -1, 1));
|
|
114
|
-
|
|
115
|
-
if (Math.abs(m23) < 0.99999) {
|
|
116
|
-
this._y = Math.atan2(m13, m33);
|
|
117
|
-
this._z = Math.atan2(m21, m22);
|
|
118
|
-
} else {
|
|
119
|
-
this._y = Math.atan2(-m31, m11);
|
|
120
|
-
this._z = 0;
|
|
121
|
-
}
|
|
122
|
-
} else if (order === 'ZXY') {
|
|
123
|
-
this._x = Math.asin(clamp(m32, -1, 1));
|
|
124
|
-
|
|
125
|
-
if (Math.abs(m32) < 0.99999) {
|
|
126
|
-
this._y = Math.atan2(-m31, m33);
|
|
127
|
-
this._z = Math.atan2(-m12, m22);
|
|
128
|
-
} else {
|
|
129
|
-
this._y = 0;
|
|
130
|
-
this._z = Math.atan2(m21, m11);
|
|
131
|
-
}
|
|
132
|
-
} else if (order === 'ZYX') {
|
|
133
|
-
this._y = Math.asin(-clamp(m31, -1, 1));
|
|
134
|
-
|
|
135
|
-
if (Math.abs(m31) < 0.99999) {
|
|
136
|
-
this._x = Math.atan2(m32, m33);
|
|
137
|
-
this._z = Math.atan2(m21, m11);
|
|
138
|
-
} else {
|
|
139
|
-
this._x = 0;
|
|
140
|
-
this._z = Math.atan2(-m12, m22);
|
|
141
|
-
}
|
|
142
|
-
} else if (order === 'YZX') {
|
|
143
|
-
this._z = Math.asin(clamp(m21, -1, 1));
|
|
144
|
-
|
|
145
|
-
if (Math.abs(m21) < 0.99999) {
|
|
146
|
-
this._x = Math.atan2(-m23, m22);
|
|
147
|
-
this._y = Math.atan2(-m31, m11);
|
|
148
|
-
} else {
|
|
149
|
-
this._x = 0;
|
|
150
|
-
this._y = Math.atan2(m13, m33);
|
|
151
|
-
}
|
|
152
|
-
} else if (order === 'XZY') {
|
|
153
|
-
this._z = Math.asin(-clamp(m12, -1, 1));
|
|
154
|
-
|
|
155
|
-
if (Math.abs(m12) < 0.99999) {
|
|
156
|
-
this._x = Math.atan2(m32, m22);
|
|
157
|
-
this._y = Math.atan2(m13, m11);
|
|
158
|
-
} else {
|
|
159
|
-
this._x = Math.atan2(-m23, m33);
|
|
160
|
-
this._y = 0;
|
|
161
|
-
}
|
|
162
|
-
} else {
|
|
163
|
-
console.warn('THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
this._order = order;
|
|
167
|
-
if (update !== false) this._onChangeCallback();
|
|
168
|
-
return this;
|
|
169
|
-
},
|
|
170
|
-
setFromQuaternion: function () {
|
|
171
|
-
var matrix = new Matrix4();
|
|
172
|
-
return function setFromQuaternion(q, order, update) {
|
|
173
|
-
matrix.makeRotationFromQuaternion(q);
|
|
174
|
-
return this.setFromRotationMatrix(matrix, order, update);
|
|
175
|
-
};
|
|
176
|
-
}(),
|
|
177
|
-
setFromVector3: function (v, order) {
|
|
178
|
-
return this.set(v.x, v.y, v.z, order || this._order);
|
|
179
|
-
},
|
|
180
|
-
reorder: function () {
|
|
181
|
-
// WARNING: this discards revolution information -bhouston
|
|
182
|
-
var q = new Quaternion();
|
|
183
|
-
return function reorder(newOrder) {
|
|
184
|
-
q.setFromEuler(this);
|
|
185
|
-
return this.setFromQuaternion(q, newOrder);
|
|
186
|
-
};
|
|
187
|
-
}(),
|
|
188
|
-
equals: function (euler) {
|
|
189
|
-
return euler._x === this._x && euler._y === this._y && euler._z === this._z && euler._order === this._order;
|
|
190
|
-
},
|
|
191
|
-
fromArray: function (array) {
|
|
192
|
-
this._x = array[0];
|
|
193
|
-
this._y = array[1];
|
|
194
|
-
this._z = array[2];
|
|
195
|
-
if (array[3] !== undefined) this._order = array[3];
|
|
196
|
-
|
|
197
|
-
this._onChangeCallback();
|
|
198
|
-
|
|
199
|
-
return this;
|
|
200
|
-
},
|
|
201
|
-
toArray: function (array, offset) {
|
|
202
|
-
if (array === undefined) array = [];
|
|
203
|
-
if (offset === undefined) offset = 0;
|
|
204
|
-
array[offset] = this._x;
|
|
205
|
-
array[offset + 1] = this._y;
|
|
206
|
-
array[offset + 2] = this._z;
|
|
207
|
-
array[offset + 3] = this._order;
|
|
208
|
-
return array;
|
|
209
|
-
},
|
|
210
|
-
toVector3: function (optionalResult) {
|
|
211
|
-
if (optionalResult) {
|
|
212
|
-
return optionalResult.set(this._x, this._y, this._z);
|
|
213
|
-
} else {
|
|
214
|
-
return new Vector3(this._x, this._y, this._z);
|
|
215
|
-
}
|
|
216
|
-
},
|
|
217
|
-
_onChange: function (callback) {
|
|
218
|
-
this._onChangeCallback = callback;
|
|
219
|
-
return this;
|
|
220
|
-
},
|
|
221
|
-
_onChangeCallback: function () {}
|
|
222
|
-
});
|
|
223
|
-
export { Euler };
|
|
224
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL3RocmVlL0V1bGVyLmpzIl0sIm5hbWVzIjpbIlF1YXRlcm5pb24iLCJWZWN0b3IzIiwiTWF0cml4NCIsIl9NYXRoIiwiRXVsZXIiLCJ4IiwieSIsInoiLCJvcmRlciIsIl94IiwiX3kiLCJfeiIsIl9vcmRlciIsIkRlZmF1bHRPcmRlciIsIlJvdGF0aW9uT3JkZXJzIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydGllcyIsInByb3RvdHlwZSIsImdldCIsInNldCIsInZhbHVlIiwiX29uQ2hhbmdlQ2FsbGJhY2siLCJhc3NpZ24iLCJpc0V1bGVyIiwiY2xvbmUiLCJjb25zdHJ1Y3RvciIsImNvcHkiLCJldWxlciIsInNldEZyb21Sb3RhdGlvbk1hdHJpeCIsIm0iLCJ1cGRhdGUiLCJjbGFtcCIsInRlIiwiZWxlbWVudHMiLCJtMTEiLCJtMTIiLCJtMTMiLCJtMjEiLCJtMjIiLCJtMjMiLCJtMzEiLCJtMzIiLCJtMzMiLCJNYXRoIiwiYXNpbiIsImFicyIsImF0YW4yIiwiY29uc29sZSIsIndhcm4iLCJzZXRGcm9tUXVhdGVybmlvbiIsIm1hdHJpeCIsInEiLCJtYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbiIsInNldEZyb21WZWN0b3IzIiwidiIsInJlb3JkZXIiLCJuZXdPcmRlciIsInNldEZyb21FdWxlciIsImVxdWFscyIsImZyb21BcnJheSIsImFycmF5IiwidW5kZWZpbmVkIiwidG9BcnJheSIsIm9mZnNldCIsInRvVmVjdG9yMyIsIm9wdGlvbmFsUmVzdWx0IiwiX29uQ2hhbmdlIiwiY2FsbGJhY2siXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFVBQVQsUUFBMkIsaUJBQTNCO0FBQ0EsU0FBU0MsT0FBVCxRQUF3QixjQUF4QjtBQUNBLFNBQVNDLE9BQVQsUUFBd0IsY0FBeEI7QUFDQSxTQUFTQyxLQUFULFFBQXNCLFdBQXRCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTQyxLQUFULENBQWdCQyxD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LEtBQUtWLEVBQXpCLEVBQTZCLEtBQUtDLEVBQWxDLEVBQXNDLEtBQUtDLEVBQTNDLENBQVA7QUFFQSxLQUpELE1BSU87QUFFTixhQUFPLElBQUlWLE9BQUosQ0FBYSxLQUFLUSxFQUFsQixFQUFzQixLQUFLQyxFQUEzQixFQUErQixLQUFLQyxFQUFwQyxDQUFQO0FBRUE7QUFFRCxHQWhQOEI7QUFrUC9CdUQsRUFBQUEsU0FBUyxFQUFFLFVBQVdDLFFBQVgsRUFBc0I7QUFFaEMsU0FBSzlDLGlCQUFMLEdBQXlCOEMsUUFBekI7QUFFQSxXQUFPLElBQVA7QUFFQSxHQXhQOEI7QUEwUC9COUMsRUFBQUEsaUJBQWlCLEVBQUUsWUFBWSxDQUFFO0FBMVBGLENBQWhDO0FBK1BBLFNBQVNqQixLQUFUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVhdGVybmlvbiB9IGZyb20gJy4vUXVhdGVybmlvbi5qcyc7XG5pbXBvcnQgeyBWZWN0b3IzIH0gZnJvbSAnLi9WZWN0b3IzLmpzJztcbmltcG9ydCB7IE1hdHJpeDQgfSBmcm9tICcuL01hdHJpeDQuanMnO1xuaW1wb3J0IHsgX01hdGggfSBmcm9tICcuL01hdGguanMnO1xuXG4vKipcbiAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXG4gKiBAYXV0aG9yIFdlc3RMYW5nbGV5IC8gaHR0cDovL2dpdGh1Yi5jb20vV2VzdExhbmdsZXlcbiAqIEBhdXRob3IgYmhvdXN0b24gLyBodHRwOi8vY2xhcmEuaW9cbiAqL1xuXG5mdW5jdGlvbiBFdWxlciggeCwgeSwgeiwgb3JkZXIgKSB7XG5cblx0dGhpcy5feCA9IHggfHwgMDtcblx0dGhpcy5feSA9IHkgfHwgMDtcblx0dGhpcy5feiA9IHogfHwgMDtcblx0dGhpcy5fb3JkZXIgPSBvcmRlciB8fCBFdWxlci5EZWZhdWx0T3JkZXI7XG5cbn1cblxuRXVsZXIuUm90YXRpb25PcmRlcnMgPSBbICdYWVonLCAnWVpYJywgJ1pYWScsICdYWlknLCAnWVhaJywgJ1pZWCcgXTtcblxuRXVsZXIuRGVmYXVsdE9yZGVyID0gJ1hZWic7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBFdWxlci5wcm90b3R5cGUsIHtcblxuXHR4OiB7XG5cblx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblxuXHRcdFx0cmV0dXJuIHRoaXMuX3g7XG5cblx0XHR9LFxuXG5cdFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xuXG5cdFx0XHR0aGlzLl94ID0gdmFsdWU7XG5cdFx0XHR0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCk7XG5cblx0XHR9XG5cblx0fSxcblxuXHR5OiB7XG5cblx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblxuXHRcdFx0cmV0dXJuIHRoaXMuX3k7XG5cblx0XHR9LFxuXG5cdFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xuXG5cdFx0XHR0aGlzLl95ID0gdmFsdWU7XG5cdFx0XHR0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCk7XG5cblx0XHR9XG5cblx0fSxcblxuXHR6OiB7XG5cblx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblxuXHRcdFx0cmV0dXJuIHRoaXMuX3o7XG5cblx0XHR9LFxuXG5cdFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xuXG5cdFx0XHR0aGlzLl96ID0gdmFsdWU7XG5cdFx0XHR0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCk7XG5cblx0XHR9XG5cblx0fSxcblxuXHRvcmRlcjoge1xuXG5cdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cblx0XHRcdHJldHVybiB0aGlzLl9vcmRlcjtcblxuXHRcdH0sXG5cblx0XHRzZXQ6IGZ1bmN0aW9uICggdmFsdWUgKSB7XG5cblx0XHRcdHRoaXMuX29yZGVyID0gdmFsdWU7XG5cdFx0XHR0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCk7XG5cblx0XHR9XG5cblx0fVxuXG59ICk7XG5cbk9iamVjdC5hc3NpZ24oIEV1bGVyLnByb3RvdHlwZSwge1xuXG5cdGlzRXVsZXI6IHRydWUsXG5cblx0c2V0OiBmdW5jdGlvbiAoIHgsIHksIHosIG9yZGVyICkge1xuXG5cdFx0dGhpcy5feCA9IHg7XG5cdFx0dGhpcy5feSA9IHk7XG5cdFx0dGhpcy5feiA9IHo7XG5cdFx0dGhpcy5fb3JkZXIgPSBvcmRlciB8fCB0aGlzLl9vcmRlcjtcblxuXHRcdHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0Y2xvbmU6IGZ1bmN0aW9uICgpIHtcblxuXHRcdHJldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvciggdGhpcy5feCwgdGhpcy5feSwgdGhpcy5feiwgdGhpcy5fb3JkZXIgKTtcblxuXHR9LFxuXG5cdGNvcHk6IGZ1bmN0aW9uICggZXVsZXIgKSB7XG5cblx0XHR0aGlzLl94ID0gZXVsZXIuX3g7XG5cdFx0dGhpcy5feSA9IGV1bGVyLl95O1xuXHRcdHRoaXMuX3ogPSBldWxlci5fejtcblx0XHR0aGlzLl9vcmRlciA9IGV1bGVyLl9vcmRlcjtcblxuXHRcdHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0c2V0RnJvbVJvdGF0aW9uTWF0cml4OiBmdW5jdGlvbiAoIG0sIG9yZGVyLCB1cGRhdGUgKSB7XG5cblx0XHR2YXIgY2xhbXAgPSBfTWF0aC5jbGFtcDtcblxuXHRcdC8vIGFzc3VtZXMgdGhlIHVwcGVyIDN4MyBvZiBtIGlzIGEgcHVyZSByb3RhdGlvbiBtYXRyaXggKGkuZSwgdW5zY2FsZWQpXG5cblx0XHR2YXIgdGUgPSBtLmVsZW1lbnRzO1xuXHRcdHZhciBtMTEgPSB0ZVsgMCBdLCBtMTIgPSB0ZVsgNCBdLCBtMTMgPSB0ZVsgOCBdO1xuXHRcdHZhciBtMjEgPSB0ZVsgMSBdLCBtMjIgPSB0ZVsgNSBdLCBtMjMgPSB0ZVsgOSBdO1xuXHRcdHZhciBtMzEgPSB0ZVsgMiBdLCBtMzIgPSB0ZVsgNiBdLCBtMzMgPSB0ZVsgMTAgXTtcblxuXHRcdG9yZGVyID0gb3JkZXIgfHwgdGhpcy5fb3JkZXI7XG5cblx0XHRpZiAoIG9yZGVyID09PSAnWFlaJyApIHtcblxuXHRcdFx0dGhpcy5feSA9IE1hdGguYXNpbiggY2xhbXAoIG0xMywgLSAxLCAxICkgKTtcblxuXHRcdFx0aWYgKCBNYXRoLmFicyggbTEzICkgPCAwLjk5OTk5ICkge1xuXG5cdFx0XHRcdHRoaXMuX3ggPSBNYXRoLmF0YW4yKCAtIG0yMywgbTMzICk7XG5cdFx0XHRcdHRoaXMuX3ogPSBNYXRoLmF0YW4yKCAtIG0xMiwgbTExICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0dGhpcy5feCA9IE1hdGguYXRhbjIoIG0zMiwgbTIyICk7XG5cdFx0XHRcdHRoaXMuX3ogPSAwO1xuXG5cdFx0XHR9XG5cblx0XHR9IGVsc2UgaWYgKCBvcmRlciA9PT0gJ1lYWicgKSB7XG5cblx0XHRcdHRoaXMuX3ggPSBNYXRoLmFzaW4oIC0gY2xhbXAoIG0yMywgLSAxLCAxICkgKTtcblxuXHRcdFx0aWYgKCBNYXRoLmFicyggbTIzICkgPCAwLjk5OTk5ICkge1xuXG5cdFx0XHRcdHRoaXMuX3kgPSBNYXRoLmF0YW4yKCBtMTMsIG0zMyApO1xuXHRcdFx0XHR0aGlzLl96ID0gTWF0aC5hdGFuMiggbTIxLCBtMjIgKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHR0aGlzLl95ID0gTWF0aC5hdGFuMiggLSBtMzEsIG0xMSApO1xuXHRcdFx0XHR0aGlzLl96ID0gMDtcblxuXHRcdFx0fVxuXG5cdFx0fSBlbHNlIGlmICggb3JkZXIgPT09ICdaWFknICkge1xuXG5cdFx0XHR0aGlzLl94ID0gTWF0aC5hc2luKCBjbGFtcCggbTMyLCAtIDEsIDEgKSApO1xuXG5cdFx0XHRpZiAoIE1hdGguYWJzKCBtMzIgKSA8IDAuOTk5OTkgKSB7XG5cblx0XHRcdFx0dGhpcy5feSA9IE1hdGguYXRhbjIoIC0gbTMxLCBtMzMgKTtcblx0XHRcdFx0dGhpcy5feiA9IE1hdGguYXRhbjIoIC0gbTEyLCBtMjIgKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHR0aGlzLl95ID0gMDtcblx0XHRcdFx0dGhpcy5feiA9IE1hdGguYXRhbjIoIG0yMSwgbTExICk7XG5cblx0XHRcdH1cblxuXHRcdH0gZWxzZSBpZiAoIG9yZGVyID09PSAnWllYJyApIHtcblxuXHRcdFx0dGhpcy5feSA9IE1hdGguYXNpbiggLSBjbGFtcCggbTMxLCAtIDEsIDEgKSApO1xuXG5cdFx0XHRpZiAoIE1hdGguYWJzKCBtMzEgKSA8IDAuOTk5OTkgKSB7XG5cblx0XHRcdFx0dGhpcy5feCA9IE1hdGguYXRhbjIoIG0zMiwgbTMzICk7XG5cdFx0XHRcdHRoaXMuX3ogPSBNYXRoLmF0YW4yKCBtMjEsIG0xMSApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdHRoaXMuX3ggPSAwO1xuXHRcdFx0XHR0aGlzLl96ID0gTWF0aC5hdGFuMiggLSBtMTIsIG0yMiApO1xuXG5cdFx0XHR9XG5cblx0XHR9IGVsc2UgaWYgKCBvcmRlciA9PT0gJ1laWCcgKSB7XG5cblx0XHRcdHRoaXMuX3ogPSBNYXRoLmFzaW4oIGNsYW1wKCBtMjEsIC0gMSwgMSApICk7XG5cblx0XHRcdGlmICggTWF0aC5hYnMoIG0yMSApIDwgMC45OTk5OSApIHtcblxuXHRcdFx0XHR0aGlzLl94ID0gTWF0aC5hdGFuMiggLSBtMjMsIG0yMiApO1xuXHRcdFx0XHR0aGlzLl95ID0gTWF0aC5hdGFuMiggLSBtMzEsIG0xMSApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdHRoaXMuX3ggPSAwO1xuXHRcdFx0XHR0aGlzLl95ID0gTWF0aC5hdGFuMiggbTEzLCBtMzMgKTtcblxuXHRcdFx0fVxuXG5cdFx0fSBlbHNlIGlmICggb3JkZXIgPT09ICdYWlknICkge1xuXG5cdFx0XHR0aGlzLl96ID0gTWF0aC5hc2luKCAtIGNsYW1wKCBtMTIsIC0gMSwgMSApICk7XG5cblx0XHRcdGlmICggTWF0aC5hYnMoIG0xMiApIDwgMC45OTk5OSApIHtcblxuXHRcdFx0XHR0aGlzLl94ID0gTWF0aC5hdGFuMiggbTMyLCBtMjIgKTtcblx0XHRcdFx0dGhpcy5feSA9IE1hdGguYXRhbjIoIG0xMywgbTExICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0dGhpcy5feCA9IE1hdGguYXRhbjIoIC0gbTIzLCBtMzMgKTtcblx0XHRcdFx0dGhpcy5feSA9IDA7XG5cblx0XHRcdH1cblxuXHRcdH0gZWxzZSB7XG5cblx0XHRcdGNvbnNvbGUud2FybiggJ1RIUkVFLkV1bGVyOiAuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCkgZ2l2ZW4gdW5zdXBwb3J0ZWQgb3JkZXI6ICcgKyBvcmRlciApO1xuXG5cdFx0fVxuXG5cdFx0dGhpcy5fb3JkZXIgPSBvcmRlcjtcblxuXHRcdGlmICggdXBkYXRlICE9PSBmYWxzZSApIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0c2V0RnJvbVF1YXRlcm5pb246IGZ1bmN0aW9uICgpIHtcblxuXHRcdHZhciBtYXRyaXggPSBuZXcgTWF0cml4NCgpO1xuXG5cdFx0cmV0dXJuIGZ1bmN0aW9uIHNldEZyb21RdWF0ZXJuaW9uKCBxLCBvcmRlciwgdXBkYXRlICkge1xuXG5cdFx0XHRtYXRyaXgubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24oIHEgKTtcblxuXHRcdFx0cmV0dXJuIHRoaXMuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCBtYXRyaXgsIG9yZGVyLCB1cGRhdGUgKTtcblxuXHRcdH07XG5cblx0fSgpLFxuXG5cdHNldEZyb21WZWN0b3IzOiBmdW5jdGlvbiAoIHYsIG9yZGVyICkge1xuXG5cdFx0cmV0dXJuIHRoaXMuc2V0KCB2LngsIHYueSwgdi56LCBvcmRlciB8fCB0aGlzLl9vcmRlciApO1xuXG5cdH0sXG5cblx0cmVvcmRlcjogZnVuY3Rpb24gKCkge1xuXG5cdFx0Ly8gV0FSTklORzogdGhpcyBkaXNjYXJkcyByZXZvbHV0aW9uIGluZm9ybWF0aW9uIC1iaG91c3RvblxuXG5cdFx0dmFyIHEgPSBuZXcgUXVhdGVybmlvbigpO1xuXG5cdFx0cmV0dXJuIGZ1bmN0aW9uIHJlb3JkZXIoIG5ld09yZGVyICkge1xuXG5cdFx0XHRxLnNldEZyb21FdWxlciggdGhpcyApO1xuXG5cdFx0XHRyZXR1cm4gdGhpcy5zZXRGcm9tUXVhdGVybmlvbiggcSwgbmV3T3JkZXIgKTtcblxuXHRcdH07XG5cblx0fSgpLFxuXG5cdGVxdWFsczogZnVuY3Rpb24gKCBldWxlciApIHtcblxuXHRcdHJldHVybiAoIGV1bGVyLl94ID09PSB0aGlzLl94ICkgJiYgKCBldWxlci5feSA9PT0gdGhpcy5feSApICYmICggZXVsZXIuX3ogPT09IHRoaXMuX3ogKSAmJiAoIGV1bGVyLl9vcmRlciA9PT0gdGhpcy5fb3JkZXIgKTtcblxuXHR9LFxuXG5cdGZyb21BcnJheTogZnVuY3Rpb24gKCBhcnJheSApIHtcblxuXHRcdHRoaXMuX3ggPSBhcnJheVsgMCBdO1xuXHRcdHRoaXMuX3kgPSBhcnJheVsgMSBdO1xuXHRcdHRoaXMuX3ogPSBhcnJheVsgMiBdO1xuXHRcdGlmICggYXJyYXlbIDMgXSAhPT0gdW5kZWZpbmVkICkgdGhpcy5fb3JkZXIgPSBhcnJheVsgMyBdO1xuXG5cdFx0dGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHR0b0FycmF5OiBmdW5jdGlvbiAoIGFycmF5LCBvZmZzZXQgKSB7XG5cblx0XHRpZiAoIGFycmF5ID09PSB1bmRlZmluZWQgKSBhcnJheSA9IFtdO1xuXHRcdGlmICggb2Zmc2V0ID09PSB1bmRlZmluZWQgKSBvZmZzZXQgPSAwO1xuXG5cdFx0YXJyYXlbIG9mZnNldCBdID0gdGhpcy5feDtcblx0XHRhcnJheVsgb2Zmc2V0ICsgMSBdID0gdGhpcy5feTtcblx0XHRhcnJheVsgb2Zmc2V0ICsgMiBdID0gdGhpcy5fejtcblx0XHRhcnJheVsgb2Zmc2V0ICsgMyBdID0gdGhpcy5fb3JkZXI7XG5cblx0XHRyZXR1cm4gYXJyYXk7XG5cblx0fSxcblxuXHR0b1ZlY3RvcjM6IGZ1bmN0aW9uICggb3B0aW9uYWxSZXN1bHQgKSB7XG5cblx0XHRpZiAoIG9wdGlvbmFsUmVzdWx0ICkge1xuXG5cdFx0XHRyZXR1cm4gb3B0aW9uYWxSZXN1bHQuc2V0KCB0aGlzLl94LCB0aGlzLl95LCB0aGlzLl96ICk7XG5cblx0XHR9IGVsc2Uge1xuXG5cdFx0XHRyZXR1cm4gbmV3IFZlY3RvcjMoIHRoaXMuX3gsIHRoaXMuX3ksIHRoaXMuX3ogKTtcblxuXHRcdH1cblxuXHR9LFxuXG5cdF9vbkNoYW5nZTogZnVuY3Rpb24gKCBjYWxsYmFjayApIHtcblxuXHRcdHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sgPSBjYWxsYmFjaztcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0X29uQ2hhbmdlQ2FsbGJhY2s6IGZ1bmN0aW9uICgpIHt9XG5cbn0gKTtcblxuXG5leHBvcnQgeyBFdWxlciB9OyJdfQ==
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author alteredq / http://alteredqualia.com/
|
|
3
|
-
* @author mrdoob / http://mrdoob.com/
|
|
4
|
-
*/
|
|
5
|
-
var _Math = {
|
|
6
|
-
DEG2RAD: Math.PI / 180,
|
|
7
|
-
RAD2DEG: 180 / Math.PI,
|
|
8
|
-
generateUUID: function () {
|
|
9
|
-
// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136
|
|
10
|
-
var lut = [];
|
|
11
|
-
|
|
12
|
-
for (var i = 0; i < 256; i++) {
|
|
13
|
-
lut[i] = (i < 16 ? '0' : '') + i.toString(16);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
return function generateUUID() {
|
|
17
|
-
var d0 = Math.random() * 0xffffffff | 0;
|
|
18
|
-
var d1 = Math.random() * 0xffffffff | 0;
|
|
19
|
-
var d2 = Math.random() * 0xffffffff | 0;
|
|
20
|
-
var d3 = Math.random() * 0xffffffff | 0;
|
|
21
|
-
var uuid = lut[d0 & 0xff] + lut[d0 >> 8 & 0xff] + lut[d0 >> 16 & 0xff] + lut[d0 >> 24 & 0xff] + '-' + lut[d1 & 0xff] + lut[d1 >> 8 & 0xff] + '-' + lut[d1 >> 16 & 0x0f | 0x40] + lut[d1 >> 24 & 0xff] + '-' + lut[d2 & 0x3f | 0x80] + lut[d2 >> 8 & 0xff] + '-' + lut[d2 >> 16 & 0xff] + lut[d2 >> 24 & 0xff] + lut[d3 & 0xff] + lut[d3 >> 8 & 0xff] + lut[d3 >> 16 & 0xff] + lut[d3 >> 24 & 0xff]; // .toUpperCase() here flattens concatenated strings to save heap memory space.
|
|
22
|
-
|
|
23
|
-
return uuid.toUpperCase();
|
|
24
|
-
};
|
|
25
|
-
}(),
|
|
26
|
-
clamp: function (value, min, max) {
|
|
27
|
-
return Math.max(min, Math.min(max, value));
|
|
28
|
-
},
|
|
29
|
-
// compute euclidian modulo of m % n
|
|
30
|
-
// https://en.wikipedia.org/wiki/Modulo_operation
|
|
31
|
-
euclideanModulo: function (n, m) {
|
|
32
|
-
return (n % m + m) % m;
|
|
33
|
-
},
|
|
34
|
-
// Linear mapping from range <a1, a2> to range <b1, b2>
|
|
35
|
-
mapLinear: function (x, a1, a2, b1, b2) {
|
|
36
|
-
return b1 + (x - a1) * (b2 - b1) / (a2 - a1);
|
|
37
|
-
},
|
|
38
|
-
// https://en.wikipedia.org/wiki/Linear_interpolation
|
|
39
|
-
lerp: function (x, y, t) {
|
|
40
|
-
return (1 - t) * x + t * y;
|
|
41
|
-
},
|
|
42
|
-
// http://en.wikipedia.org/wiki/Smoothstep
|
|
43
|
-
smoothstep: function (x, min, max) {
|
|
44
|
-
if (x <= min) return 0;
|
|
45
|
-
if (x >= max) return 1;
|
|
46
|
-
x = (x - min) / (max - min);
|
|
47
|
-
return x * x * (3 - 2 * x);
|
|
48
|
-
},
|
|
49
|
-
smootherstep: function (x, min, max) {
|
|
50
|
-
if (x <= min) return 0;
|
|
51
|
-
if (x >= max) return 1;
|
|
52
|
-
x = (x - min) / (max - min);
|
|
53
|
-
return x * x * x * (x * (x * 6 - 15) + 10);
|
|
54
|
-
},
|
|
55
|
-
// Random integer from <low, high> interval
|
|
56
|
-
randInt: function (low, high) {
|
|
57
|
-
return low + Math.floor(Math.random() * (high - low + 1));
|
|
58
|
-
},
|
|
59
|
-
// Random float from <low, high> interval
|
|
60
|
-
randFloat: function (low, high) {
|
|
61
|
-
return low + Math.random() * (high - low);
|
|
62
|
-
},
|
|
63
|
-
// Random float from <-range/2, range/2> interval
|
|
64
|
-
randFloatSpread: function (range) {
|
|
65
|
-
return range * (0.5 - Math.random());
|
|
66
|
-
},
|
|
67
|
-
degToRad: function (degrees) {
|
|
68
|
-
return degrees * _Math.DEG2RAD;
|
|
69
|
-
},
|
|
70
|
-
radToDeg: function (radians) {
|
|
71
|
-
return radians * _Math.RAD2DEG;
|
|
72
|
-
},
|
|
73
|
-
isPowerOfTwo: function (value) {
|
|
74
|
-
return (value & value - 1) === 0 && value !== 0;
|
|
75
|
-
},
|
|
76
|
-
ceilPowerOfTwo: function (value) {
|
|
77
|
-
return Math.pow(2, Math.ceil(Math.log(value) / Math.LN2));
|
|
78
|
-
},
|
|
79
|
-
floorPowerOfTwo: function (value) {
|
|
80
|
-
return Math.pow(2, Math.floor(Math.log(value) / Math.LN2));
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
export { _Math };
|
|
84
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL3RocmVlL01hdGguanMiXSwibmFtZXMiOlsiX01hdGgiLCJERUcyUkFEIiwiTWF0aCIsIlBJIiwiUkFEMkRFRyIsImdlbmVyYXRlVVVJRCIsImx1dCIsImkiLCJ0b1N0cmluZyIsImQwIiwicmFuZG9tIiwiZDEiLCJkMiIsImQzIiwidXVpZCIsInRvVXBwZXJDYXNlIiwiY2xhbXAiLCJ2YWx1ZSIsIm1pbiIsIm1heCIsImV1Y2xpZGVhbk1vZHVsbyIsIm4iLCJtIiwibWFwTGluZWFyIiwieCIsImExIiwiYTIiLCJiMSIsImIyIiwibGVycCIsInkiLCJ0Iiwic21vb3Roc3RlcCIsInNtb290aGVyc3RlcCIsInJhbmRJbnQiLCJsb3ciLCJoaWdoIiwiZmxvb3IiLCJyYW5kRmxvYXQiLCJyYW5kRmxvYXRTcHJlYWQiLCJyYW5nZSIsImRlZ1RvUmFkIiwiZGVncmVlcyIsInJhZFRvRGVnIiwicmFkaWFucyIsImlzUG93ZXJPZlR3byIsImNlaWxQb3dlck9mVHdvIiwicG93IiwiY2VpbCIsImxvZyIsIkxOMiIsImZsb29yUG93ZXJPZlR3byJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxLQUFLLEdBQUc7QUFFWEMsRUFBQUEsT0FBTyxFQUFFQyxJQUFJLENBQUNDLEVBQUwsR0FBVSxHQUZSO0FBR1hDLEVBQUFBLE9BQU8sRUFBRSxNQUFNRixJQUFJLENBQUNDLEVBSFQ7QUFLWEUsRUFBQUEsWUFBWSxFQUFJLFlBQVk7QUFFM0I7QUFFQSxRQUFJQyxHQUFHLEdBQUcsRUFBVjs7QUFFQSxTQUFNLElBQUlDLENBQUMsR0FBRyxDQUFkLEVBQWlCQSxDQUFDLEdBQUcsR0FBckIsRUFBMEJBLENBQUMsRUFBM0IsRUFBaUM7QUFFaENELE1BQUFBLEdBQUcsQ0FBRUMsQ0FBRixDQUFILEdBQVcsQ0FBRUEsQ0FBQyxHQUFHLEVBQUosR0FBUyxHQUFULEdBQWUsRUFBakIsSUFBMEJBLENBQUYsQ0FBTUMs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O0FBbUpBLFNBQVNsRCxLQUFUIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xuICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cbiAqL1xuXG52YXIgX01hdGggPSB7XG5cblx0REVHMlJBRDogTWF0aC5QSSAvIDE4MCxcblx0UkFEMkRFRzogMTgwIC8gTWF0aC5QSSxcblxuXHRnZW5lcmF0ZVVVSUQ6ICggZnVuY3Rpb24gKCkge1xuXG5cdFx0Ly8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDUwMzQvaG93LXRvLWNyZWF0ZS1hLWd1aWQtdXVpZC1pbi1qYXZhc2NyaXB0LzIxOTYzMTM2IzIxOTYzMTM2XG5cblx0XHR2YXIgbHV0ID0gW107XG5cblx0XHRmb3IgKCB2YXIgaSA9IDA7IGkgPCAyNTY7IGkgKysgKSB7XG5cblx0XHRcdGx1dFsgaSBdID0gKCBpIDwgMTYgPyAnMCcgOiAnJyApICsgKCBpICkudG9TdHJpbmcoIDE2ICk7XG5cblx0XHR9XG5cblx0XHRyZXR1cm4gZnVuY3Rpb24gZ2VuZXJhdGVVVUlEKCkge1xuXG5cdFx0XHR2YXIgZDAgPSBNYXRoLnJhbmRvbSgpICogMHhmZmZmZmZmZiB8IDA7XG5cdFx0XHR2YXIgZDEgPSBNYXRoLnJhbmRvbSgpICogMHhmZmZmZmZmZiB8IDA7XG5cdFx0XHR2YXIgZDIgPSBNYXRoLnJhbmRvbSgpICogMHhmZmZmZmZmZiB8IDA7XG5cdFx0XHR2YXIgZDMgPSBNYXRoLnJhbmRvbSgpICogMHhmZmZmZmZmZiB8IDA7XG5cdFx0XHR2YXIgdXVpZCA9IGx1dFsgZDAgJiAweGZmIF0gKyBsdXRbIGQwID4+IDggJiAweGZmIF0gKyBsdXRbIGQwID4+IDE2ICYgMHhmZiBdICsgbHV0WyBkMCA+PiAyNCAmIDB4ZmYgXSArICctJyArXG5cdFx0XHRcdGx1dFsgZDEgJiAweGZmIF0gKyBsdXRbIGQxID4+IDggJiAweGZmIF0gKyAnLScgKyBsdXRbIGQxID4+IDE2ICYgMHgwZiB8IDB4NDAgXSArIGx1dFsgZDEgPj4gMjQgJiAweGZmIF0gKyAnLScgK1xuXHRcdFx0XHRsdXRbIGQyICYgMHgzZiB8IDB4ODAgXSArIGx1dFsgZDIgPj4gOCAmIDB4ZmYgXSArICctJyArIGx1dFsgZDIgPj4gMTYgJiAweGZmIF0gKyBsdXRbIGQyID4+IDI0ICYgMHhmZiBdICtcblx0XHRcdFx0bHV0WyBkMyAmIDB4ZmYgXSArIGx1dFsgZDMgPj4gOCAmIDB4ZmYgXSArIGx1dFsgZDMgPj4gMTYgJiAweGZmIF0gKyBsdXRbIGQzID4+IDI0ICYgMHhmZiBdO1xuXG5cdFx0XHQvLyAudG9VcHBlckNhc2UoKSBoZXJlIGZsYXR0ZW5zIGNvbmNhdGVuYXRlZCBzdHJpbmdzIHRvIHNhdmUgaGVhcCBtZW1vcnkgc3BhY2UuXG5cdFx0XHRyZXR1cm4gdXVpZC50b1VwcGVyQ2FzZSgpO1xuXG5cdFx0fTtcblxuXHR9ICkoKSxcblxuXHRjbGFtcDogZnVuY3Rpb24gKCB2YWx1ZSwgbWluLCBtYXggKSB7XG5cblx0XHRyZXR1cm4gTWF0aC5tYXgoIG1pbiwgTWF0aC5taW4oIG1heCwgdmFsdWUgKSApO1xuXG5cdH0sXG5cblx0Ly8gY29tcHV0ZSBldWNsaWRpYW4gbW9kdWxvIG9mIG0gJSBuXG5cdC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01vZHVsb19vcGVyYXRpb25cblxuXHRldWNsaWRlYW5Nb2R1bG86IGZ1bmN0aW9uICggbiwgbSApIHtcblxuXHRcdHJldHVybiAoICggbiAlIG0gKSArIG0gKSAlIG07XG5cblx0fSxcblxuXHQvLyBMaW5lYXIgbWFwcGluZyBmcm9tIHJhbmdlIDxhMSwgYTI+IHRvIHJhbmdlIDxiMSwgYjI+XG5cblx0bWFwTGluZWFyOiBmdW5jdGlvbiAoIHgsIGExLCBhMiwgYjEsIGIyICkge1xuXG5cdFx0cmV0dXJuIGIxICsgKCB4IC0gYTEgKSAqICggYjIgLSBiMSApIC8gKCBhMiAtIGExICk7XG5cblx0fSxcblxuXHQvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaW5lYXJfaW50ZXJwb2xhdGlvblxuXG5cdGxlcnA6IGZ1bmN0aW9uICggeCwgeSwgdCApIHtcblxuXHRcdHJldHVybiAoIDEgLSB0ICkgKiB4ICsgdCAqIHk7XG5cblx0fSxcblxuXHQvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Ntb290aHN0ZXBcblxuXHRzbW9vdGhzdGVwOiBmdW5jdGlvbiAoIHgsIG1pbiwgbWF4ICkge1xuXG5cdFx0aWYgKCB4IDw9IG1pbiApIHJldHVybiAwO1xuXHRcdGlmICggeCA+PSBtYXggKSByZXR1cm4gMTtcblxuXHRcdHggPSAoIHggLSBtaW4gKSAvICggbWF4IC0gbWluICk7XG5cblx0XHRyZXR1cm4geCAqIHggKiAoIDMgLSAyICogeCApO1xuXG5cdH0sXG5cblx0c21vb3RoZXJzdGVwOiBmdW5jdGlvbiAoIHgsIG1pbiwgbWF4ICkge1xuXG5cdFx0aWYgKCB4IDw9IG1pbiApIHJldHVybiAwO1xuXHRcdGlmICggeCA+PSBtYXggKSByZXR1cm4gMTtcblxuXHRcdHggPSAoIHggLSBtaW4gKSAvICggbWF4IC0gbWluICk7XG5cblx0XHRyZXR1cm4geCAqIHggKiB4ICogKCB4ICogKCB4ICogNiAtIDE1ICkgKyAxMCApO1xuXG5cdH0sXG5cblx0Ly8gUmFuZG9tIGludGVnZXIgZnJvbSA8bG93LCBoaWdoPiBpbnRlcnZhbFxuXG5cdHJhbmRJbnQ6IGZ1bmN0aW9uICggbG93LCBoaWdoICkge1xuXG5cdFx0cmV0dXJuIGxvdyArIE1hdGguZmxvb3IoIE1hdGgucmFuZG9tKCkgKiAoIGhpZ2ggLSBsb3cgKyAxICkgKTtcblxuXHR9LFxuXG5cdC8vIFJhbmRvbSBmbG9hdCBmcm9tIDxsb3csIGhpZ2g+IGludGVydmFsXG5cblx0cmFuZEZsb2F0OiBmdW5jdGlvbiAoIGxvdywgaGlnaCApIHtcblxuXHRcdHJldHVybiBsb3cgKyBNYXRoLnJhbmRvbSgpICogKCBoaWdoIC0gbG93ICk7XG5cblx0fSxcblxuXHQvLyBSYW5kb20gZmxvYXQgZnJvbSA8LXJhbmdlLzIsIHJhbmdlLzI+IGludGVydmFsXG5cblx0cmFuZEZsb2F0U3ByZWFkOiBmdW5jdGlvbiAoIHJhbmdlICkge1xuXG5cdFx0cmV0dXJuIHJhbmdlICogKCAwLjUgLSBNYXRoLnJhbmRvbSgpICk7XG5cblx0fSxcblxuXHRkZWdUb1JhZDogZnVuY3Rpb24gKCBkZWdyZWVzICkge1xuXG5cdFx0cmV0dXJuIGRlZ3JlZXMgKiBfTWF0aC5ERUcyUkFEO1xuXG5cdH0sXG5cblx0cmFkVG9EZWc6IGZ1bmN0aW9uICggcmFkaWFucyApIHtcblxuXHRcdHJldHVybiByYWRpYW5zICogX01hdGguUkFEMkRFRztcblxuXHR9LFxuXG5cdGlzUG93ZXJPZlR3bzogZnVuY3Rpb24gKCB2YWx1ZSApIHtcblxuXHRcdHJldHVybiAoIHZhbHVlICYgKCB2YWx1ZSAtIDEgKSApID09PSAwICYmIHZhbHVlICE9PSAwO1xuXG5cdH0sXG5cblx0Y2VpbFBvd2VyT2ZUd286IGZ1bmN0aW9uICggdmFsdWUgKSB7XG5cblx0XHRyZXR1cm4gTWF0aC5wb3coIDIsIE1hdGguY2VpbCggTWF0aC5sb2coIHZhbHVlICkgLyBNYXRoLkxOMiApICk7XG5cblx0fSxcblxuXHRmbG9vclBvd2VyT2ZUd286IGZ1bmN0aW9uICggdmFsdWUgKSB7XG5cblx0XHRyZXR1cm4gTWF0aC5wb3coIDIsIE1hdGguZmxvb3IoIE1hdGgubG9nKCB2YWx1ZSApIC8gTWF0aC5MTjIgKSApO1xuXG5cdH1cblxufTtcblxuXG5leHBvcnQgeyBfTWF0aCB9OyJdfQ==
|