@openglobus/og 0.11.6 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/css/og.css +5 -2
  2. package/package.json +12 -12
  3. package/src/og/Globe.js +25 -10
  4. package/src/og/Popup.js +3 -2
  5. package/src/og/camera/Camera.js +70 -79
  6. package/src/og/camera/PlanetCamera.js +33 -33
  7. package/src/og/control/DebugInfo.js +2 -2
  8. package/src/og/control/EarthNavigation.js +26 -17
  9. package/src/og/control/Lighting.js +74 -64
  10. package/src/og/control/MouseNavigation.js +30 -29
  11. package/src/og/control/MouseWheelZoomControl.js +257 -0
  12. package/src/og/control/Sun.js +3 -3
  13. package/src/og/control/index.js +2 -0
  14. package/src/og/control/visibleExtent/Segment.js +1862 -0
  15. package/src/og/control/visibleExtent/VisibleExtent.js +80 -0
  16. package/src/og/control/visibleExtent/drawnode.js +751 -0
  17. package/src/og/ellipsoid/Ellipsoid.js +1 -1
  18. package/src/og/entity/BaseBillboard.js +67 -76
  19. package/src/og/entity/BillboardHandler.js +15 -8
  20. package/src/og/entity/Entity.js +742 -742
  21. package/src/og/entity/GeoObjectHandler.js +102 -117
  22. package/src/og/entity/Label.js +45 -48
  23. package/src/og/entity/LabelHandler.js +24 -23
  24. package/src/og/entity/LabelWorker.js +21 -16
  25. package/src/og/layer/CanvasTiles.js +8 -12
  26. package/src/og/layer/GeoImage.js +2 -10
  27. package/src/og/layer/GeoTexture2d.js +2 -10
  28. package/src/og/layer/GeoVideo.js +2 -10
  29. package/src/og/layer/Layer.js +23 -32
  30. package/src/og/layer/Material.js +1 -1
  31. package/src/og/layer/WMS.js +0 -2
  32. package/src/og/layer/XYZ.js +31 -33
  33. package/src/og/math/Vec3.js +18 -2
  34. package/src/og/quadTree/Node.js +52 -111
  35. package/src/og/quadTree/quadTree.js +1 -1
  36. package/src/og/renderer/Renderer.js +85 -122
  37. package/src/og/renderer/RendererEvents.js +44 -22
  38. package/src/og/scene/Planet.js +179 -198
  39. package/src/og/segment/Segment.js +99 -268
  40. package/src/og/segment/Slice.js +45 -0
  41. package/src/og/shaders/drawnode.js +174 -360
  42. package/src/og/shaders/toneMapping.js +1 -0
  43. package/src/og/shapes/BaseShape.js +1 -1
  44. package/src/og/terrain/EmptyTerrain.js +3 -2
  45. package/src/og/terrain/GlobusTerrain.js +2 -0
  46. package/src/og/utils/FontAtlas.js +6 -2
  47. package/src/og/utils/GeoImageCreator.js +5 -1
  48. package/src/og/utils/Loader.js +1 -1
  49. package/src/og/utils/PlainSegmentWorker.js +0 -13
  50. package/src/og/utils/TextureAtlas.js +2 -2
  51. package/src/og/utils/VectorTileCreator.js +1 -3
  52. package/src/og/utils/shared.js +1 -1
  53. package/src/og/webgl/Handler.js +156 -118
  54. package/types/Clock.d.ts +0 -94
  55. package/types/Deferred.d.ts +0 -6
  56. package/types/Events.d.ts +0 -77
  57. package/types/Extent.d.ts +0 -166
  58. package/types/Globe.d.ts +0 -82
  59. package/types/ImageCanvas.d.ts +0 -123
  60. package/types/Lock.d.ts +0 -12
  61. package/types/LonLat.d.ts +0 -108
  62. package/types/Popup.d.ts +0 -42
  63. package/types/QueueArray.d.ts +0 -19
  64. package/types/Rectangle.d.ts +0 -80
  65. package/types/Stack.d.ts +0 -19
  66. package/types/ajax.d.ts +0 -24
  67. package/types/arial.d.ts +0 -48
  68. package/types/astro/astro.d.ts +0 -38
  69. package/types/astro/earth.d.ts +0 -7
  70. package/types/astro/jd.d.ts +0 -254
  71. package/types/bv/Box.d.ts +0 -30
  72. package/types/bv/Sphere.d.ts +0 -38
  73. package/types/bv/index.d.ts +0 -3
  74. package/types/camera/Camera.d.ts +0 -312
  75. package/types/camera/Frustum.d.ts +0 -133
  76. package/types/camera/PlanetCamera.d.ts +0 -218
  77. package/types/camera/index.d.ts +0 -3
  78. package/types/cons.d.ts +0 -40
  79. package/types/control/CompassButton.d.ts +0 -17
  80. package/types/control/Control.d.ts +0 -104
  81. package/types/control/DebugInfo.d.ts +0 -15
  82. package/types/control/EarthCoordinates.d.ts +0 -47
  83. package/types/control/EarthNavigation.d.ts +0 -42
  84. package/types/control/GeoImageDragControl.d.ts +0 -6
  85. package/types/control/KeyboardNavigation.d.ts +0 -21
  86. package/types/control/LayerSwitcher.d.ts +0 -21
  87. package/types/control/Lighting.d.ts +0 -16
  88. package/types/control/MouseNavigation.d.ts +0 -47
  89. package/types/control/ScaleControl.d.ts +0 -22
  90. package/types/control/ShowFps.d.ts +0 -11
  91. package/types/control/SimpleNavigation.d.ts +0 -25
  92. package/types/control/Sun.d.ts +0 -50
  93. package/types/control/ToggleWireframe.d.ts +0 -12
  94. package/types/control/TouchNavigation.d.ts +0 -48
  95. package/types/control/ZoomControl.d.ts +0 -27
  96. package/types/control/index.d.ts +0 -17
  97. package/types/ellipsoid/Ellipsoid.d.ts +0 -146
  98. package/types/ellipsoid/index.d.ts +0 -3
  99. package/types/ellipsoid/wgs84.d.ts +0 -6
  100. package/types/entity/BaseBillboard.d.ts +0 -215
  101. package/types/entity/Billboard.d.ts +0 -94
  102. package/types/entity/BillboardHandler.d.ts +0 -78
  103. package/types/entity/Entity.d.ts +0 -348
  104. package/types/entity/EntityCollection.d.ts +0 -317
  105. package/types/entity/GeoObject.d.ts +0 -111
  106. package/types/entity/GeoObjectHandler.d.ts +0 -77
  107. package/types/entity/Geometry.d.ts +0 -74
  108. package/types/entity/GeometryHandler.d.ts +0 -76
  109. package/types/entity/Label.d.ts +0 -189
  110. package/types/entity/LabelHandler.d.ts +0 -31
  111. package/types/entity/LabelWorker.d.ts +0 -9
  112. package/types/entity/PointCloud.d.ts +0 -174
  113. package/types/entity/PointCloudHandler.d.ts +0 -38
  114. package/types/entity/Polyline.d.ts +0 -306
  115. package/types/entity/PolylineHandler.d.ts +0 -18
  116. package/types/entity/Ray.d.ts +0 -124
  117. package/types/entity/RayHandler.d.ts +0 -67
  118. package/types/entity/ShapeHandler.d.ts +0 -22
  119. package/types/entity/Strip.d.ts +0 -119
  120. package/types/entity/StripHandler.d.ts +0 -38
  121. package/types/entity/index.d.ts +0 -8
  122. package/types/index.core.d.ts +0 -65
  123. package/types/index.d.ts +0 -45
  124. package/types/index.webgl.d.ts +0 -7
  125. package/types/input/KeyboardHandler.d.ts +0 -10
  126. package/types/input/MouseHandler.d.ts +0 -5
  127. package/types/input/TouchHandler.d.ts +0 -5
  128. package/types/input/input.d.ts +0 -34
  129. package/types/layer/BaseGeoImage.d.ts +0 -94
  130. package/types/layer/CanvasTiles.d.ts +0 -68
  131. package/types/layer/GeoImage.d.ts +0 -52
  132. package/types/layer/GeoTexture2d.d.ts +0 -8
  133. package/types/layer/GeoVideo.d.ts +0 -55
  134. package/types/layer/KML.d.ts +0 -63
  135. package/types/layer/Layer.d.ts +0 -326
  136. package/types/layer/Material.d.ts +0 -45
  137. package/types/layer/Vector.d.ts +0 -208
  138. package/types/layer/WMS.d.ts +0 -63
  139. package/types/layer/XYZ.d.ts +0 -120
  140. package/types/layer/index.d.ts +0 -10
  141. package/types/light/LightSource.d.ts +0 -178
  142. package/types/math/Line2.d.ts +0 -11
  143. package/types/math/Line3.d.ts +0 -10
  144. package/types/math/Mat3.d.ts +0 -65
  145. package/types/math/Mat4.d.ts +0 -176
  146. package/types/math/Plane.d.ts +0 -18
  147. package/types/math/Quat.d.ts +0 -379
  148. package/types/math/Ray.d.ts +0 -82
  149. package/types/math/Vec2.d.ts +0 -309
  150. package/types/math/Vec3.d.ts +0 -460
  151. package/types/math/Vec4.d.ts +0 -162
  152. package/types/math/coder.d.ts +0 -43
  153. package/types/math/index.d.ts +0 -11
  154. package/types/math.d.ts +0 -261
  155. package/types/mercator.d.ts +0 -92
  156. package/types/proj/EPSG3857.d.ts +0 -6
  157. package/types/proj/EPSG4326.d.ts +0 -6
  158. package/types/proj/Proj.d.ts +0 -42
  159. package/types/quadTree/EntityCollectionNode.d.ts +0 -34
  160. package/types/quadTree/Node.d.ts +0 -61
  161. package/types/quadTree/quadTree.d.ts +0 -40
  162. package/types/renderer/Renderer.d.ts +0 -300
  163. package/types/renderer/RendererEvents.d.ts +0 -233
  164. package/types/res/images.d.ts +0 -3
  165. package/types/scene/Axes.d.ts +0 -11
  166. package/types/scene/BaseNode.d.ts +0 -60
  167. package/types/scene/Planet.d.ts +0 -577
  168. package/types/scene/RenderNode.d.ts +0 -142
  169. package/types/scene/SkyBox.d.ts +0 -10
  170. package/types/scene/index.d.ts +0 -4
  171. package/types/segment/Segment.d.ts +0 -279
  172. package/types/segment/SegmentLonLat.d.ts +0 -16
  173. package/types/segment/segmentHelper.d.ts +0 -13
  174. package/types/shaders/billboard.d.ts +0 -3
  175. package/types/shaders/depth.d.ts +0 -2
  176. package/types/shaders/drawnode.d.ts +0 -7
  177. package/types/shaders/geoObject.d.ts +0 -3
  178. package/types/shaders/label.d.ts +0 -4
  179. package/types/shaders/pointCloud.d.ts +0 -2
  180. package/types/shaders/polyline.d.ts +0 -3
  181. package/types/shaders/ray.d.ts +0 -2
  182. package/types/shaders/screenFrame.d.ts +0 -2
  183. package/types/shaders/shape.d.ts +0 -4
  184. package/types/shaders/skybox.d.ts +0 -2
  185. package/types/shaders/toneMapping.d.ts +0 -2
  186. package/types/shapes/BaseShape.d.ts +0 -250
  187. package/types/shapes/Sphere.d.ts +0 -41
  188. package/types/terrain/BilTerrain.d.ts +0 -7
  189. package/types/terrain/EmptyTerrain.d.ts +0 -72
  190. package/types/terrain/Geoid.d.ts +0 -26
  191. package/types/terrain/GlobusTerrain.d.ts +0 -116
  192. package/types/terrain/MapboxTerrain.d.ts +0 -7
  193. package/types/terrain/index.d.ts +0 -5
  194. package/types/utils/FontAtlas.d.ts +0 -14
  195. package/types/utils/GeoImageCreator.d.ts +0 -30
  196. package/types/utils/ImagesCacheManager.d.ts +0 -10
  197. package/types/utils/Loader.d.ts +0 -25
  198. package/types/utils/NormalMapCreator.d.ts +0 -39
  199. package/types/utils/PlainSegmentWorker.d.ts +0 -10
  200. package/types/utils/TerrainWorker.d.ts +0 -9
  201. package/types/utils/TextureAtlas.d.ts +0 -111
  202. package/types/utils/VectorTileCreator.d.ts +0 -16
  203. package/types/utils/colorTable.d.ts +0 -143
  204. package/types/utils/earcut.d.ts +0 -6
  205. package/types/utils/shared.d.ts +0 -231
  206. package/types/webgl/Framebuffer.d.ts +0 -135
  207. package/types/webgl/Handler.d.ts +0 -397
  208. package/types/webgl/Multisample.d.ts +0 -89
  209. package/types/webgl/Program.d.ts +0 -161
  210. package/types/webgl/ProgramController.d.ts +0 -89
  211. package/types/webgl/callbacks.d.ts +0 -1
  212. package/types/webgl/index.d.ts +0 -6
  213. package/types/webgl/types.d.ts +0 -2
