From e14da77bb0120c3ac459561816715af52e2e75b7 Mon Sep 17 00:00:00 2001 From: Guillaume Beraudo Date: Wed, 29 Nov 2017 22:38:04 +0100 Subject: [PATCH] Allow applications to control terrain adjustment suspension In sandcastle, can be tested with: var viewer = new Cesium.Viewer('cesiumContainer'); var scene = viewer.scene; var globe = scene.globe; var controller = scene.screenSpaceCameraController; controller.minimumZoomDistance = 3000; var cesiumTerrainProviderMeshes = new Cesium.CesiumTerrainProvider({ url : 'https://assets.agi.com/stk-terrain/v1/tilesets/world/tiles' }); viewer.terrainProvider = cesiumTerrainProviderMeshes; setInterval(function() { var carto = Cesium.Cartographic.fromCartesian(scene.camera.position); console.log(carto.height - globe.getHeight(carto)); }, 10); scene.camera.enableTerrainAdjustmentWhenLoading = true; --- CHANGES.md | 1 + Source/Scene/Camera.js | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 5569fbbed922..a8ef78880b80 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -13,6 +13,7 @@ Change Log * Fixed globe materials when `Globe.enableLighting` was `false`. [#6042](https://github.com/AnalyticalGraphicsInc/cesium/issues/6042) * Fixed shader compilation failure on pick when globe materials were enabled. [#6039](https://github.com/AnalyticalGraphicsInc/cesium/issues/6039) * Fixed crash when `invertClassification` was enabled, the invert color had an alpha less than `1.0`, and the window was resized. [#6046](https://github.com/AnalyticalGraphicsInc/cesium/issues/6046) +* Added `Camera.enableTerrainAdjustmentWhenLoading` to enable/disable suspension of camera position adjustment when terrain is loading [#5999](https://github.com/AnalyticalGraphicsInc/cesium/issues/5999). ### 1.40 - 2017-12-01 diff --git a/Source/Scene/Camera.js b/Source/Scene/Camera.js index 1106c5765a2b..2ca3fd971533 100644 --- a/Source/Scene/Camera.js +++ b/Source/Scene/Camera.js @@ -199,6 +199,14 @@ define([ */ this.maximumZoomFactor = 1.5; + /** + * Allows or disallows camera position adjustment while terrain is loading. + * When false the camera position will only be adjusted when all terrain has been loaded. + * @type {Boolean} + * @default false + */ + this.enableTerrainAdjustmentWhenLoading = false; + this._moveStart = new Event(); this._moveEnd = new Event(); @@ -367,7 +375,7 @@ define([ var minimumCollisionTerrainHeight = screenSpaceCameraController.minimumCollisionTerrainHeight; var minimumZoomDistance = screenSpaceCameraController.minimumZoomDistance; - if (this._suspendTerrainAdjustment || !enableCollisionDetection) { + if ((!this.enableTerrainAdjustmentWhenLoading && this._suspendTerrainAdjustment) || !enableCollisionDetection) { return; }