@openglobus/og 0.11.4 → 0.11.8

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 (260) hide show
  1. package/css/og.css +3 -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 +8 -5
  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/Frustum.js +19 -12
  18. package/src/og/camera/PlanetCamera.js +9 -5
  19. package/src/og/control/CompassButton.js +1 -2
  20. package/src/og/control/Control.js +7 -9
  21. package/src/og/control/DebugInfo.js +0 -1
  22. package/src/og/control/KeyboardNavigation.js +9 -9
  23. package/src/og/control/LayerSwitcher.js +21 -20
  24. package/src/og/control/Lighting.js +74 -64
  25. package/src/og/control/MouseNavigation.js +21 -18
  26. package/src/og/control/MouseWheelZoomControl.js +257 -0
  27. package/src/og/control/SegmentBoundVisualization.js +5 -6
  28. package/src/og/control/ShowFps.js +12 -7
  29. package/src/og/control/SimpleNavigation.js +5 -7
  30. package/src/og/control/Sun.js +22 -12
  31. package/src/og/control/ToggleWireframe.js +3 -3
  32. package/src/og/control/TouchNavigation.js +43 -32
  33. package/src/og/control/ZoomControl.js +40 -24
  34. package/src/og/control/index.js +2 -0
  35. package/src/og/control/visibleExtent/Segment.js +1862 -0
  36. package/src/og/control/visibleExtent/VisibleExtent.js +80 -0
  37. package/src/og/control/visibleExtent/drawnode.js +751 -0
  38. package/src/og/ellipsoid/Ellipsoid.js +149 -57
  39. package/src/og/ellipsoid/wgs84.js +3 -3
  40. package/src/og/entity/BaseBillboard.js +72 -30
  41. package/src/og/entity/Billboard.js +9 -5
  42. package/src/og/entity/BillboardHandler.js +315 -62
  43. package/src/og/entity/Entity.js +39 -1
  44. package/src/og/entity/EntityCollection.js +47 -24
  45. package/src/og/entity/GeoObject.js +228 -0
  46. package/src/og/entity/GeoObjectHandler.js +910 -0
  47. package/src/og/entity/GeometryHandler.js +595 -123
  48. package/src/og/entity/Label.js +62 -30
  49. package/src/og/entity/LabelHandler.js +40 -242
  50. package/src/og/entity/LabelWorker.js +218 -0
  51. package/src/og/entity/Object3d.js +504 -0
  52. package/src/og/entity/PointCloud.js +76 -28
  53. package/src/og/entity/PointCloudHandler.js +5 -5
  54. package/src/og/entity/Ray.js +49 -16
  55. package/src/og/entity/Strip.js +72 -43
  56. package/src/og/entity/StripHandler.js +23 -23
  57. package/src/og/layer/BaseGeoImage.js +50 -19
  58. package/src/og/layer/CanvasTiles.js +16 -17
  59. package/src/og/layer/GeoImage.js +8 -16
  60. package/src/og/layer/GeoTexture2d.js +2 -10
  61. package/src/og/layer/GeoVideo.js +2 -10
  62. package/src/og/layer/KML.js +55 -33
  63. package/src/og/layer/Layer.js +24 -32
  64. package/src/og/layer/Material.js +1 -1
  65. package/src/og/layer/Vector.js +94 -48
  66. package/src/og/layer/WMS.js +33 -18
  67. package/src/og/layer/XYZ.js +4 -5
  68. package/src/og/light/LightSource.js +19 -12
  69. package/src/og/math/Mat3.js +24 -12
  70. package/src/og/math/Mat4.js +603 -603
  71. package/src/og/math/Plane.js +19 -18
  72. package/src/og/math/Ray.js +17 -12
  73. package/src/og/math/Vec2.js +24 -14
  74. package/src/og/math/Vec3.js +60 -30
  75. package/src/og/math/coder.js +7 -7
  76. package/src/og/proj/EPSG3857.js +3 -3
  77. package/src/og/proj/EPSG4326.js +3 -3
  78. package/src/og/proj/Proj.js +2 -4
  79. package/src/og/quadTree/Node.js +3 -3
  80. package/src/og/renderer/Renderer.js +106 -124
  81. package/src/og/renderer/RendererEvents.js +45 -23
  82. package/src/og/scene/BaseNode.js +2 -3
  83. package/src/og/scene/Planet.js +51 -90
  84. package/src/og/scene/RenderNode.js +15 -8
  85. package/src/og/segment/Segment.js +60 -156
  86. package/src/og/segment/Slice.js +45 -0
  87. package/src/og/shaders/drawnode.js +245 -342
  88. package/src/og/shaders/geoObject.js +211 -0
  89. package/src/og/shaders/pointCloud.js +41 -41
  90. package/src/og/shaders/shape.js +12 -18
  91. package/src/og/shaders/skybox.js +36 -36
  92. package/src/og/shaders/toneMapping.js +1 -0
  93. package/src/og/shapes/BaseShape.js +108 -36
  94. package/src/og/shapes/Icosphere.js +25 -10
  95. package/src/og/shapes/Sphere.js +8 -11
  96. package/src/og/utils/FontAtlas.js +6 -2
  97. package/src/og/utils/GeoImageCreator.js +5 -1
  98. package/src/og/utils/TextureAtlas.js +18 -20
  99. package/src/og/utils/VectorTileCreator.js +1 -3
  100. package/src/og/utils/shared.js +2 -2
  101. package/src/og/webgl/Handler.js +215 -162
  102. package/src/og/webgl/Multisample.js +44 -16
  103. package/src/og/webgl/Program.js +78 -33
  104. package/src/og/webgl/callbacks.js +3 -3
  105. package/types/Clock.d.ts +0 -94
  106. package/types/Deferred.d.ts +0 -6
  107. package/types/Events.d.ts +0 -77
  108. package/types/Extent.d.ts +0 -166
  109. package/types/Globe.d.ts +0 -82
  110. package/types/ImageCanvas.d.ts +0 -123
  111. package/types/Lock.d.ts +0 -12
  112. package/types/LonLat.d.ts +0 -108
  113. package/types/Popup.d.ts +0 -42
  114. package/types/QueueArray.d.ts +0 -19
  115. package/types/Rectangle.d.ts +0 -80
  116. package/types/Stack.d.ts +0 -19
  117. package/types/ajax.d.ts +0 -24
  118. package/types/arial.d.ts +0 -48
  119. package/types/astro/astro.d.ts +0 -38
  120. package/types/astro/earth.d.ts +0 -7
  121. package/types/astro/jd.d.ts +0 -254
  122. package/types/bv/Box.d.ts +0 -30
  123. package/types/bv/Sphere.d.ts +0 -38
  124. package/types/bv/index.d.ts +0 -3
  125. package/types/camera/Camera.d.ts +0 -312
  126. package/types/camera/Frustum.d.ts +0 -133
  127. package/types/camera/PlanetCamera.d.ts +0 -218
  128. package/types/camera/index.d.ts +0 -3
  129. package/types/cons.d.ts +0 -40
  130. package/types/control/CompassButton.d.ts +0 -17
  131. package/types/control/Control.d.ts +0 -104
  132. package/types/control/DebugInfo.d.ts +0 -15
  133. package/types/control/EarthCoordinates.d.ts +0 -47
  134. package/types/control/EarthNavigation.d.ts +0 -42
  135. package/types/control/GeoImageDragControl.d.ts +0 -6
  136. package/types/control/KeyboardNavigation.d.ts +0 -21
  137. package/types/control/LayerSwitcher.d.ts +0 -21
  138. package/types/control/Lighting.d.ts +0 -16
  139. package/types/control/MouseNavigation.d.ts +0 -47
  140. package/types/control/ScaleControl.d.ts +0 -22
  141. package/types/control/ShowFps.d.ts +0 -11
  142. package/types/control/SimpleNavigation.d.ts +0 -25
  143. package/types/control/Sun.d.ts +0 -50
  144. package/types/control/ToggleWireframe.d.ts +0 -12
  145. package/types/control/TouchNavigation.d.ts +0 -48
  146. package/types/control/ZoomControl.d.ts +0 -27
  147. package/types/control/index.d.ts +0 -17
  148. package/types/ellipsoid/Ellipsoid.d.ts +0 -146
  149. package/types/ellipsoid/index.d.ts +0 -3
  150. package/types/ellipsoid/wgs84.d.ts +0 -6
  151. package/types/entity/BaseBillboard.d.ts +0 -208
  152. package/types/entity/Billboard.d.ts +0 -94
  153. package/types/entity/BillboardHandler.d.ts +0 -78
  154. package/types/entity/Entity.d.ts +0 -333
  155. package/types/entity/EntityCollection.d.ts +0 -311
  156. package/types/entity/Geometry.d.ts +0 -74
  157. package/types/entity/GeometryHandler.d.ts +0 -76
  158. package/types/entity/Label.d.ts +0 -189
  159. package/types/entity/LabelHandler.d.ts +0 -29
  160. package/types/entity/PointCloud.d.ts +0 -174
  161. package/types/entity/PointCloudHandler.d.ts +0 -38
  162. package/types/entity/Polyline.d.ts +0 -306
  163. package/types/entity/PolylineHandler.d.ts +0 -18
  164. package/types/entity/Ray.d.ts +0 -124
  165. package/types/entity/RayHandler.d.ts +0 -67
  166. package/types/entity/ShapeHandler.d.ts +0 -22
  167. package/types/entity/Strip.d.ts +0 -119
  168. package/types/entity/StripHandler.d.ts +0 -38
  169. package/types/entity/index.d.ts +0 -8
  170. package/types/index.core.d.ts +0 -65
  171. package/types/index.d.ts +0 -45
  172. package/types/index.webgl.d.ts +0 -7
  173. package/types/input/KeyboardHandler.d.ts +0 -10
  174. package/types/input/MouseHandler.d.ts +0 -5
  175. package/types/input/TouchHandler.d.ts +0 -5
  176. package/types/input/input.d.ts +0 -34
  177. package/types/layer/BaseGeoImage.d.ts +0 -94
  178. package/types/layer/CanvasTiles.d.ts +0 -68
  179. package/types/layer/GeoImage.d.ts +0 -52
  180. package/types/layer/GeoTexture2d.d.ts +0 -8
  181. package/types/layer/GeoVideo.d.ts +0 -55
  182. package/types/layer/KML.d.ts +0 -63
  183. package/types/layer/Layer.d.ts +0 -325
  184. package/types/layer/Material.d.ts +0 -45
  185. package/types/layer/Vector.d.ts +0 -208
  186. package/types/layer/WMS.d.ts +0 -63
  187. package/types/layer/XYZ.d.ts +0 -120
  188. package/types/layer/index.d.ts +0 -10
  189. package/types/light/LightSource.d.ts +0 -178
  190. package/types/math/Line2.d.ts +0 -11
  191. package/types/math/Line3.d.ts +0 -10
  192. package/types/math/Mat3.d.ts +0 -65
  193. package/types/math/Mat4.d.ts +0 -176
  194. package/types/math/Plane.d.ts +0 -18
  195. package/types/math/Quat.d.ts +0 -379
  196. package/types/math/Ray.d.ts +0 -82
  197. package/types/math/Vec2.d.ts +0 -309
  198. package/types/math/Vec3.d.ts +0 -460
  199. package/types/math/Vec4.d.ts +0 -162
  200. package/types/math/coder.d.ts +0 -43
  201. package/types/math/index.d.ts +0 -11
  202. package/types/math.d.ts +0 -261
  203. package/types/mercator.d.ts +0 -92
  204. package/types/proj/EPSG3857.d.ts +0 -6
  205. package/types/proj/EPSG4326.d.ts +0 -6
  206. package/types/proj/Proj.d.ts +0 -42
  207. package/types/quadTree/EntityCollectionNode.d.ts +0 -34
  208. package/types/quadTree/Node.d.ts +0 -61
  209. package/types/quadTree/quadTree.d.ts +0 -40
  210. package/types/renderer/Renderer.d.ts +0 -298
  211. package/types/renderer/RendererEvents.d.ts +0 -233
  212. package/types/res/images.d.ts +0 -3
  213. package/types/scene/Axes.d.ts +0 -11
  214. package/types/scene/BaseNode.d.ts +0 -60
  215. package/types/scene/Planet.d.ts +0 -577
  216. package/types/scene/RenderNode.d.ts +0 -142
  217. package/types/scene/SkyBox.d.ts +0 -10
  218. package/types/scene/index.d.ts +0 -4
  219. package/types/segment/Segment.d.ts +0 -279
  220. package/types/segment/SegmentLonLat.d.ts +0 -16
  221. package/types/segment/segmentHelper.d.ts +0 -13
  222. package/types/shaders/billboard.d.ts +0 -3
  223. package/types/shaders/depth.d.ts +0 -2
  224. package/types/shaders/drawnode.d.ts +0 -7
  225. package/types/shaders/label.d.ts +0 -4
  226. package/types/shaders/pointCloud.d.ts +0 -2
  227. package/types/shaders/polyline.d.ts +0 -3
  228. package/types/shaders/ray.d.ts +0 -2
  229. package/types/shaders/screenFrame.d.ts +0 -2
  230. package/types/shaders/shape.d.ts +0 -4
  231. package/types/shaders/skybox.d.ts +0 -2
  232. package/types/shaders/toneMapping.d.ts +0 -2
  233. package/types/shapes/BaseShape.d.ts +0 -250
  234. package/types/shapes/Sphere.d.ts +0 -41
  235. package/types/terrain/BilTerrain.d.ts +0 -7
  236. package/types/terrain/EmptyTerrain.d.ts +0 -72
  237. package/types/terrain/Geoid.d.ts +0 -26
  238. package/types/terrain/GlobusTerrain.d.ts +0 -116
  239. package/types/terrain/MapboxTerrain.d.ts +0 -7
  240. package/types/terrain/index.d.ts +0 -5
  241. package/types/utils/FontAtlas.d.ts +0 -14
  242. package/types/utils/GeoImageCreator.d.ts +0 -30
  243. package/types/utils/ImagesCacheManager.d.ts +0 -10
  244. package/types/utils/Loader.d.ts +0 -25
  245. package/types/utils/NormalMapCreator.d.ts +0 -39
  246. package/types/utils/PlainSegmentWorker.d.ts +0 -10
  247. package/types/utils/TerrainWorker.d.ts +0 -9
  248. package/types/utils/TextureAtlas.d.ts +0 -111
  249. package/types/utils/VectorTileCreator.d.ts +0 -16
  250. package/types/utils/colorTable.d.ts +0 -143
  251. package/types/utils/earcut.d.ts +0 -6
  252. package/types/utils/shared.d.ts +0 -231
  253. package/types/webgl/Framebuffer.d.ts +0 -135
  254. package/types/webgl/Handler.d.ts +0 -388
  255. package/types/webgl/Multisample.d.ts +0 -89
  256. package/types/webgl/Program.d.ts +0 -155
  257. package/types/webgl/ProgramController.d.ts +0 -89
  258. package/types/webgl/callbacks.d.ts +0 -1
  259. package/types/webgl/index.d.ts +0 -6
  260. 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 };
