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,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,24 +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.size = 0;
9
- this.color = new THREE.Color();
10
- this.alpha = 0;
11
- this.texture = null;
12
- this.index = 0;
13
- }
14
-
15
- reset() {
16
- this.position.set(0, 0, 0);
17
- this.size = 0;
18
- this.color.setRGB(0, 0, 0);
19
- this.alpha = 0;
20
- this.texture = null;
21
- }
22
-
23
- }
24
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9jb21tb24vc3RvcmVzL1RhcmdldC5qcyJdLCJuYW1lcyI6WyJUYXJnZXQiLCJjb25zdHJ1Y3RvciIsIlRIUkVFIiwicG9zaXRpb24iLCJWZWN0b3IzIiwic2l6ZSIsImNvbG9yIiwiQ29sb3IiLCJhbHBoYSIsInRleHR1cmUiLCJpbmRleCIsInJlc2V0Iiwic2V0Iiwic2V0UkdCIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sTUFBTUEsTUFBTixDQUFhO0FBQ2xCQyxFQUFBQSxXQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNqQixTQUFLQyxRQUFMLEdBQWdCLElBQUlELEtBQUssQ0FBQ0UsT0FBVixFQUFoQjtBQUNBLFNBQUtDLElBQUwsR0FBWSxDQUFaO0FBQ0EsU0FBS0MsS0FBTCxHQUFhLElBQUlKLEtBQUssQ0FBQ0ssS0FBVixFQUFiO0FBQ0EsU0FBS0MsS0FBTCxHQUFhLENBQWI7QUFDQSxTQUFLQyxPQUFMLEdBQWUsSUFBZjtBQUNBLFNBQUtDLEtBQUwsR0FBYSxDQUFiO0FBQ0Q7O0FBRURDLEVBQUFBLEtBQUssR0FBRztBQUNOLFNBQUtSLFFBQUwsQ0FBY1MsR0FBZCxDQUFrQixDQUFsQixFQUFxQixDQUFyQixFQUF3QixDQUF4QjtBQUNBLFNBQUtQLElBQUwsR0FBWSxDQUFaO0FBQ0EsU0FBS0MsS0FBTCxDQUFXTyxNQUFYLENBQWtCLENBQWxCLEVBQXFCLENBQXJCLEVBQXdCLENBQXhCO0FBQ0EsU0FBS0wsS0FBTCxHQUFhLENBQWI7QUFDQSxTQUFLQyxPQUFMLEdBQWUsSUFBZjtBQUNEOztBQWhCaUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNpbXBsZSBjbGFzcyB0aGF0IHN0b3JlcyB0aGUgcGFydGljbGUncyBcInRhcmdldFwiIG9yIFwibmV4dFwiIHN0YXRlLlxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIFRhcmdldCB7XG4gIGNvbnN0cnVjdG9yKFRIUkVFKSB7XG4gICAgdGhpcy5wb3NpdGlvbiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgdGhpcy5zaXplID0gMDtcbiAgICB0aGlzLmNvbG9yID0gbmV3IFRIUkVFLkNvbG9yKCk7XG4gICAgdGhpcy5hbHBoYSA9IDA7XG4gICAgdGhpcy50ZXh0dXJlID0gbnVsbDtcbiAgICB0aGlzLmluZGV4ID0gMDtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMucG9zaXRpb24uc2V0KDAsIDAsIDApO1xuICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgdGhpcy5jb2xvci5zZXRSR0IoMCwgMCwgMCk7XG4gICAgdGhpcy5hbHBoYSA9IDA7XG4gICAgdGhpcy50ZXh0dXJlID0gbnVsbDtcbiAgfVxufVxuIl19
@@ -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,94 +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
- rotation
54
- } = particle;
55
-
56
- if (!target) {
57
- return;
58
- }
59
-
60
- target.position.copy(particle.position);
61
-
62
- if (!this.isThreeSprite(particle)) {
63
- target.rotation.set(rotation.x, rotation.y, rotation.z);
64
- }
65
-
66
- this.scale(particle);
67
-
68
- if (useAlpha) {
69
- target.material.opacity = particle.alpha;
70
- target.material.transparent = true;
71
- }
72
-
73
- if (useColor) {
74
- target.material.color.copy(particle.color);
75
- }
76
- }
77
-
78
- scale(particle) {
79
- particle.target.scale.set(particle.scale, particle.scale, particle.scale);
80
- }
81
-
82
- onParticleDead(particle) {
83
- if (particle.target) {
84
- if (particle.useAlpha || particle.useColor) this._materialPool.expire(particle.target.material);
85
-
86
- this._targetPool.expire(particle.target);
87
-
88
- this.container.remove(particle.target);
89
- particle.target = null;
90
- }
91
- }
92
-
93
- }
94
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZW5kZXJlci9NZXNoUmVuZGVyZXIuanMiXSwibmFtZXMiOlsiQmFzZVJlbmRlcmVyIiwiUFVJRCIsIlBvb2wiLCJSRU5ERVJFUl9UWVBFX01FU0giLCJ0eXBlIiwiTWVzaFJlbmRlcmVyIiwiY29uc3RydWN0b3IiLCJjb250YWluZXIiLCJUSFJFRSIsIl90YXJnZXRQb29sIiwiX21hdGVyaWFsUG9vbCIsIl9ib2R5IiwiTWVzaCIsIkJveEdlb21ldHJ5IiwiTWVzaExhbWJlcnRNYXRlcmlhbCIsImNvbG9yIiwiaXNUaHJlZVNwcml0ZSIsInBhcnRpY2xlIiwidGFyZ2V0IiwiaXNTcHJpdGUiLCJvblN5c3RlbVVwZGF0ZSIsIm9uUGFydGljbGVDcmVhdGVkIiwiYm9keSIsImdldCIsInVzZUFscGhhIiwidXNlQ29sb3IiLCJtYXRlcmlhbCIsIl9fcHVpZCIsImlkIiwicG9zaXRpb24iLCJjb3B5IiwiYWRkIiwib25QYXJ0aWNsZVVwZGF0ZSIsInJvdGF0aW9uIiwic2V0IiwieCIsInkiLCJ6Iiwic2NhbGUiLCJvcGFjaXR5IiwiYWxwaGEiLCJ0cmFuc3BhcmVudCIsIm9uUGFydGljbGVEZWFkIiwiZXhwaXJlIiwicmVtb3ZlIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxZQUFQLE1BQXlCLGdCQUF6QjtBQUNBLFNBQVNDLElBQVQsUUFBcUIsVUFBckI7QUFDQSxTQUFTQyxJQUFULFFBQXFCLFNBQXJCO0FBQ0EsU0FBU0Msa0JBQWtCLElBQUlDLElBQS9CLFFBQTJDLFNBQTNDO0FBRUE7QUFDQTtBQUNBOztBQUNBLGVBQWUsTUFBTUMsWUFBTixTQUEyQkwsWUFBM0IsQ0FBd0M7QUFDckQ7QUFDRjtBQUNBO0FBQ0E7QUFDRU0sRUFBQUEsV0FBVyxDQUFDQyxTQUFELEVBQVlDLEtBQVosRUFBbUI7QUFDNUIsVUFBTUosSUFBTjtBQUVBLFNBQUtHLFNBQUwsR0FBaUJBLFNBQWpCO0FBQ0EsU0FBS0UsV0FBTCxHQUFtQixJQUFJUCxJQUFK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UUFBRCxFQUFXO0FBQ2RBLElBQUFBLFFBQVEsQ0FBQ0MsTUFBVCxDQUFnQm9CLEtBQWhCLENBQXNCSixHQUF0QixDQUEwQmpCLFFBQVEsQ0FBQ3FCLEtBQW5DLEVBQTBDckIsUUFBUSxDQUFDcUIsS0FBbkQsRUFBMERyQixRQUFRLENBQUNxQixLQUFuRTtBQUNEOztBQUVESSxFQUFBQSxjQUFjLENBQUN6QixRQUFELEVBQVc7QUFDdkIsUUFBSUEsUUFBUSxDQUFDQyxNQUFiLEVBQXFCO0FBQ25CLFVBQUlELFFBQVEsQ0FBQ08sUUFBVCxJQUFxQlAsUUFBUSxDQUFDUSxRQUFsQyxFQUNFLEtBQUtmLGFBQUwsQ0FBbUJpQyxNQUFuQixDQUEwQjFCLFFBQVEsQ0FBQ0MsTUFBVCxDQUFnQlEsUUFBMUM7O0FBRUYsV0FBS2pCLFdBQUwsQ0FBaUJrQyxNQUFqQixDQUF3QjFCLFFBQVEsQ0FBQ0MsTUFBakM7O0FBQ0EsV0FBS1gsU0FBTCxDQUFlcUMsTUFBZixDQUFzQjNCLFFBQVEsQ0FBQ0MsTUFBL0I7QUFDQUQsTUFBQUEsUUFBUSxDQUFDQyxNQUFULEdBQWtCLElBQWxCO0FBQ0Q7QUFDRjs7QUFsRm9EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VSZW5kZXJlciBmcm9tICcuL0Jhc2VSZW5kZXJlcic7XG5pbXBvcnQgeyBQVUlEIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUG9vbCB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgUkVOREVSRVJfVFlQRV9NRVNIIGFzIHR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBAcmVxdWlyZXMgVEhSRUUgLSB7IE1lc2gsIEJveEdlb21ldHJ5LCBNZXNoTGFtYmVydE1hdGVyaWFsIH1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWVzaFJlbmRlcmVyIGV4dGVuZHMgQmFzZVJlbmRlcmVyIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250YWluZXIgLSBBbiBPYmplY3QzRCBjb250YWluZXIsIHVzdWFsbHkgYSBUSFJFRS5TY2VuZVxuICAgKiBAcGFyYW0ge29iamVjdH0gVEhSRUUgLSBUSFJFRSBBcGlcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbnRhaW5lciwgVEhSRUUpIHtcbiAgICBzdXBlcih0eXBlKTtcblxuICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIHRoaXMuX3RhcmdldFBvb2wgPSBuZXcgUG9vbCgpO1xuICAgIHRoaXMuX21hdGVyaWFsUG9vbCA9IG5ldyBQb29sKCk7XG4gICAgdGhpcy5fYm9keSA9IG5ldyBUSFJFRS5NZXNoKFxuICAgICAgbmV3IFRIUkVFLkJveEdlb21ldHJ5KDUwLCA1MCwgNTApLFxuICAgICAgbmV3IFRIUkVFLk1lc2hMYW1iZXJ0TWF0ZXJpYWwoeyBjb2xvcjogJyNmZjAwMDAnIH0pXG4gICAgKTtcbiAgfVxuXG4gIGlzVGhyZWVTcHJpdGUocGFydGljbGUpIHtcbiAgICByZXR1cm4gcGFydGljbGUudGFyZ2V0LmlzU3ByaXRlO1xuICB9XG5cbiAgb25TeXN0ZW1VcGRhdGUoKSB7fVxuXG4gIG9uUGFydGljbGVDcmVhdGVkKHBhcnRpY2xlKSB7XG4gICAgaWYgKCFwYXJ0aWNsZS50YXJnZXQpIHtcbiAgICAgIC8vc2V0IHRhcmdldFxuICAgICAgaWYgKCFwYXJ0aWNsZS5ib2R5KSBwYXJ0aWNsZS5ib2R5ID0gdGhpcy5fYm9keTtcbiAgICAgIHBhcnRpY2xlLnRhcmdldCA9IHRoaXMuX3RhcmdldFBvb2wuZ2V0KHBhcnRpY2xlLmJvZHkpO1xuXG4gICAgICAvL3NldCBtYXRlcmlhbFxuICAgICAgaWYgKHBhcnRpY2xlLnVzZUFscGhhIHx8IHBhcnRpY2xlLnVzZUNvbG9yKSB7XG4gICAgICAgIHBhcnRpY2xlLnRhcmdldC5tYXRlcmlhbC5fX3B1aWQgPSBQVUlELmlkKHBhcnRpY2xlLmJvZHkubWF0ZXJpYWwpO1xuICAgICAgICBwYXJ0aWNsZS50YXJnZXQubWF0ZXJpYWwgPSB0aGlzLl9tYXRlcmlhbFBvb2wuZ2V0KFxuICAgICAgICAgIHBhcnRpY2xlLnRhcmdldC5tYXRlcmlhbFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXJ0aWNsZS50YXJnZXQpIHtcbiAgICAgIHBhcnRpY2xlLnRhcmdldC5wb3NpdGlvbi5jb3B5KHBhcnRpY2xlLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMuY29udGFpbmVyLmFkZChwYXJ0aWNsZS50YXJnZXQpO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFydGljbGVVcGRhdGUocGFydGljbGUpIHtcbiAgICBjb25zdCB7IHRhcmdldCwgdXNlQWxwaGEsIHVzZUNvbG9yLCByb3RhdGlvbiB9ID0gcGFydGljbGU7XG5cbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRhcmdldC5wb3NpdGlvbi5jb3B5KHBhcnRpY2xlLnBvc2l0aW9uKTtcblxuICAgIGlmICghdGhpcy5pc1RocmVlU3ByaXRlKHBhcnRpY2xlKSkge1xuICAgICAgdGFyZ2V0LnJvdGF0aW9uLnNldChyb3RhdGlvbi54LCByb3RhdGlvbi55LCByb3RhdGlvbi56KTtcbiAgICB9XG5cbiAgICB0aGlzLnNjYWxlKHBhcnRpY2xlKTtcblxuICAgIGlmICh1c2VBbHBoYSkge1xuICAgICAgdGFyZ2V0Lm1hdGVyaWFsLm9wYWNpdHkgPSBwYXJ0aWNsZS5hbHBoYTtcbiAgICAgIHRhcmdldC5tYXRlcmlhbC50cmFuc3BhcmVudCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHVzZUNvbG9yKSB7XG4gICAgICB0YXJnZXQubWF0ZXJpYWwuY29sb3IuY29weShwYXJ0aWNsZS5jb2xvcik7XG4gICAgfVxuICB9XG5cbiAgc2NhbGUocGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS50YXJnZXQuc2NhbGUuc2V0KHBhcnRpY2xlLnNjYWxlLCBwYXJ0aWNsZS5zY2FsZSwgcGFydGljbGUuc2NhbGUpO1xuICB9XG5cbiAgb25QYXJ0aWNsZURlYWQocGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUudGFyZ2V0KSB7XG4gICAgICBpZiAocGFydGljbGUudXNlQWxwaGEgfHwgcGFydGljbGUudXNlQ29sb3IpXG4gICAgICAgIHRoaXMuX21hdGVyaWFsUG9vbC5leHBpcmUocGFydGljbGUudGFyZ2V0Lm1hdGVyaWFsKTtcblxuICAgICAgdGhpcy5fdGFyZ2V0UG9vbC5leHBpcmUocGFydGljbGUudGFyZ2V0KTtcbiAgICAgIHRoaXMuY29udGFpbmVyLnJlbW92ZShwYXJ0aWNsZS50YXJnZXQpO1xuICAgICAgcGFydGljbGUudGFyZ2V0ID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,26 +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
- scale(particle) {
22
- particle.target.scale.set(particle.scale * particle.radius, particle.scale * particle.radius, 1);
23
- }
24
-
25
- }
26
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZW5kZXJlci9TcHJpdGVSZW5kZXJlci5qcyJdLCJuYW1lcyI6WyJNZXNoUmVuZGVyZXIiLCJSRU5ERVJFUl9UWVBFX1NQUklURSIsInR5cGUiLCJTcHJpdGVSZW5kZXJlciIsImNvbnN0cnVjdG9yIiwiY29udGFpbmVyIiwiVEhSRUUiLCJfYm9keSIsIlNwcml0ZSIsIlNwcml0ZU1hdGVyaWFsIiwiY29sb3IiLCJzY2FsZSIsInBhcnRpY2xlIiwidGFyZ2V0Iiwic2V0IiwicmFkaXVzIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxZQUFQLE1BQXlCLGdCQUF6QjtBQUNBLFNBQVNDLG9CQUFvQixJQUFJQyxJQUFqQyxRQUE2QyxTQUE3QztBQUVBO0FBQ0E7QUFDQTs7QUFDQSxlQUFlLE1BQU1DLGNBQU4sU0FBNkJILFlBQTdCLENBQTBDO0FBQ3ZESSxFQUFBQSxXQUFXLENBQUNDLFNBQUQsRUFBWUMsS0FBWixFQUFtQjtBQUM1QixVQUFNRCxTQUFOLEVBQWlCQyxLQUFqQjtBQUVBO0FBQ0o7QUFDQTtBQUNBOztBQUNJLFNBQUtKLElBQUwsR0FBWUEsSUFBWjtBQUNBLFNBQUtLLEtBQUwsR0FBYSxJQUFJRCxLQUFLLENBQUNFLE1BQVYsQ0FDWCxJQUFJRixLQUFLLENBQUNHLGNBQVYsQ0FBeUI7QUFBRUMsTUFBQUEsS0FBSyxFQUFFO0FBQVQsS0FBekIsQ0FEVyxDQUFiO0FBR0Q7O0FBRURDLEVBQUFBLEtBQUssQ0FBQ0MsUUFBRCxFQUFXO0FBQ2RBLElBQUFBLFFBQVEsQ0FBQ0MsTUFBVCxDQUFnQkYsS0FBaEIsQ0FBc0JHLEdBQXRCLENBQ0VGLFFBQVEsQ0FBQ0QsS0FBVCxHQUFpQkMsUUFBUSxDQUFDRyxNQUQ1QixFQUVFSCxRQUFRLENBQUNELEtBQVQsR0FBaUJDLFFBQVEsQ0FBQ0csTUFGNUIsRUFHRSxDQUhGO0FBS0Q7O0FBcEJzRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNZXNoUmVuZGVyZXIgZnJvbSAnLi9NZXNoUmVuZGVyZXInO1xuaW1wb3J0IHsgUkVOREVSRVJfVFlQRV9TUFJJVEUgYXMgdHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEByZXF1aXJlcyBUSFJFRSAtIHsgTWVzaCwgQm94R2VvbWV0cnksIE1lc2hMYW1iZXJ0TWF0ZXJpYWwsIFNwcml0ZSwgU3ByaXRlTWF0ZXJpYWwgfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTcHJpdGVSZW5kZXJlciBleHRlbmRzIE1lc2hSZW5kZXJlciB7XG4gIGNvbnN0cnVjdG9yKGNvbnRhaW5lciwgVEhSRUUpIHtcbiAgICBzdXBlcihjb250YWluZXIsIFRIUkVFKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBjbGFzcyB0eXBlLlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLl9ib2R5ID0gbmV3IFRIUkVFLlNwcml0ZShcbiAgICAgIG5ldyBUSFJFRS5TcHJpdGVNYXRlcmlhbCh7IGNvbG9yOiAweGZmZmZmZiB9KVxuICAgICk7XG4gIH1cblxuICBzY2FsZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLnRhcmdldC5zY2FsZS5zZXQoXG4gICAgICBwYXJ0aWNsZS5zY2FsZSAqIHBhcnRpY2xlLnJhZGl1cyxcbiAgICAgIHBhcnRpY2xlLnNjYWxlICogcGFydGljbGUucmFkaXVzLFxuICAgICAgMVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -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=
@@ -1,31 +0,0 @@
1
- import { Vector3 } from '../core/three/';
2
- export default {
3
- toScreenPos: function () {
4
- var vector = new Vector3();
5
- return function (pos, camera, canvas) {
6
- vector.copy(pos); // map to normalized device coordinate (NDC) space
7
-
8
- vector.project(camera); // map to 2D screen space
9
-
10
- vector.x = Math.round((vector.x + 1) * canvas.width / 2);
11
- vector.y = Math.round((-vector.y + 1) * canvas.height / 2);
12
- vector.z = 0;
13
- return vector;
14
- };
15
- }(),
16
- toSpacePos: function () {
17
- var vector = new Vector3(),
18
- dir = new Vector3(),
19
- distance;
20
- return function (pos, camera, canvas) {
21
- vector.set(pos.x / canvas.width * 2 - 1, -(pos.y / canvas.height) * 2 + 1, 0.5);
22
- vector.unproject(camera);
23
- dir.copy(vector.sub(camera.position).normalize());
24
- distance = -camera.position.z / dir.z;
25
- vector.copy(camera.position);
26
- vector.add(dir.multiplyScalar(distance));
27
- return vector;
28
- };
29
- }()
30
- };
31
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9USFJFRVV0aWwuanMiXSwibmFtZXMiOlsiVmVjdG9yMyIsInRvU2NyZWVuUG9zIiwidmVjdG9yIiwicG9zIiwiY2FtZXJhIiwiY2FudmFzIiwiY29weSIsInByb2plY3QiLCJ4IiwiTWF0aCIsInJvdW5kIiwid2lkdGgiLCJ5IiwiaGVpZ2h0IiwieiIsInRvU3BhY2VQb3MiLCJkaXIiLCJkaXN0YW5jZSIsInNldCIsInVucHJvamVjdCIsInN1YiIsInBvc2l0aW9uIiwibm9ybWFsaXplIiwiYWRkIiwibXVsdGlwbHlTY2FsYXIiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLE9BQVQsUUFBd0IsZ0JBQXhCO0FBRUEsZUFBZTtBQUNiQyxFQUFBQSxXQUFXLEVBQUcsWUFBVztBQUN2QixRQUFJQyxNQUFNLEdBQUcsSUFBSUYsT0FBSixFQUFiO0FBRUEsV0FBTyxVQUFTRyxHQUFULEVBQWNDLE1BQWQsRUFBc0JDLE1BQXRCLEVBQThCO0FBQ25DSCxNQUFBQSxNQUFNLENBQUNJLElBQVAsQ0FBWUgsR0FBWixFQURtQyxDQUVuQzs7QUFDQUQsTUFBQUEsTUFBTSxDQUFDSyxPQUFQLENBQWVILE1BQWYsRUFIbUMsQ0FJbkM7O0FBQ0FGLE1BQUFBLE1BQU0sQ0FBQ00sQ0FBUCxHQUFXQyxJQUFJLENBQUNDLEtBQUwsQ0FBWSxDQUFDUixNQUFNLENBQUNNLENBQVAsR0FBVyxDQUFaLElBQWlCSCxNQUFNLENBQUNNLEtBQXpCLEdBQWtDLENBQTdDLENBQVg7QUFDQVQsTUFBQUEsTUFBTSxDQUFDVSxDQUFQLEdBQVdILElBQUksQ0FBQ0MsS0FBTCxDQUFZLENBQUMsQ0FBQ1IsTUFBTSxDQUFDVSxDQUFSLEdBQVksQ0FBYixJQUFrQlAsTUFBTSxDQUFDUSxNQUExQixHQUFvQyxDQUEvQyxDQUFYO0FBQ0FYLE1BQUFBLE1BQU0sQ0FBQ1ksQ0FBUCxHQUFXLENBQVg7QUFFQSxhQUFPWixNQUFQO0FBQ0QsS0FWRDtBQVdELEdBZFksRUFEQTtBQWlCYmEsRUFBQUEsVUFBVSxFQUFHLFlBQVc7QUFDdEIsUUFBSWIsTUFBTSxHQUFHLElBQUlGLE9BQUosRUFBYjtBQUFBLFFBQ0VnQixHQUFHLEdBQUcsSUFBSWhCLE9BQUosRUFEUjtBQUFBLFFBRUVpQixRQUZGO0FBSUEsV0FBTyxVQUFTZCxHQUFULEVBQWNDLE1BQWQsRUFBc0JDLE1BQXRCLEVBQThCO0FBQ25DSCxNQUFBQSxNQUFNLENBQUNnQixHQUFQLENBQ0dmLEdBQUcsQ0FBQ0ssQ0FBSixHQUFRSCxNQUFNLENBQUNNLEtBQWhCLEdBQXlCLENBQXpCLEdBQTZCLENBRC9CLEVBRUUsRUFBRVIsR0FBRyxDQUFDUyxDQUFKLEdBQVFQLE1BQU0sQ0FBQ1EsTUFBakIsSUFBMkIsQ0FBM0IsR0FBK0IsQ0FGakMsRUFHRSxHQUhGO0FBS0FYLE1BQUFBLE1BQU0sQ0FBQ2lCLFNBQVAsQ0FBaUJmLE1BQWpCO0FBRUFZLE1BQUFBLEdBQUcsQ0FBQ1YsSUFBSixDQUFTSixNQUFNLENBQUNrQixHQUFQLENBQVdoQixNQUFNLENBQUNpQixRQUFsQixFQUE0QkMsU0FBNUIsRUFBVDtBQUNBTCxNQUFBQSxRQUFRLEdBQUcsQ0FBQ2IsTUFBTSxDQUFDaUIsUUFBUCxDQUFnQlAsQ0FBakIsR0FBcUJFLEdBQUcsQ0FBQ0YsQ0FBcEM7QUFDQVosTUFBQUEsTUFBTSxDQUFDSSxJQUFQLENBQVlGLE1BQU0sQ0FBQ2lCLFFBQW5CO0FBQ0FuQixNQUFBQSxNQUFNLENBQUNxQixHQUFQLENBQVdQLEdBQUcsQ0FBQ1EsY0FBSixDQUFtQlAsUUFBbkIsQ0FBWDtBQUVBLGFBQU9mLE1BQVA7QUFDRCxLQWREO0FBZUQsR0FwQlc7QUFqQkMsQ0FBZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZlY3RvcjMgfSBmcm9tICcuLi9jb3JlL3RocmVlLyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdG9TY3JlZW5Qb3M6IChmdW5jdGlvbigpIHtcbiAgICB2YXIgdmVjdG9yID0gbmV3IFZlY3RvcjMoKTtcblxuICAgIHJldHVybiBmdW5jdGlvbihwb3MsIGNhbWVyYSwgY2FudmFzKSB7XG4gICAgICB2ZWN0b3IuY29weShwb3MpO1xuICAgICAgLy8gbWFwIHRvIG5vcm1hbGl6ZWQgZGV2aWNlIGNvb3JkaW5hdGUgKE5EQykgc3BhY2VcbiAgICAgIHZlY3Rvci5wcm9qZWN0KGNhbWVyYSk7XG4gICAgICAvLyBtYXAgdG8gMkQgc2NyZWVuIHNwYWNlXG4gICAgICB2ZWN0b3IueCA9IE1hdGgucm91bmQoKCh2ZWN0b3IueCArIDEpICogY2FudmFzLndpZHRoKSAvIDIpO1xuICAgICAgdmVjdG9yLnkgPSBNYXRoLnJvdW5kKCgoLXZlY3Rvci55ICsgMSkgKiBjYW52YXMuaGVpZ2h0KSAvIDIpO1xuICAgICAgdmVjdG9yLnogPSAwO1xuXG4gICAgICByZXR1cm4gdmVjdG9yO1xuICAgIH07XG4gIH0pKCksXG5cbiAgdG9TcGFjZVBvczogKGZ1bmN0aW9uKCkge1xuICAgIHZhciB2ZWN0b3IgPSBuZXcgVmVjdG9yMygpLFxuICAgICAgZGlyID0gbmV3IFZlY3RvcjMoKSxcbiAgICAgIGRpc3RhbmNlO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uKHBvcywgY2FtZXJhLCBjYW52YXMpIHtcbiAgICAgIHZlY3Rvci5zZXQoXG4gICAgICAgIChwb3MueCAvIGNhbnZhcy53aWR0aCkgKiAyIC0gMSxcbiAgICAgICAgLShwb3MueSAvIGNhbnZhcy5oZWlnaHQpICogMiArIDEsXG4gICAgICAgIDAuNVxuICAgICAgKTtcbiAgICAgIHZlY3Rvci51bnByb2plY3QoY2FtZXJhKTtcblxuICAgICAgZGlyLmNvcHkodmVjdG9yLnN1YihjYW1lcmEucG9zaXRpb24pLm5vcm1hbGl6ZSgpKTtcbiAgICAgIGRpc3RhbmNlID0gLWNhbWVyYS5wb3NpdGlvbi56IC8gZGlyLno7XG4gICAgICB2ZWN0b3IuY29weShjYW1lcmEucG9zaXRpb24pO1xuICAgICAgdmVjdG9yLmFkZChkaXIubXVsdGlwbHlTY2FsYXIoZGlzdGFuY2UpKTtcblxuICAgICAgcmV0dXJuIHZlY3RvcjtcbiAgICB9O1xuICB9KSgpLFxufTtcbiJdfQ==