quantized_density_fields/lod/
level.rs1use id::ID;
2use qdf::state::State;
3
4#[derive(Debug, Clone)]
6pub struct Level<S>
7where
8 S: State,
9{
10 id: ID,
11 parent: Option<ID>,
12 level: usize,
13 index: usize,
14 state: S,
15 sublevels: Vec<ID>,
16}
17
18impl<S> Level<S>
19where
20 S: State,
21{
22 #[inline]
23 pub(crate) fn new(id: ID, parent: Option<ID>, level: usize, index: usize, state: S) -> Self {
24 Self {
25 id,
26 parent,
27 level,
28 index,
29 state,
30 sublevels: vec![],
31 }
32 }
33
34 #[inline]
36 pub fn id(&self) -> ID {
37 self.id
38 }
39
40 #[inline]
42 pub fn parent(&self) -> Option<ID> {
43 self.parent
44 }
45
46 #[inline]
48 pub fn level(&self) -> usize {
49 self.level
50 }
51
52 #[inline]
54 pub fn index(&self) -> usize {
55 self.index
56 }
57
58 #[inline]
60 pub fn state(&self) -> &S {
61 &self.state
62 }
63
64 #[inline]
66 pub fn sublevels(&self) -> &[ID] {
67 &self.sublevels
68 }
69
70 #[inline]
71 pub fn apply_state(&mut self, state: S) {
72 self.state = state;
73 }
74
75 #[inline]
76 pub(crate) fn apply_sublevels(&mut self, sublevels: Vec<ID>) {
77 self.sublevels = sublevels;
78 }
79}