@@ -562,7 +562,7 @@ class Ellipsoid {
562
562
  // qw >= 0.0. Looking outward or tangent.
563
563
  return null;
564
564
  }
565
- }
565
+ }
566
566
  }
567
567
 
568
568
  export { Ellipsoid };
@@ -6,6 +6,7 @@
6
6
 
7
7
  import * as utils from "../utils/shared.js";
8
8
  import { Vec3 } from "../math/Vec3.js";
9
+ import { LOCK_FREE, LOCK_UPDATE } from "./LabelWorker.js";
9
10
 
10
11
  /**
11
12
  * Base prototype for billboard and label classes.
@@ -97,16 +98,16 @@ class BaseBillboard {
97
98
  * @protected
98
99
  * @type {number}
99
100
  */
100
- this._handlerIndex = -1;
101
-
102
- /**
103
- * An indication that the object is ready to draw
104
- * @protected
105
- * @type {number}
106
- */
107
- this._isReady = false;
108
-
109
- this._lockId = -1;
101
+ this._handlerIndex = -1;
102
+
103
+ /**
104
+ * An indication that the object is ready to draw
105
+ * @protected
106
+ * @type {number}
107
+ */
108
+ this._isReady = false;
109
+
110
+ this._lockId = LOCK_FREE;
110
111
  }
