@openglobus/og 0.11.1 → 0.11.6

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 (255) hide show
  1. package/package.json +18 -20
  2. package/src/og/Clock.js +11 -11
  3. package/src/og/Deferred.js +1 -1
  4. package/src/og/Events.js +9 -7
  5. package/src/og/Extent.js +117 -72
  6. package/src/og/Globe.js +35 -22
  7. package/src/og/ImageCanvas.js +24 -18
  8. package/src/og/Lock.js +2 -2
  9. package/src/og/LonLat.js +40 -37
  10. package/src/og/Popup.js +21 -15
  11. package/src/og/QueueArray.js +7 -3
  12. package/src/og/Rectangle.js +11 -6
  13. package/src/og/Stack.js +8 -5
  14. package/src/og/ajax.js +21 -33
  15. package/src/og/astro/astro.js +5 -5
  16. package/src/og/astro/earth.js +23 -17
  17. package/src/og/astro/jd.js +44 -39
  18. package/src/og/astro/orbit.js +20 -18
  19. package/src/og/astro/rotation.js +17 -8
  20. package/src/og/bv/Box.js +7 -3
  21. package/src/og/bv/Sphere.js +17 -9
  22. package/src/og/camera/Camera.js +137 -86
  23. package/src/og/camera/Frustum.js +30 -19
  24. package/src/og/camera/PlanetCamera.js +30 -26
  25. package/src/og/control/CompassButton.js +8 -2
  26. package/src/og/control/Control.js +13 -11
  27. package/src/og/control/DebugInfo.js +4 -1
  28. package/src/og/control/EarthCoordinates.js +62 -41
  29. package/src/og/control/EarthNavigation.js +20 -22
  30. package/src/og/control/GeoImageDragControl.js +1 -1
  31. package/src/og/control/KeyboardNavigation.js +12 -12
  32. package/src/og/control/LayerSwitcher.js +24 -23
  33. package/src/og/control/Lighting.js +1 -1
  34. package/src/og/control/MouseNavigation.js +1 -1
  35. package/src/og/control/ScaleControl.js +1 -1
  36. package/src/og/control/SegmentBoundVisualization.js +8 -9
  37. package/src/og/control/ShowFps.js +15 -10
  38. package/src/og/control/SimpleNavigation.js +8 -10
  39. package/src/og/control/Sun.js +25 -15
  40. package/src/og/control/ToggleWireframe.js +5 -5
  41. package/src/og/control/TouchNavigation.js +58 -45
  42. package/src/og/control/ZoomControl.js +41 -25
  43. package/src/og/control/index.js +4 -0
  44. package/src/og/ellipsoid/Ellipsoid.js +181 -85
  45. package/src/og/ellipsoid/wgs84.js +4 -4
  46. package/src/og/entity/BaseBillboard.js +97 -44
  47. package/src/og/entity/Billboard.js +15 -11
  48. package/src/og/entity/BillboardHandler.js +314 -64
  49. package/src/og/entity/Entity.js +106 -74
  50. package/src/og/entity/EntityCollection.js +72 -49
  51. package/src/og/entity/GeoObject.js +228 -0
  52. package/src/og/entity/GeoObjectHandler.js +910 -0
  53. package/src/og/entity/Geometry.js +29 -26
  54. package/src/og/entity/GeometryHandler.js +598 -126
  55. package/src/og/entity/Label.js +74 -40
  56. package/src/og/entity/LabelHandler.js +47 -246
  57. package/src/og/entity/LabelWorker.js +213 -0
  58. package/src/og/entity/Object3d.js +504 -0
  59. package/src/og/entity/PointCloud.js +81 -33
  60. package/src/og/entity/PointCloudHandler.js +9 -9
  61. package/src/og/entity/Polyline.js +39 -39
  62. package/src/og/entity/Ray.js +61 -28
  63. package/src/og/entity/ShapeHandler.js +1 -1
  64. package/src/og/entity/Strip.js +77 -48
  65. package/src/og/entity/StripHandler.js +27 -27
  66. package/src/og/entity/index.js +8 -16
  67. package/src/og/input/KeyboardHandler.js +107 -104
  68. package/src/og/input/MouseHandler.js +81 -78
  69. package/src/og/input/TouchHandler.js +55 -51
  70. package/src/og/layer/BaseGeoImage.js +61 -30
  71. package/src/og/layer/CanvasTiles.js +26 -24
  72. package/src/og/layer/GeoImage.js +10 -10
  73. package/src/og/layer/GeoTexture2d.js +1 -1
  74. package/src/og/layer/GeoVideo.js +3 -3
  75. package/src/og/layer/KML.js +66 -40
  76. package/src/og/layer/Layer.js +27 -17
  77. package/src/og/layer/Material.js +93 -61
  78. package/src/og/layer/Vector.js +118 -72
  79. package/src/og/layer/WMS.js +36 -19
  80. package/src/og/layer/XYZ.js +55 -48
  81. package/src/og/light/LightSource.js +47 -40
  82. package/src/og/math/Line2.js +24 -24
  83. package/src/og/math/Line3.js +103 -102
  84. package/src/og/math/Mat3.js +134 -121
  85. package/src/og/math/Mat4.js +603 -459
  86. package/src/og/math/Plane.js +21 -20
  87. package/src/og/math/Quat.js +980 -927
  88. package/src/og/math/Ray.js +195 -187
  89. package/src/og/math/Vec2.js +127 -117
  90. package/src/og/math/Vec3.js +206 -176
  91. package/src/og/math/Vec4.js +49 -53
  92. package/src/og/math/coder.js +18 -18
  93. package/src/og/math.js +12 -12
  94. package/src/og/mercator.js +11 -11
  95. package/src/og/proj/EPSG3857.js +4 -4
  96. package/src/og/proj/EPSG4326.js +4 -4
  97. package/src/og/proj/Proj.js +31 -31
  98. package/src/og/quadTree/EntityCollectionNode.js +310 -300
  99. package/src/og/quadTree/Node.js +1008 -993
  100. package/src/og/renderer/Renderer.js +768 -747
  101. package/src/og/renderer/RendererEvents.js +9 -6
  102. package/src/og/scene/Axes.js +1 -1
  103. package/src/og/scene/BaseNode.js +8 -9
  104. package/src/og/scene/Planet.js +115 -87
  105. package/src/og/scene/RenderNode.js +29 -22
  106. package/src/og/scene/SkyBox.js +1 -1
  107. package/src/og/segment/Segment.js +1886 -1878
  108. package/src/og/segment/SegmentLonLat.js +298 -268
  109. package/src/og/segment/segmentHelper.js +11 -11
  110. package/src/og/shaders/bloom.js +1 -1
  111. package/src/og/shaders/blur.js +2 -2
  112. package/src/og/shaders/depth.js +1 -1
  113. package/src/og/shaders/geoObject.js +211 -0
  114. package/src/og/shaders/label.js +1 -1
  115. package/src/og/shaders/lumFilter.js +1 -1
  116. package/src/og/shaders/pointCloud.js +42 -42
  117. package/src/og/shaders/screenFrame.js +1 -1
  118. package/src/og/shaders/shape.js +15 -21
  119. package/src/og/shaders/skybox.js +37 -37
  120. package/src/og/shaders/toneMapping.js +1 -1
  121. package/src/og/shapes/BaseShape.js +129 -57
  122. package/src/og/shapes/Icosphere.js +30 -15
  123. package/src/og/shapes/Sphere.js +13 -16
  124. package/src/og/terrain/BilTerrain.js +2 -1
  125. package/src/og/terrain/EmptyTerrain.js +2 -2
  126. package/src/og/terrain/Geoid.js +2 -2
  127. package/src/og/terrain/GlobusTerrain.js +10 -10
  128. package/src/og/terrain/MapboxTerrain.js +1 -1
  129. package/src/og/utils/GeoImageCreator.js +9 -9
  130. package/src/og/utils/Loader.js +6 -6
  131. package/src/og/utils/NormalMapCreator.js +13 -13
  132. package/src/og/utils/TerrainWorker.js +1 -1
  133. package/src/og/utils/TextureAtlas.js +20 -22
  134. package/src/og/utils/VectorTileCreator.js +5 -5
  135. package/src/og/utils/earcut.js +1 -1
  136. package/src/og/utils/shared.js +15 -15
  137. package/src/og/webgl/Framebuffer.js +101 -53
  138. package/src/og/webgl/Handler.js +125 -85
  139. package/src/og/webgl/Multisample.js +55 -27
  140. package/src/og/webgl/Program.js +80 -35
  141. package/src/og/webgl/ProgramController.js +27 -23
  142. package/src/og/webgl/callbacks.js +8 -8
  143. package/types/Clock.d.ts +6 -2
  144. package/types/Deferred.d.ts +1 -1
  145. package/types/Events.d.ts +8 -4
  146. package/types/Extent.d.ts +37 -33
  147. package/types/Globe.d.ts +15 -13
  148. package/types/ImageCanvas.d.ts +5 -3
  149. package/types/LonLat.d.ts +24 -24
  150. package/types/Popup.d.ts +4 -0
  151. package/types/QueueArray.d.ts +6 -2
  152. package/types/Rectangle.d.ts +10 -4
  153. package/types/Stack.d.ts +4 -0
  154. package/types/ajax.d.ts +1 -1
  155. package/types/astro/earth.d.ts +3 -2
  156. package/types/bv/Box.d.ts +10 -5
  157. package/types/bv/Sphere.d.ts +13 -7
  158. package/types/camera/Camera.d.ts +90 -81
  159. package/types/camera/Frustum.d.ts +26 -22
  160. package/types/camera/PlanetCamera.d.ts +49 -53
  161. package/types/control/CompassButton.d.ts +4 -4
  162. package/types/control/Control.d.ts +7 -4
  163. package/types/control/DebugInfo.d.ts +3 -4
  164. package/types/control/EarthCoordinates.d.ts +6 -6
  165. package/types/control/EarthNavigation.d.ts +42 -0
  166. package/types/control/KeyboardNavigation.d.ts +3 -4
  167. package/types/control/LayerSwitcher.d.ts +3 -5
  168. package/types/control/Lighting.d.ts +3 -3
  169. package/types/control/MouseNavigation.d.ts +47 -0
  170. package/types/control/ScaleControl.d.ts +3 -3
  171. package/types/control/ShowFps.d.ts +3 -4
  172. package/types/control/SimpleNavigation.d.ts +3 -6
  173. package/types/control/Sun.d.ts +8 -10
  174. package/types/control/ToggleWireframe.d.ts +3 -3
  175. package/types/control/TouchNavigation.d.ts +48 -0
  176. package/types/control/ZoomControl.d.ts +3 -4
  177. package/types/control/index.d.ts +3 -1
  178. package/types/ellipsoid/Ellipsoid.d.ts +47 -43
  179. package/types/ellipsoid/wgs84.d.ts +3 -2
  180. package/types/entity/BaseBillboard.d.ts +41 -34
  181. package/types/entity/Billboard.d.ts +7 -7
  182. package/types/entity/BillboardHandler.d.ts +4 -0
  183. package/types/entity/Entity.d.ts +101 -83
  184. package/types/entity/EntityCollection.d.ts +57 -43
  185. package/types/entity/GeoObject.d.ts +111 -0
  186. package/types/entity/GeoObjectHandler.d.ts +77 -0
  187. package/types/entity/Geometry.d.ts +9 -7
  188. package/types/entity/GeometryHandler.d.ts +2 -2
  189. package/types/entity/Label.d.ts +24 -29
  190. package/types/entity/LabelHandler.d.ts +9 -2
  191. package/types/entity/LabelWorker.d.ts +9 -0
  192. package/types/entity/PointCloud.d.ts +8 -8
  193. package/types/entity/PointCloudHandler.d.ts +3 -3
  194. package/types/entity/Polyline.d.ts +58 -55
  195. package/types/entity/Ray.d.ts +19 -18
  196. package/types/entity/Strip.d.ts +8 -7
  197. package/types/entity/StripHandler.d.ts +3 -3
  198. package/types/entity/index.d.ts +7 -7
  199. package/types/input/KeyboardHandler.d.ts +10 -0
  200. package/types/input/MouseHandler.d.ts +5 -0
  201. package/types/input/TouchHandler.d.ts +5 -0
  202. package/types/layer/BaseGeoImage.d.ts +23 -35
  203. package/types/layer/CanvasTiles.d.ts +15 -22
  204. package/types/layer/GeoImage.d.ts +5 -18
  205. package/types/layer/GeoVideo.d.ts +5 -30
  206. package/types/layer/KML.d.ts +20 -15
  207. package/types/layer/Layer.d.ts +326 -0
  208. package/types/layer/Material.d.ts +45 -0
  209. package/types/layer/Vector.d.ts +208 -0
  210. package/types/layer/WMS.d.ts +4 -7
  211. package/types/layer/XYZ.d.ts +19 -25
  212. package/types/light/LightSource.d.ts +54 -53
  213. package/types/math/Line2.d.ts +11 -0
  214. package/types/math/Line3.d.ts +10 -0
  215. package/types/math/Mat3.d.ts +30 -18
  216. package/types/math/Mat4.d.ts +71 -52
  217. package/types/math/Plane.d.ts +5 -4
  218. package/types/math/Quat.d.ts +379 -0
  219. package/types/math/Ray.d.ts +82 -0
  220. package/types/math/Vec2.d.ts +102 -101
  221. package/types/math/Vec3.d.ts +143 -142
  222. package/types/math/Vec4.d.ts +40 -39
  223. package/types/math/coder.d.ts +12 -11
  224. package/types/math.d.ts +8 -8
  225. package/types/mercator.d.ts +3 -3
  226. package/types/proj/EPSG3857.d.ts +3 -2
  227. package/types/proj/EPSG4326.d.ts +3 -2
  228. package/types/proj/Proj.d.ts +42 -0
  229. package/types/quadTree/EntityCollectionNode.d.ts +34 -0
  230. package/types/quadTree/Node.d.ts +61 -0
  231. package/types/renderer/Renderer.d.ts +300 -0
  232. package/types/renderer/RendererEvents.d.ts +10 -7
  233. package/types/scene/BaseNode.d.ts +9 -9
  234. package/types/scene/Planet.d.ts +131 -126
  235. package/types/scene/RenderNode.d.ts +22 -23
  236. package/types/segment/Segment.d.ts +279 -0
  237. package/types/segment/SegmentLonLat.d.ts +16 -0
  238. package/types/shaders/geoObject.d.ts +3 -0
  239. package/types/shapes/BaseShape.d.ts +43 -40
  240. package/types/shapes/Sphere.d.ts +7 -7
  241. package/types/terrain/BilTerrain.d.ts +0 -1
  242. package/types/terrain/EmptyTerrain.d.ts +4 -4
  243. package/types/terrain/GlobusTerrain.d.ts +17 -54
  244. package/types/terrain/MapboxTerrain.d.ts +0 -1
  245. package/types/utils/GeoImageCreator.d.ts +3 -2
  246. package/types/utils/TextureAtlas.d.ts +8 -8
  247. package/types/utils/shared.d.ts +25 -24
  248. package/types/webgl/Framebuffer.d.ts +5 -5
  249. package/types/webgl/Handler.d.ts +68 -43
  250. package/types/webgl/Multisample.d.ts +5 -5
  251. package/types/webgl/Program.d.ts +8 -2
  252. package/types/webgl/ProgramController.d.ts +18 -13
  253. package/src/og/inherits.js +0 -8
  254. package/src/og/utils/polylabel.js +0 -176
  255. package/types/inherits.d.ts +0 -4
