three-nebula 11.0.0 → 11.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/three-nebula.cjs +109 -0
  3. package/dist/three-nebula.cjs.map +1 -0
  4. package/dist/three-nebula.mjs +2968 -0
  5. package/dist/three-nebula.mjs.map +1 -0
  6. package/dist/three-nebula.umd.js +109 -0
  7. package/dist/three-nebula.umd.js.map +1 -0
  8. package/package.json +23 -47
  9. package/specs/01-emitter-hierarchy.md +200 -0
  10. package/specs/02-determinism-scrubbing.md +188 -0
  11. package/specs/03-sound-renderer.md +183 -0
  12. package/specs/04-schema-versioning.md +140 -0
  13. package/specs/05-content-addressed-assets.md +288 -0
  14. package/specs/README.md +80 -0
  15. package/build/cjs/behaviour/Alpha.js +0 -189
  16. package/build/cjs/behaviour/Attraction.js +0 -189
  17. package/build/cjs/behaviour/Behaviour.js +0 -253
  18. package/build/cjs/behaviour/Collision.js +0 -146
  19. package/build/cjs/behaviour/Color.js +0 -148
  20. package/build/cjs/behaviour/CrossZone.js +0 -141
  21. package/build/cjs/behaviour/Force.js +0 -126
  22. package/build/cjs/behaviour/Gravity.js +0 -78
  23. package/build/cjs/behaviour/RandomDrift.js +0 -153
  24. package/build/cjs/behaviour/Repulsion.js +0 -123
  25. package/build/cjs/behaviour/Rotate.js +0 -265
  26. package/build/cjs/behaviour/Scale.js +0 -177
  27. package/build/cjs/behaviour/Spring.js +0 -133
  28. package/build/cjs/behaviour/constants.js +0 -28
  29. package/build/cjs/behaviour/index.js +0 -112
  30. package/build/cjs/behaviour/types.js +0 -33
  31. package/build/cjs/constants/index.js +0 -61
  32. package/build/cjs/core/Particle.js +0 -390
  33. package/build/cjs/core/Pool.js +0 -203
  34. package/build/cjs/core/System.js +0 -366
  35. package/build/cjs/core/constants.js +0 -163
  36. package/build/cjs/core/fromJSON.js +0 -128
  37. package/build/cjs/core/fromJSONAsync.js +0 -239
  38. package/build/cjs/core/index.js +0 -32
  39. package/build/cjs/core/three/Euler.js +0 -233
  40. package/build/cjs/core/three/Math.js +0 -91
  41. package/build/cjs/core/three/Matrix4.js +0 -745
  42. package/build/cjs/core/three/Quaternion.js +0 -451
  43. package/build/cjs/core/three/Vector3.js +0 -464
  44. package/build/cjs/core/three/constants.js +0 -298
  45. package/build/cjs/core/three/index.js +0 -48
  46. package/build/cjs/core/types.js +0 -13
  47. package/build/cjs/debug/Debug.js +0 -209
  48. package/build/cjs/debug/constants.js +0 -19
  49. package/build/cjs/debug/index.js +0 -24
  50. package/build/cjs/debug/log.js +0 -38
  51. package/build/cjs/ease/index.js +0 -149
  52. package/build/cjs/emitter/Emitter.js +0 -798
  53. package/build/cjs/emitter/FollowEmitter.js +0 -146
  54. package/build/cjs/emitter/constants.js +0 -20
  55. package/build/cjs/emitter/index.js +0 -24
  56. package/build/cjs/emitter/types.js +0 -11
  57. package/build/cjs/events/EventDispatcher.js +0 -105
  58. package/build/cjs/events/constants.js +0 -23
  59. package/build/cjs/events/index.js +0 -27
  60. package/build/cjs/index.js +0 -151
  61. package/build/cjs/initializer/Body.js +0 -122
  62. package/build/cjs/initializer/BodySprite.js +0 -146
  63. package/build/cjs/initializer/Initializer.js +0 -109
  64. package/build/cjs/initializer/InitializerUtil.js +0 -54
  65. package/build/cjs/initializer/Life.js +0 -106
  66. package/build/cjs/initializer/Mass.js +0 -101
  67. package/build/cjs/initializer/Position.js +0 -152
  68. package/build/cjs/initializer/Radius.js +0 -118
  69. package/build/cjs/initializer/Rate.js +0 -150
  70. package/build/cjs/initializer/Rotation.js +0 -95
  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 -108
  79. package/build/cjs/initializer/types.js +0 -37
  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 -371
  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 -385
  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 -58
  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 -45
  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 -68
  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 -12
  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 -708
  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/Rotation.js +0 -54
  187. package/build/esm/initializer/Texture.js +0 -101
  188. package/build/esm/initializer/Velocity/PolarVelocity.js +0 -63
  189. package/build/esm/initializer/Velocity/RadialVelocity.js +0 -72
  190. package/build/esm/initializer/Velocity/VectorVelocity.js +0 -69
  191. package/build/esm/initializer/Velocity/Velocity.js +0 -52
  192. package/build/esm/initializer/Velocity/index.js +0 -4
  193. package/build/esm/initializer/constants.js +0 -26
  194. package/build/esm/initializer/index.js +0 -12
  195. package/build/esm/initializer/types.js +0 -16
  196. package/build/esm/math/ArraySpan.js +0 -62
  197. package/build/esm/math/Box.js +0 -25
  198. package/build/esm/math/ColorSpan.js +0 -71
  199. package/build/esm/math/MathUtils.js +0 -48
  200. package/build/esm/math/Polar3D.js +0 -81
  201. package/build/esm/math/Span.js +0 -63
  202. package/build/esm/math/Vector3D.js +0 -34
  203. package/build/esm/math/constants.js +0 -24
  204. package/build/esm/math/index.js +0 -10
  205. package/build/esm/math/integration.js +0 -47
  206. package/build/esm/math/types.js +0 -7
  207. package/build/esm/renderer/BaseRenderer.js +0 -78
  208. package/build/esm/renderer/CustomRenderer.js +0 -23
  209. package/build/esm/renderer/GPURenderer/Desktop/index.js +0 -357
  210. package/build/esm/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +0 -30
  211. package/build/esm/renderer/GPURenderer/Desktop/shaders/index.js +0 -3
  212. package/build/esm/renderer/GPURenderer/Desktop/shaders/vertexShader.js +0 -36
  213. package/build/esm/renderer/GPURenderer/Mobile/index.js +0 -375
  214. package/build/esm/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +0 -27
  215. package/build/esm/renderer/GPURenderer/Mobile/shaders/index.js +0 -3
  216. package/build/esm/renderer/GPURenderer/Mobile/shaders/vertexShader.js +0 -33
  217. package/build/esm/renderer/GPURenderer/common/ParticleBuffer/constants.js +0 -30
  218. package/build/esm/renderer/GPURenderer/common/ParticleBuffer/index.js +0 -70
  219. package/build/esm/renderer/GPURenderer/common/TextureAtlas/constants.js +0 -2
  220. package/build/esm/renderer/GPURenderer/common/TextureAtlas/index.js +0 -206
  221. package/build/esm/renderer/GPURenderer/common/constants.js +0 -13
  222. package/build/esm/renderer/GPURenderer/common/index.js +0 -4
  223. package/build/esm/renderer/GPURenderer/common/shaders/constants.js +0 -2
  224. package/build/esm/renderer/GPURenderer/common/stores/Target.js +0 -26
  225. package/build/esm/renderer/GPURenderer/common/stores/UniqueList.js +0 -29
  226. package/build/esm/renderer/GPURenderer/common/stores/index.js +0 -3
  227. package/build/esm/renderer/GPURenderer/index.js +0 -57
  228. package/build/esm/renderer/MeshRenderer.js +0 -93
  229. package/build/esm/renderer/SpriteRenderer.js +0 -30
  230. package/build/esm/renderer/index.js +0 -5
  231. package/build/esm/renderer/types.js +0 -8
  232. package/build/esm/utils/ColorUtil.js +0 -32
  233. package/build/esm/utils/PUID.js +0 -19
  234. package/build/esm/utils/THREEUtil.js +0 -31
  235. package/build/esm/utils/Util.js +0 -60
  236. package/build/esm/utils/index.js +0 -13
  237. package/build/esm/utils/uid.js +0 -3
  238. package/build/esm/zone/BoxZone.js +0 -133
  239. package/build/esm/zone/LineZone.js +0 -61
  240. package/build/esm/zone/MeshZone.js +0 -60
  241. package/build/esm/zone/PointZone.js +0 -59
  242. package/build/esm/zone/ScreenZone.js +0 -116
  243. package/build/esm/zone/SphereZone.js +0 -113
  244. package/build/esm/zone/Zone.js +0 -141
  245. package/build/esm/zone/index.js +0 -7
  246. package/build/esm/zone/types.js +0 -8
  247. package/build/three-nebula.js +0 -2
  248. package/build/three-nebula.js.map +0 -1
