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
use super::*;
use crate::nodes::RenderView;
use crate::nodes::VisibilityResult;
use rafx_base::slab::DropSlab;
#[derive(Default)]
pub struct StaticVisibilityNodeSet {
static_aabb: DropSlab<StaticAabbVisibilityNode>,
}
impl StaticVisibilityNodeSet {
pub fn register_static_aabb(
&mut self,
node: StaticAabbVisibilityNode,
) -> StaticAabbVisibilityNodeHandle {
StaticAabbVisibilityNodeHandle(self.static_aabb.allocate(node))
}
pub fn calculate_static_visibility(
&mut self,
view: &RenderView,
) -> VisibilityResult {
self.static_aabb.process_drops();
log::trace!("Calculate static visibility for {}", view.debug_name());
let mut result = VisibilityResult::default();
for aabb in self.static_aabb.iter_values() {
log::trace!("push static visibility object {:?}", aabb.handle);
result.handles.push(aabb.handle);
}
result
}
}