@openglobus/og 0.11.5 → 0.12.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 (267) hide show
  1. package/css/og.css +5 -2
  2. package/package.json +12 -14
  3. package/src/og/Clock.js +6 -10
  4. package/src/og/Events.js +5 -7
  5. package/src/og/Extent.js +73 -32
  6. package/src/og/Globe.js +25 -10
  7. package/src/og/ImageCanvas.js +18 -15
  8. package/src/og/LonLat.js +13 -10
  9. package/src/og/Popup.js +19 -17
  10. package/src/og/QueueArray.js +3 -4
  11. package/src/og/Rectangle.js +4 -6
  12. package/src/og/Stack.js +2 -4
  13. package/src/og/ajax.js +20 -14
  14. package/src/og/astro/earth.js +21 -15
  15. package/src/og/bv/Box.js +2 -3
  16. package/src/og/bv/Sphere.js +10 -7
  17. package/src/og/camera/Camera.js +70 -79
  18. package/src/og/camera/Frustum.js +19 -12
  19. package/src/og/camera/PlanetCamera.js +33 -34
  20. package/src/og/control/CompassButton.js +1 -2
  21. package/src/og/control/Control.js +7 -9
  22. package/src/og/control/DebugInfo.js +2 -3
  23. package/src/og/control/EarthNavigation.js +26 -17
  24. package/src/og/control/KeyboardNavigation.js +9 -9
  25. package/src/og/control/LayerSwitcher.js +21 -20
  26. package/src/og/control/Lighting.js +74 -64
  27. package/src/og/control/MouseNavigation.js +30 -29
  28. package/src/og/control/MouseWheelZoomControl.js +257 -0
  29. package/src/og/control/SegmentBoundVisualization.js +5 -6
  30. package/src/og/control/ShowFps.js +12 -7
  31. package/src/og/control/SimpleNavigation.js +5 -7
  32. package/src/og/control/Sun.js +24 -14
  33. package/src/og/control/ToggleWireframe.js +3 -3
  34. package/src/og/control/TouchNavigation.js +43 -32
  35. package/src/og/control/ZoomControl.js +40 -24
  36. package/src/og/control/index.js +2 -0
  37. package/src/og/control/visibleExtent/Segment.js +1862 -0
  38. package/src/og/control/visibleExtent/VisibleExtent.js +80 -0
  39. package/src/og/control/visibleExtent/drawnode.js +751 -0
  40. package/src/og/ellipsoid/Ellipsoid.js +149 -57
  41. package/src/og/ellipsoid/wgs84.js +3 -3
  42. package/src/og/entity/BaseBillboard.js +72 -30
  43. package/src/og/entity/Billboard.js +9 -5
  44. package/src/og/entity/BillboardHandler.js +315 -62
  45. package/src/og/entity/Entity.js +742 -704
  46. package/src/og/entity/EntityCollection.js +47 -24
  47. package/src/og/entity/GeoObject.js +228 -0
  48. package/src/og/entity/GeoObjectHandler.js +895 -0
  49. package/src/og/entity/GeometryHandler.js +595 -123
  50. package/src/og/entity/Label.js +62 -30
  51. package/src/og/entity/LabelHandler.js +42 -243
  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 +76 -28
  55. package/src/og/entity/PointCloudHandler.js +5 -5
  56. package/src/og/entity/Ray.js +49 -16
  57. package/src/og/entity/Strip.js +72 -43
  58. package/src/og/entity/StripHandler.js +23 -23
  59. package/src/og/layer/BaseGeoImage.js +50 -19
  60. package/src/og/layer/CanvasTiles.js +16 -17
  61. package/src/og/layer/GeoImage.js +8 -16
  62. package/src/og/layer/GeoTexture2d.js +2 -10
  63. package/src/og/layer/GeoVideo.js +2 -10
  64. package/src/og/layer/KML.js +55 -33
  65. package/src/og/layer/Layer.js +24 -33
  66. package/src/og/layer/Material.js +1 -1
  67. package/src/og/layer/Vector.js +94 -48
  68. package/src/og/layer/WMS.js +33 -18
  69. package/src/og/layer/XYZ.js +24 -26
  70. package/src/og/light/LightSource.js +19 -12
  71. package/src/og/math/Mat3.js +24 -12
  72. package/src/og/math/Mat4.js +603 -603
  73. package/src/og/math/Plane.js +19 -18
  74. package/src/og/math/Ray.js +17 -12
  75. package/src/og/math/Vec2.js +24 -14
  76. package/src/og/math/Vec3.js +78 -32
  77. package/src/og/math/coder.js +7 -7
  78. package/src/og/proj/EPSG3857.js +3 -3
  79. package/src/og/proj/EPSG4326.js +3 -3
  80. package/src/og/proj/Proj.js +2 -4
  81. package/src/og/quadTree/Node.js +50 -95
  82. package/src/og/quadTree/quadTree.js +1 -1
  83. package/src/og/renderer/Renderer.js +106 -126
  84. package/src/og/renderer/RendererEvents.js +45 -23
  85. package/src/og/scene/BaseNode.js +2 -3
  86. package/src/og/scene/Planet.js +139 -191
  87. package/src/og/scene/RenderNode.js +15 -8
  88. package/src/og/segment/Segment.js +93 -268
  89. package/src/og/segment/Slice.js +45 -0
  90. package/src/og/shaders/drawnode.js +174 -360
  91. package/src/og/shaders/geoObject.js +211 -0
  92. package/src/og/shaders/pointCloud.js +41 -41
  93. package/src/og/shaders/shape.js +12 -18
  94. package/src/og/shaders/skybox.js +36 -36
  95. package/src/og/shaders/toneMapping.js +1 -0
  96. package/src/og/shapes/BaseShape.js +108 -36
  97. package/src/og/shapes/Icosphere.js +25 -10
  98. package/src/og/shapes/Sphere.js +8 -11
  99. package/src/og/terrain/EmptyTerrain.js +3 -2
  100. package/src/og/terrain/GlobusTerrain.js +2 -0
  101. package/src/og/utils/FontAtlas.js +6 -2
  102. package/src/og/utils/GeoImageCreator.js +5 -1
  103. package/src/og/utils/Loader.js +1 -1
  104. package/src/og/utils/PlainSegmentWorker.js +0 -13
  105. package/src/og/utils/TextureAtlas.js +18 -20
  106. package/src/og/utils/VectorTileCreator.js +1 -3
  107. package/src/og/utils/shared.js +2 -2
  108. package/src/og/webgl/Handler.js +219 -162
  109. package/src/og/webgl/Multisample.js +44 -16
  110. package/src/og/webgl/Program.js +78 -33
  111. package/src/og/webgl/callbacks.js +3 -3
  112. package/types/Clock.d.ts +0 -94
  113. package/types/Deferred.d.ts +0 -6
  114. package/types/Events.d.ts +0 -77
  115. package/types/Extent.d.ts +0 -166
  116. package/types/Globe.d.ts +0 -82
  117. package/types/ImageCanvas.d.ts +0 -123
  118. package/types/Lock.d.ts +0 -12
  119. package/types/LonLat.d.ts +0 -108
  120. package/types/Popup.d.ts +0 -42
  121. package/types/QueueArray.d.ts +0 -19
  122. package/types/Rectangle.d.ts +0 -80
  123. package/types/Stack.d.ts +0 -19
  124. package/types/ajax.d.ts +0 -24
  125. package/types/arial.d.ts +0 -48
  126. package/types/astro/astro.d.ts +0 -38
  127. package/types/astro/earth.d.ts +0 -7
  128. package/types/astro/jd.d.ts +0 -254
  129. package/types/bv/Box.d.ts +0 -30
  130. package/types/bv/Sphere.d.ts +0 -38
  131. package/types/bv/index.d.ts +0 -3
  132. package/types/camera/Camera.d.ts +0 -312
  133. package/types/camera/Frustum.d.ts +0 -133
  134. package/types/camera/PlanetCamera.d.ts +0 -218
  135. package/types/camera/index.d.ts +0 -3
  136. package/types/cons.d.ts +0 -40
  137. package/types/control/CompassButton.d.ts +0 -17
  138. package/types/control/Control.d.ts +0 -104
  139. package/types/control/DebugInfo.d.ts +0 -15
  140. package/types/control/EarthCoordinates.d.ts +0 -47
  141. package/types/control/EarthNavigation.d.ts +0 -42
  142. package/types/control/GeoImageDragControl.d.ts +0 -6
  143. package/types/control/KeyboardNavigation.d.ts +0 -21
  144. package/types/control/LayerSwitcher.d.ts +0 -21
  145. package/types/control/Lighting.d.ts +0 -16
  146. package/types/control/MouseNavigation.d.ts +0 -47
  147. package/types/control/ScaleControl.d.ts +0 -22
  148. package/types/control/ShowFps.d.ts +0 -11
  149. package/types/control/SimpleNavigation.d.ts +0 -25
  150. package/types/control/Sun.d.ts +0 -50
  151. package/types/control/ToggleWireframe.d.ts +0 -12
  152. package/types/control/TouchNavigation.d.ts +0 -48
  153. package/types/control/ZoomControl.d.ts +0 -27
  154. package/types/control/index.d.ts +0 -17
  155. package/types/ellipsoid/Ellipsoid.d.ts +0 -146
  156. package/types/ellipsoid/index.d.ts +0 -3
  157. package/types/ellipsoid/wgs84.d.ts +0 -6
  158. package/types/entity/BaseBillboard.d.ts +0 -208
  159. package/types/entity/Billboard.d.ts +0 -94
  160. package/types/entity/BillboardHandler.d.ts +0 -78
  161. package/types/entity/Entity.d.ts +0 -333
  162. package/types/entity/EntityCollection.d.ts +0 -311
  163. package/types/entity/Geometry.d.ts +0 -74
  164. package/types/entity/GeometryHandler.d.ts +0 -76
  165. package/types/entity/Label.d.ts +0 -189
  166. package/types/entity/LabelHandler.d.ts +0 -29
  167. package/types/entity/PointCloud.d.ts +0 -174
  168. package/types/entity/PointCloudHandler.d.ts +0 -38
  169. package/types/entity/Polyline.d.ts +0 -306
  170. package/types/entity/PolylineHandler.d.ts +0 -18
  171. package/types/entity/Ray.d.ts +0 -124
  172. package/types/entity/RayHandler.d.ts +0 -67
  173. package/types/entity/ShapeHandler.d.ts +0 -22
  174. package/types/entity/Strip.d.ts +0 -119
  175. package/types/entity/StripHandler.d.ts +0 -38
  176. package/types/entity/index.d.ts +0 -8
  177. package/types/index.core.d.ts +0 -65
  178. package/types/index.d.ts +0 -45
  179. package/types/index.webgl.d.ts +0 -7
  180. package/types/input/KeyboardHandler.d.ts +0 -10
  181. package/types/input/MouseHandler.d.ts +0 -5
  182. package/types/input/TouchHandler.d.ts +0 -5
  183. package/types/input/input.d.ts +0 -34
  184. package/types/layer/BaseGeoImage.d.ts +0 -94
  185. package/types/layer/CanvasTiles.d.ts +0 -68
  186. package/types/layer/GeoImage.d.ts +0 -52
  187. package/types/layer/GeoTexture2d.d.ts +0 -8
  188. package/types/layer/GeoVideo.d.ts +0 -55
  189. package/types/layer/KML.d.ts +0 -63
  190. package/types/layer/Layer.d.ts +0 -326
  191. package/types/layer/Material.d.ts +0 -45
  192. package/types/layer/Vector.d.ts +0 -208
  193. package/types/layer/WMS.d.ts +0 -63
  194. package/types/layer/XYZ.d.ts +0 -120
  195. package/types/layer/index.d.ts +0 -10
  196. package/types/light/LightSource.d.ts +0 -178
  197. package/types/math/Line2.d.ts +0 -11
  198. package/types/math/Line3.d.ts +0 -10
  199. package/types/math/Mat3.d.ts +0 -65
  200. package/types/math/Mat4.d.ts +0 -176
  201. package/types/math/Plane.d.ts +0 -18
  202. package/types/math/Quat.d.ts +0 -379
  203. package/types/math/Ray.d.ts +0 -82
  204. package/types/math/Vec2.d.ts +0 -309
  205. package/types/math/Vec3.d.ts +0 -460
  206. package/types/math/Vec4.d.ts +0 -162
  207. package/types/math/coder.d.ts +0 -43
  208. package/types/math/index.d.ts +0 -11
  209. package/types/math.d.ts +0 -261
  210. package/types/mercator.d.ts +0 -92
  211. package/types/proj/EPSG3857.d.ts +0 -6
  212. package/types/proj/EPSG4326.d.ts +0 -6
  213. package/types/proj/Proj.d.ts +0 -42
  214. package/types/quadTree/EntityCollectionNode.d.ts +0 -34
  215. package/types/quadTree/Node.d.ts +0 -61
  216. package/types/quadTree/quadTree.d.ts +0 -40
  217. package/types/renderer/Renderer.d.ts +0 -298
  218. package/types/renderer/RendererEvents.d.ts +0 -233
  219. package/types/res/images.d.ts +0 -3
  220. package/types/scene/Axes.d.ts +0 -11
  221. package/types/scene/BaseNode.d.ts +0 -60
  222. package/types/scene/Planet.d.ts +0 -577
  223. package/types/scene/RenderNode.d.ts +0 -142
  224. package/types/scene/SkyBox.d.ts +0 -10
  225. package/types/scene/index.d.ts +0 -4
  226. package/types/segment/Segment.d.ts +0 -279
  227. package/types/segment/SegmentLonLat.d.ts +0 -16
  228. package/types/segment/segmentHelper.d.ts +0 -13
  229. package/types/shaders/billboard.d.ts +0 -3
  230. package/types/shaders/depth.d.ts +0 -2
  231. package/types/shaders/drawnode.d.ts +0 -7
  232. package/types/shaders/label.d.ts +0 -4
  233. package/types/shaders/pointCloud.d.ts +0 -2
  234. package/types/shaders/polyline.d.ts +0 -3
  235. package/types/shaders/ray.d.ts +0 -2
  236. package/types/shaders/screenFrame.d.ts +0 -2
  237. package/types/shaders/shape.d.ts +0 -4
  238. package/types/shaders/skybox.d.ts +0 -2
  239. package/types/shaders/toneMapping.d.ts +0 -2
  240. package/types/shapes/BaseShape.d.ts +0 -250
  241. package/types/shapes/Sphere.d.ts +0 -41
  242. package/types/terrain/BilTerrain.d.ts +0 -7
  243. package/types/terrain/EmptyTerrain.d.ts +0 -72
  244. package/types/terrain/Geoid.d.ts +0 -26
  245. package/types/terrain/GlobusTerrain.d.ts +0 -116
  246. package/types/terrain/MapboxTerrain.d.ts +0 -7
  247. package/types/terrain/index.d.ts +0 -5
  248. package/types/utils/FontAtlas.d.ts +0 -14
  249. package/types/utils/GeoImageCreator.d.ts +0 -30
  250. package/types/utils/ImagesCacheManager.d.ts +0 -10
  251. package/types/utils/Loader.d.ts +0 -25
  252. package/types/utils/NormalMapCreator.d.ts +0 -39
  253. package/types/utils/PlainSegmentWorker.d.ts +0 -10
  254. package/types/utils/TerrainWorker.d.ts +0 -9
  255. package/types/utils/TextureAtlas.d.ts +0 -111
  256. package/types/utils/VectorTileCreator.d.ts +0 -16
  257. package/types/utils/colorTable.d.ts +0 -143
  258. package/types/utils/earcut.d.ts +0 -6
  259. package/types/utils/shared.d.ts +0 -231
  260. package/types/webgl/Framebuffer.d.ts +0 -135
  261. package/types/webgl/Handler.d.ts +0 -388
  262. package/types/webgl/Multisample.d.ts +0 -89
  263. package/types/webgl/Program.d.ts +0 -155
  264. package/types/webgl/ProgramController.d.ts +0 -89
  265. package/types/webgl/callbacks.d.ts +0 -1
  266. package/types/webgl/index.d.ts +0 -6
  267. 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;
