feat: filter out nodes with zero dimensions in reify implementation to improve rendering efficiency

This commit is contained in:
MayaTheShy
2025-11-08 20:47:17 -05:00
parent 863a8bc162
commit 38a561e581

View File

@@ -70,12 +70,17 @@ impl ClientState for BridgeState {
impl Reify for BridgeState {
fn reify(&self) -> impl ast::Element<Self> {
// Root playspace. Create appropriate visuals per entity type
let children = self.nodes.iter().map(|(id, node)| {
let children = self.nodes.iter().filter_map(|(id, node)| {
// Skip nodes with zero dimensions (like the root node)
let dims = glam::Vec3::from(node.dimensions);
if dims.length() < 0.001 {
return None;
}
// Decompose transform into TRS
let (scale, rot, trans) = node.transform.to_scale_rotation_translation();
// Use entity dimensions if available, otherwise use transform scale
let dims = glam::Vec3::from(node.dimensions);
let vis_scale = if dims.length() > 0.001 {
dims
} else {
@@ -226,14 +231,14 @@ impl Reify for BridgeState {
seg(corners[4], corners[5]), seg(corners[5], corners[6]), seg(corners[6], corners[7]), seg(corners[7], corners[4]),
seg(corners[0], corners[4]), seg(corners[1], corners[5]), seg(corners[2], corners[6]), seg(corners[3], corners[7]),
];
(
Some((
*id,
Lines::new(lines)
.pos([trans.x, trans.y, trans.z])
.rot([rot.x, rot.y, rot.z, rot.w])
.scl([vis_scale.x, vis_scale.y, vis_scale.z])
.build()
)
))
}
}
});