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,385 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports["default"] = void 0;
|
|
9
|
-
|
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
12
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
-
|
|
14
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
-
|
|
16
|
-
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
17
|
-
|
|
18
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
-
|
|
20
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
|
-
|
|
22
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
|
-
|
|
24
|
-
var _common = require("../common");
|
|
25
|
-
|
|
26
|
-
var _shaders = require("./shaders");
|
|
27
|
-
|
|
28
|
-
var _BaseRenderer2 = _interopRequireDefault(require("../../BaseRenderer"));
|
|
29
|
-
|
|
30
|
-
var _constants = require("../common/constants");
|
|
31
|
-
|
|
32
|
-
var _core = require("../../../core");
|
|
33
|
-
|
|
34
|
-
var _types = require("../../types");
|
|
35
|
-
|
|
36
|
-
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; }
|
|
37
|
-
|
|
38
|
-
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) { (0, _defineProperty2["default"])(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; }
|
|
39
|
-
|
|
40
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
41
|
-
|
|
42
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
43
|
-
|
|
44
|
-
var THREE;
|
|
45
|
-
/**
|
|
46
|
-
* GPURenderer for mobile devices that do not support floating point textures.
|
|
47
|
-
*
|
|
48
|
-
* @author thrax <manthrax@gmail.com>
|
|
49
|
-
* @author rohan-deshpande <rohan@creativelifeform.com>
|
|
50
|
-
*/
|
|
51
|
-
|
|
52
|
-
var MobileGPURenderer = /*#__PURE__*/function (_BaseRenderer) {
|
|
53
|
-
(0, _inherits2["default"])(MobileGPURenderer, _BaseRenderer);
|
|
54
|
-
|
|
55
|
-
var _super = _createSuper(MobileGPURenderer);
|
|
56
|
-
|
|
57
|
-
function MobileGPURenderer(container, three) {
|
|
58
|
-
var _this;
|
|
59
|
-
|
|
60
|
-
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _constants.DEFAULT_RENDERER_OPTIONS;
|
|
61
|
-
(0, _classCallCheck2["default"])(this, MobileGPURenderer);
|
|
62
|
-
_this = _super.call(this, _types.RENDERER_TYPE_GPU_MOBILE);
|
|
63
|
-
THREE = _this.three = three;
|
|
64
|
-
|
|
65
|
-
var props = _objectSpread(_objectSpread({}, _constants.DEFAULT_RENDERER_OPTIONS), options);
|
|
66
|
-
|
|
67
|
-
var camera = props.camera,
|
|
68
|
-
maxParticles = props.maxParticles,
|
|
69
|
-
baseColor = props.baseColor,
|
|
70
|
-
blending = props.blending,
|
|
71
|
-
depthTest = props.depthTest,
|
|
72
|
-
depthWrite = props.depthWrite,
|
|
73
|
-
transparent = props.transparent,
|
|
74
|
-
shouldDebugTextureAtlas = props.shouldDebugTextureAtlas;
|
|
75
|
-
var particleBuffer = new _common.ParticleBuffer(maxParticles, THREE);
|
|
76
|
-
var material = new THREE.ShaderMaterial({
|
|
77
|
-
uniforms: {
|
|
78
|
-
baseColor: {
|
|
79
|
-
value: new THREE.Color(baseColor)
|
|
80
|
-
},
|
|
81
|
-
uTexture: {
|
|
82
|
-
value: null
|
|
83
|
-
},
|
|
84
|
-
FFatlasIndex: {
|
|
85
|
-
value: null
|
|
86
|
-
},
|
|
87
|
-
atlasDim: {
|
|
88
|
-
value: new THREE.Vector2()
|
|
89
|
-
}
|
|
90
|
-
},
|
|
91
|
-
vertexShader: (0, _shaders.vertexShader)(),
|
|
92
|
-
fragmentShader: (0, _shaders.fragmentShader)(),
|
|
93
|
-
blending: THREE[blending],
|
|
94
|
-
depthTest: depthTest,
|
|
95
|
-
depthWrite: depthWrite,
|
|
96
|
-
transparent: transparent
|
|
97
|
-
});
|
|
98
|
-
_this.camera = camera;
|
|
99
|
-
_this.targetPool = new _core.Pool();
|
|
100
|
-
_this.uniqueList = new _common.UniqueList(maxParticles);
|
|
101
|
-
_this.particleBuffer = particleBuffer;
|
|
102
|
-
_this.buffer = particleBuffer.buffer;
|
|
103
|
-
_this.stride = particleBuffer.stride;
|
|
104
|
-
_this.geometry = particleBuffer.geometry;
|
|
105
|
-
_this.material = material;
|
|
106
|
-
_this.points = new THREE.Points(_this.geometry, _this.material);
|
|
107
|
-
_this.points.frustumCulled = false;
|
|
108
|
-
_this.shouldDebugTextureAtlas = shouldDebugTextureAtlas;
|
|
109
|
-
container.add(_this.points);
|
|
110
|
-
return _this;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
(0, _createClass2["default"])(MobileGPURenderer, [{
|
|
114
|
-
key: "onSystemUpdate",
|
|
115
|
-
value: function onSystemUpdate(system) {
|
|
116
|
-
(0, _get2["default"])((0, _getPrototypeOf2["default"])(MobileGPURenderer.prototype), "onSystemUpdate", this).call(this, system);
|
|
117
|
-
this.buffer.needsUpdate = true;
|
|
118
|
-
var textureAtlas = this.textureAtlas;
|
|
119
|
-
|
|
120
|
-
if (textureAtlas) {
|
|
121
|
-
textureAtlas.update();
|
|
122
|
-
this.material.uniforms.atlasDim.value.set(textureAtlas.atlasTexture.image.width, textureAtlas.atlasTexture.image.height);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Pools the particle target if it does not exist.
|
|
127
|
-
* Updates the target and maps particle properties to the point.
|
|
128
|
-
*
|
|
129
|
-
* @param {Particle}
|
|
130
|
-
*/
|
|
131
|
-
|
|
132
|
-
}, {
|
|
133
|
-
key: "onParticleCreated",
|
|
134
|
-
value: function onParticleCreated(particle) {
|
|
135
|
-
if (!particle.target) {
|
|
136
|
-
particle.target = this.targetPool.get(_common.Target, THREE);
|
|
137
|
-
this.uniqueList.add(particle.id);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
this.updateTarget(particle).mapParticleTargetPropsToPoint(particle);
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Maps particle properties to the point if the particle has a target.
|
|
144
|
-
*
|
|
145
|
-
* @param {Particle}
|
|
146
|
-
*/
|
|
147
|
-
|
|
148
|
-
}, {
|
|
149
|
-
key: "onParticleUpdate",
|
|
150
|
-
value: function onParticleUpdate(particle) {
|
|
151
|
-
if (!particle.target) {
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
this.updateTarget(particle).mapParticleTargetPropsToPoint(particle);
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Resets and clears the particle target.
|
|
159
|
-
*
|
|
160
|
-
* @param {Particle}
|
|
161
|
-
*/
|
|
162
|
-
|
|
163
|
-
}, {
|
|
164
|
-
key: "onParticleDead",
|
|
165
|
-
value: function onParticleDead(particle) {
|
|
166
|
-
if (!particle.target) {
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
particle.target.reset();
|
|
171
|
-
this.mapParticleTargetPropsToPoint(particle);
|
|
172
|
-
particle.target = null;
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Maps all mutable properties from the particle to the target.
|
|
176
|
-
*
|
|
177
|
-
* @param {Particle}
|
|
178
|
-
* @return {GPURenderer}
|
|
179
|
-
*/
|
|
180
|
-
|
|
181
|
-
}, {
|
|
182
|
-
key: "updateTarget",
|
|
183
|
-
value: function updateTarget(particle) {
|
|
184
|
-
var position = particle.position,
|
|
185
|
-
rotation = particle.rotation,
|
|
186
|
-
scale = particle.scale,
|
|
187
|
-
radius = particle.radius,
|
|
188
|
-
color = particle.color,
|
|
189
|
-
alpha = particle.alpha,
|
|
190
|
-
body = particle.body,
|
|
191
|
-
id = particle.id;
|
|
192
|
-
var r = color.r,
|
|
193
|
-
g = color.g,
|
|
194
|
-
b = color.b;
|
|
195
|
-
particle.target.position.copy(position);
|
|
196
|
-
particle.target.rotation.copy(rotation);
|
|
197
|
-
particle.target.size = scale * radius;
|
|
198
|
-
particle.target.color.setRGB(r, g, b);
|
|
199
|
-
particle.target.alpha = alpha;
|
|
200
|
-
particle.target.index = this.uniqueList.find(id);
|
|
201
|
-
|
|
202
|
-
if (body && body instanceof THREE.Sprite) {
|
|
203
|
-
var map = body.material.map;
|
|
204
|
-
particle.target.texture = map;
|
|
205
|
-
particle.target.textureIndex = this.getTextureID(map, this.shouldDebugTextureAtlas);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
return this;
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Entry point for mapping particle properties to buffer geometry points.
|
|
212
|
-
*
|
|
213
|
-
* @param {Particle} particle - The particle containing the properties to map
|
|
214
|
-
* @return {GPURenderer}
|
|
215
|
-
*/
|
|
216
|
-
|
|
217
|
-
}, {
|
|
218
|
-
key: "mapParticleTargetPropsToPoint",
|
|
219
|
-
value: function mapParticleTargetPropsToPoint(particle) {
|
|
220
|
-
this.updatePointPosition(particle).updatePointSize(particle).updatePointRotation(particle).updatePointColor(particle).updatePointAlpha(particle).updatePointTextureIndex(particle);
|
|
221
|
-
return this;
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Updates the point's position according to the particle's target position.
|
|
225
|
-
*
|
|
226
|
-
* @param {Particle} particle - The particle containing the target position.
|
|
227
|
-
* @return {GPURenderer}
|
|
228
|
-
*/
|
|
229
|
-
|
|
230
|
-
}, {
|
|
231
|
-
key: "updatePointPosition",
|
|
232
|
-
value: function updatePointPosition(particle) {
|
|
233
|
-
var attribute = 'position';
|
|
234
|
-
var geometry = this.geometry,
|
|
235
|
-
stride = this.stride,
|
|
236
|
-
buffer = this.buffer;
|
|
237
|
-
var target = particle.target;
|
|
238
|
-
var offset = geometry.attributes[attribute].offset;
|
|
239
|
-
buffer.array[target.index * stride + offset + 0] = target.position.x;
|
|
240
|
-
buffer.array[target.index * stride + offset + 1] = target.position.y;
|
|
241
|
-
buffer.array[target.index * stride + offset + 2] = target.position.z;
|
|
242
|
-
return this;
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Updates the point's size relative to the particle's target scale and radius.
|
|
246
|
-
*
|
|
247
|
-
* @param {Particle} particle - The particle containing the target scale.
|
|
248
|
-
* @return {GPURenderer}
|
|
249
|
-
*/
|
|
250
|
-
|
|
251
|
-
}, {
|
|
252
|
-
key: "updatePointSize",
|
|
253
|
-
value: function updatePointSize(particle) {
|
|
254
|
-
var attribute = 'size';
|
|
255
|
-
var geometry = this.geometry,
|
|
256
|
-
stride = this.stride,
|
|
257
|
-
buffer = this.buffer;
|
|
258
|
-
var target = particle.target;
|
|
259
|
-
var offset = geometry.attributes[attribute].offset;
|
|
260
|
-
buffer.array[target.index * stride + offset + 0] = target.size;
|
|
261
|
-
return this;
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Updates the point's rotation.
|
|
265
|
-
*
|
|
266
|
-
* @param {Particle} particle - The particle containing the target rotation.
|
|
267
|
-
* @return {GPURenderer}
|
|
268
|
-
*/
|
|
269
|
-
|
|
270
|
-
}, {
|
|
271
|
-
key: "updatePointRotation",
|
|
272
|
-
value: function updatePointRotation(particle) {
|
|
273
|
-
var attribute = 'rotation';
|
|
274
|
-
var geometry = this.geometry,
|
|
275
|
-
stride = this.stride,
|
|
276
|
-
buffer = this.buffer;
|
|
277
|
-
var target = particle.target;
|
|
278
|
-
var offset = geometry.attributes[attribute].offset;
|
|
279
|
-
buffer.array[target.index * stride + offset + 0] = target.rotation.z;
|
|
280
|
-
return this;
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* Updates the point's color attribute according with the particle's target color.
|
|
284
|
-
*
|
|
285
|
-
* @param {Particle} particle - The particle containing the target color and alpha.
|
|
286
|
-
* @return {GPURenderer}
|
|
287
|
-
*/
|
|
288
|
-
|
|
289
|
-
}, {
|
|
290
|
-
key: "updatePointColor",
|
|
291
|
-
value: function updatePointColor(particle) {
|
|
292
|
-
var attribute = 'color';
|
|
293
|
-
var geometry = this.geometry,
|
|
294
|
-
stride = this.stride,
|
|
295
|
-
buffer = this.buffer;
|
|
296
|
-
var target = particle.target;
|
|
297
|
-
var offset = geometry.attributes[attribute].offset;
|
|
298
|
-
buffer.array[target.index * stride + offset + 0] = target.color.r;
|
|
299
|
-
buffer.array[target.index * stride + offset + 1] = target.color.g;
|
|
300
|
-
buffer.array[target.index * stride + offset + 2] = target.color.b;
|
|
301
|
-
return this;
|
|
302
|
-
}
|
|
303
|
-
/**
|
|
304
|
-
* Updates the point alpha attribute with the particle's target alpha.
|
|
305
|
-
*
|
|
306
|
-
* @param {Particle} particle - The particle containing the target alpha.
|
|
307
|
-
* @return {GPURenderer}
|
|
308
|
-
*/
|
|
309
|
-
|
|
310
|
-
}, {
|
|
311
|
-
key: "updatePointAlpha",
|
|
312
|
-
value: function updatePointAlpha(particle) {
|
|
313
|
-
var attribute = 'alpha';
|
|
314
|
-
var geometry = this.geometry,
|
|
315
|
-
stride = this.stride,
|
|
316
|
-
buffer = this.buffer;
|
|
317
|
-
var target = particle.target;
|
|
318
|
-
var offset = geometry.attributes[attribute].offset;
|
|
319
|
-
buffer.array[target.index * stride + offset + 0] = target.alpha;
|
|
320
|
-
return this;
|
|
321
|
-
}
|
|
322
|
-
/**
|
|
323
|
-
* Updates the point texture attribute with the particle's target texture.
|
|
324
|
-
*
|
|
325
|
-
* @param {Particle} particle - The particle containing the target texture.
|
|
326
|
-
* @return {GPURenderer}
|
|
327
|
-
*/
|
|
328
|
-
|
|
329
|
-
}, {
|
|
330
|
-
key: "updatePointTextureIndex",
|
|
331
|
-
value: function updatePointTextureIndex(particle) {
|
|
332
|
-
var attribute = 'texID';
|
|
333
|
-
var geometry = this.geometry,
|
|
334
|
-
stride = this.stride,
|
|
335
|
-
buffer = this.buffer;
|
|
336
|
-
var target = particle.target;
|
|
337
|
-
var offset = geometry.attributes[attribute].offset;
|
|
338
|
-
var id = target.index * stride + offset + 0; // eslint-disable-next-line
|
|
339
|
-
|
|
340
|
-
if (false) {
|
|
341
|
-
buffer.array[id] = target.textureIndex;
|
|
342
|
-
} else {
|
|
343
|
-
var ti = target.textureIndex * 4;
|
|
344
|
-
var ta = this.textureAtlas;
|
|
345
|
-
var ida = ta.indexData;
|
|
346
|
-
var nx = ida[ti++];
|
|
347
|
-
var ny = ida[ti++];
|
|
348
|
-
var px = ida[ti++];
|
|
349
|
-
var py = ida[ti++];
|
|
350
|
-
buffer.array[id] = (nx * ta.atlasTexture.image.width | 0) + px;
|
|
351
|
-
buffer.array[id + 1] = (ny * ta.atlasTexture.image.height | 0) + py;
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
return this;
|
|
355
|
-
}
|
|
356
|
-
}, {
|
|
357
|
-
key: "getTextureID",
|
|
358
|
-
value: function getTextureID(texture, debug) {
|
|
359
|
-
if (texture.textureIndex === undefined) {
|
|
360
|
-
if (!this.textureAtlas) {
|
|
361
|
-
this.textureAtlas = new _common.TextureAtlas(this, debug);
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
this.textureAtlas.addTexture(texture);
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
return texture.textureIndex;
|
|
368
|
-
}
|
|
369
|
-
}, {
|
|
370
|
-
key: "destroy",
|
|
371
|
-
value: function destroy() {
|
|
372
|
-
var container = this.container,
|
|
373
|
-
points = this.points,
|
|
374
|
-
textureAtlas = this.textureAtlas,
|
|
375
|
-
uniqueList = this.uniqueList;
|
|
376
|
-
container.remove(points);
|
|
377
|
-
uniqueList.destroy();
|
|
378
|
-
textureAtlas && textureAtlas.destroy();
|
|
379
|
-
}
|
|
380
|
-
}]);
|
|
381
|
-
return MobileGPURenderer;
|
|
382
|
-
}(_BaseRenderer2["default"]);
|
|
383
|
-
|
|
384
|
-
exports["default"] = MobileGPURenderer;
|
|
385
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9Nb2JpbGUvaW5kZXguanMiXSwibmFtZXMiOlsiVEhSRUUiLCJNb2JpbGVHUFVSZW5kZXJlciIsImNvbnRhaW5lciIsInRocmVlIiwib3B0aW9ucyIsIkRFRkFVTFRfUkVOREVSRVJfT1BUSU9OUyIsIlJFTkRFUkVSX1RZUEVfR1BVX01PQklMRSIsInByb3BzIiwiY2FtZXJhIiwibWF4UGFydGljbGVzIiwiYmFzZUNvbG9yIiwiYmxlbmRpbmciLCJkZXB0aFRlc3QiLCJkZXB0aFdyaXRlIiwidHJhbnNwYXJlbnQiLCJzaG91bGREZWJ1Z1RleHR1cmVBdGxhcyIsInBhcnRpY2xlQnVmZmVyIiwiUGFydGljbGVCdWZmZXIiLCJtYXRlcmlhbCIsIlNoYWRlck1hdGVyaWFsIiwidW5pZm9ybXMiLCJ2YWx1ZSIsIkNvbG9yIiwidVRleHR1cmUiLCJGRmF0bGFzSW5kZXgiLCJhdGxhc0RpbSIsIlZlY3RvcjIiLCJ2ZXJ0ZXhTaGFkZXIiLCJmcmFnbWVudFNoYWRlciIsInRhcmdldFBvb2wiLCJQb29sIiwidW5pcXVlTGlzdCIsIlVuaXF1ZUxpc3QiLCJidWZmZXIiLCJzdHJpZGUiLCJnZW9tZXRyeSIsInBvaW50cyIsIlBvaW50cyIsImZydXN0dW1DdWxsZWQiLCJhZGQiLCJzeXN0ZW0iLCJuZWVkc1VwZGF0ZSIsInRleHR1cmVBdGxhcyIsInVwZGF0ZSIsInNldCIsImF0bGFzVGV4dHVyZSIsImltYWdlIiwid2lkdGgiLCJoZWlnaHQiLCJwYXJ0aWNsZSIsInRhcmdldCIsImdldCIsIlRhcmdldCIsImlkIiwidXBkYXRlVGFyZ2V0IiwibWFwUGFydGljbGVUYXJnZXRQcm9wc1RvUG9pbnQiLCJyZXNldCIsInBvc2l0aW9uIiwicm90YXRpb24iLCJzY2FsZSIsInJhZGl1cyIsImNvbG9yIiwiYWxwaGEiLCJib2R5IiwiciIsImciLCJiIiwiY29weSIsInNpemUiLCJzZXRSR0IiLCJpbmRleCIsImZpbmQiLCJTcHJpdGUiLCJtYXAiLCJ0ZXh0dXJlIiwidGV4dHVyZUluZGV4IiwiZ2V0VGV4dHVyZUlEIiwidXBkYXRlUG9pbnRQb3NpdGlvbiIsInVwZGF0ZVBvaW50U2l6ZSIsInVwZGF0ZVBvaW50Um90YXRpb24iLCJ1cGRhdGVQb2ludENvbG9yIiwidXBkYXRlUG9pbnRBbHBoYSIsInVwZGF0ZVBvaW50VGV4dHVyZUluZGV4IiwiYXR0cmlidXRlIiwib2Zmc2V0IiwiYXR0cmlidXRlcyIsImFycmF5IiwieCIsInkiLCJ6IiwidGkiLCJ0YSIsImlkYSIsImluZGV4RGF0YSIsIm54IiwibnkiLCJweCIsInB5IiwiZGVidWciLCJ1bmRlZmluZWQiLCJUZXh0dXJlQXRsYXMiLCJhZGRUZXh0dXJlIiwicmVtb3ZlIiwiZGVzdHJveSIsIkJhc2VSZW5kZXJlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBLElBQUlBLEtBQUo7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0lBQ3FCQyxpQjs7Ozs7QUFDbkIsNkJBQVlDLFNBQVosRUFBdUJDLEtBQXZCLEVBQWtFO0FBQUE7O0FBQUEsUUFBcENDLE9BQW9DLHVFQUExQkMsbUNBQTBCO0FBQUE7QUFDaEUsOEJBQU1DLCtCQUFOO0FBRUFOLElBQUFBLEtBQUssR0FBRyxNQUFLRyxLQUFMLEdBQWFBLEtBQXJCOztBQUNBLFFBQU1JLEtBQUssbUNBQVFGLG1DQUFSLEdBQXFDRCxPQUFyQyxDQUFYOztBQUpnRSxRQU05REksTUFOOEQsR0FjNURELEtBZDRELENBTTlEQyxNQU44RDtBQUFBLFFBTzlEQyxZQVA4RCxHQWM1REYsS0FkNEQsQ0FPOURFLFlBUDhEO0FBQUEsUUFROURDLFNBUjhELEdBYzVESCxLQWQ0RCxDQVE5REcsU0FSOEQ7QUFBQSxRQVM5REMsUUFUOEQsR0FjNURKLEtBZDRELENBUzlESSxRQVQ4RDtBQUFBLFFBVTlEQyxTQVY4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QURuQixHQUNnRCxJQURoRCxDQUNtQkEsWUFEbkI7QUFBQSxVQUNpQ1gsVUFEakMsR0FDZ0QsSUFEaEQsQ0FDaUNBLFVBRGpDO0FBR1I3QixNQUFBQSxTQUFTLENBQUNvRyxNQUFWLENBQWlCbEUsTUFBakI7QUFDQUwsTUFBQUEsVUFBVSxDQUFDd0UsT0FBWDtBQUNBN0QsTUFBQUEsWUFBWSxJQUFJQSxZQUFZLENBQUM2RCxPQUFiLEVBQWhCO0FBQ0Q7OztFQXJTNENDLHlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFydGljbGVCdWZmZXIsIFRhcmdldCwgVGV4dHVyZUF0bGFzLCBVbmlxdWVMaXN0IH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IGZyYWdtZW50U2hhZGVyLCB2ZXJ0ZXhTaGFkZXIgfSBmcm9tICcuL3NoYWRlcnMnO1xuXG5pbXBvcnQgQmFzZVJlbmRlcmVyIGZyb20gJy4uLy4uL0Jhc2VSZW5kZXJlcic7XG5pbXBvcnQgeyBERUZBVUxUX1JFTkRFUkVSX09QVElPTlMgfSBmcm9tICcuLi9jb21tb24vY29uc3RhbnRzJztcbmltcG9ydCB7IFBvb2wgfSBmcm9tICcuLi8uLi8uLi9jb3JlJztcbmltcG9ydCB7IFJFTkRFUkVSX1RZUEVfR1BVX01PQklMRSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxubGV0IFRIUkVFO1xuXG4vKipcbiAqIEdQVVJlbmRlcmVyIGZvciBtb2JpbGUgZGV2aWNlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IGZsb2F0aW5nIHBvaW50IHRleHR1cmVzLlxuICpcbiAqIEBhdXRob3IgdGhyYXggPG1hbnRocmF4QGdtYWlsLmNvbT5cbiAqIEBhdXRob3Igcm9oYW4tZGVzaHBhbmRlIDxyb2hhbkBjcmVhdGl2ZWxpZmVmb3JtLmNvbT5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW9iaWxlR1BVUmVuZGVyZXIgZXh0ZW5kcyBCYXNlUmVuZGVyZXIge1xuICBjb25zdHJ1Y3Rvcihjb250YWluZXIsIHRocmVlLCBvcHRpb25zID0gREVGQVVMVF9SRU5ERVJFUl9PUFRJT05TKSB7XG4gICAgc3VwZXIoUkVOREVSRVJfVFlQRV9HUFVfTU9CSUxFKTtcblxuICAgIFRIUkVFID0gdGhpcy50aHJlZSA9IHRocmVlO1xuICAgIGNvbnN0IHByb3BzID0geyAuLi5ERUZBVUxUX1JFTkRFUkVSX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcbiAgICBjb25zdCB7XG4gICAgICBjYW1lcmEsXG4gICAgICBtYXhQYXJ0aWNsZXMsXG4gICAgICBiYXNlQ29sb3IsXG4gICAgICBibGVuZGluZyxcbiAgICAgIGRlcHRoVGVzdCxcbiAgICAgIGRlcHRoV3JpdGUsXG4gICAgICB0cmFuc3BhcmVudCxcbiAgICAgIHNob3VsZERlYnVnVGV4dHVyZUF0bGFzLFxuICAgIH0gPSBwcm9wcztcbiAgICBjb25zdCBwYXJ0aWNsZUJ1ZmZlciA9IG5ldyBQYXJ0aWNsZUJ1ZmZlcihtYXhQYXJ0aWNsZXMsIFRIUkVFKTtcbiAgICBjb25zdCBtYXRlcmlhbCA9IG5ldyBUSFJFRS5TaGFkZXJNYXRlcmlhbCh7XG4gICAgICB1bmlmb3Jtczoge1xuICAgICAgICBiYXNlQ29sb3I6IHsgdmFsdWU6IG5ldyBUSFJFRS5Db2xvcihiYXNlQ29sb3IpIH0sXG4gICAgICAgIHVUZXh0dXJlOiB7IHZhbHVlOiBudWxsIH0sXG4gICAgICAgIEZGYXRsYXNJbmRleDogeyB2YWx1ZTogbnVsbCB9LFxuICAgICAgICBhdGxhc0RpbTogeyB2YWx1ZTogbmV3IFRIUkVFLlZlY3RvcjIoKSB9LFxuICAgICAgfSxcbiAgICAgIHZlcnRleFNoYWRlcjogdmVydGV4U2hhZGVyKCksXG4gICAgICBmcmFnbWVudFNoYWRlcjogZnJhZ21lbnRTaGFkZXIoKSxcbiAgICAgIGJsZW5kaW5nOiBUSFJFRVtibGVuZGluZ10sXG4gICAgICBkZXB0aFRlc3QsXG4gICAgICBkZXB0aFdyaXRlLFxuICAgICAgdHJhbnNwYXJlbnQsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNhbWVyYSA9IGNhbWVyYTtcbiAgICB0aGlzLnRhcmdldFBvb2wgPSBuZXcgUG9vbCgpO1xuICAgIHRoaXMudW5pcXVlTGlzdCA9IG5ldyBVbmlxdWVMaXN0KG1heFBhcnRpY2xlcyk7XG4gICAgdGhpcy5wYXJ0aWNsZUJ1ZmZlciA9IHBhcnRpY2xlQnVmZmVyO1xuICAgIHRoaXMuYnVmZmVyID0gcGFydGljbGVCdWZmZXIuYnVmZmVyO1xuICAgIHRoaXMuc3RyaWRlID0gcGFydGljbGVCdWZmZXIuc3RyaWRlO1xuICAgIHRoaXMuZ2VvbWV0cnkgPSBwYXJ0aWNsZUJ1ZmZlci5nZW9tZXRyeTtcbiAgICB0aGlzLm1hdGVyaWFsID0gbWF0ZXJpYWw7XG4gICAgdGhpcy5wb2ludHMgPSBuZXcgVEhSRUUuUG9pbnRzKHRoaXMuZ2VvbWV0cnksIHRoaXMubWF0ZXJpYWwpO1xuICAgIHRoaXMucG9pbnRzLmZydXN0dW1DdWxsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNob3VsZERlYnVnVGV4dHVyZUF0bGFzID0gc2hvdWxkRGVidWdUZXh0dXJlQXRsYXM7XG5cbiAgICBjb250YWluZXIuYWRkKHRoaXMucG9pbnRzKTtcbiAgfVxuXG4gIG9uU3lzdGVtVXBkYXRlKHN5c3RlbSkge1xuICAgIHN1cGVyLm9uU3lzdGVtVXBkYXRlKHN5c3RlbSk7XG5cbiAgICB0aGlzLmJ1ZmZlci5uZWVkc1VwZGF0ZSA9IHRydWU7XG5cbiAgICBjb25zdCB7IHRleHR1cmVBdGxhcyB9ID0gdGhpcztcblxuICAgIGlmICh0ZXh0dXJlQXRsYXMpIHtcbiAgICAgIHRleHR1cmVBdGxhcy51cGRhdGUoKTtcbiAgICAgIHRoaXMubWF0ZXJpYWwudW5pZm9ybXMuYXRsYXNEaW0udmFsdWUuc2V0KFxuICAgICAgICB0ZXh0dXJlQXRsYXMuYXRsYXNUZXh0dXJlLmltYWdlLndpZHRoLFxuICAgICAgICB0ZXh0dXJlQXRsYXMuYXRsYXNUZXh0dXJlLmltYWdlLmhlaWdodFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUG9vbHMgdGhlIHBhcnRpY2xlIHRhcmdldCBpZiBpdCBkb2VzIG5vdCBleGlzdC5cbiAgICogVXBkYXRlcyB0aGUgdGFyZ2V0IGFuZCBtYXBzIHBhcnRpY2xlIHByb3BlcnRpZXMgdG8gdGhlIHBvaW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfVxuICAgKi9cbiAgb25QYXJ0aWNsZUNyZWF0ZWQocGFydGljbGUpIHtcbiAgICBpZiAoIXBhcnRpY2xlLnRhcmdldCkge1xuICAgICAgcGFydGljbGUudGFyZ2V0ID0gdGhpcy50YXJnZXRQb29sLmdldChUYXJnZXQsIFRIUkVFKTtcbiAgICAgIHRoaXMudW5pcXVlTGlzdC5hZGQocGFydGljbGUuaWQpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlVGFyZ2V0KHBhcnRpY2xlKS5tYXBQYXJ0aWNsZVRhcmdldFByb3BzVG9Qb2ludChwYXJ0aWNsZSk7XG4gIH1cblxuICAvKipcbiAgICogTWFwcyBwYXJ0aWNsZSBwcm9wZXJ0aWVzIHRvIHRoZSBwb2ludCBpZiB0aGUgcGFydGljbGUgaGFzIGEgdGFyZ2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfVxuICAgKi9cbiAgb25QYXJ0aWNsZVVwZGF0ZShwYXJ0aWNsZSkge1xuICAgIGlmICghcGFydGljbGUudGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVUYXJnZXQocGFydGljbGUpLm1hcFBhcnRpY2xlVGFyZ2V0UHJvcHNUb1BvaW50KHBhcnRpY2xlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgYW5kIGNsZWFycyB0aGUgcGFydGljbGUgdGFyZ2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfVxuICAgKi9cbiAgb25QYXJ0aWNsZURlYWQocGFydGljbGUpIHtcbiAgICBpZiAoIXBhcnRpY2xlLnRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHBhcnRpY2xlLnRhcmdldC5yZXNldCgpO1xuICAgIHRoaXMubWFwUGFydGljbGVUYXJnZXRQcm9wc1RvUG9pbnQocGFydGljbGUpO1xuXG4gICAgcGFydGljbGUudGFyZ2V0ID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIGFsbCBtdXRhYmxlIHByb3BlcnRpZXMgZnJvbSB0aGUgcGFydGljbGUgdG8gdGhlIHRhcmdldC5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX1cbiAgICogQHJldHVybiB7R1BVUmVuZGVyZXJ9XG4gICAqL1xuICB1cGRhdGVUYXJnZXQocGFydGljbGUpIHtcbiAgICBjb25zdCB7IHBvc2l0aW9uLCByb3RhdGlvbiwgc2NhbGUsIHJhZGl1cywgY29sb3IsIGFscGhhLCBib2R5LCBpZCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyByLCBnLCBiIH0gPSBjb2xvcjtcblxuICAgIHBhcnRpY2xlLnRhcmdldC5wb3NpdGlvbi5jb3B5KHBvc2l0aW9uKTtcbiAgICBwYXJ0aWNsZS50YXJnZXQucm90YXRpb24uY29weShyb3RhdGlvbik7XG4gICAgcGFydGljbGUudGFyZ2V0LnNpemUgPSBzY2FsZSAqIHJhZGl1cztcbiAgICBwYXJ0aWNsZS50YXJnZXQuY29sb3Iuc2V0UkdCKHIsIGcsIGIpO1xuICAgIHBhcnRpY2xlLnRhcmdldC5hbHBoYSA9IGFscGhhO1xuICAgIHBhcnRpY2xlLnRhcmdldC5pbmRleCA9IHRoaXMudW5pcXVlTGlzdC5maW5kKGlkKTtcblxuICAgIGlmIChib2R5ICYmIGJvZHkgaW5zdGFuY2VvZiBUSFJFRS5TcHJpdGUpIHtcbiAgICAgIGNvbnN0IHsgbWFwIH0gPSBib2R5Lm1hdGVyaWFsO1xuXG4gICAgICBwYXJ0aWNsZS50YXJnZXQudGV4dHVyZSA9IG1hcDtcbiAgICAgIHBhcnRpY2xlLnRhcmdldC50ZXh0dXJlSW5kZXggPSB0aGlzLmdldFRleHR1cmVJRChcbiAgICAgICAgbWFwLFxuICAgICAgICB0aGlzLnNob3VsZERlYnVnVGV4dHVyZUF0bGFzXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEVudHJ5IHBvaW50IGZvciBtYXBwaW5nIHBhcnRpY2xlIHByb3BlcnRpZXMgdG8gYnVmZmVyIGdlb21ldHJ5IHBvaW50cy5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgcHJvcGVydGllcyB0byBtYXBcbiAgICogQHJldHVybiB7R1BVUmVuZGVyZXJ9XG4gICAqL1xuICBtYXBQYXJ0aWNsZVRhcmdldFByb3BzVG9Qb2ludChwYXJ0aWNsZSkge1xuICAgIHRoaXMudXBkYXRlUG9pbnRQb3NpdGlvbihwYXJ0aWNsZSlcbiAgICAgIC51cGRhdGVQb2ludFNpemUocGFydGljbGUpXG4gICAgICAudXBkYXRlUG9pbnRSb3RhdGlvbihwYXJ0aWNsZSlcbiAgICAgIC51cGRhdGVQb2ludENvbG9yKHBhcnRpY2xlKVxuICAgICAgLnVwZGF0ZVBvaW50QWxwaGEocGFydGljbGUpXG4gICAgICAudXBkYXRlUG9pbnRUZXh0dXJlSW5kZXgocGFydGljbGUpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQncyBwb3NpdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHBhcnRpY2xlJ3MgdGFyZ2V0IHBvc2l0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSBjb250YWluaW5nIHRoZSB0YXJnZXQgcG9zaXRpb24uXG4gICAqIEByZXR1cm4ge0dQVVJlbmRlcmVyfVxuICAgKi9cbiAgdXBkYXRlUG9pbnRQb3NpdGlvbihwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZSA9ICdwb3NpdGlvbic7XG4gICAgY29uc3QgeyBnZW9tZXRyeSwgc3RyaWRlLCBidWZmZXIgfSA9IHRoaXM7XG4gICAgY29uc3QgeyB0YXJnZXQgfSA9IHBhcnRpY2xlO1xuICAgIGNvbnN0IHsgb2Zmc2V0IH0gPSBnZW9tZXRyeS5hdHRyaWJ1dGVzW2F0dHJpYnV0ZV07XG5cbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMF0gPSB0YXJnZXQucG9zaXRpb24ueDtcbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMV0gPSB0YXJnZXQucG9zaXRpb24ueTtcbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMl0gPSB0YXJnZXQucG9zaXRpb24uejtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHBvaW50J3Mgc2l6ZSByZWxhdGl2ZSB0byB0aGUgcGFydGljbGUncyB0YXJnZXQgc2NhbGUgYW5kIHJhZGl1cy5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IHNjYWxlLlxuICAgKiBAcmV0dXJuIHtHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVBvaW50U2l6ZShwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZSA9ICdzaXplJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcblxuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAwXSA9IHRhcmdldC5zaXplO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQncyByb3RhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IHJvdGF0aW9uLlxuICAgKiBAcmV0dXJuIHtHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVBvaW50Um90YXRpb24ocGFydGljbGUpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGUgPSAncm90YXRpb24nO1xuICAgIGNvbnN0IHsgZ2VvbWV0cnksIHN0cmlkZSwgYnVmZmVyIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBwYXJ0aWNsZTtcbiAgICBjb25zdCB7IG9mZnNldCB9ID0gZ2VvbWV0cnkuYXR0cmlidXRlc1thdHRyaWJ1dGVdO1xuXG4gICAgYnVmZmVyLmFycmF5W3RhcmdldC5pbmRleCAqIHN0cmlkZSArIG9mZnNldCArIDBdID0gdGFyZ2V0LnJvdGF0aW9uLno7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBwb2ludCdzIGNvbG9yIGF0dHJpYnV0ZSBhY2NvcmRpbmcgd2l0aCB0aGUgcGFydGljbGUncyB0YXJnZXQgY29sb3IuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIGNvbnRhaW5pbmcgdGhlIHRhcmdldCBjb2xvciBhbmQgYWxwaGEuXG4gICAqIEByZXR1cm4ge0dQVVJlbmRlcmVyfVxuICAgKi9cbiAgdXBkYXRlUG9pbnRDb2xvcihwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZSA9ICdjb2xvcic7XG4gICAgY29uc3QgeyBnZW9tZXRyeSwgc3RyaWRlLCBidWZmZXIgfSA9IHRoaXM7XG4gICAgY29uc3QgeyB0YXJnZXQgfSA9IHBhcnRpY2xlO1xuICAgIGNvbnN0IHsgb2Zmc2V0IH0gPSBnZW9tZXRyeS5hdHRyaWJ1dGVzW2F0dHJpYnV0ZV07XG5cbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMF0gPSB0YXJnZXQuY29sb3IucjtcbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMV0gPSB0YXJnZXQuY29sb3IuZztcbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMl0gPSB0YXJnZXQuY29sb3IuYjtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHBvaW50IGFscGhhIGF0dHJpYnV0ZSB3aXRoIHRoZSBwYXJ0aWNsZSdzIHRhcmdldCBhbHBoYS5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IGFscGhhLlxuICAgKiBAcmV0dXJuIHtHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVBvaW50QWxwaGEocGFydGljbGUpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGUgPSAnYWxwaGEnO1xuICAgIGNvbnN0IHsgZ2VvbWV0cnksIHN0cmlkZSwgYnVmZmVyIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBwYXJ0aWNsZTtcbiAgICBjb25zdCB7IG9mZnNldCB9ID0gZ2VvbWV0cnkuYXR0cmlidXRlc1thdHRyaWJ1dGVdO1xuXG4gICAgYnVmZmVyLmFycmF5W3RhcmdldC5pbmRleCAqIHN0cmlkZSArIG9mZnNldCArIDBdID0gdGFyZ2V0LmFscGhhO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQgdGV4dHVyZSBhdHRyaWJ1dGUgd2l0aCB0aGUgcGFydGljbGUncyB0YXJnZXQgdGV4dHVyZS5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IHRleHR1cmUuXG4gICAqIEByZXR1cm4ge0dQVVJlbmRlcmVyfVxuICAgKi9cbiAgdXBkYXRlUG9pbnRUZXh0dXJlSW5kZXgocGFydGljbGUpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGUgPSAndGV4SUQnO1xuICAgIGNvbnN0IHsgZ2VvbWV0cnksIHN0cmlkZSwgYnVmZmVyIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBwYXJ0aWNsZTtcbiAgICBjb25zdCB7IG9mZnNldCB9ID0gZ2VvbWV0cnkuYXR0cmlidXRlc1thdHRyaWJ1dGVdO1xuICAgIGNvbnN0IGlkID0gdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMDtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIGlmIChmYWxzZSkge1xuICAgICAgYnVmZmVyLmFycmF5W2lkXSA9IHRhcmdldC50ZXh0dXJlSW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB0aSA9IHRhcmdldC50ZXh0dXJlSW5kZXggKiA0O1xuICAgICAgY29uc3QgdGEgPSB0aGlzLnRleHR1cmVBdGxhcztcbiAgICAgIGNvbnN0IGlkYSA9IHRhLmluZGV4RGF0YTtcbiAgICAgIGNvbnN0IG54ID0gaWRhW3RpKytdO1xuICAgICAgY29uc3QgbnkgPSBpZGFbdGkrK107XG4gICAgICBjb25zdCBweCA9IGlkYVt0aSsrXTtcbiAgICAgIGNvbnN0IHB5ID0gaWRhW3RpKytdO1xuXG4gICAgICBidWZmZXIuYXJyYXlbaWRdID0gKChueCAqIHRhLmF0bGFzVGV4dHVyZS5pbWFnZS53aWR0aCkgfCAwKSArIHB4O1xuICAgICAgYnVmZmVyLmFycmF5W2lkICsgMV0gPSAoKG55ICogdGEuYXRsYXNUZXh0dXJlLmltYWdlLmhlaWdodCkgfCAwKSArIHB5O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0VGV4dHVyZUlEKHRleHR1cmUsIGRlYnVnKSB7XG4gICAgaWYgKHRleHR1cmUudGV4dHVyZUluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICghdGhpcy50ZXh0dXJlQXRsYXMpIHtcbiAgICAgICAgdGhpcy50ZXh0dXJlQXRsYXMgPSBuZXcgVGV4dHVyZUF0bGFzKHRoaXMsIGRlYnVnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50ZXh0dXJlQXRsYXMuYWRkVGV4dHVyZSh0ZXh0dXJlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGV4dHVyZS50ZXh0dXJlSW5kZXg7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIGNvbnN0IHsgY29udGFpbmVyLCBwb2ludHMsIHRleHR1cmVBdGxhcywgdW5pcXVlTGlzdCB9ID0gdGhpcztcblxuICAgIGNvbnRhaW5lci5yZW1vdmUocG9pbnRzKTtcbiAgICB1bmlxdWVMaXN0LmRlc3Ryb3koKTtcbiAgICB0ZXh0dXJlQXRsYXMgJiYgdGV4dHVyZUF0bGFzLmRlc3Ryb3koKTtcbiAgfVxufVxuIl19
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.fragmentShader = void 0;
|
|
7
|
-
|
|
8
|
-
var fragmentShader = function fragmentShader() {
|
|
9
|
-
return "\n uniform vec3 baseColor;\n uniform sampler2D uTexture;\n\n varying float vRotation;\n varying vec3 targetColor;\n varying float targetAlpha;\n varying vec4 tileRect;\n\n void main() {\n gl_FragColor = vec4(baseColor * targetColor, targetAlpha);\n\n vec2 uv = gl_PointCoord;\n uv = mix(tileRect.xy, tileRect.zw, gl_PointCoord);\n\n float mid = 0.5;\n uv = vec2(\n cos(vRotation) * (uv.x - mid) - sin(vRotation) * (uv.y - mid) + mid,\n cos(vRotation) * (uv.y - mid) + sin(vRotation) * (uv.x - mid) + mid\n );\n \n gl_FragColor = gl_FragColor * texture2D(uTexture, uv);\n }\n";
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
exports.fragmentShader = fragmentShader;
|
|
13
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9Nb2JpbGUvc2hhZGVycy9mcmFnbWVudFNoYWRlci5qcyJdLCJuYW1lcyI6WyJmcmFnbWVudFNoYWRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFPLElBQU1BLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsR0FBTTtBQUNsQztBQXdCRCxDQXpCTSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBmcmFnbWVudFNoYWRlciA9ICgpID0+IHtcbiAgcmV0dXJuIGBcbiAgICB1bmlmb3JtIHZlYzMgYmFzZUNvbG9yO1xuICAgIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlO1xuXG4gICAgdmFyeWluZyBmbG9hdCB2Um90YXRpb247XG4gICAgdmFyeWluZyB2ZWMzIHRhcmdldENvbG9yO1xuICAgIHZhcnlpbmcgZmxvYXQgdGFyZ2V0QWxwaGE7XG4gICAgdmFyeWluZyB2ZWM0IHRpbGVSZWN0O1xuXG4gICAgdm9pZCBtYWluKCkge1xuICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiYXNlQ29sb3IgKiB0YXJnZXRDb2xvciwgdGFyZ2V0QWxwaGEpO1xuXG4gICAgICB2ZWMyIHV2ID0gZ2xfUG9pbnRDb29yZDtcbiAgICAgIHV2ID0gbWl4KHRpbGVSZWN0Lnh5LCB0aWxlUmVjdC56dywgZ2xfUG9pbnRDb29yZCk7XG5cbiAgICAgIGZsb2F0IG1pZCA9IDAuNTtcbiAgICAgIHV2ID0gdmVjMihcbiAgICAgICAgY29zKHZSb3RhdGlvbikgKiAodXYueCAtIG1pZCkgLSBzaW4odlJvdGF0aW9uKSAqICh1di55IC0gbWlkKSArIG1pZCxcbiAgICAgICAgY29zKHZSb3RhdGlvbikgKiAodXYueSAtIG1pZCkgKyBzaW4odlJvdGF0aW9uKSAqICh1di54IC0gbWlkKSArIG1pZFxuICAgICAgKTtcbiAgICAgIFxuICAgICAgZ2xfRnJhZ0NvbG9yID0gZ2xfRnJhZ0NvbG9yICogdGV4dHVyZTJEKHVUZXh0dXJlLCB1dik7XG4gICAgfVxuYDtcbn07XG4iXX0=
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
Object.defineProperty(exports, "fragmentShader", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function get() {
|
|
9
|
-
return _fragmentShader.fragmentShader;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
Object.defineProperty(exports, "vertexShader", {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
get: function get() {
|
|
15
|
-
return _vertexShader.vertexShader;
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
var _fragmentShader = require("./fragmentShader");
|
|
20
|
-
|
|
21
|
-
var _vertexShader = require("./vertexShader");
|
|
22
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9Nb2JpbGUvc2hhZGVycy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGZyYWdtZW50U2hhZGVyIH0gZnJvbSAnLi9mcmFnbWVudFNoYWRlcic7XG5leHBvcnQgeyB2ZXJ0ZXhTaGFkZXIgfSBmcm9tICcuL3ZlcnRleFNoYWRlcic7XG4iXX0=
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.vertexShader = void 0;
|
|
7
|
-
|
|
8
|
-
var _constants = require("../../common/shaders/constants");
|
|
9
|
-
|
|
10
|
-
var vertexShader = function vertexShader() {
|
|
11
|
-
return "\n uniform sampler2D uTexture;\n uniform vec2 atlasDim;\n\n attribute float size;\n attribute vec3 color;\n attribute float alpha;\n attribute vec2 texID;\n attribute float rotation;\n\n varying float vRotation;\n varying vec3 targetColor;\n varying float targetAlpha;\n varying vec4 tileRect;\n\n void main() {\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n targetColor = color;\n targetAlpha = alpha;\n vRotation = rotation;\n\n vec2 tmin = floor(texID) / atlasDim;\n vec2 tmax = fract(texID);\n tileRect = vec4(tmin,tmax);\n\n gl_PointSize = ((size * ".concat(_constants.SIZE_ATTENUATION_FACTOR, ") / -mvPosition.z);\n gl_Position = projectionMatrix * mvPosition;\n }\n");
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
exports.vertexShader = vertexShader;
|
|
15
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9Nb2JpbGUvc2hhZGVycy92ZXJ0ZXhTaGFkZXIuanMiXSwibmFtZXMiOlsidmVydGV4U2hhZGVyIiwiU0laRV9BVFRFTlVBVElPTl9GQUNUT1IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFTyxJQUFNQSxZQUFZLEdBQUcsU0FBZkEsWUFBZSxHQUFNO0FBQ2hDLHVwQkF5QjhCQyxrQ0F6QjlCO0FBNkJELENBOUJNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0laRV9BVFRFTlVBVElPTl9GQUNUT1IgfSBmcm9tICcuLi8uLi9jb21tb24vc2hhZGVycy9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgdmVydGV4U2hhZGVyID0gKCkgPT4ge1xuICByZXR1cm4gYFxuICAgIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlO1xuICAgIHVuaWZvcm0gdmVjMiBhdGxhc0RpbTtcblxuICAgIGF0dHJpYnV0ZSBmbG9hdCBzaXplO1xuICAgIGF0dHJpYnV0ZSB2ZWMzIGNvbG9yO1xuICAgIGF0dHJpYnV0ZSBmbG9hdCBhbHBoYTtcbiAgICBhdHRyaWJ1dGUgdmVjMiB0ZXhJRDtcbiAgICBhdHRyaWJ1dGUgZmxvYXQgcm90YXRpb247XG5cbiAgICB2YXJ5aW5nIGZsb2F0IHZSb3RhdGlvbjtcbiAgICB2YXJ5aW5nIHZlYzMgdGFyZ2V0Q29sb3I7XG4gICAgdmFyeWluZyBmbG9hdCB0YXJnZXRBbHBoYTtcbiAgICB2YXJ5aW5nIHZlYzQgdGlsZVJlY3Q7XG5cbiAgICB2b2lkIG1haW4oKSB7XG4gICAgICB2ZWM0IG12UG9zaXRpb24gPSBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xuICAgICAgdGFyZ2V0Q29sb3IgPSBjb2xvcjtcbiAgICAgIHRhcmdldEFscGhhID0gYWxwaGE7XG4gICAgICB2Um90YXRpb24gPSByb3RhdGlvbjtcblxuICAgICAgdmVjMiB0bWluID0gZmxvb3IodGV4SUQpIC8gYXRsYXNEaW07XG4gICAgICB2ZWMyIHRtYXggPSBmcmFjdCh0ZXhJRCk7XG4gICAgICB0aWxlUmVjdCA9IHZlYzQodG1pbix0bWF4KTtcblxuICAgICAgZ2xfUG9pbnRTaXplID0gKChzaXplICogJHtTSVpFX0FUVEVOVUFUSU9OX0ZBQ1RPUn0pIC8gLW12UG9zaXRpb24ueik7XG4gICAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtdlBvc2l0aW9uO1xuICAgIH1cbmA7XG59O1xuIl19
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.PARTICLE_STRIDE = exports.ATTRIBUTE_TO_SIZE_MAP = exports.TEXID_ATTRIBUTE_BUFFER_SIZE = exports.ALPHA_ATTRIBUTE_BUFFER_SIZE = exports.RGBA_ATTRIBUTE_BUFFER_SIZE = exports.SIZE_ATTRIBUTE_BUFFER_SIZE = exports.ROTATION_ATTRIBUTE_BUFFER_SIZE = exports.POSITION_ATTRIBUTE_BUFFER_SIZE = exports.PARTICLE_BYTE_SIZE = exports.ALL_BYTE_SIZES = exports.RGBA_BYTE_SIZE = exports.SIZE_BYTE_SIZE = exports.ROTATION_BYTE_SIZE = exports.POSITION_BYTE_SIZE = exports.FLOAT_BYTE_SIZE = exports.RGBA_SIZE = exports.VECTOR_3_SIZE = exports.DEFAULT_MAX_PARTICLES = void 0;
|
|
7
|
-
// Primitives
|
|
8
|
-
var DEFAULT_MAX_PARTICLES = 10000;
|
|
9
|
-
exports.DEFAULT_MAX_PARTICLES = DEFAULT_MAX_PARTICLES;
|
|
10
|
-
var VECTOR_3_SIZE = ['x', 'y', 'z'].length;
|
|
11
|
-
exports.VECTOR_3_SIZE = VECTOR_3_SIZE;
|
|
12
|
-
var RGBA_SIZE = ['r', 'g', 'b', 'a'].length;
|
|
13
|
-
exports.RGBA_SIZE = RGBA_SIZE;
|
|
14
|
-
var FLOAT_BYTE_SIZE = 4; // Byte sizes
|
|
15
|
-
|
|
16
|
-
exports.FLOAT_BYTE_SIZE = FLOAT_BYTE_SIZE;
|
|
17
|
-
var POSITION_BYTE_SIZE = VECTOR_3_SIZE * FLOAT_BYTE_SIZE;
|
|
18
|
-
exports.POSITION_BYTE_SIZE = POSITION_BYTE_SIZE;
|
|
19
|
-
var ROTATION_BYTE_SIZE = FLOAT_BYTE_SIZE;
|
|
20
|
-
exports.ROTATION_BYTE_SIZE = ROTATION_BYTE_SIZE;
|
|
21
|
-
var SIZE_BYTE_SIZE = FLOAT_BYTE_SIZE;
|
|
22
|
-
exports.SIZE_BYTE_SIZE = SIZE_BYTE_SIZE;
|
|
23
|
-
var RGBA_BYTE_SIZE = RGBA_SIZE * FLOAT_BYTE_SIZE;
|
|
24
|
-
exports.RGBA_BYTE_SIZE = RGBA_BYTE_SIZE;
|
|
25
|
-
var ALL_BYTE_SIZES = [POSITION_BYTE_SIZE, ROTATION_BYTE_SIZE, SIZE_BYTE_SIZE, RGBA_BYTE_SIZE];
|
|
26
|
-
exports.ALL_BYTE_SIZES = ALL_BYTE_SIZES;
|
|
27
|
-
var PARTICLE_BYTE_SIZE = ALL_BYTE_SIZES.reduce(function (cur, acc) {
|
|
28
|
-
return cur + acc;
|
|
29
|
-
}); // Attributes
|
|
30
|
-
|
|
31
|
-
exports.PARTICLE_BYTE_SIZE = PARTICLE_BYTE_SIZE;
|
|
32
|
-
var POSITION_ATTRIBUTE_BUFFER_SIZE = VECTOR_3_SIZE;
|
|
33
|
-
exports.POSITION_ATTRIBUTE_BUFFER_SIZE = POSITION_ATTRIBUTE_BUFFER_SIZE;
|
|
34
|
-
var ROTATION_ATTRIBUTE_BUFFER_SIZE = 1;
|
|
35
|
-
exports.ROTATION_ATTRIBUTE_BUFFER_SIZE = ROTATION_ATTRIBUTE_BUFFER_SIZE;
|
|
36
|
-
var SIZE_ATTRIBUTE_BUFFER_SIZE = 1;
|
|
37
|
-
exports.SIZE_ATTRIBUTE_BUFFER_SIZE = SIZE_ATTRIBUTE_BUFFER_SIZE;
|
|
38
|
-
var RGBA_ATTRIBUTE_BUFFER_SIZE = RGBA_SIZE;
|
|
39
|
-
exports.RGBA_ATTRIBUTE_BUFFER_SIZE = RGBA_ATTRIBUTE_BUFFER_SIZE;
|
|
40
|
-
var ALPHA_ATTRIBUTE_BUFFER_SIZE = 1;
|
|
41
|
-
exports.ALPHA_ATTRIBUTE_BUFFER_SIZE = ALPHA_ATTRIBUTE_BUFFER_SIZE;
|
|
42
|
-
var TEXID_ATTRIBUTE_BUFFER_SIZE = 2;
|
|
43
|
-
exports.TEXID_ATTRIBUTE_BUFFER_SIZE = TEXID_ATTRIBUTE_BUFFER_SIZE;
|
|
44
|
-
var ATTRIBUTE_TO_SIZE_MAP = {
|
|
45
|
-
position: POSITION_ATTRIBUTE_BUFFER_SIZE,
|
|
46
|
-
rotation: ROTATION_ATTRIBUTE_BUFFER_SIZE,
|
|
47
|
-
size: SIZE_ATTRIBUTE_BUFFER_SIZE,
|
|
48
|
-
// THREE.Color does not contain alpha, so we will have separate attributes for these
|
|
49
|
-
color: RGBA_ATTRIBUTE_BUFFER_SIZE,
|
|
50
|
-
alpha: ALPHA_ATTRIBUTE_BUFFER_SIZE,
|
|
51
|
-
texID: TEXID_ATTRIBUTE_BUFFER_SIZE
|
|
52
|
-
};
|
|
53
|
-
exports.ATTRIBUTE_TO_SIZE_MAP = ATTRIBUTE_TO_SIZE_MAP;
|
|
54
|
-
var PARTICLE_STRIDE = [POSITION_ATTRIBUTE_BUFFER_SIZE, ROTATION_ATTRIBUTE_BUFFER_SIZE, SIZE_ATTRIBUTE_BUFFER_SIZE, RGBA_ATTRIBUTE_BUFFER_SIZE, ALPHA_ATTRIBUTE_BUFFER_SIZE, TEXID_ATTRIBUTE_BUFFER_SIZE].reduce(function (cur, acc) {
|
|
55
|
-
return cur + acc;
|
|
56
|
-
});
|
|
57
|
-
exports.PARTICLE_STRIDE = PARTICLE_STRIDE;
|
|
58
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9jb21tb24vUGFydGljbGVCdWZmZXIvY29uc3RhbnRzLmpzIl0sIm5hbWVzIjpbIkRFRkFVTFRfTUFYX1BBUlRJQ0xFUyIsIlZFQ1RPUl8zX1NJWkUiLCJsZW5ndGgiLCJSR0JBX1NJWkUiLCJGTE9BVF9CWVRFX1NJWkUiLCJQT1NJVElPTl9CWVRFX1NJWkUiLCJST1RBVElPTl9CWVRFX1NJWkUiLCJTSVpFX0JZVEVfU0laRSIsIlJHQkFfQllURV9TSVpFIiwiQUxMX0JZVEVfU0laRVMiLCJQQVJUSUNMRV9CWVRFX1NJWkUiLCJyZWR1Y2UiLCJjdXIiLCJhY2MiLCJQT1NJVElPTl9BVFRSSUJVVEVfQlVGRkVSX1NJWkUiLCJST1RBVElPTl9BVFRSSUJVVEVfQlVGRkVSX1NJWkUiLCJTSVpFX0FUVFJJQlVURV9CVUZGRVJfU0laRSIsIlJHQkFfQVRUUklCVVRFX0JVRkZFUl9TSVpFIiwiQUxQSEFfQVRUUklCVVRFX0JVRkZFUl9TSVpFIiwiVEVYSURfQVRUUklCVVRFX0JVRkZFUl9TSVpFIiwiQVRUUklCVVRFX1RPX1NJWkVfTUFQIiwicG9zaXRpb24iLCJyb3RhdGlvbiIsInNpemUiLCJjb2xvciIsImFscGhhIiwidGV4SUQiLCJQQVJUSUNMRV9TVFJJREUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ08sSUFBTUEscUJBQXFCLEdBQUcsS0FBOUI7O0FBQ0EsSUFBTUMsYUFBYSxHQUFHLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBVyxHQUFYLEVBQWdCQyxNQUF0Qzs7QUFDQSxJQUFNQyxTQUFTLEdBQUcsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXLEdBQVgsRUFBZ0IsR0FBaEIsRUFBcUJELE1BQXZDOztBQUNBLElBQU1FLGVBQWUsR0FBRyxDQUF4QixDLENBRVA7OztBQUNPLElBQU1DLGtCQUFrQixHQUFHSixhQUFhLEdBQUdHLGVBQTNDOztBQUNBLElBQU1FLGtCQUFrQixHQUFHRixlQUEzQjs7QUFDQSxJQUFNRyxjQUFjLEdBQUdILGVBQXZCOztBQUNBLElBQU1JLGNBQWMsR0FBR0wsU0FBUyxHQUFHQyxlQUFuQzs7QUFDQSxJQUFNSyxjQUFjLEdBQUcsQ0FDNUJKLGtCQUQ0QixFQUU1QkMsa0JBRjRCLEVBRzVCQyxjQUg0QixFQUk1QkMsY0FKNEIsQ0FBdkI7O0FBTUEsSUFBTUUsa0JBQWtCLEdBQUdELGNBQWMsQ0FBQ0UsTUFBZixDQUNoQyxVQUFDQyxHQUFELEVBQU1DLEdBQU47QUFBQSxTQUFjRCxHQUFHLEdBQUdDLEdBQXBCO0FBQUEsQ0FEZ0MsQ0FBM0IsQyxDQUlQOzs7QUFDTyxJQUFNQyw4QkFBOEIsR0FBR2IsYUFBdkM7O0FBQ0EsSUFBTWMsOEJBQThCLEdBQUcsQ0FBdkM7O0FBQ0EsSUFBTUMsMEJBQTBCLEdBQUcsQ0FBbkM7O0FBQ0EsSUFBTUMsMEJBQTBCLEdBQUdkLFNBQW5DOztBQUNBLElBQU1lLDJCQUEyQixHQUFHLENBQXBDOztBQUNBLElBQU1DLDJCQUEyQixHQUFHLENBQXBDOztBQUVBLElBQU1DLHFCQUFxQixHQUFHO0FBQ25DQyxFQUFBQSxRQUFRLEVBQUVQLDhCQUR5QjtBQUVuQ1EsRUFBQUEsUUFBUSxFQUFFUCw4QkFGeUI7QUFHbkNRLEVBQUFBLElBQUksRUFBRVAsMEJBSDZCO0FBSW5DO0FBQ0FRLEVBQUFBLEtBQUssRUFBRVAsMEJBTDRCO0FBTW5DUSxFQUFBQSxLQUFLLEVBQUVQLDJCQU40QjtBQU9uQ1EsRUFBQUEsS0FBSyxFQUFFUDtBQVA0QixDQUE5Qjs7QUFVQSxJQUFNUSxlQUFlLEdBQUcsQ0FDN0JiLDhCQUQ2QixFQUU3QkMsOEJBRjZCLEVBRzdCQywwQkFINkIsRUFJN0JDLDBCQUo2QixFQUs3QkMsMkJBTDZCLEVBTTdCQywyQkFONkIsRUFPN0JSLE1BUDZCLENBT3RCLFVBQUNDLEdBQUQsRUFBTUMsR0FBTjtBQUFBLFNBQWNELEdBQUcsR0FBR0MsR0FBcEI7QUFBQSxDQVBzQixDQUF4QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFByaW1pdGl2ZXNcbmV4cG9ydCBjb25zdCBERUZBVUxUX01BWF9QQVJUSUNMRVMgPSAxMDAwMDtcbmV4cG9ydCBjb25zdCBWRUNUT1JfM19TSVpFID0gWyd4JywgJ3knLCAneiddLmxlbmd0aDtcbmV4cG9ydCBjb25zdCBSR0JBX1NJWkUgPSBbJ3InLCAnZycsICdiJywgJ2EnXS5sZW5ndGg7XG5leHBvcnQgY29uc3QgRkxPQVRfQllURV9TSVpFID0gNDtcblxuLy8gQnl0ZSBzaXplc1xuZXhwb3J0IGNvbnN0IFBPU0lUSU9OX0JZVEVfU0laRSA9IFZFQ1RPUl8zX1NJWkUgKiBGTE9BVF9CWVRFX1NJWkU7XG5leHBvcnQgY29uc3QgUk9UQVRJT05fQllURV9TSVpFID0gRkxPQVRfQllURV9TSVpFO1xuZXhwb3J0IGNvbnN0IFNJWkVfQllURV9TSVpFID0gRkxPQVRfQllURV9TSVpFO1xuZXhwb3J0IGNvbnN0IFJHQkFfQllURV9TSVpFID0gUkdCQV9TSVpFICogRkxPQVRfQllURV9TSVpFO1xuZXhwb3J0IGNvbnN0IEFMTF9CWVRFX1NJWkVTID0gW1xuICBQT1NJVElPTl9CWVRFX1NJWkUsXG4gIFJPVEFUSU9OX0JZVEVfU0laRSxcbiAgU0laRV9CWVRFX1NJWkUsXG4gIFJHQkFfQllURV9TSVpFLFxuXTtcbmV4cG9ydCBjb25zdCBQQVJUSUNMRV9CWVRFX1NJWkUgPSBBTExfQllURV9TSVpFUy5yZWR1Y2UoXG4gIChjdXIsIGFjYykgPT4gY3VyICsgYWNjXG4pO1xuXG4vLyBBdHRyaWJ1dGVzXG5leHBvcnQgY29uc3QgUE9TSVRJT05fQVRUUklCVVRFX0JVRkZFUl9TSVpFID0gVkVDVE9SXzNfU0laRTtcbmV4cG9ydCBjb25zdCBST1RBVElPTl9BVFRSSUJVVEVfQlVGRkVSX1NJWkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNJWkVfQVRUUklCVVRFX0JVRkZFUl9TSVpFID0gMTtcbmV4cG9ydCBjb25zdCBSR0JBX0FUVFJJQlVURV9CVUZGRVJfU0laRSA9IFJHQkFfU0laRTtcbmV4cG9ydCBjb25zdCBBTFBIQV9BVFRSSUJVVEVfQlVGRkVSX1NJWkUgPSAxO1xuZXhwb3J0IGNvbnN0IFRFWElEX0FUVFJJQlVURV9CVUZGRVJfU0laRSA9IDI7XG5cbmV4cG9ydCBjb25zdCBBVFRSSUJVVEVfVE9fU0laRV9NQVAgPSB7XG4gIHBvc2l0aW9uOiBQT1NJVElPTl9BVFRSSUJVVEVfQlVGRkVSX1NJWkUsXG4gIHJvdGF0aW9uOiBST1RBVElPTl9BVFRSSUJVVEVfQlVGRkVSX1NJWkUsXG4gIHNpemU6IFNJWkVfQVRUUklCVVRFX0JVRkZFUl9TSVpFLFxuICAvLyBUSFJFRS5Db2xvciBkb2VzIG5vdCBjb250YWluIGFscGhhLCBzbyB3ZSB3aWxsIGhhdmUgc2VwYXJhdGUgYXR0cmlidXRlcyBmb3IgdGhlc2VcbiAgY29sb3I6IFJHQkFfQVRUUklCVVRFX0JVRkZFUl9TSVpFLFxuICBhbHBoYTogQUxQSEFfQVRUUklCVVRFX0JVRkZFUl9TSVpFLFxuICB0ZXhJRDogVEVYSURfQVRUUklCVVRFX0JVRkZFUl9TSVpFLFxufTtcblxuZXhwb3J0IGNvbnN0IFBBUlRJQ0xFX1NUUklERSA9IFtcbiAgUE9TSVRJT05fQVRUUklCVVRFX0JVRkZFUl9TSVpFLFxuICBST1RBVElPTl9BVFRSSUJVVEVfQlVGRkVSX1NJWkUsXG4gIFNJWkVfQVRUUklCVVRFX0JVRkZFUl9TSVpFLFxuICBSR0JBX0FUVFJJQlVURV9CVUZGRVJfU0laRSxcbiAgQUxQSEFfQVRUUklCVVRFX0JVRkZFUl9TSVpFLFxuICBURVhJRF9BVFRSSUJVVEVfQlVGRkVSX1NJWkUsXG5dLnJlZHVjZSgoY3VyLCBhY2MpID0+IGN1ciArIGFjYyk7XG4iXX0=
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports["default"] = void 0;
|
|
9
|
-
|
|
10
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
|
-
var _constants = require("./constants");
|
|
15
|
-
|
|
16
|
-
var THREE;
|
|
17
|
-
/**
|
|
18
|
-
* Creates and provides performant buffers for mapping particle properties to geometry vertices.
|
|
19
|
-
*
|
|
20
|
-
* @author thrax <manthrax@gmail.com>
|
|
21
|
-
* @author rohan-deshpande <rohan@creativelifeform.com>
|
|
22
|
-
* @see https://threejs.org/examples/?q=buffe#webgl_buffergeometry_points_interleaved
|
|
23
|
-
* @see https://threejs.org/examples/?q=points#webgl_custom_attributes_points
|
|
24
|
-
*/
|
|
25
|
-
|
|
26
|
-
var ParticleBuffer = /*#__PURE__*/function () {
|
|
27
|
-
function ParticleBuffer() {
|
|
28
|
-
var maxParticles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _constants.DEFAULT_MAX_PARTICLES;
|
|
29
|
-
var three = arguments.length > 1 ? arguments[1] : undefined;
|
|
30
|
-
(0, _classCallCheck2["default"])(this, ParticleBuffer);
|
|
31
|
-
THREE = three;
|
|
32
|
-
this.maxParticles = maxParticles;
|
|
33
|
-
this.createInterleavedBuffer().createBufferGeometry();
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Creates the interleaved buffer that will be used to write data to the GPU.
|
|
37
|
-
*
|
|
38
|
-
* @return {ParticleBuffer}
|
|
39
|
-
*/
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
(0, _createClass2["default"])(ParticleBuffer, [{
|
|
43
|
-
key: "createInterleavedBuffer",
|
|
44
|
-
value: function createInterleavedBuffer() {
|
|
45
|
-
var arrayBuffer = new ArrayBuffer(this.maxParticles * _constants.PARTICLE_BYTE_SIZE);
|
|
46
|
-
this.interleavedBuffer = new THREE.InterleavedBuffer(new Float32Array(arrayBuffer), _constants.PARTICLE_BYTE_SIZE); // this.interleavedBuffer.usage = THREE.DynamicDrawUsage;
|
|
47
|
-
|
|
48
|
-
return this;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Sets the geometry's buffer attributes.
|
|
52
|
-
*
|
|
53
|
-
* NOTE Each attribute needs to be set at the right index in the buffer right after the previous
|
|
54
|
-
* attribute that occupies a set amount of size in the buffer.
|
|
55
|
-
*
|
|
56
|
-
* @return {ParticleBufferGeometry}
|
|
57
|
-
*/
|
|
58
|
-
|
|
59
|
-
}, {
|
|
60
|
-
key: "createBufferGeometry",
|
|
61
|
-
value: function createBufferGeometry() {
|
|
62
|
-
this.geometry = new THREE.BufferGeometry();
|
|
63
|
-
var interleavedBuffer = this.interleavedBuffer,
|
|
64
|
-
geometry = this.geometry;
|
|
65
|
-
Object.keys(_constants.ATTRIBUTE_TO_SIZE_MAP).reduce(function (offset, attribute) {
|
|
66
|
-
var size = _constants.ATTRIBUTE_TO_SIZE_MAP[attribute];
|
|
67
|
-
geometry.setAttribute(attribute, new THREE.InterleavedBufferAttribute(interleavedBuffer, size, offset));
|
|
68
|
-
return offset += size;
|
|
69
|
-
}, 0);
|
|
70
|
-
return this;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Gets the publicly accessible interleaved buffer.
|
|
74
|
-
*
|
|
75
|
-
* @return {THREE.InterleavedBuffer} buffers - The interleaved buffer
|
|
76
|
-
*/
|
|
77
|
-
|
|
78
|
-
}, {
|
|
79
|
-
key: "buffer",
|
|
80
|
-
get: function get() {
|
|
81
|
-
return this.interleavedBuffer;
|
|
82
|
-
}
|
|
83
|
-
}, {
|
|
84
|
-
key: "stride",
|
|
85
|
-
get: function get() {
|
|
86
|
-
return _constants.PARTICLE_BYTE_SIZE;
|
|
87
|
-
}
|
|
88
|
-
}]);
|
|
89
|
-
return ParticleBuffer;
|
|
90
|
-
}();
|
|
91
|
-
|
|
92
|
-
exports["default"] = ParticleBuffer;
|
|
93
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9jb21tb24vUGFydGljbGVCdWZmZXIvaW5kZXguanMiXSwibmFtZXMiOlsiVEhSRUUiLCJQYXJ0aWNsZUJ1ZmZlciIsIm1heFBhcnRpY2xlcyIsIkRFRkFVTFRfTUFYX1BBUlRJQ0xFUyIsInRocmVlIiwiY3JlYXRlSW50ZXJsZWF2ZWRCdWZmZXIiLCJjcmVhdGVCdWZmZXJHZW9tZXRyeSIsImFycmF5QnVmZmVyIiwiQXJyYXlCdWZmZXIiLCJQQVJUSUNMRV9CWVRFX1NJWkUiLCJpbnRlcmxlYXZlZEJ1ZmZlciIsIkludGVybGVhdmVkQnVmZmVyIiwiRmxvYXQzMkFycmF5IiwiZ2VvbWV0cnkiLCJCdWZmZXJHZW9tZXRyeSIsIk9iamVjdCIsImtleXMiLCJBVFRSSUJVVEVfVE9fU0laRV9NQVAiLCJyZWR1Y2UiLCJvZmZzZXQiLCJhdHRyaWJ1dGUiLCJzaXplIiwic2V0QXR0cmlidXRlIiwiSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFNQSxJQUFJQSxLQUFKO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7SUFDcUJDLGM7QUFDbkIsNEJBQXlEO0FBQUEsUUFBN0NDLFlBQTZDLHVFQUE5QkMsZ0NBQThCO0FBQUEsUUFBUEMsS0FBTztBQUFBO0FBQ3ZESixJQUFBQSxLQUFLLEdBQUdJLEtBQVI7QUFDQSxTQUFLRixZQUFMLEdBQW9CQSxZQUFwQjtBQUVBLFNBQUtHLHVCQUFMLEdBQStCQyxvQkFBL0I7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7Ozs7OzhDQUM0QjtBQUN4QixVQUFNQyxXQUFXLEdBQUcsSUFBSUMsV0FBSixDQUFnQixLQUFLTixZQUFMLEdBQW9CTyw2QkFBcEMsQ0FBcEI7QUFFQSxXQUFLQyxpQkFBTCxHQUF5QixJQUFJVixLQUFLLENBQUNXLGlCQUFWLENBQ3ZCLElBQUlDLFlBQUosQ0FBaUJMLFdBQWpCLENBRHVCLEVBRXZCRSw2QkFGdUIsQ0FBekIsQ0FId0IsQ0FPeEI7O0FBRUEsYUFBTyxJQUFQO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OzJDQUN5QjtBQUNyQixXQUFLSSxRQUFMLEdBQWdCLElBQUliLEtBQUssQ0FBQ2MsY0FBVixFQUFoQjtBQURxQixVQUdiSixpQkFIYSxHQUdtQixJQUhuQixDQUdiQSxpQkFIYTtBQUFBLFVBR01HLFFBSE4sR0FHbUIsSUFIbkIsQ0FHTUEsUUFITjtBQUtyQkUsTUFBQUEsTUFBTSxDQUFDQyxJQUFQLENBQVlDLGdDQUFaLEVBQW1DQyxNQUFuQyxDQUEwQyxVQUFDQyxNQUFELEVBQVNDLFNBQVQsRUFBdUI7QUFDL0QsWUFBTUMsSUFBSSxHQUFHSixpQ0FBc0JHLFNBQXRCLENBQWI7QUFFQVAsUUFBQUEsUUFBUSxDQUFDUyxZQUFULENBQ0VGLFNBREYsRUFFRSxJQUFJcEIsS0FBSyxDQUFDdUIsMEJBQVYsQ0FBcUNiLGlCQUFyQyxFQUF3RFcsSUFBeEQsRUFBOERGLE1BQTlELENBRkY7QUFLQSxlQUFRQSxNQUFNLElBQUlFLElBQWxCO0FBQ0QsT0FURCxFQVNHLENBVEg7QUFXQSxhQUFPLElBQVA7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7Ozs7d0JBQ2U7QUFDWCxhQUFPLEtBQUtYLGlCQUFaO0FBQ0Q7Ozt3QkFFWTtBQUNYLGFBQU9ELDZCQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBVFRSSUJVVEVfVE9fU0laRV9NQVAsXG4gIERFRkFVTFRfTUFYX1BBUlRJQ0xFUyxcbiAgUEFSVElDTEVfQllURV9TSVpFLFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmxldCBUSFJFRTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuZCBwcm92aWRlcyBwZXJmb3JtYW50IGJ1ZmZlcnMgZm9yIG1hcHBpbmcgcGFydGljbGUgcHJvcGVydGllcyB0byBnZW9tZXRyeSB2ZXJ0aWNlcy5cbiAqXG4gKiBAYXV0aG9yIHRocmF4IDxtYW50aHJheEBnbWFpbC5jb20+XG4gKiBAYXV0aG9yIHJvaGFuLWRlc2hwYW5kZSA8cm9oYW5AY3JlYXRpdmVsaWZlZm9ybS5jb20+XG4gKiBAc2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZXhhbXBsZXMvP3E9YnVmZmUjd2ViZ2xfYnVmZmVyZ2VvbWV0cnlfcG9pbnRzX2ludGVybGVhdmVkXG4gKiBAc2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZXhhbXBsZXMvP3E9cG9pbnRzI3dlYmdsX2N1c3RvbV9hdHRyaWJ1dGVzX3BvaW50c1xuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJ0aWNsZUJ1ZmZlciB7XG4gIGNvbnN0cnVjdG9yKG1heFBhcnRpY2xlcyA9IERFRkFVTFRfTUFYX1BBUlRJQ0xFUywgdGhyZWUpIHtcbiAgICBUSFJFRSA9IHRocmVlO1xuICAgIHRoaXMubWF4UGFydGljbGVzID0gbWF4UGFydGljbGVzO1xuXG4gICAgdGhpcy5jcmVhdGVJbnRlcmxlYXZlZEJ1ZmZlcigpLmNyZWF0ZUJ1ZmZlckdlb21ldHJ5KCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgaW50ZXJsZWF2ZWQgYnVmZmVyIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHdyaXRlIGRhdGEgdG8gdGhlIEdQVS5cbiAgICpcbiAgICogQHJldHVybiB7UGFydGljbGVCdWZmZXJ9XG4gICAqL1xuICBjcmVhdGVJbnRlcmxlYXZlZEJ1ZmZlcigpIHtcbiAgICBjb25zdCBhcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcih0aGlzLm1heFBhcnRpY2xlcyAqIFBBUlRJQ0xFX0JZVEVfU0laRSk7XG5cbiAgICB0aGlzLmludGVybGVhdmVkQnVmZmVyID0gbmV3IFRIUkVFLkludGVybGVhdmVkQnVmZmVyKFxuICAgICAgbmV3IEZsb2F0MzJBcnJheShhcnJheUJ1ZmZlciksXG4gICAgICBQQVJUSUNMRV9CWVRFX1NJWkVcbiAgICApO1xuICAgIC8vIHRoaXMuaW50ZXJsZWF2ZWRCdWZmZXIudXNhZ2UgPSBUSFJFRS5EeW5hbWljRHJhd1VzYWdlO1xuICAgIFxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGdlb21ldHJ5J3MgYnVmZmVyIGF0dHJpYnV0ZXMuXG4gICAqXG4gICAqIE5PVEUgRWFjaCBhdHRyaWJ1dGUgbmVlZHMgdG8gYmUgc2V0IGF0IHRoZSByaWdodCBpbmRleCBpbiB0aGUgYnVmZmVyIHJpZ2h0IGFmdGVyIHRoZSBwcmV2aW91c1xuICAgKiBhdHRyaWJ1dGUgdGhhdCBvY2N1cGllcyBhIHNldCBhbW91bnQgb2Ygc2l6ZSBpbiB0aGUgYnVmZmVyLlxuICAgKlxuICAgKiBAcmV0dXJuIHtQYXJ0aWNsZUJ1ZmZlckdlb21ldHJ5fVxuICAgKi9cbiAgY3JlYXRlQnVmZmVyR2VvbWV0cnkoKSB7XG4gICAgdGhpcy5nZW9tZXRyeSA9IG5ldyBUSFJFRS5CdWZmZXJHZW9tZXRyeSgpO1xuXG4gICAgY29uc3QgeyBpbnRlcmxlYXZlZEJ1ZmZlciwgZ2VvbWV0cnkgfSA9IHRoaXM7XG5cbiAgICBPYmplY3Qua2V5cyhBVFRSSUJVVEVfVE9fU0laRV9NQVApLnJlZHVjZSgob2Zmc2V0LCBhdHRyaWJ1dGUpID0+IHtcbiAgICAgIGNvbnN0IHNpemUgPSBBVFRSSUJVVEVfVE9fU0laRV9NQVBbYXR0cmlidXRlXTtcblxuICAgICAgZ2VvbWV0cnkuc2V0QXR0cmlidXRlKFxuICAgICAgICBhdHRyaWJ1dGUsXG4gICAgICAgIG5ldyBUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZShpbnRlcmxlYXZlZEJ1ZmZlciwgc2l6ZSwgb2Zmc2V0KVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIChvZmZzZXQgKz0gc2l6ZSk7XG4gICAgfSwgMCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBwdWJsaWNseSBhY2Nlc3NpYmxlIGludGVybGVhdmVkIGJ1ZmZlci5cbiAgICpcbiAgICogQHJldHVybiB7VEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXJ9IGJ1ZmZlcnMgLSBUaGUgaW50ZXJsZWF2ZWQgYnVmZmVyXG4gICAqL1xuICBnZXQgYnVmZmVyKCkge1xuICAgIHJldHVybiB0aGlzLmludGVybGVhdmVkQnVmZmVyO1xuICB9XG5cbiAgZ2V0IHN0cmlkZSgpIHtcbiAgICByZXR1cm4gUEFSVElDTEVfQllURV9TSVpFO1xuICB9XG59XG4iXX0=
|