@openglobus/og 0.11.2 → 0.11.7

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 (273) hide show
  1. package/package.json +13 -13
  2. package/src/og/Clock.js +10 -10
  3. package/src/og/Events.js +8 -6
  4. package/src/og/Extent.js +82 -41
  5. package/src/og/Globe.js +25 -13
  6. package/src/og/ImageCanvas.js +22 -16
  7. package/src/og/LonLat.js +16 -13
  8. package/src/og/Popup.js +21 -14
  9. package/src/og/QueueArray.js +6 -2
  10. package/src/og/Rectangle.js +11 -6
  11. package/src/og/Stack.js +5 -2
  12. package/src/og/ajax.js +21 -33
  13. package/src/og/astro/astro.js +5 -5
  14. package/src/og/astro/earth.js +22 -16
  15. package/src/og/astro/jd.js +23 -18
  16. package/src/og/astro/orbit.js +13 -11
  17. package/src/og/astro/rotation.js +17 -8
  18. package/src/og/bv/Box.js +7 -3
  19. package/src/og/bv/Sphere.js +14 -11
  20. package/src/og/camera/Camera.js +51 -54
  21. package/src/og/camera/Frustum.js +29 -18
  22. package/src/og/camera/PlanetCamera.js +32 -23
  23. package/src/og/control/CompassButton.js +5 -1
  24. package/src/og/control/Control.js +12 -10
  25. package/src/og/control/DebugInfo.js +4 -1
  26. package/src/og/control/EarthCoordinates.js +54 -33
  27. package/src/og/control/KeyboardNavigation.js +10 -10
  28. package/src/og/control/LayerSwitcher.js +22 -21
  29. package/src/og/control/Lighting.js +34 -3
  30. package/src/og/control/MouseNavigation.js +1 -1
  31. package/src/og/control/ScaleControl.js +1 -1
  32. package/src/og/control/SegmentBoundVisualization.js +6 -7
  33. package/src/og/control/ShowFps.js +13 -8
  34. package/src/og/control/SimpleNavigation.js +6 -8
  35. package/src/og/control/Sun.js +25 -15
  36. package/src/og/control/ToggleWireframe.js +4 -4
  37. package/src/og/control/TouchNavigation.js +44 -33
  38. package/src/og/control/ZoomControl.js +41 -25
  39. package/src/og/ellipsoid/Ellipsoid.js +162 -66
  40. package/src/og/ellipsoid/wgs84.js +4 -4
  41. package/src/og/entity/BaseBillboard.js +100 -56
  42. package/src/og/entity/Billboard.js +14 -10
  43. package/src/og/entity/BillboardHandler.js +317 -60
  44. package/src/og/entity/Entity.js +100 -68
  45. package/src/og/entity/EntityCollection.js +70 -47
  46. package/src/og/entity/GeoObject.js +228 -0
  47. package/src/og/entity/GeoObjectHandler.js +910 -0
  48. package/src/og/entity/Geometry.js +27 -24
  49. package/src/og/entity/GeometryHandler.js +596 -124
  50. package/src/og/entity/Label.js +80 -49
  51. package/src/og/entity/LabelHandler.js +45 -244
  52. package/src/og/entity/LabelWorker.js +218 -0
  53. package/src/og/entity/Object3d.js +504 -0
  54. package/src/og/entity/PointCloud.js +80 -32
  55. package/src/og/entity/PointCloudHandler.js +8 -8
  56. package/src/og/entity/Polyline.js +16 -16
  57. package/src/og/entity/Ray.js +60 -27
  58. package/src/og/entity/Strip.js +77 -48
  59. package/src/og/entity/StripHandler.js +26 -26
  60. package/src/og/entity/index.js +8 -16
  61. package/src/og/layer/BaseGeoImage.js +54 -23
  62. package/src/og/layer/CanvasTiles.js +24 -24
  63. package/src/og/layer/GeoImage.js +9 -9
  64. package/src/og/layer/GeoVideo.js +3 -3
  65. package/src/og/layer/KML.js +63 -37
  66. package/src/og/layer/Layer.js +44 -21
  67. package/src/og/layer/Material.js +23 -20
  68. package/src/og/layer/Vector.js +114 -68
  69. package/src/og/layer/WMS.js +34 -17
  70. package/src/og/layer/XYZ.js +48 -46
  71. package/src/og/light/LightSource.js +46 -39
  72. package/src/og/math/Mat3.js +34 -22
  73. package/src/og/math/Mat4.js +603 -459
  74. package/src/og/math/Plane.js +21 -20
  75. package/src/og/math/Quat.js +182 -139
  76. package/src/og/math/Ray.js +38 -33
  77. package/src/og/math/Vec2.js +85 -75
  78. package/src/og/math/Vec3.js +142 -112
  79. package/src/og/math/Vec4.js +27 -31
  80. package/src/og/math/coder.js +10 -10
  81. package/src/og/math.js +12 -12
  82. package/src/og/proj/EPSG3857.js +4 -4
  83. package/src/og/proj/EPSG4326.js +4 -4
  84. package/src/og/proj/Proj.js +4 -6
  85. package/src/og/quadTree/Node.js +8 -8
  86. package/src/og/renderer/Renderer.js +59 -52
  87. package/src/og/renderer/RendererEvents.js +50 -27
  88. package/src/og/scene/BaseNode.js +7 -8
  89. package/src/og/scene/Planet.js +102 -103
  90. package/src/og/scene/RenderNode.js +28 -21
  91. package/src/og/segment/Segment.js +26 -21
  92. package/src/og/segment/SegmentLonLat.js +5 -5
  93. package/src/og/shaders/drawnode.js +135 -142
  94. package/src/og/shaders/geoObject.js +211 -0
  95. package/src/og/shaders/pointCloud.js +41 -41
  96. package/src/og/shaders/shape.js +12 -18
  97. package/src/og/shaders/skybox.js +36 -36
  98. package/src/og/shaders/toneMapping.js +1 -0
  99. package/src/og/shapes/BaseShape.js +126 -54
  100. package/src/og/shapes/Icosphere.js +29 -14
  101. package/src/og/shapes/Sphere.js +12 -15
  102. package/src/og/terrain/BilTerrain.js +1 -0
  103. package/src/og/terrain/EmptyTerrain.js +2 -2
  104. package/src/og/terrain/GlobusTerrain.js +9 -9
  105. package/src/og/utils/FontAtlas.js +6 -2
  106. package/src/og/utils/TextureAtlas.js +22 -24
  107. package/src/og/utils/VectorTileCreator.js +1 -3
  108. package/src/og/utils/shared.js +16 -16
  109. package/src/og/webgl/Framebuffer.js +88 -40
  110. package/src/og/webgl/Handler.js +243 -169
  111. package/src/og/webgl/Multisample.js +47 -19
  112. package/src/og/webgl/Program.js +79 -34
  113. package/src/og/webgl/ProgramController.js +17 -13
  114. package/src/og/webgl/callbacks.js +8 -8
  115. package/src/og/inherits.js +0 -8
  116. package/src/og/utils/polylabel.js +0 -176
  117. package/types/Clock.d.ts +0 -90
  118. package/types/Deferred.d.ts +0 -6
  119. package/types/Events.d.ts +0 -73
  120. package/types/Extent.d.ts +0 -166
  121. package/types/Globe.d.ts +0 -75
  122. package/types/ImageCanvas.d.ts +0 -121
  123. package/types/Lock.d.ts +0 -12
  124. package/types/LonLat.d.ts +0 -108
  125. package/types/Popup.d.ts +0 -38
  126. package/types/QueueArray.d.ts +0 -15
  127. package/types/Rectangle.d.ts +0 -74
  128. package/types/Stack.d.ts +0 -15
  129. package/types/ajax.d.ts +0 -24
  130. package/types/arial.d.ts +0 -48
  131. package/types/astro/astro.d.ts +0 -38
  132. package/types/astro/earth.d.ts +0 -6
  133. package/types/astro/jd.d.ts +0 -254
  134. package/types/bv/Box.d.ts +0 -25
  135. package/types/bv/Sphere.d.ts +0 -38
  136. package/types/bv/index.d.ts +0 -3
  137. package/types/camera/Camera.d.ts +0 -303
  138. package/types/camera/Frustum.d.ts +0 -129
  139. package/types/camera/PlanetCamera.d.ts +0 -223
  140. package/types/camera/index.d.ts +0 -3
  141. package/types/cons.d.ts +0 -40
  142. package/types/control/CompassButton.d.ts +0 -18
  143. package/types/control/Control.d.ts +0 -101
  144. package/types/control/DebugInfo.d.ts +0 -16
  145. package/types/control/EarthCoordinates.d.ts +0 -47
  146. package/types/control/EarthNavigation.d.ts +0 -42
  147. package/types/control/GeoImageDragControl.d.ts +0 -6
  148. package/types/control/KeyboardNavigation.d.ts +0 -22
  149. package/types/control/LayerSwitcher.d.ts +0 -23
  150. package/types/control/Lighting.d.ts +0 -16
  151. package/types/control/MouseNavigation.d.ts +0 -51
  152. package/types/control/ScaleControl.d.ts +0 -22
  153. package/types/control/ShowFps.d.ts +0 -12
  154. package/types/control/SimpleNavigation.d.ts +0 -28
  155. package/types/control/Sun.d.ts +0 -52
  156. package/types/control/ToggleWireframe.d.ts +0 -12
  157. package/types/control/TouchNavigation.d.ts +0 -50
  158. package/types/control/ZoomControl.d.ts +0 -28
  159. package/types/control/index.d.ts +0 -17
  160. package/types/ellipsoid/Ellipsoid.d.ts +0 -142
  161. package/types/ellipsoid/index.d.ts +0 -3
  162. package/types/ellipsoid/wgs84.d.ts +0 -5
  163. package/types/entity/BaseBillboard.d.ts +0 -208
  164. package/types/entity/Billboard.d.ts +0 -94
  165. package/types/entity/BillboardHandler.d.ts +0 -74
  166. package/types/entity/Entity.d.ts +0 -331
  167. package/types/entity/EntityCollection.d.ts +0 -303
  168. package/types/entity/Geometry.d.ts +0 -73
  169. package/types/entity/GeometryHandler.d.ts +0 -76
  170. package/types/entity/Label.d.ts +0 -194
  171. package/types/entity/LabelHandler.d.ts +0 -24
  172. package/types/entity/PointCloud.d.ts +0 -174
  173. package/types/entity/PointCloudHandler.d.ts +0 -38
  174. package/types/entity/Polyline.d.ts +0 -304
  175. package/types/entity/PolylineHandler.d.ts +0 -18
  176. package/types/entity/Ray.d.ts +0 -123
  177. package/types/entity/RayHandler.d.ts +0 -67
  178. package/types/entity/ShapeHandler.d.ts +0 -22
  179. package/types/entity/Strip.d.ts +0 -118
  180. package/types/entity/StripHandler.d.ts +0 -38
  181. package/types/entity/index.d.ts +0 -8
  182. package/types/index.core.d.ts +0 -65
  183. package/types/index.d.ts +0 -45
  184. package/types/index.webgl.d.ts +0 -7
  185. package/types/inherits.d.ts +0 -4
  186. package/types/input/KeyboardHandler.d.ts +0 -10
  187. package/types/input/MouseHandler.d.ts +0 -5
  188. package/types/input/TouchHandler.d.ts +0 -5
  189. package/types/input/input.d.ts +0 -34
  190. package/types/layer/BaseGeoImage.d.ts +0 -107
  191. package/types/layer/CanvasTiles.d.ts +0 -75
  192. package/types/layer/GeoImage.d.ts +0 -65
  193. package/types/layer/GeoTexture2d.d.ts +0 -8
  194. package/types/layer/GeoVideo.d.ts +0 -80
  195. package/types/layer/KML.d.ts +0 -58
  196. package/types/layer/Layer.d.ts +0 -321
  197. package/types/layer/Material.d.ts +0 -48
  198. package/types/layer/Vector.d.ts +0 -228
  199. package/types/layer/WMS.d.ts +0 -66
  200. package/types/layer/XYZ.d.ts +0 -130
  201. package/types/layer/index.d.ts +0 -10
  202. package/types/light/LightSource.d.ts +0 -177
  203. package/types/math/Line2.d.ts +0 -11
  204. package/types/math/Line3.d.ts +0 -10
  205. package/types/math/Mat3.d.ts +0 -63
  206. package/types/math/Mat4.d.ts +0 -173
  207. package/types/math/Plane.d.ts +0 -17
  208. package/types/math/Quat.d.ts +0 -376
  209. package/types/math/Ray.d.ts +0 -81
  210. package/types/math/Vec2.d.ts +0 -308
  211. package/types/math/Vec3.d.ts +0 -459
  212. package/types/math/Vec4.d.ts +0 -161
  213. package/types/math/coder.d.ts +0 -42
  214. package/types/math/index.d.ts +0 -11
  215. package/types/math.d.ts +0 -261
  216. package/types/mercator.d.ts +0 -92
  217. package/types/proj/EPSG3857.d.ts +0 -5
  218. package/types/proj/EPSG4326.d.ts +0 -5
  219. package/types/proj/Proj.d.ts +0 -42
  220. package/types/quadTree/EntityCollectionNode.d.ts +0 -34
  221. package/types/quadTree/Node.d.ts +0 -61
  222. package/types/quadTree/quadTree.d.ts +0 -40
  223. package/types/renderer/Renderer.d.ts +0 -296
  224. package/types/renderer/RendererEvents.d.ts +0 -230
  225. package/types/res/images.d.ts +0 -3
  226. package/types/scene/Axes.d.ts +0 -11
  227. package/types/scene/BaseNode.d.ts +0 -60
  228. package/types/scene/Planet.d.ts +0 -574
  229. package/types/scene/RenderNode.d.ts +0 -143
  230. package/types/scene/SkyBox.d.ts +0 -10
  231. package/types/scene/index.d.ts +0 -4
  232. package/types/segment/Segment.d.ts +0 -271
  233. package/types/segment/SegmentLonLat.d.ts +0 -62
  234. package/types/segment/segmentHelper.d.ts +0 -13
  235. package/types/shaders/billboard.d.ts +0 -3
  236. package/types/shaders/depth.d.ts +0 -2
  237. package/types/shaders/drawnode.d.ts +0 -7
  238. package/types/shaders/label.d.ts +0 -4
  239. package/types/shaders/pointCloud.d.ts +0 -2
  240. package/types/shaders/polyline.d.ts +0 -3
  241. package/types/shaders/ray.d.ts +0 -2
  242. package/types/shaders/screenFrame.d.ts +0 -2
  243. package/types/shaders/shape.d.ts +0 -4
  244. package/types/shaders/skybox.d.ts +0 -2
  245. package/types/shaders/toneMapping.d.ts +0 -2
  246. package/types/shapes/BaseShape.d.ts +0 -247
  247. package/types/shapes/Sphere.d.ts +0 -41
  248. package/types/terrain/BilTerrain.d.ts +0 -8
  249. package/types/terrain/EmptyTerrain.d.ts +0 -72
  250. package/types/terrain/Geoid.d.ts +0 -26
  251. package/types/terrain/GlobusTerrain.d.ts +0 -153
  252. package/types/terrain/MapboxTerrain.d.ts +0 -8
  253. package/types/terrain/index.d.ts +0 -5
  254. package/types/utils/FontAtlas.d.ts +0 -14
  255. package/types/utils/GeoImageCreator.d.ts +0 -30
  256. package/types/utils/ImagesCacheManager.d.ts +0 -10
  257. package/types/utils/Loader.d.ts +0 -25
  258. package/types/utils/NormalMapCreator.d.ts +0 -39
  259. package/types/utils/PlainSegmentWorker.d.ts +0 -10
  260. package/types/utils/TerrainWorker.d.ts +0 -9
  261. package/types/utils/TextureAtlas.d.ts +0 -111
  262. package/types/utils/VectorTileCreator.d.ts +0 -16
  263. package/types/utils/colorTable.d.ts +0 -143
  264. package/types/utils/earcut.d.ts +0 -6
  265. package/types/utils/shared.d.ts +0 -230
  266. package/types/webgl/Framebuffer.d.ts +0 -135
  267. package/types/webgl/Handler.d.ts +0 -372
  268. package/types/webgl/Multisample.d.ts +0 -89
  269. package/types/webgl/Program.d.ts +0 -155
  270. package/types/webgl/ProgramController.d.ts +0 -84
  271. package/types/webgl/callbacks.d.ts +0 -1
  272. package/types/webgl/index.d.ts +0 -6
  273. package/types/webgl/types.d.ts +0 -2
