heightReferenceOnEntityPropertyChanged.js 1.2 KB

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