-
-
Notifications
You must be signed in to change notification settings - Fork 134
/
Copy pathBillboardGraphics.ts
72 lines (62 loc) · 1.7 KB
/
BillboardGraphics.ts
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import { BillboardGraphics as CesiumBillboardGraphics } from "cesium";
import { createCesiumComponent, PickCesiumProps, Merge } from "../core";
/*
@summary
`BillboardGraphics` is a billboard visualization for the entity.
*/
/*
@scope
BillboardGraphics can be mounted only inside[Entity](/components/Entity) components,
and can not be mounted more than once for each entity.
*/
export type BillboardGraphicsCesiumProps = PickCesiumProps<
Merge<CesiumBillboardGraphics, CesiumBillboardGraphics.ConstructorOptions>,
typeof cesiumProps
>;
export type BillboardGraphicsCesiumEvents = {
onDefinitionChange?: () => void;
};
export type BillboardGraphicsProps = BillboardGraphicsCesiumProps & BillboardGraphicsCesiumEvents;
const cesiumProps = [
"image",
"show",
"scale",
"horizontalOrigin",
"verticalOrigin",
"eyeOffset",
"pixelOffset",
"rotation",
"alignedAxis",
"splitDirection",
"width",
"height",
"color",
"scaleByDistance",
"translucencyByDistance",
"pixelOffsetScaleByDistance",
"imageSubRegion",
"sizeInMeters",
"heightReference",
"distanceDisplayCondition",
"disableDepthTestDistance",
] as const;
export const cesiumEventProps = {
onDefinitionChange: "definitionChanged",
} as const;
const BillboardGraphics = createCesiumComponent<CesiumBillboardGraphics, BillboardGraphicsProps>({
name: "BillboardGraphics",
create(context, props) {
if (!context.entity) return;
const element = new CesiumBillboardGraphics(props);
context.entity.billboard = element;
return element;
},
destroy(_element, context) {
if (context.entity) {
context.entity.billboard = undefined;
}
},
cesiumProps,
cesiumEventProps,
});
export default BillboardGraphics;