@@ -9,30 +9,46 @@ import {
9
9
PrimitiveCollection ,
10
10
} from 'cesium'
11
11
12
- export function updateCollectionOpacity ( collection , opacity ) {
12
+ /**
13
+ * This function goes throw the primitive collection and update passed properties
14
+ * @param {PrimitiveCollection } collection
15
+ * @param {{opacity: number | undefined, disableDepthTestDistance: number | undefined} } properties
16
+ */
17
+ export function updateCollectionProperties ( collection , properties ) {
18
+ const opacity =
19
+ typeof properties . opacity === 'number' && properties . opacity >= 0 && properties . opacity <= 1
20
+ ? properties . opacity
21
+ : undefined
22
+ const disableDepthTestDistance =
23
+ typeof properties . disableDepthTestDistance === 'number'
24
+ ? properties . disableDepthTestDistance
25
+ : undefined
26
+
13
27
for ( let i = 0 ; i < collection . length ; i ++ ) {
14
28
const primitive = collection . get ( i )
15
29
if ( primitive instanceof Primitive || primitive instanceof GroundPolylinePrimitive ) {
16
- if ( primitive . appearance ) {
30
+ if ( primitive . appearance && opacity !== undefined ) {
17
31
const material = primitive . appearance . material
18
32
const color = material . uniforms . color || material . uniforms . evenColor
19
33
material . uniforms . color = new Color ( color . red , color . green , color . blue , opacity )
20
34
}
21
35
} else if ( primitive instanceof Billboard ) {
22
- // todo just for test, will be moved in appropriate place
23
- primitive . disableDepthTestDistance = 75000
24
- if ( primitive . color ) {
36
+ if ( disableDepthTestDistance !== undefined ) {
37
+ primitive . disableDepthTestDistance = disableDepthTestDistance
38
+ }
39
+ if ( primitive . color && opacity !== undefined ) {
25
40
const color = primitive . color
26
41
primitive . color = new Color ( color . red , color . green , color . blue , opacity )
27
42
}
28
43
} else if ( primitive instanceof Label ) {
29
- // todo just for test, will be moved in appropriate place
30
- primitive . disableDepthTestDistance = 75000
31
- if ( primitive . fillColor ) {
44
+ if ( disableDepthTestDistance !== undefined ) {
45
+ primitive . disableDepthTestDistance = disableDepthTestDistance
46
+ }
47
+ if ( primitive . fillColor && opacity !== undefined ) {
32
48
const color = primitive . fillColor
33
49
primitive . fillColor = new Color ( color . red , color . green , color . blue , opacity )
34
50
}
35
- if ( primitive . outlineColor ) {
51
+ if ( primitive . outlineColor && opacity !== undefined ) {
36
52
const color = primitive . outlineColor
37
53
primitive . outlineColor = new Color ( color . red , color . green , color . blue , opacity )
38
54
}
@@ -41,7 +57,7 @@ export function updateCollectionOpacity(collection, opacity) {
41
57
primitive instanceof BillboardCollection ||
42
58
primitive instanceof LabelCollection
43
59
) {
44
- updateCollectionOpacity ( primitive , opacity )
60
+ updateCollectionProperties ( primitive , properties )
45
61
}
46
62
}
47
63
}
0 commit comments