@@ -2,10 +2,11 @@
2
2
  * @module og/entity/BillboardHandler
3
3
  */
4
4
 
5
- 'use strict';
5
+ "use strict";
6
6
 
7
- import * as shaders from '../shaders/billboard.js';
8
- import { concatTypedArrays, spliceTypedArray } from '../utils/shared.js';
7
+ import * as shaders from "../shaders/billboard.js";
8
+ import { concatTypedArrays, spliceTypedArray } from "../utils/shared.js";
9
+ import { LOCK_UPDATE, LOCK_FREE } from "./LabelWorker.js";
9
10
 
10
11
  const PICKINGCOLOR_BUFFER = 0;
11
12
  const POSITION_BUFFER = 1;
@@ -23,8 +24,11 @@ const ALIGNEDAXIS_BUFFER = 8;
23
24
  *
24
25
  */
25
26
  class BillboardHandler {
27
+ /**
28
+ *
29
+ * @param {*} entityCollection
30
+ */
26
31
  constructor(entityCollection) {
27
-
28
32
  /**
29
33
  * Picking rendering option.
30
34
  * @public
@@ -77,6 +81,10 @@ class BillboardHandler {
77
81
  this.__staticId = BillboardHandler._staticCounter++;
78
82
  }
79
83
 
84
+ isEqual(handler) {
85
+ return handler && (handler.__staticId === this.__staticId);
86
+ }
87
+
80
88
  static get _staticCounter() {
81
89
  if (!this._counter && this._counter !== 0) {
82
90
  this._counter = 0;
@@ -96,7 +104,6 @@ class BillboardHandler {
96
104
 
97
105
  initProgram() {
98
106
  if (this._renderer.handler) {
99
-
100
107
  if (!this._renderer.handler.programs.billboard) {
101
108
  this._renderer.handler.addProgram(shaders.billboard_screen());
102
109
  }
@@ -125,13 +132,14 @@ class BillboardHandler {
125
132
  var bi = this._billboards[i];
126
133
  bi._handlerIndex = -1;
127
134
  bi._handler = null;
135
+ bi._isReady = false;
136
+ bi._lockId = LOCK_FREE;
128
137
  }
129
138
  this._billboards.length = 0;
130
139
  this._billboards = [];
131
140
  }
132
141
 
133
142
  clear() {
134
-
135
143
  this._texCoordArr = null;
136
144
  this._vertexArr = null;
137
145
  this._positionHighArr = null;
@@ -200,6 +208,7 @@ class BillboardHandler {
200
208
 
201
209
  add(billboard) {
202
210
  if (billboard._handlerIndex == -1) {
211
+ billboard._isReady = true;
203
212
  billboard._handler = this;
204
213
  billboard._handlerIndex = this._billboards.length;
205
214
  this._billboards.push(billboard);
@@ -211,36 +220,180 @@ class BillboardHandler {
211
220
 
212
221
  _addBillboardToArrays(billboard) {
213
222
  if (billboard._visibility) {
214
- this._vertexArr = concatTypedArrays(this._vertexArr, [-0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5, -0.5, 0.5, 0.5, -0.5, 0.5]);
223
+ this._vertexArr = concatTypedArrays(
224
+ this._vertexArr,
225
+ [-0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5, -0.5, 0.5, 0.5, -0.5, 0.5]
226
+ );
215
227
  } else {
216
- this._vertexArr = concatTypedArrays(this._vertexArr, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
228
+ this._vertexArr = concatTypedArrays(
229
+ this._vertexArr,
230
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
231
+ );
217
232
  }
218
233
 
219
- this._texCoordArr = concatTypedArrays(this._texCoordArr, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
220
-
221
- var x = billboard._positionHigh.x, y = billboard._positionHigh.y, z = billboard._positionHigh.z, w;
222
- this._positionHighArr = concatTypedArrays(this._positionHighArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]);
223
-
224
- x = billboard._positionLow.x; y = billboard._positionLow.y; z = billboard._positionLow.z;
225
- this._positionLowArr = concatTypedArrays(this._positionLowArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]);
226
-
227
- x = billboard._width; y = billboard._height;
234
+ this._texCoordArr = concatTypedArrays(
235
+ this._texCoordArr,
236
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
237
+ );
238
+
239
+ var x = billboard._positionHigh.x,
240
+ y = billboard._positionHigh.y,
241
+ z = billboard._positionHigh.z,
242
+ w;
243
+ this._positionHighArr = concatTypedArrays(this._positionHighArr, [
244
+ x,
245
+ y,
246
+ z,
247
+ x,
248
+ y,
249
+ z,
250
+ x,
251
+ y,
252
+ z,
253
+ x,
254
+ y,
255
+ z,
256
+ x,
257
+ y,
258
+ z,
259
+ x,
260
+ y,
261
+ z
262
+ ]);
263
+
264
+ x = billboard._positionLow.x;
265
+ y = billboard._positionLow.y;
266
+ z = billboard._positionLow.z;
267
+ this._positionLowArr = concatTypedArrays(this._positionLowArr, [
268
+ x,
269
+ y,
270
+ z,
271
+ x,
272
+ y,
273
+ z,
274
+ x,
275
+ y,
276
+ z,
277
+ x,
278
+ y,
279
+ z,
280
+ x,
281
+ y,
282
+ z,
283
+ x,
284
+ y,
285
+ z
286
+ ]);
287
+
288
+ x = billboard._width;
289
+ y = billboard._height;
228
290
  this._sizeArr = concatTypedArrays(this._sizeArr, [x, y, x, y, x, y, x, y, x, y, x, y]);
229
291
 
230
- x = billboard._offset.x; y = billboard._offset.y; z = billboard._offset.z;
231
- this._offsetArr = concatTypedArrays(this._offsetArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]);
232
-
233
- x = billboard._color.x; y = billboard._color.y; z = billboard._color.z; w = billboard._color.w;
234
- this._rgbaArr = concatTypedArrays(this._rgbaArr, [x, y, z, w, x, y, z, w, x, y, z, w, x, y, z, w, x, y, z, w, x, y, z, w]);
292
+ x = billboard._offset.x;
293
+ y = billboard._offset.y;
294
+ z = billboard._offset.z;
295
+ this._offsetArr = concatTypedArrays(this._offsetArr, [
296
+ x,
297
+ y,
298
+ z,
299
+ x,
300
+ y,
301
+ z,
302
+ x,
303
+ y,
304
+ z,
305
+ x,
306
+ y,
307
+ z,
308
+ x,
309
+ y,
310
+ z,
311
+ x,
312
+ y,
313
+ z
314
+ ]);
315
+
316
+ x = billboard._color.x;
317
+ y = billboard._color.y;
318
+ z = billboard._color.z;
319
+ w = billboard._color.w;
320
+ this._rgbaArr = concatTypedArrays(this._rgbaArr, [
321
+ x,
322
+ y,
323
+ z,
324
+ w,
325
+ x,
326
+ y,
327
+ z,
328
+ w,
329
+ x,
330
+ y,
331
+ z,
332
+ w,
333
+ x,
334
+ y,
335
+ z,
336
+ w,
337
+ x,
338
+ y,
339
+ z,
340
+ w,
341
+ x,
342
+ y,
343
+ z,
344
+ w
345
+ ]);
235
346
 
236
347
  x = billboard._rotation;
237
348
  this._rotationArr = concatTypedArrays(this._rotationArr, [x, x, x, x, x, x]);
238
349
 
239
- x = billboard._alignedAxis.x; y = billboard._alignedAxis.y; z = billboard._alignedAxis.z;
240
- this._alignedAxisArr = concatTypedArrays(this._alignedAxisArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]);
241
-
242
- x = billboard._entity._pickingColor.x / 255; y = billboard._entity._pickingColor.y / 255; z = billboard._entity._pickingColor.z / 255;
243
- this._pickingColorArr = concatTypedArrays(this._pickingColorArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]);
350
+ x = billboard._alignedAxis.x;
351
+ y = billboard._alignedAxis.y;
352
+ z = billboard._alignedAxis.z;
353
+ this._alignedAxisArr = concatTypedArrays(this._alignedAxisArr, [
354
+ x,
355
+ y,
356
+ z,
357
+ x,
358
+ y,
359
+ z,
360
+ x,
361
+ y,
362
+ z,
363
+ x,
364
+ y,
365
+ z,
366
+ x,
367
+ y,
368
+ z,
369
+ x,
370
+ y,
371
+ z
372
+ ]);
373
+
374
+ x = billboard._entity._pickingColor.x / 255;
375
+ y = billboard._entity._pickingColor.y / 255;
376
+ z = billboard._entity._pickingColor.z / 255;
377
+ this._pickingColorArr = concatTypedArrays(this._pickingColorArr, [
378
+ x,
379
+ y,
380
+ z,
381
+ x,
382
+ y,
383
+ z,
384
+ x,
385
+ y,
386
+ z,
387
+ x,
388
+ y,
389
+ z,
390
+ x,
391
+ y,
392
+ z,
393
+ x,
394
+ y,
395
+ z
396
+ ]);
244
397
  }
245
398
 
246
399
  _displayPASS() {
@@ -268,19 +421,43 @@ class BillboardHandler {
268
421
 
269
422
  gl.uniform1f(shu.uOpacity, ec._fadingOpacity);
270
423
 
271
- gl.uniform2fv(shu.uFloatParams, [ec.renderNode._planetRadius2 || 0, r.activeCamera._tanViewAngle_hradOneByHeight]);
424
+ gl.uniform2fv(shu.uFloatParams, [
425
+ ec.renderNode._planetRadius2 || 0,
426
+ r.activeCamera._tanViewAngle_hradOneByHeight
427
+ ]);
272
428
 
273
429
  gl.bindBuffer(gl.ARRAY_BUFFER, this._texCoordBuffer);
274
- gl.vertexAttribPointer(sha.a_texCoord, this._texCoordBuffer.itemSize, gl.FLOAT, false, 0, 0);
430
+ gl.vertexAttribPointer(
431
+ sha.a_texCoord,
432
+ this._texCoordBuffer.itemSize,
433
+ gl.FLOAT,
434
+ false,
435
+ 0,
436
+ 0
437
+ );
275
438
 
276
439
  gl.bindBuffer(gl.ARRAY_BUFFER, this._vertexBuffer);
277
440
  gl.vertexAttribPointer(sha.a_vertices, this._vertexBuffer.itemSize, gl.FLOAT, false, 0, 0);
278
441
 
279
442
  gl.bindBuffer(gl.ARRAY_BUFFER, this._positionHighBuffer);
280
- gl.vertexAttribPointer(sha.a_positionsHigh, this._positionHighBuffer.itemSize, gl.FLOAT, false, 0, 0);
443
+ gl.vertexAttribPointer(
444
+ sha.a_positionsHigh,
445
+ this._positionHighBuffer.itemSize,
446
+ gl.FLOAT,
447
+ false,
448
+ 0,
449
+ 0
450
+ );
281
451
 
282
452
  gl.bindBuffer(gl.ARRAY_BUFFER, this._positionLowBuffer);
283
- gl.vertexAttribPointer(sha.a_positionsLow, this._positionLowBuffer.itemSize, gl.FLOAT, false, 0, 0);
453
+ gl.vertexAttribPointer(
454
+ sha.a_positionsLow,
455
+ this._positionLowBuffer.itemSize,
456
+ gl.FLOAT,
457
+ false,
458
+ 0,
459
+ 0
460
+ );
284
461
 
285
462
  gl.bindBuffer(gl.ARRAY_BUFFER, this._rgbaBuffer);
286
463
  gl.vertexAttribPointer(sha.a_rgba, this._rgbaBuffer.itemSize, gl.FLOAT, false, 0, 0);
@@ -292,10 +469,24 @@ class BillboardHandler {
292
469
  gl.vertexAttribPointer(sha.a_offset, this._offsetBuffer.itemSize, gl.FLOAT, false, 0, 0);
293
470
 
294
471
  gl.bindBuffer(gl.ARRAY_BUFFER, this._rotationBuffer);
295
- gl.vertexAttribPointer(sha.a_rotation, this._rotationBuffer.itemSize, gl.FLOAT, false, 0, 0);
472
+ gl.vertexAttribPointer(
473
+ sha.a_rotation,
474
+ this._rotationBuffer.itemSize,
475
+ gl.FLOAT,
476
+ false,
477
+ 0,
478
+ 0
479
+ );
296
480
 
297
481
  gl.bindBuffer(gl.ARRAY_BUFFER, this._alignedAxisBuffer);
298
- gl.vertexAttribPointer(sha.a_alignedAxis, this._alignedAxisBuffer.itemSize, gl.FLOAT, false, 0, 0);
482
+ gl.vertexAttribPointer(
483
+ sha.a_alignedAxis,
484
+ this._alignedAxisBuffer.itemSize,
485
+ gl.FLOAT,
486
+ false,
487
+ 0,
488
+ 0
489
+ );
299
490
 
300
491
  gl.drawArrays(gl.TRIANGLES, 0, this._vertexBuffer.numItems);
301
492
  }
@@ -325,19 +516,43 @@ class BillboardHandler {
325
516
 
326
517
  gl.uniform1f(shu.pickingScale, ec.pickingScale);
327
518
 
328
- gl.uniform2fv(shu.uFloatParams, [ec.renderNode._planetRadius2 || 0, r.activeCamera._tanViewAngle_hradOneByHeight]);
519
+ gl.uniform2fv(shu.uFloatParams, [
520
+ ec.renderNode._planetRadius2 || 0,
521
+ r.activeCamera._tanViewAngle_hradOneByHeight
522
+ ]);
329
523
 
330
524
  gl.bindBuffer(gl.ARRAY_BUFFER, this._vertexBuffer);
331
525
  gl.vertexAttribPointer(sha.a_vertices, this._vertexBuffer.itemSize, gl.FLOAT, false, 0, 0);
332
526
 
333
527
  gl.bindBuffer(gl.ARRAY_BUFFER, this._positionHighBuffer);
334
- gl.vertexAttribPointer(sha.a_positionsHigh, this._positionHighBuffer.itemSize, gl.FLOAT, false, 0, 0);
528
+ gl.vertexAttribPointer(
529
+ sha.a_positionsHigh,
530
+ this._positionHighBuffer.itemSize,
531
+ gl.FLOAT,
532
+ false,
533
+ 0,
534
+ 0
535
+ );
335
536
 
336
537
  gl.bindBuffer(gl.ARRAY_BUFFER, this._positionLowBuffer);
337
- gl.vertexAttribPointer(sha.a_positionsLow, this._positionLowBuffer.itemSize, gl.FLOAT, false, 0, 0);
538
+ gl.vertexAttribPointer(
539
+ sha.a_positionsLow,
540
+ this._positionLowBuffer.itemSize,
541
+ gl.FLOAT,
542
+ false,
543
+ 0,
544
+ 0
545
+ );
338
546
 
339
547
  gl.bindBuffer(gl.ARRAY_BUFFER, this._pickingColorBuffer);
340
- gl.vertexAttribPointer(sha.a_pickingColor, this._pickingColorBuffer.itemSize, gl.FLOAT, false, 0, 0);
548
+ gl.vertexAttribPointer(
549
+ sha.a_pickingColor,
550
+ this._pickingColorBuffer.itemSize,
551
+ gl.FLOAT,
552
+ false,
553
+ 0,
554
+ 0
555
+ );
341
556
 
342
557
  gl.bindBuffer(gl.ARRAY_BUFFER, this._sizeBuffer);
343
558
  gl.vertexAttribPointer(sha.a_size, this._sizeBuffer.itemSize, gl.FLOAT, false, 0, 0);
@@ -346,10 +561,24 @@ class BillboardHandler {
346
561
  gl.vertexAttribPointer(sha.a_offset, this._offsetBuffer.itemSize, gl.FLOAT, false, 0, 0);
347
562
 
348
563
  gl.bindBuffer(gl.ARRAY_BUFFER, this._rotationBuffer);
349
- gl.vertexAttribPointer(sha.a_rotation, this._rotationBuffer.itemSize, gl.FLOAT, false, 0, 0);
564
+ gl.vertexAttribPointer(
565
+ sha.a_rotation,
566
+ this._rotationBuffer.itemSize,
567
+ gl.FLOAT,
568
+ false,
569
+ 0,
570
+ 0
571
+ );
350
572
 
351
573
  gl.bindBuffer(gl.ARRAY_BUFFER, this._alignedAxisBuffer);
352
- gl.vertexAttribPointer(sha.a_alignedAxis, this._alignedAxisBuffer.itemSize, gl.FLOAT, false, 0, 0);
574
+ gl.vertexAttribPointer(
575
+ sha.a_alignedAxis,
576
+ this._alignedAxisBuffer.itemSize,
577
+ gl.FLOAT,
578
+ false,
579
+ 0,
580
+ 0
581
+ );
353
582
 
354
583
  gl.drawArrays(gl.TRIANGLES, 0, this._vertexBuffer.numItems);
355
584
  }
@@ -402,20 +631,26 @@ class BillboardHandler {
402
631
 
403
632
  billboard._handlerIndex = -1;
404
633
  billboard._handler = null;
634
+ billboard._isReady = false;
635
+ billboard._lockId = LOCK_FREE;
405
636
  }
406
637
 
407
638
  remove(billboard) {
408
- if (billboard._handler && this.__staticId == billboard._handler.__staticId) {
639
+ if (billboard._isReady && this.__staticId == billboard._handler.__staticId) {
409
640
  this._removeBillboard(billboard);
641
+ } else {
642
+ billboard._handler = null;
410
643
  }
411
644
  }
412
645
 
413
646
  setPositionArr(index, positionHigh, positionLow) {
414
-
415
647
  var i = index * 18;
416
648
 
417
649
  // High
418
- var a = this._positionHighArr, x = positionHigh.x, y = positionHigh.y, z = positionHigh.z;
650
+ var a = this._positionHighArr,
651
+ x = positionHigh.x,
652
+ y = positionHigh.y,
653
+ z = positionHigh.z;
419
654
 
420
655
  a[i] = x;
421
656
  a[i + 1] = y;
@@ -442,7 +677,10 @@ class BillboardHandler {
442
677
  a[i + 17] = z;
443
678
 
444
679
  // Low
445
- a = this._positionLowArr; x = positionLow.x; y = positionLow.y; z = positionLow.z;
680
+ a = this._positionLowArr;
681
+ x = positionLow.x;
682
+ y = positionLow.y;
683
+ z = positionLow.z;
446
684
 
447
685
  a[i] = x;
448
686
  a[i + 1] = y;
@@ -472,9 +710,11 @@ class BillboardHandler {
472
710
  }
473
711
 
474
712
  setPickingColorArr(index, color) {
475
-
476
713
  var i = index * 18;
477
- var a = this._pickingColorArr, x = color.x / 255, y = color.y / 255, z = color.z / 255;
714
+ var a = this._pickingColorArr,
715
+ x = color.x / 255,
716
+ y = color.y / 255,
717
+ z = color.z / 255;
478
718
 
479
719
  a[i] = x;
480
720
  a[i + 1] = y;
@@ -504,9 +744,10 @@ class BillboardHandler {
504
744
  }
505
745
 
506
746
  setSizeArr(index, width, height) {
507
-
508
747
  var i = index * 12;
509
- var a = this._sizeArr, x = width, y = height;
748
+ var a = this._sizeArr,
749
+ x = width,
750
+ y = height;
510
751
 
511
752
  a[i] = x;
512
753
  a[i + 1] = y;
@@ -530,9 +771,11 @@ class BillboardHandler {
530
771
  }
531
772
 
532
773
  setOffsetArr(index, offset) {
533
-
534
774
  var i = index * 18;
535
- var a = this._offsetArr, x = offset.x, y = offset.y, z = offset.z;
775
+ var a = this._offsetArr,
776
+ x = offset.x,
777
+ y = offset.y,
778
+ z = offset.z;
536
779
 
537
780
  a[i] = x;
538
781
  a[i + 1] = y;
@@ -562,9 +805,12 @@ class BillboardHandler {
562
805
  }
563
806
 
564
807
  setRgbaArr(index, rgba) {
565
-
566
808
  var i = index * 24;
567
- var a = this._rgbaArr, x = rgba.x, y = rgba.y, z = rgba.z, w = rgba.w;
809
+ var a = this._rgbaArr,
810
+ x = rgba.x,
811
+ y = rgba.y,
812
+ z = rgba.z,
813
+ w = rgba.w;
568
814
 
569
815
  a[i] = x;
570
816
  a[i + 1] = y;
@@ -600,7 +846,6 @@ class BillboardHandler {
600
846
  }
601
847
 
602
848
  setRotationArr(index, rotation) {
603
-
604
849
  var i = index * 6;
605
850
  var a = this._rotationArr;
606
851
 
@@ -615,7 +860,6 @@ class BillboardHandler {
615
860
  }
616
861
 
617
862
  setTexCoordArr(index, tcoordArr) {
618
-
619
863
  var i = index * 12;
620
864
  var a = this._texCoordArr;
621
865
 
@@ -651,7 +895,6 @@ class BillboardHandler {
651
895
  }
652
896
 
653
897
  setVertexArr(index, vertexArr) {
654
-
655
898
  var i = index * 12;
656
899
  var a = this._vertexArr;
657
900
 
@@ -675,9 +918,11 @@ class BillboardHandler {
675
918
  }
676
919
 
677
920
  setAlignedAxisArr(index, alignedAxis) {
678
-
679
921
  var i = index * 18;
680
- var a = this._alignedAxisArr, x = alignedAxis.x, y = alignedAxis.y, z = alignedAxis.z;
922
+ var a = this._alignedAxisArr,
923
+ x = alignedAxis.x,
924
+ y = alignedAxis.y,
925
+ z = alignedAxis.z;
681
926
 
682
927
  a[i] = x;
683
928
  a[i + 1] = y;
@@ -759,19 +1004,31 @@ class BillboardHandler {
759
1004
  createTexCoordBuffer() {
760
1005
  var h = this._renderer.handler;
761
1006
  h.gl.deleteBuffer(this._texCoordBuffer);
762
- this._texCoordBuffer = h.createArrayBuffer(this._texCoordArr, 2, this._texCoordArr.length / 2);
1007
+ this._texCoordBuffer = h.createArrayBuffer(
1008
+ this._texCoordArr,
1009
+ 2,
1010
+ this._texCoordArr.length / 2
1011
+ );
763
1012
  }
764
1013
 
765
1014
  createAlignedAxisBuffer() {
766
1015
  var h = this._renderer.handler;
767
1016
  h.gl.deleteBuffer(this._alignedAxisBuffer);
768
- this._alignedAxisBuffer = h.createArrayBuffer(this._alignedAxisArr, 3, this._alignedAxisArr.length / 3);
1017
+ this._alignedAxisBuffer = h.createArrayBuffer(
1018
+ this._alignedAxisArr,
1019
+ 3,
1020
+ this._alignedAxisArr.length / 3
1021
+ );
769
1022
  }
770
1023
 
771
1024
  createPickingColorBuffer() {
772
1025
  var h = this._renderer.handler;
773
1026
  h.gl.deleteBuffer(this._pickingColorBuffer);
774
- this._pickingColorBuffer = h.createArrayBuffer(this._pickingColorArr, 3, this._pickingColorArr.length / 3);
1027
+ this._pickingColorBuffer = h.createArrayBuffer(
1028
+ this._pickingColorArr,
1029
+ 3,
1030
+ this._pickingColorArr.length / 3
1031
+ );
775
1032
  }
776
1033
 
777
1034
  refreshTexCoordsArr() {
@@ -792,4 +1049,4 @@ class BillboardHandler {
792
1049
  }
793
1050
  }
794
1051
 
795
- export { BillboardHandler };
1052
+ export { BillboardHandler };