GroundGeometryUpdater是CesiumJS中用于更新GroundPrimitives对象中Geometry属性的对象。
GroundGeometryUpdater是抽象类,必须继承后使用。以下是该抽象类的方法和属性:
fillEnabled
: 更新时是否填充几何体。默认为true。getGeometry
: 获取实例化此类时传入的几何体对象。
isUpdatable
: 返回一个布尔值,代表该Updater是否可以进行更新。地形上的几何体都是可以更新的。
createFillGeometryInstance
: 根据当前Updater中的参数生成填充几何体对象。该函数必须返回一个Cesium.GeometryInstance实例化对象。
createOutlineGeometryInstance
: 根据当前Updater中的参数生成线框几何体对象。该函数必须返回一个Cesium.GeometryInstance实例化对象。该函数可选。
update
: 更新GroundPrimitive中的几何体,包括填充和线框。
_createPrimitiveOptions
: 返回一个对象,包含了实例化Primitive时的所有参数。
_generateAttributeLocations
: 返回一个对象,包含了提供给Shader的Attribute变量的定位。
_willRegenerateGeometry
: 返回一个布尔值,代表在现有Updator的参数下是否需要重新生成几何体。该函数需要继承类重写以提供自己的逻辑。
_shouldUpdate
: 如果现有的Updater参数和新的参数有变化,则返回true。该函数需要继承类重写以提供自己的逻辑。
class ExampleGroundGeometryUpdater extends Cesium.GroundGeometryUpdater {
constructor(entity, scene) {
super({
entity: entity,
scene: scene,
geometryOptions: {
vertexFormat: Cesium.VertexFormat.POSITION_NORMAL
},
observablePropertyNames: []
});
}
createFillGeometryInstance(time, frameState, options) {
// 实现生成Cesium.GeometryInstance的逻辑,返回Cesium.GeometryInstance
}
}
该类需要传入一个对象,两个属性必传:
entity
: 包含该Updater的entity对象。
scene
: 该Updater所在的Cesium Scene对象。
该类继承了GroundGeometryUpdater后,需要重写其中的几个方法。实例化类时也需要提供一些参数。更多使用请参考Cesium官方例子。