111
112
 
112
113
  static get _staticCounter() {
@@ -132,10 +133,10 @@ class BaseBillboard {
132
133
  this._position.y = y;
133
134
  this._position.z = z;
134
135
  Vec3.doubleToTwoFloats(this._position, this._positionHigh, this._positionLow);
135
- if (this._isReady) {
136
- this._handler.setPositionArr(this._handlerIndex, this._positionHigh, this._positionLow);
137
- } else if (this._lockId !== -1) {
138
- this._lockId = -2;
136
+ if (this._isReady && this._handler) {
137
+ this._handler.setPositionArr(this._handlerIndex, this._positionHigh, this._positionLow);
138
+ } else if (this._lockId !== LOCK_FREE) {
139
+ this._lockId = LOCK_UPDATE;
139
140
  }
140
141
  }
141
142
 
@@ -149,10 +150,10 @@ class BaseBillboard {
149
150
  this._position.y = position.y;
150
151
  this._position.z = position.z;
151
152
  Vec3.doubleToTwoFloats(position, this._positionHigh, this._positionLow);
152
- if (this._isReady) {
153
- this._handler.setPositionArr(this._handlerIndex, this._positionHigh, this._positionLow);
154
- } else if (this._lockId !== -1) {
155
- this._lockId = -2;
153
+ if (this._isReady && this._handler) {
154
+ this._handler.setPositionArr(this._handlerIndex, this._positionHigh, this._positionLow);
155
+ } else if (this._lockId !== LOCK_FREE) {
156
+ this._lockId = LOCK_UPDATE;
156
157
  }
157
158
  }
158
159
 
@@ -176,10 +177,10 @@ class BaseBillboard {
176
177
  this._offset.x = x;
177
178
  this._offset.y = y;
178
179
  z != undefined && (this._offset.z = z);
179
- if (this._isReady) {
180
- this._handler.setOffsetArr(this._handlerIndex, this._offset);
181
- } else if (this._lockId !== -1) {
182
- this._lockId = -2;
180
+ if (this._isReady && this._handler) {
181
+ this._handler.setOffsetArr(this._handlerIndex, this._offset);
182
+ } else if (this._lockId !== LOCK_FREE) {
183
+ this._lockId = LOCK_UPDATE;
183
184
  }
184
185
  }
185
186
 
@@ -189,14 +190,7 @@ class BaseBillboard {
189
190
  * @param {Vec2} offset - Offset size.
190
191
  */
191
192
  setOffset3v(offset) {
192
- this._offset.x = offset.x;
193
- this._offset.y = offset.y;
194
- offset.z != undefined && (this._offset.z = offset.z);
195
- if (this._isReady) {
196
- this._handler.setOffsetArr(this._handlerIndex, offset);
197
- } else if (this._lockId !== -1) {
198
- this._lockId = -2;
199
- }
193
+ this.setOffset(offset.x, offset.y, offset.z);
200
194
  }
201
195
 
202
196
  /**
@@ -214,11 +208,13 @@ class BaseBillboard {
214
208
  * @param {number} rotation - Screen space rotation in radians.
215
209
  */
216
210
  setRotation(rotation) {
217
- this._rotation = rotation;
218
- if (this._isReady) {
219
- this._handler.setRotationArr(this._handlerIndex, rotation);
220
- } else if (this._lockId !== -1) {
221
- this._lockId = -2;
211
+ if (rotation !== this._rotation) {
212
+ this._rotation = rotation;
213
+ if (this._isReady && this._handler) {
214
+ this._handler.setRotationArr(this._handlerIndex, rotation);
215
+ } else if (this._lockId !== LOCK_FREE) {
216
+ this._lockId = LOCK_UPDATE;
217
+ }
222
218
  }
223
219
  }
224
220
 
@@ -237,8 +233,14 @@ class BaseBillboard {
237
233
  * @param {number} a - Billboard opacity.
238
234
  */
239
235
  setOpacity(a) {
240
- this._color.w = a;
241
- this.setColor(this._color.x, this._color.y, this._color.z, a);
236
+ if (a !== this._color.w) {
237
+ a != undefined && (this._color.w = a);
238
+ if (this._isReady && this._handler) {
239
+ this._handler.setRgbaArr(this._handlerIndex, this._color);
240
+ } else if (this._lockId !== LOCK_FREE) {
241
+ this._lockId = LOCK_UPDATE;
242
+ }
243
+ }
242
244
  }
243
245
 
244
246
  /**
@@ -250,14 +252,16 @@ class BaseBillboard {
250
252
  * @param {number} a - Alpha.
251
253
  */
252
254
  setColor(r, g, b, a) {
253
- this._color.x = r;
254
- this._color.y = g;
255
- this._color.z = b;
256
- a != undefined && (this._color.w = a);
257
- if (this._isReady) {
258
- this._handler.setRgbaArr(this._handlerIndex, this._color);
259
- } else if (this._lockId !== -1) {
260
- this._lockId = -2;
255
+ if (a !== this._color.w || r !== this._color.x || g !== this._color.y || this._color.z !== b) {
256
+ this._color.x = r;
257
+ this._color.y = g;
258
+ this._color.z = b;
259
+ a != undefined && (this._color.w = a);
260
+ if (this._isReady && this._handler) {
261
+ this._handler.setRgbaArr(this._handlerIndex, this._color);
262
+ } else if (this._lockId !== LOCK_FREE) {
263
+ this._lockId = LOCK_UPDATE;
264
+ }
261
265
  }
262
266
  }
263
267
 
@@ -267,15 +271,7 @@ class BaseBillboard {
267
271
  * @param {Vec4} color - RGBA vector.
268
272
  */
269
273
  setColor4v(color) {
270
- this._color.x = color.x;
271
- this._color.y = color.y;
272
- this._color.z = color.z;
273
- color.w != undefined && (this._color.w = color.w);
274
- if (this._isReady) {
275
- this._handler.setRgbaArr(this._handlerIndex, color);
276
- } else if (this._lockId !== -1) {
277
- this._lockId = -2;
278
- }
274
+ this.setColor(color.x, color.y, color.z, color.w);
279
275
  }
280
276
 
281
277
  /**
@@ -302,11 +298,13 @@ class BaseBillboard {
302
298
  * @param {boolean} visibility - Visibility flag.
303
299
  */
304
300
  setVisibility(visibility) {
305
- this._visibility = visibility;
306
- if (this._isReady) {
307
- this._handler.setVisibility(this._handlerIndex, visibility);
308
- } else if (this._lockId !== -1) {
309
- this._lockId = -2;
301
+ if (visibility !== this._visibility) {
302
+ this._visibility = visibility;
303
+ if (this._isReady && this._handler) {
304
+ this._handler.setVisibility(this._handlerIndex, visibility);
305
+ } else if (this._lockId !== LOCK_FREE) {
306
+ this._lockId = LOCK_UPDATE;
307
+ }
310
308
  }
311
309
  }
312
310
 
@@ -330,10 +328,10 @@ class BaseBillboard {
330
328
  this._alignedAxis.x = x;
331
329
  this._alignedAxis.y = y;
332
330
  this._alignedAxis.z = z;
333
- if (this._isReady) {
334
- this._handler.setAlignedAxisArr(this._handlerIndex, this._alignedAxis);
335
- } else if (this._lockId !== -1) {
336
- this._lockId = -2;
331
+ if (this._isReady && this._handler) {
332
+ this._handler.setAlignedAxisArr(this._handlerIndex, this._alignedAxis);
333
+ } else if (this._lockId !== LOCK_FREE) {
334
+ this._lockId = LOCK_UPDATE;
337
335
  }
338
336
  }
339
337
 
@@ -343,14 +341,7 @@ class BaseBillboard {
343
341
  * @param {math.Vecto3} alignedAxis - Vector to align.
344
342
  */
345
343
  setAlignedAxis3v(alignedAxis) {
346
- this._alignedAxis.x = alignedAxis.x;
347
- this._alignedAxis.y = alignedAxis.y;
348
- this._alignedAxis.z = alignedAxis.z;
349
- if (this._isReady) {
350
- this._handler.setAlignedAxisArr(this._handlerIndex, alignedAxis);
351
- } else if (this._lockId !== -1) {
352
- this._lockId = -2;
353
- }
344
+ this.setAlignedAxis(alignedAxis.x, alignedAxis.y, alignedAxis.z);
354
345
  }
355
346
 
356
347
  /**
@@ -377,12 +368,12 @@ class BaseBillboard {
377
368
  * @param {Vec3} color - Picking color.
378
369
  */
379
370
  setPickingColor3v(color) {
380
- if (this._isReady) {
381
- this._handler.setPickingColorArr(this._handlerIndex, color);
382
- } else if (this._lockId !== -1) {
383
- this._lockId = -2;
371
+ if (this._isReady && this._handler) {
372
+ this._handler.setPickingColorArr(this._handlerIndex, color);
373
+ } else if (this._lockId !== LOCK_FREE) {
374
+ this._lockId = LOCK_UPDATE;
384
375
  }
385
376
  }
386
377
  }
387
378
 
388
- export { BaseBillboard };
379
+ export { BaseBillboard };
@@ -6,6 +6,7 @@
6
6
 
7
7
  import * as shaders from "../shaders/billboard.js";
8
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;
@@ -80,6 +81,10 @@ class BillboardHandler {
80
81
  this.__staticId = BillboardHandler._staticCounter++;
81
82
  }
82
83
 
84
+ isEqual(handler) {
85
+ return handler && (handler.__staticId === this.__staticId);
86
+ }
87
+
83
88
  static get _staticCounter() {
84
89
  if (!this._counter && this._counter !== 0) {
85
90
  this._counter = 0;
@@ -126,9 +131,9 @@ class BillboardHandler {
126
131
  while (i--) {
127
132
  var bi = this._billboards[i];
128
133
  bi._handlerIndex = -1;
129
- bi._handler = null;
130
- bi._isReady = false;
131
- bi._lockId = -1;
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 = [];
@@ -202,7 +207,7 @@ class BillboardHandler {
202
207
  }
203
208
 
204
209
  add(billboard) {
205
- if (billboard._handlerIndex == -1) {
210
+ if (billboard._handlerIndex == -1) {
206
211
  billboard._isReady = true;
207
212
  billboard._handler = this;
208
213
  billboard._handlerIndex = this._billboards.length;
@@ -625,14 +630,16 @@ class BillboardHandler {
625
630
  this.refresh();
626
631
 
627
632
  billboard._handlerIndex = -1;
628
- billboard._handler = null;
629
- billboard._isReady = false;
630
- billboard._lockId = -1;
633
+ billboard._handler = null;
634
+ billboard._isReady = false;
635
+ billboard._lockId = LOCK_FREE;
631
636
  }
632
637
 
633
638
  remove(billboard) {
634
639
  if (billboard._isReady && this.__staticId == billboard._handler.__staticId) {
635
640
  this._removeBillboard(billboard);
641
+ } else {
642
+ billboard._handler = null;
636
643
  }
637
644
  }
638
645
 
@@ -1042,4 +1049,4 @@ class BillboardHandler {
1042
1049
  }
1043
1050
  }
1044
1051
 
1045
- export { BillboardHandler };
1052
+ export { BillboardHandler };