three-nebula 11.0.0 → 11.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/three-nebula.cjs +109 -0
  3. package/dist/three-nebula.cjs.map +1 -0
  4. package/dist/three-nebula.mjs +2969 -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,371 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
-
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
- var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
17
-
18
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
-
20
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
-
22
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
-
24
- var _common = require("../common");
25
-
26
- var _shaders = require("./shaders");
27
-
28
- var _BaseRenderer2 = _interopRequireDefault(require("../../BaseRenderer"));
29
-
30
- var _constants = require("../common/constants");
31
-
32
- var _core = require("../../../core");
33
-
34
- var _types = require("../../types");
35
-
36
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
37
-
38
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
39
-
40
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
41
-
42
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
43
-
44
- var THREE;
45
- /**
46
- * GPURenderer for devices that support floating point textures.
47
- *
48
- * @author thrax <manthrax@gmail.com>
49
- * @author rohan-deshpande <rohan@creativelifeform.com>
50
- */
51
-
52
- var DesktopGPURenderer = /*#__PURE__*/function (_BaseRenderer) {
53
- (0, _inherits2["default"])(DesktopGPURenderer, _BaseRenderer);
54
-
55
- var _super = _createSuper(DesktopGPURenderer);
56
-
57
- function DesktopGPURenderer(container, three) {
58
- var _this;
59
-
60
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _constants.DEFAULT_RENDERER_OPTIONS;
61
- (0, _classCallCheck2["default"])(this, DesktopGPURenderer);
62
- _this = _super.call(this, _types.RENDERER_TYPE_GPU_DESKTOP);
63
- THREE = _this.three = three;
64
-
65
- var props = _objectSpread(_objectSpread({}, _constants.DEFAULT_RENDERER_OPTIONS), options);
66
-
67
- var camera = props.camera,
68
- maxParticles = props.maxParticles,
69
- baseColor = props.baseColor,
70
- blending = props.blending,
71
- depthTest = props.depthTest,
72
- depthWrite = props.depthWrite,
73
- transparent = props.transparent,
74
- shouldDebugTextureAtlas = props.shouldDebugTextureAtlas;
75
- var particleBuffer = new _common.ParticleBuffer(maxParticles, THREE);
76
- var material = new THREE.ShaderMaterial({
77
- uniforms: {
78
- baseColor: {
79
- value: new THREE.Color(baseColor)
80
- },
81
- uTexture: {
82
- value: null
83
- },
84
- atlasIndex: {
85
- value: null
86
- }
87
- },
88
- vertexShader: (0, _shaders.vertexShader)(),
89
- fragmentShader: (0, _shaders.fragmentShader)(),
90
- blending: THREE[blending],
91
- depthTest: depthTest,
92
- depthWrite: depthWrite,
93
- transparent: transparent
94
- });
95
- _this.container = container;
96
- _this.camera = camera;
97
- _this.targetPool = new _core.Pool();
98
- _this.uniqueList = new _common.UniqueList(maxParticles);
99
- _this.particleBuffer = particleBuffer;
100
- _this.buffer = particleBuffer.buffer;
101
- _this.stride = particleBuffer.stride;
102
- _this.geometry = particleBuffer.geometry;
103
- _this.material = material;
104
- _this.points = new THREE.Points(_this.geometry, _this.material);
105
- _this.points.frustumCulled = false;
106
- _this.shouldDebugTextureAtlas = shouldDebugTextureAtlas;
107
-
108
- _this.container.add(_this.points);
109
-
110
- return _this;
111
- }
112
-
113
- (0, _createClass2["default"])(DesktopGPURenderer, [{
114
- key: "onSystemUpdate",
115
- value: function onSystemUpdate(system) {
116
- (0, _get2["default"])((0, _getPrototypeOf2["default"])(DesktopGPURenderer.prototype), "onSystemUpdate", this).call(this, system);
117
- this.buffer.needsUpdate = true;
118
- this.textureAtlas && this.textureAtlas.update();
119
- }
120
- /**
121
- * Pools the particle target if it does not exist.
122
- * Updates the target and maps particle properties to the point.
123
- *
124
- * @param {Particle}
125
- */
126
-
127
- }, {
128
- key: "onParticleCreated",
129
- value: function onParticleCreated(particle) {
130
- if (!particle.target) {
131
- particle.target = this.targetPool.get(_common.Target, THREE);
132
- this.uniqueList.add(particle.id);
133
- }
134
-
135
- this.updateTarget(particle).mapParticleTargetPropsToPoint(particle);
136
- }
137
- /**
138
- * Maps particle properties to the point if the particle has a target.
139
- *
140
- * @param {Particle}
141
- */
142
-
143
- }, {
144
- key: "onParticleUpdate",
145
- value: function onParticleUpdate(particle) {
146
- if (!particle.target) {
147
- return;
148
- }
149
-
150
- this.updateTarget(particle).mapParticleTargetPropsToPoint(particle);
151
- }
152
- /**
153
- * Resets and clears the particle target.
154
- *
155
- * @param {Particle}
156
- */
157
-
158
- }, {
159
- key: "onParticleDead",
160
- value: function onParticleDead(particle) {
161
- if (!particle.target) {
162
- return;
163
- }
164
-
165
- particle.target.reset();
166
- this.mapParticleTargetPropsToPoint(particle);
167
- particle.target = null;
168
- }
169
- /**
170
- * Maps all mutable properties from the particle to the target.
171
- *
172
- * @param {Particle}
173
- * @return {DesktopGPURenderer}
174
- */
175
-
176
- }, {
177
- key: "updateTarget",
178
- value: function updateTarget(particle) {
179
- var position = particle.position,
180
- rotation = particle.rotation,
181
- scale = particle.scale,
182
- radius = particle.radius,
183
- color = particle.color,
184
- alpha = particle.alpha,
185
- body = particle.body,
186
- id = particle.id;
187
- var r = color.r,
188
- g = color.g,
189
- b = color.b;
190
- particle.target.position.copy(position);
191
- particle.target.rotation.copy(rotation);
192
- particle.target.size = scale * radius;
193
- particle.target.color.setRGB(r, g, b);
194
- particle.target.alpha = alpha;
195
- particle.target.index = this.uniqueList.find(id);
196
-
197
- if (body && body instanceof THREE.Sprite) {
198
- var map = body.material.map;
199
- particle.target.texture = map;
200
- particle.target.textureIndex = this.getTextureID(map, this.shouldDebugTextureAtlas);
201
- }
202
-
203
- return this;
204
- }
205
- /**
206
- * Entry point for mapping particle properties to buffer geometry points.
207
- *
208
- * @param {Particle} particle - The particle containing the properties to map
209
- * @return {DesktopGPURenderer}
210
- */
211
-
212
- }, {
213
- key: "mapParticleTargetPropsToPoint",
214
- value: function mapParticleTargetPropsToPoint(particle) {
215
- this.updatePointPosition(particle).updatePointSize(particle).updatePointRotation(particle).updatePointColor(particle).updatePointAlpha(particle).updatePointTextureIndex(particle);
216
- return this;
217
- }
218
- /**
219
- * Updates the point's position according to the particle's target position.
220
- *
221
- * @param {Particle} particle - The particle containing the target position.
222
- * @return {DesktopGPURenderer}
223
- */
224
-
225
- }, {
226
- key: "updatePointPosition",
227
- value: function updatePointPosition(particle) {
228
- var attribute = 'position';
229
- var geometry = this.geometry,
230
- stride = this.stride,
231
- buffer = this.buffer;
232
- var target = particle.target;
233
- var offset = geometry.attributes[attribute].offset;
234
- buffer.array[target.index * stride + offset + 0] = target.position.x;
235
- buffer.array[target.index * stride + offset + 1] = target.position.y;
236
- buffer.array[target.index * stride + offset + 2] = target.position.z;
237
- return this;
238
- }
239
- /**
240
- * Updates the point's size relative to the particle's target scale and radius.
241
- *
242
- * @param {Particle} particle - The particle containing the target scale.
243
- * @return {DesktopGPURenderer}
244
- */
245
-
246
- }, {
247
- key: "updatePointSize",
248
- value: function updatePointSize(particle) {
249
- var attribute = 'size';
250
- var geometry = this.geometry,
251
- stride = this.stride,
252
- buffer = this.buffer;
253
- var target = particle.target;
254
- var offset = geometry.attributes[attribute].offset;
255
- buffer.array[target.index * stride + offset + 0] = target.size;
256
- return this;
257
- }
258
- /**
259
- * Updates the point's rotation.
260
- *
261
- * @param {Particle} particle - The particle containing the target rotation.
262
- * @return {DesktopGPURenderer}
263
- */
264
-
265
- }, {
266
- key: "updatePointRotation",
267
- value: function updatePointRotation(particle) {
268
- var attribute = 'rotation';
269
- var geometry = this.geometry,
270
- stride = this.stride,
271
- buffer = this.buffer;
272
- var target = particle.target;
273
- var offset = geometry.attributes[attribute].offset;
274
- buffer.array[target.index * stride + offset + 0] = target.rotation.z;
275
- return this;
276
- }
277
- /**
278
- * Updates the point's color attribute according with the particle's target color.
279
- *
280
- * @param {Particle} particle - The particle containing the target color and alpha.
281
- * @return {DesktopGPURenderer}
282
- */
283
-
284
- }, {
285
- key: "updatePointColor",
286
- value: function updatePointColor(particle) {
287
- var attribute = 'color';
288
- var geometry = this.geometry,
289
- stride = this.stride,
290
- buffer = this.buffer;
291
- var target = particle.target;
292
- var offset = geometry.attributes[attribute].offset;
293
- buffer.array[target.index * stride + offset + 0] = target.color.r;
294
- buffer.array[target.index * stride + offset + 1] = target.color.g;
295
- buffer.array[target.index * stride + offset + 2] = target.color.b;
296
- return this;
297
- }
298
- /**
299
- * Updates the point alpha attribute with the particle's target alpha.
300
- *
301
- * @param {Particle} particle - The particle containing the target alpha.
302
- * @return {DesktopGPURenderer}
303
- */
304
-
305
- }, {
306
- key: "updatePointAlpha",
307
- value: function updatePointAlpha(particle) {
308
- var attribute = 'alpha';
309
- var geometry = this.geometry,
310
- stride = this.stride,
311
- buffer = this.buffer;
312
- var target = particle.target;
313
- var offset = geometry.attributes[attribute].offset;
314
- buffer.array[target.index * stride + offset + 0] = target.alpha;
315
- return this;
316
- }
317
- /**
318
- * Updates the point texture attribute with the particle's target texture.
319
- *
320
- * @param {Particle} particle - The particle containing the target texture.
321
- * @return {DesktopGPURenderer}
322
- */
323
-
324
- }, {
325
- key: "updatePointTextureIndex",
326
- value: function updatePointTextureIndex(particle) {
327
- var attribute = 'texID';
328
- var geometry = this.geometry,
329
- stride = this.stride,
330
- buffer = this.buffer;
331
- var target = particle.target;
332
- var offset = geometry.attributes[attribute].offset;
333
- buffer.array[target.index * stride + offset + 0] = target.textureIndex;
334
- return this;
335
- }
336
- }, {
337
- key: "getTextureID",
338
- value: function getTextureID(texture, debug) {
339
- if (texture.textureIndex === undefined) {
340
- if (!this.textureAtlas) {
341
- this.textureAtlas = new _common.TextureAtlas(this, debug);
342
- }
343
-
344
- this.textureAtlas.addTexture(texture);
345
- }
346
-
347
- return texture.textureIndex;
348
- }
349
- /**
350
- * Tears down the GPURenderer.
351
- *
352
- * @return void
353
- */
354
-
355
- }, {
356
- key: "destroy",
357
- value: function destroy() {
358
- var container = this.container,
359
- points = this.points,
360
- textureAtlas = this.textureAtlas,
361
- uniqueList = this.uniqueList;
362
- container.remove(points);
363
- uniqueList.destroy();
364
- textureAtlas && textureAtlas.destroy();
365
- }
366
- }]);
367
- return DesktopGPURenderer;
368
- }(_BaseRenderer2["default"]);
369
-
370
- exports["default"] = DesktopGPURenderer;
371
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9EZXNrdG9wL2luZGV4LmpzIl0sIm5hbWVzIjpbIlRIUkVFIiwiRGVza3RvcEdQVVJlbmRlcmVyIiwiY29udGFpbmVyIiwidGhyZWUiLCJvcHRpb25zIiwiREVGQVVMVF9SRU5ERVJFUl9PUFRJT05TIiwiUkVOREVSRVJfVFlQRV9HUFVfREVTS1RPUCIsInByb3BzIiwiY2FtZXJhIiwibWF4UGFydGljbGVzIiwiYmFzZUNvbG9yIiwiYmxlbmRpbmciLCJkZXB0aFRlc3QiLCJkZXB0aFdyaXRlIiwidHJhbnNwYXJlbnQiLCJzaG91bGREZWJ1Z1RleHR1cmVBdGxhcyIsInBhcnRpY2xlQnVmZmVyIiwiUGFydGljbGVCdWZmZXIiLCJtYXRlcmlhbCIsIlNoYWRlck1hdGVyaWFsIiwidW5pZm9ybXMiLCJ2YWx1ZSIsIkNvbG9yIiwidVRleHR1cmUiLCJhdGxhc0luZGV4IiwidmVydGV4U2hhZGVyIiwiZnJhZ21lbnRTaGFkZXIiLCJ0YXJnZXRQb29sIiwiUG9vbCIsInVuaXF1ZUxpc3QiLCJVbmlxdWVMaXN0IiwiYnVmZmVyIiwic3RyaWRlIiwiZ2VvbWV0cnkiLCJwb2ludHMiLCJQb2ludHMiLCJmcnVzdHVtQ3VsbGVkIiwiYWRkIiwic3lzdGVtIiwibmVlZHNVcGRhdGUiLCJ0ZXh0dXJlQXRsYXMiLCJ1cGRhdGUiLCJwYXJ0aWNsZSIsInRhcmdldCIsImdldCIsIlRhcmdldCIsImlkIiwidXBkYXRlVGFyZ2V0IiwibWFwUGFydGljbGVUYXJnZXRQcm9wc1RvUG9pbnQiLCJyZXNldCIsInBvc2l0aW9uIiwicm90YXRpb24iLCJzY2FsZSIsInJhZGl1cyIsImNvbG9yIiwiYWxwaGEiLCJib2R5IiwiciIsImciLCJiIiwiY29weSIsInNpemUiLCJzZXRSR0IiLCJpbmRleCIsImZpbmQiLCJTcHJpdGUiLCJtYXAiLCJ0ZXh0dXJlIiwidGV4dHVyZUluZGV4IiwiZ2V0VGV4dHVyZUlEIiwidXBkYXRlUG9pbnRQb3NpdGlvbiIsInVwZGF0ZVBvaW50U2l6ZSIsInVwZGF0ZVBvaW50Um90YXRpb24iLCJ1cGRhdGVQb2ludENvbG9yIiwidXBkYXRlUG9pbnRBbHBoYSIsInVwZGF0ZVBvaW50VGV4dHVyZUluZGV4IiwiYXR0cmlidXRlIiwib2Zmc2V0IiwiYXR0cmlidXRlcyIsImFycmF5IiwieCIsInkiLCJ6IiwiZGVidWciLCJ1bmRlZmluZWQiLCJUZXh0dXJlQXRsYXMiLCJhZGRUZXh0dXJlIiwicmVtb3ZlIiwiZGVzdHJveSIsIkJhc2VSZW5kZXJlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBLElBQUlBLEtBQUo7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0lBQ3FCQyxrQjs7Ozs7QUFDbkIsOEJBQVlDLFNBQVosRUFBdUJDLEtBQXZCLEVBQWtFO0FBQUE7O0FBQUEsUUFBcENDLE9BQW9DLHVFQUExQkMsbUNBQTBCO0FBQUE7QUFDaEUsOEJBQU1DLGdDQUFOO0FBRUFOLElBQUFBLEtBQUssR0FBRyxNQUFLRyxLQUFMLEdBQWFBLEtBQXJCOztBQUNBLFFBQU1JLEtBQUssbUNBQVFGLG1DQUFSLEdBQXFDRCxPQUFyQyxDQUFYOztBQUpnRSxRQU05REksTUFOOEQsR0FjNURELEtBZDRELENBTTlEQyxNQU44RDtBQUFBLFFBTzlEQyxZQVA4RCxHQWM1REYsS0FkNEQsQ0FPOURFLFlBUDhEO0FBQUEsUUFROURDLFNBUjhELEdBYzVESCxLQWQ0RCxDQVE5REcsU0FSOEQ7QUFBQSxRQVM5REMsUUFUOEQsR0FjNURKLEtBZDRELENBUzlESSxRQVQ4RDtBQUFBLFFBVTlEQyxTQVY4RCxHQWM1REwsS0FkNEQsQ0FVOURLLFNBVjhEO0FBQUEsUUFXOURDLFVBWDhELEdBYzVETixLQWQ0RCxDQVc5RE0sVUFYOEQ7QUFBQSxRQVk5REMsV0FaOEQsR0FjNURQLEtBZDRELENBWTlETyxXQVo4RDtBQUFBLFFBYTlEQyx1QkFiOEQsR0FjNURSLEtBZDRELENBYTlEUSx1QkFiOEQ7QUFlaEUsUUFBTUMsY0FBYyxHQUFHLElBQUlDLHNCQUFKLENBQW1CUixZQUFuQixFQUFpQ1QsS0FBakMsQ0FBdkI7QUFDQSxRQUFNa0IsUUFBUSxHQUFHLElBQUlsQixLQUFLLENBQUNtQixjQUFWLENBQXlCO0FBQ3hDQyxNQUFBQSxRQUFRLEVBQUU7QUFDUlYsUUFBQUEsU0FBUyxFQUFFO0FBQUVXLFVBQUFBLEtBQUssRUFBRSxJQUFJckIsS0FBSyxDQUFDc0IsS0FBVixDQUFnQlosU0FBaEI7QUFBVCxTQURIO0FBRVJhLFFBQUFBLFFBQVEsRUFBRTtBQUFFRixVQUFBQSxLQUFLLEVBQUU7QUFBVCxTQUZGO0FBR1JHLFFBQUFBLFVBQVUsRUFBRTtBQUFFSCxVQUFBQSxLQUFLLEVBQUU7QUFBVDtBQUhKLE9BRDhCO0FBTXhDSSxNQUFBQSxZQUFZLEVBQUUsNEJBTjBCO0FBT3hDQyxNQUFBQSxjQUFjLEVBQUUsOEJBUHdCO0FBUXhDZixNQUFBQSxRQUFRLEVBQUVYLEtBQUssQ0FBQ1csUUFBRCxDQVJ5QjtBQVN4Q0MsTUFBQUEsU0FBUyxFQUFUQSxTQVR3QztBQVV4Q0MsTUFBQUEsVUFBVSxFQUFWQSxVQVZ3QztBQVd4Q0MsTUFBQUEsV0FBVyxFQUFYQTtBQVh3QyxLQUF6QixDQUFqQjtBQWNBLFVBQUtaLFNBQUwsR0FBaUJBLFNBQWpCO0FBQ0EsVUFBS00sTUFBTCxHQUFjQSxNQUFkO0FBQ0EsVUFBS21CLFVBQUwsR0FBa0IsSUFBSUMsVUFBSixFQUFsQjtBQUNBLFVBQUtDLFVBQUwsR0FBa0IsSUFBSUMsa0JBQUosQ0FBZXJCLFlBQWYsQ0FBbEI7QUFDQSxVQUFLTyxjQUFMLEdBQXNCQSxjQUF0QjtBQUNBLFVBQUtlLE1BQUwsR0FBY2YsY0FBYyxDQUFDZSxNQUE3QjtBQUNBLFVBQUtDLE1BQUwsR0FBY2hCLGNBQWMsQ0FBQ2dCLE1BQTdCO0FBQ0EsVUFBS0MsUUFBTCxHQUFnQmpCLGNBQWMsQ0FBQ2lCLFFBQS9CO0FBQ0EsVUFBS2YsUUFBTCxHQUFnQkEsUUFBaEI7QUFDQSxVQUFLZ0IsTUFBTCxHQUFjLElBQUlsQyxLQUFLLENBQUNtQyxNQUFWLENBQWlCLE1BQUtGLFFBQXRCLEVBQWdDLE1BQUtmLFFBQXJDLENBQWQ7QUFDQSxVQUFLZ0IsTUFBTCxDQUFZRSxhQUFaLEdBQTRCLEtBQTVCO0FBQ0EsVUFBS3JCLHVCQUFMLEdBQStCQSx1QkFBL0I7O0FBRUEsVUFBS2IsU0FBTCxDQUFlbUMsR0FBZixDQUFtQixNQUFLSCxNQUF4Qjs7QUEzQ2dFO0FBNENqRTs7OzttQ0FFY0ksTSxFQUFRO0FBQ3JCLCtIQUFxQkEsTUFBckI7QUFFQSxXQUFLUCxNQUFMLENBQVlRLFdBQVosR0FBMEIsSUFBMUI7QUFFQSxXQUFLQyxZQUFMLElBQXFCLEtBQUtBLFlBQUwsQ0FBa0JDLE1BQWxCLEVBQXJCO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7c0NBQ29CQyxRLEVBQVU7QUFDMUIsVUFBSSxDQUFDQSxRQUFRLENBQUNDLE1BQWQsRUFBc0I7QUFDcEJELFFBQUFBLFFBQVEsQ0FBQ0MsTUFBVCxHQUFrQixLQUFLaEIsVUFBTCxDQUFnQmlCLEdBQWhCLENBQW9CQyxjQUFwQixFQUE0QjdDLEtBQTVCLENBQWxCO0FBQ0EsYUFBSzZCLFVBQUwsQ0FBZ0JRLEdBQWhCLENBQW9CSyxRQUFRLENBQUNJLEVBQTdCO0FBQ0Q7O0FBRUQsV0FBS0MsWUFBTCxDQUFrQkwsUUFBbEIsRUFBNEJNLDZCQUE1QixDQUEwRE4sUUFBMUQ7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7Ozs7cUNBQ21CQSxRLEVBQVU7QUFDekIsVUFBSSxDQUFDQSxRQUFRLENBQUNDLE1BQWQsRUFBc0I7QUFDcEI7QUFDRDs7QUFFRCxXQUFLSSxZQUFMLENBQWtCTCxRQUFsQixFQUE0Qk0sNkJBQTVCLENBQTBETixRQUExRDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7OzttQ0FDaUJBLFEsRUFBVTtBQUN2QixVQUFJLENBQUNBLFFBQVEsQ0FBQ0MsTUFBZCxFQUFzQjtBQUNwQjtBQUNEOztBQUVERCxNQUFBQSxRQUFRLENBQUNDLE1BQVQsQ0FBZ0JNLEtBQWhCO0FBQ0EsV0FBS0QsNkJBQUwsQ0FBbUNOLFFBQW5DO0FBRUFBLE1BQUFBLFFBQVEsQ0FBQ0MsTUFBVCxHQUFrQixJQUFsQjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O2lDQUNlRCxRLEVBQVU7QUFBQSxVQUNiUSxRQURhLEdBQ2lEUixRQURqRCxDQUNiUSxRQURhO0FBQUEsVUFDSEMsUUFERyxHQUNpRFQsUUFEakQsQ0FDSFMsUUFERztBQUFBLFVBQ09DLEtBRFAsR0FDaURWLFFBRGpELENBQ09VLEtBRFA7QUFBQSxVQUNjQyxNQURkLEdBQ2lEWCxRQURqRCxDQUNjVyxNQURkO0FBQUEsVUFDc0JDLEtBRHRCLEdBQ2lEWixRQURqRCxDQUNzQlksS0FEdEI7QUFBQSxVQUM2QkMsS0FEN0IsR0FDaURiLFFBRGpELENBQzZCYSxLQUQ3QjtBQUFBLFVBQ29DQyxJQURwQyxHQUNpRGQsUUFEakQsQ0FDb0NjLElBRHBDO0FBQUEsVUFDMENWLEVBRDFDLEdBQ2lESixRQURqRCxDQUMwQ0ksRUFEMUM7QUFBQSxVQUViVyxDQUZhLEdBRURILEtBRkMsQ0FFYkcsQ0FGYTtBQUFBLFVBRVZDLENBRlUsR0FFREosS0FGQyxDQUVWSSxDQUZVO0FBQUEsVUFFUEMsQ0FGTyxHQUVETCxLQUZDLENBRVBLLENBRk87QUFJckJqQixNQUFBQSxRQUFRLENBQUNDLE1BQVQsQ0FBZ0JPLFFBQWhCLENBQXlCVSxJQUF6QixDQUE4QlYsUUFBOUI7QUFDQVIsTUFBQUEsUUFBUSxDQUFDQyxNQUFULENBQWdCUSxRQUFoQixDQUF5QlMsSUFBekIsQ0FBOEJULFFBQTlCO0FBQ0FULE1BQUFBLFFBQVEsQ0FBQ0MsTUFBVCxDQUFnQmtCLElBQWhCLEdBQXVCVCxLQUFLLEdBQUdDLE1BQS9CO0FBQ0FYLE1BQUFBLFFBQVEsQ0FBQ0MsTUFBVCxDQUFnQlcsS0FBaEIsQ0FBc0JRLE1BQXRCLENBQTZCTCxDQUE3QixFQUFnQ0MsQ0FBaEMsRUFBbUNDLENBQW5DO0FBQ0FqQixNQUFBQSxRQUFRLENBQUNDLE1BQVQsQ0FBZ0JZLEtBQWhCLEdBQXdCQSxLQUF4QjtBQUNBYixNQUFBQSxRQUFRLENBQUNDLE1BQVQsQ0FBZ0JvQixLQUFoQixHQUF3QixLQUFLbEMsVUFBTCxDQUFnQm1DLElBQWhCLENBQXFCbEIsRUFBckIsQ0FBeEI7O0FBRUEsVUFBSVUsSUFBSSxJQUFJQSxJQUFJLFlBQVl4RCxLQUFLLENBQUNpRSxNQUFsQyxFQUEwQztBQUFBLFlBQ2hDQyxHQURnQyxHQUN4QlYsSUFBSSxDQUFDdEMsUUFEbUIsQ0FDaENnRCxHQURnQztBQUd4Q3hCLFFBQUFBLFFBQVEsQ0FBQ0MsTUFBVCxDQUFnQndCLE9BQWhCLEdBQTBCRCxHQUExQjtBQUNBeEIsUUFBQUEsUUFBUSxDQUFDQyxNQUFULENBQWdCeUIsWUFBaEIsR0FBK0IsS0FBS0MsWUFBTCxDQUM3QkgsR0FENkIsRUFFN0IsS0FBS25ELHVCQUZ3QixDQUEvQjtBQUlEOztBQUVELGFBQU8sSUFBUDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O2tEQUNnQzJCLFEsRUFBVTtBQUN0QyxXQUFLNEIsbUJBQUwsQ0FBeUI1QixRQUF6QixFQUNHNkIsZUFESCxDQUNtQjdCLFFBRG5CLEVBRUc4QixtQkFGSCxDQUV1QjlCLFFBRnZCLEVBR0crQixnQkFISCxDQUdvQi9CLFFBSHBCLEVBSUdnQyxnQkFKSCxDQUlvQmhDLFFBSnBCLEVBS0dpQyx1QkFMSCxDQUsyQmpDLFFBTDNCO0FBT0EsYUFBTyxJQUFQO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7d0NBQ3NCQSxRLEVBQVU7QUFDNUIsVUFBTWtDLFNBQVMsR0FBRyxVQUFsQjtBQUQ0QixVQUVwQjNDLFFBRm9CLEdBRVMsSUFGVCxDQUVwQkEsUUFGb0I7QUFBQSxVQUVWRCxNQUZVLEdBRVMsSUFGVCxDQUVWQSxNQUZVO0FBQUEsVUFFRkQsTUFGRSxHQUVTLElBRlQsQ0FFRkEsTUFGRTtBQUFBLFVBR3BCWSxNQUhvQixHQUdURCxRQUhTLENBR3BCQyxNQUhvQjtBQUFBLFVBSXBCa0MsTUFKb0IsR0FJVDVDLFFBQVEsQ0FBQzZDLFVBQVQsQ0FBb0JGLFNBQXBCLENBSlMsQ0FJcEJDLE1BSm9CO0FBTTVCOUMsTUFBQUEsTUFBTSxDQUFDZ0QsS0FBUCxDQUFhcEMsTUFBTSxDQUFDb0IsS0FBUCxHQUFlL0IsTUFBZixHQUF3QjZDLE1BQXhCLEdBQWlDLENBQTlDLElBQW1EbEMsTUFBTSxDQUFDTyxRQUFQLENBQWdCOEIsQ0FBbkU7QUFDQWpELE1BQUFBLE1BQU0sQ0FBQ2dELEtBQVAsQ0FBYXBDLE1BQU0sQ0FBQ29CLEtBQVAsR0FBZS9CLE1BQWYsR0FBd0I2QyxNQUF4QixHQUFpQyxDQUE5QyxJQUFtRGxDLE1BQU0sQ0FBQ08sUUFBUCxDQUFnQitCLENBQW5FO0FBQ0FsRCxNQUFBQSxNQUFNLENBQUNnRCxLQUFQLENBQWFwQyxNQUFNLENBQUNvQixLQUFQLEdBQWUvQixNQUFmLEdBQXdCNkMsTUFBeEIsR0FBaUMsQ0FBOUMsSUFBbURsQyxNQUFNLENBQUNPLFFBQVAsQ0FBZ0JnQyxDQUFuRTtBQUVBLGFBQU8sSUFBUDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O29DQUNrQnhDLFEsRUFBVTtBQUN4QixVQUFNa0MsU0FBUyxHQUFHLE1BQWxCO0FBRHdCLFVBRWhCM0MsUUFGZ0IsR0FFYSxJQUZiLENBRWhCQSxRQUZnQjtBQUFBLFVBRU5ELE1BRk0sR0FFYSxJQUZiLENBRU5BLE1BRk07QUFBQSxVQUVFRCxNQUZGLEdBRWEsSUFGYixDQUVFQSxNQUZGO0FBQUEsVUFHaEJZLE1BSGdCLEdBR0xELFFBSEssQ0FHaEJDLE1BSGdCO0FBQUEsVUFJaEJrQyxNQUpnQixHQUlMNUMsUUFBUSxDQUFDNkMsVUFBVCxDQUFvQkYsU0FBcEIsQ0FKSyxDQUloQkMsTUFKZ0I7QUFNeEI5QyxNQUFBQSxNQUFNLENBQUNnRCxLQUFQLENBQWFwQyxNQUFNLENBQUNvQixLQUFQLEdBQWUvQixNQUFmLEdBQXdCNkMsTUFBeEIsR0FBaUMsQ0FBOUMsSUFBbURsQyxNQUFNLENBQUNrQixJQUExRDtBQUVBLGFBQU8sSUFBUDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O3dDQUNzQm5CLFEsRUFBVTtBQUM1QixVQUFNa0MsU0FBUyxHQUFHLFVBQWxCO0FBRDRCLFVBRXBCM0MsUUFGb0IsR0FFUyxJQUZULENBRXBCQSxRQUZvQjtBQUFBLFVBRVZELE1BRlUsR0FFUyxJQUZULENBRVZBLE1BRlU7QUFBQSxVQUVGRCxNQUZFLEdBRVMsSUFGVCxDQUVGQSxNQUZFO0FBQUEsVUFHcEJZLE1BSG9CLEdBR1RELFFBSFMsQ0FHcEJDLE1BSG9CO0FBQUEsVUFJcEJrQyxNQUpvQixHQUlUNUMsUUFBUSxDQUFDNkMsVUFBVCxDQUFvQkYsU0FBcEIsQ0FKUyxDQUlwQkMsTUFKb0I7QUFNNUI5QyxNQUFBQSxNQUFNLENBQUNnRCxLQUFQLENBQWFwQyxNQUFNLENBQUNvQixLQUFQLEdBQWUvQixNQUFmLEdBQXdCNkMsTUFBeEIsR0FBaUMsQ0FBOUMsSUFBbURsQyxNQUFNLENBQUNRLFFBQVAsQ0FBZ0IrQixDQUFuRTtBQUVBLGFBQU8sSUFBUDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O3FDQUNtQnhDLFEsRUFBVTtBQUN6QixVQUFNa0MsU0FBUyxHQUFHLE9BQWxCO0FBRHlCLFVBRWpCM0MsUUFGaUIsR0FFWSxJQUZaLENBRWpCQSxRQUZpQjtBQUFBLFVBRVBELE1BRk8sR0FFWSxJQUZaLENBRVBBLE1BRk87QUFBQSxVQUVDRCxNQUZELEdBRVksSUFGWixDQUVDQSxNQUZEO0FBQUEsVUFHakJZLE1BSGlCLEdBR05ELFFBSE0sQ0FHakJDLE1BSGlCO0FBQUEsVUFJakJrQyxNQUppQixHQUlONUMsUUFBUSxDQUFDNkMsVUFBVCxDQUFvQkYsU0FBcEIsQ0FKTSxDQUlqQkMsTUFKaUI7QUFNekI5QyxNQUFBQSxNQUFNLENBQUNnRCxLQUFQLENBQWFwQyxNQUFNLENBQUNvQixLQUFQLEdBQWUvQixNQUFmLEdBQXdCNkMsTUFBeEIsR0FBaUMsQ0FBOUMsSUFBbURsQyxNQUFNLENBQUNXLEtBQVAsQ0FBYUcsQ0FBaEU7QUFDQTFCLE1BQUFBLE1BQU0sQ0FBQ2dELEtBQVAsQ0FBYXBDLE1BQU0sQ0FBQ29CLEtBQVAsR0FBZS9CLE1BQWYsR0FBd0I2QyxNQUF4QixHQUFpQyxDQUE5QyxJQUFtRGxDLE1BQU0sQ0FBQ1csS0FBUCxDQUFhSSxDQUFoRTtBQUNBM0IsTUFBQUEsTUFBTSxDQUFDZ0QsS0FBUCxDQUFhcEMsTUFBTSxDQUFDb0IsS0FBUCxHQUFlL0IsTUFBZixHQUF3QjZDLE1BQXhCLEdBQWlDLENBQTlDLElBQW1EbEMsTUFBTSxDQUFDVyxLQUFQLENBQWFLLENBQWhFO0FBRUEsYUFBTyxJQUFQO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7cUNBQ21CakIsUSxFQUFVO0FBQ3pCLFVBQU1rQyxTQUFTLEdBQUcsT0FBbEI7QUFEeUIsVUFFakIzQyxRQUZpQixHQUVZLElBRlosQ0FFakJBLFFBRmlCO0FBQUEsVUFFUEQsTUFGTyxHQUVZLElBRlosQ0FFUEEsTUFGTztBQUFBLFVBRUNELE1BRkQsR0FFWSxJQUZaLENBRUNBLE1BRkQ7QUFBQSxVQUdqQlksTUFIaUIsR0FHTkQsUUFITSxDQUdqQkMsTUFIaUI7QUFBQSxVQUlqQmtDLE1BSmlCLEdBSU41QyxRQUFRLENBQUM2QyxVQUFULENBQW9CRixTQUFwQixDQUpNLENBSWpCQyxNQUppQjtBQU16QjlDLE1BQUFBLE1BQU0sQ0FBQ2dELEtBQVAsQ0FBYXBDLE1BQU0sQ0FBQ29CLEtBQVAsR0FBZS9CLE1BQWYsR0FBd0I2QyxNQUF4QixHQUFpQyxDQUE5QyxJQUFtRGxDLE1BQU0sQ0FBQ1ksS0FBMUQ7QUFFQSxhQUFPLElBQVA7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs0Q0FDMEJiLFEsRUFBVTtBQUNoQyxVQUFNa0MsU0FBUyxHQUFHLE9BQWxCO0FBRGdDLFVBRXhCM0MsUUFGd0IsR0FFSyxJQUZMLENBRXhCQSxRQUZ3QjtBQUFBLFVBRWRELE1BRmMsR0FFSyxJQUZMLENBRWRBLE1BRmM7QUFBQSxVQUVORCxNQUZNLEdBRUssSUFGTCxDQUVOQSxNQUZNO0FBQUEsVUFHeEJZLE1BSHdCLEdBR2JELFFBSGEsQ0FHeEJDLE1BSHdCO0FBQUEsVUFJeEJrQyxNQUp3QixHQUliNUMsUUFBUSxDQUFDNkMsVUFBVCxDQUFvQkYsU0FBcEIsQ0FKYSxDQUl4QkMsTUFKd0I7QUFNaEM5QyxNQUFBQSxNQUFNLENBQUNnRCxLQUFQLENBQWFwQyxNQUFNLENBQUNvQixLQUFQLEdBQWUvQixNQUFmLEdBQXdCNkMsTUFBeEIsR0FBaUMsQ0FBOUMsSUFBbURsQyxNQUFNLENBQUN5QixZQUExRDtBQUVBLGFBQU8sSUFBUDtBQUNEOzs7aUNBRVlELE8sRUFBU2dCLEssRUFBTztBQUMzQixVQUFJaEIsT0FBTyxDQUFDQyxZQUFSLEtBQXlCZ0IsU0FBN0IsRUFBd0M7QUFDdEMsWUFBSSxDQUFDLEtBQUs1QyxZQUFWLEVBQXdCO0FBQ3RCLGVBQUtBLFlBQUwsR0FBb0IsSUFBSTZDLG9CQUFKLENBQWlCLElBQWpCLEVBQXVCRixLQUF2QixDQUFwQjtBQUNEOztBQUVELGFBQUszQyxZQUFMLENBQWtCOEMsVUFBbEIsQ0FBNkJuQixPQUE3QjtBQUNEOztBQUVELGFBQU9BLE9BQU8sQ0FBQ0MsWUFBZjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7Ozs4QkFDWTtBQUFBLFVBQ0FsRSxTQURBLEdBQ2dELElBRGhELENBQ0FBLFNBREE7QUFBQSxVQUNXZ0MsTUFEWCxHQUNnRCxJQURoRCxDQUNXQSxNQURYO0FBQUEsVUFDbUJNLFlBRG5CLEdBQ2dELElBRGhELENBQ21CQSxZQURuQjtBQUFBLFVBQ2lDWCxVQURqQyxHQUNnRCxJQURoRCxDQUNpQ0EsVUFEakM7QUFHUjNCLE1BQUFBLFNBQVMsQ0FBQ3FGLE1BQVYsQ0FBaUJyRCxNQUFqQjtBQUNBTCxNQUFBQSxVQUFVLENBQUMyRCxPQUFYO0FBQ0FoRCxNQUFBQSxZQUFZLElBQUlBLFlBQVksQ0FBQ2dELE9BQWIsRUFBaEI7QUFDRDs7O0VBblI2Q0MseUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJ0aWNsZUJ1ZmZlciwgVGFyZ2V0LCBUZXh0dXJlQXRsYXMsIFVuaXF1ZUxpc3QgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgZnJhZ21lbnRTaGFkZXIsIHZlcnRleFNoYWRlciB9IGZyb20gJy4vc2hhZGVycyc7XG5cbmltcG9ydCBCYXNlUmVuZGVyZXIgZnJvbSAnLi4vLi4vQmFzZVJlbmRlcmVyJztcbmltcG9ydCB7IERFRkFVTFRfUkVOREVSRVJfT1BUSU9OUyB9IGZyb20gJy4uL2NvbW1vbi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUG9vbCB9IGZyb20gJy4uLy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgUkVOREVSRVJfVFlQRV9HUFVfREVTS1RPUCB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxubGV0IFRIUkVFO1xuXG4vKipcbiAqIEdQVVJlbmRlcmVyIGZvciBkZXZpY2VzIHRoYXQgc3VwcG9ydCBmbG9hdGluZyBwb2ludCB0ZXh0dXJlcy5cbiAqXG4gKiBAYXV0aG9yIHRocmF4IDxtYW50aHJheEBnbWFpbC5jb20+XG4gKiBAYXV0aG9yIHJvaGFuLWRlc2hwYW5kZSA8cm9oYW5AY3JlYXRpdmVsaWZlZm9ybS5jb20+XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERlc2t0b3BHUFVSZW5kZXJlciBleHRlbmRzIEJhc2VSZW5kZXJlciB7XG4gIGNvbnN0cnVjdG9yKGNvbnRhaW5lciwgdGhyZWUsIG9wdGlvbnMgPSBERUZBVUxUX1JFTkRFUkVSX09QVElPTlMpIHtcbiAgICBzdXBlcihSRU5ERVJFUl9UWVBFX0dQVV9ERVNLVE9QKTtcblxuICAgIFRIUkVFID0gdGhpcy50aHJlZSA9IHRocmVlO1xuICAgIGNvbnN0IHByb3BzID0geyAuLi5ERUZBVUxUX1JFTkRFUkVSX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcbiAgICBjb25zdCB7XG4gICAgICBjYW1lcmEsXG4gICAgICBtYXhQYXJ0aWNsZXMsXG4gICAgICBiYXNlQ29sb3IsXG4gICAgICBibGVuZGluZyxcbiAgICAgIGRlcHRoVGVzdCxcbiAgICAgIGRlcHRoV3JpdGUsXG4gICAgICB0cmFuc3BhcmVudCxcbiAgICAgIHNob3VsZERlYnVnVGV4dHVyZUF0bGFzLFxuICAgIH0gPSBwcm9wcztcbiAgICBjb25zdCBwYXJ0aWNsZUJ1ZmZlciA9IG5ldyBQYXJ0aWNsZUJ1ZmZlcihtYXhQYXJ0aWNsZXMsIFRIUkVFKTtcbiAgICBjb25zdCBtYXRlcmlhbCA9IG5ldyBUSFJFRS5TaGFkZXJNYXRlcmlhbCh7XG4gICAgICB1bmlmb3Jtczoge1xuICAgICAgICBiYXNlQ29sb3I6IHsgdmFsdWU6IG5ldyBUSFJFRS5Db2xvcihiYXNlQ29sb3IpIH0sXG4gICAgICAgIHVUZXh0dXJlOiB7IHZhbHVlOiBudWxsIH0sXG4gICAgICAgIGF0bGFzSW5kZXg6IHsgdmFsdWU6IG51bGwgfSxcbiAgICAgIH0sXG4gICAgICB2ZXJ0ZXhTaGFkZXI6IHZlcnRleFNoYWRlcigpLFxuICAgICAgZnJhZ21lbnRTaGFkZXI6IGZyYWdtZW50U2hhZGVyKCksXG4gICAgICBibGVuZGluZzogVEhSRUVbYmxlbmRpbmddLFxuICAgICAgZGVwdGhUZXN0LFxuICAgICAgZGVwdGhXcml0ZSxcbiAgICAgIHRyYW5zcGFyZW50LFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb250YWluZXIgPSBjb250YWluZXI7XG4gICAgdGhpcy5jYW1lcmEgPSBjYW1lcmE7XG4gICAgdGhpcy50YXJnZXRQb29sID0gbmV3IFBvb2woKTtcbiAgICB0aGlzLnVuaXF1ZUxpc3QgPSBuZXcgVW5pcXVlTGlzdChtYXhQYXJ0aWNsZXMpO1xuICAgIHRoaXMucGFydGljbGVCdWZmZXIgPSBwYXJ0aWNsZUJ1ZmZlcjtcbiAgICB0aGlzLmJ1ZmZlciA9IHBhcnRpY2xlQnVmZmVyLmJ1ZmZlcjtcbiAgICB0aGlzLnN0cmlkZSA9IHBhcnRpY2xlQnVmZmVyLnN0cmlkZTtcbiAgICB0aGlzLmdlb21ldHJ5ID0gcGFydGljbGVCdWZmZXIuZ2VvbWV0cnk7XG4gICAgdGhpcy5tYXRlcmlhbCA9IG1hdGVyaWFsO1xuICAgIHRoaXMucG9pbnRzID0gbmV3IFRIUkVFLlBvaW50cyh0aGlzLmdlb21ldHJ5LCB0aGlzLm1hdGVyaWFsKTtcbiAgICB0aGlzLnBvaW50cy5mcnVzdHVtQ3VsbGVkID0gZmFsc2U7XG4gICAgdGhpcy5zaG91bGREZWJ1Z1RleHR1cmVBdGxhcyA9IHNob3VsZERlYnVnVGV4dHVyZUF0bGFzO1xuXG4gICAgdGhpcy5jb250YWluZXIuYWRkKHRoaXMucG9pbnRzKTtcbiAgfVxuXG4gIG9uU3lzdGVtVXBkYXRlKHN5c3RlbSkge1xuICAgIHN1cGVyLm9uU3lzdGVtVXBkYXRlKHN5c3RlbSk7XG5cbiAgICB0aGlzLmJ1ZmZlci5uZWVkc1VwZGF0ZSA9IHRydWU7XG5cbiAgICB0aGlzLnRleHR1cmVBdGxhcyAmJiB0aGlzLnRleHR1cmVBdGxhcy51cGRhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQb29scyB0aGUgcGFydGljbGUgdGFyZ2V0IGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICAgKiBVcGRhdGVzIHRoZSB0YXJnZXQgYW5kIG1hcHMgcGFydGljbGUgcHJvcGVydGllcyB0byB0aGUgcG9pbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9XG4gICAqL1xuICBvblBhcnRpY2xlQ3JlYXRlZChwYXJ0aWNsZSkge1xuICAgIGlmICghcGFydGljbGUudGFyZ2V0KSB7XG4gICAgICBwYXJ0aWNsZS50YXJnZXQgPSB0aGlzLnRhcmdldFBvb2wuZ2V0KFRhcmdldCwgVEhSRUUpO1xuICAgICAgdGhpcy51bmlxdWVMaXN0LmFkZChwYXJ0aWNsZS5pZCk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVUYXJnZXQocGFydGljbGUpLm1hcFBhcnRpY2xlVGFyZ2V0UHJvcHNUb1BvaW50KHBhcnRpY2xlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIHBhcnRpY2xlIHByb3BlcnRpZXMgdG8gdGhlIHBvaW50IGlmIHRoZSBwYXJ0aWNsZSBoYXMgYSB0YXJnZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9XG4gICAqL1xuICBvblBhcnRpY2xlVXBkYXRlKHBhcnRpY2xlKSB7XG4gICAgaWYgKCFwYXJ0aWNsZS50YXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVRhcmdldChwYXJ0aWNsZSkubWFwUGFydGljbGVUYXJnZXRQcm9wc1RvUG9pbnQocGFydGljbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyBhbmQgY2xlYXJzIHRoZSBwYXJ0aWNsZSB0YXJnZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9XG4gICAqL1xuICBvblBhcnRpY2xlRGVhZChwYXJ0aWNsZSkge1xuICAgIGlmICghcGFydGljbGUudGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcGFydGljbGUudGFyZ2V0LnJlc2V0KCk7XG4gICAgdGhpcy5tYXBQYXJ0aWNsZVRhcmdldFByb3BzVG9Qb2ludChwYXJ0aWNsZSk7XG5cbiAgICBwYXJ0aWNsZS50YXJnZXQgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcHMgYWxsIG11dGFibGUgcHJvcGVydGllcyBmcm9tIHRoZSBwYXJ0aWNsZSB0byB0aGUgdGFyZ2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfVxuICAgKiBAcmV0dXJuIHtEZXNrdG9wR1BVUmVuZGVyZXJ9XG4gICAqL1xuICB1cGRhdGVUYXJnZXQocGFydGljbGUpIHtcbiAgICBjb25zdCB7IHBvc2l0aW9uLCByb3RhdGlvbiwgc2NhbGUsIHJhZGl1cywgY29sb3IsIGFscGhhLCBib2R5LCBpZCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyByLCBnLCBiIH0gPSBjb2xvcjtcblxuICAgIHBhcnRpY2xlLnRhcmdldC5wb3NpdGlvbi5jb3B5KHBvc2l0aW9uKTtcbiAgICBwYXJ0aWNsZS50YXJnZXQucm90YXRpb24uY29weShyb3RhdGlvbik7XG4gICAgcGFydGljbGUudGFyZ2V0LnNpemUgPSBzY2FsZSAqIHJhZGl1cztcbiAgICBwYXJ0aWNsZS50YXJnZXQuY29sb3Iuc2V0UkdCKHIsIGcsIGIpO1xuICAgIHBhcnRpY2xlLnRhcmdldC5hbHBoYSA9IGFscGhhO1xuICAgIHBhcnRpY2xlLnRhcmdldC5pbmRleCA9IHRoaXMudW5pcXVlTGlzdC5maW5kKGlkKTtcblxuICAgIGlmIChib2R5ICYmIGJvZHkgaW5zdGFuY2VvZiBUSFJFRS5TcHJpdGUpIHtcbiAgICAgIGNvbnN0IHsgbWFwIH0gPSBib2R5Lm1hdGVyaWFsO1xuXG4gICAgICBwYXJ0aWNsZS50YXJnZXQudGV4dHVyZSA9IG1hcDtcbiAgICAgIHBhcnRpY2xlLnRhcmdldC50ZXh0dXJlSW5kZXggPSB0aGlzLmdldFRleHR1cmVJRChcbiAgICAgICAgbWFwLFxuICAgICAgICB0aGlzLnNob3VsZERlYnVnVGV4dHVyZUF0bGFzXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEVudHJ5IHBvaW50IGZvciBtYXBwaW5nIHBhcnRpY2xlIHByb3BlcnRpZXMgdG8gYnVmZmVyIGdlb21ldHJ5IHBvaW50cy5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgcHJvcGVydGllcyB0byBtYXBcbiAgICogQHJldHVybiB7RGVza3RvcEdQVVJlbmRlcmVyfVxuICAgKi9cbiAgbWFwUGFydGljbGVUYXJnZXRQcm9wc1RvUG9pbnQocGFydGljbGUpIHtcbiAgICB0aGlzLnVwZGF0ZVBvaW50UG9zaXRpb24ocGFydGljbGUpXG4gICAgICAudXBkYXRlUG9pbnRTaXplKHBhcnRpY2xlKVxuICAgICAgLnVwZGF0ZVBvaW50Um90YXRpb24ocGFydGljbGUpXG4gICAgICAudXBkYXRlUG9pbnRDb2xvcihwYXJ0aWNsZSlcbiAgICAgIC51cGRhdGVQb2ludEFscGhhKHBhcnRpY2xlKVxuICAgICAgLnVwZGF0ZVBvaW50VGV4dHVyZUluZGV4KHBhcnRpY2xlKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHBvaW50J3MgcG9zaXRpb24gYWNjb3JkaW5nIHRvIHRoZSBwYXJ0aWNsZSdzIHRhcmdldCBwb3NpdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IHBvc2l0aW9uLlxuICAgKiBAcmV0dXJuIHtEZXNrdG9wR1BVUmVuZGVyZXJ9XG4gICAqL1xuICB1cGRhdGVQb2ludFBvc2l0aW9uKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgYXR0cmlidXRlID0gJ3Bvc2l0aW9uJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcblxuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAwXSA9IHRhcmdldC5wb3NpdGlvbi54O1xuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAxXSA9IHRhcmdldC5wb3NpdGlvbi55O1xuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAyXSA9IHRhcmdldC5wb3NpdGlvbi56O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQncyBzaXplIHJlbGF0aXZlIHRvIHRoZSBwYXJ0aWNsZSdzIHRhcmdldCBzY2FsZSBhbmQgcmFkaXVzLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSBjb250YWluaW5nIHRoZSB0YXJnZXQgc2NhbGUuXG4gICAqIEByZXR1cm4ge0Rlc2t0b3BHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVBvaW50U2l6ZShwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZSA9ICdzaXplJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcblxuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAwXSA9IHRhcmdldC5zaXplO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQncyByb3RhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IHJvdGF0aW9uLlxuICAgKiBAcmV0dXJuIHtEZXNrdG9wR1BVUmVuZGVyZXJ9XG4gICAqL1xuICB1cGRhdGVQb2ludFJvdGF0aW9uKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgYXR0cmlidXRlID0gJ3JvdGF0aW9uJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcblxuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAwXSA9IHRhcmdldC5yb3RhdGlvbi56O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQncyBjb2xvciBhdHRyaWJ1dGUgYWNjb3JkaW5nIHdpdGggdGhlIHBhcnRpY2xlJ3MgdGFyZ2V0IGNvbG9yLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSBjb250YWluaW5nIHRoZSB0YXJnZXQgY29sb3IgYW5kIGFscGhhLlxuICAgKiBAcmV0dXJuIHtEZXNrdG9wR1BVUmVuZGVyZXJ9XG4gICAqL1xuICB1cGRhdGVQb2ludENvbG9yKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgYXR0cmlidXRlID0gJ2NvbG9yJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcblxuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAwXSA9IHRhcmdldC5jb2xvci5yO1xuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAxXSA9IHRhcmdldC5jb2xvci5nO1xuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAyXSA9IHRhcmdldC5jb2xvci5iO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQgYWxwaGEgYXR0cmlidXRlIHdpdGggdGhlIHBhcnRpY2xlJ3MgdGFyZ2V0IGFscGhhLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSBjb250YWluaW5nIHRoZSB0YXJnZXQgYWxwaGEuXG4gICAqIEByZXR1cm4ge0Rlc2t0b3BHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVBvaW50QWxwaGEocGFydGljbGUpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGUgPSAnYWxwaGEnO1xuICAgIGNvbnN0IHsgZ2VvbWV0cnksIHN0cmlkZSwgYnVmZmVyIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBwYXJ0aWNsZTtcbiAgICBjb25zdCB7IG9mZnNldCB9ID0gZ2VvbWV0cnkuYXR0cmlidXRlc1thdHRyaWJ1dGVdO1xuXG4gICAgYnVmZmVyLmFycmF5W3RhcmdldC5pbmRleCAqIHN0cmlkZSArIG9mZnNldCArIDBdID0gdGFyZ2V0LmFscGhhO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQgdGV4dHVyZSBhdHRyaWJ1dGUgd2l0aCB0aGUgcGFydGljbGUncyB0YXJnZXQgdGV4dHVyZS5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IHRleHR1cmUuXG4gICAqIEByZXR1cm4ge0Rlc2t0b3BHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVBvaW50VGV4dHVyZUluZGV4KHBhcnRpY2xlKSB7XG4gICAgY29uc3QgYXR0cmlidXRlID0gJ3RleElEJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcblxuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAwXSA9IHRhcmdldC50ZXh0dXJlSW5kZXg7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldFRleHR1cmVJRCh0ZXh0dXJlLCBkZWJ1Zykge1xuICAgIGlmICh0ZXh0dXJlLnRleHR1cmVJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoIXRoaXMudGV4dHVyZUF0bGFzKSB7XG4gICAgICAgIHRoaXMudGV4dHVyZUF0bGFzID0gbmV3IFRleHR1cmVBdGxhcyh0aGlzLCBkZWJ1Zyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudGV4dHVyZUF0bGFzLmFkZFRleHR1cmUodGV4dHVyZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHR1cmUudGV4dHVyZUluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRlYXJzIGRvd24gdGhlIEdQVVJlbmRlcmVyLlxuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgY29uc3QgeyBjb250YWluZXIsIHBvaW50cywgdGV4dHVyZUF0bGFzLCB1bmlxdWVMaXN0IH0gPSB0aGlzO1xuXG4gICAgY29udGFpbmVyLnJlbW92ZShwb2ludHMpO1xuICAgIHVuaXF1ZUxpc3QuZGVzdHJveSgpO1xuICAgIHRleHR1cmVBdGxhcyAmJiB0ZXh0dXJlQXRsYXMuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
@@ -1,13 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.fragmentShader = void 0;
7
-
8
- var fragmentShader = function fragmentShader() {
9
- return "\n uniform vec3 baseColor;\n uniform sampler2D uTexture;\n uniform sampler2D atlasIndex;\n\n varying float vRotation;\n varying vec3 targetColor;\n varying float targetAlpha;\n varying vec4 tileRect;\n varying float tileID;\n\n void main() {\n gl_FragColor = vec4(baseColor * targetColor, targetAlpha);\n\n vec2 uv = gl_PointCoord;\n uv = mix(tileRect.xy, tileRect.zw, gl_PointCoord);\n\n float mid = 0.5;\n uv = vec2(\n cos(vRotation) * (uv.x - mid) - sin(vRotation) * (uv.y - mid) + mid,\n cos(vRotation) * (uv.y - mid) + sin(vRotation) * (uv.x - mid) + mid\n );\n\n gl_FragColor = gl_FragColor * texture2D(uTexture, uv);\n\n }\n";
10
- };
11
-
12
- exports.fragmentShader = fragmentShader;
13
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9EZXNrdG9wL3NoYWRlcnMvZnJhZ21lbnRTaGFkZXIuanMiXSwibmFtZXMiOlsiZnJhZ21lbnRTaGFkZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBTyxJQUFNQSxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLEdBQU07QUFDbEM7QUEyQkQsQ0E1Qk0iLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZnJhZ21lbnRTaGFkZXIgPSAoKSA9PiB7XG4gIHJldHVybiBgXG4gICAgdW5pZm9ybSB2ZWMzIGJhc2VDb2xvcjtcbiAgICB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZTtcbiAgICB1bmlmb3JtIHNhbXBsZXIyRCBhdGxhc0luZGV4O1xuXG4gICAgdmFyeWluZyBmbG9hdCB2Um90YXRpb247XG4gICAgdmFyeWluZyB2ZWMzIHRhcmdldENvbG9yO1xuICAgIHZhcnlpbmcgZmxvYXQgdGFyZ2V0QWxwaGE7XG4gICAgdmFyeWluZyB2ZWM0IHRpbGVSZWN0O1xuICAgIHZhcnlpbmcgZmxvYXQgdGlsZUlEO1xuXG4gICAgdm9pZCBtYWluKCkge1xuICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiYXNlQ29sb3IgKiB0YXJnZXRDb2xvciwgdGFyZ2V0QWxwaGEpO1xuXG4gICAgICB2ZWMyIHV2ID0gZ2xfUG9pbnRDb29yZDtcbiAgICAgIHV2ID0gbWl4KHRpbGVSZWN0Lnh5LCB0aWxlUmVjdC56dywgZ2xfUG9pbnRDb29yZCk7XG5cbiAgICAgIGZsb2F0IG1pZCA9IDAuNTtcbiAgICAgIHV2ID0gdmVjMihcbiAgICAgICAgY29zKHZSb3RhdGlvbikgKiAodXYueCAtIG1pZCkgLSBzaW4odlJvdGF0aW9uKSAqICh1di55IC0gbWlkKSArIG1pZCxcbiAgICAgICAgY29zKHZSb3RhdGlvbikgKiAodXYueSAtIG1pZCkgKyBzaW4odlJvdGF0aW9uKSAqICh1di54IC0gbWlkKSArIG1pZFxuICAgICAgKTtcblxuICAgICAgZ2xfRnJhZ0NvbG9yID0gZ2xfRnJhZ0NvbG9yICogdGV4dHVyZTJEKHVUZXh0dXJlLCB1dik7XG5cbiAgICB9XG5gO1xufTtcbiJdfQ==
@@ -1,22 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "fragmentShader", {
7
- enumerable: true,
8
- get: function get() {
9
- return _fragmentShader.fragmentShader;
10
- }
11
- });
12
- Object.defineProperty(exports, "vertexShader", {
13
- enumerable: true,
14
- get: function get() {
15
- return _vertexShader.vertexShader;
16
- }
17
- });
18
-
19
- var _fragmentShader = require("./fragmentShader");
20
-
21
- var _vertexShader = require("./vertexShader");
22
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9EZXNrdG9wL3NoYWRlcnMvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBmcmFnbWVudFNoYWRlciB9IGZyb20gJy4vZnJhZ21lbnRTaGFkZXInO1xuZXhwb3J0IHsgdmVydGV4U2hhZGVyIH0gZnJvbSAnLi92ZXJ0ZXhTaGFkZXInO1xuIl19
@@ -1,17 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.vertexShader = void 0;
7
-
8
- var _constants = require("../../common/TextureAtlas/constants");
9
-
10
- var _constants2 = require("../../common/shaders/constants");
11
-
12
- var vertexShader = function vertexShader() {
13
- return "\n uniform sampler2D uTexture;\n //atlasIndex is a 256x1 float texture of tile rectangles as r=minx g=miny b=maxx a=maxy\n uniform sampler2D atlasIndex;\n\n attribute float size;\n attribute vec3 color;\n attribute float alpha;\n attribute float texID;\n attribute float rotation;\n\n varying float vRotation;\n varying vec3 targetColor;\n varying float targetAlpha;\n varying vec4 tileRect;\n varying float tileID;\n\n void main() {\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n targetColor = color;\n targetAlpha = alpha;\n vRotation = rotation;\n\n tileID = texID;\n //get the tile rectangle from the atlasIndex texture..\n tileRect = texture2D(atlasIndex, vec2((tileID + 0.5) / ".concat(_constants.DATA_TEXTURE_SIZE, ".0, 0.5));\n\n gl_PointSize = ((size * ").concat(_constants2.SIZE_ATTENUATION_FACTOR, ") / -mvPosition.z);\n gl_Position = projectionMatrix * mvPosition;\n }\n");
14
- };
15
-
16
- exports.vertexShader = vertexShader;
17
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9EZXNrdG9wL3NoYWRlcnMvdmVydGV4U2hhZGVyLmpzIl0sIm5hbWVzIjpbInZlcnRleFNoYWRlciIsIkRBVEFfVEVYVFVSRV9TSVpFIiwiU0laRV9BVFRFTlVBVElPTl9GQUNUT1IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFTyxJQUFNQSxZQUFZLEdBQUcsU0FBZkEsWUFBZSxHQUFNO0FBQ2hDLHl4QkF5QjZEQyw0QkF6QjdELHlEQTJCOEJDLG1DQTNCOUI7QUErQkQsQ0FoQ00iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEQVRBX1RFWFRVUkVfU0laRSB9IGZyb20gJy4uLy4uL2NvbW1vbi9UZXh0dXJlQXRsYXMvY29uc3RhbnRzJztcbmltcG9ydCB7IFNJWkVfQVRURU5VQVRJT05fRkFDVE9SIH0gZnJvbSAnLi4vLi4vY29tbW9uL3NoYWRlcnMvY29uc3RhbnRzJztcblxuZXhwb3J0IGNvbnN0IHZlcnRleFNoYWRlciA9ICgpID0+IHtcbiAgcmV0dXJuIGBcbiAgICB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZTtcbiAgICAvL2F0bGFzSW5kZXggaXMgYSAyNTZ4MSBmbG9hdCB0ZXh0dXJlIG9mIHRpbGUgcmVjdGFuZ2xlcyBhcyByPW1pbnggZz1taW55IGI9bWF4eCBhPW1heHlcbiAgICB1bmlmb3JtIHNhbXBsZXIyRCBhdGxhc0luZGV4O1xuXG4gICAgYXR0cmlidXRlIGZsb2F0IHNpemU7XG4gICAgYXR0cmlidXRlIHZlYzMgY29sb3I7XG4gICAgYXR0cmlidXRlIGZsb2F0IGFscGhhO1xuICAgIGF0dHJpYnV0ZSBmbG9hdCB0ZXhJRDtcbiAgICBhdHRyaWJ1dGUgZmxvYXQgcm90YXRpb247XG5cbiAgICB2YXJ5aW5nIGZsb2F0IHZSb3RhdGlvbjtcbiAgICB2YXJ5aW5nIHZlYzMgdGFyZ2V0Q29sb3I7XG4gICAgdmFyeWluZyBmbG9hdCB0YXJnZXRBbHBoYTtcbiAgICB2YXJ5aW5nIHZlYzQgdGlsZVJlY3Q7XG4gICAgdmFyeWluZyBmbG9hdCB0aWxlSUQ7XG5cbiAgICB2b2lkIG1haW4oKSB7XG4gICAgICB2ZWM0IG12UG9zaXRpb24gPSBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xuICAgICAgdGFyZ2V0Q29sb3IgPSBjb2xvcjtcbiAgICAgIHRhcmdldEFscGhhID0gYWxwaGE7XG4gICAgICB2Um90YXRpb24gPSByb3RhdGlvbjtcblxuICAgICAgdGlsZUlEID0gdGV4SUQ7XG4gICAgICAvL2dldCB0aGUgdGlsZSByZWN0YW5nbGUgZnJvbSB0aGUgYXRsYXNJbmRleCB0ZXh0dXJlLi5cbiAgICAgIHRpbGVSZWN0ID0gdGV4dHVyZTJEKGF0bGFzSW5kZXgsIHZlYzIoKHRpbGVJRCArIDAuNSkgLyAke0RBVEFfVEVYVFVSRV9TSVpFfS4wLCAwLjUpKTtcblxuICAgICAgZ2xfUG9pbnRTaXplID0gKChzaXplICogJHtTSVpFX0FUVEVOVUFUSU9OX0ZBQ1RPUn0pIC8gLW12UG9zaXRpb24ueik7XG4gICAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtdlBvc2l0aW9uO1xuICAgIH1cbmA7XG59O1xuIl19