@@ -4,374 +4,384 @@
4
4
 
5
5
  'use strict';
6
6
 
7
- import * as mercator from '../mercator.js';
8
- import * as quadTree from './quadTree.js';
7
+ import { Sphere } from '../bv/Sphere.js';
9
8
  import { EntityCollection } from '../entity/EntityCollection.js';
10
9
  import { Extent } from '../Extent.js';
11
10
  import { LonLat } from '../LonLat.js';
12
- import { inherits } from '../inherits.js';
13
- import { Sphere } from '../bv/Sphere.js';
14
11
  import { Vec3 } from '../math/Vec3.js';
12
+ import * as mercator from '../mercator.js';
13
+ import * as quadTree from './quadTree.js';
15
14
 
16
- const EntityCollectionNode = function (layer, partId, parent, id, extent, planet, zoom) {
17
- this.layer = layer;
18
- this.parentNode = parent;
19
- this.childrenNodes = [];
20
- this.partId = partId;
21
- this.nodeId = partId + id;
22
- this.state = null;
23
- this.extent = extent;
24
- this.count = 0;
25
- this.deferredEntities = [];
26
- this.entityCollection = null;
27
- this.zoom = zoom;
28
- this._inTheQueue = false;
29
-
30
- this.bsphere = new Sphere();
31
-
32
- planet && this._setExtentBounds();
33
- };
34
-
35
- EntityCollectionNode.prototype.insertEntity = function (entity, rightNow) {
36
- this.buildTree([entity], rightNow);
37
- };
38
-
39
- EntityCollectionNode.prototype._addEntitiesToCollection = function (entities, rightNow) {
40
- if (entities.length) {
41
- var l = this.layer,
42
- p = l._planet;
15
+ class EntityCollectionNode {
16
+
17
+ constructor(layer, partId, parent, id, extent, planet, zoom) {
18
+ this.layer = layer;
19
+ this.parentNode = parent;
20
+ this.childrenNodes = [];
21
+ this.partId = partId;
22
+ this.nodeId = partId + id;
23
+ this.state = null;
24
+ this.extent = extent;
25
+ this.count = 0;
26
+ this.deferredEntities = [];
27
+ this.entityCollection = null;
28
+ this.zoom = zoom;
29
+ this._inTheQueue = false;
30
+
31
+ this.bsphere = new Sphere();
32
+
33
+ planet && this._setExtentBounds();
34
+ }
43
35
 
44
- var ec = this.entityCollection;
36
+ insertEntity(entity, rightNow) {
37
+ this.buildTree([entity], rightNow);
38
+ }
39
+
40
+ _addEntitiesToCollection(entities, rightNow) {
41
+ if (entities.length) {
42
+ var l = this.layer,
43
+ p = l._planet;
44
+
45
+ var ec = this.entityCollection;
46
+
47
+ if (!ec) {
48
+ ec = new EntityCollection({
49
+ pickingEnabled: l._pickingEnabled,
50
+ labelMaxLetters: l._labelMaxLetters
51
+ });
52
+ ec._layer = this.layer;
53
+ ec.addTo(p, true);
54
+ ec._quadNode = this;
55
+ l._bindEventsDefault(ec);
56
+ this.entityCollection = ec;
57
+ }
45
58
 
46
- if (!ec) {
47
- ec = new EntityCollection({
48
- pickingEnabled: l._pickingEnabled,
49
- labelMaxLetters: l._labelMaxLetters
50
- });
51
- ec._layer = this.layer;
52
- ec.addTo(p, true);
53
- ec._quadNode = this;
54
- l._bindEventsDefault(ec);
55
- this.entityCollection = ec;
59
+ if (rightNow || !l.async) {
60
+ this.entityCollection.addEntities(entities);
61
+ } else {
62
+ this.deferredEntities.push.apply(this.deferredEntities, entities);
63
+ }
56
64
  }
65
+ }
57
66
 
58
- if (rightNow || !l.async) {
59
- this.entityCollection.addEntities(entities);
67
+ _setExtentBounds() {
68
+ if (!this.nodeId) {
69
+ this.bsphere.radius = this.layer._planet.ellipsoid._a;
70
+ this.bsphere.center = new Vec3();
60
71
  } else {
61
- this.deferredEntities.push.apply(this.deferredEntities, entities);
72
+ this.bsphere.setFromExtent(this.layer._planet.ellipsoid, this.extent.inverseMercator());
62
73
  }
63
74
  }
64
- };
65
-
66
- EntityCollectionNode.prototype._setExtentBounds = function () {
67
- if (!this.nodeId) {
68
- this.bsphere.radius = this.layer._planet.ellipsoid._a;
69
- this.bsphere.center = new Vec3();
70
- } else {
71
- this.bsphere.setFromExtent(this.layer._planet.ellipsoid, this.extent.inverseMercator());
72
- }
73
- };
74
75
 
75
- EntityCollectionNode.prototype.__setLonLat__ = function (entity) {
76
+ __setLonLat__(entity) {
76
77
 
77
- if (entity._lonlat.isZero() && !entity._cartesian.isZero()) {
78
- entity._lonlat = this.layer._planet.ellipsoid.cartesianToLonLat(entity._cartesian);
79
- }
78
+ if (entity._lonlat.isZero() && !entity._cartesian.isZero()) {
79
+ entity._lonlat = this.layer._planet.ellipsoid.cartesianToLonLat(entity._cartesian);
80
+ }
80
81
 
81
- if (Math.abs(entity._lonlat.lat) < mercator.MAX_LAT) {
82
- entity._lonlatMerc = entity._lonlat.forwardMercator();
83
- } else {
84
- entity._lonlatMerc = null;
82
+ if (Math.abs(entity._lonlat.lat) < mercator.MAX_LAT) {
83
+ entity._lonlatMerc = entity._lonlat.forwardMercator();
84
+ } else {
85
+ entity._lonlatMerc = null;
86
+ }
87
+ return entity._lonlatMerc;
85
88
  }
86
- return entity._lonlatMerc;
87
- };
88
89
 
89
- EntityCollectionNode.prototype.buildTree = function (entities, rightNow) {
90
+ buildTree(entities, rightNow) {
90
91
 
91
- this.count += entities.length;
92
+ this.count += entities.length;
92
93
 
93
- if (entities.length > this.layer._nodeCapacity || this.zoom > this.layer.minZoom) {
94
- var cn = this.childrenNodes;
95
- if (!cn.length) {
96
- this.createChildrenNodes();
97
- }
94
+ if (entities.length > this.layer._nodeCapacity || this.zoom > this.layer.minZoom) {
95
+ var cn = this.childrenNodes;
96
+ if (!cn.length) {
97
+ this.createChildrenNodes();
98
+ }
99
+
100
+ var en_nw = [],
101
+ en_ne = [],
102
+ en_sw = [],
103
+ en_se = [];
98
104
 
99
- var en_nw = [],
100
- en_ne = [],
101
- en_sw = [],
102
- en_se = [];
103
-
104
- var i = entities.length;
105
- while (i--) {
106
- var ei = entities[i];
107
- if (cn[quadTree.NW].isInside(ei)) {
108
- ei._nodePtr = cn[quadTree.NW];
109
- en_nw.push(ei);
110
- } else if (cn[quadTree.NE].isInside(ei)) {
111
- ei._nodePtr = cn[quadTree.NE];
112
- en_ne.push(ei);
113
- } else if (cn[quadTree.SW].isInside(ei)) {
114
- ei._nodePtr = cn[quadTree.SW];
115
- en_sw.push(ei);
116
- } else if (cn[quadTree.SE].isInside(ei)) {
117
- ei._nodePtr = cn[quadTree.SE];
118
- en_se.push(ei);
105
+ var i = entities.length;
106
+ while (i--) {
107
+ var ei = entities[i];
108
+ if (cn[quadTree.NW].isInside(ei)) {
109
+ ei._nodePtr = cn[quadTree.NW];
110
+ en_nw.push(ei);
111
+ } else if (cn[quadTree.NE].isInside(ei)) {
112
+ ei._nodePtr = cn[quadTree.NE];
113
+ en_ne.push(ei);
114
+ } else if (cn[quadTree.SW].isInside(ei)) {
115
+ ei._nodePtr = cn[quadTree.SW];
116
+ en_sw.push(ei);
117
+ } else if (cn[quadTree.SE].isInside(ei)) {
118
+ ei._nodePtr = cn[quadTree.SE];
119
+ en_se.push(ei);
120
+ }
119
121
  }
122
+
123
+ en_nw.length && cn[quadTree.NW].buildTree(en_nw, rightNow);
124
+ en_ne.length && cn[quadTree.NE].buildTree(en_ne, rightNow);
125
+ en_sw.length && cn[quadTree.SW].buildTree(en_sw, rightNow);
126
+ en_se.length && cn[quadTree.SE].buildTree(en_se, rightNow);
127
+
128
+ } else {
129
+ this._addEntitiesToCollection(entities, rightNow);
120
130
  }
131
+ }
121
132
 
122
- en_nw.length && cn[quadTree.NW].buildTree(en_nw, rightNow);
123
- en_ne.length && cn[quadTree.NE].buildTree(en_ne, rightNow);
124
- en_sw.length && cn[quadTree.SW].buildTree(en_sw, rightNow);
125
- en_se.length && cn[quadTree.SE].buildTree(en_se, rightNow);
133
+ isInside(entity) {
134
+ return this.extent.isInside(entity._lonlatMerc);
135
+ }
126
136
 
127
- } else {
128
- this._addEntitiesToCollection(entities, rightNow);
137
+ createChildrenNodes() {
138
+ var l = this.layer;
139
+ var ext = this.extent;
140
+ var size_x = ext.getWidth() * 0.5;
141
+ var size_y = ext.getHeight() * 0.5;
142
+ var ne = ext.northEast,
143
+ sw = ext.southWest;
144
+ var id = this.nodeId * 4 + 1;
145
+ var c = new LonLat(sw.lon + size_x, sw.lat + size_y);
146
+ var nd = this.childrenNodes;
147
+ var p = this.layer._planet;
148
+ var z = this.zoom + 1;
149
+
150
+ nd[quadTree.NW] = new EntityCollectionNode(l, quadTree.NW, this, id,
151
+ new Extent(new LonLat(sw.lon, sw.lat + size_y), new LonLat(sw.lon + size_x, ne.lat)), p, z);
152
+
153
+ nd[quadTree.NE] = new EntityCollectionNode(l, quadTree.NE, this, id,
154
+ new Extent(c, new LonLat(ne.lon, ne.lat)), p, z);
155
+
156
+ nd[quadTree.SW] = new EntityCollectionNode(l, quadTree.SW, this, id,
157
+ new Extent(new LonLat(sw.lon, sw.lat), c), p, z);
158
+
159
+ nd[quadTree.SE] = new EntityCollectionNode(l, quadTree.SE, this, id,
160
+ new Extent(new LonLat(sw.lon + size_x, sw.lat), new LonLat(ne.lon, sw.lat + size_y)), p, z);
129
161
  }
130
- };
131
-
132
- EntityCollectionNode.prototype.isInside = function (entity) {
133
- return this.extent.isInside(entity._lonlatMerc);
134
- };
135
-
136
- EntityCollectionNode.prototype.createChildrenNodes = function () {
137
- var l = this.layer;
138
- var ext = this.extent;
139
- var size_x = ext.getWidth() * 0.5;
140
- var size_y = ext.getHeight() * 0.5;
141
- var ne = ext.northEast,
142
- sw = ext.southWest;
143
- var id = this.nodeId * 4 + 1;
144
- var c = new LonLat(sw.lon + size_x, sw.lat + size_y);
145
- var nd = this.childrenNodes;
146
- var p = this.layer._planet;
147
- var z = this.zoom + 1;
148
-
149
- nd[quadTree.NW] = new EntityCollectionNode(l, quadTree.NW, this, id,
150
- new Extent(new LonLat(sw.lon, sw.lat + size_y), new LonLat(sw.lon + size_x, ne.lat)), p, z);
151
-
152
- nd[quadTree.NE] = new EntityCollectionNode(l, quadTree.NE, this, id,
153
- new Extent(c, new LonLat(ne.lon, ne.lat)), p, z);
154
-
155
- nd[quadTree.SW] = new EntityCollectionNode(l, quadTree.SW, this, id,
156
- new Extent(new LonLat(sw.lon, sw.lat), c), p, z);
157
-
158
- nd[quadTree.SE] = new EntityCollectionNode(l, quadTree.SE, this, id,
159
- new Extent(new LonLat(sw.lon + size_x, sw.lat), new LonLat(ne.lon, sw.lat + size_y)), p, z);
160
- };
161
-
162
- EntityCollectionNode.prototype.collectRenderCollectionsPASS1 = function (visibleNodes, outArr) {
163
- var n = visibleNodes[this.nodeId];
164
- if (n) {
165
- var cn = this.childrenNodes;
166
- if (this.entityCollection) {
167
- this.renderCollection(outArr, visibleNodes);
168
- } else if (cn.length) {
169
- if (n.state === quadTree.RENDERING) {
170
- this.layer._secondPASS.push(this);
171
- } else {
172
- cn[quadTree.NW].collectRenderCollectionsPASS1(visibleNodes, outArr);
173
- cn[quadTree.NE].collectRenderCollectionsPASS1(visibleNodes, outArr);
174
- cn[quadTree.SW].collectRenderCollectionsPASS1(visibleNodes, outArr);
175
- cn[quadTree.SE].collectRenderCollectionsPASS1(visibleNodes, outArr);
162
+
163
+ collectRenderCollectionsPASS1(visibleNodes, outArr) {
164
+ var n = visibleNodes[this.nodeId];
165
+ if (n) {
166
+ var cn = this.childrenNodes;
167
+ if (this.entityCollection) {
168
+ this.renderCollection(outArr, visibleNodes);
169
+ } else if (cn.length) {
170
+ if (n.state === quadTree.RENDERING) {
171
+ this.layer._secondPASS.push(this);
172
+ } else {
173
+ cn[quadTree.NW].collectRenderCollectionsPASS1(visibleNodes, outArr);
174
+ cn[quadTree.NE].collectRenderCollectionsPASS1(visibleNodes, outArr);
175
+ cn[quadTree.SW].collectRenderCollectionsPASS1(visibleNodes, outArr);
176
+ cn[quadTree.SE].collectRenderCollectionsPASS1(visibleNodes, outArr);
177
+ }
176
178
  }
177
179
  }
178
180
  }
179
- };
180
181
 
181
- EntityCollectionNode.prototype.collectRenderCollectionsPASS2 = function (visibleNodes, outArr, renderingNodeId) {
182
- var p = this.layer._planet;
183
- var cam = p.renderer.activeCamera;
182
+ collectRenderCollectionsPASS2(visibleNodes, outArr, renderingNodeId) {
183
+ var p = this.layer._planet;
184
+ var cam = p.renderer.activeCamera;
185
+
186
+ var altVis = (cam.eye.distance(this.bsphere.center) - this.bsphere.radius <
187
+ quadTree.VISIBLE_DISTANCE * Math.sqrt(cam._lonLat.height)) || cam._lonLat.height > 10000;
184
188
 
185
- var altVis = (cam.eye.distance(this.bsphere.center) - this.bsphere.radius <
186
- quadTree.VISIBLE_DISTANCE * Math.sqrt(cam._lonLat.height)) || cam._lonLat.height > 10000;
189
+ if (this.count > 0 && altVis &&
190
+ p.renderer.activeCamera.frustum.containsSphere(this.bsphere) > 0) {
187
191
 
188
- if (this.count > 0 && altVis &&
189
- p.renderer.activeCamera.frustum.containsSphere(this.bsphere) > 0) {
192
+ var cn = this.childrenNodes;
193
+
194
+ if (this.entityCollection) {
195
+ this.renderCollection(outArr, visibleNodes, renderingNodeId);
196
+ } else if (cn.length) {
197
+ cn[quadTree.NW].collectRenderCollectionsPASS2(visibleNodes, outArr, renderingNodeId);
198
+ cn[quadTree.NE].collectRenderCollectionsPASS2(visibleNodes, outArr, renderingNodeId);
199
+ cn[quadTree.SW].collectRenderCollectionsPASS2(visibleNodes, outArr, renderingNodeId);
200
+ cn[quadTree.SE].collectRenderCollectionsPASS2(visibleNodes, outArr, renderingNodeId);
201
+ }
202
+
203
+ }
204
+ }
205
+
206
+ applyCollection() {
207
+ this.entityCollection.addEntities(this.deferredEntities);
208
+ this.deferredEntities.length = 0;
209
+ this.deferredEntities = [];
210
+ this._inTheQueue = false;
211
+ }
212
+
213
+ traverseTree(callback) {
190
214
 
191
215
  var cn = this.childrenNodes;
192
216
 
193
217
  if (this.entityCollection) {
194
- this.renderCollection(outArr, visibleNodes, renderingNodeId);
218
+ callback(this);
195
219
  } else if (cn.length) {
196
- cn[quadTree.NW].collectRenderCollectionsPASS2(visibleNodes, outArr, renderingNodeId);
197
- cn[quadTree.NE].collectRenderCollectionsPASS2(visibleNodes, outArr, renderingNodeId);
198
- cn[quadTree.SW].collectRenderCollectionsPASS2(visibleNodes, outArr, renderingNodeId);
199
- cn[quadTree.SE].collectRenderCollectionsPASS2(visibleNodes, outArr, renderingNodeId);
220
+ cn[quadTree.NW].traverseTree(callback);
221
+ cn[quadTree.NE].traverseTree(callback);
222
+ cn[quadTree.SW].traverseTree(callback);
223
+ cn[quadTree.SE].traverseTree(callback);
200
224
  }
201
-
202
- }
203
- };
204
-
205
- EntityCollectionNode.prototype.applyCollection = function () {
206
- this.entityCollection.addEntities(this.deferredEntities);
207
- this.deferredEntities.length = 0;
208
- this.deferredEntities = [];
209
- this._inTheQueue = false;
210
- };
211
-
212
- EntityCollectionNode.prototype.traverseTree = function (callback) {
213
-
214
- var cn = this.childrenNodes;
215
-
216
- if (this.entityCollection) {
217
- callback(this);
218
- } else if (cn.length) {
219
- cn[quadTree.NW].traverseTree(callback);
220
- cn[quadTree.NE].traverseTree(callback);
221
- cn[quadTree.SW].traverseTree(callback);
222
- cn[quadTree.SE].traverseTree(callback);
223
225
  }
224
- };
225
226
 
226
- EntityCollectionNode.prototype.renderCollection = function (outArr, visibleNodes, renderingNodeId) {
227
+ renderCollection(outArr, visibleNodes, renderingNodeId) {
227
228
 
228
- var l = this.layer;
229
+ var l = this.layer;
229
230
 
230
- l._renderingNodes[this.nodeId] = true;
231
+ l._renderingNodes[this.nodeId] = true;
231
232
 
232
- if (this.deferredEntities.length && !this._inTheQueue) {
233
- if (l.async) {
234
- l._queueDeferredNode(this);
235
- } else {
236
- this.applyCollection();
233
+ if (this.deferredEntities.length && !this._inTheQueue) {
234
+ if (l.async) {
235
+ l._queueDeferredNode(this);
236
+ } else {
237
+ this.applyCollection();
238
+ }
237
239
  }
238
- }
239
240
 
240
- var ec = this.entityCollection;
241
+ var ec = this.entityCollection;
241
242
 
242
- ec._fadingOpacity = l._fadingOpacity;
243
- ec.scaleByDistance = l.scaleByDistance;
244
- ec.pickingScale = l.pickingScale;
243
+ ec._fadingOpacity = l._fadingOpacity;
244
+ ec.scaleByDistance = l.scaleByDistance;
245
+ ec.pickingScale = l.pickingScale;
245
246
 
246
- ec.polygonOffsetFactor = l.polygonOffsetFactor;
247
- ec.polygonOffsetUnits = l.polygonOffsetUnits;
247
+ ec.polygonOffsetFactor = l.polygonOffsetFactor;
248
+ ec.polygonOffsetUnits = l.polygonOffsetUnits;
248
249
 
249
- outArr.push(ec);
250
+ outArr.push(ec);
250
251
 
251
- if (l.clampToGround || l.relativeToGround) {
252
- var e = ec._entities;
253
- var i = e.length;
252
+ if (l.clampToGround || l.relativeToGround) {
253
+ var e = ec._entities;
254
+ var i = e.length;
254
255
 
255
- if (visibleNodes[this.nodeId] && visibleNodes[this.nodeId].state === quadTree.RENDERING) {
256
- while (i--) {
257
- let ei = e[i];
258
- this.alignEntityToTheGround(ei, visibleNodes[this.nodeId].segment);
259
- }
260
- } else if (renderingNodeId) {
261
- while (i--) {
262
- let ei = e[i];
263
- this.alignEntityToTheGround(ei, visibleNodes[renderingNodeId].segment);
264
- }
265
- } else {
266
- var n = l._planet._renderedNodes;
267
- while (i--) {
268
- let ei = e[i];
269
- let j = n.length;
270
- while (j--) {
271
- if (n[j].segment.isEntityInside(ei)) {
272
- this.alignEntityToTheGround(ei, n[j].segment);
273
- break;
256
+ if (visibleNodes[this.nodeId] && visibleNodes[this.nodeId].state === quadTree.RENDERING) {
257
+ while (i--) {
258
+ let ei = e[i];
259
+ this.alignEntityToTheGround(ei, visibleNodes[this.nodeId].segment);
260
+ }
261
+ } else if (renderingNodeId) {
262
+ while (i--) {
263
+ let ei = e[i];
264
+ this.alignEntityToTheGround(ei, visibleNodes[renderingNodeId].segment);
265
+ }
266
+ } else {
267
+ var n = l._planet._renderedNodes;
268
+ while (i--) {
269
+ let ei = e[i];
270
+ let j = n.length;
271
+ while (j--) {
272
+ if (n[j].segment.isEntityInside(ei)) {
273
+ this.alignEntityToTheGround(ei, n[j].segment);
274
+ break;
275
+ }
274
276
  }
275
277
  }
276
278
  }
277
279
  }
278
280
  }
279
- };
280
281
 
281
- EntityCollectionNode.prototype.alignEntityToTheGround = function (entity, segment) {
282
- var res = new Vec3();
283
- segment.getEntityTerrainPoint(entity, res);
284
- entity._setCartesian3vSilent(res.addA(res.normal().scale((Number(this.layer.relativeToGround) && entity._altitude) || 0.0)));
285
- };
282
+ alignEntityToTheGround(entity, segment) {
283
+ var res = new Vec3();
284
+ segment.getEntityTerrainPoint(entity, res);
285
+ entity._setCartesian3vSilent(res.addA(res.normal().scale((Number(this.layer.relativeToGround) && entity._altitude) || 0.0)));
286
+ }
286
287
 
287
- EntityCollectionNode.prototype.isVisible = function () {
288
- if (this.layer._renderingNodes[this.nodeId]) {
289
- return true;
288
+ isVisible() {
289
+ if (this.layer._renderingNodes[this.nodeId]) {
290
+ return true;
291
+ }
292
+ return false;
290
293
  }
291
- return false;
292
- };
293
-
294
- const EntityCollectionNodeWGS84 = function (layer, partId, parent, id, extent, planet, zoom) {
295
- EntityCollectionNode.call(this, layer, partId, parent, id, extent, planet, zoom);
296
- this.isNorth = false;
297
- };
298
-
299
- inherits(EntityCollectionNodeWGS84, EntityCollectionNode);
300
-
301
- EntityCollectionNodeWGS84.prototype.createChildrenNodes = function () {
302
- var l = this.layer;
303
- var ext = this.extent;
304
- var size_x = ext.getWidth() * 0.5;
305
- var size_y = ext.getHeight() * 0.5;
306
- var ne = ext.northEast,
307
- sw = ext.southWest;
308
- var id = this.nodeId * 4 + 1;
309
- var c = new LonLat(sw.lon + size_x, sw.lat + size_y);
310
- var nd = this.childrenNodes;
311
- var p = this.layer._planet;
312
- var z = this.zoom + 1;
313
-
314
- nd[quadTree.NW] = new EntityCollectionNodeWGS84(l, quadTree.NW, this, id,
315
- new Extent(new LonLat(sw.lon, sw.lat + size_y), new LonLat(sw.lon + size_x, ne.lat)), p, z);
316
-
317
- nd[quadTree.NE] = new EntityCollectionNodeWGS84(l, quadTree.NE, this, id,
318
- new Extent(c, new LonLat(ne.lon, ne.lat)), p, z);
319
-
320
- nd[quadTree.SW] = new EntityCollectionNodeWGS84(l, quadTree.SW, this, id,
321
- new Extent(new LonLat(sw.lon, sw.lat), c), p, z);
322
-
323
- nd[quadTree.SE] = new EntityCollectionNodeWGS84(l, quadTree.SE, this, id,
324
- new Extent(new LonLat(sw.lon + size_x, sw.lat), new LonLat(ne.lon, sw.lat + size_y)), p, z);
325
- };
326
-
327
- EntityCollectionNodeWGS84.prototype._setExtentBounds = function () {
328
- if (this.extent.northEast.lat > 0) {
329
- this.isNorth = true;
294
+
295
+ }
296
+
297
+ class EntityCollectionNodeWGS84 extends EntityCollectionNode {
298
+
299
+ constructor(layer, partId, parent, id, extent, planet, zoom) {
300
+ super(layer, partId, parent, id, extent, planet, zoom);
301
+ this.isNorth = false;
330
302
  }
331
- this.bsphere.setFromExtent(this.layer._planet.ellipsoid, this.extent);
332
- };
333
303
 
334
- EntityCollectionNodeWGS84.prototype.__setLonLat__ = function (entity) {
335
- if (entity._lonlat.isZero()) {
336
- entity._lonlat = this.layer._planet.ellipsoid.cartesianToLonLat(entity._cartesian);
304
+ createChildrenNodes() {
305
+ var l = this.layer;
306
+ var ext = this.extent;
307
+ var size_x = ext.getWidth() * 0.5;
308
+ var size_y = ext.getHeight() * 0.5;
309
+ var ne = ext.northEast,
310
+ sw = ext.southWest;
311
+ var id = this.nodeId * 4 + 1;
312
+ var c = new LonLat(sw.lon + size_x, sw.lat + size_y);
313
+ var nd = this.childrenNodes;
314
+ var p = this.layer._planet;
315
+ var z = this.zoom + 1;
316
+
317
+ nd[quadTree.NW] = new EntityCollectionNodeWGS84(l, quadTree.NW, this, id,
318
+ new Extent(new LonLat(sw.lon, sw.lat + size_y), new LonLat(sw.lon + size_x, ne.lat)), p, z);
319
+
320
+ nd[quadTree.NE] = new EntityCollectionNodeWGS84(l, quadTree.NE, this, id,
321
+ new Extent(c, new LonLat(ne.lon, ne.lat)), p, z);
322
+
323
+ nd[quadTree.SW] = new EntityCollectionNodeWGS84(l, quadTree.SW, this, id,
324
+ new Extent(new LonLat(sw.lon, sw.lat), c), p, z);
325
+
326
+ nd[quadTree.SE] = new EntityCollectionNodeWGS84(l, quadTree.SE, this, id,
327
+ new Extent(new LonLat(sw.lon + size_x, sw.lat), new LonLat(ne.lon, sw.lat + size_y)), p, z);
337
328
  }
338
- return entity._lonlat;
339
- };
340
-
341
- EntityCollectionNodeWGS84.prototype.isVisible = function () {
342
- if (this.isNorth && this.layer._renderingNodesNorth[this.nodeId]) {
343
- return true;
344
- } else if (this.layer._renderingNodesSouth[this.nodeId]) {
345
- return true;
329
+
330
+ _setExtentBounds() {
331
+ if (this.extent.northEast.lat > 0) {
332
+ this.isNorth = true;
333
+ }
334
+ this.bsphere.setFromExtent(this.layer._planet.ellipsoid, this.extent);
346
335
  }
347
- return false;
348
- };
349
336
 
350
- EntityCollectionNodeWGS84.prototype.isInside = function (entity) {
351
- return this.extent.isInside(entity._lonlat);
352
- };
337
+ __setLonLat__(entity) {
338
+ if (entity._lonlat.isZero()) {
339
+ entity._lonlat = this.layer._planet.ellipsoid.cartesianToLonLat(entity._cartesian);
340
+ }
341
+ return entity._lonlat;
342
+ }
353
343
 
354
- EntityCollectionNodeWGS84.prototype.renderCollection = function (outArr, visibleNodes, renderingNode) {
344
+ isVisible() {
345
+ if (this.isNorth && this.layer._renderingNodesNorth[this.nodeId]) {
346
+ return true;
347
+ } else if (this.layer._renderingNodesSouth[this.nodeId]) {
348
+ return true;
349
+ }
350
+ return false;
351
+ }
355
352
 
356
- if (this.isNorth) {
357
- this.layer._renderingNodesNorth[this.nodeId] = true;
358
- } else {
359
- this.layer._renderingNodesSouth[this.nodeId] = true;
353
+ isInside(entity) {
354
+ return this.extent.isInside(entity._lonlat);
360
355
  }
361
356
 
362
- if (this.deferredEntities.length && !this._inTheQueue) {
363
- if (this.layer.async) {
364
- this.layer._queueDeferredNode(this);
357
+ /**
358
+ *
359
+ * @param {*} outArr
360
+ * @param {*} visibleNodes
361
+ * @param {*} renderingNode
362
+ */
363
+ renderCollection(outArr, visibleNodes, renderingNode) {
364
+
365
+ if (this.isNorth) {
366
+ this.layer._renderingNodesNorth[this.nodeId] = true;
365
367
  } else {
366
- this.applyCollection();
368
+ this.layer._renderingNodesSouth[this.nodeId] = true;
367
369
  }
368
- }
369
370
 
370
- this.entityCollection._fadingOpacity = this.layer._fadingOpacity;
371
- this.entityCollection.scaleByDistance = this.layer.scaleByDistance;
372
- this.entityCollection.pickingScale = this.layer.pickingScale;
371
+ if (this.deferredEntities.length && !this._inTheQueue) {
372
+ if (this.layer.async) {
373
+ this.layer._queueDeferredNode(this);
374
+ } else {
375
+ this.applyCollection();
376
+ }
377
+ }
373
378
 
374
- outArr.push(this.entityCollection);
375
- };
379
+ this.entityCollection._fadingOpacity = this.layer._fadingOpacity;
380
+ this.entityCollection.scaleByDistance = this.layer.scaleByDistance;
381
+ this.entityCollection.pickingScale = this.layer.pickingScale;
382
+
383
+ outArr.push(this.entityCollection);
384
+ }
385
+ }
376
386
 
377
- export { EntityCollectionNode, EntityCollectionNodeWGS84 };
387
+ export { EntityCollectionNode, EntityCollectionNodeWGS84 };