@@ -17,6 +17,7 @@ import { Ray } from "./Ray.js";
17
17
  import { PointCloud } from "./PointCloud.js";
18
18
  import { Sphere } from "../shapes/Sphere.js";
19
19
  import { Vec3 } from "../math/Vec3.js";
20
+ import { GeoObject } from "./GeoObject.js";
20
21
 
21
22
  /**
22
23
  * Entity instances aggregate multiple forms of visualization into a single high-level object.
@@ -158,6 +159,7 @@ class Entity {
158
159
  polyline: [Polyline, this.setPolyline],
159
160
  pointCloud: [PointCloud, this.setPointCloud],
160
161
  geometry: [Geometry, this.setGeometry],
162
+ geoObject: [GeoObject, this.setGeoObject],
161
163
  strip: [Strip, this.setStrip],
162
164
  ray: [Ray, this.setRay]
163
165
  };
@@ -211,6 +213,13 @@ class Entity {
211
213
  */
212
214
  this.geometry = this._createOptionFeature("geometry", options.geometry);
213
215
 
216
+ /**
217
+ * Geo object entity
218
+ * @public
219
+ * @type {og.Geometry}
220
+ */
221
+ this.geoObject = this._createOptionFeature("geoObject", options.geoObject);
222
+
214
223
  /**
215
224
  * Strip entity.
216
225
  * @public
@@ -249,7 +258,7 @@ class Entity {
249
258
  /**
250
259
  * Adds current entity into the specified entity collection.
251
260
  * @public
252
- * @param {EntityCollection|og.layer.Vector} collection - Specified entity collection or vector layer.
261
+ * @param {EntityCollection|Vector} collection - Specified entity collection or vector layer.
253
262
  * @param {Boolean} [rightNow=false] - Entity insertion option for vector layer.
254
263
  * @returns {Entity} - This object.
255
264
  */
