From ac2f4a9e271b042ef60d9bb229041f94fc4059a7 Mon Sep 17 00:00:00 2001 From: Schmarni Date: Sat, 28 Jun 2025 20:42:28 +0200 Subject: [PATCH] fix(lines): fix lines not clearing when having no points Signed-off-by: Schmarni --- src/nodes/drawable/lines.rs | 29 ++++++++++++++++++++--------- src/nodes/drawable/text.rs | 4 ++-- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/nodes/drawable/lines.rs b/src/nodes/drawable/lines.rs index 5f3a415..61c16f8 100644 --- a/src/nodes/drawable/lines.rs +++ b/src/nodes/drawable/lines.rs @@ -68,6 +68,19 @@ fn build_line_mesh( let mut vertex_indecies = Vec::::new(); let lines_data = lines.data.lock(); if lines_data.is_empty() { + *lines.bounds.lock() = Aabb::default(); + match lines.entity.get() { + Some(e) => cmds.entity(**e), + None => { + let e = cmds.spawn(( + Name::new("LinesNode"), + SpatialNode(Arc::downgrade(&lines.spatial)), + )); + _ = lines.entity.set(e.id().into()); + e + } + } + .remove::(); continue; } @@ -158,20 +171,18 @@ fn build_line_mesh( let e = cmds.spawn(( Name::new("LinesNode"), SpatialNode(Arc::downgrade(&lines.spatial)), + MeshMaterial3d(materials.add(PbrMaterial { + color: Color::WHITE, + roughness: 1.0, + alpha_mode: AlphaMode::Opaque, + ..default() + })), )); _ = lines.entity.set(e.id().into()); e } } - .insert(( - Mesh3d(meshes.add(mesh)), - MeshMaterial3d(materials.add(PbrMaterial { - color: Color::WHITE, - roughness: 1.0, - alpha_mode: AlphaMode::Opaque, - ..default() - })), - )); + .insert(Mesh3d(meshes.add(mesh))); } } diff --git a/src/nodes/drawable/text.rs b/src/nodes/drawable/text.rs index fff3d59..ba87c8d 100644 --- a/src/nodes/drawable/text.rs +++ b/src/nodes/drawable/text.rs @@ -105,7 +105,7 @@ fn spawn_text( let max_height = style.bounds.as_ref().map(|v| v.bounds.x); let (width, _height) = text_glyphs.measure(max_width, max_height, &mut font_settings.font_system); - let meshes = generate_meshes( + let char_meshes = generate_meshes( bevy_mesh_text_3d::InputText::Simple { text: text_string, material: material_registry.get_handle( @@ -137,7 +137,7 @@ fn spawn_text( if let Some(db) = old_db { mem::swap(font_settings.font_system.db_mut(), db); } - let Ok(meshes) = meshes.inspect_err(|err| error!("unable to create text meshes: {err}")) + let Ok(meshes) = char_meshes.inspect_err(|err| error!("unable to create text meshes: {err}")) else { continue; };