@openglobus/og 0.19.3 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/css/og.css +18 -4
- package/lib/@openglobus/js/Clock.d.ts +106 -0
- package/lib/@openglobus/js/Deferred.d.ts +6 -0
- package/lib/@openglobus/js/Events.d.ts +90 -0
- package/lib/@openglobus/js/Extent.d.ts +145 -0
- package/lib/@openglobus/js/Globe.d.ts +134 -0
- package/lib/@openglobus/js/ImageCanvas.d.ts +128 -0
- package/lib/@openglobus/js/Lock.d.ts +15 -0
- package/lib/@openglobus/js/LonLat.d.ts +128 -0
- package/lib/@openglobus/js/Object3d.d.ts +64 -0
- package/lib/@openglobus/js/Popup.d.ts +46 -0
- package/lib/@openglobus/js/QueueArray.d.ts +16 -0
- package/lib/@openglobus/js/Rectangle.d.ts +76 -0
- package/lib/@openglobus/js/Stack.d.ts +20 -0
- package/lib/@openglobus/js/astro/astro.d.ts +39 -0
- package/lib/@openglobus/js/astro/earth.d.ts +8 -0
- package/lib/@openglobus/js/astro/jd.d.ts +234 -0
- package/lib/@openglobus/js/astro/orbit.d.ts +5 -0
- package/lib/@openglobus/js/astro/rotation.d.ts +2 -0
- package/lib/@openglobus/js/bv/Box.d.ts +32 -0
- package/lib/@openglobus/js/bv/Sphere.d.ts +37 -0
- package/lib/@openglobus/js/bv/index.d.ts +3 -0
- package/lib/@openglobus/js/camera/Camera.d.ts +314 -0
- package/lib/@openglobus/js/camera/Frustum.d.ts +139 -0
- package/lib/@openglobus/js/camera/PlanetCamera.d.ts +234 -0
- package/lib/@openglobus/js/camera/index.d.ts +3 -0
- package/lib/@openglobus/js/cons.d.ts +40 -0
- package/lib/@openglobus/js/control/Atmosphere.d.ts +16 -0
- package/lib/@openglobus/js/control/CompassButton.d.ts +16 -0
- package/lib/@openglobus/js/control/Control.d.ts +100 -0
- package/lib/@openglobus/js/control/DebugInfo.d.ts +25 -0
- package/lib/@openglobus/js/control/DrawingSwitcher.d.ts +13 -0
- package/lib/@openglobus/js/control/EarthCoordinates.d.ts +41 -0
- package/lib/@openglobus/js/control/EarthNavigation.d.ts +50 -0
- package/lib/@openglobus/js/control/GeoImageDragControl.d.ts +22 -0
- package/lib/@openglobus/js/control/KeyboardNavigation.d.ts +28 -0
- package/lib/@openglobus/js/control/LayerAnimation.d.ts +71 -0
- package/lib/@openglobus/js/control/LayerSwitcher.d.ts +36 -0
- package/lib/@openglobus/js/control/Lighting.d.ts +53 -0
- package/lib/@openglobus/js/control/MouseNavigation.d.ts +64 -0
- package/lib/@openglobus/js/control/MouseWheelZoomControl.d.ts +44 -0
- package/lib/@openglobus/js/control/RulerSwitcher.d.ts +17 -0
- package/lib/@openglobus/js/control/ScaleControl.d.ts +24 -0
- package/lib/@openglobus/js/control/SegmentBoundVisualization.d.ts +12 -0
- package/lib/@openglobus/js/control/ShowFps.d.ts +9 -0
- package/lib/@openglobus/js/control/SimpleNavigation.d.ts +25 -0
- package/lib/@openglobus/js/control/SimpleSkyBackground.d.ts +17 -0
- package/lib/@openglobus/js/control/Sun.d.ts +33 -0
- package/lib/@openglobus/js/control/ToggleWireframe.d.ts +14 -0
- package/lib/@openglobus/js/control/TouchNavigation.d.ts +52 -0
- package/lib/@openglobus/js/control/ZoomControl.d.ts +27 -0
- package/lib/@openglobus/js/control/drawing/DrawingControl.d.ts +12 -0
- package/lib/@openglobus/js/control/drawing/LineStringDrawingScene.d.ts +15 -0
- package/lib/@openglobus/js/control/drawing/PolygonDrawingScene.d.ts +98 -0
- package/lib/@openglobus/js/control/elevationProfile/ElevationProfile.d.ts +77 -0
- package/lib/@openglobus/js/control/elevationProfile/ElevationProfileButtonsView.d.ts +14 -0
- package/lib/@openglobus/js/control/elevationProfile/ElevationProfileControl.d.ts +33 -0
- package/lib/@openglobus/js/control/elevationProfile/ElevationProfileLegend.d.ts +20 -0
- package/lib/@openglobus/js/control/elevationProfile/ElevationProfileScene.d.ts +80 -0
- package/lib/@openglobus/js/control/elevationProfile/ElevationProfileView.d.ts +63 -0
- package/lib/@openglobus/js/control/elevationProfile/PointListDialog.d.ts +12 -0
- package/lib/@openglobus/js/control/heightRuler/HeightRuler.d.ts +7 -0
- package/lib/@openglobus/js/control/heightRuler/HeightRulerScene.d.ts +35 -0
- package/lib/@openglobus/js/control/heightRuler/HeightRulerSwitcher.d.ts +6 -0
- package/lib/@openglobus/js/control/index.d.ts +29 -0
- package/lib/@openglobus/js/control/ruler/Ruler.d.ts +13 -0
- package/lib/@openglobus/js/control/ruler/RulerScene.d.ts +88 -0
- package/lib/@openglobus/js/control/selection/Selection.d.ts +55 -0
- package/lib/@openglobus/js/control/selection/SelectionScene.d.ts +44 -0
- package/lib/@openglobus/js/control/timeline/TimelineControl.d.ts +18 -0
- package/lib/@openglobus/js/control/timeline/TimelineModel.d.ts +41 -0
- package/lib/@openglobus/js/control/timeline/TimelineView.d.ts +85 -0
- package/lib/@openglobus/js/control/timeline/timelineUtils.d.ts +12 -0
- package/lib/@openglobus/js/control/visibleExtent/drawnode.d.ts +7 -0
- package/lib/@openglobus/js/ellipsoid/Ellipsoid.d.ts +193 -0
- package/lib/@openglobus/js/ellipsoid/index.d.ts +3 -0
- package/lib/@openglobus/js/ellipsoid/wgs84.d.ts +6 -0
- package/lib/@openglobus/js/entity/BaseBillboard.d.ts +222 -0
- package/lib/@openglobus/js/entity/BaseBillboardHandler.d.ts +81 -0
- package/lib/@openglobus/js/entity/Billboard.d.ts +113 -0
- package/lib/@openglobus/js/entity/BillboardHandler.d.ts +15 -0
- package/lib/@openglobus/js/entity/Entity.d.ts +354 -0
- package/lib/@openglobus/js/entity/EntityCollection.d.ts +363 -0
- package/lib/@openglobus/js/entity/GeoObject.d.ts +152 -0
- package/lib/@openglobus/js/entity/GeoObjectHandler.d.ts +104 -0
- package/lib/@openglobus/js/entity/Geometry.d.ts +124 -0
- package/lib/@openglobus/js/entity/GeometryHandler.d.ts +84 -0
- package/lib/@openglobus/js/entity/Label.d.ts +214 -0
- package/lib/@openglobus/js/entity/LabelHandler.d.ts +65 -0
- package/lib/@openglobus/js/entity/LabelWorker.d.ts +15 -0
- package/lib/@openglobus/js/entity/PointCloud.d.ts +179 -0
- package/lib/@openglobus/js/entity/PointCloudHandler.d.ts +42 -0
- package/lib/@openglobus/js/entity/Polyline.d.ts +345 -0
- package/lib/@openglobus/js/entity/PolylineHandler.d.ts +22 -0
- package/lib/@openglobus/js/entity/Ray.d.ts +133 -0
- package/lib/@openglobus/js/entity/RayHandler.d.ts +70 -0
- package/lib/@openglobus/js/entity/Strip.d.ts +139 -0
- package/lib/@openglobus/js/entity/StripHandler.d.ts +42 -0
- package/lib/@openglobus/js/entity/index.d.ts +10 -0
- package/lib/@openglobus/js/index.d.ts +33 -0
- package/lib/@openglobus/js/input/KeyboardHandler.d.ts +33 -0
- package/lib/@openglobus/js/input/MouseHandler.d.ts +16 -0
- package/lib/@openglobus/js/input/TouchHandler.d.ts +11 -0
- package/lib/@openglobus/js/input/input.d.ts +3 -0
- package/lib/@openglobus/js/layer/BaseGeoImage.d.ts +145 -0
- package/lib/@openglobus/js/layer/Bing.d.ts +4 -0
- package/lib/@openglobus/js/layer/CanvasTiles.d.ts +103 -0
- package/lib/@openglobus/js/layer/GeoImage.d.ts +61 -0
- package/lib/@openglobus/js/layer/GeoTexture2d.d.ts +17 -0
- package/lib/@openglobus/js/layer/GeoVideo.d.ts +68 -0
- package/lib/@openglobus/js/layer/KML.d.ts +72 -0
- package/lib/@openglobus/js/layer/Layer.d.ts +415 -0
- package/lib/@openglobus/js/layer/Material.d.ts +34 -0
- package/lib/@openglobus/js/layer/OpenStreetMap.d.ts +4 -0
- package/lib/@openglobus/js/layer/Vector.d.ts +246 -0
- package/lib/@openglobus/js/layer/WMS.d.ts +75 -0
- package/lib/@openglobus/js/layer/XYZ.d.ts +148 -0
- package/lib/@openglobus/js/layer/index.d.ts +12 -0
- package/lib/@openglobus/js/light/LightSource.d.ts +174 -0
- package/lib/@openglobus/js/math/Line2.d.ts +11 -0
- package/lib/@openglobus/js/math/Line3.d.ts +28 -0
- package/lib/@openglobus/js/math/Mat3.d.ts +77 -0
- package/lib/@openglobus/js/math/Mat4.d.ts +195 -0
- package/lib/@openglobus/js/math/Plane.d.ts +20 -0
- package/lib/@openglobus/js/math/Quat.d.ts +373 -0
- package/lib/@openglobus/js/math/Ray.d.ts +76 -0
- package/lib/@openglobus/js/math/Vec2.d.ts +310 -0
- package/lib/@openglobus/js/math/Vec3.d.ts +472 -0
- package/lib/@openglobus/js/math/Vec4.d.ts +163 -0
- package/lib/@openglobus/js/math/coder.d.ts +51 -0
- package/lib/@openglobus/js/math/index.d.ts +11 -0
- package/lib/@openglobus/js/math.d.ts +266 -0
- package/lib/@openglobus/js/mercator.d.ts +92 -0
- package/lib/@openglobus/js/proj/EPSG3857.d.ts +9 -0
- package/lib/@openglobus/js/proj/EPSG4326.d.ts +9 -0
- package/lib/@openglobus/js/proj/Proj.d.ts +43 -0
- package/lib/@openglobus/js/quadTree/EPSG4326QuadTreeStrategy.d.ts +6 -0
- package/lib/@openglobus/js/quadTree/EarthQuadTreeStrategy.d.ts +9 -0
- package/lib/@openglobus/js/quadTree/EntityCollectionNode.d.ts +54 -0
- package/lib/@openglobus/js/quadTree/MarsQuadTreeStrategy.d.ts +11 -0
- package/lib/@openglobus/js/quadTree/Node.d.ts +80 -0
- package/lib/@openglobus/js/quadTree/QuadTreeStrategy.d.ts +28 -0
- package/lib/@openglobus/js/quadTree/Wgs84QuadTreeStrategy.d.ts +6 -0
- package/lib/@openglobus/js/quadTree/index.d.ts +12 -0
- package/lib/@openglobus/js/quadTree/quadTree.d.ts +40 -0
- package/lib/@openglobus/js/renderer/Renderer.d.ts +319 -0
- package/lib/@openglobus/js/renderer/RendererEvents.d.ts +240 -0
- package/lib/@openglobus/js/scene/Axes.d.ts +12 -0
- package/lib/@openglobus/js/scene/BaseNode.d.ts +61 -0
- package/lib/@openglobus/js/scene/Planet.d.ts +652 -0
- package/lib/@openglobus/js/scene/RenderNode.d.ts +150 -0
- package/lib/@openglobus/js/scene/SkyBox.d.ts +13 -0
- package/lib/@openglobus/js/scene/index.d.ts +5 -0
- package/lib/@openglobus/js/segment/Segment.d.ts +288 -0
- package/lib/@openglobus/js/segment/SegmentLonLat.d.ts +44 -0
- package/lib/@openglobus/js/segment/SegmentLonLatWgs84.d.ts +10 -0
- package/lib/@openglobus/js/segment/Slice.d.ts +13 -0
- package/lib/@openglobus/js/segment/segmentHelper.d.ts +18 -0
- package/lib/@openglobus/js/shaders/atmos.d.ts +4 -0
- package/lib/@openglobus/js/shaders/billboard.d.ts +3 -0
- package/lib/@openglobus/js/shaders/bloom.d.ts +2 -0
- package/lib/@openglobus/js/shaders/blur.d.ts +3 -0
- package/lib/@openglobus/js/shaders/depth.d.ts +2 -0
- package/lib/@openglobus/js/shaders/drawnode.d.ts +8 -0
- package/lib/@openglobus/js/shaders/geoObject.d.ts +3 -0
- package/lib/@openglobus/js/shaders/label.d.ts +4 -0
- package/lib/@openglobus/js/shaders/lumFilter.d.ts +2 -0
- package/lib/@openglobus/js/shaders/pointCloud.d.ts +2 -0
- package/lib/@openglobus/js/shaders/polyline.d.ts +3 -0
- package/lib/@openglobus/js/shaders/ray.d.ts +2 -0
- package/lib/@openglobus/js/shaders/screenFrame.d.ts +2 -0
- package/lib/@openglobus/js/shaders/skybox.d.ts +2 -0
- package/lib/@openglobus/js/shaders/toneMapping.d.ts +2 -0
- package/lib/@openglobus/js/shaders/utils.d.ts +1 -0
- package/lib/@openglobus/js/terrain/BilTerrain.d.ts +18 -0
- package/lib/@openglobus/js/terrain/EmptyTerrain.d.ts +113 -0
- package/lib/@openglobus/js/terrain/Geoid.d.ts +33 -0
- package/lib/@openglobus/js/terrain/GlobusRgbTerrain.d.ts +6 -0
- package/lib/@openglobus/js/terrain/GlobusTerrain.d.ts +137 -0
- package/lib/{js/terrain/MapboxTerrain.d.ts → @openglobus/js/terrain/RgbTerrain.d.ts} +6 -5
- package/lib/@openglobus/js/terrain/index.d.ts +6 -0
- package/lib/@openglobus/js/ui/Button.d.ts +32 -0
- package/lib/@openglobus/js/ui/ButtonGroup.d.ts +16 -0
- package/lib/@openglobus/js/ui/Color.d.ts +22 -0
- package/lib/@openglobus/js/ui/Dialog.d.ts +55 -0
- package/lib/@openglobus/js/ui/Slider.d.ts +38 -0
- package/lib/@openglobus/js/ui/ToggleButton.d.ts +20 -0
- package/lib/@openglobus/js/ui/View.d.ts +37 -0
- package/lib/@openglobus/js/ui/icons.d.ts +1 -0
- package/lib/@openglobus/js/utils/BaseWorker.d.ts +14 -0
- package/lib/@openglobus/js/utils/FontAtlas.d.ts +82 -0
- package/lib/@openglobus/js/utils/GeoImageCreator.d.ts +34 -0
- package/lib/@openglobus/js/utils/ImagesCacheManager.d.ts +22 -0
- package/lib/@openglobus/js/utils/Loader.d.ts +63 -0
- package/lib/@openglobus/js/utils/NormalMapCreator.d.ts +52 -0
- package/lib/@openglobus/js/utils/PlainSegmentWorker.d.ts +24 -0
- package/lib/@openglobus/js/utils/TerrainWorker.d.ts +28 -0
- package/lib/@openglobus/js/utils/TextureAtlas.d.ts +113 -0
- package/lib/@openglobus/js/utils/VectorTileCreator.d.ts +18 -0
- package/lib/@openglobus/js/utils/colorTable.d.ts +3 -0
- package/lib/@openglobus/js/utils/earcut.d.ts +7 -0
- package/lib/@openglobus/js/utils/objParser.d.ts +24 -0
- package/lib/@openglobus/js/utils/shared.d.ts +263 -0
- package/lib/@openglobus/js/utils/units.d.ts +16 -0
- package/lib/@openglobus/js/webgl/BaseFramebuffer.d.ts +53 -0
- package/lib/@openglobus/js/webgl/Framebuffer.d.ts +69 -0
- package/lib/@openglobus/js/webgl/Handler.d.ts +473 -0
- package/lib/@openglobus/js/webgl/Multisample.d.ts +27 -0
- package/lib/@openglobus/js/webgl/Program.d.ts +159 -0
- package/lib/@openglobus/js/webgl/ProgramController.d.ts +86 -0
- package/lib/@openglobus/js/webgl/index.d.ts +6 -0
- package/lib/@openglobus/js/webgl/types.d.ts +9 -0
- package/lib/@openglobus/js/webgl/variableHandlers.d.ts +22 -0
- package/lib/@openglobus/og.css +1 -1
- package/lib/@openglobus/og.esm.js +1 -1
- package/lib/@openglobus/og.esm.js.map +1 -1
- package/lib/@openglobus/og.umd.js +1 -1
- package/lib/@openglobus/og.umd.js.map +1 -1
- package/lib/js/Extent.js +2 -2
- package/lib/js/Globe.d.ts +1 -1
- package/lib/js/Object3d.d.ts +16 -1
- package/lib/js/Object3d.js +66 -1
- package/lib/js/astro/jd.js +26 -26
- package/lib/js/camera/Frustum.d.ts +1 -1
- package/lib/js/camera/Frustum.js +3 -2
- package/lib/js/control/DebugInfo.js +19 -18
- package/lib/js/control/Lighting.d.ts +4 -0
- package/lib/js/control/Lighting.js +51 -12
- package/lib/js/control/SimpleSkyBackground.d.ts +2 -0
- package/lib/js/control/SimpleSkyBackground.js +13 -3
- package/lib/js/control/drawing/PolygonDrawingScene.js +2 -2
- package/lib/js/control/timeline/timelineUtils.js +32 -32
- package/lib/js/control/visibleExtent/drawnode.js +1 -1
- package/lib/js/entity/GeoObject.d.ts +20 -6
- package/lib/js/entity/GeoObject.js +44 -4
- package/lib/js/entity/GeoObjectHandler.d.ts +6 -1
- package/lib/js/entity/GeoObjectHandler.js +58 -6
- package/lib/js/entity/Geometry.d.ts +24 -11
- package/lib/js/entity/Geometry.js +17 -9
- package/lib/js/entity/GeometryHandler.js +5 -5
- package/lib/js/entity/Label.d.ts +7 -0
- package/lib/js/entity/Label.js +11 -0
- package/lib/js/entity/Polyline.d.ts +15 -7
- package/lib/js/entity/Polyline.js +54 -6
- package/lib/js/entity/Strip.d.ts +12 -0
- package/lib/js/entity/Strip.js +16 -0
- package/lib/js/entity/StripHandler.js +1 -1
- package/lib/js/entity/index.d.ts +10 -11
- package/lib/js/entity/index.js +10 -11
- package/lib/js/index.d.ts +5 -5
- package/lib/js/index.js +5 -5
- package/lib/js/layer/Bing.d.ts +4 -0
- package/lib/js/layer/Bing.js +40 -0
- package/lib/js/layer/GeoImage.d.ts +1 -1
- package/lib/js/layer/GeoVideo.d.ts +1 -1
- package/lib/js/layer/Layer.d.ts +1 -1
- package/lib/js/layer/Layer.js +2 -2
- package/lib/js/layer/OpenStreetMap.d.ts +4 -0
- package/lib/js/layer/OpenStreetMap.js +19 -0
- package/lib/js/layer/Vector.d.ts +3 -0
- package/lib/js/layer/Vector.js +3 -3
- package/lib/js/layer/index.d.ts +12 -11
- package/lib/js/layer/index.js +12 -11
- package/lib/js/math/Mat4.js +18 -17
- package/lib/js/mercator.js +2 -1
- package/lib/js/quadTree/EPSG4326QuadTreeStrategy.js +4 -5
- package/lib/js/quadTree/EarthQuadTreeStrategy.d.ts +3 -0
- package/lib/js/quadTree/EarthQuadTreeStrategy.js +40 -5
- package/lib/js/quadTree/EntityCollectionNode.d.ts +2 -2
- package/lib/js/quadTree/EntityCollectionNode.js +13 -14
- package/lib/js/quadTree/MarsQuadTreeStrategy.d.ts +5 -0
- package/lib/js/quadTree/MarsQuadTreeStrategy.js +31 -5
- package/lib/js/quadTree/Node.d.ts +2 -1
- package/lib/js/quadTree/Node.js +38 -28
- package/lib/js/quadTree/QuadTreeStrategy.d.ts +3 -0
- package/lib/js/quadTree/QuadTreeStrategy.js +17 -0
- package/lib/js/quadTree/Wgs84QuadTreeStrategy.js +3 -3
- package/lib/js/renderer/Renderer.js +1 -0
- package/lib/js/scene/Axes.js +4 -4
- package/lib/js/scene/Planet.js +6 -4
- package/lib/js/segment/Segment.d.ts +12 -9
- package/lib/js/segment/Segment.js +47 -24
- package/lib/js/segment/SegmentLonLat.d.ts +1 -5
- package/lib/js/segment/SegmentLonLat.js +8 -100
- package/lib/js/segment/SegmentLonLatWgs84.js +5 -3
- package/lib/js/shaders/billboard.js +4 -4
- package/lib/js/shaders/drawnode.js +16 -19
- package/lib/js/shaders/geoObject.js +10 -11
- package/lib/js/shaders/ray.js +7 -3
- package/lib/js/terrain/BilTerrain.d.ts +1 -1
- package/lib/js/terrain/BilTerrain.js +7 -6
- package/lib/js/terrain/EmptyTerrain.d.ts +7 -0
- package/lib/js/terrain/EmptyTerrain.js +7 -0
- package/lib/js/terrain/GlobusRgbTerrain.d.ts +6 -0
- package/lib/js/terrain/GlobusRgbTerrain.js +25 -0
- package/lib/js/terrain/GlobusTerrain.d.ts +5 -5
- package/lib/js/terrain/GlobusTerrain.js +35 -30
- package/lib/js/terrain/RgbTerrain.d.ts +22 -0
- package/lib/js/terrain/RgbTerrain.js +415 -0
- package/lib/js/terrain/index.d.ts +3 -2
- package/lib/js/terrain/index.js +3 -2
- package/lib/js/ui/Color.d.ts +22 -0
- package/lib/js/ui/Color.js +58 -0
- package/lib/js/utils/GeoImageCreator.js +1 -1
- package/lib/js/utils/NormalMapCreator.js +1 -1
- package/lib/js/utils/VectorTileCreator.js +3 -3
- package/lib/js/utils/objParser.js +3 -3
- package/lib/js/utils/shared.d.ts +3 -9
- package/lib/js/utils/shared.js +24 -9
- package/package.json +26 -18
- package/lib/js/terrain/MapboxTerrain.js +0 -298
package/lib/js/quadTree/Node.js
CHANGED
|
@@ -19,6 +19,7 @@ let BOUNDS = {
|
|
|
19
19
|
xmin: 0.0, ymin: 0.0, zmin: 0.0,
|
|
20
20
|
xmax: 0.0, ymax: 0.0, zmax: 0.0
|
|
21
21
|
};
|
|
22
|
+
let __staticCounter = 0;
|
|
22
23
|
/**
|
|
23
24
|
* Quad tree planet segment node.
|
|
24
25
|
* @constructor
|
|
@@ -31,13 +32,14 @@ let BOUNDS = {
|
|
|
31
32
|
* @param {Extent} extent - Planet segment extent.
|
|
32
33
|
*/
|
|
33
34
|
class Node {
|
|
34
|
-
constructor(SegmentPrototype, planet, partId, parent,
|
|
35
|
+
constructor(SegmentPrototype, planet, partId, parent, tileZoom, extent) {
|
|
35
36
|
planet._createdNodesCount++;
|
|
37
|
+
this.__id = __staticCounter++;
|
|
36
38
|
this.SegmentPrototype = SegmentPrototype;
|
|
37
39
|
this.planet = planet;
|
|
38
40
|
this.parentNode = parent;
|
|
39
41
|
this.partId = partId;
|
|
40
|
-
this.nodeId = partId +
|
|
42
|
+
this.nodeId = partId + (parent ? parent.nodeId * 4 + 1 : 0);
|
|
41
43
|
this.state = null;
|
|
42
44
|
this.prevState = null;
|
|
43
45
|
this.appliedTerrainNodeId = -1;
|
|
@@ -63,13 +65,12 @@ class Node {
|
|
|
63
65
|
const size_y = ext.getHeight() * 0.5;
|
|
64
66
|
const ne = ext.northEast;
|
|
65
67
|
const sw = ext.southWest;
|
|
66
|
-
const id = this.nodeId * 4 + 1;
|
|
67
68
|
const c = new LonLat(sw.lon + size_x, sw.lat + size_y);
|
|
68
69
|
const nd = this.nodes;
|
|
69
|
-
nd[NW] = new Node(this.SegmentPrototype, p, NW, this,
|
|
70
|
-
nd[NE] = new Node(this.SegmentPrototype, p, NE, this,
|
|
71
|
-
nd[SW] = new Node(this.SegmentPrototype, p, SW, this,
|
|
72
|
-
nd[SE] = new Node(this.SegmentPrototype, p, SE, this,
|
|
70
|
+
nd[NW] = new Node(this.SegmentPrototype, p, NW, this, z, new Extent(new LonLat(sw.lon, sw.lat + size_y), new LonLat(sw.lon + size_x, ne.lat)));
|
|
71
|
+
nd[NE] = new Node(this.SegmentPrototype, p, NE, this, z, new Extent(c, new LonLat(ne.lon, ne.lat)));
|
|
72
|
+
nd[SW] = new Node(this.SegmentPrototype, p, SW, this, z, new Extent(new LonLat(sw.lon, sw.lat), c));
|
|
73
|
+
nd[SE] = new Node(this.SegmentPrototype, p, SE, this, z, new Extent(new LonLat(sw.lon + size_x, sw.lat), new LonLat(ne.lon, sw.lat + size_y)));
|
|
73
74
|
}
|
|
74
75
|
createBounds() {
|
|
75
76
|
let seg = this.segment;
|
|
@@ -155,9 +156,6 @@ class Node {
|
|
|
155
156
|
}
|
|
156
157
|
this.state = WALKTHROUGH;
|
|
157
158
|
this.clearNeighbors();
|
|
158
|
-
// for (let i = 0; i < this._fadingNodes.length; i++) {
|
|
159
|
-
// this._fadingNodes[i].neighbors && this._fadingNodes[i].clearNeighbors();
|
|
160
|
-
// }
|
|
161
159
|
let seg = this.segment, planet = this.planet;
|
|
162
160
|
this._cameraInside = false;
|
|
163
161
|
// Search a node which the camera is flying over.
|
|
@@ -207,7 +205,7 @@ class Node {
|
|
|
207
205
|
let altVis = seg.tileZoom < 2 || seg.tileZoom > 19 ||
|
|
208
206
|
/* Could be replaced with camera frustum always looking down check,
|
|
209
207
|
and not to go througn nodes from the oppositeside of the globe*/
|
|
210
|
-
(seg.tileZoom <
|
|
208
|
+
(seg.tileZoom < 6 && !seg.terrainReady);
|
|
211
209
|
altVis = altVis ||
|
|
212
210
|
cam.eye.distance2(seg._sw) < horizonDist ||
|
|
213
211
|
cam.eye.distance2(seg._nw) < horizonDist ||
|
|
@@ -316,7 +314,7 @@ class Node {
|
|
|
316
314
|
pn = pn.parentNode;
|
|
317
315
|
}
|
|
318
316
|
// not sure it's necessary here
|
|
319
|
-
|
|
317
|
+
this.parentNode.whileTerrainLoading();
|
|
320
318
|
this._fadingNodes.push(this.parentNode);
|
|
321
319
|
this.parentNode.segment._transitionOpacity = 2.0;
|
|
322
320
|
this.parentNode.segment._transitionTimestamp = timestamp;
|
|
@@ -327,7 +325,7 @@ class Node {
|
|
|
327
325
|
for (let i = 0; i < this.nodes.length; i++) {
|
|
328
326
|
let ni = this.nodes[i];
|
|
329
327
|
// not sure it's necessary here
|
|
330
|
-
|
|
328
|
+
ni.whileTerrainLoading();
|
|
331
329
|
this._fadingNodes.push(ni);
|
|
332
330
|
ni.segment._transitionOpacity = 2.0;
|
|
333
331
|
ni.segment._transitionTimestamp = timestamp;
|
|
@@ -341,12 +339,14 @@ class Node {
|
|
|
341
339
|
}
|
|
342
340
|
clearNeighbors() {
|
|
343
341
|
//this.sideSizeLog2[0] = this.sideSizeLog2[1] = this.sideSizeLog2[2] = this.sideSizeLog2[3] = Math.log2(this.segment.gridSize);
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
342
|
+
if (this.neighbors) {
|
|
343
|
+
// @ts-ignore
|
|
344
|
+
this.neighbors[0] = this.neighbors[1] = this.neighbors[2] = this.neighbors[3] = null;
|
|
345
|
+
this.neighbors[0] = [];
|
|
346
|
+
this.neighbors[1] = [];
|
|
347
|
+
this.neighbors[2] = [];
|
|
348
|
+
this.neighbors[3] = [];
|
|
349
|
+
}
|
|
350
350
|
}
|
|
351
351
|
_refreshTransitionOpacity() {
|
|
352
352
|
if (this._fadingNodes.length === 0) {
|
|
@@ -358,6 +358,13 @@ class Node {
|
|
|
358
358
|
this._fadingNodes = [];
|
|
359
359
|
}
|
|
360
360
|
else {
|
|
361
|
+
// Looks like a bug fix for suddenly empty spaces
|
|
362
|
+
for (let i = 0; i < this._fadingNodes.length; i++) {
|
|
363
|
+
if (this.segment._transitionOpacity < 1.0 && this._fadingNodes[i].segment._transitionOpacity === 0) {
|
|
364
|
+
this._fadingNodes[i].segment._transitionOpacity = 0;
|
|
365
|
+
this.segment._transitionOpacity = 1.0;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
361
368
|
this.segment.increaseTransitionOpacity();
|
|
362
369
|
}
|
|
363
370
|
}
|
|
@@ -457,23 +464,25 @@ class Node {
|
|
|
457
464
|
else if (a_sw_lat === b_ne_lat && ((a_sw_lon >= b_sw_lon && a_ne_lon <= b_ne_lon) || (a_sw_lon <= b_sw_lon && a_ne_lon >= b_ne_lon))) {
|
|
458
465
|
return S;
|
|
459
466
|
}
|
|
460
|
-
|
|
467
|
+
// World edge 180 to -180
|
|
468
|
+
else if (bs.tileX === 0 && b_sw_lon === -a_ne_lon && ((a_ne_lat <= b_ne_lat && a_sw_lat >= b_sw_lat) || (a_ne_lat >= b_ne_lat && a_sw_lat <= b_sw_lat))) {
|
|
461
469
|
return E;
|
|
462
470
|
}
|
|
463
|
-
else if (as.tileX === 0 &&
|
|
471
|
+
else if (as.tileX === 0 && a_sw_lon === -b_ne_lon && ((a_ne_lat <= b_ne_lat && a_sw_lat >= b_sw_lat) || (a_ne_lat >= b_ne_lat && a_sw_lat <= b_sw_lat))) {
|
|
464
472
|
return W;
|
|
465
473
|
}
|
|
466
474
|
}
|
|
467
|
-
|
|
475
|
+
// @todo: replace to the default strategy
|
|
476
|
+
if (as._tileGroup === TILEGROUP_COMMON && bs._tileGroup === TILEGROUP_NORTH && as.tileY === 0 && bs.tileY === bs.powTileZoom /*Math.pow(2, bs.tileZoom)*/ - 1 && ((a_sw_lon >= b_sw_lon && a_ne_lon <= b_ne_lon) || (a_sw_lon <= b_sw_lon && a_ne_lon >= b_ne_lon))) {
|
|
468
477
|
return N;
|
|
469
478
|
}
|
|
470
|
-
else if (as._tileGroup ===
|
|
471
|
-
return N;
|
|
472
|
-
}
|
|
473
|
-
else if (bs._tileGroup === TILEGROUP_NORTH && as._tileGroup === TILEGROUP_COMMON && as.tileY === Math.pow(2, as.tileZoom) - 1 && bs.tileY === 0 && ((a_sw_lon >= b_sw_lon && a_ne_lon <= b_ne_lon) || (a_sw_lon <= b_sw_lon && a_ne_lon >= b_ne_lon))) {
|
|
479
|
+
else if (as._tileGroup === TILEGROUP_COMMON && bs._tileGroup === TILEGROUP_SOUTH && as.tileY === as.powTileZoom /*Math.pow(2, as.tileZoom)*/ - 1 && bs.tileY === 0 && ((a_sw_lon >= b_sw_lon && a_ne_lon <= b_ne_lon) || (a_sw_lon <= b_sw_lon && a_ne_lon >= b_ne_lon))) {
|
|
474
480
|
return S;
|
|
475
481
|
}
|
|
476
|
-
else if (as._tileGroup ===
|
|
482
|
+
else if (as._tileGroup === TILEGROUP_SOUTH && bs._tileGroup === TILEGROUP_COMMON && as.tileY === 0 && bs.tileY === bs.powTileZoom /*Math.pow(2, bs.tileZoom)*/ - 1 && ((a_sw_lon >= b_sw_lon && a_ne_lon <= b_ne_lon) || (a_sw_lon <= b_sw_lon && a_ne_lon >= b_ne_lon))) {
|
|
483
|
+
return N;
|
|
484
|
+
}
|
|
485
|
+
else if (as._tileGroup === TILEGROUP_NORTH && bs._tileGroup === TILEGROUP_COMMON && as.tileY === as.powTileZoom /*Math.pow(2, as.tileZoom)*/ - 1 && bs.tileY === 0 && ((a_sw_lon >= b_sw_lon && a_ne_lon <= b_ne_lon) || (a_sw_lon <= b_sw_lon && a_ne_lon >= b_ne_lon))) {
|
|
477
486
|
return S;
|
|
478
487
|
}
|
|
479
488
|
}
|
|
@@ -506,7 +515,8 @@ class Node {
|
|
|
506
515
|
}
|
|
507
516
|
}
|
|
508
517
|
if (pn.segment.terrainReady && this.appliedTerrainNodeId !== pn.nodeId) {
|
|
509
|
-
let dZ2 = 2 << (seg.tileZoom - pn.segment.tileZoom - 1),
|
|
518
|
+
let dZ2 = 2 << (seg.tileZoom - pn.segment.tileZoom - 1), // 2 * Math.pow(2, dZ-1)
|
|
519
|
+
offsetX = seg.tileX - pn.segment.tileX * dZ2, offsetY = seg.tileY - pn.segment.tileY * dZ2;
|
|
510
520
|
const pseg = pn.segment;
|
|
511
521
|
let tempVertices, tempVerticesHigh, tempVerticesLow, noDataVertices;
|
|
512
522
|
this.appliedTerrainNodeId = pn.nodeId;
|
|
@@ -2,6 +2,7 @@ import { Layer } from "../layer/Layer";
|
|
|
2
2
|
import { Node } from "../quadTree/Node";
|
|
3
3
|
import { Planet } from "../scene/Planet";
|
|
4
4
|
import { Proj } from "../proj/Proj";
|
|
5
|
+
import { LonLat } from "../LonLat";
|
|
5
6
|
export declare class QuadTreeStrategy {
|
|
6
7
|
name: string;
|
|
7
8
|
projection: Proj;
|
|
@@ -22,4 +23,6 @@ export declare class QuadTreeStrategy {
|
|
|
22
23
|
collectRenderNodes(): void;
|
|
23
24
|
clear(): void;
|
|
24
25
|
get quadTreeList(): Node[];
|
|
26
|
+
getTileXY(lonLat: LonLat, zoom: number): [number, number, number, number];
|
|
27
|
+
getLonLatTileOffset(lonLat: LonLat, x: number, y: number, z: number, gridSize: number): [number, number];
|
|
25
28
|
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { EPSG3857 } from "../proj/EPSG3857";
|
|
2
|
+
import { getTileCellExtent, getTileCellIndex, TILEGROUP_COMMON } from "../segment/Segment";
|
|
3
|
+
import { Extent } from "../Extent";
|
|
2
4
|
export class QuadTreeStrategy {
|
|
3
5
|
constructor(planet, name = "", proj = EPSG3857) {
|
|
4
6
|
this.name = name;
|
|
@@ -66,4 +68,19 @@ export class QuadTreeStrategy {
|
|
|
66
68
|
get quadTreeList() {
|
|
67
69
|
return this._quadTreeList;
|
|
68
70
|
}
|
|
71
|
+
getTileXY(lonLat, zoom) {
|
|
72
|
+
let z = zoom, x = -1, y = -1, pz = (1 << z);
|
|
73
|
+
x = getTileCellIndex(lonLat.lon, 360 / pz, -180);
|
|
74
|
+
y = getTileCellIndex(lonLat.lat, 180 / pz, 90);
|
|
75
|
+
return [x, y, z, TILEGROUP_COMMON];
|
|
76
|
+
}
|
|
77
|
+
getLonLatTileOffset(lonLat, x, y, z, gridSize) {
|
|
78
|
+
let coords = lonLat;
|
|
79
|
+
let extent = new Extent();
|
|
80
|
+
let worldExtent = Extent.createFromArray([-180, -90, 180, 90]);
|
|
81
|
+
extent = getTileCellExtent(x, y, z, worldExtent);
|
|
82
|
+
let sizeImgW = extent.getWidth() / (gridSize - 1), sizeImgH = extent.getHeight() / (gridSize - 1);
|
|
83
|
+
let i = gridSize - Math.ceil((coords.lat - extent.southWest.lat) / sizeImgH) - 1, j = Math.floor((coords.lon - extent.southWest.lon) / sizeImgW);
|
|
84
|
+
return [i, j];
|
|
85
|
+
}
|
|
69
86
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as quadTree from "../quadTree/quadTree";
|
|
2
1
|
import { Extent } from "../Extent";
|
|
3
2
|
import { EPSG4326 } from "../proj/EPSG4326";
|
|
4
3
|
import { Node } from "../quadTree/Node";
|
|
@@ -9,7 +8,8 @@ export class Wgs84QuadTreeStrategy extends QuadTreeStrategy {
|
|
|
9
8
|
super(planet, "wgs84", EPSG4326);
|
|
10
9
|
}
|
|
11
10
|
init() {
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
this._quadTreeList = [
|
|
12
|
+
new Node(SegmentLonLatWgs84, this.planet, 0, null, 0, Extent.createFromArray([-180, -90, 180, 90]))
|
|
13
|
+
];
|
|
14
14
|
}
|
|
15
15
|
}
|
package/lib/js/scene/Axes.js
CHANGED
|
@@ -43,13 +43,13 @@ class Axes extends RenderNode {
|
|
|
43
43
|
}
|
|
44
44
|
createAxesBuffer(gridSize) {
|
|
45
45
|
const vertices = [
|
|
46
|
-
0.0, 0.0, 0.0, gridSize - 1, 0.0, 0.0,
|
|
47
|
-
0.0, 0.0, 0.0, 0.0, gridSize - 1, 0.0,
|
|
46
|
+
0.0, 0.0, 0.0, gridSize - 1, 0.0, 0.0, // x - R
|
|
47
|
+
0.0, 0.0, 0.0, 0.0, gridSize - 1, 0.0, // y - B
|
|
48
48
|
0.0, 0.0, 0.0, 0.0, 0.0, gridSize - 1 // z - G
|
|
49
49
|
];
|
|
50
50
|
const colors = [
|
|
51
|
-
1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0,
|
|
52
|
-
0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0,
|
|
51
|
+
1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, // x - R
|
|
52
|
+
0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, // y - B
|
|
53
53
|
0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0 // z - G
|
|
54
54
|
];
|
|
55
55
|
this.axesBuffer = this.renderer.handler.createArrayBuffer(new Float32Array(vertices), 3, 6);
|
package/lib/js/scene/Planet.js
CHANGED
|
@@ -63,8 +63,8 @@ export class Planet extends RenderNode {
|
|
|
63
63
|
let isEq = this.terrain.equalizeVertices;
|
|
64
64
|
for (let j = 0, len = currentNode._fadingNodes.length; j < len; j++) {
|
|
65
65
|
let f = currentNode._fadingNodes[j].segment;
|
|
66
|
-
if (this._fadingNodes.has(currentNode._fadingNodes[0].
|
|
67
|
-
nodes.set(f.node.
|
|
66
|
+
if (this._fadingNodes.has(currentNode._fadingNodes[0].__id) && !nodes.has(f.node.__id)) {
|
|
67
|
+
nodes.set(f.node.__id, true);
|
|
68
68
|
if (f._transitionOpacity < 1.0) {
|
|
69
69
|
outTransparentSegments.push(f);
|
|
70
70
|
}
|
|
@@ -88,8 +88,8 @@ export class Planet extends RenderNode {
|
|
|
88
88
|
gl.disable(gl.DEPTH_TEST);
|
|
89
89
|
for (let j = 0, len = currentNode._fadingNodes.length; j < len; j++) {
|
|
90
90
|
let f = currentNode._fadingNodes[j].segment;
|
|
91
|
-
if (this._fadingNodes.has(currentNode._fadingNodes[0].
|
|
92
|
-
nodes.set(f.node.
|
|
91
|
+
if (this._fadingNodes.has(currentNode._fadingNodes[0].__id) && !nodes.has(f.node.__id)) {
|
|
92
|
+
nodes.set(f.node.__id, true);
|
|
93
93
|
if (isFirstPass) {
|
|
94
94
|
isEq && f.equalize();
|
|
95
95
|
f.readyToEngage && f.engage();
|
|
@@ -803,6 +803,7 @@ export class Planet extends RenderNode {
|
|
|
803
803
|
ri._collectFadingNodes();
|
|
804
804
|
ri._refreshTransitionOpacity();
|
|
805
805
|
if (ri.segment._transitionOpacity >= 1.0) {
|
|
806
|
+
ri.clearNeighbors();
|
|
806
807
|
ri.getRenderedNodesNeighbors(opaqueNodes);
|
|
807
808
|
opaqueNodes.push(ri);
|
|
808
809
|
}
|
|
@@ -810,6 +811,7 @@ export class Planet extends RenderNode {
|
|
|
810
811
|
for (let j = 0; j < ri._fadingNodes.length; j++) {
|
|
811
812
|
let rij = ri._fadingNodes[j];
|
|
812
813
|
if (rij.segment && rij.segment._transitionOpacity >= 1.0) {
|
|
814
|
+
rij.clearNeighbors();
|
|
813
815
|
rij.getRenderedNodesNeighbors(opaqueNodes);
|
|
814
816
|
opaqueNodes.push(rij);
|
|
815
817
|
}
|
|
@@ -16,9 +16,12 @@ import { NumberArray6, Sphere } from "../bv/Sphere";
|
|
|
16
16
|
import { Slice } from "./Slice";
|
|
17
17
|
import { Vec3 } from "../math/Vec3";
|
|
18
18
|
import { IPlainSegmentWorkerData } from "../utils/PlainSegmentWorker";
|
|
19
|
+
export declare function getTileCellIndex(coordinate: number, tileSize: number, worldEdge: number): number;
|
|
20
|
+
export declare function getTileCellExtent(x: number, y: number, z: number, worldExtent: Extent): Extent;
|
|
19
21
|
export declare const TILEGROUP_COMMON = 0;
|
|
20
|
-
export declare const TILEGROUP_NORTH =
|
|
21
|
-
export declare const TILEGROUP_SOUTH =
|
|
22
|
+
export declare const TILEGROUP_NORTH = 20;
|
|
23
|
+
export declare const TILEGROUP_SOUTH = 300;
|
|
24
|
+
export declare function getTileGroupByLat(lat: number, maxLat?: number): number;
|
|
22
25
|
/**
|
|
23
26
|
* Planet segment Web Mercator tile class that stored and rendered with a quad-tree.
|
|
24
27
|
* @class
|
|
@@ -32,6 +35,7 @@ declare class Segment {
|
|
|
32
35
|
isPole: boolean;
|
|
33
36
|
_tileGroup: number;
|
|
34
37
|
_projection: Proj;
|
|
38
|
+
elevationData: TypedArray | null;
|
|
35
39
|
/**
|
|
36
40
|
* Quad tree node of the segment.
|
|
37
41
|
* @type {Node}
|
|
@@ -81,6 +85,11 @@ declare class Segment {
|
|
|
81
85
|
* @type {number}
|
|
82
86
|
*/
|
|
83
87
|
tileZoom: number;
|
|
88
|
+
/**
|
|
89
|
+
* Equals to pow(2, tileZoom).
|
|
90
|
+
* @type {number}
|
|
91
|
+
*/
|
|
92
|
+
powTileZoom: number;
|
|
84
93
|
/**
|
|
85
94
|
* Horizontal tile index.
|
|
86
95
|
* @type {number}
|
|
@@ -243,6 +252,7 @@ declare class Segment {
|
|
|
243
252
|
createPlainSegmentAsync(): void;
|
|
244
253
|
_plainSegmentWorkerCallback(data: IPlainSegmentWorkerData): void;
|
|
245
254
|
createPlainSegment(): void;
|
|
255
|
+
protected _projToDeg(lon: number, lat: number): LonLat;
|
|
246
256
|
protected _createPlainVertices(): void;
|
|
247
257
|
/**
|
|
248
258
|
* Gets specific layer material.
|
|
@@ -267,19 +277,12 @@ declare class Segment {
|
|
|
267
277
|
colorPickingRendering(sh: Program, layerSlice: Layer[], sliceIndex: number, defaultTexture?: WebGLTextureExt | null, isOverlay?: boolean): void;
|
|
268
278
|
depthRendering(sh: Program, layerSlice: Layer[]): void;
|
|
269
279
|
protected _getIndexBuffer(): WebGLBufferExt;
|
|
270
|
-
/**
|
|
271
|
-
* @todo: replace to the strategy
|
|
272
|
-
*/
|
|
273
280
|
_collectVisibleNodes(): void;
|
|
274
281
|
layerOverlap(layer: Layer): boolean;
|
|
275
282
|
getDefaultTexture(): WebGLTextureExt | null;
|
|
276
283
|
getExtentLonLat(): Extent;
|
|
277
284
|
getExtentMerc(): Extent;
|
|
278
285
|
getExtent(): Extent;
|
|
279
|
-
/**
|
|
280
|
-
* @todo replace to the strategy
|
|
281
|
-
*/
|
|
282
|
-
getNodeState(): number;
|
|
283
286
|
getNeighborSide(b: Segment): 0 | 1 | 2 | 3 | -1;
|
|
284
287
|
}
|
|
285
288
|
export { Segment };
|
|
@@ -3,7 +3,7 @@ import * as segmentHelper from "../segment/segmentHelper";
|
|
|
3
3
|
import { Box } from "../bv/Box";
|
|
4
4
|
import { Extent } from "../Extent";
|
|
5
5
|
import { EPSG3857 } from "../proj/EPSG3857";
|
|
6
|
-
import { E, N,
|
|
6
|
+
import { E, N, OPSIDE, S, W } from "../quadTree/quadTree";
|
|
7
7
|
import { getMatrixSubArray64 } from "../utils/shared";
|
|
8
8
|
import { Layer } from "../layer/Layer";
|
|
9
9
|
import { LonLat } from "../LonLat";
|
|
@@ -11,9 +11,30 @@ import { Sphere } from "../bv/Sphere";
|
|
|
11
11
|
import { Slice } from "./Slice";
|
|
12
12
|
import { Ray } from "../math/Ray";
|
|
13
13
|
import { Vec3 } from "../math/Vec3";
|
|
14
|
+
import { MAX_LAT } from "../mercator";
|
|
15
|
+
//Math.round(Math.abs(-pole - extent.southWest.lon) / (extent.northEast.lon - extent.southWest.lon));
|
|
16
|
+
export function getTileCellIndex(coordinate, tileSize, worldEdge) {
|
|
17
|
+
return Math.floor(Math.abs(worldEdge - coordinate) / tileSize);
|
|
18
|
+
}
|
|
19
|
+
export function getTileCellExtent(x, y, z, worldExtent) {
|
|
20
|
+
let pz = 1.0 / (1 << z);
|
|
21
|
+
let worldWidth = worldExtent.getWidth(), worldHeight = worldExtent.getHeight();
|
|
22
|
+
let w = worldWidth * pz, h = worldHeight * pz;
|
|
23
|
+
let sw_lon = worldExtent.southWest.lon + x * w, ne_lat = worldExtent.northEast.lat - y * h;
|
|
24
|
+
return new Extent(new LonLat(sw_lon, ne_lat - h), new LonLat(sw_lon + w, ne_lat));
|
|
25
|
+
}
|
|
14
26
|
export const TILEGROUP_COMMON = 0;
|
|
15
|
-
export const TILEGROUP_NORTH =
|
|
16
|
-
export const TILEGROUP_SOUTH =
|
|
27
|
+
export const TILEGROUP_NORTH = 20;
|
|
28
|
+
export const TILEGROUP_SOUTH = 300;
|
|
29
|
+
export function getTileGroupByLat(lat, maxLat = MAX_LAT) {
|
|
30
|
+
if (lat > maxLat) {
|
|
31
|
+
return TILEGROUP_NORTH;
|
|
32
|
+
}
|
|
33
|
+
else if (lat < -maxLat) {
|
|
34
|
+
return TILEGROUP_SOUTH;
|
|
35
|
+
}
|
|
36
|
+
return TILEGROUP_COMMON;
|
|
37
|
+
}
|
|
17
38
|
let _tempHigh = new Vec3();
|
|
18
39
|
let _tempLow = new Vec3();
|
|
19
40
|
let _v0 = new Vec3(), _v1 = new Vec3(), _v2 = new Vec3(), _v3 = new Vec3();
|
|
@@ -57,6 +78,7 @@ class Segment {
|
|
|
57
78
|
this.gridSize = planet.terrain.gridSizeByZoom[tileZoom];
|
|
58
79
|
this.fileGridSize = 0;
|
|
59
80
|
this.tileZoom = tileZoom;
|
|
81
|
+
this.powTileZoom = 1 << tileZoom; //Math.pow(2, tileZoom);
|
|
60
82
|
this.tileX = 0;
|
|
61
83
|
this.tileXE = 0;
|
|
62
84
|
this.tileXW = 0;
|
|
@@ -64,6 +86,7 @@ class Segment {
|
|
|
64
86
|
this.tileYS = 0;
|
|
65
87
|
this.tileY = 0;
|
|
66
88
|
this.tileIndex = "";
|
|
89
|
+
this.elevationData = null;
|
|
67
90
|
this._assignTileIndexes();
|
|
68
91
|
/**
|
|
69
92
|
* @toso: Check it should be Map<number, Material> instead of array
|
|
@@ -221,6 +244,8 @@ class Segment {
|
|
|
221
244
|
if (this.plainReady && this.terrainIsLoading) {
|
|
222
245
|
let _elevations = new Float32Array(elevations.length);
|
|
223
246
|
_elevations.set(elevations);
|
|
247
|
+
this.elevationData = new Float32Array(elevations.length);
|
|
248
|
+
this.elevationData.set(elevations);
|
|
224
249
|
this.planet._terrainWorker.make({ segment: this, elevations: _elevations });
|
|
225
250
|
this.plainVerticesHigh = null;
|
|
226
251
|
this.plainVerticesLow = null;
|
|
@@ -284,7 +309,7 @@ class Segment {
|
|
|
284
309
|
}
|
|
285
310
|
equalize() {
|
|
286
311
|
// Equalization doesnt work correctly for gridSize equals 2
|
|
287
|
-
if (this.gridSize < 2) {
|
|
312
|
+
if (this.tileZoom < 2 || this.gridSize < 2) {
|
|
288
313
|
return;
|
|
289
314
|
}
|
|
290
315
|
this.readyToEngage = true;
|
|
@@ -772,14 +797,16 @@ class Segment {
|
|
|
772
797
|
const tileZoom = this.tileZoom;
|
|
773
798
|
const extent = this._extent;
|
|
774
799
|
const pole = mercator.POLE;
|
|
775
|
-
this.tileX = Math.round(Math.abs(-pole - extent.southWest.lon) / (extent.northEast.lon - extent.southWest.lon));
|
|
776
|
-
this.tileY = Math.round(Math.abs(pole - extent.northEast.lat) / (extent.northEast.lat - extent.southWest.lat));
|
|
777
|
-
|
|
800
|
+
// this.tileX = Math.round(Math.abs(-pole - extent.southWest.lon) / (extent.northEast.lon - extent.southWest.lon));
|
|
801
|
+
// this.tileY = Math.round(Math.abs(pole - extent.northEast.lat) / (extent.northEast.lat - extent.southWest.lat));
|
|
802
|
+
this.tileX = getTileCellIndex(extent.getCenter().lon, extent.getWidth(), -pole);
|
|
803
|
+
this.tileY = getTileCellIndex(extent.getCenter().lat, extent.getHeight(), pole);
|
|
804
|
+
const p2 = this.powTileZoom; //Math.pow(2, tileZoom);
|
|
778
805
|
this.tileXE = (this.tileX + 1) % p2;
|
|
779
806
|
this.tileXW = (p2 + this.tileX - 1) % p2;
|
|
780
807
|
this.tileYN = this.tileY - 1;
|
|
781
808
|
this.tileYS = this.tileY + 1;
|
|
782
|
-
this.tileIndex = Layer.getTileIndex(this.tileX, this.tileY, tileZoom);
|
|
809
|
+
this.tileIndex = Layer.getTileIndex(this.tileX, this.tileY, tileZoom, this._tileGroup);
|
|
783
810
|
}
|
|
784
811
|
initialize() {
|
|
785
812
|
const p = this.planet;
|
|
@@ -836,16 +863,22 @@ class Segment {
|
|
|
836
863
|
this._createPlainVertices();
|
|
837
864
|
this.readyToEngage = true;
|
|
838
865
|
}
|
|
866
|
+
_projToDeg(lon, lat) {
|
|
867
|
+
return LonLat.inverseMercator(lon, lat);
|
|
868
|
+
}
|
|
839
869
|
_createPlainVertices() {
|
|
840
870
|
const gridSize = this.planet.terrain.gridSizeByZoom[this.tileZoom];
|
|
841
|
-
const e = this._extent;
|
|
842
871
|
const fgs = this.planet.terrain.plainGridSize;
|
|
872
|
+
const currGridSize = Math.max(fgs, gridSize);
|
|
873
|
+
const e = this._extent;
|
|
843
874
|
const lonSize = e.getWidth();
|
|
844
|
-
const
|
|
875
|
+
const latSize = e.getHeight();
|
|
876
|
+
const llStep = lonSize / currGridSize;
|
|
877
|
+
const ltStep = latSize / currGridSize;
|
|
845
878
|
const esw_lon = e.southWest.lon;
|
|
846
879
|
const ene_lat = e.northEast.lat;
|
|
847
880
|
const dg = Math.max(fgs / gridSize, 1);
|
|
848
|
-
const gs =
|
|
881
|
+
const gs = currGridSize + 1;
|
|
849
882
|
const r2 = this.planet.ellipsoid._invRadii2;
|
|
850
883
|
const gsgs = gs * gs;
|
|
851
884
|
const gridSize3 = (gridSize + 1) * (gridSize + 1) * 3;
|
|
@@ -861,7 +894,7 @@ class Segment {
|
|
|
861
894
|
let verts = this.plainVertices, vertsHigh = this.plainVerticesHigh, vertsLow = this.plainVerticesLow, norms = this.plainNormals, nmVerts = this.normalMapVertices, nmVertsHigh = this.normalMapVerticesHigh, nmVertsLow = this.normalMapVerticesLow, nmNorms = this.normalMapNormals;
|
|
862
895
|
for (let k = 0; k < gsgs; k++) {
|
|
863
896
|
let j = k % gs, i = ~~(k / gs);
|
|
864
|
-
let v = this.planet.ellipsoid.lonLatToCartesian(
|
|
897
|
+
let v = this.planet.ellipsoid.lonLatToCartesian(this._projToDeg(esw_lon + j * llStep, ene_lat - i * ltStep));
|
|
865
898
|
let nx = v.x * r2.x, ny = v.y * r2.y, nz = v.z * r2.z;
|
|
866
899
|
let l = 1.0 / Math.sqrt(nx * nx + ny * ny + nz * nz);
|
|
867
900
|
let nxl = nx * l, nyl = ny * l, nzl = nz * l;
|
|
@@ -1040,8 +1073,8 @@ class Segment {
|
|
|
1040
1073
|
while (i--) {
|
|
1041
1074
|
let n = this.node._fadingNodes[i];
|
|
1042
1075
|
if (n.segment) {
|
|
1043
|
-
if (n.segment._transitionOpacity > 0 && !this.planet._fadingNodes.has(n.
|
|
1044
|
-
this.planet._fadingNodes.set(n.
|
|
1076
|
+
if (n.segment._transitionOpacity > 0 && !this.planet._fadingNodes.has(n.__id)) {
|
|
1077
|
+
this.planet._fadingNodes.set(n.__id, n);
|
|
1045
1078
|
n.segment._transitionOpacity = 2.0 - this._transitionOpacity;
|
|
1046
1079
|
if (n.segment._transitionOpacity === 0) {
|
|
1047
1080
|
this.node._fadingNodes.splice(i, 1);
|
|
@@ -1141,9 +1174,6 @@ class Segment {
|
|
|
1141
1174
|
}
|
|
1142
1175
|
return cache.buffer;
|
|
1143
1176
|
}
|
|
1144
|
-
/**
|
|
1145
|
-
* @todo: replace to the strategy
|
|
1146
|
-
*/
|
|
1147
1177
|
_collectVisibleNodes() {
|
|
1148
1178
|
this.planet._visibleNodes[this.node.nodeId] = this.node;
|
|
1149
1179
|
}
|
|
@@ -1162,13 +1192,6 @@ class Segment {
|
|
|
1162
1192
|
getExtent() {
|
|
1163
1193
|
return this._extent;
|
|
1164
1194
|
}
|
|
1165
|
-
/**
|
|
1166
|
-
* @todo replace to the strategy
|
|
1167
|
-
*/
|
|
1168
|
-
getNodeState() {
|
|
1169
|
-
let vn = this.planet._visibleNodes[this.node.nodeId];
|
|
1170
|
-
return (vn && vn.state) || NOTRENDERING;
|
|
1171
|
-
}
|
|
1172
1195
|
getNeighborSide(b) {
|
|
1173
1196
|
if (this.tileY === b.tileY) {
|
|
1174
1197
|
if (this.tileX === b.tileXE) {
|
|
@@ -23,7 +23,7 @@ declare class SegmentLonLat extends Segment {
|
|
|
23
23
|
protected _assignTileIndexes(): void;
|
|
24
24
|
protected _assignTileXIndexes(extent: Extent): void;
|
|
25
25
|
protected _assignTileYIndexes(extent: Extent): void;
|
|
26
|
-
protected
|
|
26
|
+
protected _projToDeg(lon: number, lat: number): LonLat;
|
|
27
27
|
protected _assignGlobalTextureCoordinates(): void;
|
|
28
28
|
/**
|
|
29
29
|
* @todo: replace to the strategy
|
|
@@ -40,9 +40,5 @@ declare class SegmentLonLat extends Segment {
|
|
|
40
40
|
layerOverlap(layer: Layer): boolean;
|
|
41
41
|
getDefaultTexture(): WebGLTextureExt | null;
|
|
42
42
|
getExtentLonLat(): Extent;
|
|
43
|
-
/**
|
|
44
|
-
* @todo: replace to the strategy
|
|
45
|
-
*/
|
|
46
|
-
getNodeState(): number;
|
|
47
43
|
}
|
|
48
44
|
export { SegmentLonLat };
|