@@ -278,6 +287,9 @@ class Entity {
278
287
  // billboards
279
288
  this.billboard && this.billboard.setVisibility(visibility);
280
289
 
290
+ // billboards
291
+ this.geoObject && this.geoObject.setVisibility(visibility);
292
+
281
293
  // labels
282
294
  this.label && this.label.setVisibility(visibility);
283
295
 
@@ -333,6 +345,9 @@ class Entity {
333
345
  // billboards
334
346
  this.billboard && this.billboard.setPosition3v(p);
335
347
 
348
+ // geoObject
349
+ this.geoObject && this.geoObject.setPosition3v(p);
350
+
336
351
  // labels
337
352
  this.label && this.label.setPosition3v(p);
338
353
 
@@ -374,6 +389,9 @@ class Entity {
374
389
  // billboards
375
390
  this.billboard && this.billboard.setPosition3v(p);
376
391
 
392
+ // geoObject
393
+ this.geoObject && this.geoObject.setPosition3v(p);
394
+
377
395
  // labels
378
396
  this.label && this.label.setPosition3v(p);
379
397
 
@@ -580,6 +598,24 @@ class Entity {
580
598
  return geometry;
581
599
  }
582
600
 
601
+ /**
602
+ * Sets entity geoObject.
603
+ * @public
604
+ * @param {GeoObject} geoObject - GeoObject.
605
+ * @returns {GeoObject} -
606
+ */
607
+ setGeoObject(geoObject) {
608
+ if (this.geoObject) {
609
+ this.geoObject.remove();
610
+ }
611
+ this.geoObject = geoObject;
612
+ this.geoObject._entity = this;
613
+ this.geoObject.setPosition3v(this._cartesian);
614
+ this.geoObject.setVisibility(this._visibility);
615
+ this._entityCollection && this._entityCollection._geoObjectHandler.add(geoObject);
616
+ return geoObject;
617
+ }
618
+
583
619
  /**
584
620
  * Sets entity strip.
585
621
  * @public
@@ -648,6 +684,8 @@ class Entity {
648
684
  // strip
649
685
  this.strip && this.strip.setPickingColor3v(c);
650
686
 
687
+ // billboard
688
+ this.geoObject && this.geoObject.setPickingColor3v(c);
651
689
  for (var i = 0; i < this.childrenNodes.length; i++) {
652
690
  this.childrenNodes[i].setPickingColor();
653
691
  }