three-nebula 10.0.3 → 11.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/.claude/rules/no-coauthor.md +4 -0
  2. package/CHANGELOG.md +33 -0
  3. package/dist/three-nebula.cjs +109 -0
  4. package/dist/three-nebula.cjs.map +1 -0
  5. package/dist/three-nebula.mjs +2968 -0
  6. package/dist/three-nebula.mjs.map +1 -0
  7. package/dist/three-nebula.umd.js +109 -0
  8. package/dist/three-nebula.umd.js.map +1 -0
  9. package/package.json +32 -56
  10. package/specs/01-emitter-hierarchy.md +200 -0
  11. package/specs/02-determinism-scrubbing.md +188 -0
  12. package/specs/03-sound-renderer.md +183 -0
  13. package/specs/04-schema-versioning.md +140 -0
  14. package/specs/05-content-addressed-assets.md +288 -0
  15. package/specs/README.md +80 -0
  16. package/build/cjs/behaviour/Alpha.js +0 -189
  17. package/build/cjs/behaviour/Attraction.js +0 -189
  18. package/build/cjs/behaviour/Behaviour.js +0 -253
  19. package/build/cjs/behaviour/Collision.js +0 -146
  20. package/build/cjs/behaviour/Color.js +0 -148
  21. package/build/cjs/behaviour/CrossZone.js +0 -141
  22. package/build/cjs/behaviour/Force.js +0 -126
  23. package/build/cjs/behaviour/Gravity.js +0 -78
  24. package/build/cjs/behaviour/RandomDrift.js +0 -153
  25. package/build/cjs/behaviour/Repulsion.js +0 -123
  26. package/build/cjs/behaviour/Rotate.js +0 -265
  27. package/build/cjs/behaviour/Scale.js +0 -177
  28. package/build/cjs/behaviour/Spring.js +0 -133
  29. package/build/cjs/behaviour/constants.js +0 -28
  30. package/build/cjs/behaviour/index.js +0 -112
  31. package/build/cjs/behaviour/types.js +0 -33
  32. package/build/cjs/constants/index.js +0 -61
  33. package/build/cjs/core/Particle.js +0 -390
  34. package/build/cjs/core/Pool.js +0 -203
  35. package/build/cjs/core/System.js +0 -366
  36. package/build/cjs/core/constants.js +0 -163
  37. package/build/cjs/core/fromJSON.js +0 -128
  38. package/build/cjs/core/fromJSONAsync.js +0 -239
  39. package/build/cjs/core/index.js +0 -32
  40. package/build/cjs/core/three/Euler.js +0 -233
  41. package/build/cjs/core/three/Math.js +0 -91
  42. package/build/cjs/core/three/Matrix4.js +0 -745
  43. package/build/cjs/core/three/Quaternion.js +0 -451
  44. package/build/cjs/core/three/Vector3.js +0 -464
  45. package/build/cjs/core/three/constants.js +0 -298
  46. package/build/cjs/core/three/index.js +0 -48
  47. package/build/cjs/core/types.js +0 -13
  48. package/build/cjs/debug/Debug.js +0 -209
  49. package/build/cjs/debug/constants.js +0 -19
  50. package/build/cjs/debug/index.js +0 -24
  51. package/build/cjs/debug/log.js +0 -38
  52. package/build/cjs/ease/index.js +0 -149
  53. package/build/cjs/emitter/Emitter.js +0 -791
  54. package/build/cjs/emitter/FollowEmitter.js +0 -146
  55. package/build/cjs/emitter/constants.js +0 -20
  56. package/build/cjs/emitter/index.js +0 -24
  57. package/build/cjs/emitter/types.js +0 -11
  58. package/build/cjs/events/EventDispatcher.js +0 -105
  59. package/build/cjs/events/constants.js +0 -23
  60. package/build/cjs/events/index.js +0 -27
  61. package/build/cjs/index.js +0 -151
  62. package/build/cjs/initializer/Body.js +0 -122
  63. package/build/cjs/initializer/BodySprite.js +0 -146
  64. package/build/cjs/initializer/Initializer.js +0 -109
  65. package/build/cjs/initializer/InitializerUtil.js +0 -54
  66. package/build/cjs/initializer/Life.js +0 -106
  67. package/build/cjs/initializer/Mass.js +0 -101
  68. package/build/cjs/initializer/Position.js +0 -152
  69. package/build/cjs/initializer/Radius.js +0 -118
  70. package/build/cjs/initializer/Rate.js +0 -150
  71. package/build/cjs/initializer/Texture.js +0 -139
  72. package/build/cjs/initializer/Velocity/PolarVelocity.js +0 -102
  73. package/build/cjs/initializer/Velocity/RadialVelocity.js +0 -111
  74. package/build/cjs/initializer/Velocity/VectorVelocity.js +0 -108
  75. package/build/cjs/initializer/Velocity/Velocity.js +0 -94
  76. package/build/cjs/initializer/Velocity/index.js +0 -32
  77. package/build/cjs/initializer/constants.js +0 -43
  78. package/build/cjs/initializer/index.js +0 -100
  79. package/build/cjs/initializer/types.js +0 -35
  80. package/build/cjs/math/ArraySpan.js +0 -103
  81. package/build/cjs/math/Box.js +0 -46
  82. package/build/cjs/math/ColorSpan.js +0 -113
  83. package/build/cjs/math/MathUtils.js +0 -57
  84. package/build/cjs/math/Polar3D.js +0 -115
  85. package/build/cjs/math/Span.js +0 -88
  86. package/build/cjs/math/Vector3D.js +0 -76
  87. package/build/cjs/math/constants.js +0 -35
  88. package/build/cjs/math/index.js +0 -122
  89. package/build/cjs/math/integration.js +0 -59
  90. package/build/cjs/math/types.js +0 -19
  91. package/build/cjs/renderer/BaseRenderer.js +0 -108
  92. package/build/cjs/renderer/CustomRenderer.js +0 -65
  93. package/build/cjs/renderer/GPURenderer/Desktop/index.js +0 -350
  94. package/build/cjs/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +0 -13
  95. package/build/cjs/renderer/GPURenderer/Desktop/shaders/index.js +0 -22
  96. package/build/cjs/renderer/GPURenderer/Desktop/shaders/vertexShader.js +0 -17
  97. package/build/cjs/renderer/GPURenderer/Mobile/index.js +0 -364
  98. package/build/cjs/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +0 -13
  99. package/build/cjs/renderer/GPURenderer/Mobile/shaders/index.js +0 -22
  100. package/build/cjs/renderer/GPURenderer/Mobile/shaders/vertexShader.js +0 -15
  101. package/build/cjs/renderer/GPURenderer/common/ParticleBuffer/constants.js +0 -53
  102. package/build/cjs/renderer/GPURenderer/common/ParticleBuffer/index.js +0 -93
  103. package/build/cjs/renderer/GPURenderer/common/TextureAtlas/constants.js +0 -9
  104. package/build/cjs/renderer/GPURenderer/common/TextureAtlas/index.js +0 -221
  105. package/build/cjs/renderer/GPURenderer/common/constants.js +0 -22
  106. package/build/cjs/renderer/GPURenderer/common/index.js +0 -38
  107. package/build/cjs/renderer/GPURenderer/common/shaders/constants.js +0 -9
  108. package/build/cjs/renderer/GPURenderer/common/stores/Target.js +0 -43
  109. package/build/cjs/renderer/GPURenderer/common/stores/UniqueList.js +0 -51
  110. package/build/cjs/renderer/GPURenderer/common/stores/index.js +0 -22
  111. package/build/cjs/renderer/GPURenderer/index.js +0 -97
  112. package/build/cjs/renderer/MeshRenderer.js +0 -136
  113. package/build/cjs/renderer/SpriteRenderer.js +0 -63
  114. package/build/cjs/renderer/index.js +0 -40
  115. package/build/cjs/renderer/types.js +0 -21
  116. package/build/cjs/utils/ColorUtil.js +0 -39
  117. package/build/cjs/utils/PUID.js +0 -26
  118. package/build/cjs/utils/THREEUtil.js +0 -40
  119. package/build/cjs/utils/Util.js +0 -69
  120. package/build/cjs/utils/index.js +0 -61
  121. package/build/cjs/utils/uid.js +0 -14
  122. package/build/cjs/zone/BoxZone.js +0 -178
  123. package/build/cjs/zone/LineZone.js +0 -101
  124. package/build/cjs/zone/MeshZone.js +0 -101
  125. package/build/cjs/zone/PointZone.js +0 -99
  126. package/build/cjs/zone/ScreenZone.js +0 -164
  127. package/build/cjs/zone/SphereZone.js +0 -155
  128. package/build/cjs/zone/Zone.js +0 -172
  129. package/build/cjs/zone/index.js +0 -56
  130. package/build/cjs/zone/types.js +0 -21
  131. package/build/esm/behaviour/Alpha.js +0 -134
  132. package/build/esm/behaviour/Attraction.js +0 -135
  133. package/build/esm/behaviour/Behaviour.js +0 -215
  134. package/build/esm/behaviour/Collision.js +0 -100
  135. package/build/esm/behaviour/Color.js +0 -101
  136. package/build/esm/behaviour/CrossZone.js +0 -82
  137. package/build/esm/behaviour/Force.js +0 -83
  138. package/build/esm/behaviour/Gravity.js +0 -40
  139. package/build/esm/behaviour/RandomDrift.js +0 -97
  140. package/build/esm/behaviour/Repulsion.js +0 -81
  141. package/build/esm/behaviour/Rotate.js +0 -214
  142. package/build/esm/behaviour/Scale.js +0 -131
  143. package/build/esm/behaviour/Spring.js +0 -90
  144. package/build/esm/behaviour/constants.js +0 -11
  145. package/build/esm/behaviour/index.js +0 -14
  146. package/build/esm/behaviour/types.js +0 -14
  147. package/build/esm/constants/index.js +0 -42
  148. package/build/esm/core/Particle.js +0 -357
  149. package/build/esm/core/Pool.js +0 -161
  150. package/build/esm/core/System.js +0 -320
  151. package/build/esm/core/constants.js +0 -127
  152. package/build/esm/core/fromJSON.js +0 -107
  153. package/build/esm/core/fromJSONAsync.js +0 -210
  154. package/build/esm/core/index.js +0 -4
  155. package/build/esm/core/three/Euler.js +0 -224
  156. package/build/esm/core/three/Math.js +0 -84
  157. package/build/esm/core/three/Matrix4.js +0 -739
  158. package/build/esm/core/three/Quaternion.js +0 -445
  159. package/build/esm/core/three/Vector3.js +0 -457
  160. package/build/esm/core/three/constants.js +0 -148
  161. package/build/esm/core/three/index.js +0 -5
  162. package/build/esm/core/types.js +0 -4
  163. package/build/esm/debug/Debug.js +0 -195
  164. package/build/esm/debug/constants.js +0 -7
  165. package/build/esm/debug/index.js +0 -3
  166. package/build/esm/debug/log.js +0 -31
  167. package/build/esm/ease/index.js +0 -113
  168. package/build/esm/emitter/Emitter.js +0 -701
  169. package/build/esm/emitter/FollowEmitter.js +0 -97
  170. package/build/esm/emitter/constants.js +0 -7
  171. package/build/esm/emitter/index.js +0 -3
  172. package/build/esm/emitter/types.js +0 -3
  173. package/build/esm/events/EventDispatcher.js +0 -82
  174. package/build/esm/events/constants.js +0 -9
  175. package/build/esm/events/index.js +0 -4
  176. package/build/esm/index.js +0 -13
  177. package/build/esm/initializer/Body.js +0 -83
  178. package/build/esm/initializer/BodySprite.js +0 -108
  179. package/build/esm/initializer/Initializer.js +0 -84
  180. package/build/esm/initializer/InitializerUtil.js +0 -48
  181. package/build/esm/initializer/Life.js +0 -66
  182. package/build/esm/initializer/Mass.js +0 -60
  183. package/build/esm/initializer/Position.js +0 -98
  184. package/build/esm/initializer/Radius.js +0 -75
  185. package/build/esm/initializer/Rate.js +0 -107
  186. package/build/esm/initializer/Texture.js +0 -101
  187. package/build/esm/initializer/Velocity/PolarVelocity.js +0 -63
  188. package/build/esm/initializer/Velocity/RadialVelocity.js +0 -72
  189. package/build/esm/initializer/Velocity/VectorVelocity.js +0 -69
  190. package/build/esm/initializer/Velocity/Velocity.js +0 -52
  191. package/build/esm/initializer/Velocity/index.js +0 -4
  192. package/build/esm/initializer/constants.js +0 -26
  193. package/build/esm/initializer/index.js +0 -11
  194. package/build/esm/initializer/types.js +0 -15
  195. package/build/esm/math/ArraySpan.js +0 -62
  196. package/build/esm/math/Box.js +0 -25
  197. package/build/esm/math/ColorSpan.js +0 -71
  198. package/build/esm/math/MathUtils.js +0 -48
  199. package/build/esm/math/Polar3D.js +0 -81
  200. package/build/esm/math/Span.js +0 -63
  201. package/build/esm/math/Vector3D.js +0 -34
  202. package/build/esm/math/constants.js +0 -24
  203. package/build/esm/math/index.js +0 -10
  204. package/build/esm/math/integration.js +0 -47
  205. package/build/esm/math/types.js +0 -7
  206. package/build/esm/renderer/BaseRenderer.js +0 -78
  207. package/build/esm/renderer/CustomRenderer.js +0 -23
  208. package/build/esm/renderer/GPURenderer/Desktop/index.js +0 -331
  209. package/build/esm/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +0 -23
  210. package/build/esm/renderer/GPURenderer/Desktop/shaders/index.js +0 -3
  211. package/build/esm/renderer/GPURenderer/Desktop/shaders/vertexShader.js +0 -33
  212. package/build/esm/renderer/GPURenderer/Mobile/index.js +0 -349
  213. package/build/esm/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +0 -20
  214. package/build/esm/renderer/GPURenderer/Mobile/shaders/index.js +0 -3
  215. package/build/esm/renderer/GPURenderer/Mobile/shaders/vertexShader.js +0 -30
  216. package/build/esm/renderer/GPURenderer/common/ParticleBuffer/constants.js +0 -27
  217. package/build/esm/renderer/GPURenderer/common/ParticleBuffer/index.js +0 -70
  218. package/build/esm/renderer/GPURenderer/common/TextureAtlas/constants.js +0 -2
  219. package/build/esm/renderer/GPURenderer/common/TextureAtlas/index.js +0 -206
  220. package/build/esm/renderer/GPURenderer/common/constants.js +0 -13
  221. package/build/esm/renderer/GPURenderer/common/index.js +0 -4
  222. package/build/esm/renderer/GPURenderer/common/shaders/constants.js +0 -2
  223. package/build/esm/renderer/GPURenderer/common/stores/Target.js +0 -24
  224. package/build/esm/renderer/GPURenderer/common/stores/UniqueList.js +0 -29
  225. package/build/esm/renderer/GPURenderer/common/stores/index.js +0 -3
  226. package/build/esm/renderer/GPURenderer/index.js +0 -57
  227. package/build/esm/renderer/MeshRenderer.js +0 -94
  228. package/build/esm/renderer/SpriteRenderer.js +0 -26
  229. package/build/esm/renderer/index.js +0 -5
  230. package/build/esm/renderer/types.js +0 -8
  231. package/build/esm/utils/ColorUtil.js +0 -32
  232. package/build/esm/utils/PUID.js +0 -19
  233. package/build/esm/utils/THREEUtil.js +0 -31
  234. package/build/esm/utils/Util.js +0 -60
  235. package/build/esm/utils/index.js +0 -13
  236. package/build/esm/utils/uid.js +0 -3
  237. package/build/esm/zone/BoxZone.js +0 -133
  238. package/build/esm/zone/LineZone.js +0 -61
  239. package/build/esm/zone/MeshZone.js +0 -60
  240. package/build/esm/zone/PointZone.js +0 -59
  241. package/build/esm/zone/ScreenZone.js +0 -116
  242. package/build/esm/zone/SphereZone.js +0 -113
  243. package/build/esm/zone/Zone.js +0 -141
  244. package/build/esm/zone/index.js +0 -7
  245. package/build/esm/zone/types.js +0 -8
  246. package/build/three-nebula.js +0 -2
  247. package/build/three-nebula.js.map +0 -1
