All files / engine/Source/DataSources heightReferenceOnEntityPropertyChanged.js

100% Statements 13/13
100% Branches 8/8
100% Functions 1/1
100% Lines 13/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48                      311x             311x 34x     277x 277x 113x     164x 6x 6x     164x   164x 10x       10x                
import defined from "../Core/defined.js";
import CallbackProperty from "./CallbackProperty.js";
import GeometryUpdater from "./GeometryUpdater.js";
import TerrainOffsetProperty from "./TerrainOffsetProperty.js";
 
function heightReferenceOnEntityPropertyChanged(
  entity,
  propertyName,
  newValue,
  oldValue,
) {
  GeometryUpdater.prototype._onEntityPropertyChanged.call(
    this,
    entity,
    propertyName,
    newValue,
    oldValue,
  );
  if (this._observedPropertyNames.indexOf(propertyName) === -1) {
    return;
  }
 
  const geometry = this._entity[this._geometryPropertyName];
  if (!defined(geometry)) {
    return;
  }
 
  if (defined(this._terrainOffsetProperty)) {
    this._terrainOffsetProperty.destroy();
    this._terrainOffsetProperty = undefined;
  }
 
  const heightReferenceProperty = geometry.heightReference;
 
  if (defined(heightReferenceProperty)) {
    const centerPosition = new CallbackProperty(
      this._computeCenter.bind(this),
      !this._dynamic,
    );
    this._terrainOffsetProperty = new TerrainOffsetProperty(
      this._scene,
      centerPosition,
      heightReferenceProperty,
    );
  }
}
export default heightReferenceOnEntityPropertyChanged;