UNPKG

resium

Version:

React components for Cesium

74 lines (63 loc) 1.98 kB
import { ReactNode } from "react"; import { BillboardCollection as CesiumBillboardCollection } from "cesium"; import { createCesiumComponent, PickCesiumProps } from "../core"; /* @summary `BillboardCollection` is a collection of billboard primitives. It can have some `Billboard` components as children. Primitive is a low layer API for geographical visualization. [Entity](/components/entity) is more recommended unless performance issues. */ /* @scope Inside [Viewer](/components/Viewer) or [CesiumWidget](/components/CesiumWidget) components. A BillboardColleciton object will be attached to the PrimitiveCollection of the Viewer or CesiumWidget. */ export type BillboardCollectionCesiumProps = PickCesiumProps< CesiumBillboardCollection, typeof cesiumProps >; export type BillboardCollectionOtherProps = { children?: ReactNode; }; export type BillboardCollectionProps = BillboardCollectionCesiumProps & BillboardCollectionOtherProps; const cesiumProps = [ "blendOption", "debugShowBoundingVolume", "debugShowTextureAtlas", "modelMatrix", "show", ] as const; const BillboardCollection = createCesiumComponent< CesiumBillboardCollection, BillboardCollectionProps >({ name: "BillboardCollection", create(context, props) { if (!context.primitiveCollection) return; const element = new CesiumBillboardCollection({ modelMatrix: props.modelMatrix, debugShowBoundingVolume: props.debugShowBoundingVolume, scene: context.scene, blendOption: props.blendOption, }); context.primitiveCollection.add(element); return element; }, destroy(element, context) { if (context.primitiveCollection && !context.primitiveCollection.isDestroyed()) { context.primitiveCollection.remove(element); } if (!element.isDestroyed()) { element.destroy(); } }, provide(element) { return { billboardCollection: element, }; }, cesiumProps, }); export default BillboardCollection;