41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
|
|
define([
|
||
|
|
'../Core/defaultValue',
|
||
|
|
'../Core/defined',
|
||
|
|
'./CallbackProperty',
|
||
|
|
'./GeometryUpdater',
|
||
|
|
'./TerrainOffsetProperty'
|
||
|
|
], function(
|
||
|
|
defaultValue,
|
||
|
|
defined,
|
||
|
|
CallbackProperty,
|
||
|
|
GeometryUpdater,
|
||
|
|
TerrainOffsetProperty) {
|
||
|
|
'use strict';
|
||
|
|
|
||
|
|
function heightReferenceOnEntityPropertyChanged(entity, propertyName, newValue, oldValue) {
|
||
|
|
GeometryUpdater.prototype._onEntityPropertyChanged.call(this, entity, propertyName, newValue, oldValue);
|
||
|
|
if (this._observedPropertyNames.indexOf(propertyName) === -1) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
var geometry = this._entity[this._geometryPropertyName];
|
||
|
|
if (!defined(geometry)) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (defined(this._terrainOffsetProperty)) {
|
||
|
|
this._terrainOffsetProperty.destroy();
|
||
|
|
this._terrainOffsetProperty = undefined;
|
||
|
|
}
|
||
|
|
|
||
|
|
var heightReferenceProperty = geometry.heightReference;
|
||
|
|
|
||
|
|
if (defined(heightReferenceProperty)) {
|
||
|
|
var centerPosition = new CallbackProperty(this._computeCenter.bind(this), !this._dynamic);
|
||
|
|
this._terrainOffsetProperty = new TerrainOffsetProperty(this._scene, centerPosition, heightReferenceProperty);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return heightReferenceOnEntityPropertyChanged;
|
||
|
|
});
|