@@ -1,206 +0,0 @@
1
- import { RENDERER_TYPE_GPU_DESKTOP, RENDERER_TYPE_GPU_MOBILE } from '../../../types';
2
- import { DATA_TEXTURE_SIZE } from './constants';
3
- import { __DEV__ } from '../../../../constants';
4
- import potpack from 'potpack';
5
- /**
6
- * Dynamic texture atlas for performant support of systems with multiple emitters and textures.
7
- *
8
- */
9
-
10
- export default class TextureAtlas {
11
- constructor(renderer, shouldDebug) {
12
- const {
13
- three: THREE,
14
- type: rendererType
15
- } = renderer;
16
- const data = new Float32Array(DATA_TEXTURE_SIZE * 4);
17
- const ctx = this.ctx = document.createElement('canvas').getContext('2d');
18
- const {
19
- canvas
20
- } = ctx;
21
- this.shouldDebug = shouldDebug;
22
- this.rendererType = rendererType;
23
- this.indexData = data;
24
- this.canvas = canvas;
25
- this.entries = [];
26
-
27
- if (rendererType === RENDERER_TYPE_GPU_DESKTOP) {
28
- this.atlasIndex = new THREE.DataTexture(data, DATA_TEXTURE_SIZE, 1, THREE.RGBAFormat, THREE.FloatType);
29
- }
30
-
31
- canvas.width = canvas.height = DATA_TEXTURE_SIZE;
32
-
33
- if (shouldDebug) {
34
- this.debug(canvas, ctx);
35
- }
36
-
37
- this.atlasTexture = new THREE.CanvasTexture(canvas);
38
- this.atlasTexture.flipY = false;
39
- renderer.material.uniforms.uTexture.value = this.atlasTexture;
40
-
41
- if (rendererType === RENDERER_TYPE_GPU_DESKTOP) {
42
- renderer.material.uniforms.atlasIndex.value = this.atlasIndex;
43
- }
44
-
45
- renderer.material.uniformsNeedUpdate = true;
46
- }
47
- /**
48
- * Logs to the console when in dev mode.
49
- *
50
- */
51
-
52
-
53
- log(...args) {
54
- if (!__DEV__) {
55
- return;
56
- }
57
-
58
- console.log(...args);
59
- }
60
- /**
61
- * Debugs the texture atlas by rendering it to a canvas in the DOM.
62
- *
63
- */
64
-
65
-
66
- debug() {
67
- const {
68
- canvas,
69
- ctx
70
- } = this;
71
- const halfmax = canvas.width;
72
- ctx.fillStyle = 'purple';
73
- ctx.fillRect(0, 0, halfmax, halfmax);
74
- ctx.fillStyle = 'green';
75
- ctx.fillRect(0, halfmax, halfmax, halfmax);
76
- ctx.fillStyle = 'blue';
77
- ctx.fillRect(halfmax, 0, halfmax, halfmax);
78
- ctx.fillStyle = 'orange';
79
- ctx.fillRect(halfmax, halfmax, halfmax, halfmax);
80
- ctx.fillStyle = 'yellow';
81
- ctx.font = canvas.width + 'px Verdana';
82
- ctx.fillText('top row', 100, 500);
83
- ctx.fillStyle = 'pink';
84
- ctx.fillText('bottom row', 100, 1500);
85
- canvas.style.position = 'absolute';
86
- canvas.style.width = canvas.style.height = '300px';
87
- canvas.style.left = canvas.style.top = '0px';
88
- canvas.style.zIndex = 100;
89
- document.body.appendChild(canvas);
90
- }
91
- /**
92
- * Adds a texture to the texture atlas and flags that the atlas needs to be updated.
93
- *
94
- */
95
-
96
-
97
- addTexture(texture) {
98
- this.log('Adding texture to atlas:', texture.uuid);
99
- texture.textureIndex = this.entries.length;
100
- this.entries.push({
101
- texture: texture
102
- });
103
- this.needsUpdate = true;
104
- }
105
- /**
106
- * Updates the texture atlas. Will only rebuild the atlas if all images are loaded.
107
- *
108
- */
109
-
110
-
111
- update() {
112
- if (!this.needsUpdate) {
113
- return;
114
- }
115
-
116
- const {
117
- entries,
118
- canvas,
119
- indexData,
120
- ctx,
121
- atlasIndex,
122
- atlasTexture,
123
- rendererType
124
- } = this;
125
-
126
- for (let i = 0; i < entries.length; i++) {
127
- if (!entries[i].texture.image) {
128
- return;
129
- }
130
- }
131
-
132
- this.needsUpdate = false;
133
-
134
- for (let i = 0; i < entries.length; i++) {
135
- const e = entries[i];
136
- const {
137
- texture
138
- } = e;
139
- const {
140
- width,
141
- height
142
- } = texture.image;
143
- e.w = width;
144
- e.h = height;
145
- }
146
-
147
- const stats = potpack(entries);
148
- this.log('Rebuilt atlas:', stats);
149
-
150
- if (canvas.width != stats.w || canvas.height != stats.h) {
151
- canvas.width = stats.w;
152
- canvas.height = stats.h;
153
- }
154
-
155
- for (let i = 0; i < entries.length; i++) {
156
- const e = this.entries[i];
157
- const ii = e.texture.textureIndex * 4;
158
-
159
- if (rendererType === RENDERER_TYPE_GPU_DESKTOP) {
160
- indexData[ii + 0] = e.x / canvas.width;
161
- indexData[ii + 1] = e.y / canvas.height;
162
- indexData[ii + 2] = (e.x + e.w) / canvas.width;
163
- indexData[ii + 3] = (e.y + e.h) / canvas.height;
164
- }
165
-
166
- if (rendererType === RENDERER_TYPE_GPU_MOBILE) {
167
- indexData[ii + 0] = e.x / (canvas.width + 1);
168
- indexData[ii + 1] = e.y / (canvas.height + 1);
169
- indexData[ii + 2] = (e.x + e.w) / (canvas.width + 1);
170
- indexData[ii + 3] = (e.y + e.h) / (canvas.height + 1);
171
- }
172
-
173
- ctx.drawImage(e.texture.image, e.x, e.y, e.w, e.h);
174
- }
175
-
176
- if (rendererType === RENDERER_TYPE_GPU_DESKTOP) {
177
- atlasIndex.needsUpdate = true;
178
- }
179
-
180
- atlasTexture.needsUpdate = true;
181
- }
182
- /**
183
- * Disposes of the textures used by the texture atlas.
184
- *
185
- * @return void
186
- */
187
-
188
-
189
- destroy() {
190
- const {
191
- atlasIndex,
192
- atlasTexture,
193
- canvas
194
- } = this;
195
- atlasTexture.dispose();
196
- atlasIndex && atlasIndex.dispose();
197
-
198
- if (this.shouldDebug) {
199
- canvas.remove();
200
- }
201
-
202
- this.entries = [];
203
- }
204
-
205
- }
206
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9jb21tb24vVGV4dHVyZUF0bGFzL2luZGV4LmpzIl0sIm5hbWVzIjpbIlJFTkRFUkVSX1RZUEVfR1BVX0RFU0tUT1AiLCJSRU5ERVJFUl9UWVBFX0dQVV9NT0JJTEUiLCJEQVRBX1RFWFRVUkVfU0laRSIsIl9fREVWX18iLCJwb3RwYWNrIiwiVGV4dHVyZUF0bGFzIiwiY29uc3RydWN0b3IiLCJyZW5kZXJlciIsInNob3VsZERlYnVnIiwidGhyZWUiLCJUSFJFRSIsInR5cGUiLCJyZW5kZXJlclR5cGUiLCJkYXRhIiwiRmxvYXQzMkFycmF5IiwiY3R4IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiZ2V0Q29udGV4dCIsImNhbnZhcyIsImluZGV4RGF0YSIsImVudHJpZXMiLCJhdGxhc0luZGV4IiwiRGF0YVRleHR1cmUiLCJSR0JBRm9ybWF0IiwiRmxvYXRUeXBlIiwid2lkdGgiLCJoZWlnaHQiLCJkZWJ1ZyIsImF0bGFzVGV4dHVyZSIsIkNhbnZhc1RleHR1cmUiLCJmbGlwWSIsIm1hdGVyaWFsIiwidW5pZm9ybXMiLCJ1VGV4dHVyZSIsInZhbHVlIiwidW5pZm9ybXNOZWVkVXBkYXRlIiwibG9nIiwiYXJncyIsImNvbnNvbGUiLCJoYWxmbWF4IiwiZmlsbFN0eWxlIiwiZmlsbFJlY3QiLCJmb250IiwiZmlsbFRleHQiLCJzdHlsZSIsInBvc2l0aW9uIiwibGVmdCIsInRvcCIsInpJbmRleCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImFkZFRleHR1cmUiLCJ0ZXh0dXJlIiwidXVpZCIsInRleHR1cmVJbmRleCIsImxlbmd0aCIsInB1c2giLCJuZWVkc1VwZGF0ZSIsInVwZGF0ZSIsImkiLCJpbWFnZSIsImUiLCJ3IiwiaCIsInN0YXRzIiwiaWkiLCJ4IiwieSIsImRyYXdJbWFnZSIsImRlc3Ryb3kiLCJkaXNwb3NlIiwicmVtb3ZlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUNF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QUEzQyxFQUE4Q0QsQ0FBQyxDQUFDRSxDQUFoRDtBQUNEOztBQUVELFFBQUlwRCxZQUFZLEtBQUtaLHlCQUFyQixFQUFnRDtBQUM5Q3NCLE1BQUFBLFVBQVUsQ0FBQ29DLFdBQVgsR0FBeUIsSUFBekI7QUFDRDs7QUFFRDdCLElBQUFBLFlBQVksQ0FBQzZCLFdBQWIsR0FBMkIsSUFBM0I7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7OztBQUNFWSxFQUFBQSxPQUFPLEdBQUc7QUFDUixVQUFNO0FBQUVoRCxNQUFBQSxVQUFGO0FBQWNPLE1BQUFBLFlBQWQ7QUFBNEJWLE1BQUFBO0FBQTVCLFFBQXVDLElBQTdDO0FBRUFVLElBQUFBLFlBQVksQ0FBQzBDLE9BQWI7QUFDQWpELElBQUFBLFVBQVUsSUFBSUEsVUFBVSxDQUFDaUQsT0FBWCxFQUFkOztBQUVBLFFBQUksS0FBSy9ELFdBQVQsRUFBc0I7QUFDcEJXLE1BQUFBLE1BQU0sQ0FBQ3FELE1BQVA7QUFDRDs7QUFFRCxTQUFLbkQsT0FBTCxHQUFlLEVBQWY7QUFDRDs7QUF4TCtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUkVOREVSRVJfVFlQRV9HUFVfREVTS1RPUCxcbiAgUkVOREVSRVJfVFlQRV9HUFVfTU9CSUxFLFxufSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IERBVEFfVEVYVFVSRV9TSVpFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgX19ERVZfXyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgcG90cGFjayBmcm9tICdwb3RwYWNrJztcblxuLyoqXG4gKiBEeW5hbWljIHRleHR1cmUgYXRsYXMgZm9yIHBlcmZvcm1hbnQgc3VwcG9ydCBvZiBzeXN0ZW1zIHdpdGggbXVsdGlwbGUgZW1pdHRlcnMgYW5kIHRleHR1cmVzLlxuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGV4dHVyZUF0bGFzIHtcbiAgY29uc3RydWN0b3IocmVuZGVyZXIsIHNob3VsZERlYnVnKSB7XG4gICAgY29uc3QgeyB0aHJlZTogVEhSRUUsIHR5cGU6IHJlbmRlcmVyVHlwZSB9ID0gcmVuZGVyZXI7XG4gICAgY29uc3QgZGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkoREFUQV9URVhUVVJFX1NJWkUgKiA0KTtcbiAgICBjb25zdCBjdHggPSAodGhpcy5jdHggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKS5nZXRDb250ZXh0KCcyZCcpKTtcbiAgICBjb25zdCB7IGNhbnZhcyB9ID0gY3R4O1xuXG4gICAgdGhpcy5zaG91bGREZWJ1ZyA9IHNob3VsZERlYnVnO1xuICAgIHRoaXMucmVuZGVyZXJUeXBlID0gcmVuZGVyZXJUeXBlO1xuICAgIHRoaXMuaW5kZXhEYXRhID0gZGF0YTtcbiAgICB0aGlzLmNhbnZhcyA9IGNhbnZhcztcbiAgICB0aGlzLmVudHJpZXMgPSBbXTtcblxuICAgIGlmIChyZW5kZXJlclR5cGUgPT09IFJFTkRFUkVSX1RZUEVfR1BVX0RFU0tUT1ApIHtcbiAgICAgIHRoaXMuYXRsYXNJbmRleCA9IG5ldyBUSFJFRS5EYXRhVGV4dHVyZShcbiAgICAgICAgZGF0YSxcbiAgICAgICAgREFUQV9URVhUVVJFX1NJWkUsXG4gICAgICAgIDEsXG4gICAgICAgIFRIUkVFLlJHQkFGb3JtYXQsXG4gICAgICAgIFRIUkVFLkZsb2F0VHlwZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjYW52YXMud2lkdGggPSBjYW52YXMuaGVpZ2h0ID0gREFUQV9URVhUVVJFX1NJWkU7XG5cbiAgICBpZiAoc2hvdWxkRGVidWcpIHtcbiAgICAgIHRoaXMuZGVidWcoY2FudmFzLCBjdHgpO1xuICAgIH1cblxuICAgIHRoaXMuYXRsYXNUZXh0dXJlID0gbmV3IFRIUkVFLkNhbnZhc1RleHR1cmUoY2FudmFzKTtcbiAgICB0aGlzLmF0bGFzVGV4dHVyZS5mbGlwWSA9IGZhbHNlO1xuXG4gICAgcmVuZGVyZXIubWF0ZXJpYWwudW5pZm9ybXMudVRleHR1cmUudmFsdWUgPSB0aGlzLmF0bGFzVGV4dHVyZTtcblxuICAgIGlmIChyZW5kZXJlclR5cGUgPT09IFJFTkRFUkVSX1RZUEVfR1BVX0RFU0tUT1ApIHtcbiAgICAgIHJlbmRlcmVyLm1hdGVyaWFsLnVuaWZvcm1zLmF0bGFzSW5kZXgudmFsdWUgPSB0aGlzLmF0bGFzSW5kZXg7XG4gICAgfVxuXG4gICAgcmVuZGVyZXIubWF0ZXJpYWwudW5pZm9ybXNOZWVkVXBkYXRlID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2dzIHRvIHRoZSBjb25zb2xlIHdoZW4gaW4gZGV2IG1vZGUuXG4gICAqXG4gICAqL1xuICBsb2coLi4uYXJncykge1xuICAgIGlmICghX19ERVZfXykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlYnVncyB0aGUgdGV4dHVyZSBhdGxhcyBieSByZW5kZXJpbmcgaXQgdG8gYSBjYW52YXMgaW4gdGhlIERPTS5cbiAgICpcbiAgICovXG4gIGRlYnVnKCkge1xuICAgIGNvbnN0IHsgY2FudmFzLCBjdHggfSA9IHRoaXM7XG4gICAgY29uc3QgaGFsZm1heCA9IGNhbnZhcy53aWR0aDtcblxuICAgIGN0eC5maWxsU3R5bGUgPSAncHVycGxlJztcbiAgICBjdHguZmlsbFJlY3QoMCwgMCwgaGFsZm1heCwgaGFsZm1heCk7XG4gICAgY3R4LmZpbGxTdHlsZSA9ICdncmVlbic7XG4gICAgY3R4LmZpbGxSZWN0KDAsIGhhbGZtYXgsIGhhbGZtYXgsIGhhbGZtYXgpO1xuICAgIGN0eC5maWxsU3R5bGUgPSAnYmx1ZSc7XG4gICAgY3R4LmZpbGxSZWN0KGhhbGZtYXgsIDAsIGhhbGZtYXgsIGhhbGZtYXgpO1xuICAgIGN0eC5maWxsU3R5bGUgPSAnb3JhbmdlJztcbiAgICBjdHguZmlsbFJlY3QoaGFsZm1heCwgaGFsZm1heCwgaGFsZm1heCwgaGFsZm1heCk7XG4gICAgY3R4LmZpbGxTdHlsZSA9ICd5ZWxsb3cnO1xuICAgIGN0eC5mb250ID0gY2FudmFzLndpZHRoICsgJ3B4IFZlcmRhbmEnO1xuICAgIGN0eC5maWxsVGV4dCgndG9wIHJvdycsIDEwMCwgNTAwKTtcbiAgICBjdHguZmlsbFN0eWxlID0gJ3BpbmsnO1xuICAgIGN0eC5maWxsVGV4dCgnYm90dG9tIHJvdycsIDEwMCwgMTUwMCk7XG5cbiAgICBjYW52YXMuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIGNhbnZhcy5zdHlsZS53aWR0aCA9IGNhbnZhcy5zdHlsZS5oZWlnaHQgPSAnMzAwcHgnO1xuICAgIGNhbnZhcy5zdHlsZS5sZWZ0ID0gY2FudmFzLnN0eWxlLnRvcCA9ICcwcHgnO1xuICAgIGNhbnZhcy5zdHlsZS56SW5kZXggPSAxMDA7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHRleHR1cmUgdG8gdGhlIHRleHR1cmUgYXRsYXMgYW5kIGZsYWdzIHRoYXQgdGhlIGF0bGFzIG5lZWRzIHRvIGJlIHVwZGF0ZWQuXG4gICAqXG4gICAqL1xuICBhZGRUZXh0dXJlKHRleHR1cmUpIHtcbiAgICB0aGlzLmxvZygnQWRkaW5nIHRleHR1cmUgdG8gYXRsYXM6JywgdGV4dHVyZS51dWlkKTtcblxuICAgIHRleHR1cmUudGV4dHVyZUluZGV4ID0gdGhpcy5lbnRyaWVzLmxlbmd0aDtcbiAgICB0aGlzLmVudHJpZXMucHVzaCh7IHRleHR1cmU6IHRleHR1cmUgfSk7XG4gICAgdGhpcy5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgdGV4dHVyZSBhdGxhcy4gV2lsbCBvbmx5IHJlYnVpbGQgdGhlIGF0bGFzIGlmIGFsbCBpbWFnZXMgYXJlIGxvYWRlZC5cbiAgICpcbiAgICovXG4gIHVwZGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMubmVlZHNVcGRhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICBlbnRyaWVzLFxuICAgICAgY2FudmFzLFxuICAgICAgaW5kZXhEYXRhLFxuICAgICAgY3R4LFxuICAgICAgYXRsYXNJbmRleCxcbiAgICAgIGF0bGFzVGV4dHVyZSxcbiAgICAgIHJlbmRlcmVyVHlwZSxcbiAgICB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFlbnRyaWVzW2ldLnRleHR1cmUuaW1hZ2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubmVlZHNVcGRhdGUgPSBmYWxzZTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZSA9IGVudHJpZXNbaV07XG4gICAgICBjb25zdCB7IHRleHR1cmUgfSA9IGU7XG4gICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRleHR1cmUuaW1hZ2U7XG5cbiAgICAgIGUudyA9IHdpZHRoO1xuICAgICAgZS5oID0gaGVpZ2h0O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXRzID0gcG90cGFjayhlbnRyaWVzKTtcblxuICAgIHRoaXMubG9nKCdSZWJ1aWx0IGF0bGFzOicsIHN0YXRzKTtcblxuICAgIGlmIChjYW52YXMud2lkdGggIT0gc3RhdHMudyB8fCBjYW52YXMuaGVpZ2h0ICE9IHN0YXRzLmgpIHtcbiAgICAgIGNhbnZhcy53aWR0aCA9IHN0YXRzLnc7XG4gICAgICBjYW52YXMuaGVpZ2h0ID0gc3RhdHMuaDtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGUgPSB0aGlzLmVudHJpZXNbaV07XG4gICAgICBjb25zdCBpaSA9IGUudGV4dHVyZS50ZXh0dXJlSW5kZXggKiA0O1xuXG4gICAgICBpZiAocmVuZGVyZXJUeXBlID09PSBSRU5ERVJFUl9UWVBFX0dQVV9ERVNLVE9QKSB7XG4gICAgICAgIGluZGV4RGF0YVtpaSArIDBdID0gZS54IC8gY2FudmFzLndpZHRoO1xuICAgICAgICBpbmRleERhdGFbaWkgKyAxXSA9IGUueSAvIGNhbnZhcy5oZWlnaHQ7XG4gICAgICAgIGluZGV4RGF0YVtpaSArIDJdID0gKGUueCArIGUudykgLyBjYW52YXMud2lkdGg7XG4gICAgICAgIGluZGV4RGF0YVtpaSArIDNdID0gKGUueSArIGUuaCkgLyBjYW52YXMuaGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICBpZiAocmVuZGVyZXJUeXBlID09PSBSRU5ERVJFUl9UWVBFX0dQVV9NT0JJTEUpIHtcbiAgICAgICAgaW5kZXhEYXRhW2lpICsgMF0gPSBlLnggLyAoY2FudmFzLndpZHRoICsgMSk7XG4gICAgICAgIGluZGV4RGF0YVtpaSArIDFdID0gZS55IC8gKGNhbnZhcy5oZWlnaHQgKyAxKTtcbiAgICAgICAgaW5kZXhEYXRhW2lpICsgMl0gPSAoZS54ICsgZS53KSAvIChjYW52YXMud2lkdGggKyAxKTtcbiAgICAgICAgaW5kZXhEYXRhW2lpICsgM10gPSAoZS55ICsgZS5oKSAvIChjYW52YXMuaGVpZ2h0ICsgMSk7XG4gICAgICB9XG5cbiAgICAgIGN0eC5kcmF3SW1hZ2UoZS50ZXh0dXJlLmltYWdlLCBlLngsIGUueSwgZS53LCBlLmgpO1xuICAgIH1cblxuICAgIGlmIChyZW5kZXJlclR5cGUgPT09IFJFTkRFUkVSX1RZUEVfR1BVX0RFU0tUT1ApIHtcbiAgICAgIGF0bGFzSW5kZXgubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGF0bGFzVGV4dHVyZS5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogRGlzcG9zZXMgb2YgdGhlIHRleHR1cmVzIHVzZWQgYnkgdGhlIHRleHR1cmUgYXRsYXMuXG4gICAqXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICBjb25zdCB7IGF0bGFzSW5kZXgsIGF0bGFzVGV4dHVyZSwgY2FudmFzIH0gPSB0aGlzO1xuXG4gICAgYXRsYXNUZXh0dXJlLmRpc3Bvc2UoKTtcbiAgICBhdGxhc0luZGV4ICYmIGF0bGFzSW5kZXguZGlzcG9zZSgpO1xuXG4gICAgaWYgKHRoaXMuc2hvdWxkRGVidWcpIHtcbiAgICAgIGNhbnZhcy5yZW1vdmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmVudHJpZXMgPSBbXTtcbiAgfVxufVxuIl19
@@ -1,13 +0,0 @@
1
- import { DEFAULT_MAX_PARTICLES } from './ParticleBuffer/constants';
2
- export const DEFAULT_RENDERER_OPTIONS = {
3
- blending: 'AdditiveBlending',
4
- baseColor: 0xffffff,
5
- depthTest: true,
6
- depthWrite: false,
7
- transparent: true,
8
- maxParticles: DEFAULT_MAX_PARTICLES,
9
- shouldDebugTextureAtlas: false,
10
- shouldForceDesktopRenderer: false,
11
- shouldForceMobileRenderer: false
12
- };
13
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9jb21tb24vY29uc3RhbnRzLmpzIl0sIm5hbWVzIjpbIkRFRkFVTFRfTUFYX1BBUlRJQ0xFUyIsIkRFRkFVTFRfUkVOREVSRVJfT1BUSU9OUyIsImJsZW5kaW5nIiwiYmFzZUNvbG9yIiwiZGVwdGhUZXN0IiwiZGVwdGhXcml0ZSIsInRyYW5zcGFyZW50IiwibWF4UGFydGljbGVzIiwic2hvdWxkRGVidWdUZXh0dXJlQXRsYXMiLCJzaG91bGRGb3JjZURlc2t0b3BSZW5kZXJlciIsInNob3VsZEZvcmNlTW9iaWxlUmVuZGVyZXIiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLHFCQUFULFFBQXNDLDRCQUF0QztBQUVBLE9BQU8sTUFBTUMsd0JBQXdCLEdBQUc7QUFDdENDLEVBQUFBLFFBQVEsRUFBRSxrQkFENEI7QUFFdENDLEVBQUFBLFNBQVMsRUFBRSxRQUYyQjtBQUd0Q0MsRUFBQUEsU0FBUyxFQUFFLElBSDJCO0FBSXRDQyxFQUFBQSxVQUFVLEVBQUUsS0FKMEI7QUFLdENDLEVBQUFBLFdBQVcsRUFBRSxJQUx5QjtBQU10Q0MsRUFBQUEsWUFBWSxFQUFFUCxxQkFOd0I7QUFPdENRLEVBQUFBLHVCQUF1QixFQUFFLEtBUGE7QUFRdENDLEVBQUFBLDBCQUEwQixFQUFFLEtBUlU7QUFTdENDLEVBQUFBLHlCQUF5QixFQUFFO0FBVFcsQ0FBakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUZBVUxUX01BWF9QQVJUSUNMRVMgfSBmcm9tICcuL1BhcnRpY2xlQnVmZmVyL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1JFTkRFUkVSX09QVElPTlMgPSB7XG4gIGJsZW5kaW5nOiAnQWRkaXRpdmVCbGVuZGluZycsXG4gIGJhc2VDb2xvcjogMHhmZmZmZmYsXG4gIGRlcHRoVGVzdDogdHJ1ZSxcbiAgZGVwdGhXcml0ZTogZmFsc2UsXG4gIHRyYW5zcGFyZW50OiB0cnVlLFxuICBtYXhQYXJ0aWNsZXM6IERFRkFVTFRfTUFYX1BBUlRJQ0xFUyxcbiAgc2hvdWxkRGVidWdUZXh0dXJlQXRsYXM6IGZhbHNlLFxuICBzaG91bGRGb3JjZURlc2t0b3BSZW5kZXJlcjogZmFsc2UsXG4gIHNob3VsZEZvcmNlTW9iaWxlUmVuZGVyZXI6IGZhbHNlLFxufTtcbiJdfQ==
@@ -1,4 +0,0 @@
1
- export { Target, UniqueList } from './stores';
2
- export { default as ParticleBuffer } from './ParticleBuffer';
3
- export { default as TextureAtlas } from './TextureAtlas';
4
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9jb21tb24vaW5kZXguanMiXSwibmFtZXMiOlsiVGFyZ2V0IiwiVW5pcXVlTGlzdCIsImRlZmF1bHQiLCJQYXJ0aWNsZUJ1ZmZlciIsIlRleHR1cmVBdGxhcyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsTUFBVCxFQUFpQkMsVUFBakIsUUFBbUMsVUFBbkM7QUFDQSxTQUFTQyxPQUFPLElBQUlDLGNBQXBCLFFBQTBDLGtCQUExQztBQUNBLFNBQVNELE9BQU8sSUFBSUUsWUFBcEIsUUFBd0MsZ0JBQXhDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgVGFyZ2V0LCBVbmlxdWVMaXN0IH0gZnJvbSAnLi9zdG9yZXMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBQYXJ0aWNsZUJ1ZmZlciB9IGZyb20gJy4vUGFydGljbGVCdWZmZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBUZXh0dXJlQXRsYXMgfSBmcm9tICcuL1RleHR1cmVBdGxhcyc7XG4iXX0=
@@ -1,2 +0,0 @@
1
- export const SIZE_ATTENUATION_FACTOR = '600.0';
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9jb21tb24vc2hhZGVycy9jb25zdGFudHMuanMiXSwibmFtZXMiOlsiU0laRV9BVFRFTlVBVElPTl9GQUNUT1IiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTUEsdUJBQXVCLEdBQUcsT0FBaEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgU0laRV9BVFRFTlVBVElPTl9GQUNUT1IgPSAnNjAwLjAnO1xuIl19
@@ -1,26 +0,0 @@
1
- /**
2
- * Simple class that stores the particle's "target" or "next" state.
3
- *
4
- */
5
- export class Target {
6
- constructor(THREE) {
7
- this.position = new THREE.Vector3();
8
- this.rotation = new THREE.Vector3();
9
- this.size = 0;
10
- this.color = new THREE.Color();
11
- this.alpha = 0;
12
- this.texture = null;
13
- this.index = 0;
14
- }
15
-
16
- reset() {
17
- this.position.set(0, 0, 0);
18
- this.rotation.set(0, 0, 0);
19
- this.size = 0;
20
- this.color.setRGB(0, 0, 0);
21
- this.alpha = 0;
22
- this.texture = null;
23
- }
24
-
25
- }
26
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9jb21tb24vc3RvcmVzL1RhcmdldC5qcyJdLCJuYW1lcyI6WyJUYXJnZXQiLCJjb25zdHJ1Y3RvciIsIlRIUkVFIiwicG9zaXRpb24iLCJWZWN0b3IzIiwicm90YXRpb24iLCJzaXplIiwiY29sb3IiLCJDb2xvciIsImFscGhhIiwidGV4dHVyZSIsImluZGV4IiwicmVzZXQiLCJzZXQiLCJzZXRSR0IiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxNQUFNQSxNQUFOLENBQWE7QUFDbEJDLEVBQUFBLFdBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2pCLFNBQUtDLFFBQUwsR0FBZ0IsSUFBSUQsS0FBSyxDQUFDRSxPQUFWLEVBQWhCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixJQUFJSCxLQUFLLENBQUNFLE9BQVYsRUFBaEI7QUFDQSxTQUFLRSxJQUFMLEdBQVksQ0FBWjtBQUNBLFNBQUtDLEtBQUwsR0FBYSxJQUFJTCxLQUFLLENBQUNNLEtBQVYsRUFBYjtBQUNBLFNBQUtDLEtBQUwsR0FBYSxDQUFiO0FBQ0EsU0FBS0MsT0FBTCxHQUFlLElBQWY7QUFDQSxTQUFLQyxLQUFMLEdBQWEsQ0FBYjtBQUNEOztBQUVEQyxFQUFBQSxLQUFLLEdBQUc7QUFDTixTQUFLVCxRQUFMLENBQWNVLEdBQWQsQ0FBa0IsQ0FBbEIsRUFBcUIsQ0FBckIsRUFBd0IsQ0FBeEI7QUFDQSxTQUFLUixRQUFMLENBQWNRLEdBQWQsQ0FBa0IsQ0FBbEIsRUFBcUIsQ0FBckIsRUFBd0IsQ0FBeEI7QUFDQSxTQUFLUCxJQUFMLEdBQVksQ0FBWjtBQUNBLFNBQUtDLEtBQUwsQ0FBV08sTUFBWCxDQUFrQixDQUFsQixFQUFxQixDQUFyQixFQUF3QixDQUF4QjtBQUNBLFNBQUtMLEtBQUwsR0FBYSxDQUFiO0FBQ0EsU0FBS0MsT0FBTCxHQUFlLElBQWY7QUFDRDs7QUFsQmlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTaW1wbGUgY2xhc3MgdGhhdCBzdG9yZXMgdGhlIHBhcnRpY2xlJ3MgXCJ0YXJnZXRcIiBvciBcIm5leHRcIiBzdGF0ZS5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBUYXJnZXQge1xuICBjb25zdHJ1Y3RvcihUSFJFRSkge1xuICAgIHRoaXMucG9zaXRpb24gPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgIHRoaXMucm90YXRpb24gPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgdGhpcy5jb2xvciA9IG5ldyBUSFJFRS5Db2xvcigpO1xuICAgIHRoaXMuYWxwaGEgPSAwO1xuICAgIHRoaXMudGV4dHVyZSA9IG51bGw7XG4gICAgdGhpcy5pbmRleCA9IDA7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnBvc2l0aW9uLnNldCgwLCAwLCAwKTtcbiAgICB0aGlzLnJvdGF0aW9uLnNldCgwLCAwLCAwKTtcbiAgICB0aGlzLnNpemUgPSAwO1xuICAgIHRoaXMuY29sb3Iuc2V0UkdCKDAsIDAsIDApO1xuICAgIHRoaXMuYWxwaGEgPSAwO1xuICAgIHRoaXMudGV4dHVyZSA9IG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -1,29 +0,0 @@
1
- /**
2
- * Map of particle IDs to integer ids
3
- */
4
- export class UniqueList {
5
- constructor(max = Infinity) {
6
- this.max = max;
7
- this.count = 0;
8
- this._items = {};
9
- }
10
-
11
- add(item) {
12
- if (this._items[item] !== undefined) {
13
- return;
14
- }
15
-
16
- this._items[item] = this.count++;
17
- }
18
-
19
- find(item) {
20
- return this._items[item];
21
- }
22
-
23
- destroy() {
24
- this._items = {};
25
- this.count = 0;
26
- }
27
-
28
- }
29
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9jb21tb24vc3RvcmVzL1VuaXF1ZUxpc3QuanMiXSwibmFtZXMiOlsiVW5pcXVlTGlzdCIsImNvbnN0cnVjdG9yIiwibWF4IiwiSW5maW5pdHkiLCJjb3VudCIsIl9pdGVtcyIsImFkZCIsIml0ZW0iLCJ1bmRlZmluZWQiLCJmaW5kIiwiZGVzdHJveSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsT0FBTyxNQUFNQSxVQUFOLENBQWlCO0FBQ3RCQyxFQUFBQSxXQUFXLENBQUNDLEdBQUcsR0FBR0MsUUFBUCxFQUFpQjtBQUMxQixTQUFLRCxHQUFMLEdBQVdBLEdBQVg7QUFDQSxTQUFLRSxLQUFMLEdBQWEsQ0FBYjtBQUNBLFNBQUtDLE1BQUwsR0FBYyxFQUFkO0FBQ0Q7O0FBRURDLEVBQUFBLEdBQUcsQ0FBQ0MsSUFBRCxFQUFPO0FBQ1IsUUFBSSxLQUFLRixNQUFMLENBQVlFLElBQVosTUFBc0JDLFNBQTFCLEVBQXFDO0FBQ25DO0FBQ0Q7O0FBRUQsU0FBS0gsTUFBTCxDQUFZRSxJQUFaLElBQW9CLEtBQUtILEtBQUwsRUFBcEI7QUFDRDs7QUFFREssRUFBQUEsSUFBSSxDQUFDRixJQUFELEVBQU87QUFDVCxXQUFPLEtBQUtGLE1BQUwsQ0FBWUUsSUFBWixDQUFQO0FBQ0Q7O0FBRURHLEVBQUFBLE9BQU8sR0FBRztBQUNSLFNBQUtMLE1BQUwsR0FBYyxFQUFkO0FBQ0EsU0FBS0QsS0FBTCxHQUFhLENBQWI7QUFDRDs7QUF0QnFCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNYXAgb2YgcGFydGljbGUgSURzIHRvIGludGVnZXIgaWRzXG4gKi9cbmV4cG9ydCBjbGFzcyBVbmlxdWVMaXN0IHtcbiAgY29uc3RydWN0b3IobWF4ID0gSW5maW5pdHkpIHtcbiAgICB0aGlzLm1heCA9IG1heDtcbiAgICB0aGlzLmNvdW50ID0gMDtcbiAgICB0aGlzLl9pdGVtcyA9IHt9O1xuICB9XG5cbiAgYWRkKGl0ZW0pIHtcbiAgICBpZiAodGhpcy5faXRlbXNbaXRlbV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2l0ZW1zW2l0ZW1dID0gdGhpcy5jb3VudCsrO1xuICB9XG5cbiAgZmluZChpdGVtKSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zW2l0ZW1dO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLl9pdGVtcyA9IHt9O1xuICAgIHRoaXMuY291bnQgPSAwO1xuICB9XG59XG4iXX0=
@@ -1,3 +0,0 @@
1
- export { Target } from './Target';
2
- export { UniqueList } from './UniqueList';
3
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9jb21tb24vc3RvcmVzL2luZGV4LmpzIl0sIm5hbWVzIjpbIlRhcmdldCIsIlVuaXF1ZUxpc3QiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLE1BQVQsUUFBdUIsVUFBdkI7QUFDQSxTQUFTQyxVQUFULFFBQTJCLGNBQTNCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgVGFyZ2V0IH0gZnJvbSAnLi9UYXJnZXQnO1xuZXhwb3J0IHsgVW5pcXVlTGlzdCB9IGZyb20gJy4vVW5pcXVlTGlzdCc7XG4iXX0=
@@ -1,57 +0,0 @@
1
- import BaseRenderer from '../BaseRenderer';
2
- import { DEFAULT_RENDERER_OPTIONS } from './common/constants';
3
- import DesktopGPURenderer from './Desktop';
4
- import MobileGPURenderer from './Mobile';
5
- import { RENDERER_TYPE_GPU } from '../types';
6
- /**
7
- * Performant particle renderer that uses THREE.Points to propagate particle (postiion, rgba etc.,) properties to
8
- * vertices in a ParticleBufferGeometry.
9
- * Uses a dynamic texture atlas to support systems with mutliple sprites in a performant way.
10
- *
11
- * NOTE! This is an experimental renderer and is currently not covered by tests, coverage will be added when the API
12
- * is more stable. Currently only compatible with sprite/texture based systems. Meshes are not yet supported.
13
- *
14
- * @author thrax <manthrax@gmail.com>
15
- * @author rohan-deshpande <rohan@creativelifeform.com>
16
- */
17
-
18
- export default class GPURenderer extends BaseRenderer {
19
- constructor(container, THREE, options = DEFAULT_RENDERER_OPTIONS) {
20
- super(RENDERER_TYPE_GPU);
21
- const {
22
- shouldForceDesktopRenderer,
23
- shouldForceMobileRenderer
24
- } = options;
25
- const args = [container, THREE, options];
26
-
27
- if (shouldForceDesktopRenderer) {
28
- return new DesktopGPURenderer(...args);
29
- }
30
-
31
- if (shouldForceMobileRenderer) {
32
- return new MobileGPURenderer(...args);
33
- }
34
-
35
- if (!this.isFloatingPointTextureSupported()) {
36
- return new MobileGPURenderer(...args);
37
- }
38
-
39
- return new DesktopGPURenderer(...args);
40
- }
41
-
42
- isFloatingPointTextureSupported() {
43
- const canvas = document.createElement('canvas');
44
-
45
- if (window.WebGL2RenderingContext && canvas.getContext('webgl2')) {
46
- // return false here to test the mobile renderer on desktop
47
- return true;
48
- }
49
-
50
- const gl = canvas.getContext('webgl');
51
- const support = !!gl.getExtension('OES_texture_float');
52
- canvas.remove();
53
- return support;
54
- }
55
-
56
- }
57
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9pbmRleC5qcyJdLCJuYW1lcyI6WyJCYXNlUmVuZGVyZXIiLCJERUZBVUxUX1JFTkRFUkVSX09QVElPTlMiLCJEZXNrdG9wR1BVUmVuZGVyZXIiLCJNb2JpbGVHUFVSZW5kZXJlciIsIlJFTkRFUkVSX1RZUEVfR1BVIiwiR1BVUmVuZGVyZXIiLCJjb25zdHJ1Y3RvciIsImNvbnRhaW5lciIsIlRIUkVFIiwib3B0aW9ucyIsInNob3VsZEZvcmNlRGVza3RvcFJlbmRlcmVyIiwic2hvdWxkRm9yY2VNb2JpbGVSZW5kZXJlciIsImFyZ3MiLCJpc0Zsb2F0aW5nUG9pbnRUZXh0dXJlU3VwcG9ydGVkIiwiY2FudmFzIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwid2luZG93IiwiV2ViR0wyUmVuZGVyaW5nQ29udGV4dCIsImdldENvbnRleHQiLCJnbCIsInN1cHBvcnQiLCJnZXRFeHRlbnNpb24iLCJyZW1vdmUiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFlBQVAsTUFBeUIsaUJBQXpCO0FBQ0EsU0FBU0Msd0JBQVQsUUFBeUMsb0JBQXpDO0FBQ0EsT0FBT0Msa0JBQVAsTUFBK0IsV0FBL0I7QUFDQSxPQUFPQyxpQkFBUCxNQUE4QixVQUE5QjtBQUNBLFNBQVNDLGlCQUFULFFBQWtDLFVBQWxDO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxlQUFlLE1BQU1DLFdBQU4sU0FBMEJMLFlBQTFCLENBQXVDO0FBQ3BETSxFQUFBQSxXQUFXLENBQUNDLFNBQUQsRUFBWUMsS0FBWixFQUFtQkMsT0FBTyxHQUFHUix3QkFBN0IsRUFBdUQ7QUFDaEUsVUFBTUcsaUJBQU47QUFFQSxVQUFNO0FBQUVNLE1BQUFBLDBCQUFGO0FBQThCQyxNQUFBQTtBQUE5QixRQUE0REYsT0FBbEU7QUFDQSxVQUFNRyxJQUFJLEdBQUcsQ0FBQ0wsU0FBRCxFQUFZQyxLQUFaLEVBQW1CQyxPQUFuQixDQUFiOztBQUVBLFFBQUlDLDBCQUFKLEVBQWdDO0FBQzlCLGFBQU8sSUFBSVIsa0JBQUosQ0FBdUIsR0FBR1UsSUFBMUIsQ0FBUDtBQUNEOztBQUVELFFBQUlELHlCQUFKLEVBQStCO0FBQzdCLGFBQU8sSUFBSVIsaUJBQUosQ0FBc0IsR0FBR1MsSUFBekIsQ0FBUDtBQUNEOztBQUVELFFBQUksQ0FBQyxLQUFLQywrQkFBTCxFQUFMLEVBQTZDO0FBQzNDLGFBQU8sSUFBSVYsaUJBQUosQ0FBc0IsR0FBR1MsSUFBekIsQ0FBUDtBQUNEOztBQUVELFdBQU8sSUFBSVYsa0JBQUosQ0FBdUIsR0FBR1UsSUFBMUIsQ0FBUDtBQUNEOztBQUVEQyxFQUFBQSwrQkFBK0IsR0FBRztBQUNoQyxVQUFNQyxNQUFNLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixRQUF2QixDQUFmOztBQUVBLFFBQUlDLE1BQU0sQ0FBQ0Msc0JBQVAsSUFBaUNKLE1BQU0sQ0FBQ0ssVUFBUCxDQUFrQixRQUFsQixDQUFyQyxFQUFrRTtBQUNoRTtBQUNBLGFBQU8sSUFBUDtBQUNEOztBQUVELFVBQU1DLEVBQUUsR0FBR04sTUFBTSxDQUFDSyxVQUFQLENBQWtCLE9BQWxCLENBQVg7QUFDQSxVQUFNRSxPQUFPLEdBQUcsQ0FBQyxDQUFDRCxFQUFFLENBQUNFLFlBQUgsQ0FBZ0IsbUJBQWhCLENBQWxCO0FBRUFSLElBQUFBLE1BQU0sQ0FBQ1MsTUFBUDtBQUVBLFdBQU9GLE9BQVA7QUFDRDs7QUFwQ21EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VSZW5kZXJlciBmcm9tICcuLi9CYXNlUmVuZGVyZXInO1xuaW1wb3J0IHsgREVGQVVMVF9SRU5ERVJFUl9PUFRJT05TIH0gZnJvbSAnLi9jb21tb24vY29uc3RhbnRzJztcbmltcG9ydCBEZXNrdG9wR1BVUmVuZGVyZXIgZnJvbSAnLi9EZXNrdG9wJztcbmltcG9ydCBNb2JpbGVHUFVSZW5kZXJlciBmcm9tICcuL01vYmlsZSc7XG5pbXBvcnQgeyBSRU5ERVJFUl9UWVBFX0dQVSB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBQZXJmb3JtYW50IHBhcnRpY2xlIHJlbmRlcmVyIHRoYXQgdXNlcyBUSFJFRS5Qb2ludHMgdG8gcHJvcGFnYXRlIHBhcnRpY2xlIChwb3N0aWlvbiwgcmdiYSBldGMuLCkgcHJvcGVydGllcyB0b1xuICogdmVydGljZXMgaW4gYSBQYXJ0aWNsZUJ1ZmZlckdlb21ldHJ5LlxuICogVXNlcyBhIGR5bmFtaWMgdGV4dHVyZSBhdGxhcyB0byBzdXBwb3J0IHN5c3RlbXMgd2l0aCBtdXRsaXBsZSBzcHJpdGVzIGluIGEgcGVyZm9ybWFudCB3YXkuXG4gKlxuICogTk9URSEgVGhpcyBpcyBhbiBleHBlcmltZW50YWwgcmVuZGVyZXIgYW5kIGlzIGN1cnJlbnRseSBub3QgY292ZXJlZCBieSB0ZXN0cywgY292ZXJhZ2Ugd2lsbCBiZSBhZGRlZCB3aGVuIHRoZSBBUElcbiAqIGlzIG1vcmUgc3RhYmxlLiBDdXJyZW50bHkgb25seSBjb21wYXRpYmxlIHdpdGggc3ByaXRlL3RleHR1cmUgYmFzZWQgc3lzdGVtcy4gTWVzaGVzIGFyZSBub3QgeWV0IHN1cHBvcnRlZC5cbiAqXG4gKiBAYXV0aG9yIHRocmF4IDxtYW50aHJheEBnbWFpbC5jb20+XG4gKiBAYXV0aG9yIHJvaGFuLWRlc2hwYW5kZSA8cm9oYW5AY3JlYXRpdmVsaWZlZm9ybS5jb20+XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdQVVJlbmRlcmVyIGV4dGVuZHMgQmFzZVJlbmRlcmVyIHtcbiAgY29uc3RydWN0b3IoY29udGFpbmVyLCBUSFJFRSwgb3B0aW9ucyA9IERFRkFVTFRfUkVOREVSRVJfT1BUSU9OUykge1xuICAgIHN1cGVyKFJFTkRFUkVSX1RZUEVfR1BVKTtcblxuICAgIGNvbnN0IHsgc2hvdWxkRm9yY2VEZXNrdG9wUmVuZGVyZXIsIHNob3VsZEZvcmNlTW9iaWxlUmVuZGVyZXIgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgYXJncyA9IFtjb250YWluZXIsIFRIUkVFLCBvcHRpb25zXTtcblxuICAgIGlmIChzaG91bGRGb3JjZURlc2t0b3BSZW5kZXJlcikge1xuICAgICAgcmV0dXJuIG5ldyBEZXNrdG9wR1BVUmVuZGVyZXIoLi4uYXJncyk7XG4gICAgfVxuXG4gICAgaWYgKHNob3VsZEZvcmNlTW9iaWxlUmVuZGVyZXIpIHtcbiAgICAgIHJldHVybiBuZXcgTW9iaWxlR1BVUmVuZGVyZXIoLi4uYXJncyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzRmxvYXRpbmdQb2ludFRleHR1cmVTdXBwb3J0ZWQoKSkge1xuICAgICAgcmV0dXJuIG5ldyBNb2JpbGVHUFVSZW5kZXJlciguLi5hcmdzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERlc2t0b3BHUFVSZW5kZXJlciguLi5hcmdzKTtcbiAgfVxuXG4gIGlzRmxvYXRpbmdQb2ludFRleHR1cmVTdXBwb3J0ZWQoKSB7XG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG5cbiAgICBpZiAod2luZG93LldlYkdMMlJlbmRlcmluZ0NvbnRleHQgJiYgY2FudmFzLmdldENvbnRleHQoJ3dlYmdsMicpKSB7XG4gICAgICAvLyByZXR1cm4gZmFsc2UgaGVyZSB0byB0ZXN0IHRoZSBtb2JpbGUgcmVuZGVyZXIgb24gZGVza3RvcFxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgnd2ViZ2wnKTtcbiAgICBjb25zdCBzdXBwb3J0ID0gISFnbC5nZXRFeHRlbnNpb24oJ09FU190ZXh0dXJlX2Zsb2F0Jyk7XG5cbiAgICBjYW52YXMucmVtb3ZlKCk7XG5cbiAgICByZXR1cm4gc3VwcG9ydDtcbiAgfVxufVxuIl19
@@ -1,93 +0,0 @@
1
- import BaseRenderer from './BaseRenderer';
2
- import { PUID } from '../utils';
3
- import { Pool } from '../core';
4
- import { RENDERER_TYPE_MESH as type } from './types';
5
- /**
6
- * @requires THREE - { Mesh, BoxGeometry, MeshLambertMaterial }
7
- */
8
-
9
- export default class MeshRenderer extends BaseRenderer {
10
- /**
11
- * @param {object} container - An Object3D container, usually a THREE.Scene
12
- * @param {object} THREE - THREE Api
13
- */
14
- constructor(container, THREE) {
15
- super(type);
16
- this.container = container;
17
- this._targetPool = new Pool();
18
- this._materialPool = new Pool();
19
- this._body = new THREE.Mesh(new THREE.BoxGeometry(50, 50, 50), new THREE.MeshLambertMaterial({
20
- color: '#ff0000'
21
- }));
22
- }
23
-
24
- isThreeSprite(particle) {
25
- return particle.target.isSprite;
26
- }
27
-
28
- onSystemUpdate() {}
29
-
30
- onParticleCreated(particle) {
31
- if (!particle.target) {
32
- //set target
33
- if (!particle.body) particle.body = this._body;
34
- particle.target = this._targetPool.get(particle.body); //set material
35
-
36
- if (particle.useAlpha || particle.useColor) {
37
- particle.target.material.__puid = PUID.id(particle.body.material);
38
- particle.target.material = this._materialPool.get(particle.target.material);
39
- }
40
- }
41
-
42
- if (particle.target) {
43
- particle.target.position.copy(particle.position);
44
- this.container.add(particle.target);
45
- }
46
- }
47
-
48
- onParticleUpdate(particle) {
49
- const {
50
- target,
51
- useAlpha,
52
- useColor
53
- } = particle;
54
-
55
- if (!target) {
56
- return;
57
- }
58
-
59
- target.position.copy(particle.position);
60
- this.rotate(particle);
61
- this.scale(particle);
62
-
63
- if (useAlpha) {
64
- target.material.opacity = particle.alpha;
65
- target.material.transparent = true;
66
- }
67
-
68
- if (useColor) {
69
- target.material.color.copy(particle.color);
70
- }
71
- }
72
-
73
- rotate(particle) {
74
- particle.target.rotation.set(particle.rotation.x, particle.rotation.y, particle.rotation.z);
75
- }
76
-
77
- scale(particle) {
78
- particle.target.scale.set(particle.scale, particle.scale, particle.scale);
79
- }
80
-
81
- onParticleDead(particle) {
82
- if (particle.target) {
83
- if (particle.useAlpha || particle.useColor) this._materialPool.expire(particle.target.material);
84
-
85
- this._targetPool.expire(particle.target);
86
-
87
- this.container.remove(particle.target);
88
- particle.target = null;
89
- }
90
- }
91
-
92
- }
93
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZW5kZXJlci9NZXNoUmVuZGVyZXIuanMiXSwibmFtZXMiOlsiQmFzZVJlbmRlcmVyIiwiUFVJRCIsIlBvb2wiLCJSRU5ERVJFUl9UWVBFX01FU0giLCJ0eXBlIiwiTWVzaFJlbmRlcmVyIiwiY29uc3RydWN0b3IiLCJjb250YWluZXIiLCJUSFJFRSIsIl90YXJnZXRQb29sIiwiX21hdGVyaWFsUG9vbCIsIl9ib2R5IiwiTWVzaCIsIkJveEdlb21ldHJ5IiwiTWVzaExhbWJlcnRNYXRlcmlhbCIsImNvbG9yIiwiaXNUaHJlZVNwcml0ZSIsInBhcnRpY2xlIiwidGFyZ2V0IiwiaXNTcHJpdGUiLCJvblN5c3RlbVVwZGF0ZSIsIm9uUGFydGljbGVDcmVhdGVkIiwiYm9keSIsImdldCIsInVzZUFscGhhIiwidXNlQ29sb3IiLCJtYXRlcmlhbCIsIl9fcHVpZCIsImlkIiwicG9zaXRpb24iLCJjb3B5IiwiYWRkIiwib25QYXJ0aWNsZVVwZGF0ZSIsInJvdGF0ZSIsInNjYWxlIiwib3BhY2l0eSIsImFscGhhIiwidHJhbnNwYXJlbnQiLCJyb3RhdGlvbiIsInNldCIsIngiLCJ5IiwieiIsIm9uUGFydGljbGVEZWFkIiwiZXhwaXJlIiwicmVtb3ZlIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxZQUFQLE1BQXlCLGdCQUF6QjtBQUNBLFNBQVNDLElBQVQsUUFBcUIsVUFBckI7QUFDQSxTQUFTQyxJQUFULFFBQXFCLFNBQXJCO0FBQ0EsU0FBU0Msa0JBQWtCLElBQUlDLElBQS9CLFFBQTJDLFNBQTNDO0FBRUE7QUFDQTtBQUNBOztBQUNBLGVBQWUsTUFBTUMsWUFBTixTQUEyQkwsWUFBM0IsQ0FBd0M7QUFDckQ7QUFDRjtBQUNBO0FBQ0E7QUFDRU0sRUFBQUEsV0FBVyxDQUFDQyxTQUFELEVBQVlDLEtBQVosRUFBbUI7QUFDNUIsVUFBTUosSUFBTjtBQUVBLFNBQUtHLFNBQUwsR0FBaUJBLFNBQWpCO0FBQ0EsU0FBS0UsV0FBTCxHQUFtQixJ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Q0FBQ3FCLFFBQVQsQ0FBa0JJLENBQXpGO0FBQ0Q7O0FBRURSLEVBQUFBLEtBQUssQ0FBQ2pCLFFBQUQsRUFBVztBQUNkQSxJQUFBQSxRQUFRLENBQUNDLE1BQVQsQ0FBZ0JnQixLQUFoQixDQUFzQkssR0FBdEIsQ0FBMEJ0QixRQUFRLENBQUNpQixLQUFuQyxFQUEwQ2pCLFFBQVEsQ0FBQ2lCLEtBQW5ELEVBQTBEakIsUUFBUSxDQUFDaUIsS0FBbkU7QUFDRDs7QUFFRFMsRUFBQUEsY0FBYyxDQUFDMUIsUUFBRCxFQUFXO0FBQ3ZCLFFBQUlBLFFBQVEsQ0FBQ0MsTUFBYixFQUFxQjtBQUNuQixVQUFJRCxRQUFRLENBQUNPLFFBQVQsSUFBcUJQLFFBQVEsQ0FBQ1EsUUFBbEMsRUFDRSxLQUFLZixhQUFMLENBQW1Ca0MsTUFBbkIsQ0FBMEIzQixRQUFRLENBQUNDLE1BQVQsQ0FBZ0JRLFFBQTFDOztBQUVGLFdBQUtqQixXQUFMLENBQWlCbUMsTUFBakIsQ0FBd0IzQixRQUFRLENBQUNDLE1BQWpDOztBQUNBLFdBQUtYLFNBQUwsQ0FBZXNDLE1BQWYsQ0FBc0I1QixRQUFRLENBQUNDLE1BQS9CO0FBQ0FELE1BQUFBLFFBQVEsQ0FBQ0MsTUFBVCxHQUFrQixJQUFsQjtBQUNEO0FBQ0Y7O0FBcEZvRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlUmVuZGVyZXIgZnJvbSAnLi9CYXNlUmVuZGVyZXInO1xuaW1wb3J0IHsgUFVJRCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFBvb2wgfSBmcm9tICcuLi9jb3JlJztcbmltcG9ydCB7IFJFTkRFUkVSX1RZUEVfTUVTSCBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQHJlcXVpcmVzIFRIUkVFIC0geyBNZXNoLCBCb3hHZW9tZXRyeSwgTWVzaExhbWJlcnRNYXRlcmlhbCB9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1lc2hSZW5kZXJlciBleHRlbmRzIEJhc2VSZW5kZXJlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGFpbmVyIC0gQW4gT2JqZWN0M0QgY29udGFpbmVyLCB1c3VhbGx5IGEgVEhSRUUuU2NlbmVcbiAgICogQHBhcmFtIHtvYmplY3R9IFRIUkVFIC0gVEhSRUUgQXBpXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb250YWluZXIsIFRIUkVFKSB7XG4gICAgc3VwZXIodHlwZSk7XG5cbiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB0aGlzLl90YXJnZXRQb29sID0gbmV3IFBvb2woKTtcbiAgICB0aGlzLl9tYXRlcmlhbFBvb2wgPSBuZXcgUG9vbCgpO1xuICAgIHRoaXMuX2JvZHkgPSBuZXcgVEhSRUUuTWVzaChcbiAgICAgIG5ldyBUSFJFRS5Cb3hHZW9tZXRyeSg1MCwgNTAsIDUwKSxcbiAgICAgIG5ldyBUSFJFRS5NZXNoTGFtYmVydE1hdGVyaWFsKHsgY29sb3I6ICcjZmYwMDAwJyB9KVxuICAgICk7XG4gIH1cblxuICBpc1RocmVlU3ByaXRlKHBhcnRpY2xlKSB7XG4gICAgcmV0dXJuIHBhcnRpY2xlLnRhcmdldC5pc1Nwcml0ZTtcbiAgfVxuXG4gIG9uU3lzdGVtVXBkYXRlKCkge31cblxuICBvblBhcnRpY2xlQ3JlYXRlZChwYXJ0aWNsZSkge1xuICAgIGlmICghcGFydGljbGUudGFyZ2V0KSB7XG4gICAgICAvL3NldCB0YXJnZXRcbiAgICAgIGlmICghcGFydGljbGUuYm9keSkgcGFydGljbGUuYm9keSA9IHRoaXMuX2JvZHk7XG4gICAgICBwYXJ0aWNsZS50YXJnZXQgPSB0aGlzLl90YXJnZXRQb29sLmdldChwYXJ0aWNsZS5ib2R5KTtcblxuICAgICAgLy9zZXQgbWF0ZXJpYWxcbiAgICAgIGlmIChwYXJ0aWNsZS51c2VBbHBoYSB8fCBwYXJ0aWNsZS51c2VDb2xvcikge1xuICAgICAgICBwYXJ0aWNsZS50YXJnZXQubWF0ZXJpYWwuX19wdWlkID0gUFVJRC5pZChwYXJ0aWNsZS5ib2R5Lm1hdGVyaWFsKTtcbiAgICAgICAgcGFydGljbGUudGFyZ2V0Lm1hdGVyaWFsID0gdGhpcy5fbWF0ZXJpYWxQb29sLmdldChcbiAgICAgICAgICBwYXJ0aWNsZS50YXJnZXQubWF0ZXJpYWxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFydGljbGUudGFyZ2V0KSB7XG4gICAgICBwYXJ0aWNsZS50YXJnZXQucG9zaXRpb24uY29weShwYXJ0aWNsZS5wb3NpdGlvbik7XG4gICAgICB0aGlzLmNvbnRhaW5lci5hZGQocGFydGljbGUudGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICBvblBhcnRpY2xlVXBkYXRlKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgeyB0YXJnZXQsIHVzZUFscGhhLCB1c2VDb2xvciB9ID0gcGFydGljbGU7XG5cbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRhcmdldC5wb3NpdGlvbi5jb3B5KHBhcnRpY2xlLnBvc2l0aW9uKTtcblxuICAgIHRoaXMucm90YXRlKHBhcnRpY2xlKTtcblxuICAgIHRoaXMuc2NhbGUocGFydGljbGUpO1xuXG4gICAgaWYgKHVzZUFscGhhKSB7XG4gICAgICB0YXJnZXQubWF0ZXJpYWwub3BhY2l0eSA9IHBhcnRpY2xlLmFscGhhO1xuICAgICAgdGFyZ2V0Lm1hdGVyaWFsLnRyYW5zcGFyZW50ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodXNlQ29sb3IpIHtcbiAgICAgIHRhcmdldC5tYXRlcmlhbC5jb2xvci5jb3B5KHBhcnRpY2xlLmNvbG9yKTtcbiAgICB9XG4gIH1cblxuICByb3RhdGUocGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS50YXJnZXQucm90YXRpb24uc2V0KHBhcnRpY2xlLnJvdGF0aW9uLngsIHBhcnRpY2xlLnJvdGF0aW9uLnksIHBhcnRpY2xlLnJvdGF0aW9uLnopO1xuICB9XG5cbiAgc2NhbGUocGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS50YXJnZXQuc2NhbGUuc2V0KHBhcnRpY2xlLnNjYWxlLCBwYXJ0aWNsZS5zY2FsZSwgcGFydGljbGUuc2NhbGUpO1xuICB9XG5cbiAgb25QYXJ0aWNsZURlYWQocGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUudGFyZ2V0KSB7XG4gICAgICBpZiAocGFydGljbGUudXNlQWxwaGEgfHwgcGFydGljbGUudXNlQ29sb3IpXG4gICAgICAgIHRoaXMuX21hdGVyaWFsUG9vbC5leHBpcmUocGFydGljbGUudGFyZ2V0Lm1hdGVyaWFsKTtcblxuICAgICAgdGhpcy5fdGFyZ2V0UG9vbC5leHBpcmUocGFydGljbGUudGFyZ2V0KTtcbiAgICAgIHRoaXMuY29udGFpbmVyLnJlbW92ZShwYXJ0aWNsZS50YXJnZXQpO1xuICAgICAgcGFydGljbGUudGFyZ2V0ID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,30 +0,0 @@
1
- import MeshRenderer from './MeshRenderer';
2
- import { RENDERER_TYPE_SPRITE as type } from './types';
3
- /**
4
- * @requires THREE - { Mesh, BoxGeometry, MeshLambertMaterial, Sprite, SpriteMaterial }
5
- */
6
-
7
- export default class SpriteRenderer extends MeshRenderer {
8
- constructor(container, THREE) {
9
- super(container, THREE);
10
- /**
11
- * @desc The class type.
12
- * @type {string}
13
- */
14
-
15
- this.type = type;
16
- this._body = new THREE.Sprite(new THREE.SpriteMaterial({
17
- color: 0xffffff
18
- }));
19
- }
20
-
21
- rotate(particle) {
22
- particle.target.material.rotation = particle.rotation.z;
23
- }
24
-
25
- scale(particle) {
26
- particle.target.scale.set(particle.scale * particle.radius, particle.scale * particle.radius, 1);
27
- }
28
-
29
- }
30
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZW5kZXJlci9TcHJpdGVSZW5kZXJlci5qcyJdLCJuYW1lcyI6WyJNZXNoUmVuZGVyZXIiLCJSRU5ERVJFUl9UWVBFX1NQUklURSIsInR5cGUiLCJTcHJpdGVSZW5kZXJlciIsImNvbnN0cnVjdG9yIiwiY29udGFpbmVyIiwiVEhSRUUiLCJfYm9keSIsIlNwcml0ZSIsIlNwcml0ZU1hdGVyaWFsIiwiY29sb3IiLCJyb3RhdGUiLCJwYXJ0aWNsZSIsInRhcmdldCIsIm1hdGVyaWFsIiwicm90YXRpb24iLCJ6Iiwic2NhbGUiLCJzZXQiLCJyYWRpdXMiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFlBQVAsTUFBeUIsZ0JBQXpCO0FBQ0EsU0FBU0Msb0JBQW9CLElBQUlDLElBQWpDLFFBQTZDLFNBQTdDO0FBRUE7QUFDQTtBQUNBOztBQUNBLGVBQWUsTUFBTUMsY0FBTixTQUE2QkgsWUFBN0IsQ0FBMEM7QUFDdkRJLEVBQUFBLFdBQVcsQ0FBQ0MsU0FBRCxFQUFZQyxLQUFaLEVBQW1CO0FBQzVCLFVBQU1ELFNBQU4sRUFBaUJDLEtBQWpCO0FBRUE7QUFDSjtBQUNBO0FBQ0E7O0FBQ0ksU0FBS0osSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0ssS0FBTCxHQUFhLElBQUlELEtBQUssQ0FBQ0UsTUFBVixDQUNYLElBQUlGLEtBQUssQ0FBQ0csY0FBVixDQUF5QjtBQUFFQyxNQUFBQSxLQUFLLEVBQUU7QUFBVCxLQUF6QixDQURXLENBQWI7QUFHRDs7QUFFREMsRUFBQUEsTUFBTSxDQUFDQyxRQUFELEVBQVc7QUFDZkEsSUFBQUEsUUFBUSxDQUFDQyxNQUFULENBQWdCQyxRQUFoQixDQUF5QkMsUUFBekIsR0FBb0NILFFBQVEsQ0FBQ0csUUFBVCxDQUFrQkMsQ0FBdEQ7QUFDRDs7QUFFREMsRUFBQUEsS0FBSyxDQUFDTCxRQUFELEVBQVc7QUFDZEEsSUFBQUEsUUFBUSxDQUFDQyxNQUFULENBQWdCSSxLQUFoQixDQUFzQkMsR0FBdEIsQ0FDRU4sUUFBUSxDQUFDSyxLQUFULEdBQWlCTCxRQUFRLENBQUNPLE1BRDVCLEVBRUVQLFFBQVEsQ0FBQ0ssS0FBVCxHQUFpQkwsUUFBUSxDQUFDTyxNQUY1QixFQUdFLENBSEY7QUFLRDs7QUF4QnNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1lc2hSZW5kZXJlciBmcm9tICcuL01lc2hSZW5kZXJlcic7XG5pbXBvcnQgeyBSRU5ERVJFUl9UWVBFX1NQUklURSBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQHJlcXVpcmVzIFRIUkVFIC0geyBNZXNoLCBCb3hHZW9tZXRyeSwgTWVzaExhbWJlcnRNYXRlcmlhbCwgU3ByaXRlLCBTcHJpdGVNYXRlcmlhbCB9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNwcml0ZVJlbmRlcmVyIGV4dGVuZHMgTWVzaFJlbmRlcmVyIHtcbiAgY29uc3RydWN0b3IoY29udGFpbmVyLCBUSFJFRSkge1xuICAgIHN1cGVyKGNvbnRhaW5lciwgVEhSRUUpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGNsYXNzIHR5cGUuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuX2JvZHkgPSBuZXcgVEhSRUUuU3ByaXRlKFxuICAgICAgbmV3IFRIUkVFLlNwcml0ZU1hdGVyaWFsKHsgY29sb3I6IDB4ZmZmZmZmIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJvdGF0ZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLnRhcmdldC5tYXRlcmlhbC5yb3RhdGlvbiA9IHBhcnRpY2xlLnJvdGF0aW9uLno7XG4gIH1cblxuICBzY2FsZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLnRhcmdldC5zY2FsZS5zZXQoXG4gICAgICBwYXJ0aWNsZS5zY2FsZSAqIHBhcnRpY2xlLnJhZGl1cyxcbiAgICAgIHBhcnRpY2xlLnNjYWxlICogcGFydGljbGUucmFkaXVzLFxuICAgICAgMVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +0,0 @@
1
- export { default as CustomRenderer } from './CustomRenderer';
2
- export { default as MeshRenderer } from './MeshRenderer';
3
- export { default as SpriteRenderer } from './SpriteRenderer';
4
- export { default as GPURenderer } from './GPURenderer';
5
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZW5kZXJlci9pbmRleC5qcyJdLCJuYW1lcyI6WyJkZWZhdWx0IiwiQ3VzdG9tUmVuZGVyZXIiLCJNZXNoUmVuZGVyZXIiLCJTcHJpdGVSZW5kZXJlciIsIkdQVVJlbmRlcmVyIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxPQUFPLElBQUlDLGNBQXBCLFFBQTBDLGtCQUExQztBQUNBLFNBQVNELE9BQU8sSUFBSUUsWUFBcEIsUUFBd0MsZ0JBQXhDO0FBQ0EsU0FBU0YsT0FBTyxJQUFJRyxjQUFwQixRQUEwQyxrQkFBMUM7QUFDQSxTQUFTSCxPQUFPLElBQUlJLFdBQXBCLFFBQXVDLGVBQXZDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCBhcyBDdXN0b21SZW5kZXJlciB9IGZyb20gJy4vQ3VzdG9tUmVuZGVyZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBNZXNoUmVuZGVyZXIgfSBmcm9tICcuL01lc2hSZW5kZXJlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFNwcml0ZVJlbmRlcmVyIH0gZnJvbSAnLi9TcHJpdGVSZW5kZXJlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEdQVVJlbmRlcmVyIH0gZnJvbSAnLi9HUFVSZW5kZXJlcic7XG4iXX0=
@@ -1,8 +0,0 @@
1
- export const RENDERER_TYPE_BASE = 'BaseRenderer';
2
- export const RENDERER_TYPE_CUSTOM = 'CustomRenderer';
3
- export const RENDERER_TYPE_SPRITE = 'SpriteRenderer';
4
- export const RENDERER_TYPE_MESH = 'MeshRenderer';
5
- export const RENDERER_TYPE_GPU = 'GPURenderer';
6
- export const RENDERER_TYPE_GPU_MOBILE = 'MobileGPURenderer';
7
- export const RENDERER_TYPE_GPU_DESKTOP = 'DesktopGPURenderer';
8
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZW5kZXJlci90eXBlcy5qcyJdLCJuYW1lcyI6WyJSRU5ERVJFUl9UWVBFX0JBU0UiLCJSRU5ERVJFUl9UWVBFX0NVU1RPTSIsIlJFTkRFUkVSX1RZUEVfU1BSSVRFIiwiUkVOREVSRVJfVFlQRV9NRVNIIiwiUkVOREVSRVJfVFlQRV9HUFUiLCJSRU5ERVJFUl9UWVBFX0dQVV9NT0JJTEUiLCJSRU5ERVJFUl9UWVBFX0dQVV9ERVNLVE9QIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU1BLGtCQUFrQixHQUFHLGNBQTNCO0FBQ1AsT0FBTyxNQUFNQyxvQkFBb0IsR0FBRyxnQkFBN0I7QUFDUCxPQUFPLE1BQU1DLG9CQUFvQixHQUFHLGdCQUE3QjtBQUNQLE9BQU8sTUFBTUMsa0JBQWtCLEdBQUcsY0FBM0I7QUFDUCxPQUFPLE1BQU1DLGlCQUFpQixHQUFHLGFBQTFCO0FBQ1AsT0FBTyxNQUFNQyx3QkFBd0IsR0FBRyxtQkFBakM7QUFDUCxPQUFPLE1BQU1DLHlCQUF5QixHQUFHLG9CQUFsQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBSRU5ERVJFUl9UWVBFX0JBU0UgPSAnQmFzZVJlbmRlcmVyJztcbmV4cG9ydCBjb25zdCBSRU5ERVJFUl9UWVBFX0NVU1RPTSA9ICdDdXN0b21SZW5kZXJlcic7XG5leHBvcnQgY29uc3QgUkVOREVSRVJfVFlQRV9TUFJJVEUgPSAnU3ByaXRlUmVuZGVyZXInO1xuZXhwb3J0IGNvbnN0IFJFTkRFUkVSX1RZUEVfTUVTSCA9ICdNZXNoUmVuZGVyZXInO1xuZXhwb3J0IGNvbnN0IFJFTkRFUkVSX1RZUEVfR1BVID0gJ0dQVVJlbmRlcmVyJztcbmV4cG9ydCBjb25zdCBSRU5ERVJFUl9UWVBFX0dQVV9NT0JJTEUgPSAnTW9iaWxlR1BVUmVuZGVyZXInO1xuZXhwb3J0IGNvbnN0IFJFTkRFUkVSX1RZUEVfR1BVX0RFU0tUT1AgPSAnRGVza3RvcEdQVVJlbmRlcmVyJztcbiJdfQ==
@@ -1,32 +0,0 @@
1
- export default {
2
- getRGB: function (color) {
3
- var rgb = {};
4
-
5
- if (typeof color === 'number') {
6
- hex = Math.floor(color);
7
- rgb.r = (color >> 16 & 255) / 255;
8
- rgb.g = (color >> 8 & 255) / 255;
9
- rgb.b = (color & 255) / 255;
10
- } else if (typeof color === 'string') {
11
- var m;
12
-
13
- if (m = /^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(color)) {
14
- rgb.r = Math.min(255, parseInt(m[1], 10)) / 255;
15
- rgb.g = Math.min(255, parseInt(m[2], 10)) / 255;
16
- rgb.b = Math.min(255, parseInt(m[3], 10)) / 255; // eslint-disable-next-line no-useless-escape
17
- } else if (m = /^\#([A-Fa-f0-9]+)$/.exec(color)) {
18
- var hex = m[1];
19
- rgb.r = parseInt(hex.charAt(0) + hex.charAt(1), 16) / 255;
20
- rgb.g = parseInt(hex.charAt(2) + hex.charAt(3), 16) / 255;
21
- rgb.b = parseInt(hex.charAt(4) + hex.charAt(5), 16) / 255;
22
- }
23
- } else {
24
- rgb.r = color.r;
25
- rgb.g = color.g;
26
- rgb.b = color.b;
27
- }
28
-
29
- return rgb;
30
- }
31
- };
32
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9Db2xvclV0aWwuanMiXSwibmFtZXMiOlsiZ2V0UkdCIiwiY29sb3IiLCJyZ2IiLCJoZXgiLCJNYXRoIiwiZmxvb3IiLCJyIiwiZyIsImIiLCJtIiwiZXhlYyIsIm1pbiIsInBhcnNlSW50IiwiY2hhckF0Il0sIm1hcHBpbmdzIjoiQUFBQSxlQUFlO0FBQ2JBLEVBQUFBLE1BQU0sRUFBRSxVQUFTQyxLQUFULEVBQWdCO0FBQ3RCLFFBQUlDLEdBQUcsR0FBRyxFQUFWOztBQUVBLFFBQUksT0FBT0QsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUM3QkUsTUFBQUEsR0FBRyxHQUFHQyxJQUFJLENBQUNDLEtBQUwsQ0FBV0osS0FBWCxDQUFOO0FBQ0FDLE1BQUFBLEdBQUcsQ0FBQ0ksQ0FBSixHQUFRLENBQUVMLEtBQUssSUFBSSxFQUFWLEdBQWdCLEdBQWpCLElBQXdCLEdBQWhDO0FBQ0FDLE1BQUFBLEdBQUcsQ0FBQ0ssQ0FBSixHQUFRLENBQUVOLEtBQUssSUFBSSxDQUFWLEdBQWUsR0FBaEIsSUFBdUIsR0FBL0I7QUFDQUMsTUFBQUEsR0FBRyxDQUFDTSxDQUFKLEdBQVEsQ0FBQ1AsS0FBSyxHQUFHLEdBQVQsSUFBZ0IsR0FBeEI7QUFDRCxLQUxELE1BS08sSUFBSSxPQUFPQSxLQUFQLEtBQWlCLFFBQXJCLEVBQStCO0FBQ3BDLFVBQUlRLENBQUo7O0FBRUEsVUFDR0EsQ0FBQyxHQUFHLGdFQUFnRUMsSUFBaEUsQ0FDSFQsS0FERyxDQURQLEVBSUU7QUFDQUMsUUFBQUEsR0FBRyxDQUFDSSxDQUFKLEdBQVFGLElBQUksQ0FBQ08sR0FBTCxDQUFTLEdBQVQsRUFBY0MsUUFBUSxDQUFDSCxDQUFDLENBQUMsQ0FBRCxDQUFGLEVBQU8sRUFBUCxDQUF0QixJQUFvQyxHQUE1QztBQUNBUCxRQUFBQSxHQUFHLENBQUNLLENBQUosR0FBUUgsSUFBSSxDQUFDTyxHQUFMLENBQVMsR0FBVCxFQUFjQyxRQUFRLENBQUNILENBQUMsQ0FBQyxDQUFELENBQUYsRUFBTyxFQUFQLENBQXRCLElBQW9DLEdBQTVDO0FBQ0FQLFFBQUFBLEdBQUcsQ0FBQ00sQ0FBSixHQUFRSixJQUFJLENBQUNPLEdBQUwsQ0FBUyxHQUFULEVBQWNDLFFBQVEsQ0FBQ0gsQ0FBQyxDQUFDLENBQUQsQ0FBRixFQUFPLEVBQVAsQ0FBdEIsSUFBb0MsR0FBNUMsQ0FIQSxDQUlBO0FBQ0QsT0FURCxNQVNPLElBQUtBLENBQUMsR0FBRyxxQkFBcUJDLElBQXJCLENBQTBCVCxLQUExQixDQUFULEVBQTRDO0FBQ2pELFlBQUlFLEdBQUcsR0FBR00sQ0FBQyxDQUFDLENBQUQsQ0FBWDtBQUVBUCxRQUFBQSxHQUFHLENBQUNJLENBQUosR0FBUU0sUUFBUSxDQUFDVCxHQUFHLENBQUNVLE1BQUosQ0FBVyxDQUFYLElBQWdCVixHQUFHLENBQUNVLE1BQUosQ0FBVyxDQUFYLENBQWpCLEVBQWdDLEVBQWhDLENBQVIsR0FBOEMsR0FBdEQ7QUFDQVgsUUFBQUEsR0FBRyxDQUFDSyxDQUFKLEdBQVFLLFFBQVEsQ0FBQ1QsR0FBRyxDQUFDVSxNQUFKLENBQVcsQ0FBWCxJQUFnQlYsR0FBRyxDQUFDVSxNQUFKLENBQVcsQ0FBWCxDQUFqQixFQUFnQyxFQUFoQyxDQUFSLEdBQThDLEdBQXREO0FBQ0FYLFFBQUFBLEdBQUcsQ0FBQ00sQ0FBSixHQUFRSSxRQUFRLENBQUNULEdBQUcsQ0FBQ1UsTUFBSixDQUFXLENBQVgsSUFBZ0JWLEdBQUcsQ0FBQ1UsTUFBSixDQUFXLENBQVgsQ0FBakIsRUFBZ0MsRUFBaEMsQ0FBUixHQUE4QyxHQUF0RDtBQUNEO0FBQ0YsS0FuQk0sTUFtQkE7QUFDTFgsTUFBQUEsR0FBRyxDQUFDSSxDQUFKLEdBQVFMLEtBQUssQ0FBQ0ssQ0FBZDtBQUNBSixNQUFBQSxHQUFHLENBQUNLLENBQUosR0FBUU4sS0FBSyxDQUFDTSxDQUFkO0FBQ0FMLE1BQUFBLEdBQUcsQ0FBQ00sQ0FBSixHQUFRUCxLQUFLLENBQUNPLENBQWQ7QUFDRDs7QUFFRCxXQUFPTixHQUFQO0FBQ0Q7QUFuQ1ksQ0FBZiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0UkdCOiBmdW5jdGlvbihjb2xvcikge1xuICAgIHZhciByZ2IgPSB7fTtcblxuICAgIGlmICh0eXBlb2YgY29sb3IgPT09ICdudW1iZXInKSB7XG4gICAgICBoZXggPSBNYXRoLmZsb29yKGNvbG9yKTtcbiAgICAgIHJnYi5yID0gKChjb2xvciA+PiAxNikgJiAyNTUpIC8gMjU1O1xuICAgICAgcmdiLmcgPSAoKGNvbG9yID4+IDgpICYgMjU1KSAvIDI1NTtcbiAgICAgIHJnYi5iID0gKGNvbG9yICYgMjU1KSAvIDI1NTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb2xvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciBtO1xuXG4gICAgICBpZiAoXG4gICAgICAgIChtID0gL14oXFxkKylcXHMqLFxccyooXFxkKylcXHMqLFxccyooXFxkKylcXHMqKCxcXHMqKFswLTldKlxcLj9bMC05XSspXFxzKik/JC8uZXhlYyhcbiAgICAgICAgICBjb2xvclxuICAgICAgICApKVxuICAgICAgKSB7XG4gICAgICAgIHJnYi5yID0gTWF0aC5taW4oMjU1LCBwYXJzZUludChtWzFdLCAxMCkpIC8gMjU1O1xuICAgICAgICByZ2IuZyA9IE1hdGgubWluKDI1NSwgcGFyc2VJbnQobVsyXSwgMTApKSAvIDI1NTtcbiAgICAgICAgcmdiLmIgPSBNYXRoLm1pbigyNTUsIHBhcnNlSW50KG1bM10sIDEwKSkgLyAyNTU7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWVzY2FwZVxuICAgICAgfSBlbHNlIGlmICgobSA9IC9eXFwjKFtBLUZhLWYwLTldKykkLy5leGVjKGNvbG9yKSkpIHtcbiAgICAgICAgdmFyIGhleCA9IG1bMV07XG5cbiAgICAgICAgcmdiLnIgPSBwYXJzZUludChoZXguY2hhckF0KDApICsgaGV4LmNoYXJBdCgxKSwgMTYpIC8gMjU1O1xuICAgICAgICByZ2IuZyA9IHBhcnNlSW50KGhleC5jaGFyQXQoMikgKyBoZXguY2hhckF0KDMpLCAxNikgLyAyNTU7XG4gICAgICAgIHJnYi5iID0gcGFyc2VJbnQoaGV4LmNoYXJBdCg0KSArIGhleC5jaGFyQXQoNSksIDE2KSAvIDI1NTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmdiLnIgPSBjb2xvci5yO1xuICAgICAgcmdiLmcgPSBjb2xvci5nO1xuICAgICAgcmdiLmIgPSBjb2xvci5iO1xuICAgIH1cblxuICAgIHJldHVybiByZ2I7XG4gIH0sXG59O1xuIl19
@@ -1,19 +0,0 @@
1
- export default {
2
- _id: 0,
3
- _uids: new Map(),
4
- getNewId: function () {
5
- return `PUID_${++this._id}`;
6
- },
7
- id: function (functionOrObject) {
8
- if (this._uids.has(functionOrObject)) {
9
- return this._uids.get(functionOrObject);
10
- }
11
-
12
- const newId = this.getNewId();
13
-
14
- this._uids.set(functionOrObject, newId);
15
-
16
- return newId;
17
- }
18
- };
19
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9QVUlELmpzIl0sIm5hbWVzIjpbIl9pZCIsIl91aWRzIiwiTWFwIiwiZ2V0TmV3SWQiLCJpZCIsImZ1bmN0aW9uT3JPYmplY3QiLCJoYXMiLCJnZXQiLCJuZXdJZCIsInNldCJdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZTtBQUNiQSxFQUFBQSxHQUFHLEVBQUUsQ0FEUTtBQUViQyxFQUFBQSxLQUFLLEVBQUUsSUFBSUMsR0FBSixFQUZNO0FBR2JDLEVBQUFBLFFBQVEsRUFBRSxZQUFXO0FBQ25CLFdBQVEsUUFBTyxFQUFFLEtBQUtILEdBQUksRUFBMUI7QUFDRCxHQUxZO0FBTWJJLEVBQUFBLEVBQUUsRUFBRSxVQUFTQyxnQkFBVCxFQUEyQjtBQUM3QixRQUFJLEtBQUtKLEtBQUwsQ0FBV0ssR0FBWCxDQUFlRCxnQkFBZixDQUFKLEVBQXNDO0FBQ3BDLGFBQU8sS0FBS0osS0FBTCxDQUFXTSxHQUFYLENBQWVGLGdCQUFmLENBQVA7QUFDRDs7QUFFRCxVQUFNRyxLQUFLLEdBQUcsS0FBS0wsUUFBTCxFQUFkOztBQUVBLFNBQUtGLEtBQUwsQ0FBV1EsR0FBWCxDQUFlSixnQkFBZixFQUFpQ0csS0FBakM7O0FBRUEsV0FBT0EsS0FBUDtBQUNEO0FBaEJZLENBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIF9pZDogMCxcbiAgX3VpZHM6IG5ldyBNYXAoKSxcbiAgZ2V0TmV3SWQ6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBgUFVJRF8keysrdGhpcy5faWR9YDtcbiAgfSxcbiAgaWQ6IGZ1bmN0aW9uKGZ1bmN0aW9uT3JPYmplY3QpIHtcbiAgICBpZiAodGhpcy5fdWlkcy5oYXMoZnVuY3Rpb25Pck9iamVjdCkpIHtcbiAgICAgIHJldHVybiB0aGlzLl91aWRzLmdldChmdW5jdGlvbk9yT2JqZWN0KTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdJZCA9IHRoaXMuZ2V0TmV3SWQoKTtcblxuICAgIHRoaXMuX3VpZHMuc2V0KGZ1bmN0aW9uT3JPYmplY3QsIG5ld0lkKTtcblxuICAgIHJldHVybiBuZXdJZDtcbiAgfSxcbn07XG4iXX0=