@@ -1,364 +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
- scale = particle.scale,
186
- radius = particle.radius,
187
- color = particle.color,
188
- alpha = particle.alpha,
189
- body = particle.body,
190
- id = particle.id;
191
- var r = color.r,
192
- g = color.g,
193
- b = color.b;
194
- particle.target.position.copy(position);
195
- particle.target.size = scale * radius;
196
- particle.target.color.setRGB(r, g, b);
197
- particle.target.alpha = alpha;
198
- particle.target.index = this.uniqueList.find(id);
199
-
200
- if (body && body instanceof THREE.Sprite) {
201
- var map = body.material.map;
202
- particle.target.texture = map;
203
- particle.target.textureIndex = this.getTextureID(map, this.shouldDebugTextureAtlas);
204
- }
205
-
206
- return this;
207
- }
208
- /**
209
- * Entry point for mapping particle properties to buffer geometry points.
210
- *
211
- * @param {Particle} particle - The particle containing the properties to map
212
- * @return {GPURenderer}
213
- */
214
-
215
- }, {
216
- key: "mapParticleTargetPropsToPoint",
217
- value: function mapParticleTargetPropsToPoint(particle) {
218
- this.updatePointPosition(particle).updatePointSize(particle).updatePointColor(particle).updatePointAlpha(particle).updatePointTextureIndex(particle);
219
- return this;
220
- }
221
- /**
222
- * Updates the point's position according to the particle's target position.
223
- *
224
- * @param {Particle} particle - The particle containing the target position.
225
- * @return {GPURenderer}
226
- */
227
-
228
- }, {
229
- key: "updatePointPosition",
230
- value: function updatePointPosition(particle) {
231
- var attribute = 'position';
232
- var geometry = this.geometry,
233
- stride = this.stride,
234
- buffer = this.buffer;
235
- var target = particle.target;
236
- var offset = geometry.attributes[attribute].offset;
237
- buffer.array[target.index * stride + offset + 0] = target.position.x;
238
- buffer.array[target.index * stride + offset + 1] = target.position.y;
239
- buffer.array[target.index * stride + offset + 2] = target.position.z;
240
- return this;
241
- }
242
- /**
243
- * Updates the point's size relative to the particle's target scale and radius.
244
- *
245
- * @param {Particle} particle - The particle containing the target scale.
246
- * @return {GPURenderer}
247
- */
248
-
249
- }, {
250
- key: "updatePointSize",
251
- value: function updatePointSize(particle) {
252
- var attribute = 'size';
253
- var geometry = this.geometry,
254
- stride = this.stride,
255
- buffer = this.buffer;
256
- var target = particle.target;
257
- var offset = geometry.attributes[attribute].offset;
258
- buffer.array[target.index * stride + offset + 0] = target.size;
259
- return this;
260
- }
261
- /**
262
- * Updates the point's color attribute according with the particle's target color.
263
- *
264
- * @param {Particle} particle - The particle containing the target color and alpha.
265
- * @return {GPURenderer}
266
- */
267
-
268
- }, {
269
- key: "updatePointColor",
270
- value: function updatePointColor(particle) {
271
- var attribute = 'color';
272
- var geometry = this.geometry,
273
- stride = this.stride,
274
- buffer = this.buffer;
275
- var target = particle.target;
276
- var offset = geometry.attributes[attribute].offset;
277
- buffer.array[target.index * stride + offset + 0] = target.color.r;
278
- buffer.array[target.index * stride + offset + 1] = target.color.g;
279
- buffer.array[target.index * stride + offset + 2] = target.color.b;
280
- return this;
281
- }
282
- /**
283
- * Updates the point alpha attribute with the particle's target alpha.
284
- *
285
- * @param {Particle} particle - The particle containing the target alpha.
286
- * @return {GPURenderer}
287
- */
288
-
289
- }, {
290
- key: "updatePointAlpha",
291
- value: function updatePointAlpha(particle) {
292
- var attribute = 'alpha';
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.alpha;
299
- return this;
300
- }
301
- /**
302
- * Updates the point texture attribute with the particle's target texture.
303
- *
304
- * @param {Particle} particle - The particle containing the target texture.
305
- * @return {GPURenderer}
306
- */
307
-
308
- }, {
309
- key: "updatePointTextureIndex",
310
- value: function updatePointTextureIndex(particle) {
311
- var attribute = 'texID';
312
- var geometry = this.geometry,
313
- stride = this.stride,
314
- buffer = this.buffer;
315
- var target = particle.target;
316
- var offset = geometry.attributes[attribute].offset;
317
- var id = target.index * stride + offset + 0; // eslint-disable-next-line
318
-
319
- if (false) {
320
- buffer.array[id] = target.textureIndex;
321
- } else {
322
- var ti = target.textureIndex * 4;
323
- var ta = this.textureAtlas;
324
- var ida = ta.indexData;
325
- var nx = ida[ti++];
326
- var ny = ida[ti++];
327
- var px = ida[ti++];
328
- var py = ida[ti++];
329
- buffer.array[id] = (nx * ta.atlasTexture.image.width | 0) + px;
330
- buffer.array[id + 1] = (ny * ta.atlasTexture.image.height | 0) + py;
331
- }
332
-
333
- return this;
334
- }
335
- }, {
336
- key: "getTextureID",
337
- value: function getTextureID(texture, debug) {
338
- if (texture.textureIndex === undefined) {
339
- if (!this.textureAtlas) {
340
- this.textureAtlas = new _common.TextureAtlas(this, debug);
341
- }
342
-
343
- this.textureAtlas.addTexture(texture);
344
- }
345
-
346
- return texture.textureIndex;
347
- }
348
- }, {
349
- key: "destroy",
350
- value: function destroy() {
351
- var container = this.container,
352
- points = this.points,
353
- textureAtlas = this.textureAtlas,
354
- uniqueList = this.uniqueList;
355
- container.remove(points);
356
- uniqueList.destroy();
357
- textureAtlas && textureAtlas.destroy();
358
- }
359
- }]);
360
- return MobileGPURenderer;
361
- }(_BaseRenderer2["default"]);
362
-
363
- exports["default"] = MobileGPURenderer;
364
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9Nb2JpbGUvaW5kZXguanMiXSwibmFtZXMiOlsiVEhSRUUiLCJNb2JpbGVHUFVSZW5kZXJlciIsImNvbnRhaW5lciIsInRocmVlIiwib3B0aW9ucyIsIkRFRkFVTFRfUkVOREVSRVJfT1BUSU9OUyIsIlJFTkRFUkVSX1RZUEVfR1BVX01PQklMRSIsInByb3BzIiwiY2FtZXJhIiwibWF4UGFydGljbGVzIiwiYmFzZUNvbG9yIiwiYmxlbmRpbmciLCJkZXB0aFRlc3QiLCJkZXB0aFdyaXRlIiwidHJhbnNwYXJlbnQiLCJzaG91bGREZWJ1Z1RleHR1cmVBdGxhcyIsInBhcnRpY2xlQnVmZmVyIiwiUGFydGljbGVCdWZmZXIiLCJtYXRlcmlhbCIsIlNoYWRlck1hdGVyaWFsIiwidW5pZm9ybXMiLCJ2YWx1ZSIsIkNvbG9yIiwidVRleHR1cmUiLCJGRmF0bGFzSW5kZXgiLCJhdGxhc0RpbSIsIlZlY3RvcjIiLCJ2ZXJ0ZXhTaGFkZXIiLCJmcmFnbWVudFNoYWRlciIsInRhcmdldFBvb2wiLCJQb29sIiwidW5pcXVlTGlzdCIsIlVuaXF1ZUxpc3QiLCJidWZmZXIiLCJzdHJpZGUiLCJnZW9tZXRyeSIsInBvaW50cyIsIlBvaW50cyIsImZydXN0dW1DdWxsZWQiLCJhZGQiLCJzeXN0ZW0iLCJuZWVkc1VwZGF0ZSIsInRleHR1cmVBdGxhcyIsInVwZGF0ZSIsInNldCIsImF0bGFzVGV4dHVyZSIsImltYWdlIiwid2lkdGgiLCJoZWlnaHQiLCJwYXJ0aWNsZSIsInRhcmdldCIsImdldCIsIlRhcmdldCIsImlkIiwidXBkYXRlVGFyZ2V0IiwibWFwUGFydGljbGVUYXJnZXRQcm9wc1RvUG9pbnQiLCJyZXNldCIsInBvc2l0aW9uIiwic2NhbGUiLCJyYWRpdXMiLCJjb2xvciIsImFscGhhIiwiYm9keSIsInIiLCJnIiwiYiIsImNvcHkiLCJzaXplIiwic2V0UkdCIiwiaW5kZXgiLCJmaW5kIiwiU3ByaXRlIiwibWFwIiwidGV4dHVyZSIsInRleHR1cmVJbmRleCIsImdldFRleHR1cmVJRCIsInVwZGF0ZVBvaW50UG9zaXRpb24iLCJ1cGRhdGVQb2ludFNpemUiLCJ1cGRhdGVQb2ludENvbG9yIiwidXBkYXRlUG9pbnRBbHBoYSIsInVwZGF0ZVBvaW50VGV4dHVyZUluZGV4IiwiYXR0cmlidXRlIiwib2Zmc2V0IiwiYXR0cmlidXRlcyIsImFycmF5IiwieCIsInkiLCJ6IiwidGkiLCJ0YSIsImlkYSIsImluZGV4RGF0YSIsIm54IiwibnkiLCJweCIsInB5IiwiZGVidWciLCJ1bmRlZmluZWQiLCJUZXh0dXJlQXRsYXMiLCJhZGRUZXh0dXJlIiwicmVtb3ZlIiwiZGVzdHJveSIsIkJhc2VSZW5kZXJlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBLElBQUlBLEtBQUo7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0lBQ3FCQyxpQjs7Ozs7QUFDbkIsNkJBQVlDLFNBQVosRUFBdUJDLEtBQXZCLEVBQWtFO0FBQUE7O0FBQUEsUUFBcENDLE9BQW9DLHVFQUExQkMsbUNBQTBCO0FBQUE7QUFDaEUsOEJBQU1DLCtCQUFOO0FBRUFOLElBQUFBLEtBQUssR0FBRyxNQUFLRyxLQUFMLEdBQWFBLEtBQXJCOztBQUNBLFFBQU1JLEtBQUssbUNBQVFGLG1DQUFSLEdBQXFDRCxPQUFyQyxDQUFYOztBQUpnRSxRQU05REksTUFOOEQsR0FjNURELEtBZDRELENBTTlEQyxNQU44RDtBQUFBLFFBTzlEQyxZQVA4RCxHQWM1REYsS0FkNEQsQ0FPOURFLFlBUDhEO0FBQUEsUUFROURDLFNBUjhELEdBYzVESCxLQWQ0RCxDQVE5REcsU0FSOEQ7QUFBQSxRQVM5REMsUUFUOEQsR0FjNURKLEtBZDRELENBUzlESSxRQVQ4RDtBQUFBLFFBVTlEQyxTQVY4RCxHQWM1REwsS0FkNEQsQ0FVOURLLFNBVjhEO0FBQUEs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VixFQUF3QjtBQUN0QixlQUFLQSxZQUFMLEdBQW9CLElBQUl3RCxvQkFBSixDQUFpQixJQUFqQixFQUF1QkYsS0FBdkIsQ0FBcEI7QUFDRDs7QUFFRCxhQUFLdEQsWUFBTCxDQUFrQnlELFVBQWxCLENBQTZCMUIsT0FBN0I7QUFDRDs7QUFFRCxhQUFPQSxPQUFPLENBQUNDLFlBQWY7QUFDRDs7OzhCQUVTO0FBQUEsVUFDQXhFLFNBREEsR0FDZ0QsSUFEaEQsQ0FDQUEsU0FEQTtBQUFBLFVBQ1drQyxNQURYLEdBQ2dELElBRGhELENBQ1dBLE1BRFg7QUFBQSxVQUNtQk0sWUFEbkIsR0FDZ0QsSUFEaEQsQ0FDbUJBLFlBRG5CO0FBQUEsVUFDaUNYLFVBRGpDLEdBQ2dELElBRGhELENBQ2lDQSxVQURqQztBQUdSN0IsTUFBQUEsU0FBUyxDQUFDa0csTUFBVixDQUFpQmhFLE1BQWpCO0FBQ0FMLE1BQUFBLFVBQVUsQ0FBQ3NFLE9BQVg7QUFDQTNELE1BQUFBLFlBQVksSUFBSUEsWUFBWSxDQUFDMkQsT0FBYixFQUFoQjtBQUNEOzs7RUFsUjRDQyx5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnRpY2xlQnVmZmVyLCBUYXJnZXQsIFRleHR1cmVBdGxhcywgVW5pcXVlTGlzdCB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBmcmFnbWVudFNoYWRlciwgdmVydGV4U2hhZGVyIH0gZnJvbSAnLi9zaGFkZXJzJztcblxuaW1wb3J0IEJhc2VSZW5kZXJlciBmcm9tICcuLi8uLi9CYXNlUmVuZGVyZXInO1xuaW1wb3J0IHsgREVGQVVMVF9SRU5ERVJFUl9PUFRJT05TIH0gZnJvbSAnLi4vY29tbW9uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQb29sIH0gZnJvbSAnLi4vLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBSRU5ERVJFUl9UWVBFX0dQVV9NT0JJTEUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmxldCBUSFJFRTtcblxuLyoqXG4gKiBHUFVSZW5kZXJlciBmb3IgbW9iaWxlIGRldmljZXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBmbG9hdGluZyBwb2ludCB0ZXh0dXJlcy5cbiAqXG4gKiBAYXV0aG9yIHRocmF4IDxtYW50aHJheEBnbWFpbC5jb20+XG4gKiBAYXV0aG9yIHJvaGFuLWRlc2hwYW5kZSA8cm9oYW5AY3JlYXRpdmVsaWZlZm9ybS5jb20+XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vYmlsZUdQVVJlbmRlcmVyIGV4dGVuZHMgQmFzZVJlbmRlcmVyIHtcbiAgY29uc3RydWN0b3IoY29udGFpbmVyLCB0aHJlZSwgb3B0aW9ucyA9IERFRkFVTFRfUkVOREVSRVJfT1BUSU9OUykge1xuICAgIHN1cGVyKFJFTkRFUkVSX1RZUEVfR1BVX01PQklMRSk7XG5cbiAgICBUSFJFRSA9IHRoaXMudGhyZWUgPSB0aHJlZTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uREVGQVVMVF9SRU5ERVJFUl9PUFRJT05TLCAuLi5vcHRpb25zIH07XG4gICAgY29uc3Qge1xuICAgICAgY2FtZXJhLFxuICAgICAgbWF4UGFydGljbGVzLFxuICAgICAgYmFzZUNvbG9yLFxuICAgICAgYmxlbmRpbmcsXG4gICAgICBkZXB0aFRlc3QsXG4gICAgICBkZXB0aFdyaXRlLFxuICAgICAgdHJhbnNwYXJlbnQsXG4gICAgICBzaG91bGREZWJ1Z1RleHR1cmVBdGxhcyxcbiAgICB9ID0gcHJvcHM7XG4gICAgY29uc3QgcGFydGljbGVCdWZmZXIgPSBuZXcgUGFydGljbGVCdWZmZXIobWF4UGFydGljbGVzLCBUSFJFRSk7XG4gICAgY29uc3QgbWF0ZXJpYWwgPSBuZXcgVEhSRUUuU2hhZGVyTWF0ZXJpYWwoe1xuICAgICAgdW5pZm9ybXM6IHtcbiAgICAgICAgYmFzZUNvbG9yOiB7IHZhbHVlOiBuZXcgVEhSRUUuQ29sb3IoYmFzZUNvbG9yKSB9LFxuICAgICAgICB1VGV4dHVyZTogeyB2YWx1ZTogbnVsbCB9LFxuICAgICAgICBGRmF0bGFzSW5kZXg6IHsgdmFsdWU6IG51bGwgfSxcbiAgICAgICAgYXRsYXNEaW06IHsgdmFsdWU6IG5ldyBUSFJFRS5WZWN0b3IyKCkgfSxcbiAgICAgIH0sXG4gICAgICB2ZXJ0ZXhTaGFkZXI6IHZlcnRleFNoYWRlcigpLFxuICAgICAgZnJhZ21lbnRTaGFkZXI6IGZyYWdtZW50U2hhZGVyKCksXG4gICAgICBibGVuZGluZzogVEhSRUVbYmxlbmRpbmddLFxuICAgICAgZGVwdGhUZXN0LFxuICAgICAgZGVwdGhXcml0ZSxcbiAgICAgIHRyYW5zcGFyZW50LFxuICAgIH0pO1xuXG4gICAgdGhpcy5jYW1lcmEgPSBjYW1lcmE7XG4gICAgdGhpcy50YXJnZXRQb29sID0gbmV3IFBvb2woKTtcbiAgICB0aGlzLnVuaXF1ZUxpc3QgPSBuZXcgVW5pcXVlTGlzdChtYXhQYXJ0aWNsZXMpO1xuICAgIHRoaXMucGFydGljbGVCdWZmZXIgPSBwYXJ0aWNsZUJ1ZmZlcjtcbiAgICB0aGlzLmJ1ZmZlciA9IHBhcnRpY2xlQnVmZmVyLmJ1ZmZlcjtcbiAgICB0aGlzLnN0cmlkZSA9IHBhcnRpY2xlQnVmZmVyLnN0cmlkZTtcbiAgICB0aGlzLmdlb21ldHJ5ID0gcGFydGljbGVCdWZmZXIuZ2VvbWV0cnk7XG4gICAgdGhpcy5tYXRlcmlhbCA9IG1hdGVyaWFsO1xuICAgIHRoaXMucG9pbnRzID0gbmV3IFRIUkVFLlBvaW50cyh0aGlzLmdlb21ldHJ5LCB0aGlzLm1hdGVyaWFsKTtcbiAgICB0aGlzLnBvaW50cy5mcnVzdHVtQ3VsbGVkID0gZmFsc2U7XG4gICAgdGhpcy5zaG91bGREZWJ1Z1RleHR1cmVBdGxhcyA9IHNob3VsZERlYnVnVGV4dHVyZUF0bGFzO1xuXG4gICAgY29udGFpbmVyLmFkZCh0aGlzLnBvaW50cyk7XG4gIH1cblxuICBvblN5c3RlbVVwZGF0ZShzeXN0ZW0pIHtcbiAgICBzdXBlci5vblN5c3RlbVVwZGF0ZShzeXN0ZW0pO1xuXG4gICAgdGhpcy5idWZmZXIubmVlZHNVcGRhdGUgPSB0cnVlO1xuXG4gICAgY29uc3QgeyB0ZXh0dXJlQXRsYXMgfSA9IHRoaXM7XG5cbiAgICBpZiAodGV4dHVyZUF0bGFzKSB7XG4gICAgICB0ZXh0dXJlQXRsYXMudXBkYXRlKCk7XG4gICAgICB0aGlzLm1hdGVyaWFsLnVuaWZvcm1zLmF0bGFzRGltLnZhbHVlLnNldChcbiAgICAgICAgdGV4dHVyZUF0bGFzLmF0bGFzVGV4dHVyZS5pbWFnZS53aWR0aCxcbiAgICAgICAgdGV4dHVyZUF0bGFzLmF0bGFzVGV4dHVyZS5pbWFnZS5oZWlnaHRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBvb2xzIHRoZSBwYXJ0aWNsZSB0YXJnZXQgaWYgaXQgZG9lcyBub3QgZXhpc3QuXG4gICAqIFVwZGF0ZXMgdGhlIHRhcmdldCBhbmQgbWFwcyBwYXJ0aWNsZSBwcm9wZXJ0aWVzIHRvIHRoZSBwb2ludC5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX1cbiAgICovXG4gIG9uUGFydGljbGVDcmVhdGVkKHBhcnRpY2xlKSB7XG4gICAgaWYgKCFwYXJ0aWNsZS50YXJnZXQpIHtcbiAgICAgIHBhcnRpY2xlLnRhcmdldCA9IHRoaXMudGFyZ2V0UG9vbC5nZXQoVGFyZ2V0LCBUSFJFRSk7XG4gICAgICB0aGlzLnVuaXF1ZUxpc3QuYWRkKHBhcnRpY2xlLmlkKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVRhcmdldChwYXJ0aWNsZSkubWFwUGFydGljbGVUYXJnZXRQcm9wc1RvUG9pbnQocGFydGljbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcHMgcGFydGljbGUgcHJvcGVydGllcyB0byB0aGUgcG9pbnQgaWYgdGhlIHBhcnRpY2xlIGhhcyBhIHRhcmdldC5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX1cbiAgICovXG4gIG9uUGFydGljbGVVcGRhdGUocGFydGljbGUpIHtcbiAgICBpZiAoIXBhcnRpY2xlLnRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlVGFyZ2V0KHBhcnRpY2xlKS5tYXBQYXJ0aWNsZVRhcmdldFByb3BzVG9Qb2ludChwYXJ0aWNsZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIGFuZCBjbGVhcnMgdGhlIHBhcnRpY2xlIHRhcmdldC5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX1cbiAgICovXG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7XG4gICAgaWYgKCFwYXJ0aWNsZS50YXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwYXJ0aWNsZS50YXJnZXQucmVzZXQoKTtcbiAgICB0aGlzLm1hcFBhcnRpY2xlVGFyZ2V0UHJvcHNUb1BvaW50KHBhcnRpY2xlKTtcblxuICAgIHBhcnRpY2xlLnRhcmdldCA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogTWFwcyBhbGwgbXV0YWJsZSBwcm9wZXJ0aWVzIGZyb20gdGhlIHBhcnRpY2xlIHRvIHRoZSB0YXJnZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9XG4gICAqIEByZXR1cm4ge0dQVVJlbmRlcmVyfVxuICAgKi9cbiAgdXBkYXRlVGFyZ2V0KHBhcnRpY2xlKSB7XG4gICAgY29uc3QgeyBwb3NpdGlvbiwgc2NhbGUsIHJhZGl1cywgY29sb3IsIGFscGhhLCBib2R5LCBpZCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyByLCBnLCBiIH0gPSBjb2xvcjtcblxuICAgIHBhcnRpY2xlLnRhcmdldC5wb3NpdGlvbi5jb3B5KHBvc2l0aW9uKTtcbiAgICBwYXJ0aWNsZS50YXJnZXQuc2l6ZSA9IHNjYWxlICogcmFkaXVzO1xuICAgIHBhcnRpY2xlLnRhcmdldC5jb2xvci5zZXRSR0IociwgZywgYik7XG4gICAgcGFydGljbGUudGFyZ2V0LmFscGhhID0gYWxwaGE7XG4gICAgcGFydGljbGUudGFyZ2V0LmluZGV4ID0gdGhpcy51bmlxdWVMaXN0LmZpbmQoaWQpO1xuXG4gICAgaWYgKGJvZHkgJiYgYm9keSBpbnN0YW5jZW9mIFRIUkVFLlNwcml0ZSkge1xuICAgICAgY29uc3QgeyBtYXAgfSA9IGJvZHkubWF0ZXJpYWw7XG5cbiAgICAgIHBhcnRpY2xlLnRhcmdldC50ZXh0dXJlID0gbWFwO1xuICAgICAgcGFydGljbGUudGFyZ2V0LnRleHR1cmVJbmRleCA9IHRoaXMuZ2V0VGV4dHVyZUlEKFxuICAgICAgICBtYXAsXG4gICAgICAgIHRoaXMuc2hvdWxkRGVidWdUZXh0dXJlQXRsYXNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogRW50cnkgcG9pbnQgZm9yIG1hcHBpbmcgcGFydGljbGUgcHJvcGVydGllcyB0byBidWZmZXIgZ2VvbWV0cnkgcG9pbnRzLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSBjb250YWluaW5nIHRoZSBwcm9wZXJ0aWVzIHRvIG1hcFxuICAgKiBAcmV0dXJuIHtHUFVSZW5kZXJlcn1cbiAgICovXG4gIG1hcFBhcnRpY2xlVGFyZ2V0UHJvcHNUb1BvaW50KHBhcnRpY2xlKSB7XG4gICAgdGhpcy51cGRhdGVQb2ludFBvc2l0aW9uKHBhcnRpY2xlKVxuICAgICAgLnVwZGF0ZVBvaW50U2l6ZShwYXJ0aWNsZSlcbiAgICAgIC51cGRhdGVQb2ludENvbG9yKHBhcnRpY2xlKVxuICAgICAgLnVwZGF0ZVBvaW50QWxwaGEocGFydGljbGUpXG4gICAgICAudXBkYXRlUG9pbnRUZXh0dXJlSW5kZXgocGFydGljbGUpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQncyBwb3NpdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHBhcnRpY2xlJ3MgdGFyZ2V0IHBvc2l0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSBjb250YWluaW5nIHRoZSB0YXJnZXQgcG9zaXRpb24uXG4gICAqIEByZXR1cm4ge0dQVVJlbmRlcmVyfVxuICAgKi9cbiAgdXBkYXRlUG9pbnRQb3NpdGlvbihwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZSA9ICdwb3NpdGlvbic7XG4gICAgY29uc3QgeyBnZW9tZXRyeSwgc3RyaWRlLCBidWZmZXIgfSA9IHRoaXM7XG4gICAgY29uc3QgeyB0YXJnZXQgfSA9IHBhcnRpY2xlO1xuICAgIGNvbnN0IHsgb2Zmc2V0IH0gPSBnZW9tZXRyeS5hdHRyaWJ1dGVzW2F0dHJpYnV0ZV07XG5cbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMF0gPSB0YXJnZXQucG9zaXRpb24ueDtcbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMV0gPSB0YXJnZXQucG9zaXRpb24ueTtcbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMl0gPSB0YXJnZXQucG9zaXRpb24uejtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHBvaW50J3Mgc2l6ZSByZWxhdGl2ZSB0byB0aGUgcGFydGljbGUncyB0YXJnZXQgc2NhbGUgYW5kIHJhZGl1cy5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IHNjYWxlLlxuICAgKiBAcmV0dXJuIHtHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVBvaW50U2l6ZShwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZSA9ICdzaXplJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcblxuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAwXSA9IHRhcmdldC5zaXplO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQncyBjb2xvciBhdHRyaWJ1dGUgYWNjb3JkaW5nIHdpdGggdGhlIHBhcnRpY2xlJ3MgdGFyZ2V0IGNvbG9yLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSBjb250YWluaW5nIHRoZSB0YXJnZXQgY29sb3IgYW5kIGFscGhhLlxuICAgKiBAcmV0dXJuIHtHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVBvaW50Q29sb3IocGFydGljbGUpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGUgPSAnY29sb3InO1xuICAgIGNvbnN0IHsgZ2VvbWV0cnksIHN0cmlkZSwgYnVmZmVyIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBwYXJ0aWNsZTtcbiAgICBjb25zdCB7IG9mZnNldCB9ID0gZ2VvbWV0cnkuYXR0cmlidXRlc1thdHRyaWJ1dGVdO1xuXG4gICAgYnVmZmVyLmFycmF5W3RhcmdldC5pbmRleCAqIHN0cmlkZSArIG9mZnNldCArIDBdID0gdGFyZ2V0LmNvbG9yLnI7XG4gICAgYnVmZmVyLmFycmF5W3RhcmdldC5pbmRleCAqIHN0cmlkZSArIG9mZnNldCArIDFdID0gdGFyZ2V0LmNvbG9yLmc7XG4gICAgYnVmZmVyLmFycmF5W3RhcmdldC5pbmRleCAqIHN0cmlkZSArIG9mZnNldCArIDJdID0gdGFyZ2V0LmNvbG9yLmI7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBwb2ludCBhbHBoYSBhdHRyaWJ1dGUgd2l0aCB0aGUgcGFydGljbGUncyB0YXJnZXQgYWxwaGEuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIGNvbnRhaW5pbmcgdGhlIHRhcmdldCBhbHBoYS5cbiAgICogQHJldHVybiB7R1BVUmVuZGVyZXJ9XG4gICAqL1xuICB1cGRhdGVQb2ludEFscGhhKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgYXR0cmlidXRlID0gJ2FscGhhJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcblxuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAwXSA9IHRhcmdldC5hbHBoYTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHBvaW50IHRleHR1cmUgYXR0cmlidXRlIHdpdGggdGhlIHBhcnRpY2xlJ3MgdGFyZ2V0IHRleHR1cmUuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIGNvbnRhaW5pbmcgdGhlIHRhcmdldCB0ZXh0dXJlLlxuICAgKiBAcmV0dXJuIHtHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVBvaW50VGV4dHVyZUluZGV4KHBhcnRpY2xlKSB7XG4gICAgY29uc3QgYXR0cmlidXRlID0gJ3RleElEJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcbiAgICBjb25zdCBpZCA9IHRhcmdldC5pbmRleCAqIHN0cmlkZSArIG9mZnNldCArIDA7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGJ1ZmZlci5hcnJheVtpZF0gPSB0YXJnZXQudGV4dHVyZUluZGV4O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgdGkgPSB0YXJnZXQudGV4dHVyZUluZGV4ICogNDtcbiAgICAgIGNvbnN0IHRhID0gdGhpcy50ZXh0dXJlQXRsYXM7XG4gICAgICBjb25zdCBpZGEgPSB0YS5pbmRleERhdGE7XG4gICAgICBjb25zdCBueCA9IGlkYVt0aSsrXTtcbiAgICAgIGNvbnN0IG55ID0gaWRhW3RpKytdO1xuICAgICAgY29uc3QgcHggPSBpZGFbdGkrK107XG4gICAgICBjb25zdCBweSA9IGlkYVt0aSsrXTtcblxuICAgICAgYnVmZmVyLmFycmF5W2lkXSA9ICgobnggKiB0YS5hdGxhc1RleHR1cmUuaW1hZ2Uud2lkdGgpIHwgMCkgKyBweDtcbiAgICAgIGJ1ZmZlci5hcnJheVtpZCArIDFdID0gKChueSAqIHRhLmF0bGFzVGV4dHVyZS5pbWFnZS5oZWlnaHQpIHwgMCkgKyBweTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldFRleHR1cmVJRCh0ZXh0dXJlLCBkZWJ1Zykge1xuICAgIGlmICh0ZXh0dXJlLnRleHR1cmVJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoIXRoaXMudGV4dHVyZUF0bGFzKSB7XG4gICAgICAgIHRoaXMudGV4dHVyZUF0bGFzID0gbmV3IFRleHR1cmVBdGxhcyh0aGlzLCBkZWJ1Zyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudGV4dHVyZUF0bGFzLmFkZFRleHR1cmUodGV4dHVyZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHR1cmUudGV4dHVyZUluZGV4O1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciwgcG9pbnRzLCB0ZXh0dXJlQXRsYXMsIHVuaXF1ZUxpc3QgfSA9IHRoaXM7XG5cbiAgICBjb250YWluZXIucmVtb3ZlKHBvaW50cyk7XG4gICAgdW5pcXVlTGlzdC5kZXN0cm95KCk7XG4gICAgdGV4dHVyZUF0bGFzICYmIHRleHR1cmVBdGxhcy5kZXN0cm95KCk7XG4gIH1cbn1cbiJdfQ==
@@ -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 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 gl_FragColor = gl_FragColor * texture2D(uTexture, uv);\n }\n";
10
- };
11
-
12
- exports.fragmentShader = fragmentShader;
13
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9Nb2JpbGUvc2hhZGVycy9mcmFnbWVudFNoYWRlci5qcyJdLCJuYW1lcyI6WyJmcmFnbWVudFNoYWRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFPLElBQU1BLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsR0FBTTtBQUNsQztBQWlCRCxDQWxCTSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBmcmFnbWVudFNoYWRlciA9ICgpID0+IHtcbiAgcmV0dXJuIGBcbiAgICB1bmlmb3JtIHZlYzMgYmFzZUNvbG9yO1xuICAgIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlO1xuXG4gICAgdmFyeWluZyB2ZWMzIHRhcmdldENvbG9yO1xuICAgIHZhcnlpbmcgZmxvYXQgdGFyZ2V0QWxwaGE7XG4gICAgdmFyeWluZyB2ZWM0IHRpbGVSZWN0O1xuXG4gICAgdm9pZCBtYWluKCkge1xuICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiYXNlQ29sb3IgKiB0YXJnZXRDb2xvciwgdGFyZ2V0QWxwaGEpO1xuXG4gICAgICB2ZWMyIHV2ID0gZ2xfUG9pbnRDb29yZDtcbiAgICAgIHV2ID0gbWl4KHRpbGVSZWN0Lnh5LCB0aWxlUmVjdC56dywgZ2xfUG9pbnRDb29yZCk7XG5cbiAgICAgIGdsX0ZyYWdDb2xvciA9IGdsX0ZyYWdDb2xvciAqIHRleHR1cmUyRCh1VGV4dHVyZSwgdXYpO1xuICAgIH1cbmA7XG59O1xuIl19
@@ -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\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\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9Nb2JpbGUvc2hhZGVycy92ZXJ0ZXhTaGFkZXIuanMiXSwibmFtZXMiOlsidmVydGV4U2hhZGVyIiwiU0laRV9BVFRFTlVBVElPTl9GQUNUT1IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFTyxJQUFNQSxZQUFZLEdBQUcsU0FBZkEsWUFBZSxHQUFNO0FBQ2hDLDZqQkFzQjhCQyxrQ0F0QjlCO0FBMEJELENBM0JNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0laRV9BVFRFTlVBVElPTl9GQUNUT1IgfSBmcm9tICcuLi8uLi9jb21tb24vc2hhZGVycy9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgdmVydGV4U2hhZGVyID0gKCkgPT4ge1xuICByZXR1cm4gYFxuICAgIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlO1xuICAgIHVuaWZvcm0gdmVjMiBhdGxhc0RpbTtcblxuICAgIGF0dHJpYnV0ZSBmbG9hdCBzaXplO1xuICAgIGF0dHJpYnV0ZSB2ZWMzIGNvbG9yO1xuICAgIGF0dHJpYnV0ZSBmbG9hdCBhbHBoYTtcbiAgICBhdHRyaWJ1dGUgdmVjMiB0ZXhJRDtcblxuICAgIHZhcnlpbmcgdmVjMyB0YXJnZXRDb2xvcjtcbiAgICB2YXJ5aW5nIGZsb2F0IHRhcmdldEFscGhhO1xuICAgIHZhcnlpbmcgdmVjNCB0aWxlUmVjdDtcblxuICAgIHZvaWQgbWFpbigpIHtcbiAgICAgIHZlYzQgbXZQb3NpdGlvbiA9IG1vZGVsVmlld01hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XG4gICAgICB0YXJnZXRDb2xvciA9IGNvbG9yO1xuICAgICAgdGFyZ2V0QWxwaGEgPSBhbHBoYTtcblxuICAgICAgdmVjMiB0bWluID0gZmxvb3IodGV4SUQpIC8gYXRsYXNEaW07XG4gICAgICB2ZWMyIHRtYXggPSBmcmFjdCh0ZXhJRCk7XG4gICAgICB0aWxlUmVjdCA9IHZlYzQodG1pbix0bWF4KTtcblxuICAgICAgZ2xfUG9pbnRTaXplID0gKChzaXplICogJHtTSVpFX0FUVEVOVUFUSU9OX0ZBQ1RPUn0pIC8gLW12UG9zaXRpb24ueik7XG4gICAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtdlBvc2l0aW9uO1xuICAgIH1cbmA7XG59O1xuIl19
@@ -1,53 +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.POSITION_ATTRIBUTE_BUFFER_SIZE = exports.PARTICLE_BYTE_SIZE = exports.ALL_BYTE_SIZES = exports.RGBA_BYTE_SIZE = exports.SIZE_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 SIZE_BYTE_SIZE = FLOAT_BYTE_SIZE;
20
- exports.SIZE_BYTE_SIZE = SIZE_BYTE_SIZE;
21
- var RGBA_BYTE_SIZE = RGBA_SIZE * FLOAT_BYTE_SIZE;
22
- exports.RGBA_BYTE_SIZE = RGBA_BYTE_SIZE;
23
- var ALL_BYTE_SIZES = [POSITION_BYTE_SIZE, SIZE_BYTE_SIZE, RGBA_BYTE_SIZE];
24
- exports.ALL_BYTE_SIZES = ALL_BYTE_SIZES;
25
- var PARTICLE_BYTE_SIZE = ALL_BYTE_SIZES.reduce(function (cur, acc) {
26
- return cur + acc;
27
- }); // Attributes
28
-
29
- exports.PARTICLE_BYTE_SIZE = PARTICLE_BYTE_SIZE;
30
- var POSITION_ATTRIBUTE_BUFFER_SIZE = VECTOR_3_SIZE;
31
- exports.POSITION_ATTRIBUTE_BUFFER_SIZE = POSITION_ATTRIBUTE_BUFFER_SIZE;
32
- var SIZE_ATTRIBUTE_BUFFER_SIZE = 1;
33
- exports.SIZE_ATTRIBUTE_BUFFER_SIZE = SIZE_ATTRIBUTE_BUFFER_SIZE;
34
- var RGBA_ATTRIBUTE_BUFFER_SIZE = RGBA_SIZE;
35
- exports.RGBA_ATTRIBUTE_BUFFER_SIZE = RGBA_ATTRIBUTE_BUFFER_SIZE;
36
- var ALPHA_ATTRIBUTE_BUFFER_SIZE = 1;
37
- exports.ALPHA_ATTRIBUTE_BUFFER_SIZE = ALPHA_ATTRIBUTE_BUFFER_SIZE;
38
- var TEXID_ATTRIBUTE_BUFFER_SIZE = 2;
39
- exports.TEXID_ATTRIBUTE_BUFFER_SIZE = TEXID_ATTRIBUTE_BUFFER_SIZE;
40
- var ATTRIBUTE_TO_SIZE_MAP = {
41
- position: POSITION_ATTRIBUTE_BUFFER_SIZE,
42
- size: SIZE_ATTRIBUTE_BUFFER_SIZE,
43
- // THREE.Color does not contain alpha, so we will have separate attributes for these
44
- color: RGBA_ATTRIBUTE_BUFFER_SIZE,
45
- alpha: ALPHA_ATTRIBUTE_BUFFER_SIZE,
46
- texID: TEXID_ATTRIBUTE_BUFFER_SIZE
47
- };
48
- exports.ATTRIBUTE_TO_SIZE_MAP = ATTRIBUTE_TO_SIZE_MAP;
49
- var PARTICLE_STRIDE = [POSITION_ATTRIBUTE_BUFFER_SIZE, SIZE_ATTRIBUTE_BUFFER_SIZE, RGBA_ATTRIBUTE_BUFFER_SIZE, ALPHA_ATTRIBUTE_BUFFER_SIZE, TEXID_ATTRIBUTE_BUFFER_SIZE].reduce(function (cur, acc) {
50
- return cur + acc;
51
- });
52
- exports.PARTICLE_STRIDE = PARTICLE_STRIDE;
53
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9jb21tb24vUGFydGljbGVCdWZmZXIvY29uc3RhbnRzLmpzIl0sIm5hbWVzIjpbIkRFRkFVTFRfTUFYX1BBUlRJQ0xFUyIsIlZFQ1RPUl8zX1NJWkUiLCJsZW5ndGgiLCJSR0JBX1NJWkUiLCJGTE9BVF9CWVRFX1NJWkUiLCJQT1NJVElPTl9CWVRFX1NJWkUiLCJTSVpFX0JZVEVfU0laRSIsIlJHQkFfQllURV9TSVpFIiwiQUxMX0JZVEVfU0laRVMiLCJQQVJUSUNMRV9CWVRFX1NJWkUiLCJyZWR1Y2UiLCJjdXIiLCJhY2MiLCJQT1NJVElPTl9BVFRSSUJVVEVfQlVGRkVSX1NJWkUiLCJTSVpFX0FUVFJJQlVURV9CVUZGRVJfU0laRSIsIlJHQkFfQVRUUklCVVRFX0JVRkZFUl9TSVpFIiwiQUxQSEFfQVRUUklCVVRFX0JVRkZFUl9TSVpFIiwiVEVYSURfQVRUUklCVVRFX0JVRkZFUl9TSVpFIiwiQVRUUklCVVRFX1RPX1NJWkVfTUFQIiwicG9zaXRpb24iLCJzaXplIiwiY29sb3IiLCJhbHBoYSIsInRleElEIiwiUEFSVElDTEVfU1RSSURFIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNPLElBQU1BLHFCQUFxQixHQUFHLEtBQTlCOztBQUNBLElBQU1DLGFBQWEsR0FBRyxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsR0FBWCxFQUFnQkMsTUFBdEM7O0FBQ0EsSUFBTUMsU0FBUyxHQUFHLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBVyxHQUFYLEVBQWdCLEdBQWhCLEVBQXFCRCxNQUF2Qzs7QUFDQSxJQUFNRSxlQUFlLEdBQUcsQ0FBeEIsQyxDQUVQOzs7QUFDTyxJQUFNQyxrQkFBa0IsR0FBR0osYUFBYSxHQUFHRyxlQUEzQzs7QUFDQSxJQUFNRSxjQUFjLEdBQUdGLGVBQXZCOztBQUNBLElBQU1HLGNBQWMsR0FBR0osU0FBUyxHQUFHQyxlQUFuQzs7QUFDQSxJQUFNSSxjQUFjLEdBQUcsQ0FDNUJILGtCQUQ0QixFQUU1QkMsY0FGNEIsRUFHNUJDLGNBSDRCLENBQXZCOztBQUtBLElBQU1FLGtCQUFrQixHQUFHRCxjQUFjLENBQUNFLE1BQWYsQ0FDaEMsVUFBQ0MsR0FBRCxFQUFNQyxHQUFOO0FBQUEsU0FBY0QsR0FBRyxHQUFHQyxHQUFwQjtBQUFBLENBRGdDLENBQTNCLEMsQ0FJUDs7O0FBQ08sSUFBTUMsOEJBQThCLEdBQUdaLGFBQXZDOztBQUNBLElBQU1hLDBCQUEwQixHQUFHLENBQW5DOztBQUNBLElBQU1DLDBCQUEwQixHQUFHWixTQUFuQzs7QUFDQSxJQUFNYSwyQkFBMkIsR0FBRyxDQUFwQzs7QUFDQSxJQUFNQywyQkFBMkIsR0FBRyxDQUFwQzs7QUFFQSxJQUFNQyxxQkFBcUIsR0FBRztBQUNuQ0MsRUFBQUEsUUFBUSxFQUFFTiw4QkFEeUI7QUFFbkNPLEVBQUFBLElBQUksRUFBRU4sMEJBRjZCO0FBR25DO0FBQ0FPLEVBQUFBLEtBQUssRUFBRU4sMEJBSjRCO0FBS25DTyxFQUFBQSxLQUFLLEVBQUVOLDJCQUw0QjtBQU1uQ08sRUFBQUEsS0FBSyxFQUFFTjtBQU40QixDQUE5Qjs7QUFTQSxJQUFNTyxlQUFlLEdBQUcsQ0FDN0JYLDhCQUQ2QixFQUU3QkMsMEJBRjZCLEVBRzdCQywwQkFINkIsRUFJN0JDLDJCQUo2QixFQUs3QkMsMkJBTDZCLEVBTTdCUCxNQU42QixDQU10QixVQUFDQyxHQUFELEVBQU1DLEdBQU47QUFBQSxTQUFjRCxHQUFHLEdBQUdDLEdBQXBCO0FBQUEsQ0FOc0IsQ0FBeEIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQcmltaXRpdmVzXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVhfUEFSVElDTEVTID0gMTAwMDA7XG5leHBvcnQgY29uc3QgVkVDVE9SXzNfU0laRSA9IFsneCcsICd5JywgJ3onXS5sZW5ndGg7XG5leHBvcnQgY29uc3QgUkdCQV9TSVpFID0gWydyJywgJ2cnLCAnYicsICdhJ10ubGVuZ3RoO1xuZXhwb3J0IGNvbnN0IEZMT0FUX0JZVEVfU0laRSA9IDQ7XG5cbi8vIEJ5dGUgc2l6ZXNcbmV4cG9ydCBjb25zdCBQT1NJVElPTl9CWVRFX1NJWkUgPSBWRUNUT1JfM19TSVpFICogRkxPQVRfQllURV9TSVpFO1xuZXhwb3J0IGNvbnN0IFNJWkVfQllURV9TSVpFID0gRkxPQVRfQllURV9TSVpFO1xuZXhwb3J0IGNvbnN0IFJHQkFfQllURV9TSVpFID0gUkdCQV9TSVpFICogRkxPQVRfQllURV9TSVpFO1xuZXhwb3J0IGNvbnN0IEFMTF9CWVRFX1NJWkVTID0gW1xuICBQT1NJVElPTl9CWVRFX1NJWkUsXG4gIFNJWkVfQllURV9TSVpFLFxuICBSR0JBX0JZVEVfU0laRSxcbl07XG5leHBvcnQgY29uc3QgUEFSVElDTEVfQllURV9TSVpFID0gQUxMX0JZVEVfU0laRVMucmVkdWNlKFxuICAoY3VyLCBhY2MpID0+IGN1ciArIGFjY1xuKTtcblxuLy8gQXR0cmlidXRlc1xuZXhwb3J0IGNvbnN0IFBPU0lUSU9OX0FUVFJJQlVURV9CVUZGRVJfU0laRSA9IFZFQ1RPUl8zX1NJWkU7XG5leHBvcnQgY29uc3QgU0laRV9BVFRSSUJVVEVfQlVGRkVSX1NJWkUgPSAxO1xuZXhwb3J0IGNvbnN0IFJHQkFfQVRUUklCVVRFX0JVRkZFUl9TSVpFID0gUkdCQV9TSVpFO1xuZXhwb3J0IGNvbnN0IEFMUEhBX0FUVFJJQlVURV9CVUZGRVJfU0laRSA9IDE7XG5leHBvcnQgY29uc3QgVEVYSURfQVRUUklCVVRFX0JVRkZFUl9TSVpFID0gMjtcblxuZXhwb3J0IGNvbnN0IEFUVFJJQlVURV9UT19TSVpFX01BUCA9IHtcbiAgcG9zaXRpb246IFBPU0lUSU9OX0FUVFJJQlVURV9CVUZGRVJfU0laRSxcbiAgc2l6ZTogU0laRV9BVFRSSUJVVEVfQlVGRkVSX1NJWkUsXG4gIC8vIFRIUkVFLkNvbG9yIGRvZXMgbm90IGNvbnRhaW4gYWxwaGEsIHNvIHdlIHdpbGwgaGF2ZSBzZXBhcmF0ZSBhdHRyaWJ1dGVzIGZvciB0aGVzZVxuICBjb2xvcjogUkdCQV9BVFRSSUJVVEVfQlVGRkVSX1NJWkUsXG4gIGFscGhhOiBBTFBIQV9BVFRSSUJVVEVfQlVGRkVSX1NJWkUsXG4gIHRleElEOiBURVhJRF9BVFRSSUJVVEVfQlVGRkVSX1NJWkUsXG59O1xuXG5leHBvcnQgY29uc3QgUEFSVElDTEVfU1RSSURFID0gW1xuICBQT1NJVElPTl9BVFRSSUJVVEVfQlVGRkVSX1NJWkUsXG4gIFNJWkVfQVRUUklCVVRFX0JVRkZFUl9TSVpFLFxuICBSR0JBX0FUVFJJQlVURV9CVUZGRVJfU0laRSxcbiAgQUxQSEFfQVRUUklCVVRFX0JVRkZFUl9TSVpFLFxuICBURVhJRF9BVFRSSUJVVEVfQlVGRkVSX1NJWkUsXG5dLnJlZHVjZSgoY3VyLCBhY2MpID0+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=
@@ -1,9 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.DATA_TEXTURE_SIZE = void 0;
7
- var DATA_TEXTURE_SIZE = 256;
8
- exports.DATA_TEXTURE_SIZE = DATA_TEXTURE_SIZE;
9
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9jb21tb24vVGV4dHVyZUF0bGFzL2NvbnN0YW50cy5qcyJdLCJuYW1lcyI6WyJEQVRBX1RFWFRVUkVfU0laRSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQU8sSUFBTUEsaUJBQWlCLEdBQUcsR0FBMUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgREFUQV9URVhUVVJFX1NJWkUgPSAyNTY7XG4iXX0=