@@ -24,11 +25,10 @@ const ALIGNEDAXIS_BUFFER = 8;
24
25
  */
25
26
  class BillboardHandler {
26
27
  /**
27
- *
28
- * @param {*} entityCollection
28
+ *
29
+ * @param {*} entityCollection
29
30
  */
30
31
  constructor(entityCollection) {
31
-
32
32
  /**
33
33
  * Picking rendering option.
34
34
  * @public
@@ -81,6 +81,10 @@ class BillboardHandler {
81
81
  this.__staticId = BillboardHandler._staticCounter++;
82
82
  }
83
83
 
84
+ isEqual(handler) {
85
+ return handler && (handler.__staticId === this.__staticId);
86
+ }
87
+
84
88
  static get _staticCounter() {
85
89
  if (!this._counter && this._counter !== 0) {
86
90
  this._counter = 0;
@@ -100,7 +104,6 @@ class BillboardHandler {
100
104
 
101
105
  initProgram() {
102
106
  if (this._renderer.handler) {
103
-
104
107
  if (!this._renderer.handler.programs.billboard) {
105
108
  this._renderer.handler.addProgram(shaders.billboard_screen());
106
109
  }
@@ -129,13 +132,14 @@ class BillboardHandler {
129
132
  var bi = this._billboards[i];
130
133
  bi._handlerIndex = -1;
131
134
  bi._handler = null;
135
+ bi._isReady = false;
136
+ bi._lockId = LOCK_FREE;
132
137
  }
133
138
  this._billboards.length = 0;
134
139
  this._billboards = [];
135
140
  }
136
141
 
137
142
  clear() {
138
-
139
143
  this._texCoordArr = null;
140
144
  this._vertexArr = null;
141
145
  this._positionHighArr = null;
@@ -204,6 +208,7 @@ class BillboardHandler {
204
208
 
205
209
  add(billboard) {
206
210
  if (billboard._handlerIndex == -1) {
211
+ billboard._isReady = true;
207
212
  billboard._handler = this;
208
213
  billboard._handlerIndex = this._billboards.length;
209
214
  this._billboards.push(billboard);
@@ -215,36 +220,180 @@ class BillboardHandler {
215
220
 
216
221
  _addBillboardToArrays(billboard) {
217
222
  if (billboard._visibility) {
218
- 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
+ );
219
227
  } else {
220
- 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
+ );
221
232
  }
222
233
 
223
- this._texCoordArr = concatTypedArrays(this._texCoordArr, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
224
-
225
- var x = billboard._positionHigh.x, y = billboard._positionHigh.y, z = billboard._positionHigh.z, w;
226
- this._positionHighArr = concatTypedArrays(this._positionHighArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]);
227
-
228
- x = billboard._positionLow.x; y = billboard._positionLow.y; z = billboard._positionLow.z;
229
- this._positionLowArr = concatTypedArrays(this._positionLowArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]);
230
-
231
- 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;
232
290
  this._sizeArr = concatTypedArrays(this._sizeArr, [x, y, x, y, x, y, x, y, x, y, x, y]);
233
291
 
234
- x = billboard._offset.x; y = billboard._offset.y; z = billboard._offset.z;
235
- this._offsetArr = concatTypedArrays(this._offsetArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]);
236
-
237
- x = billboard._color.x; y = billboard._color.y; z = billboard._color.z; w = billboard._color.w;
238
- 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
+ ]);
239
346
 
240
347
  x = billboard._rotation;
241
348
  this._rotationArr = concatTypedArrays(this._rotationArr, [x, x, x, x, x, x]);
242
349
 
243
- x = billboard._alignedAxis.x; y = billboard._alignedAxis.y; z = billboard._alignedAxis.z;
244
- this._alignedAxisArr = concatTypedArrays(this._alignedAxisArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]);
245
-
246
- x = billboard._entity._pickingColor.x / 255; y = billboard._entity._pickingColor.y / 255; z = billboard._entity._pickingColor.z / 255;
247
- 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
+ ]);
248
397
  }
249
398
 
250
399
  _displayPASS() {
@@ -272,19 +421,43 @@ class BillboardHandler {
272
421
 
273
422
  gl.uniform1f(shu.uOpacity, ec._fadingOpacity);
274
423
 
275
- 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
+ ]);
276
428
 
277
429
  gl.bindBuffer(gl.ARRAY_BUFFER, this._texCoordBuffer);
278
- 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
+ );
279
438
 
280
439
  gl.bindBuffer(gl.ARRAY_BUFFER, this._vertexBuffer);
281
440
  gl.vertexAttribPointer(sha.a_vertices, this._vertexBuffer.itemSize, gl.FLOAT, false, 0, 0);
282
441
 
283
442
  gl.bindBuffer(gl.ARRAY_BUFFER, this._positionHighBuffer);
284
- 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
+ );
285
451
 
286
452
  gl.bindBuffer(gl.ARRAY_BUFFER, this._positionLowBuffer);
287
- 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
+ );
288
461
 
289
462
  gl.bindBuffer(gl.ARRAY_BUFFER, this._rgbaBuffer);
290
463
  gl.vertexAttribPointer(sha.a_rgba, this._rgbaBuffer.itemSize, gl.FLOAT, false, 0, 0);
@@ -296,10 +469,24 @@ class BillboardHandler {
296
469
  gl.vertexAttribPointer(sha.a_offset, this._offsetBuffer.itemSize, gl.FLOAT, false, 0, 0);
297
470
 
298
471
  gl.bindBuffer(gl.ARRAY_BUFFER, this._rotationBuffer);
299
- 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
+ );
300
480
 
301
481
  gl.bindBuffer(gl.ARRAY_BUFFER, this._alignedAxisBuffer);
302
- 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
+ );
303
490
 
304
491
  gl.drawArrays(gl.TRIANGLES, 0, this._vertexBuffer.numItems);
305
492
  }
@@ -329,19 +516,43 @@ class BillboardHandler {
329
516
 
330
517
  gl.uniform1f(shu.pickingScale, ec.pickingScale);
331
518
 
332
- 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
+ ]);
333
523
 
334
524
  gl.bindBuffer(gl.ARRAY_BUFFER, this._vertexBuffer);
335
525
  gl.vertexAttribPointer(sha.a_vertices, this._vertexBuffer.itemSize, gl.FLOAT, false, 0, 0);
336
526
 
337
527
  gl.bindBuffer(gl.ARRAY_BUFFER, this._positionHighBuffer);
338
- 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
+ );
339
536
 
340
537
  gl.bindBuffer(gl.ARRAY_BUFFER, this._positionLowBuffer);
341
- 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
+ );
342
546
 
343
547
  gl.bindBuffer(gl.ARRAY_BUFFER, this._pickingColorBuffer);
344
- 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
+ );
345
556
 
346
557
  gl.bindBuffer(gl.ARRAY_BUFFER, this._sizeBuffer);
347
558
  gl.vertexAttribPointer(sha.a_size, this._sizeBuffer.itemSize, gl.FLOAT, false, 0, 0);
@@ -350,10 +561,24 @@ class BillboardHandler {
350
561
  gl.vertexAttribPointer(sha.a_offset, this._offsetBuffer.itemSize, gl.FLOAT, false, 0, 0);
351
562
 
352
563
  gl.bindBuffer(gl.ARRAY_BUFFER, this._rotationBuffer);
353
- 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
+ );
354
572
 
355
573
  gl.bindBuffer(gl.ARRAY_BUFFER, this._alignedAxisBuffer);
356
- 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
+ );
357
582
 
358
583
  gl.drawArrays(gl.TRIANGLES, 0, this._vertexBuffer.numItems);
359
584
  }
@@ -406,20 +631,26 @@ class BillboardHandler {
406
631
 
407
632
  billboard._handlerIndex = -1;
408
633
  billboard._handler = null;
634
+ billboard._isReady = false;
635
+ billboard._lockId = LOCK_FREE;
409
636
  }
410
637
 
411
638
  remove(billboard) {
412
- if (billboard._handler && this.__staticId == billboard._handler.__staticId) {
639
+ if (billboard._isReady && this.__staticId == billboard._handler.__staticId) {
413
640
  this._removeBillboard(billboard);
641
+ } else {
642
+ billboard._handler = null;
414
643
  }
415
644
  }
416
645
 
417
646
  setPositionArr(index, positionHigh, positionLow) {
418
-
419
647
  var i = index * 18;
420
648
 
421
649
  // High
422
- 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;
423
654
 
424
655
  a[i] = x;
425
656
  a[i + 1] = y;
@@ -446,7 +677,10 @@ class BillboardHandler {
446
677
  a[i + 17] = z;
447
678
 
448
679
  // Low
449
- 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;
450
684
 
451
685
  a[i] = x;
452
686
  a[i + 1] = y;
@@ -476,9 +710,11 @@ class BillboardHandler {
476
710
  }
477
711
 
478
712
  setPickingColorArr(index, color) {
479
-
480
713
  var i = index * 18;
481
- 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;
482
718
 
483
719
  a[i] = x;
484
720
  a[i + 1] = y;
@@ -508,9 +744,10 @@ class BillboardHandler {
508
744
  }
509
745
 
510
746
  setSizeArr(index, width, height) {
511
-
512
747
  var i = index * 12;
513
- var a = this._sizeArr, x = width, y = height;
748
+ var a = this._sizeArr,
749
+ x = width,
750
+ y = height;
514
751
 
515
752
  a[i] = x;
516
753
  a[i + 1] = y;
@@ -534,9 +771,11 @@ class BillboardHandler {
534
771
  }
535
772
 
536
773
  setOffsetArr(index, offset) {
537
-
538
774
  var i = index * 18;
539
- 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;
540
779
 
541
780
  a[i] = x;
542
781
  a[i + 1] = y;
@@ -566,9 +805,12 @@ class BillboardHandler {
566
805
  }
567
806
 
568
807
  setRgbaArr(index, rgba) {
569
-
570
808
  var i = index * 24;
571
- 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;
572
814
 
573
815
  a[i] = x;
574
816
  a[i + 1] = y;
@@ -604,7 +846,6 @@ class BillboardHandler {
604
846
  }
605
847
 
606
848
  setRotationArr(index, rotation) {
607
-
608
849
  var i = index * 6;
609
850
  var a = this._rotationArr;
610
851
 
@@ -619,7 +860,6 @@ class BillboardHandler {
619
860
  }
620
861
 
621
862
  setTexCoordArr(index, tcoordArr) {
622
-
623
863
  var i = index * 12;
624
864
  var a = this._texCoordArr;
625
865
 
@@ -655,7 +895,6 @@ class BillboardHandler {
655
895
  }
656
896
 
657
897
  setVertexArr(index, vertexArr) {
658
-
659
898
  var i = index * 12;
660
899
  var a = this._vertexArr;
661
900
 
@@ -679,9 +918,11 @@ class BillboardHandler {
679
918
  }
680
919
 
681
920
  setAlignedAxisArr(index, alignedAxis) {
682
-
683
921
  var i = index * 18;
684
- 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;
685
926
 
686
927
  a[i] = x;
687
928
  a[i + 1] = y;
@@ -763,19 +1004,31 @@ class BillboardHandler {
763
1004
  createTexCoordBuffer() {
764
1005
  var h = this._renderer.handler;
765
1006
  h.gl.deleteBuffer(this._texCoordBuffer);
766
- 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
+ );
767
1012
  }
768
1013
 
769
1014
  createAlignedAxisBuffer() {
770
1015
  var h = this._renderer.handler;
771
1016
  h.gl.deleteBuffer(this._alignedAxisBuffer);
772
- 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
+ );
773
1022
  }
774
1023
 
775
1024
  createPickingColorBuffer() {
776
1025
  var h = this._renderer.handler;
777
1026
  h.gl.deleteBuffer(this._pickingColorBuffer);
778
- 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
+ );
779
1032
  }
780
1033
 
781
1034
  refreshTexCoordsArr() {
@@ -796,4 +1049,4 @@ class BillboardHandler {
796
1049
  }
797
1050
  }
798
1051
 
799
- export { BillboardHandler };
1052
+ export { BillboardHandler };