@openglobus/og 0.18.0 → 0.18.2
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.
- package/README.md +8 -8
- package/lib/@openglobus/og.esm.js +2 -0
- package/lib/@openglobus/og.esm.js.map +1 -0
- package/lib/@openglobus/og.umd.js +2 -0
- package/lib/@openglobus/og.umd.js.map +1 -0
- package/lib/js/Clock.d.ts +106 -0
- package/{src/Clock.ts → lib/js/Clock.js} +31 -126
- package/lib/js/Deferred.d.ts +6 -0
- package/lib/js/Deferred.js +13 -0
- package/lib/js/Events.d.ts +90 -0
- package/{src/Events.ts → lib/js/Events.js} +29 -84
- package/lib/js/Extent.d.ts +145 -0
- package/{src/Extent.ts → lib/js/Extent.js} +74 -120
- package/lib/js/Globe.d.ts +132 -0
- package/{src/Globe.ts → lib/js/Globe.js} +61 -159
- package/lib/js/ImageCanvas.d.ts +128 -0
- package/{src/ImageCanvas.ts → lib/js/ImageCanvas.js} +24 -65
- package/lib/js/Lock.d.ts +15 -0
- package/{src/Lock.ts → lib/js/Lock.js} +7 -21
- package/lib/js/LonLat.d.ts +128 -0
- package/{src/LonLat.ts → lib/js/LonLat.js} +44 -75
- package/lib/js/Object3d.d.ts +49 -0
- package/{src/Object3d.ts → lib/js/Object3d.js} +64 -184
- package/lib/js/Popup.d.ts +46 -0
- package/{src/Popup.ts → lib/js/Popup.js} +42 -110
- package/lib/js/QueueArray.d.ts +16 -0
- package/{src/QueueArray.ts → lib/js/QueueArray.js} +12 -25
- package/lib/js/Rectangle.d.ts +76 -0
- package/{src/Rectangle.ts → lib/js/Rectangle.js} +12 -50
- package/lib/js/Stack.d.ts +20 -0
- package/{src/Stack.ts → lib/js/Stack.js} +13 -29
- package/lib/js/astro/astro.d.ts +39 -0
- package/{src/astro/astro.ts → lib/js/astro/astro.js} +2 -8
- package/lib/js/astro/earth.d.ts +8 -0
- package/{src/astro/earth.ts → lib/js/astro/earth.js} +3 -39
- package/lib/js/astro/jd.d.ts +234 -0
- package/{src/astro/jd.ts → lib/js/astro/jd.js} +55 -134
- package/lib/js/astro/orbit.d.ts +5 -0
- package/{src/astro/orbit.ts → lib/js/astro/orbit.js} +26 -39
- package/lib/js/astro/rotation.d.ts +2 -0
- package/{src/astro/rotation.ts → lib/js/astro/rotation.js} +2 -11
- package/lib/js/bv/Box.d.ts +32 -0
- package/{src/bv/Box.ts → lib/js/bv/Box.js} +7 -35
- package/lib/js/bv/Sphere.d.ts +37 -0
- package/{src/bv/Sphere.ts → lib/js/bv/Sphere.js} +6 -34
- package/{src/bv/index.ts → lib/js/bv/index.d.ts} +0 -1
- package/lib/js/bv/index.js +3 -0
- package/lib/js/camera/Camera.d.ts +314 -0
- package/{src/camera/Camera.ts → lib/js/camera/Camera.js} +77 -326
- package/lib/js/camera/Frustum.d.ts +139 -0
- package/{src/camera/Frustum.ts → lib/js/camera/Frustum.js} +66 -185
- package/lib/js/camera/PlanetCamera.d.ts +234 -0
- package/{src/camera/PlanetCamera.ts → lib/js/camera/PlanetCamera.js} +65 -338
- package/{src/camera/index.ts → lib/js/camera/index.d.ts} +0 -1
- package/lib/js/camera/index.js +3 -0
- package/lib/js/cons.d.ts +40 -0
- package/{src/cons.ts → lib/js/cons.js} +10 -22
- package/lib/js/control/Atmosphere.d.ts +16 -0
- package/{src/control/Atmosphere.ts → lib/js/control/Atmosphere.js} +33 -86
- package/lib/js/control/CompassButton.d.ts +16 -0
- package/{src/control/CompassButton.ts → lib/js/control/CompassButton.js} +18 -43
- package/lib/js/control/Control.d.ts +100 -0
- package/{src/control/Control.ts → lib/js/control/Control.js} +22 -89
- package/lib/js/control/DebugInfo.d.ts +25 -0
- package/{src/control/DebugInfo.ts → lib/js/control/DebugInfo.js} +38 -84
- package/lib/js/control/DrawingSwitcher.d.ts +13 -0
- package/{src/control/DrawingSwitcher.ts → lib/js/control/DrawingSwitcher.js} +13 -30
- package/lib/js/control/EarthCoordinates.d.ts +41 -0
- package/{src/control/EarthCoordinates.ts → lib/js/control/EarthCoordinates.js} +58 -119
- package/lib/js/control/EarthNavigation.d.ts +50 -0
- package/{src/control/EarthNavigation.ts → lib/js/control/EarthNavigation.js} +70 -161
- package/lib/js/control/GeoImageDragControl.d.ts +22 -0
- package/{src/control/GeoImageDragControl.ts → lib/js/control/GeoImageDragControl.js} +26 -49
- package/lib/js/control/KeyboardNavigation.d.ts +28 -0
- package/{src/control/KeyboardNavigation.ts → lib/js/control/KeyboardNavigation.js} +67 -92
- package/lib/js/control/LayerAnimation.d.ts +71 -0
- package/{src/control/LayerAnimation.ts → lib/js/control/LayerAnimation.js} +82 -162
- package/lib/js/control/LayerSwitcher.d.ts +21 -0
- package/{src/control/LayerSwitcher.ts → lib/js/control/LayerSwitcher.js} +16 -41
- package/lib/js/control/Lighting.d.ts +49 -0
- package/{src/control/Lighting.ts → lib/js/control/Lighting.js} +106 -219
- package/lib/js/control/MouseNavigation.d.ts +62 -0
- package/{src/control/MouseNavigation.ts → lib/js/control/MouseNavigation.js} +105 -211
- package/lib/js/control/MouseWheelZoomControl.d.ts +44 -0
- package/lib/js/control/MouseWheelZoomControl.js +181 -0
- package/lib/js/control/RulerSwitcher.d.ts +17 -0
- package/{src/control/RulerSwitcher.ts → lib/js/control/RulerSwitcher.js} +13 -28
- package/lib/js/control/ScaleControl.d.ts +24 -0
- package/lib/js/control/ScaleControl.js +91 -0
- package/lib/js/control/SegmentBoundVisualization.d.ts +12 -0
- package/lib/js/control/SegmentBoundVisualization.js +37 -0
- package/lib/js/control/ShowFps.d.ts +9 -0
- package/lib/js/control/ShowFps.js +20 -0
- package/lib/js/control/SimpleNavigation.d.ts +25 -0
- package/{src/control/SimpleNavigation.ts → lib/js/control/SimpleNavigation.js} +29 -51
- package/lib/js/control/SimpleSkyBackground.d.ts +15 -0
- package/{src/control/SimpleSkyBackground.ts → lib/js/control/SimpleSkyBackground.js} +21 -48
- package/lib/js/control/Sun.d.ts +33 -0
- package/{src/control/Sun.ts → lib/js/control/Sun.js} +34 -85
- package/lib/js/control/ToggleWireframe.d.ts +14 -0
- package/lib/js/control/ToggleWireframe.js +28 -0
- package/lib/js/control/TouchNavigation.d.ts +52 -0
- package/{src/control/TouchNavigation.ts → lib/js/control/TouchNavigation.js} +88 -193
- package/lib/js/control/ZoomControl.d.ts +27 -0
- package/{src/control/ZoomControl.ts → lib/js/control/ZoomControl.js} +25 -50
- package/lib/js/control/drawing/DrawingControl.d.ts +12 -0
- package/{src/control/drawing/DrawingControl.ts → lib/js/control/drawing/DrawingControl.js} +10 -20
- package/lib/js/control/drawing/LineStringDrawingScene.d.ts +15 -0
- package/{src/control/drawing/LineStringDrawingScene.ts → lib/js/control/drawing/LineStringDrawingScene.js} +28 -85
- package/lib/js/control/drawing/PolygonDrawingScene.d.ts +98 -0
- package/{src/control/drawing/PolygonDrawingScene.ts → lib/js/control/drawing/PolygonDrawingScene.js} +190 -388
- package/lib/js/control/elevationProfile/ElevationProfile.d.ts +61 -0
- package/{src/control/elevationProfile/ElevationProfile.ts → lib/js/control/elevationProfile/ElevationProfile.js} +56 -148
- package/lib/js/control/heightRuler/HeightRuler.d.ts +7 -0
- package/{src/control/heightRuler/HeightRuler.ts → lib/js/control/heightRuler/HeightRuler.js} +4 -9
- package/lib/js/control/heightRuler/HeightRulerScene.d.ts +35 -0
- package/{src/control/heightRuler/HeightRulerScene.ts → lib/js/control/heightRuler/HeightRulerScene.js} +47 -99
- package/lib/js/control/heightRuler/HeightRulerSwitcher.d.ts +6 -0
- package/{src/control/heightRuler/HeightRulerSwitcher.ts → lib/js/control/heightRuler/HeightRulerSwitcher.js} +2 -4
- package/{src/control/index.ts → lib/js/control/index.d.ts} +1 -18
- package/lib/js/control/index.js +28 -0
- package/lib/js/control/ruler/Ruler.d.ts +13 -0
- package/lib/js/control/ruler/Ruler.js +23 -0
- package/lib/js/control/ruler/RulerScene.d.ts +88 -0
- package/lib/js/control/ruler/RulerScene.js +324 -0
- package/lib/js/control/selection/Selection.d.ts +55 -0
- package/{src/control/selection/Selection.ts → lib/js/control/selection/Selection.js} +15 -34
- package/lib/js/control/selection/SelectionScene.d.ts +44 -0
- package/{src/control/selection/SelectionScene.ts → lib/js/control/selection/SelectionScene.js} +26 -113
- package/lib/js/control/timeline/TimelineControl.d.ts +18 -0
- package/{src/control/timeline/TimelineControl.ts → lib/js/control/timeline/TimelineControl.js} +13 -43
- package/lib/js/control/timeline/TimelineModel.d.ts +41 -0
- package/{src/control/timeline/TimelineModel.ts → lib/js/control/timeline/TimelineModel.js} +26 -74
- package/lib/js/control/timeline/TimelineView.d.ts +85 -0
- package/{src/control/timeline/TimelineView.ts → lib/js/control/timeline/TimelineView.js} +133 -281
- package/lib/js/control/timeline/timelineUtils.d.ts +12 -0
- package/lib/js/control/timeline/timelineUtils.js +112 -0
- package/lib/js/control/visibleExtent/Segment.d.ts +277 -0
- package/{src → lib/js}/control/visibleExtent/Segment.js +145 -698
- package/lib/js/control/visibleExtent/VisibleExtent.d.ts +5 -0
- package/{src → lib/js}/control/visibleExtent/VisibleExtent.js +1 -18
- package/lib/js/control/visibleExtent/drawnode.d.ts +7 -0
- package/{src/control/visibleExtent/drawnode.ts → lib/js/control/visibleExtent/drawnode.js} +1 -28
- package/lib/js/ellipsoid/Ellipsoid.d.ts +187 -0
- package/{src/ellipsoid/Ellipsoid.ts → lib/js/ellipsoid/Ellipsoid.js} +85 -267
- package/lib/js/ellipsoid/index.d.ts +3 -0
- package/lib/js/ellipsoid/index.js +3 -0
- package/lib/js/ellipsoid/wgs84.d.ts +6 -0
- package/{src/ellipsoid/wgs84.ts → lib/js/ellipsoid/wgs84.js} +1 -2
- package/lib/js/entity/BaseBillboard.d.ts +222 -0
- package/{src/entity/BaseBillboard.ts → lib/js/entity/BaseBillboard.js} +48 -165
- package/lib/js/entity/BaseBillboardHandler.d.ts +81 -0
- package/{src/entity/BaseBillboardHandler.ts → lib/js/entity/BaseBillboardHandler.js} +139 -365
- package/lib/js/entity/Billboard.d.ts +113 -0
- package/{src/entity/Billboard.ts → lib/js/entity/Billboard.js} +19 -83
- package/lib/js/entity/BillboardHandler.d.ts +15 -0
- package/{src/entity/BillboardHandler.ts → lib/js/entity/BillboardHandler.js} +27 -59
- package/lib/js/entity/Entity.d.ts +354 -0
- package/{src/entity/Entity.ts → lib/js/entity/Entity.js} +102 -374
- package/lib/js/entity/EntityCollection.d.ts +363 -0
- package/{src/entity/EntityCollection.ts → lib/js/entity/EntityCollection.js} +57 -359
- package/lib/js/entity/GeoObject.d.ts +138 -0
- package/{src/entity/GeoObject.ts → lib/js/entity/GeoObject.js} +41 -146
- package/lib/js/entity/GeoObjectHandler.d.ts +99 -0
- package/{src/entity/GeoObjectHandler.ts → lib/js/entity/GeoObjectHandler.js} +162 -423
- package/lib/js/entity/Geometry.d.ts +111 -0
- package/lib/js/entity/Geometry.js +283 -0
- package/lib/js/entity/GeometryHandler.d.ts +84 -0
- package/{src/entity/GeometryHandler.ts → lib/js/entity/GeometryHandler.js} +162 -657
- package/lib/js/entity/Label.d.ts +207 -0
- package/{src/entity/Label.ts → lib/js/entity/Label.js} +63 -165
- package/lib/js/entity/LabelHandler.d.ts +65 -0
- package/{src/entity/LabelHandler.ts → lib/js/entity/LabelHandler.js} +175 -408
- package/lib/js/entity/LabelWorker.d.ts +15 -0
- package/{src/entity/LabelWorker.ts → lib/js/entity/LabelWorker.js} +24 -45
- package/lib/js/entity/PointCloud.d.ts +179 -0
- package/{src/entity/PointCloud.ts → lib/js/entity/PointCloud.js} +65 -265
- package/lib/js/entity/PointCloudHandler.d.ts +42 -0
- package/{src/entity/PointCloudHandler.ts → lib/js/entity/PointCloudHandler.js} +19 -62
- package/lib/js/entity/Polyline.d.ts +337 -0
- package/{src/entity/Polyline.ts → lib/js/entity/Polyline.js} +289 -924
- package/lib/js/entity/PolylineHandler.d.ts +22 -0
- package/{src/entity/PolylineHandler.ts → lib/js/entity/PolylineHandler.js} +12 -37
- package/lib/js/entity/Ray.d.ts +133 -0
- package/{src/entity/Ray.ts → lib/js/entity/Ray.js} +26 -146
- package/lib/js/entity/RayHandler.d.ts +70 -0
- package/{src/entity/RayHandler.ts → lib/js/entity/RayHandler.js} +102 -342
- package/lib/js/entity/Strip.d.ts +127 -0
- package/{src/entity/Strip.ts → lib/js/entity/Strip.js} +102 -372
- package/lib/js/entity/StripHandler.d.ts +42 -0
- package/{src/entity/StripHandler.ts → lib/js/entity/StripHandler.js} +22 -74
- package/{src/entity/index.ts → lib/js/entity/index.d.ts} +1 -2
- package/lib/js/entity/index.js +11 -0
- package/lib/js/index.d.ts +33 -0
- package/lib/js/index.js +33 -0
- package/lib/js/input/KeyboardHandler.d.ts +33 -0
- package/{src/input/KeyboardHandler.ts → lib/js/input/KeyboardHandler.js} +45 -84
- package/lib/js/input/MouseHandler.d.ts +16 -0
- package/{src/input/MouseHandler.ts → lib/js/input/MouseHandler.js} +12 -36
- package/lib/js/input/TouchHandler.d.ts +11 -0
- package/{src/input/TouchHandler.ts → lib/js/input/TouchHandler.js} +11 -23
- package/lib/js/input/input.d.ts +3 -0
- package/{src/input/input.ts → lib/js/input/input.js} +1 -1
- package/lib/js/layer/BaseGeoImage.d.ts +145 -0
- package/{src/layer/BaseGeoImage.ts → lib/js/layer/BaseGeoImage.js} +70 -235
- package/lib/js/layer/CanvasTiles.d.ts +103 -0
- package/{src/layer/CanvasTiles.ts → lib/js/layer/CanvasTiles.js} +54 -146
- package/lib/js/layer/GeoImage.d.ts +61 -0
- package/{src/layer/GeoImage.ts → lib/js/layer/GeoImage.js} +24 -54
- package/lib/js/layer/GeoTexture2d.d.ts +17 -0
- package/lib/js/layer/GeoTexture2d.js +37 -0
- package/lib/js/layer/GeoVideo.d.ts +68 -0
- package/{src/layer/GeoVideo.ts → lib/js/layer/GeoVideo.js} +31 -61
- package/lib/js/layer/KML.d.ts +72 -0
- package/{src/layer/KML.ts → lib/js/layer/KML.js} +94 -138
- package/lib/js/layer/Layer.d.ts +401 -0
- package/{src/layer/Layer.ts → lib/js/layer/Layer.js} +92 -443
- package/lib/js/layer/Material.d.ts +34 -0
- package/{src/layer/Material.ts → lib/js/layer/Material.js} +9 -43
- package/lib/js/layer/Vector.d.ts +243 -0
- package/{src/layer/Vector.ts → lib/js/layer/Vector.js} +155 -426
- package/lib/js/layer/WMS.d.ts +75 -0
- package/{src/layer/WMS.ts → lib/js/layer/WMS.js} +18 -100
- package/lib/js/layer/XYZ.d.ts +149 -0
- package/{src/layer/XYZ.ts → lib/js/layer/XYZ.js} +71 -171
- package/lib/js/layer/index.d.ts +11 -0
- package/lib/js/layer/index.js +11 -0
- package/lib/js/light/LightSource.d.ts +174 -0
- package/{src/light/LightSource.ts → lib/js/light/LightSource.js} +22 -131
- package/lib/js/math/Line2.d.ts +11 -0
- package/{src/math/Line2.ts → lib/js/math/Line2.js} +5 -15
- package/lib/js/math/Line3.d.ts +28 -0
- package/lib/js/math/Line3.js +85 -0
- package/lib/js/math/Mat3.d.ts +77 -0
- package/{src/math/Mat3.ts → lib/js/math/Mat3.js} +22 -51
- package/lib/js/math/Mat4.d.ts +195 -0
- package/{src/math/Mat4.ts → lib/js/math/Mat4.js} +53 -219
- package/lib/js/math/Plane.d.ts +20 -0
- package/{src/math/Plane.ts → lib/js/math/Plane.js} +26 -40
- package/lib/js/math/Quat.d.ts +373 -0
- package/{src/math/Quat.ts → lib/js/math/Quat.js} +106 -319
- package/lib/js/math/Ray.d.ts +76 -0
- package/{src/math/Ray.ts → lib/js/math/Ray.js} +21 -66
- package/lib/js/math/Vec2.d.ts +310 -0
- package/{src/math/Vec2.ts → lib/js/math/Vec2.js} +55 -121
- package/lib/js/math/Vec3.d.ts +472 -0
- package/{src/math/Vec3.ts → lib/js/math/Vec3.js} +103 -236
- package/lib/js/math/Vec4.d.ts +163 -0
- package/{src/math/Vec4.ts → lib/js/math/Vec4.js} +23 -79
- package/lib/js/math/coder.d.ts +51 -0
- package/{src/math/coder.ts → lib/js/math/coder.js} +14 -20
- package/lib/js/math/index.d.ts +11 -0
- package/lib/js/math/index.js +11 -0
- package/lib/js/math.d.ts +266 -0
- package/{src/math.ts → lib/js/math.js} +37 -85
- package/lib/js/mercator.d.ts +92 -0
- package/{src/mercator.ts → lib/js/mercator.js} +13 -37
- package/lib/js/proj/EPSG3857.d.ts +9 -0
- package/{src/proj/EPSG3857.ts → lib/js/proj/EPSG3857.js} +0 -2
- package/lib/js/proj/EPSG4326.d.ts +9 -0
- package/{src/proj/EPSG4326.ts → lib/js/proj/EPSG4326.js} +0 -2
- package/lib/js/proj/Proj.d.ts +43 -0
- package/{src/proj/Proj.ts → lib/js/proj/Proj.js} +4 -29
- package/lib/js/quadTree/EPSG4326QuadTreeStrategy.d.ts +6 -0
- package/lib/js/quadTree/EPSG4326QuadTreeStrategy.js +17 -0
- package/lib/js/quadTree/EarthQuadTreeStrategy.d.ts +6 -0
- package/lib/js/quadTree/EarthQuadTreeStrategy.js +19 -0
- package/lib/js/quadTree/EntityCollectionNode.d.ts +54 -0
- package/{src/quadTree/EntityCollectionNode.ts → lib/js/quadTree/EntityCollectionNode.js} +83 -150
- package/lib/js/quadTree/MarsQuadTreeStrategy.d.ts +6 -0
- package/lib/js/quadTree/MarsQuadTreeStrategy.js +17 -0
- package/lib/js/quadTree/Node.d.ts +61 -0
- package/{src/quadTree/Node.ts → lib/js/quadTree/Node.js} +140 -357
- package/lib/js/quadTree/QuadTreeStrategy.d.ts +25 -0
- package/{src/quadTree/QuadTreeStrategy.ts → lib/js/quadTree/QuadTreeStrategy.js} +13 -44
- package/lib/js/quadTree/Wgs84QuadTreeStrategy.d.ts +6 -0
- package/lib/js/quadTree/Wgs84QuadTreeStrategy.js +15 -0
- package/lib/js/quadTree/index.d.ts +12 -0
- package/lib/js/quadTree/index.js +12 -0
- package/lib/js/quadTree/quadTree.d.ts +40 -0
- package/{src/quadTree/quadTree.ts → lib/js/quadTree/quadTree.js} +0 -9
- package/lib/js/renderer/Renderer.d.ts +320 -0
- package/{src/renderer/Renderer.ts → lib/js/renderer/Renderer.js} +265 -622
- package/lib/js/renderer/RendererEvents.d.ts +239 -0
- package/{src/renderer/RendererEvents.ts → lib/js/renderer/RendererEvents.js} +158 -472
- package/lib/js/scene/Axes.d.ts +12 -0
- package/lib/js/scene/Axes.js +59 -0
- package/lib/js/scene/BaseNode.d.ts +61 -0
- package/{src/scene/BaseNode.ts → lib/js/scene/BaseNode.js} +11 -57
- package/lib/js/scene/Planet.d.ts +623 -0
- package/{src/scene/Planet.ts → lib/js/scene/Planet.js} +257 -937
- package/lib/js/scene/RenderNode.d.ts +150 -0
- package/{src/scene/RenderNode.ts → lib/js/scene/RenderNode.js} +33 -138
- package/lib/js/scene/SkyBox.d.ts +13 -0
- package/{src/scene/SkyBox.ts → lib/js/scene/SkyBox.js} +16 -37
- package/{src/scene/index.ts → lib/js/scene/index.d.ts} +0 -1
- package/lib/js/scene/index.js +5 -0
- package/lib/js/segment/Segment.d.ts +278 -0
- package/{src/segment/Segment.ts → lib/js/segment/Segment.js} +242 -913
- package/lib/js/segment/SegmentLonLat.d.ts +48 -0
- package/{src/segment/SegmentLonLat.ts → lib/js/segment/SegmentLonLat.js} +58 -132
- package/lib/js/segment/SegmentLonLatWgs84.d.ts +10 -0
- package/lib/js/segment/SegmentLonLatWgs84.js +23 -0
- package/lib/js/segment/Slice.d.ts +13 -0
- package/{src/segment/Slice.ts → lib/js/segment/Slice.js} +4 -22
- package/lib/js/segment/segmentHelper.d.ts +18 -0
- package/{src/segment/segmentHelper.ts → lib/js/segment/segmentHelper.js} +30 -88
- package/lib/js/shaders/atmos.d.ts +4 -0
- package/{src/shaders/atmos.ts → lib/js/shaders/atmos.js} +8 -26
- package/lib/js/shaders/billboard.d.ts +3 -0
- package/{src/shaders/billboard.ts → lib/js/shaders/billboard.js} +9 -18
- package/lib/js/shaders/bloom.d.ts +2 -0
- package/{src/shaders/bloom.ts → lib/js/shaders/bloom.js} +5 -8
- package/lib/js/shaders/blur.d.ts +3 -0
- package/{src/shaders/blur.ts → lib/js/shaders/blur.js} +11 -19
- package/lib/js/shaders/depth.d.ts +2 -0
- package/{src/shaders/depth.ts → lib/js/shaders/depth.js} +3 -6
- package/lib/js/shaders/drawnode.d.ts +8 -0
- package/{src/shaders/drawnode.ts → lib/js/shaders/drawnode.js} +23 -75
- package/lib/js/shaders/geoObject.d.ts +3 -0
- package/{src/shaders/geoObject.ts → lib/js/shaders/geoObject.js} +51 -63
- package/lib/js/shaders/label.d.ts +4 -0
- package/{src/shaders/label.ts → lib/js/shaders/label.js} +12 -25
- package/lib/js/shaders/lumFilter.d.ts +2 -0
- package/{src/shaders/lumFilter.ts → lib/js/shaders/lumFilter.js} +4 -7
- package/lib/js/shaders/pickingMask.d.ts +2 -0
- package/{src/shaders/pickingMask.ts → lib/js/shaders/pickingMask.js} +5 -8
- package/lib/js/shaders/pointCloud.d.ts +2 -0
- package/{src/shaders/pointCloud.ts → lib/js/shaders/pointCloud.js} +4 -7
- package/lib/js/shaders/polyline.d.ts +3 -0
- package/{src/shaders/polyline.ts → lib/js/shaders/polyline.js} +7 -22
- package/lib/js/shaders/ray.d.ts +2 -0
- package/{src/shaders/ray.ts → lib/js/shaders/ray.js} +4 -7
- package/lib/js/shaders/screenFrame.d.ts +2 -0
- package/{src/shaders/screenFrame.ts → lib/js/shaders/screenFrame.js} +5 -8
- package/lib/js/shaders/skybox.d.ts +2 -0
- package/{src/shaders/skybox.ts → lib/js/shaders/skybox.js} +10 -13
- package/lib/js/shaders/toneMapping.d.ts +2 -0
- package/{src/shaders/toneMapping.ts → lib/js/shaders/toneMapping.js} +5 -8
- package/lib/js/shaders/utils.d.ts +1 -0
- package/{src/shaders/utils.ts → lib/js/shaders/utils.js} +1 -1
- package/lib/js/terrain/BilTerrain.d.ts +18 -0
- package/{src/terrain/BilTerrain.ts → lib/js/terrain/BilTerrain.js} +21 -118
- package/lib/js/terrain/EmptyTerrain.d.ts +106 -0
- package/{src/terrain/EmptyTerrain.ts → lib/js/terrain/EmptyTerrain.js} +20 -144
- package/lib/js/terrain/Geoid.d.ts +33 -0
- package/lib/js/terrain/Geoid.js +191 -0
- package/lib/js/terrain/GlobusTerrain.d.ts +134 -0
- package/{src/terrain/GlobusTerrain.ts → lib/js/terrain/GlobusTerrain.js} +84 -241
- package/lib/js/terrain/MapboxTerrain.d.ts +21 -0
- package/{src/terrain/MapboxTerrain.ts → lib/js/terrain/MapboxTerrain.js} +46 -215
- package/{src/terrain/index.ts → lib/js/terrain/index.d.ts} +0 -1
- package/lib/js/terrain/index.js +5 -0
- package/lib/js/ui/Button.d.ts +32 -0
- package/lib/js/ui/Button.js +78 -0
- package/lib/js/ui/ButtonGroup.d.ts +16 -0
- package/lib/js/ui/ButtonGroup.js +41 -0
- package/lib/js/ui/Dialog.d.ts +55 -0
- package/lib/js/ui/Dialog.js +173 -0
- package/lib/js/ui/Slider.d.ts +38 -0
- package/lib/js/ui/Slider.js +129 -0
- package/lib/js/ui/ToggleButton.d.ts +20 -0
- package/lib/js/ui/ToggleButton.js +42 -0
- package/lib/js/ui/View.d.ts +37 -0
- package/{src/ui/View.ts → lib/js/ui/View.js} +31 -77
- package/lib/js/ui/icons.d.ts +1 -0
- package/{src/ui/icons.ts → lib/js/ui/icons.js} +1 -1
- package/lib/js/utils/BaseWorker.d.ts +14 -0
- package/{src/utils/BaseWorker.ts → lib/js/utils/BaseWorker.js} +15 -28
- package/lib/js/utils/FontAtlas.d.ts +82 -0
- package/{src/utils/FontAtlas.ts → lib/js/utils/FontAtlas.js} +46 -182
- package/lib/js/utils/GeoImageCreator.d.ts +34 -0
- package/{src/utils/GeoImageCreator.ts → lib/js/utils/GeoImageCreator.js} +34 -91
- package/lib/js/utils/ImagesCacheManager.d.ts +22 -0
- package/{src/utils/ImagesCacheManager.ts → lib/js/utils/ImagesCacheManager.js} +16 -38
- package/lib/js/utils/Loader.d.ts +63 -0
- package/lib/js/utils/Loader.js +156 -0
- package/lib/js/utils/NormalMapCreator.d.ts +52 -0
- package/{src/utils/NormalMapCreator.ts → lib/js/utils/NormalMapCreator.js} +64 -195
- package/lib/js/utils/PlainSegmentWorker.d.ts +24 -0
- package/{src/utils/PlainSegmentWorker.ts → lib/js/utils/PlainSegmentWorker.js} +24 -56
- package/lib/js/utils/TerrainWorker.d.ts +28 -0
- package/{src/utils/TerrainWorker.ts → lib/js/utils/TerrainWorker.js} +19 -56
- package/lib/js/utils/TextureAtlas.d.ts +113 -0
- package/{src/utils/TextureAtlas.ts → lib/js/utils/TextureAtlas.js} +40 -131
- package/lib/js/utils/VectorTileCreator.d.ts +18 -0
- package/{src/utils/VectorTileCreator.ts → lib/js/utils/VectorTileCreator.js} +61 -147
- package/lib/js/utils/colorTable.d.ts +3 -0
- package/{src/utils/colorTable.ts → lib/js/utils/colorTable.js} +2 -2
- package/lib/js/utils/earcut.d.ts +7 -0
- package/{src/utils/earcut.ts → lib/js/utils/earcut.js} +95 -223
- package/lib/js/utils/objParser.d.ts +24 -0
- package/{src/utils/objParser.ts → lib/js/utils/objParser.js} +38 -93
- package/lib/js/utils/shared.d.ts +267 -0
- package/{src/utils/shared.ts → lib/js/utils/shared.js} +185 -342
- package/lib/js/utils/units.d.ts +16 -0
- package/lib/js/utils/units.js +61 -0
- package/lib/js/webgl/BaseFramebuffer.d.ts +53 -0
- package/{src/webgl/BaseFramebuffer.ts → lib/js/webgl/BaseFramebuffer.js} +22 -59
- package/lib/js/webgl/Framebuffer.d.ts +69 -0
- package/{src/webgl/Framebuffer.ts → lib/js/webgl/Framebuffer.js} +30 -87
- package/lib/js/webgl/Handler.d.ts +473 -0
- package/{src/webgl/Handler.ts → lib/js/webgl/Handler.js} +175 -586
- package/lib/js/webgl/Multisample.d.ts +27 -0
- package/lib/js/webgl/Multisample.js +77 -0
- package/lib/js/webgl/Program.d.ts +159 -0
- package/{src/webgl/Program.ts → lib/js/webgl/Program.js} +73 -210
- package/lib/js/webgl/ProgramController.d.ts +86 -0
- package/{src/webgl/ProgramController.ts → lib/js/webgl/ProgramController.js} +11 -45
- package/{src/webgl/index.ts → lib/js/webgl/index.d.ts} +1 -8
- package/lib/js/webgl/index.js +6 -0
- package/lib/js/webgl/types.d.ts +9 -0
- package/{src/webgl/types.ts → lib/js/webgl/types.js} +5 -8
- package/lib/js/webgl/variableHandlers.d.ts +22 -0
- package/lib/js/webgl/variableHandlers.js +78 -0
- package/package.json +23 -34
- package/dist/@openglobus/og.esm.js +0 -2
- package/dist/@openglobus/og.esm.js.map +0 -1
- package/dist/@openglobus/og.umd.js +0 -2
- package/dist/@openglobus/og.umd.js.map +0 -1
- package/src/Deferred.ts +0 -17
- package/src/control/MouseWheelZoomControl.ts +0 -269
- package/src/control/ScaleControl.ts +0 -131
- package/src/control/SegmentBoundVisualization.ts +0 -50
- package/src/control/ShowFps.ts +0 -28
- package/src/control/ToggleWireframe.ts +0 -35
- package/src/control/ruler/Ruler.ts +0 -35
- package/src/control/ruler/RulerScene.ts +0 -437
- package/src/control/timeline/timelineUtils.ts +0 -133
- package/src/ellipsoid/index.ts +0 -4
- package/src/entity/Geometry.ts +0 -486
- package/src/index.ts +0 -173
- package/src/layer/GeoTexture2d.ts +0 -56
- package/src/layer/index.ts +0 -12
- package/src/math/Line3.ts +0 -162
- package/src/math/index.ts +0 -26
- package/src/quadTree/EPSG4326QuadTreeStrategy.ts +0 -24
- package/src/quadTree/EarthQuadTreeStrategy.ts +0 -28
- package/src/quadTree/MarsQuadTreeStrategy.ts +0 -25
- package/src/quadTree/Wgs84QuadTreeStrategy.ts +0 -22
- package/src/quadTree/index.ts +0 -14
- package/src/scene/Axes.ts +0 -78
- package/src/segment/SegmentLonLatWgs84.ts +0 -33
- package/src/terrain/Geoid.ts +0 -273
- package/src/ui/Button.ts +0 -121
- package/src/ui/ButtonGroup.ts +0 -63
- package/src/ui/Dialog.ts +0 -244
- package/src/ui/Slider.ts +0 -188
- package/src/ui/ToggleButton.ts +0 -68
- package/src/utils/Loader.ts +0 -247
- package/src/utils/units.ts +0 -78
- package/src/webgl/Multisample.ts +0 -153
- package/src/webgl/variableHandlers.ts +0 -114
- /package/{dist → lib}/@openglobus/og.css +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Bold.json +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Bold.ttf.cfg +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Bold.ttf.png +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Light.json +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Light.ttf.cfg +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Light.ttf.png +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Medium.json +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Medium.ttf.cfg +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Karla-Medium.ttf.png +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/NotoSansArabic-Regular.json +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.cfg +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.png +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Roboto-Regular.json +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Roboto-Regular.ttf.cfg +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/Roboto-Regular.ttf.png +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/arial.js +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/arial.json +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/arial.ttf.cfg +0 -0
- /package/{dist → lib}/@openglobus/res/fonts/arial.ttf.png +0 -0
- /package/{dist → lib}/@openglobus/res/night-4326.png +0 -0
- /package/{dist → lib}/@openglobus/res/night.png +0 -0
- /package/{dist → lib}/@openglobus/res/spec.png +0 -0
|
@@ -2,83 +2,33 @@ import * as math from "../math";
|
|
|
2
2
|
import * as segmentHelper from "../segment/segmentHelper";
|
|
3
3
|
import * as shaders from "../shaders/drawnode";
|
|
4
4
|
import * as utils from "../utils/shared";
|
|
5
|
-
import {Atmosphere} from "../control/Atmosphere";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {PlanetCamera} from "../camera/PlanetCamera";
|
|
27
|
-
import {Quat} from "../math/Quat";
|
|
28
|
-
import {QuadTreeStrategy} from "../quadTree/QuadTreeStrategy";
|
|
29
|
-
import {Ray} from "../math/Ray";
|
|
30
|
-
import {RenderNode} from "./RenderNode";
|
|
31
|
-
import {SimpleSkyBackground} from "../control/SimpleSkyBackground";
|
|
32
|
-
import {Sun} from "../control/Sun";
|
|
33
|
-
import {TerrainWorker} from "../utils/TerrainWorker";
|
|
34
|
-
import {Vec2, Vec3, Vec4, NumberArray2, NumberArray3, NumberArray4} from "../math/index";
|
|
35
|
-
import {Vector} from "../layer/Vector";
|
|
36
|
-
import {VectorTileCreator} from "../utils/VectorTileCreator";
|
|
37
|
-
import {wgs84} from "../ellipsoid/wgs84";
|
|
38
|
-
import {WebGLBufferExt, WebGLTextureExt, IDefaultTextureParams} from "../webgl/Handler";
|
|
39
|
-
import Constructor = jest.Constructor;
|
|
40
|
-
|
|
41
|
-
export interface IPlanetParams {
|
|
42
|
-
name?: string;
|
|
43
|
-
ellipsoid?: Ellipsoid;
|
|
44
|
-
minAltitude?: number;
|
|
45
|
-
maxAltitude?: number;
|
|
46
|
-
frustums?: NumberArray2[];
|
|
47
|
-
maxEqualZoomAltitude?: number;
|
|
48
|
-
minEqualZoomAltitude?: number;
|
|
49
|
-
minEqualZoomCameraSlope?: number;
|
|
50
|
-
quadTreeStrategyPrototype?: typeof QuadTreeStrategy;
|
|
51
|
-
ambient?: string | NumberArray3 | Vec3;
|
|
52
|
-
diffuse?: string | NumberArray3 | Vec3;
|
|
53
|
-
specular?: string | NumberArray3 | Vec3;
|
|
54
|
-
shininess?: number;
|
|
55
|
-
nightTextureSrc?: string | null;
|
|
56
|
-
specularTextureSrc?: string | null;
|
|
57
|
-
maxGridSize?: number;
|
|
58
|
-
maxLoadingRequests?: number;
|
|
59
|
-
atmosphereEnabled?: boolean;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export type PlanetEventsList = [
|
|
63
|
-
"draw",
|
|
64
|
-
"layeradd",
|
|
65
|
-
"baselayerchange",
|
|
66
|
-
"layerremove",
|
|
67
|
-
"layervisibilitychange",
|
|
68
|
-
"rendercompleted",
|
|
69
|
-
"terraincompleted",
|
|
70
|
-
"layerloadend"
|
|
71
|
-
];
|
|
72
|
-
|
|
5
|
+
import { Atmosphere } from "../control/Atmosphere";
|
|
6
|
+
import { createColorRGB } from "../utils/shared";
|
|
7
|
+
import { createEvents } from "../Events";
|
|
8
|
+
import { decodeFloatFromRGBAArr } from "../math/coder";
|
|
9
|
+
import { EarthQuadTreeStrategy } from "../quadTree/EarthQuadTreeStrategy";
|
|
10
|
+
import { Extent } from "../Extent";
|
|
11
|
+
import { Geoid } from "../terrain/Geoid";
|
|
12
|
+
import { GeoImageCreator } from "../utils/GeoImageCreator";
|
|
13
|
+
import { Key, Lock } from "../Lock";
|
|
14
|
+
import { Loader } from "../utils/Loader";
|
|
15
|
+
import { LonLat } from "../LonLat";
|
|
16
|
+
import { NormalMapCreator } from "../utils/NormalMapCreator";
|
|
17
|
+
import { PlainSegmentWorker } from "../utils/PlainSegmentWorker";
|
|
18
|
+
import { PlanetCamera } from "../camera/PlanetCamera";
|
|
19
|
+
import { RenderNode } from "./RenderNode";
|
|
20
|
+
import { SimpleSkyBackground } from "../control/SimpleSkyBackground";
|
|
21
|
+
import { TerrainWorker } from "../utils/TerrainWorker";
|
|
22
|
+
import { Vec3, Vec4 } from "../math/index";
|
|
23
|
+
import { Vector } from "../layer/Vector";
|
|
24
|
+
import { VectorTileCreator } from "../utils/VectorTileCreator";
|
|
25
|
+
import { wgs84 } from "../ellipsoid/wgs84";
|
|
73
26
|
const CUR_LOD_SIZE = 250; //px
|
|
74
27
|
const MIN_LOD_SIZE = 312; //px
|
|
75
28
|
const MAX_LOD_SIZE = 190; //px
|
|
76
|
-
|
|
77
29
|
let _tempPickingPix_ = new Uint8Array(4);
|
|
78
30
|
let _tempDepthColor_ = new Uint8Array(4);
|
|
79
|
-
|
|
80
|
-
const DEPTH_DISTANCE = 11;//m
|
|
81
|
-
|
|
31
|
+
const DEPTH_DISTANCE = 11; //m
|
|
82
32
|
/**
|
|
83
33
|
* Maximum created nodes count. The more nodes count the more memory usage.
|
|
84
34
|
* @const
|
|
@@ -86,11 +36,7 @@ const DEPTH_DISTANCE = 11;//m
|
|
|
86
36
|
* @default
|
|
87
37
|
*/
|
|
88
38
|
const MAX_NODES = 200;
|
|
89
|
-
|
|
90
39
|
const HORIZON_TANGENT = 0.81;
|
|
91
|
-
|
|
92
|
-
type IndexBufferCacheData = { buffer: WebGLBufferExt | null };
|
|
93
|
-
|
|
94
40
|
/**
|
|
95
41
|
* Main class for rendering planet
|
|
96
42
|
* @class
|
|
@@ -110,332 +56,19 @@ type IndexBufferCacheData = { buffer: WebGLBufferExt | null };
|
|
|
110
56
|
* @fires EventsHandler<PlanetEventList>#geoimageadd
|
|
111
57
|
*/
|
|
112
58
|
export class Planet extends RenderNode {
|
|
113
|
-
|
|
114
|
-
public events: EventsHandler<PlanetEventsList>;
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* @public
|
|
118
|
-
* @type {Ellipsoid}
|
|
119
|
-
*/
|
|
120
|
-
public ellipsoid: Ellipsoid;
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* @public
|
|
124
|
-
* @override
|
|
125
|
-
* @type {Boolean}
|
|
126
|
-
*/
|
|
127
|
-
public override lightEnabled: boolean;
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Squared ellipsoid radius.
|
|
131
|
-
* @public
|
|
132
|
-
* @type {number}
|
|
133
|
-
*/
|
|
134
|
-
public _planetRadius2: number;
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Layers array.
|
|
138
|
-
* @public
|
|
139
|
-
* @type {Array.<Layer>}
|
|
140
|
-
*/
|
|
141
|
-
public _layers: Layer[];
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Flag to trigger layer update in a next frame
|
|
145
|
-
* @type {boolean}
|
|
146
|
-
* @protected
|
|
147
|
-
*/
|
|
148
|
-
protected _updateLayer: boolean;
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Current visible imagery tile layers array.
|
|
152
|
-
* @public
|
|
153
|
-
* @type {Array.<Layer>}
|
|
154
|
-
*/
|
|
155
|
-
public visibleTileLayers: Layer[];
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Current visible vector layers array.
|
|
159
|
-
* @protected
|
|
160
|
-
* @type {Array.<Layer>}
|
|
161
|
-
*/
|
|
162
|
-
protected visibleVectorLayers: Layer[];
|
|
163
|
-
|
|
164
|
-
protected _visibleTileLayerSlices: Layer[][];
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* Vector layers visible nodes with collections.
|
|
168
|
-
* @protected
|
|
169
|
-
* @type {Array.<EntityCollection>}
|
|
170
|
-
*/
|
|
171
|
-
protected _frustumEntityCollections: EntityCollection[];
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* There is only one base layer on the globe when layer.isBaseLayer is true.
|
|
175
|
-
* @public
|
|
176
|
-
* @type {Layer}
|
|
177
|
-
*/
|
|
178
|
-
public baseLayer: Layer | null;
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Terrain provider.
|
|
182
|
-
* @public
|
|
183
|
-
* @type {EmptyTerrain}
|
|
184
|
-
*/
|
|
185
|
-
public terrain: EmptyTerrain | null;
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* Camera is this.renderer.activeCamera pointer.
|
|
189
|
-
* @public
|
|
190
|
-
* @type {PlanetCamera}
|
|
191
|
-
*/
|
|
192
|
-
public camera: PlanetCamera;
|
|
193
|
-
|
|
194
|
-
public maxEqualZoomAltitude: number;
|
|
195
|
-
public minEqualZoomAltitude: number;
|
|
196
|
-
public minEqualZoomCameraSlope: number;
|
|
197
|
-
|
|
198
|
-
/**
|
|
199
|
-
* Screen mouse pointer projected to planet cartesian position.
|
|
200
|
-
* @public
|
|
201
|
-
* @type {Vec3}
|
|
202
|
-
*/
|
|
203
|
-
public mousePositionOnEarth: Vec3;
|
|
204
|
-
|
|
205
|
-
public emptyTexture: WebGLTextureExt | null;
|
|
206
|
-
public transparentTexture: WebGLTextureExt | null;
|
|
207
|
-
public defaultTexture: WebGLTextureExt | null;
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* Current visible minimal zoom index planet segment.
|
|
211
|
-
* @public
|
|
212
|
-
* @type {number}
|
|
213
|
-
*/
|
|
214
|
-
public minCurrZoom: number;
|
|
215
|
-
|
|
216
|
-
/**
|
|
217
|
-
* Current visible maximal zoom index planet segment.
|
|
218
|
-
* @public
|
|
219
|
-
* @type {number}
|
|
220
|
-
*/
|
|
221
|
-
public maxCurrZoom: number;
|
|
222
|
-
|
|
223
|
-
public _viewExtent: Extent;
|
|
224
|
-
|
|
225
|
-
protected _initialViewExtent: Extent | null;
|
|
226
|
-
|
|
227
|
-
public _createdNodesCount: number;
|
|
228
|
-
|
|
229
|
-
/**
|
|
230
|
-
* Planet's segments collected for rendering frame.
|
|
231
|
-
* @public
|
|
232
|
-
* @type {Node}
|
|
233
|
-
*/
|
|
234
|
-
public _renderedNodes: Node[];
|
|
235
|
-
|
|
236
|
-
public _renderedNodesInFrustum: Node[][];
|
|
237
|
-
|
|
238
|
-
/**
|
|
239
|
-
* Current visible mercator segments tree nodes array.
|
|
240
|
-
* @public
|
|
241
|
-
* @type {Node}
|
|
242
|
-
*
|
|
243
|
-
* @todo
|
|
244
|
-
* _visibleNodes, _visibleNodesNorth and _visibleNodesSouth should
|
|
245
|
-
* be replaced to strategy and Vector layer reworked in collecting methods.
|
|
246
|
-
* _visibleNodes, and _visibleNodesNorth and South are used in Vector
|
|
247
|
-
* layer only, for entity terrain collision
|
|
248
|
-
*
|
|
249
|
-
*/
|
|
250
|
-
public _visibleNodes: Record<number, Node>;
|
|
251
|
-
|
|
252
|
-
/**
|
|
253
|
-
* Current visible north pole nodes tree nodes array.
|
|
254
|
-
* @public
|
|
255
|
-
* @type {Node}
|
|
256
|
-
* @todo
|
|
257
|
-
*/
|
|
258
|
-
public _visibleNodesNorth: Record<number, Node>;
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
* Current visible south pole nodes tree nodes array.
|
|
262
|
-
* @public
|
|
263
|
-
* @type {Node}
|
|
264
|
-
* @todo
|
|
265
|
-
*/
|
|
266
|
-
public _visibleNodesSouth: Record<number, Node>;
|
|
267
|
-
|
|
268
|
-
/**
|
|
269
|
-
* Layers activity lock.
|
|
270
|
-
* @public
|
|
271
|
-
* @type {Lock}
|
|
272
|
-
*/
|
|
273
|
-
public layerLock: Lock;
|
|
274
|
-
|
|
275
|
-
/**
|
|
276
|
-
* Terrain providers activity lock.
|
|
277
|
-
* @public
|
|
278
|
-
* @type {Lock}
|
|
279
|
-
*/
|
|
280
|
-
public terrainLock: Lock;
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* Height scale factor. 1 - is normal elevation scale.
|
|
284
|
-
* @public
|
|
285
|
-
* @type {number}
|
|
286
|
-
*/
|
|
287
|
-
public _heightFactor: number;
|
|
288
|
-
|
|
289
|
-
/**
|
|
290
|
-
* Precomputed indexes array for different grid size segments.
|
|
291
|
-
* @protected
|
|
292
|
-
* @type {Array.<Array.<number>>}
|
|
293
|
-
*/
|
|
294
|
-
public _indexesCache: IndexBufferCacheData[][][][][];
|
|
295
|
-
|
|
296
|
-
protected _indexesCacheToRemove: IndexBufferCacheData[];
|
|
297
|
-
public _indexesCacheToRemoveCounter: number;
|
|
298
|
-
|
|
299
|
-
/**
|
|
300
|
-
* Precomputed texture coordinates buffers for different grid size segments.
|
|
301
|
-
* @public
|
|
302
|
-
* @type {Array.<Array.<number>>}
|
|
303
|
-
*/
|
|
304
|
-
public _textureCoordsBufferCache: WebGLBufferExt[];
|
|
305
|
-
|
|
306
|
-
public quadTreeStrategy: QuadTreeStrategy;
|
|
307
|
-
|
|
308
|
-
/**
|
|
309
|
-
* Night glowing gl texture.
|
|
310
|
-
* @protected
|
|
311
|
-
*/
|
|
312
|
-
protected _nightTexture: WebGLTextureExt | null;
|
|
313
|
-
|
|
314
|
-
/**
|
|
315
|
-
* Specular mask gl texture.
|
|
316
|
-
* @protected
|
|
317
|
-
*/
|
|
318
|
-
protected _specularTexture: WebGLTextureExt | null;
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
public _ambient: Float32Array;
|
|
322
|
-
public _diffuse: Float32Array;
|
|
323
|
-
public _specular: Float32Array;
|
|
324
|
-
|
|
325
|
-
protected _maxGridSize: number;
|
|
326
|
-
|
|
327
|
-
/**
|
|
328
|
-
* Segment multiple textures size.(4 - convenient value for the most devices)
|
|
329
|
-
* @const
|
|
330
|
-
* @public
|
|
331
|
-
*/
|
|
332
|
-
public SLICE_SIZE: number;
|
|
333
|
-
public SLICE_SIZE_4: number;
|
|
334
|
-
public SLICE_SIZE_3: number;
|
|
335
|
-
|
|
336
|
-
/**
|
|
337
|
-
* Level of details of visible segments.
|
|
338
|
-
* @protected
|
|
339
|
-
* @type {number}
|
|
340
|
-
*/
|
|
341
|
-
protected _lodSize: number;
|
|
342
|
-
protected _curLodSize: number;
|
|
343
|
-
protected _minLodSize: number;
|
|
344
|
-
public _maxLodSize: number;
|
|
345
|
-
|
|
346
|
-
public _pickingColorArr: Float32Array;
|
|
347
|
-
public _samplerArr: Int32Array;
|
|
348
|
-
public _pickingMaskArr: Int32Array;
|
|
349
|
-
|
|
350
|
-
/**
|
|
351
|
-
* GeoImage creator.
|
|
352
|
-
* @public
|
|
353
|
-
* @type{GeoImageCreator}
|
|
354
|
-
*/
|
|
355
|
-
public _geoImageCreator: GeoImageCreator;
|
|
356
|
-
|
|
357
|
-
/**
|
|
358
|
-
* VectorTileCreator creator.
|
|
359
|
-
* @public
|
|
360
|
-
* @type{VectorTileCreator}
|
|
361
|
-
*/
|
|
362
|
-
public _vectorTileCreator: VectorTileCreator;
|
|
363
|
-
|
|
364
|
-
/**
|
|
365
|
-
* NormalMapCreator creator.
|
|
366
|
-
* @public
|
|
367
|
-
* @type{NormalMapCreator}
|
|
368
|
-
*/
|
|
369
|
-
public _normalMapCreator: NormalMapCreator;
|
|
370
|
-
|
|
371
|
-
public _terrainWorker: TerrainWorker;
|
|
372
|
-
|
|
373
|
-
public _plainSegmentWorker: PlainSegmentWorker;
|
|
374
|
-
|
|
375
|
-
public _tileLoader: Loader<Layer>;
|
|
376
|
-
|
|
377
|
-
protected _memKey: Key;
|
|
378
|
-
|
|
379
|
-
public _distBeforeMemClear: number;
|
|
380
|
-
|
|
381
|
-
protected _prevCamEye: Vec3;
|
|
382
|
-
|
|
383
|
-
protected _initialized: boolean;
|
|
384
|
-
|
|
385
|
-
protected always: any[];
|
|
386
|
-
|
|
387
|
-
public _renderCompleted: boolean
|
|
388
|
-
public _renderCompletedActivated: boolean;
|
|
389
|
-
|
|
390
|
-
public _terrainCompleted: boolean;
|
|
391
|
-
public _terrainCompletedActivated: boolean;
|
|
392
|
-
|
|
393
|
-
protected _collectRenderNodesIsActive: boolean;
|
|
394
|
-
|
|
395
|
-
/**
|
|
396
|
-
* Night texture brightness coefficient
|
|
397
|
-
* @type {number}
|
|
398
|
-
*/
|
|
399
|
-
public nightTextureCoefficient: number;
|
|
400
|
-
|
|
401
|
-
protected _renderScreenNodesPASS: Function;
|
|
402
|
-
|
|
403
|
-
protected _atmosphereEnabled: boolean;
|
|
404
|
-
protected _atmosphereMaxMinOpacity: Float32Array;
|
|
405
|
-
|
|
406
|
-
public solidTextureOne: WebGLTextureExt | null;
|
|
407
|
-
public solidTextureTwo: WebGLTextureExt | null;
|
|
408
|
-
|
|
409
|
-
protected _skipPreRender: boolean;
|
|
410
|
-
|
|
411
|
-
protected _nightTextureSrc: string | null;
|
|
412
|
-
protected _specularTextureSrc: string | null;
|
|
413
|
-
|
|
414
|
-
constructor(options: IPlanetParams = {}) {
|
|
59
|
+
constructor(options = {}) {
|
|
415
60
|
super(options.name);
|
|
416
|
-
|
|
417
61
|
this.ellipsoid = options.ellipsoid || wgs84;
|
|
418
|
-
|
|
419
62
|
this.lightEnabled = true;
|
|
420
|
-
|
|
421
63
|
this._planetRadius2 = this.ellipsoid.getPolarSize() * this.ellipsoid.getPolarSize();
|
|
422
|
-
|
|
423
64
|
this._layers = [];
|
|
424
|
-
|
|
425
65
|
this._updateLayer = false;
|
|
426
|
-
|
|
427
66
|
this.visibleTileLayers = [];
|
|
428
|
-
|
|
429
67
|
this.visibleVectorLayers = [];
|
|
430
|
-
|
|
431
68
|
this._visibleTileLayerSlices = [];
|
|
432
|
-
|
|
433
69
|
this._frustumEntityCollections = [];
|
|
434
|
-
|
|
435
70
|
this.baseLayer = null;
|
|
436
|
-
|
|
437
71
|
this.terrain = null;
|
|
438
|
-
|
|
439
72
|
this.camera = new PlanetCamera(this, {
|
|
440
73
|
frustums: options.frustums,
|
|
441
74
|
eye: new Vec3(25000000, 0, 0),
|
|
@@ -444,300 +77,226 @@ export class Planet extends RenderNode {
|
|
|
444
77
|
minAltitude: options.minAltitude,
|
|
445
78
|
maxAltitude: options.maxAltitude
|
|
446
79
|
});
|
|
447
|
-
|
|
448
80
|
this.maxEqualZoomAltitude = options.maxEqualZoomAltitude || 15000000.0;
|
|
449
81
|
this.minEqualZoomAltitude = options.minEqualZoomAltitude || 10000.0;
|
|
450
82
|
this.minEqualZoomCameraSlope = options.minEqualZoomCameraSlope || 0.8;
|
|
451
|
-
|
|
452
83
|
this.mousePositionOnEarth = new Vec3();
|
|
453
|
-
|
|
454
84
|
this.emptyTexture = null;
|
|
455
85
|
this.transparentTexture = null;
|
|
456
86
|
this.defaultTexture = null;
|
|
457
|
-
|
|
458
87
|
this.minCurrZoom = math.MAX;
|
|
459
|
-
|
|
460
88
|
this.maxCurrZoom = math.MIN;
|
|
461
|
-
|
|
462
89
|
this._viewExtent = new Extent(new LonLat(180, 180), new LonLat(-180, -180));
|
|
463
|
-
|
|
464
90
|
this._skipPreRender = false;
|
|
465
|
-
|
|
466
91
|
this._initialViewExtent = null;
|
|
467
|
-
|
|
468
92
|
this._createdNodesCount = 0;
|
|
469
|
-
|
|
470
93
|
this._renderedNodes = [];
|
|
471
94
|
this._renderedNodesInFrustum = [];
|
|
472
|
-
|
|
473
95
|
this._visibleNodes = {};
|
|
474
|
-
|
|
475
96
|
this._visibleNodesNorth = {};
|
|
476
|
-
|
|
477
97
|
this._visibleNodesSouth = {};
|
|
478
|
-
|
|
479
98
|
this.layerLock = new Lock();
|
|
480
|
-
|
|
481
99
|
this.terrainLock = new Lock();
|
|
482
|
-
|
|
483
100
|
this._heightFactor = 1.0;
|
|
484
|
-
|
|
485
101
|
this._indexesCache = [];
|
|
486
102
|
this._indexesCacheToRemove = [];
|
|
487
103
|
this._indexesCacheToRemoveCounter = 0;
|
|
488
|
-
|
|
489
104
|
this._textureCoordsBufferCache = [];
|
|
490
|
-
|
|
491
105
|
this.quadTreeStrategy = options.quadTreeStrategyPrototype ? new options.quadTreeStrategyPrototype(this) : new EarthQuadTreeStrategy(this);
|
|
492
|
-
|
|
493
106
|
this._nightTexture = null;
|
|
494
|
-
|
|
495
107
|
this._specularTexture = null;
|
|
496
|
-
|
|
497
108
|
let a = utils.createColorRGB(options.ambient, new Vec3(0.2, 0.2, 0.3));
|
|
498
109
|
let d = utils.createColorRGB(options.diffuse, new Vec3(1.0, 1.0, 1.0));
|
|
499
110
|
let s = utils.createColorRGB(options.specular, new Vec3(0.00063, 0.00055, 0.00032));
|
|
500
111
|
let shininess = options.shininess || 18.0;
|
|
501
|
-
|
|
502
112
|
this._ambient = new Float32Array([a.x, a.y, a.z]);
|
|
503
113
|
this._diffuse = new Float32Array([d.x, d.y, d.z]);
|
|
504
114
|
this._specular = new Float32Array([s.x, s.y, s.z, shininess]);
|
|
505
|
-
|
|
506
115
|
this._maxGridSize = Math.log2(options.maxGridSize || 128);
|
|
507
|
-
|
|
508
116
|
this.SLICE_SIZE = 4;
|
|
509
117
|
this.SLICE_SIZE_4 = this.SLICE_SIZE * 4;
|
|
510
118
|
this.SLICE_SIZE_3 = this.SLICE_SIZE * 3;
|
|
511
|
-
|
|
512
119
|
this._lodSize = CUR_LOD_SIZE;
|
|
513
120
|
this._curLodSize = CUR_LOD_SIZE;
|
|
514
121
|
this._minLodSize = MIN_LOD_SIZE;
|
|
515
122
|
this._maxLodSize = MAX_LOD_SIZE;
|
|
516
|
-
|
|
517
123
|
this._pickingColorArr = new Float32Array(this.SLICE_SIZE_4);
|
|
518
124
|
this._samplerArr = new Int32Array(this.SLICE_SIZE);
|
|
519
125
|
this._pickingMaskArr = new Int32Array(this.SLICE_SIZE);
|
|
520
|
-
|
|
521
126
|
this._geoImageCreator = new GeoImageCreator(this);
|
|
522
|
-
|
|
523
127
|
this._vectorTileCreator = new VectorTileCreator(this);
|
|
524
|
-
|
|
525
128
|
this._normalMapCreator = new NormalMapCreator(this);
|
|
526
|
-
|
|
527
129
|
this._terrainWorker = new TerrainWorker(3);
|
|
528
|
-
|
|
529
130
|
this._plainSegmentWorker = new PlainSegmentWorker(3);
|
|
530
|
-
|
|
531
131
|
this._tileLoader = new Loader(options.maxLoadingRequests || 12);
|
|
532
|
-
|
|
533
132
|
this._memKey = new Key();
|
|
534
|
-
|
|
535
|
-
this.events = createEvents<PlanetEventsList>(PLANET_EVENTS);
|
|
536
|
-
|
|
133
|
+
this.events = createEvents(PLANET_EVENTS);
|
|
537
134
|
this._distBeforeMemClear = 0.0;
|
|
538
|
-
|
|
539
135
|
this._prevCamEye = new Vec3();
|
|
540
|
-
|
|
541
136
|
this._initialized = false;
|
|
542
|
-
|
|
543
137
|
this.always = [];
|
|
544
|
-
|
|
545
138
|
this._renderCompleted = false;
|
|
546
139
|
this._renderCompletedActivated = false;
|
|
547
|
-
|
|
548
140
|
this._terrainCompleted = false;
|
|
549
141
|
this._terrainCompletedActivated = false;
|
|
550
142
|
this._collectRenderNodesIsActive = true;
|
|
551
|
-
|
|
552
143
|
this.nightTextureCoefficient = 2.0;
|
|
553
|
-
|
|
554
144
|
this._renderScreenNodesPASS = this._renderScreenNodesPASSNoAtmos;
|
|
555
|
-
|
|
556
145
|
this._atmosphereEnabled = options.atmosphereEnabled || false;
|
|
557
146
|
this._atmosphereMaxMinOpacity = new Float32Array([1.0, 0.41]);
|
|
558
|
-
|
|
559
147
|
this.solidTextureOne = null;
|
|
560
148
|
this.solidTextureTwo = null;
|
|
561
|
-
|
|
562
149
|
this._nightTextureSrc = options.nightTextureSrc || null;
|
|
563
150
|
this._specularTextureSrc = options.specularTextureSrc || null;
|
|
564
151
|
}
|
|
565
|
-
|
|
566
|
-
public get maxGridSize(): number {
|
|
152
|
+
get maxGridSize() {
|
|
567
153
|
return this._maxGridSize;
|
|
568
154
|
}
|
|
569
|
-
|
|
570
|
-
public getNorthFrameRotation(cartesian: Vec3): Quat {
|
|
155
|
+
getNorthFrameRotation(cartesian) {
|
|
571
156
|
return this.ellipsoid.getNorthFrameRotation(cartesian);
|
|
572
157
|
}
|
|
573
|
-
|
|
574
|
-
public set atmosphereMaxOpacity(opacity: number) {
|
|
158
|
+
set atmosphereMaxOpacity(opacity) {
|
|
575
159
|
this._atmosphereMaxMinOpacity[0] = opacity;
|
|
576
160
|
}
|
|
577
|
-
|
|
578
|
-
public get atmosphereMaxOpacity(): number {
|
|
161
|
+
get atmosphereMaxOpacity() {
|
|
579
162
|
return this._atmosphereMaxMinOpacity[0];
|
|
580
163
|
}
|
|
581
|
-
|
|
582
|
-
public set atmosphereMinOpacity(opacity: number) {
|
|
164
|
+
set atmosphereMinOpacity(opacity) {
|
|
583
165
|
this._atmosphereMaxMinOpacity[1] = opacity;
|
|
584
166
|
}
|
|
585
|
-
|
|
586
|
-
public get atmosphereMinOpacity(): number {
|
|
167
|
+
get atmosphereMinOpacity() {
|
|
587
168
|
return this._atmosphereMaxMinOpacity[1];
|
|
588
169
|
}
|
|
589
|
-
|
|
590
|
-
public set atmosphereEnabled(enabled: boolean) {
|
|
170
|
+
set atmosphereEnabled(enabled) {
|
|
591
171
|
if (enabled != this._atmosphereEnabled) {
|
|
592
172
|
this._atmosphereEnabled = enabled;
|
|
593
173
|
this._initializeAtmosphere();
|
|
594
174
|
}
|
|
595
175
|
}
|
|
596
|
-
|
|
597
|
-
public get atmosphereEnabled(): boolean {
|
|
176
|
+
get atmosphereEnabled() {
|
|
598
177
|
return this._atmosphereEnabled;
|
|
599
178
|
}
|
|
600
|
-
|
|
601
|
-
public set diffuse(rgb: string | NumberArray3 | Vec3) {
|
|
179
|
+
set diffuse(rgb) {
|
|
602
180
|
let vec = createColorRGB(rgb);
|
|
603
181
|
this._diffuse = new Float32Array(vec.toArray());
|
|
604
182
|
}
|
|
605
|
-
|
|
606
|
-
public set ambient(rgb: string | NumberArray3 | Vec3) {
|
|
183
|
+
set ambient(rgb) {
|
|
607
184
|
let vec = createColorRGB(rgb);
|
|
608
185
|
this._ambient = new Float32Array(vec.toArray());
|
|
609
186
|
}
|
|
610
|
-
|
|
611
|
-
public set specular(rgb: string | NumberArray3 | Vec3) {
|
|
187
|
+
set specular(rgb) {
|
|
612
188
|
let vec = createColorRGB(rgb);
|
|
613
189
|
this._specular = new Float32Array([vec.x, vec.y, vec.y, this._specular[3]]);
|
|
614
190
|
}
|
|
615
|
-
|
|
616
|
-
public set shininess(v: number) {
|
|
191
|
+
set shininess(v) {
|
|
617
192
|
this._specular[3] = v;
|
|
618
193
|
}
|
|
619
|
-
|
|
620
|
-
public get normalMapCreator(): NormalMapCreator {
|
|
194
|
+
get normalMapCreator() {
|
|
621
195
|
return this._normalMapCreator;
|
|
622
196
|
}
|
|
623
|
-
|
|
624
|
-
public get layers(): Layer[] {
|
|
197
|
+
get layers() {
|
|
625
198
|
return [...this._layers];
|
|
626
199
|
}
|
|
627
|
-
|
|
628
200
|
/**
|
|
629
201
|
* @todo: remove after tests
|
|
630
202
|
* Get the collection of layers associated with this planet.
|
|
631
203
|
* @return {Array.<Layer>} Layers array.
|
|
632
204
|
* @public
|
|
633
205
|
*/
|
|
634
|
-
|
|
206
|
+
getLayers() {
|
|
635
207
|
return this.layers;
|
|
636
208
|
}
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
public get sunPos(): Vec3 {
|
|
640
|
-
return (this.renderer!.controls.sun as Sun).sunlight.getPosition();
|
|
209
|
+
get sunPos() {
|
|
210
|
+
return this.renderer.controls.sun.sunlight.getPosition();
|
|
641
211
|
}
|
|
642
|
-
|
|
643
212
|
/**
|
|
644
213
|
* Add the given control to the renderer of the planet scene.
|
|
645
214
|
* @param {Control} control - Control.
|
|
646
215
|
*/
|
|
647
|
-
|
|
216
|
+
addControl(control) {
|
|
648
217
|
control.planet = this;
|
|
649
|
-
control.addTo(this.renderer
|
|
218
|
+
control.addTo(this.renderer);
|
|
650
219
|
}
|
|
651
|
-
|
|
652
|
-
public get lodSize(): number {
|
|
220
|
+
get lodSize() {
|
|
653
221
|
return this._lodSize;
|
|
654
222
|
}
|
|
655
|
-
|
|
656
|
-
public setLodSize(currentLodSize: number, minLodSize?: number, maxLodSize?: number) {
|
|
223
|
+
setLodSize(currentLodSize, minLodSize, maxLodSize) {
|
|
657
224
|
this._maxLodSize = maxLodSize || this._maxLodSize;
|
|
658
225
|
this._minLodSize = minLodSize || this._minLodSize;
|
|
659
226
|
this._curLodSize = currentLodSize;
|
|
660
227
|
this._renderCompletedActivated = false;
|
|
661
228
|
this._terrainCompletedActivated = false;
|
|
662
229
|
}
|
|
663
|
-
|
|
664
230
|
/**
|
|
665
231
|
* Add the given controls array to the renderer of the planet.
|
|
666
232
|
* @param {Array.<Control>} cArr - Control array.
|
|
667
233
|
*/
|
|
668
|
-
|
|
234
|
+
addControls(cArr) {
|
|
669
235
|
for (let i = 0; i < cArr.length; i++) {
|
|
670
236
|
this.addControl(cArr[i]);
|
|
671
237
|
}
|
|
672
238
|
}
|
|
673
|
-
|
|
674
239
|
/**
|
|
675
240
|
* Return layer by it name
|
|
676
241
|
* @param {string} name - Name of the layer. og.Layer.prototype.name
|
|
677
242
|
* @public
|
|
678
243
|
* @returns {Layer} -
|
|
679
244
|
*/
|
|
680
|
-
|
|
245
|
+
getLayerByName(name) {
|
|
681
246
|
for (let i = 0, len = this._layers.length; i < len; i++) {
|
|
682
247
|
if (name === this._layers[i].name) {
|
|
683
248
|
return this._layers[i];
|
|
684
249
|
}
|
|
685
250
|
}
|
|
686
251
|
}
|
|
687
|
-
|
|
688
252
|
/**
|
|
689
253
|
* Adds layer to the planet.
|
|
690
254
|
* @param {Layer} layer - Layer object.
|
|
691
255
|
* @public
|
|
692
256
|
*/
|
|
693
|
-
|
|
257
|
+
addLayer(layer) {
|
|
694
258
|
layer.addTo(this);
|
|
695
259
|
}
|
|
696
|
-
|
|
697
260
|
/**
|
|
698
261
|
* Dispatch layer visibility changing event.
|
|
699
262
|
* @param {Layer} layer - Changed layer.
|
|
700
263
|
* @public
|
|
701
264
|
*/
|
|
702
|
-
|
|
265
|
+
_onLayerVisibilityChanged(layer) {
|
|
703
266
|
this.events.dispatch(this.events.layervisibilitychange, layer);
|
|
704
267
|
}
|
|
705
|
-
|
|
706
268
|
/**
|
|
707
269
|
* Adds the given layers array to the planet.
|
|
708
270
|
* @param {Array.<Layer>} layers - Layers array.
|
|
709
271
|
* @public
|
|
710
272
|
*/
|
|
711
|
-
|
|
273
|
+
addLayers(layers) {
|
|
712
274
|
for (let i = 0, len = layers.length; i < len; i++) {
|
|
713
275
|
this.addLayer(layers[i]);
|
|
714
276
|
}
|
|
715
277
|
}
|
|
716
|
-
|
|
717
278
|
/**
|
|
718
279
|
* Removes the given layer from the planet.
|
|
719
280
|
* @param {Layer} layer - Layer to remove.
|
|
720
281
|
* @public
|
|
721
282
|
*/
|
|
722
|
-
|
|
283
|
+
removeLayer(layer) {
|
|
723
284
|
layer.remove();
|
|
724
285
|
}
|
|
725
|
-
|
|
726
286
|
/**
|
|
727
287
|
*
|
|
728
288
|
* @public
|
|
729
289
|
* @param {Layer} layer - Material layer.
|
|
730
290
|
*/
|
|
731
|
-
|
|
291
|
+
_clearLayerMaterial(layer) {
|
|
732
292
|
this.quadTreeStrategy.clearLayerMaterial(layer);
|
|
733
293
|
}
|
|
734
|
-
|
|
735
294
|
/**
|
|
736
295
|
* Sets base layer coverage to the planet.
|
|
737
296
|
* @param {Layer} layer - Layer object.
|
|
738
297
|
* @public
|
|
739
298
|
*/
|
|
740
|
-
|
|
299
|
+
setBaseLayer(layer) {
|
|
741
300
|
if (this.baseLayer) {
|
|
742
301
|
if (!this.baseLayer.isEqual(layer)) {
|
|
743
302
|
this.baseLayer.setVisibility(false);
|
|
@@ -745,21 +304,20 @@ export class Planet extends RenderNode {
|
|
|
745
304
|
layer.setVisibility(true);
|
|
746
305
|
this.events.dispatch(this.events.baselayerchange, layer);
|
|
747
306
|
}
|
|
748
|
-
}
|
|
307
|
+
}
|
|
308
|
+
else {
|
|
749
309
|
this.baseLayer = layer;
|
|
750
310
|
this.baseLayer.setVisibility(true);
|
|
751
311
|
this.events.dispatch(this.events.baselayerchange, layer);
|
|
752
312
|
}
|
|
753
313
|
}
|
|
754
|
-
|
|
755
314
|
/**
|
|
756
315
|
* Sets elevation scale. 1.0 is default.
|
|
757
316
|
* @param {number} factor - Elevation scale.
|
|
758
317
|
*/
|
|
759
|
-
|
|
318
|
+
setHeightFactor(factor) {
|
|
760
319
|
this._renderCompletedActivated = false;
|
|
761
320
|
this._terrainCompletedActivated = false;
|
|
762
|
-
|
|
763
321
|
if (this._heightFactor !== factor) {
|
|
764
322
|
this._heightFactor = factor;
|
|
765
323
|
this.quadTreeStrategy.destroyBranches();
|
|
@@ -767,127 +325,106 @@ export class Planet extends RenderNode {
|
|
|
767
325
|
this._clearRenderNodesInFrustum();
|
|
768
326
|
}
|
|
769
327
|
}
|
|
770
|
-
|
|
771
328
|
/**
|
|
772
329
|
* Gets elevation scale.
|
|
773
330
|
* @returns {number} Terrain elevation scale
|
|
774
331
|
*/
|
|
775
|
-
|
|
332
|
+
getHeightFactor() {
|
|
776
333
|
return this._heightFactor;
|
|
777
334
|
}
|
|
778
|
-
|
|
779
335
|
/**
|
|
780
336
|
* Sets terrain provider
|
|
781
337
|
* @public
|
|
782
338
|
* @param {EmptyTerrain} terrain - Terrain provider.
|
|
783
339
|
*/
|
|
784
|
-
|
|
340
|
+
setTerrain(terrain) {
|
|
785
341
|
this._renderCompletedActivated = false;
|
|
786
342
|
this._terrainCompletedActivated = false;
|
|
787
|
-
|
|
788
343
|
if (this._initialized) {
|
|
789
344
|
this.memClear();
|
|
790
345
|
}
|
|
791
|
-
|
|
792
346
|
if (this.terrain) {
|
|
793
347
|
this.terrain.abortLoading();
|
|
794
348
|
this.terrain.clearCache();
|
|
795
349
|
this.terrain._planet = null;
|
|
796
350
|
}
|
|
797
|
-
|
|
798
351
|
this.terrain = terrain;
|
|
799
352
|
this.terrain._planet = this;
|
|
800
|
-
|
|
801
353
|
this.quadTreeStrategy.destroyBranches();
|
|
802
|
-
|
|
803
354
|
if (terrain._geoid.model) {
|
|
804
355
|
this._plainSegmentWorker.setGeoid(terrain.getGeoid());
|
|
805
356
|
terrain._isReady = true;
|
|
806
|
-
}
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
807
359
|
Geoid.loadModel(terrain.geoid.src)
|
|
808
|
-
.then((m
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
360
|
+
.then((m) => {
|
|
361
|
+
terrain.geoid.setModel(m);
|
|
362
|
+
this._plainSegmentWorker.setGeoid(terrain.getGeoid());
|
|
363
|
+
terrain._isReady = true;
|
|
364
|
+
})
|
|
813
365
|
.catch((err) => {
|
|
814
|
-
|
|
815
|
-
|
|
366
|
+
console.warn(err);
|
|
367
|
+
});
|
|
816
368
|
}
|
|
817
369
|
}
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
let h = this.renderer!.handler;
|
|
370
|
+
_initializeAtmosphere() {
|
|
371
|
+
let h = this.renderer.handler;
|
|
821
372
|
h.removeProgram("drawnode_screen_wl");
|
|
822
|
-
|
|
823
373
|
if (this._atmosphereEnabled) {
|
|
824
|
-
|
|
825
374
|
this._renderScreenNodesPASS = this._renderScreenNodesPASSAtmos;
|
|
826
|
-
|
|
827
375
|
if (h.isWebGl2()) {
|
|
828
376
|
h.addProgram(shaders.drawnode_screen_wl_webgl2Atmos(), true);
|
|
829
|
-
}
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
830
379
|
h.addProgram(shaders.drawnode_screen_wl_webgl1NoAtmos(), true);
|
|
831
380
|
}
|
|
832
|
-
|
|
833
|
-
if (!this.renderer!.controls.Atmosphere) {
|
|
381
|
+
if (!this.renderer.controls.Atmosphere) {
|
|
834
382
|
this.addControl(new Atmosphere());
|
|
835
|
-
} else {
|
|
836
|
-
this.renderer!.controls.Atmosphere.activate();
|
|
837
383
|
}
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
384
|
+
else {
|
|
385
|
+
this.renderer.controls.Atmosphere.activate();
|
|
386
|
+
}
|
|
387
|
+
if (this.renderer.controls.SimpleSkyBackground) {
|
|
388
|
+
this.renderer.controls.SimpleSkyBackground.deactivate();
|
|
841
389
|
}
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
845
392
|
this._renderScreenNodesPASS = this._renderScreenNodesPASSNoAtmos;
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
this.renderer!.controls.Atmosphere.deactivate();
|
|
393
|
+
if (this.renderer.controls.Atmosphere) {
|
|
394
|
+
this.renderer.controls.Atmosphere.deactivate();
|
|
849
395
|
}
|
|
850
|
-
|
|
851
|
-
if (!this.renderer!.controls.SimpleSkyBackground) {
|
|
396
|
+
if (!this.renderer.controls.SimpleSkyBackground) {
|
|
852
397
|
this.addControl(new SimpleSkyBackground());
|
|
853
|
-
} else {
|
|
854
|
-
this.renderer!.controls.SimpleSkyBackground.activate();
|
|
855
398
|
}
|
|
856
|
-
|
|
399
|
+
else {
|
|
400
|
+
this.renderer.controls.SimpleSkyBackground.activate();
|
|
401
|
+
}
|
|
857
402
|
if (h.isWebGl2()) {
|
|
858
403
|
h.addProgram(shaders.drawnode_screen_wl_webgl2NoAtmos(), true);
|
|
859
|
-
}
|
|
404
|
+
}
|
|
405
|
+
else {
|
|
860
406
|
h.addProgram(shaders.drawnode_screen_wl_webgl1NoAtmos(), true);
|
|
861
407
|
}
|
|
862
408
|
}
|
|
863
409
|
}
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
let h = this.renderer!.handler;
|
|
867
|
-
|
|
410
|
+
_initializeShaders() {
|
|
411
|
+
let h = this.renderer.handler;
|
|
868
412
|
h.addProgram(shaders.drawnode_screen_nl(), true);
|
|
869
413
|
h.addProgram(shaders.drawnode_colorPicking(), true);
|
|
870
414
|
h.addProgram(shaders.drawnode_depth(), true);
|
|
871
415
|
h.addProgram(shaders.drawnode_heightPicking(), true);
|
|
872
|
-
|
|
873
|
-
this.renderer
|
|
874
|
-
this.renderer
|
|
875
|
-
this.renderer!.addDistanceCallback(this, this._renderDistanceFramebufferPASS);
|
|
416
|
+
this.renderer.addPickingCallback(this, this._renderColorPickingFramebufferPASS);
|
|
417
|
+
this.renderer.addDepthCallback(this, this._renderDepthFramebufferPASS);
|
|
418
|
+
this.renderer.addDistanceCallback(this, this._renderDistanceFramebufferPASS);
|
|
876
419
|
}
|
|
877
|
-
|
|
878
|
-
protected _onLayerLoadend(layer: Layer) {
|
|
420
|
+
_onLayerLoadend(layer) {
|
|
879
421
|
this.events.dispatch(this.events.layerloadend, layer);
|
|
880
422
|
}
|
|
881
|
-
|
|
882
|
-
public override init() {
|
|
883
|
-
|
|
423
|
+
init() {
|
|
884
424
|
this._tileLoader.events.on("layerloadend", this._onLayerLoadend, this);
|
|
885
|
-
|
|
886
425
|
// Initialization indexes table
|
|
887
426
|
segmentHelper.getInstance().setMaxGridSize(this._maxGridSize);
|
|
888
|
-
|
|
889
427
|
const TABLESIZE = this._maxGridSize;
|
|
890
|
-
|
|
891
428
|
let kk = 0;
|
|
892
429
|
// Initialization indexes buffers cache. It takes about 120mb RAM!
|
|
893
430
|
for (let i = 0; i <= TABLESIZE; i++) {
|
|
@@ -899,182 +436,144 @@ export class Planet extends RenderNode {
|
|
|
899
436
|
for (let m = 0; m <= TABLESIZE; m++) {
|
|
900
437
|
!this._indexesCache[i][j][k][m] && (this._indexesCache[i][j][k][m] = new Array(TABLESIZE));
|
|
901
438
|
for (let q = 0; q <= TABLESIZE; q++) {
|
|
902
|
-
|
|
903
|
-
let ptr: IndexBufferCacheData = {
|
|
439
|
+
let ptr = {
|
|
904
440
|
buffer: null
|
|
905
441
|
};
|
|
906
|
-
|
|
907
442
|
if (i >= 1 && i === j && i === k && i === m && i === q) {
|
|
908
443
|
let indexes = segmentHelper.getInstance().createSegmentIndexes(i, [j, k, m, q]);
|
|
909
|
-
ptr.buffer = this.renderer
|
|
910
|
-
}
|
|
444
|
+
ptr.buffer = this.renderer.handler.createElementArrayBuffer(indexes, 1);
|
|
445
|
+
}
|
|
446
|
+
else {
|
|
911
447
|
this._indexesCacheToRemove[kk++] = ptr;
|
|
912
448
|
}
|
|
913
|
-
|
|
914
449
|
this._indexesCache[i][j][k][m][q] = ptr;
|
|
915
450
|
}
|
|
916
451
|
}
|
|
917
452
|
}
|
|
918
453
|
}
|
|
919
454
|
}
|
|
920
|
-
|
|
921
|
-
this.renderer!.events.on("resize", () => {
|
|
455
|
+
this.renderer.events.on("resize", () => {
|
|
922
456
|
this._renderCompletedActivated = false;
|
|
923
457
|
this._terrainCompletedActivated = false;
|
|
924
458
|
});
|
|
925
|
-
|
|
926
459
|
// Initialize texture coordinates buffer pool
|
|
927
460
|
this._textureCoordsBufferCache = [];
|
|
928
|
-
|
|
929
461
|
let texCoordCache = segmentHelper.getInstance().initTextureCoordsTable(TABLESIZE + 1);
|
|
930
|
-
|
|
931
462
|
for (let i = 0; i <= TABLESIZE; i++) {
|
|
932
|
-
this._textureCoordsBufferCache[i] = this.renderer
|
|
463
|
+
this._textureCoordsBufferCache[i] = this.renderer.handler.createArrayBuffer(texCoordCache[i], 2, ((1 << i) + 1) * ((1 << i) + 1));
|
|
933
464
|
}
|
|
934
|
-
|
|
935
465
|
// creating empty textures
|
|
936
|
-
this.renderer
|
|
466
|
+
this.renderer.handler.createDefaultTexture(null, (t) => {
|
|
937
467
|
this.solidTextureOne = t;
|
|
938
468
|
this.solidTextureTwo = t;
|
|
939
469
|
});
|
|
940
|
-
|
|
941
|
-
this.transparentTexture = this.renderer!.handler.transparentTexture;
|
|
942
|
-
|
|
470
|
+
this.transparentTexture = this.renderer.handler.transparentTexture;
|
|
943
471
|
this._renderedNodesInFrustum = new Array(this.camera.frustums.length);
|
|
944
472
|
for (let i = 0, len = this._renderedNodesInFrustum.length; i < len; i++) {
|
|
945
473
|
this._renderedNodesInFrustum[i] = [];
|
|
946
474
|
}
|
|
947
|
-
|
|
948
475
|
// Creating quad trees nodes
|
|
949
476
|
this.quadTreeStrategy.init();
|
|
950
|
-
|
|
951
|
-
this.drawMode = this.renderer!.handler.gl!.TRIANGLE_STRIP;
|
|
952
|
-
|
|
477
|
+
this.drawMode = this.renderer.handler.gl.TRIANGLE_STRIP;
|
|
953
478
|
// Applying shaders
|
|
954
479
|
this._initializeShaders();
|
|
955
|
-
|
|
956
480
|
this._initializeAtmosphere();
|
|
957
|
-
|
|
958
481
|
this._updateVisibleLayers();
|
|
959
|
-
|
|
960
|
-
this.renderer!.addPickingCallback(this, this._frustumEntityCollectionPickingCallback);
|
|
961
|
-
|
|
482
|
+
this.renderer.addPickingCallback(this, this._frustumEntityCollectionPickingCallback);
|
|
962
483
|
// loading Earth night glowing texture
|
|
963
484
|
if (this._nightTextureSrc) {
|
|
964
|
-
|
|
965
485
|
let img = new Image();
|
|
966
486
|
img.onload = () => {
|
|
967
|
-
this._nightTexture = this.renderer
|
|
487
|
+
this._nightTexture = this.renderer.handler.createTextureDefault(img);
|
|
968
488
|
this._nightTexture.default = true;
|
|
969
489
|
};
|
|
970
490
|
img.src = this._nightTextureSrc;
|
|
971
|
-
|
|
972
491
|
// createImageBitmap(NIGHT).then((e: ImageBitmap) => {
|
|
973
492
|
// this._nightTexture = this.renderer!.handler!.createTextureDefault(e);
|
|
974
493
|
// });
|
|
975
494
|
}
|
|
976
|
-
|
|
977
495
|
// load water specular mask
|
|
978
496
|
if (this._specularTextureSrc) {
|
|
979
497
|
let img = new Image();
|
|
980
498
|
img.onload = () => {
|
|
981
|
-
this._specularTexture = this.renderer
|
|
499
|
+
this._specularTexture = this.renderer.handler.createTextureDefault(img);
|
|
982
500
|
this._specularTexture.default = true;
|
|
983
501
|
};
|
|
984
502
|
img.src = this._specularTextureSrc;
|
|
985
|
-
|
|
986
503
|
// createImageBitmap(SPECULAR).then((e: ImageBitmap) => {
|
|
987
504
|
// this._specularTexture = this.renderer!.handler!.createTexture_l(e);
|
|
988
505
|
// });
|
|
989
506
|
}
|
|
990
|
-
|
|
991
507
|
this._geoImageCreator.init();
|
|
992
|
-
|
|
993
508
|
this._vectorTileCreator.init();
|
|
994
|
-
|
|
995
509
|
this._normalMapCreator.init();
|
|
996
|
-
|
|
997
|
-
this.renderer!.events.on("draw", this._globalPreDraw, this, -100);
|
|
998
|
-
|
|
510
|
+
this.renderer.events.on("draw", this._globalPreDraw, this, -100);
|
|
999
511
|
// Loading first nodes for better viewing if you have started on a lower altitude.
|
|
1000
512
|
this._preRender();
|
|
1001
|
-
|
|
1002
|
-
this.renderer!.events.on("postdraw", () => {
|
|
513
|
+
this.renderer.events.on("postdraw", () => {
|
|
1003
514
|
this._checkRendercompleted();
|
|
1004
515
|
});
|
|
1005
|
-
|
|
1006
516
|
this.initLayers();
|
|
1007
|
-
|
|
1008
517
|
this._initialized = true;
|
|
1009
|
-
|
|
1010
518
|
//
|
|
1011
519
|
// after init
|
|
1012
520
|
//
|
|
1013
521
|
if (this._initialViewExtent) {
|
|
1014
522
|
this.viewExtent(this._initialViewExtent);
|
|
1015
523
|
}
|
|
1016
|
-
|
|
1017
|
-
this.
|
|
1018
|
-
this.camera.bindRenderer(this.renderer!);
|
|
524
|
+
this.renderer.activeCamera = this.camera;
|
|
525
|
+
this.camera.bindRenderer(this.renderer);
|
|
1019
526
|
this.camera.update();
|
|
1020
527
|
}
|
|
1021
|
-
|
|
1022
|
-
public initLayers() {
|
|
528
|
+
initLayers() {
|
|
1023
529
|
let temp = [...this._layers];
|
|
1024
530
|
for (let i = 0; i < temp.length; i++) {
|
|
1025
531
|
this.removeLayer(temp[i]);
|
|
1026
532
|
this.addLayer(temp[i]);
|
|
1027
533
|
}
|
|
1028
534
|
}
|
|
1029
|
-
|
|
1030
|
-
protected _clearIndexesCache() {
|
|
535
|
+
_clearIndexesCache() {
|
|
1031
536
|
this._indexesCacheToRemoveCounter = 0;
|
|
1032
|
-
let c = this._indexesCacheToRemove,
|
|
1033
|
-
gl = this.renderer!.handler.gl!;
|
|
537
|
+
let c = this._indexesCacheToRemove, gl = this.renderer.handler.gl;
|
|
1034
538
|
for (let i = 0, len = c.length; i < len; i++) {
|
|
1035
539
|
let ci = c[i];
|
|
1036
|
-
gl.deleteBuffer(ci.buffer
|
|
540
|
+
gl.deleteBuffer(ci.buffer);
|
|
1037
541
|
ci.buffer = null;
|
|
1038
542
|
}
|
|
1039
543
|
}
|
|
1040
|
-
|
|
1041
|
-
protected _preRender() {
|
|
544
|
+
_preRender() {
|
|
1042
545
|
this.quadTreeStrategy.preRender();
|
|
1043
546
|
this._preLoad();
|
|
1044
547
|
}
|
|
1045
|
-
|
|
1046
|
-
protected _preLoad() {
|
|
548
|
+
_preLoad() {
|
|
1047
549
|
this._clearRenderedNodeList();
|
|
1048
550
|
this._skipPreRender = false;
|
|
1049
551
|
this.quadTreeStrategy.preLoad();
|
|
1050
552
|
}
|
|
1051
|
-
|
|
1052
553
|
/**
|
|
1053
554
|
* Creates default textures first for the North Pole and whole globe and second for the South Pole.
|
|
1054
555
|
* @public
|
|
1055
556
|
* @param{IDefaultTextureParams} param0 -
|
|
1056
557
|
* @param{IDefaultTextureParams} param1 -
|
|
1057
558
|
*/
|
|
1058
|
-
|
|
1059
|
-
this.renderer
|
|
1060
|
-
this.renderer
|
|
1061
|
-
this.renderer
|
|
559
|
+
createDefaultTextures(param0, param1) {
|
|
560
|
+
this.renderer.handler.gl.deleteTexture(this.solidTextureOne);
|
|
561
|
+
this.renderer.handler.gl.deleteTexture(this.solidTextureTwo);
|
|
562
|
+
this.renderer.handler.createDefaultTexture(param0, (texture) => {
|
|
1062
563
|
this.solidTextureOne = texture;
|
|
1063
564
|
});
|
|
1064
|
-
this.renderer
|
|
565
|
+
this.renderer.handler.createDefaultTexture(param1, (texture) => {
|
|
1065
566
|
this.solidTextureTwo = texture;
|
|
1066
567
|
});
|
|
1067
568
|
}
|
|
1068
|
-
|
|
1069
|
-
protected _getLayerAttributionHTML(layer: Layer) {
|
|
569
|
+
_getLayerAttributionHTML(layer) {
|
|
1070
570
|
return `<div class="og-attribution__layer">${layer.getAttribution()}</div>`;
|
|
1071
571
|
}
|
|
1072
|
-
|
|
1073
572
|
/**
|
|
1074
573
|
* Updates attribution lists
|
|
1075
574
|
* @public
|
|
1076
575
|
*/
|
|
1077
|
-
|
|
576
|
+
updateAttributionsList() {
|
|
1078
577
|
let html = "";
|
|
1079
578
|
for (let i = 0, len = this._layers.length; i < len; i++) {
|
|
1080
579
|
let li = this._layers[i];
|
|
@@ -1084,87 +583,72 @@ export class Planet extends RenderNode {
|
|
|
1084
583
|
}
|
|
1085
584
|
}
|
|
1086
585
|
}
|
|
1087
|
-
this._applyAttribution(html)
|
|
586
|
+
this._applyAttribution(html);
|
|
1088
587
|
}
|
|
1089
|
-
|
|
1090
|
-
public updateVisibleLayers() {
|
|
588
|
+
updateVisibleLayers() {
|
|
1091
589
|
this._updateLayer = true;
|
|
1092
590
|
}
|
|
1093
|
-
|
|
1094
|
-
protected _updateVisibleLayers() {
|
|
591
|
+
_updateVisibleLayers() {
|
|
1095
592
|
this.visibleTileLayers = [];
|
|
1096
593
|
this.visibleTileLayers.length = 0;
|
|
1097
|
-
|
|
1098
594
|
this.visibleVectorLayers = [];
|
|
1099
595
|
this.visibleVectorLayers.length = 0;
|
|
1100
|
-
|
|
1101
596
|
let html = "";
|
|
1102
597
|
for (let i = 0, len = this._layers.length; i < len; i++) {
|
|
1103
598
|
let li = this._layers[i];
|
|
1104
599
|
if (li.getVisibility()) {
|
|
1105
600
|
if (li.isBaseLayer()) {
|
|
1106
|
-
this.createDefaultTextures(li._defaultTextures[0]
|
|
601
|
+
this.createDefaultTextures(li._defaultTextures[0], li._defaultTextures[1]);
|
|
1107
602
|
this.baseLayer = li;
|
|
1108
603
|
}
|
|
1109
|
-
|
|
1110
604
|
if (li.hasImageryTiles()) {
|
|
1111
605
|
this.visibleTileLayers.push(li);
|
|
1112
606
|
}
|
|
1113
|
-
|
|
1114
607
|
if (li.isVector) {
|
|
1115
608
|
this.visibleVectorLayers.push(li);
|
|
1116
609
|
}
|
|
1117
|
-
|
|
1118
610
|
if (li.getAttribution().length) {
|
|
1119
611
|
html += this._getLayerAttributionHTML(li);
|
|
1120
612
|
}
|
|
1121
|
-
|
|
1122
|
-
|
|
613
|
+
}
|
|
614
|
+
else if (li._fading && li._fadingOpacity > 0) {
|
|
1123
615
|
if (li.hasImageryTiles()) {
|
|
1124
616
|
this.visibleTileLayers.push(li);
|
|
1125
617
|
}
|
|
1126
|
-
|
|
1127
618
|
if (li.isVector) {
|
|
1128
619
|
this.visibleVectorLayers.push(li);
|
|
1129
620
|
}
|
|
1130
621
|
}
|
|
1131
622
|
}
|
|
1132
|
-
|
|
1133
623
|
this._applyAttribution(html);
|
|
1134
|
-
|
|
1135
624
|
this._sortLayers();
|
|
1136
625
|
}
|
|
1137
|
-
|
|
1138
626
|
/**
|
|
1139
627
|
* Apply to render list of layer attributions
|
|
1140
628
|
* @protected
|
|
1141
629
|
*/
|
|
1142
|
-
|
|
630
|
+
_applyAttribution(html) {
|
|
1143
631
|
if (this.renderer && this.renderer.div) {
|
|
1144
632
|
if (html.length) {
|
|
1145
|
-
if (this.renderer.div.attributions
|
|
1146
|
-
this.renderer.div.attributions
|
|
633
|
+
if (this.renderer.div.attributions.innerHTML !== html) {
|
|
634
|
+
this.renderer.div.attributions.innerHTML = html;
|
|
1147
635
|
}
|
|
1148
|
-
}
|
|
1149
|
-
|
|
636
|
+
}
|
|
637
|
+
else {
|
|
638
|
+
this.renderer.div.attributions.innerHTML = "";
|
|
1150
639
|
}
|
|
1151
640
|
}
|
|
1152
641
|
}
|
|
1153
|
-
|
|
1154
642
|
/**
|
|
1155
643
|
* Sort visible layer - preparing for rendering.
|
|
1156
644
|
* @protected
|
|
1157
645
|
*/
|
|
1158
|
-
|
|
1159
|
-
|
|
646
|
+
_sortLayers() {
|
|
1160
647
|
this.visibleVectorLayers.sort((a, b) => (a.getZIndex() - b.getZIndex()) || (a.getHeight() - b.getHeight()));
|
|
1161
|
-
|
|
1162
648
|
this._visibleTileLayerSlices = [];
|
|
1163
649
|
this._visibleTileLayerSlices.length = 0;
|
|
1164
|
-
|
|
1165
650
|
if (this.visibleTileLayers.length) {
|
|
1166
651
|
this.visibleTileLayers.sort((a, b) => (a.getHeight() - b.getHeight()) || (a.getZIndex() - b.getZIndex()));
|
|
1167
|
-
|
|
1168
652
|
let k = -1;
|
|
1169
653
|
let currHeight = this.visibleTileLayers[0].getHeight();
|
|
1170
654
|
for (let i = 0, len = this.visibleTileLayers.length; i < len; i++) {
|
|
@@ -1177,54 +661,40 @@ export class Planet extends RenderNode {
|
|
|
1177
661
|
}
|
|
1178
662
|
}
|
|
1179
663
|
}
|
|
1180
|
-
|
|
1181
|
-
protected _clearRenderedNodeList() {
|
|
664
|
+
_clearRenderedNodeList() {
|
|
1182
665
|
this._renderedNodes.length = 0;
|
|
1183
666
|
this._renderedNodes = [];
|
|
1184
667
|
}
|
|
1185
|
-
|
|
1186
|
-
protected _clearRenderNodesInFrustum() {
|
|
668
|
+
_clearRenderNodesInFrustum() {
|
|
1187
669
|
for (let i = 0, len = this._renderedNodesInFrustum.length; i < len; i++) {
|
|
1188
670
|
this._renderedNodesInFrustum[i].length = 0;
|
|
1189
671
|
this._renderedNodesInFrustum[i] = [];
|
|
1190
672
|
}
|
|
1191
673
|
}
|
|
1192
|
-
|
|
1193
674
|
/**
|
|
1194
675
|
* Collects visible quad nodes.
|
|
1195
676
|
* @protected
|
|
1196
677
|
*/
|
|
1197
|
-
|
|
678
|
+
_collectRenderNodes() {
|
|
1198
679
|
let cam = this.camera;
|
|
1199
680
|
this._lodSize = math.lerp(cam.slope < 0.0 ? 0.0 : cam.slope, this._curLodSize, this._minLodSize);
|
|
1200
|
-
|
|
1201
681
|
cam._insideSegment = null;
|
|
1202
|
-
|
|
1203
682
|
// clear first
|
|
1204
683
|
this._clearRenderedNodeList();
|
|
1205
684
|
this._clearRenderNodesInFrustum();
|
|
1206
|
-
|
|
1207
685
|
this._viewExtent.southWest.set(180, 180);
|
|
1208
686
|
this._viewExtent.northEast.set(-180, -180);
|
|
1209
|
-
|
|
1210
687
|
this._visibleNodes = {};
|
|
1211
688
|
this._visibleNodesNorth = {};
|
|
1212
689
|
this._visibleNodesSouth = {};
|
|
1213
|
-
|
|
1214
690
|
this.minCurrZoom = math.MAX;
|
|
1215
691
|
this.maxCurrZoom = math.MIN;
|
|
1216
|
-
|
|
1217
692
|
this.quadTreeStrategy.collectRenderNodes();
|
|
1218
|
-
|
|
1219
693
|
if (cam.slope > this.minEqualZoomCameraSlope && cam._lonLat.height < this.maxEqualZoomAltitude && cam._lonLat.height > this.minEqualZoomAltitude) {
|
|
1220
|
-
|
|
1221
694
|
this.minCurrZoom = this.maxCurrZoom;
|
|
1222
|
-
|
|
1223
695
|
let temp = this._renderedNodes, rf = this._renderedNodesInFrustum, temp2 = [];
|
|
1224
|
-
|
|
1225
696
|
this._clearRenderNodesInFrustum();
|
|
1226
697
|
this._renderedNodes = [];
|
|
1227
|
-
|
|
1228
698
|
for (let i = 0, len = temp.length; i < len; i++) {
|
|
1229
699
|
let ri = temp[i];
|
|
1230
700
|
let ht = ri.segment.centerNormal.dot(cam._b);
|
|
@@ -1238,191 +708,156 @@ export class Planet extends RenderNode {
|
|
|
1238
708
|
k++;
|
|
1239
709
|
inFrustum >>= 1;
|
|
1240
710
|
}
|
|
1241
|
-
}
|
|
711
|
+
}
|
|
712
|
+
else {
|
|
1242
713
|
temp2.push(ri);
|
|
1243
714
|
}
|
|
1244
715
|
}
|
|
1245
|
-
|
|
1246
716
|
for (let i = 0, len = temp2.length; i < len; i++) {
|
|
1247
717
|
temp2[i].renderTree(cam, this.maxCurrZoom, null);
|
|
1248
718
|
}
|
|
1249
719
|
}
|
|
1250
720
|
}
|
|
1251
|
-
|
|
1252
|
-
protected _globalPreDraw() {
|
|
721
|
+
_globalPreDraw() {
|
|
1253
722
|
let cam = this.camera;
|
|
1254
|
-
|
|
1255
723
|
// Might be it's better to replace it in setTerrain,
|
|
1256
724
|
// but we have to be sure that setTerrain exists with renderer insttance
|
|
1257
|
-
this.renderer
|
|
1258
|
-
|
|
725
|
+
this.renderer.__useDistanceFramebuffer__ = !this.terrain.isEmpty;
|
|
1259
726
|
this._distBeforeMemClear += this._prevCamEye.distance(cam.eye);
|
|
1260
727
|
this._prevCamEye.copy(cam.eye);
|
|
1261
728
|
cam.checkFly();
|
|
1262
|
-
|
|
1263
729
|
// free memory
|
|
1264
730
|
if (this._createdNodesCount > MAX_NODES && this._distBeforeMemClear > 1000.0) {
|
|
1265
|
-
this.terrain
|
|
731
|
+
this.terrain.clearCache();
|
|
1266
732
|
this.memClear();
|
|
1267
733
|
}
|
|
1268
|
-
|
|
1269
734
|
if (this._indexesCacheToRemoveCounter > 600) {
|
|
1270
735
|
this._clearIndexesCache();
|
|
1271
736
|
}
|
|
1272
737
|
}
|
|
1273
|
-
|
|
1274
738
|
/**
|
|
1275
739
|
* Render node callback.
|
|
1276
740
|
* @public
|
|
1277
741
|
*/
|
|
1278
|
-
|
|
1279
|
-
|
|
742
|
+
preFrame() {
|
|
1280
743
|
if (this._updateLayer) {
|
|
1281
744
|
this._updateLayer = false;
|
|
1282
745
|
this._updateVisibleLayers();
|
|
1283
746
|
}
|
|
1284
|
-
|
|
1285
747
|
if (this.camera.isFirstPass) {
|
|
1286
748
|
this.camera.update();
|
|
1287
|
-
|
|
1288
749
|
if (this._skipPreRender && this._collectRenderNodesIsActive) {
|
|
1289
750
|
this._collectRenderNodes();
|
|
1290
751
|
}
|
|
1291
|
-
|
|
1292
752
|
this._skipPreRender = true;
|
|
1293
|
-
|
|
1294
753
|
this.transformLights();
|
|
1295
|
-
|
|
1296
754
|
// creates terrain normal maps
|
|
1297
755
|
this._normalMapCreator.frame();
|
|
1298
|
-
|
|
1299
756
|
// Creating geoImages textures.
|
|
1300
757
|
this._geoImageCreator.frame();
|
|
1301
|
-
|
|
1302
758
|
// Vector tiles rasterization
|
|
1303
759
|
this._vectorTileCreator.frame();
|
|
1304
|
-
|
|
1305
760
|
this.camera.checkTerrainCollision();
|
|
1306
761
|
this.camera.update();
|
|
1307
|
-
|
|
1308
762
|
// Here is the planet node dispatches a draw event before
|
|
1309
763
|
// rendering begins, and we have got render nodes.
|
|
1310
764
|
this.events.dispatch(this.events.draw, this);
|
|
1311
|
-
|
|
1312
765
|
// Collect entity collections from vector layers
|
|
1313
766
|
this._collectVectorLayerCollections();
|
|
1314
767
|
}
|
|
1315
|
-
|
|
1316
768
|
this.drawEntityCollections(this._frustumEntityCollections);
|
|
1317
769
|
}
|
|
1318
|
-
|
|
1319
770
|
/**
|
|
1320
771
|
* Render node callback.
|
|
1321
772
|
* @public
|
|
1322
773
|
* @override
|
|
1323
774
|
*/
|
|
1324
|
-
|
|
775
|
+
frame() {
|
|
1325
776
|
this._renderScreenNodesPASS();
|
|
1326
777
|
}
|
|
1327
|
-
|
|
1328
|
-
protected _checkRendercompleted() {
|
|
778
|
+
_checkRendercompleted() {
|
|
1329
779
|
if (this._renderCompleted) {
|
|
1330
780
|
if (!this._renderCompletedActivated) {
|
|
1331
781
|
this._renderCompletedActivated = true;
|
|
1332
782
|
this.events.dispatch(this.events.rendercompleted, true);
|
|
1333
783
|
}
|
|
1334
|
-
}
|
|
784
|
+
}
|
|
785
|
+
else {
|
|
1335
786
|
this._renderCompletedActivated = false;
|
|
1336
787
|
}
|
|
1337
788
|
this._renderCompleted = true;
|
|
1338
|
-
|
|
1339
789
|
if (this._terrainCompleted) {
|
|
1340
790
|
if (!this._terrainCompletedActivated) {
|
|
1341
791
|
this._terrainCompletedActivated = true;
|
|
1342
792
|
this.events.dispatch(this.events.terraincompleted, true);
|
|
1343
793
|
}
|
|
1344
|
-
}
|
|
794
|
+
}
|
|
795
|
+
else {
|
|
1345
796
|
this._terrainCompletedActivated = false;
|
|
1346
797
|
}
|
|
1347
|
-
|
|
1348
798
|
this._terrainCompleted = true;
|
|
1349
799
|
}
|
|
1350
|
-
|
|
1351
|
-
public lockQuadTree() {
|
|
800
|
+
lockQuadTree() {
|
|
1352
801
|
this._collectRenderNodesIsActive = false;
|
|
1353
802
|
this.camera.setTerrainCollisionActivity(false);
|
|
1354
803
|
}
|
|
1355
|
-
|
|
1356
|
-
public unlockQuadTree() {
|
|
804
|
+
unlockQuadTree() {
|
|
1357
805
|
this._collectRenderNodesIsActive = true;
|
|
1358
806
|
this.camera.setTerrainCollisionActivity(true);
|
|
1359
807
|
}
|
|
1360
|
-
|
|
1361
|
-
protected _renderScreenNodesPASSNoAtmos() {
|
|
1362
|
-
|
|
808
|
+
_renderScreenNodesPASSNoAtmos() {
|
|
1363
809
|
let sh, shu;
|
|
1364
|
-
let renderer = this.renderer
|
|
810
|
+
let renderer = this.renderer;
|
|
1365
811
|
let h = renderer.handler;
|
|
1366
|
-
let gl = h.gl
|
|
1367
|
-
let cam =
|
|
812
|
+
let gl = h.gl;
|
|
813
|
+
let cam = renderer.activeCamera;
|
|
1368
814
|
let firstPass = cam.isFirstPass;
|
|
1369
815
|
let frustumIndex = cam.currentFrustumIndex;
|
|
1370
|
-
|
|
1371
816
|
gl.enable(gl.CULL_FACE);
|
|
1372
|
-
|
|
1373
817
|
renderer.enableBlendOneSrcAlpha();
|
|
1374
|
-
|
|
1375
818
|
if (this.lightEnabled) {
|
|
1376
819
|
h.programs.drawnode_screen_wl.activate();
|
|
1377
820
|
sh = h.programs.drawnode_screen_wl._program;
|
|
1378
821
|
shu = sh.uniforms;
|
|
1379
|
-
|
|
1380
822
|
gl.uniform3fv(shu.lightsPositions, this._lightsPositions);
|
|
1381
823
|
gl.uniformMatrix4fv(shu.viewMatrix, false, cam.getViewMatrix());
|
|
1382
824
|
gl.uniformMatrix4fv(shu.projectionMatrix, false, cam.getProjectionMatrix());
|
|
1383
|
-
|
|
1384
825
|
if (this.baseLayer) {
|
|
1385
826
|
gl.uniform3fv(shu.diffuse, this.baseLayer._diffuse || this._diffuse);
|
|
1386
827
|
gl.uniform3fv(shu.ambient, this.baseLayer._ambient || this._ambient);
|
|
1387
828
|
gl.uniform4fv(shu.specular, this.baseLayer._specular || this._specular);
|
|
1388
829
|
gl.uniform1f(shu.nightTextureCoefficient, this.baseLayer.nightTextureCoefficient || this.nightTextureCoefficient);
|
|
1389
|
-
}
|
|
830
|
+
}
|
|
831
|
+
else {
|
|
1390
832
|
gl.uniform3fv(shu.diffuse, this._diffuse);
|
|
1391
833
|
gl.uniform3fv(shu.ambient, this._ambient);
|
|
1392
834
|
gl.uniform4fv(shu.specular, this._specular);
|
|
1393
835
|
gl.uniform1f(shu.nightTextureCoefficient, this.nightTextureCoefficient);
|
|
1394
836
|
}
|
|
1395
|
-
|
|
1396
837
|
//
|
|
1397
838
|
// Night and specular
|
|
1398
839
|
//
|
|
1399
840
|
gl.activeTexture(gl.TEXTURE0 + this.SLICE_SIZE);
|
|
1400
|
-
gl.bindTexture(gl.TEXTURE_2D, this._nightTexture
|
|
841
|
+
gl.bindTexture(gl.TEXTURE_2D, this._nightTexture || this.transparentTexture);
|
|
1401
842
|
gl.uniform1i(shu.nightTexture, this.SLICE_SIZE);
|
|
1402
|
-
|
|
1403
843
|
gl.activeTexture(gl.TEXTURE0 + this.SLICE_SIZE + 1);
|
|
1404
|
-
gl.bindTexture(gl.TEXTURE_2D, this._specularTexture
|
|
844
|
+
gl.bindTexture(gl.TEXTURE_2D, this._specularTexture || this.transparentTexture);
|
|
1405
845
|
gl.uniform1i(shu.specularTexture, this.SLICE_SIZE + 1);
|
|
1406
|
-
|
|
1407
846
|
gl.uniform1f(shu.camHeight, cam.getHeight());
|
|
1408
|
-
|
|
1409
|
-
|
|
847
|
+
}
|
|
848
|
+
else {
|
|
1410
849
|
h.programs.drawnode_screen_nl.activate();
|
|
1411
850
|
sh = h.programs.drawnode_screen_nl._program;
|
|
1412
851
|
shu = sh.uniforms;
|
|
1413
852
|
gl.uniformMatrix4fv(shu.viewMatrix, false, cam.getViewMatrix());
|
|
1414
853
|
gl.uniformMatrix4fv(shu.projectionMatrix, false, cam.getProjectionMatrix());
|
|
1415
854
|
}
|
|
1416
|
-
|
|
1417
855
|
gl.uniform3fv(shu.eyePositionHigh, cam.eyeHigh);
|
|
1418
856
|
gl.uniform3fv(shu.eyePositionLow, cam.eyeLow);
|
|
1419
|
-
|
|
1420
857
|
//
|
|
1421
858
|
// drawing planet nodes
|
|
1422
859
|
//
|
|
1423
|
-
let rn = this._renderedNodesInFrustum[frustumIndex],
|
|
1424
|
-
sl = this._visibleTileLayerSlices;
|
|
1425
|
-
|
|
860
|
+
let rn = this._renderedNodesInFrustum[frustumIndex], sl = this._visibleTileLayerSlices;
|
|
1426
861
|
if (sl.length) {
|
|
1427
862
|
let sli = sl[0];
|
|
1428
863
|
for (let i = sli.length - 1; i >= 0; --i) {
|
|
@@ -1432,8 +867,7 @@ export class Planet extends RenderNode {
|
|
|
1432
867
|
}
|
|
1433
868
|
}
|
|
1434
869
|
}
|
|
1435
|
-
|
|
1436
|
-
let isEq = this.terrain!.equalizeVertices;
|
|
870
|
+
let isEq = this.terrain.equalizeVertices;
|
|
1437
871
|
let i = rn.length;
|
|
1438
872
|
while (i--) {
|
|
1439
873
|
let s = rn[i].segment;
|
|
@@ -1441,7 +875,6 @@ export class Planet extends RenderNode {
|
|
|
1441
875
|
s.readyToEngage && s.engage();
|
|
1442
876
|
s.screenRendering(sh, sl[0], 0);
|
|
1443
877
|
}
|
|
1444
|
-
|
|
1445
878
|
gl.enable(gl.POLYGON_OFFSET_FILL);
|
|
1446
879
|
//gl.disable(gl.CULL_FACE);
|
|
1447
880
|
for (let j = 1, len = sl.length; j < len; j++) {
|
|
@@ -1452,7 +885,6 @@ export class Planet extends RenderNode {
|
|
|
1452
885
|
slj.splice(i, 1);
|
|
1453
886
|
}
|
|
1454
887
|
}
|
|
1455
|
-
|
|
1456
888
|
gl.polygonOffset(0, -j);
|
|
1457
889
|
i = rn.length;
|
|
1458
890
|
while (i--) {
|
|
@@ -1462,85 +894,69 @@ export class Planet extends RenderNode {
|
|
|
1462
894
|
//gl.enable(gl.CULL_FACE);
|
|
1463
895
|
gl.disable(gl.POLYGON_OFFSET_FILL);
|
|
1464
896
|
}
|
|
1465
|
-
|
|
1466
|
-
protected _renderScreenNodesPASSAtmos() {
|
|
1467
|
-
|
|
897
|
+
_renderScreenNodesPASSAtmos() {
|
|
1468
898
|
let sh, shu;
|
|
1469
|
-
let renderer = this.renderer
|
|
899
|
+
let renderer = this.renderer;
|
|
1470
900
|
let h = renderer.handler;
|
|
1471
|
-
let gl = h.gl
|
|
1472
|
-
let cam =
|
|
901
|
+
let gl = h.gl;
|
|
902
|
+
let cam = renderer.activeCamera;
|
|
1473
903
|
let firstPass = cam.isFirstPass;
|
|
1474
904
|
let frustumIndex = cam.currentFrustumIndex;
|
|
1475
|
-
|
|
1476
905
|
gl.enable(gl.CULL_FACE);
|
|
1477
|
-
|
|
1478
906
|
renderer.enableBlendOneSrcAlpha();
|
|
1479
|
-
|
|
1480
907
|
if (this.lightEnabled) {
|
|
1481
908
|
h.programs.drawnode_screen_wl.activate();
|
|
1482
909
|
sh = h.programs.drawnode_screen_wl._program;
|
|
1483
910
|
shu = sh.uniforms;
|
|
1484
|
-
|
|
1485
911
|
gl.uniform3fv(shu.lightsPositions, this._lightsPositions);
|
|
1486
912
|
gl.uniformMatrix4fv(shu.viewMatrix, false, cam.getViewMatrix());
|
|
1487
913
|
gl.uniformMatrix4fv(shu.projectionMatrix, false, cam.getProjectionMatrix());
|
|
1488
|
-
|
|
1489
914
|
if (this.baseLayer) {
|
|
1490
915
|
gl.uniform3fv(shu.diffuse, this.baseLayer._diffuse || this._diffuse);
|
|
1491
916
|
gl.uniform3fv(shu.ambient, this.baseLayer._ambient || this._ambient);
|
|
1492
917
|
gl.uniform4fv(shu.specular, this.baseLayer._specular || this._specular);
|
|
1493
918
|
gl.uniform1f(shu.nightTextureCoefficient, this.baseLayer.nightTextureCoefficient || this.nightTextureCoefficient);
|
|
1494
|
-
}
|
|
919
|
+
}
|
|
920
|
+
else {
|
|
1495
921
|
gl.uniform3fv(shu.diffuse, this._diffuse);
|
|
1496
922
|
gl.uniform3fv(shu.ambient, this._ambient);
|
|
1497
923
|
gl.uniform4fv(shu.specular, this._specular);
|
|
1498
924
|
gl.uniform1f(shu.nightTextureCoefficient, this.nightTextureCoefficient);
|
|
1499
925
|
}
|
|
1500
|
-
|
|
1501
926
|
gl.uniform2fv(shu.maxMinOpacity, this._atmosphereMaxMinOpacity);
|
|
1502
|
-
|
|
1503
927
|
//
|
|
1504
928
|
// Night and specular
|
|
1505
929
|
//
|
|
1506
930
|
gl.activeTexture(gl.TEXTURE0 + this.SLICE_SIZE);
|
|
1507
|
-
gl.bindTexture(gl.TEXTURE_2D, this._nightTexture
|
|
931
|
+
gl.bindTexture(gl.TEXTURE_2D, this._nightTexture || this.transparentTexture);
|
|
1508
932
|
gl.uniform1i(shu.nightTexture, this.SLICE_SIZE);
|
|
1509
|
-
|
|
1510
933
|
gl.activeTexture(gl.TEXTURE0 + this.SLICE_SIZE + 1);
|
|
1511
|
-
gl.bindTexture(gl.TEXTURE_2D, this._specularTexture
|
|
934
|
+
gl.bindTexture(gl.TEXTURE_2D, this._specularTexture || this.transparentTexture);
|
|
1512
935
|
gl.uniform1i(shu.specularTexture, this.SLICE_SIZE + 1);
|
|
1513
|
-
|
|
1514
936
|
//
|
|
1515
937
|
// atmos precomputed textures
|
|
1516
938
|
//
|
|
1517
939
|
gl.activeTexture(gl.TEXTURE0 + this.SLICE_SIZE + 4);
|
|
1518
|
-
gl.bindTexture(gl.TEXTURE_2D,
|
|
940
|
+
gl.bindTexture(gl.TEXTURE_2D, renderer.controls.Atmosphere._transmittanceBuffer.textures[0]);
|
|
1519
941
|
gl.uniform1i(shu.transmittanceTexture, this.SLICE_SIZE + 4);
|
|
1520
|
-
|
|
1521
942
|
gl.activeTexture(gl.TEXTURE0 + this.SLICE_SIZE + 5);
|
|
1522
|
-
gl.bindTexture(gl.TEXTURE_2D,
|
|
943
|
+
gl.bindTexture(gl.TEXTURE_2D, renderer.controls.Atmosphere._scatteringBuffer.textures[0]);
|
|
1523
944
|
gl.uniform1i(shu.scatteringTexture, this.SLICE_SIZE + 5);
|
|
1524
|
-
|
|
1525
945
|
gl.uniform1f(shu.camHeight, cam.getHeight());
|
|
1526
|
-
|
|
1527
|
-
|
|
946
|
+
}
|
|
947
|
+
else {
|
|
1528
948
|
h.programs.drawnode_screen_nl.activate();
|
|
1529
949
|
sh = h.programs.drawnode_screen_nl._program;
|
|
1530
950
|
shu = sh.uniforms;
|
|
1531
951
|
gl.uniformMatrix4fv(shu.viewMatrix, false, cam.getViewMatrix());
|
|
1532
952
|
gl.uniformMatrix4fv(shu.projectionMatrix, false, cam.getProjectionMatrix());
|
|
1533
953
|
}
|
|
1534
|
-
|
|
1535
954
|
gl.uniform3fv(shu.eyePositionHigh, cam.eyeHigh);
|
|
1536
955
|
gl.uniform3fv(shu.eyePositionLow, cam.eyeLow);
|
|
1537
|
-
|
|
1538
956
|
//
|
|
1539
957
|
// drawing planet nodes
|
|
1540
958
|
//
|
|
1541
|
-
let rn = this._renderedNodesInFrustum[frustumIndex],
|
|
1542
|
-
sl = this._visibleTileLayerSlices;
|
|
1543
|
-
|
|
959
|
+
let rn = this._renderedNodesInFrustum[frustumIndex], sl = this._visibleTileLayerSlices;
|
|
1544
960
|
if (sl.length) {
|
|
1545
961
|
let sli = sl[0];
|
|
1546
962
|
for (let i = sli.length - 1; i >= 0; --i) {
|
|
@@ -1550,8 +966,7 @@ export class Planet extends RenderNode {
|
|
|
1550
966
|
}
|
|
1551
967
|
}
|
|
1552
968
|
}
|
|
1553
|
-
|
|
1554
|
-
let isEq = this.terrain!.equalizeVertices;
|
|
969
|
+
let isEq = this.terrain.equalizeVertices;
|
|
1555
970
|
let i = rn.length;
|
|
1556
971
|
while (i--) {
|
|
1557
972
|
let s = rn[i].segment;
|
|
@@ -1559,7 +974,6 @@ export class Planet extends RenderNode {
|
|
|
1559
974
|
s.readyToEngage && s.engage();
|
|
1560
975
|
s.screenRendering(sh, sl[0], 0);
|
|
1561
976
|
}
|
|
1562
|
-
|
|
1563
977
|
gl.enable(gl.POLYGON_OFFSET_FILL);
|
|
1564
978
|
for (let j = 1, len = sl.length; j < len; j++) {
|
|
1565
979
|
let slj = sl[j];
|
|
@@ -1569,7 +983,6 @@ export class Planet extends RenderNode {
|
|
|
1569
983
|
slj.splice(i, 1);
|
|
1570
984
|
}
|
|
1571
985
|
}
|
|
1572
|
-
|
|
1573
986
|
gl.polygonOffset(0, -j);
|
|
1574
987
|
i = rn.length;
|
|
1575
988
|
while (i--) {
|
|
@@ -1578,69 +991,54 @@ export class Planet extends RenderNode {
|
|
|
1578
991
|
}
|
|
1579
992
|
gl.disable(gl.POLYGON_OFFSET_FILL);
|
|
1580
993
|
}
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
if (!this.terrain!.isEmpty) {
|
|
1584
|
-
|
|
994
|
+
_renderDistanceFramebufferPASS() {
|
|
995
|
+
if (!this.terrain.isEmpty) {
|
|
1585
996
|
let sh;
|
|
1586
|
-
let renderer = this.renderer
|
|
997
|
+
let renderer = this.renderer;
|
|
1587
998
|
let h = renderer.handler;
|
|
1588
|
-
let gl = h.gl
|
|
1589
|
-
let cam =
|
|
1590
|
-
|
|
999
|
+
let gl = h.gl;
|
|
1000
|
+
let cam = renderer.activeCamera;
|
|
1591
1001
|
h.programs.drawnode_heightPicking.activate();
|
|
1592
1002
|
sh = h.programs.drawnode_heightPicking._program;
|
|
1593
1003
|
let shu = sh.uniforms;
|
|
1594
|
-
|
|
1595
1004
|
gl.uniformMatrix4fv(shu.viewMatrix, false, cam.getViewMatrix());
|
|
1596
1005
|
gl.uniformMatrix4fv(shu.projectionMatrix, false, cam.getProjectionMatrix());
|
|
1597
|
-
|
|
1598
1006
|
gl.uniform3fv(shu.eyePositionHigh, cam.eyeHigh);
|
|
1599
1007
|
gl.uniform3fv(shu.eyePositionLow, cam.eyeLow);
|
|
1600
|
-
|
|
1601
1008
|
// drawing planet nodes
|
|
1602
1009
|
let rn = this._renderedNodesInFrustum[cam.currentFrustumIndex];
|
|
1603
1010
|
let sl = this._visibleTileLayerSlices;
|
|
1604
|
-
|
|
1605
1011
|
let i = rn.length;
|
|
1606
1012
|
while (i--) {
|
|
1607
1013
|
rn[i].segment.heightPickingRendering(sh, sl[0]);
|
|
1608
1014
|
}
|
|
1609
1015
|
}
|
|
1610
1016
|
}
|
|
1611
|
-
|
|
1612
|
-
protected _renderColorPickingFramebufferPASS() {
|
|
1017
|
+
_renderColorPickingFramebufferPASS() {
|
|
1613
1018
|
let sh;
|
|
1614
|
-
let renderer = this.renderer
|
|
1019
|
+
let renderer = this.renderer;
|
|
1615
1020
|
let h = renderer.handler;
|
|
1616
|
-
let gl = h.gl
|
|
1021
|
+
let gl = h.gl;
|
|
1617
1022
|
h.programs.drawnode_colorPicking.activate();
|
|
1618
1023
|
sh = h.programs.drawnode_colorPicking._program;
|
|
1619
1024
|
let shu = sh.uniforms;
|
|
1620
|
-
let cam = renderer.activeCamera
|
|
1621
|
-
|
|
1025
|
+
let cam = renderer.activeCamera;
|
|
1622
1026
|
// Special blend
|
|
1623
1027
|
// gl.enable(gl.BLEND);
|
|
1624
1028
|
// gl.blendEquation(gl.FUNC_ADD);
|
|
1625
1029
|
// gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
|
|
1626
|
-
|
|
1627
1030
|
gl.enable(gl.CULL_FACE);
|
|
1628
|
-
|
|
1629
1031
|
gl.uniformMatrix4fv(shu.viewMatrix, false, cam.getViewMatrix());
|
|
1630
1032
|
gl.uniformMatrix4fv(shu.projectionMatrix, false, cam.getProjectionMatrix());
|
|
1631
|
-
|
|
1632
1033
|
gl.uniform3fv(shu.eyePositionHigh, cam.eyeHigh);
|
|
1633
1034
|
gl.uniform3fv(shu.eyePositionLow, cam.eyeLow);
|
|
1634
|
-
|
|
1635
1035
|
// drawing planet nodes
|
|
1636
1036
|
let rn = this._renderedNodesInFrustum[cam.getCurrentFrustum()];
|
|
1637
1037
|
let sl = this._visibleTileLayerSlices;
|
|
1638
|
-
|
|
1639
1038
|
let i = rn.length;
|
|
1640
1039
|
while (i--) {
|
|
1641
1040
|
rn[i].segment.colorPickingRendering(sh, sl[0], 0);
|
|
1642
1041
|
}
|
|
1643
|
-
|
|
1644
1042
|
gl.enable(gl.POLYGON_OFFSET_FILL);
|
|
1645
1043
|
for (let j = 1, len = sl.length; j < len; j++) {
|
|
1646
1044
|
i = rn.length;
|
|
@@ -1651,86 +1049,65 @@ export class Planet extends RenderNode {
|
|
|
1651
1049
|
}
|
|
1652
1050
|
gl.disable(gl.POLYGON_OFFSET_FILL);
|
|
1653
1051
|
}
|
|
1654
|
-
|
|
1655
|
-
protected _renderDepthFramebufferPASS() {
|
|
1052
|
+
_renderDepthFramebufferPASS() {
|
|
1656
1053
|
let sh;
|
|
1657
|
-
let renderer = this.renderer
|
|
1054
|
+
let renderer = this.renderer;
|
|
1658
1055
|
let h = renderer.handler;
|
|
1659
|
-
let gl = h.gl
|
|
1056
|
+
let gl = h.gl;
|
|
1660
1057
|
h.programs.drawnode_depth.activate();
|
|
1661
1058
|
sh = h.programs.drawnode_depth._program;
|
|
1662
1059
|
let shu = sh.uniforms;
|
|
1663
|
-
let cam = renderer.activeCamera
|
|
1664
|
-
|
|
1060
|
+
let cam = renderer.activeCamera;
|
|
1665
1061
|
gl.disable(gl.BLEND);
|
|
1666
1062
|
gl.disable(gl.POLYGON_OFFSET_FILL);
|
|
1667
|
-
|
|
1668
1063
|
gl.uniformMatrix4fv(shu.viewMatrix, false, cam.getViewMatrix());
|
|
1669
1064
|
gl.uniformMatrix4fv(shu.projectionMatrix, false, cam.getProjectionMatrix());
|
|
1670
|
-
|
|
1671
1065
|
gl.uniform3fv(shu.eyePositionHigh, cam.eyeHigh);
|
|
1672
1066
|
gl.uniform3fv(shu.eyePositionLow, cam.eyeLow);
|
|
1673
|
-
|
|
1674
1067
|
gl.uniform3fv(shu.frustumPickingColor, cam.frustum._pickingColorU);
|
|
1675
|
-
|
|
1676
1068
|
// drawing planet nodes
|
|
1677
|
-
let rn = this._renderedNodesInFrustum[cam.getCurrentFrustum()],
|
|
1678
|
-
sl = this._visibleTileLayerSlices;
|
|
1679
|
-
|
|
1069
|
+
let rn = this._renderedNodesInFrustum[cam.getCurrentFrustum()], sl = this._visibleTileLayerSlices;
|
|
1680
1070
|
let i = rn.length;
|
|
1681
1071
|
while (i--) {
|
|
1682
1072
|
rn[i].segment.depthRendering(sh, sl[0]);
|
|
1683
1073
|
}
|
|
1684
|
-
|
|
1685
1074
|
gl.enable(gl.BLEND);
|
|
1686
1075
|
}
|
|
1687
|
-
|
|
1688
|
-
protected _collectVectorLayerCollections() {
|
|
1076
|
+
_collectVectorLayerCollections() {
|
|
1689
1077
|
this._frustumEntityCollections.length = 0;
|
|
1690
1078
|
this._frustumEntityCollections = [];
|
|
1691
|
-
|
|
1692
1079
|
let i = this.visibleVectorLayers.length;
|
|
1693
1080
|
while (i--) {
|
|
1694
|
-
let vi = this.visibleVectorLayers[i]
|
|
1695
|
-
|
|
1081
|
+
let vi = this.visibleVectorLayers[i];
|
|
1696
1082
|
if (vi._fading && vi._refreshFadingOpacity()) {
|
|
1697
1083
|
this.visibleVectorLayers.splice(i, 1);
|
|
1698
1084
|
}
|
|
1699
|
-
|
|
1700
1085
|
vi.collectVisibleCollections(this._frustumEntityCollections);
|
|
1701
1086
|
vi.update();
|
|
1702
1087
|
}
|
|
1703
1088
|
}
|
|
1704
|
-
|
|
1705
|
-
protected _frustumEntityCollectionPickingCallback() {
|
|
1089
|
+
_frustumEntityCollectionPickingCallback() {
|
|
1706
1090
|
this.drawPickingEntityCollections(this._frustumEntityCollections);
|
|
1707
1091
|
}
|
|
1708
|
-
|
|
1709
1092
|
/**
|
|
1710
1093
|
* Starts clear memory thread.
|
|
1711
1094
|
* @public
|
|
1712
1095
|
*/
|
|
1713
|
-
|
|
1096
|
+
memClear() {
|
|
1714
1097
|
this._distBeforeMemClear = 0;
|
|
1715
|
-
|
|
1716
1098
|
this.camera._insideSegment = null;
|
|
1717
|
-
|
|
1718
1099
|
this.layerLock.lock(this._memKey);
|
|
1719
1100
|
this.terrainLock.lock(this._memKey);
|
|
1720
1101
|
this._normalMapCreator.lock(this._memKey);
|
|
1721
|
-
|
|
1722
1102
|
this._normalMapCreator.clear();
|
|
1723
|
-
this.terrain
|
|
1103
|
+
this.terrain.abortLoading();
|
|
1724
1104
|
this._tileLoader.abortAll();
|
|
1725
|
-
|
|
1726
1105
|
this.quadTreeStrategy.clear();
|
|
1727
1106
|
this.layerLock.free(this._memKey);
|
|
1728
1107
|
this.terrainLock.free(this._memKey);
|
|
1729
1108
|
this._normalMapCreator.free(this._memKey);
|
|
1730
|
-
|
|
1731
1109
|
this._createdNodesCount = 0;
|
|
1732
1110
|
}
|
|
1733
|
-
|
|
1734
1111
|
/**
|
|
1735
1112
|
* Returns ray vector hit ellipsoid coordinates.
|
|
1736
1113
|
* If the ray doesn't hit ellipsoid it returns 'undefined'.
|
|
@@ -1738,47 +1115,43 @@ export class Planet extends RenderNode {
|
|
|
1738
1115
|
* @param {Ray} ray - Ray.
|
|
1739
1116
|
* @returns {Vec3 | undefined} -
|
|
1740
1117
|
*/
|
|
1741
|
-
|
|
1118
|
+
getRayIntersectionEllipsoid(ray) {
|
|
1742
1119
|
return this.ellipsoid.hitRay(ray.origin, ray.direction);
|
|
1743
1120
|
}
|
|
1744
|
-
|
|
1745
1121
|
/**
|
|
1746
1122
|
* Project screen coordinates to the planet ellipsoid.
|
|
1747
1123
|
* @public
|
|
1748
1124
|
* @param {Vec2 | IBaseInputState } px - Screen coordinates.
|
|
1749
1125
|
* @returns {Vec3 | undefined} - Cartesian coordinates.
|
|
1750
1126
|
*/
|
|
1751
|
-
|
|
1752
|
-
let cam = this.renderer
|
|
1127
|
+
getCartesianFromPixelEllipsoid(px) {
|
|
1128
|
+
let cam = this.renderer.activeCamera;
|
|
1753
1129
|
return this.ellipsoid.hitRay(cam.eye, cam.unproject(px.x, px.y));
|
|
1754
1130
|
}
|
|
1755
|
-
|
|
1756
1131
|
/**
|
|
1757
1132
|
* Project screen coordinates to the planet ellipsoid.
|
|
1758
1133
|
* @public
|
|
1759
1134
|
* @param {Vec2 | IBaseInputState} px - Screen coordinates.
|
|
1760
1135
|
* @returns {LonLat | undefined} - Geodetic coordinates.
|
|
1761
1136
|
*/
|
|
1762
|
-
|
|
1137
|
+
getLonLatFromPixelEllipsoid(px) {
|
|
1763
1138
|
let coords = this.getCartesianFromPixelEllipsoid(px);
|
|
1764
1139
|
if (coords) {
|
|
1765
1140
|
return this.ellipsoid.cartesianToLonLat(coords);
|
|
1766
1141
|
}
|
|
1767
1142
|
}
|
|
1768
|
-
|
|
1769
1143
|
/**
|
|
1770
1144
|
* Returns mouse position cartesian coordinates on the current terrain.
|
|
1771
1145
|
* @public
|
|
1772
1146
|
* @returns {Vec3 | undefined} -
|
|
1773
1147
|
*/
|
|
1774
|
-
|
|
1775
|
-
let ms = this.renderer
|
|
1148
|
+
getCartesianFromMouseTerrain() {
|
|
1149
|
+
let ms = this.renderer.events.mouseState;
|
|
1776
1150
|
let distance = this.getDistanceFromPixel(ms);
|
|
1777
1151
|
if (distance) {
|
|
1778
|
-
return ms.direction.scaleTo(distance).addA(this.renderer
|
|
1152
|
+
return ms.direction.scaleTo(distance).addA(this.renderer.activeCamera.eye);
|
|
1779
1153
|
}
|
|
1780
1154
|
}
|
|
1781
|
-
|
|
1782
1155
|
/**
|
|
1783
1156
|
* Returns screen coordinates cartesian coordinates on the current terrain.
|
|
1784
1157
|
* position or null if input coordinates is outside the planet.
|
|
@@ -1786,14 +1159,13 @@ export class Planet extends RenderNode {
|
|
|
1786
1159
|
* @param {Vec2} px - Pixel screen 2d coordinates.
|
|
1787
1160
|
* @returns {Vec3 | undefined} -
|
|
1788
1161
|
*/
|
|
1789
|
-
|
|
1162
|
+
getCartesianFromPixelTerrain(px) {
|
|
1790
1163
|
let distance = this.getDistanceFromPixel(px);
|
|
1791
1164
|
if (distance) {
|
|
1792
|
-
let direction =
|
|
1793
|
-
return direction.scaleTo(distance).addA(this.renderer
|
|
1165
|
+
let direction = px.direction || this.renderer.activeCamera.unproject(px.x, px.y);
|
|
1166
|
+
return direction.scaleTo(distance).addA(this.renderer.activeCamera.eye);
|
|
1794
1167
|
}
|
|
1795
1168
|
}
|
|
1796
|
-
|
|
1797
1169
|
/**
|
|
1798
1170
|
* Returns geodetic coordinates on the current terrain planet by its screen coordinates.
|
|
1799
1171
|
* position or null if input coordinates is outside the planet.
|
|
@@ -1801,125 +1173,111 @@ export class Planet extends RenderNode {
|
|
|
1801
1173
|
* @param {Vec2 | IBaseInputState} px - Pixel screen 2d coordinates.
|
|
1802
1174
|
* @returns {LonLat | undefined} -
|
|
1803
1175
|
*/
|
|
1804
|
-
|
|
1176
|
+
getLonLatFromPixelTerrain(px) {
|
|
1805
1177
|
let coords = this.getCartesianFromPixelTerrain(px);
|
|
1806
1178
|
if (coords) {
|
|
1807
1179
|
return this.ellipsoid.cartesianToLonLat(coords);
|
|
1808
1180
|
}
|
|
1809
1181
|
}
|
|
1810
|
-
|
|
1811
1182
|
/**
|
|
1812
1183
|
* Project cartesian coordinates to screen space.
|
|
1813
1184
|
* @public
|
|
1814
1185
|
* @param {Vec3} coords - Cartesian coordinates.
|
|
1815
1186
|
* @returns {Vec2} - Screen coordinates.
|
|
1816
1187
|
*/
|
|
1817
|
-
|
|
1818
|
-
return this.renderer
|
|
1188
|
+
getPixelFromCartesian(coords) {
|
|
1189
|
+
return this.renderer.activeCamera.project(coords);
|
|
1819
1190
|
}
|
|
1820
|
-
|
|
1821
1191
|
/**
|
|
1822
1192
|
* Project geodetic coordinates to screen space.
|
|
1823
1193
|
* @public
|
|
1824
1194
|
* @param {LonLat} lonlat - Geodetic coordinates.
|
|
1825
1195
|
* @returns {Vec2 | undefined} - Screen coordinates.
|
|
1826
1196
|
*/
|
|
1827
|
-
|
|
1197
|
+
getPixelFromLonLat(lonlat) {
|
|
1828
1198
|
let coords = this.ellipsoid.lonLatToCartesian(lonlat);
|
|
1829
1199
|
if (coords) {
|
|
1830
|
-
return this.renderer
|
|
1200
|
+
return this.renderer.activeCamera.project(coords);
|
|
1831
1201
|
}
|
|
1832
1202
|
}
|
|
1833
|
-
|
|
1834
1203
|
/**
|
|
1835
1204
|
* Returns distance from an active (screen) camera to the planet ellipsoid.
|
|
1836
1205
|
* @public
|
|
1837
1206
|
* @param {Vec2} px - Screen coordinates.
|
|
1838
1207
|
* @returns {number} -
|
|
1839
1208
|
*/
|
|
1840
|
-
|
|
1209
|
+
getDistanceFromPixelEllipsoid(px) {
|
|
1841
1210
|
let coords = this.getCartesianFromPixelEllipsoid(px);
|
|
1842
1211
|
if (coords) {
|
|
1843
|
-
return coords.distance(this.renderer
|
|
1212
|
+
return coords.distance(this.renderer.activeCamera.eye);
|
|
1844
1213
|
}
|
|
1845
1214
|
}
|
|
1846
|
-
|
|
1847
1215
|
/**
|
|
1848
1216
|
* Returns distance from active (screen) camera to the planet terrain by screen coordinates.
|
|
1849
1217
|
* @public
|
|
1850
1218
|
* @param {Vec2 | IBaseInputState} px - Screen coordinates.
|
|
1851
1219
|
* @returns {number | undefined} -
|
|
1852
1220
|
*/
|
|
1853
|
-
|
|
1854
|
-
if (this.terrain
|
|
1221
|
+
getDistanceFromPixel(px) {
|
|
1222
|
+
if (this.terrain.isEmpty) {
|
|
1855
1223
|
return this.getDistanceFromPixelEllipsoid(px) || 0;
|
|
1856
|
-
}
|
|
1857
|
-
|
|
1858
|
-
let r = this.renderer
|
|
1859
|
-
let cnv = r.handler
|
|
1860
|
-
|
|
1224
|
+
}
|
|
1225
|
+
else {
|
|
1226
|
+
let r = this.renderer;
|
|
1227
|
+
let cnv = r.handler.canvas;
|
|
1861
1228
|
let spx = px.x / cnv.width;
|
|
1862
1229
|
let spy = (cnv.height - px.y) / cnv.height;
|
|
1863
|
-
|
|
1864
1230
|
_tempPickingPix_[0] = _tempPickingPix_[1] = _tempPickingPix_[2] = 0.0;
|
|
1865
|
-
|
|
1866
1231
|
let dist = 0;
|
|
1867
|
-
|
|
1868
1232
|
r.readDistanceColor(spx, spy, _tempPickingPix_);
|
|
1869
|
-
|
|
1870
1233
|
dist = decodeFloatFromRGBAArr(_tempPickingPix_);
|
|
1871
|
-
|
|
1872
1234
|
if (!(_tempPickingPix_[0] || _tempPickingPix_[1] || _tempPickingPix_[2])) {
|
|
1873
1235
|
dist = this.getDistanceFromPixelEllipsoid(px) || 0;
|
|
1874
|
-
}
|
|
1875
|
-
|
|
1876
|
-
|
|
1236
|
+
}
|
|
1237
|
+
else if (dist < DEPTH_DISTANCE) {
|
|
1238
|
+
r.screenDepthFramebuffer.activate();
|
|
1877
1239
|
//if (r.screenDepthFramebuffer.isComplete()) {
|
|
1878
|
-
r.screenDepthFramebuffer
|
|
1240
|
+
r.screenDepthFramebuffer.readPixels(_tempDepthColor_, spx, spy);
|
|
1879
1241
|
let screenPos = new Vec4(spx * 2.0 - 1.0, spy * 2.0 - 1.0, (_tempDepthColor_[0] / 255.0) * 2.0 - 1.0, 1.0 * 2.0 - 1.0);
|
|
1880
1242
|
let viewPosition = this.camera.frustums[0].inverseProjectionMatrix.mulVec4(screenPos);
|
|
1881
|
-
let dir =
|
|
1882
|
-
dist = -(viewPosition.z / viewPosition.w) / dir.dot(r.activeCamera
|
|
1243
|
+
let dir = px.direction || r.activeCamera.unproject(px.x, px.y);
|
|
1244
|
+
dist = -(viewPosition.z / viewPosition.w) / dir.dot(r.activeCamera.getForward());
|
|
1883
1245
|
//}
|
|
1884
|
-
|
|
1885
|
-
r.screenDepthFramebuffer!.deactivate();
|
|
1246
|
+
r.screenDepthFramebuffer.deactivate();
|
|
1886
1247
|
}
|
|
1887
1248
|
return dist;
|
|
1888
1249
|
}
|
|
1889
1250
|
}
|
|
1890
|
-
|
|
1891
1251
|
/**
|
|
1892
1252
|
* Sets camera to the planet geographical extent.
|
|
1893
1253
|
* @public
|
|
1894
1254
|
* @param {Extent} extent - Geographical extent.
|
|
1895
1255
|
*/
|
|
1896
|
-
|
|
1256
|
+
viewExtent(extent) {
|
|
1897
1257
|
if (this.camera) {
|
|
1898
1258
|
this.camera.viewExtent(extent);
|
|
1899
|
-
}
|
|
1259
|
+
}
|
|
1260
|
+
else {
|
|
1900
1261
|
this._initialViewExtent = extent;
|
|
1901
1262
|
}
|
|
1902
1263
|
}
|
|
1903
|
-
|
|
1904
1264
|
/**
|
|
1905
1265
|
* Fits camera position for the view extent.
|
|
1906
1266
|
* @public
|
|
1907
1267
|
* @param {Array.<number>} extentArr - Geographical extent array, (exactly 4 entries)
|
|
1908
1268
|
* where index 0 - southwest longitude, 1 - latitude southwest, 2 - longitude northeast, 3 - latitude northeast.
|
|
1909
1269
|
*/
|
|
1910
|
-
|
|
1270
|
+
viewExtentArr(extentArr) {
|
|
1911
1271
|
this.viewExtent(new Extent(new LonLat(extentArr[0], extentArr[1]), new LonLat(extentArr[2], extentArr[3])));
|
|
1912
1272
|
}
|
|
1913
|
-
|
|
1914
1273
|
/**
|
|
1915
1274
|
* Gets current camera view extent.
|
|
1916
1275
|
* @public
|
|
1917
1276
|
* @returns {Extent} -
|
|
1918
1277
|
*/
|
|
1919
|
-
|
|
1278
|
+
getViewExtent() {
|
|
1920
1279
|
return this._viewExtent;
|
|
1921
1280
|
}
|
|
1922
|
-
|
|
1923
1281
|
/**
|
|
1924
1282
|
* Sets camera to the planet geographical position.
|
|
1925
1283
|
* @public
|
|
@@ -1927,10 +1285,9 @@ export class Planet extends RenderNode {
|
|
|
1927
1285
|
* @param {LonLat} [lookLonLat] - Viewpoint.
|
|
1928
1286
|
* @param {Vec3} [up] - Camera up vector.
|
|
1929
1287
|
*/
|
|
1930
|
-
|
|
1288
|
+
viewLonLat(lonlat, lookLonLat, up) {
|
|
1931
1289
|
this.camera.setLonLat(lonlat, lookLonLat, up);
|
|
1932
1290
|
}
|
|
1933
|
-
|
|
1934
1291
|
/**
|
|
1935
1292
|
* Fly active camera to the view extent.
|
|
1936
1293
|
* @public
|
|
@@ -1941,17 +1298,9 @@ export class Planet extends RenderNode {
|
|
|
1941
1298
|
* @param {Function} [startCallback] - Callback that calls before the flying begins.
|
|
1942
1299
|
* @param {Function} [completeCallback] - Callback that calls after flying when flying is finished.
|
|
1943
1300
|
*/
|
|
1944
|
-
|
|
1945
|
-
extent: Extent,
|
|
1946
|
-
height?: number,
|
|
1947
|
-
up?: Vec3,
|
|
1948
|
-
ampl?: number,
|
|
1949
|
-
completeCallback?: Function,
|
|
1950
|
-
startCallback?: Function
|
|
1951
|
-
) {
|
|
1301
|
+
flyExtent(extent, height, up, ampl, completeCallback, startCallback) {
|
|
1952
1302
|
this.camera.flyExtent(extent, height, up, ampl, completeCallback, startCallback);
|
|
1953
1303
|
}
|
|
1954
|
-
|
|
1955
1304
|
/**
|
|
1956
1305
|
* Fly camera to the point.
|
|
1957
1306
|
* @public
|
|
@@ -1963,18 +1312,9 @@ export class Planet extends RenderNode {
|
|
|
1963
1312
|
* @param {Function} [startCallback] - Call the function in the beginning
|
|
1964
1313
|
* @param {Function} [frameCallback] - Each frame callback
|
|
1965
1314
|
*/
|
|
1966
|
-
|
|
1967
|
-
cartesian: Vec3,
|
|
1968
|
-
look?: Vec3 | null,
|
|
1969
|
-
up?: Vec3 | null,
|
|
1970
|
-
ampl?: number,
|
|
1971
|
-
completeCallback?: Function | null,
|
|
1972
|
-
startCallback?: Function | null,
|
|
1973
|
-
frameCallback?: Function | null
|
|
1974
|
-
) {
|
|
1315
|
+
flyCartesian(cartesian, look, up, ampl, completeCallback, startCallback, frameCallback) {
|
|
1975
1316
|
this.camera.flyCartesian(cartesian, look, up, ampl, completeCallback, startCallback, frameCallback);
|
|
1976
1317
|
}
|
|
1977
|
-
|
|
1978
1318
|
/**
|
|
1979
1319
|
* Fly camera to the geodetic position.
|
|
1980
1320
|
* @public
|
|
@@ -1986,36 +1326,25 @@ export class Planet extends RenderNode {
|
|
|
1986
1326
|
* @param [startCallback]
|
|
1987
1327
|
* @param [frameCallback]
|
|
1988
1328
|
*/
|
|
1989
|
-
|
|
1990
|
-
lonlat: LonLat,
|
|
1991
|
-
look?: Vec3 | LonLat,
|
|
1992
|
-
up?: Vec3,
|
|
1993
|
-
ampl?: number,
|
|
1994
|
-
completeCallback?: Function,
|
|
1995
|
-
startCallback?: Function,
|
|
1996
|
-
frameCallback?: Function
|
|
1997
|
-
) {
|
|
1329
|
+
flyLonLat(lonlat, look, up, ampl, completeCallback, startCallback, frameCallback) {
|
|
1998
1330
|
this.camera.flyLonLat(lonlat, look, up, ampl, completeCallback, startCallback, frameCallback);
|
|
1999
1331
|
}
|
|
2000
|
-
|
|
2001
1332
|
/**
|
|
2002
1333
|
* Stop current flight.
|
|
2003
1334
|
* @public
|
|
2004
1335
|
*/
|
|
2005
|
-
|
|
1336
|
+
stopFlying() {
|
|
2006
1337
|
this.camera.stopFlying();
|
|
2007
1338
|
}
|
|
2008
|
-
|
|
2009
|
-
public override updateBillboardsTexCoords() {
|
|
1339
|
+
updateBillboardsTexCoords() {
|
|
2010
1340
|
for (let i = 0; i < this.entityCollections.length; i++) {
|
|
2011
1341
|
this.entityCollections[i].billboardHandler.refreshTexCoordsArr();
|
|
2012
1342
|
}
|
|
2013
|
-
|
|
2014
|
-
let readyCollections: Record<number, boolean> = {};
|
|
1343
|
+
let readyCollections = {};
|
|
2015
1344
|
for (let i = 0; i < this._layers.length; i++) {
|
|
2016
1345
|
let li = this._layers[i];
|
|
2017
1346
|
if (li instanceof Vector) {
|
|
2018
|
-
|
|
1347
|
+
li.each(function (e) {
|
|
2019
1348
|
if (e._entityCollection && !readyCollections[e._entityCollection.id]) {
|
|
2020
1349
|
e._entityCollection.billboardHandler.refreshTexCoordsArr();
|
|
2021
1350
|
readyCollections[e._entityCollection.id] = true;
|
|
@@ -2024,8 +1353,7 @@ export class Planet extends RenderNode {
|
|
|
2024
1353
|
}
|
|
2025
1354
|
}
|
|
2026
1355
|
}
|
|
2027
|
-
|
|
2028
|
-
public getEntityTerrainPoint(entity: Entity, res: Vec3) {
|
|
1356
|
+
getEntityTerrainPoint(entity, res) {
|
|
2029
1357
|
let n = this._renderedNodes, i = n.length;
|
|
2030
1358
|
while (i--) {
|
|
2031
1359
|
if (n[i].segment.isEntityInside(entity)) {
|
|
@@ -2033,83 +1361,75 @@ export class Planet extends RenderNode {
|
|
|
2033
1361
|
}
|
|
2034
1362
|
}
|
|
2035
1363
|
}
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
return new Promise<number>((resolve: Function) => {
|
|
1364
|
+
async getHeightDefault(lonLat) {
|
|
1365
|
+
return new Promise((resolve) => {
|
|
2039
1366
|
if (this.terrain) {
|
|
2040
|
-
this.terrain.getHeightAsync(lonLat.clone(), (alt
|
|
1367
|
+
this.terrain.getHeightAsync(lonLat.clone(), (alt) => {
|
|
2041
1368
|
resolve(alt);
|
|
2042
1369
|
});
|
|
2043
1370
|
}
|
|
2044
|
-
|
|
1371
|
+
else {
|
|
1372
|
+
resolve(0);
|
|
1373
|
+
}
|
|
2045
1374
|
});
|
|
2046
1375
|
}
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
return new Promise<number>((resolve: Function) => {
|
|
1376
|
+
async getHeightAboveELL(lonLat) {
|
|
1377
|
+
return new Promise((resolve) => {
|
|
2050
1378
|
if (this.terrain) {
|
|
2051
|
-
this.terrain.getHeightAsync(lonLat.clone(), (alt
|
|
2052
|
-
resolve(alt + this.terrain
|
|
1379
|
+
this.terrain.getHeightAsync(lonLat.clone(), (alt) => {
|
|
1380
|
+
resolve(alt + this.terrain.geoid.getHeightLonLat(lonLat));
|
|
2053
1381
|
});
|
|
2054
1382
|
}
|
|
2055
|
-
|
|
1383
|
+
else {
|
|
1384
|
+
resolve(0);
|
|
1385
|
+
}
|
|
2056
1386
|
});
|
|
2057
1387
|
}
|
|
2058
|
-
|
|
2059
|
-
public override onremove() {
|
|
1388
|
+
onremove() {
|
|
2060
1389
|
this.memClear();
|
|
2061
1390
|
this.quadTreeStrategy.destroyBranches();
|
|
2062
1391
|
this._renderedNodes = [];
|
|
2063
1392
|
}
|
|
2064
1393
|
}
|
|
2065
|
-
|
|
2066
|
-
const PLANET_EVENTS: PlanetEventsList = [
|
|
1394
|
+
const PLANET_EVENTS = [
|
|
2067
1395
|
/**
|
|
2068
1396
|
* Triggered before globe frame begins to render.
|
|
2069
1397
|
* @event og.scene.Planet#draw
|
|
2070
1398
|
*/
|
|
2071
1399
|
"draw",
|
|
2072
|
-
|
|
2073
1400
|
/**
|
|
2074
1401
|
* Triggered when layer has added to the planet.
|
|
2075
1402
|
* @event og.scene.Planet#layeradd
|
|
2076
1403
|
*/
|
|
2077
1404
|
"layeradd",
|
|
2078
|
-
|
|
2079
1405
|
/**
|
|
2080
1406
|
* Triggered when base layer changed.
|
|
2081
1407
|
* @event og.scene.Planet#baselayerchange
|
|
2082
1408
|
*/
|
|
2083
1409
|
"baselayerchange",
|
|
2084
|
-
|
|
2085
1410
|
/**
|
|
2086
1411
|
* Triggered when layer has removed from the planet.
|
|
2087
1412
|
* @event og.scene.Planet#layerremove
|
|
2088
1413
|
*/
|
|
2089
1414
|
"layerremove",
|
|
2090
|
-
|
|
2091
1415
|
/**
|
|
2092
1416
|
* Triggered when some layer visibility changed.
|
|
2093
1417
|
* @event og.scene.Planet#layervisibilitychange
|
|
2094
1418
|
*/
|
|
2095
1419
|
"layervisibilitychange",
|
|
2096
|
-
|
|
2097
1420
|
/**
|
|
2098
1421
|
* Triggered when all data is loaded
|
|
2099
1422
|
* @event og.scene.Planet#rendercompleted
|
|
2100
1423
|
*/
|
|
2101
1424
|
"rendercompleted",
|
|
2102
|
-
|
|
2103
1425
|
/**
|
|
2104
1426
|
* Triggered when all data is loaded
|
|
2105
1427
|
* @event og.scene.Planet#terraincompleted
|
|
2106
1428
|
*/
|
|
2107
1429
|
"terraincompleted",
|
|
2108
|
-
|
|
2109
1430
|
/**
|
|
2110
1431
|
* Triggered when layer data is laded
|
|
2111
1432
|
* @event og.scene.Planet#terraincompleted
|
|
2112
1433
|
*/
|
|
2113
1434
|
"layerloadend"
|
|
2114
1435
|
];
|
|
2115
|
-
|