From 2a38d638470608a8bc1cb1eb57db33a68d7fd3ab Mon Sep 17 00:00:00 2001 From: Franklin Date: Sun, 24 Mar 2024 16:21:58 +0100 Subject: [PATCH] Whole lot of bug fixes --- src/setup.rs | 3 ++- src/update.rs | 11 ++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/setup.rs b/src/setup.rs index 1f3038d..606ac6d 100644 --- a/src/setup.rs +++ b/src/setup.rs @@ -1,6 +1,6 @@ use bevy::{prelude::*, render::{camera::ScalingMode, view::RenderLayers}}; -use crate::{markers::{IconCreatorEntityParentMarker, IconCreatorRootMarker, IconCreatorSceneRootMarker, InIconCreatorSceneMarker}, state::IconCreatorState}; +use crate::{markers::{IconCreatorCameraMarker, IconCreatorEntityParentMarker, IconCreatorRootMarker, IconCreatorSceneRootMarker, InIconCreatorSceneMarker}, state::IconCreatorState}; pub fn setup_icon_creation_scenes( mut commands: Commands, @@ -46,6 +46,7 @@ pub fn setup_icon_creation_scenes( transform: Transform::from_xyz(0.0, 0.0, 5.0).looking_at(Vec3::ZERO, Vec3::Y), ..Default::default() }, + IconCreatorCameraMarker, RenderLayers::layer(icon_creator_state.render_layer), Name::new("Scene camera"), )) diff --git a/src/update.rs b/src/update.rs index 80f3fe4..73b6ecb 100644 --- a/src/update.rs +++ b/src/update.rs @@ -9,14 +9,14 @@ const MIN_FRAMES_TO_RENDER: u8 = 3; /// It should keep track of the amount of frames. pub fn update_icon_creator_scenes( mut commands: Commands, - mut scene_query: Query<(&InIconCreatorSceneMarker, &mut Visibility, &mut IconCreatorSceneRootMarker), With>, + mut scene_query: Query<(Entity, &InIconCreatorSceneMarker, &mut Visibility, &mut IconCreatorSceneRootMarker), With>, mut scene_camera_query: Query<(&mut Camera, &InIconCreatorSceneMarker), With>, scene_entity_parent_query: Query<(Entity, &InIconCreatorSceneMarker), With>, scene_child_query: Query<(&Parent, &InIconCreatorSceneMarker, &EntityGettingIconMarker), With>, mut images: ResMut>, mut created_icons: ResMut, ) { - for (scene_marker, mut scene_root_visibility, mut scene_root_marker) in scene_query.iter_mut() { + for (scene_root_entity, scene_marker, mut scene_root_visibility, mut scene_root_marker) in scene_query.iter_mut() { for (mut scene_camera, in_scene) in scene_camera_query.iter_mut() { if scene_marker.0 != in_scene.0 { continue; } for (scene_parent_entity, in_scene) in scene_entity_parent_query.iter() { @@ -36,8 +36,8 @@ pub fn update_icon_creator_scenes( }; scene_camera.target = RenderTarget::Image(camera_target_image_handle); } else if scene_root_marker.0 >= MIN_FRAMES_TO_RENDER + entity_getting_icon_marker.extra_frames.unwrap_or(0) { - // Unoccupy - if let Some(mut entity_commands) = commands.get_entity(scene_parent_entity) { + commands.entity(scene_root_entity).remove::(); + if let Some(mut entity_commands) = commands.get_entity(scene_parent_entity) { // Unoccupy entity_commands.remove::(); scene_camera.is_active = false; *scene_root_visibility = Visibility::Hidden; @@ -60,7 +60,7 @@ pub fn update_give_work_to_scenes( mut scene_query: Query<(Entity, &InIconCreatorSceneMarker, &RenderLayers), (With, Without)>, scene_entity_parent_query: Query<(Entity, &InIconCreatorSceneMarker), With>, ) { - for (needs_icon_entity, needs_icon_marker) in needs_icon_query.iter() { + 'a: for (needs_icon_entity, needs_icon_marker) in needs_icon_query.iter() { // move this entity to any unoccupied scene. // Then set the scene to occupied (Visibility::Visible & Camera.active = true & Occupied component) for (scene_entity, scene_marker, scene_render_layer) in scene_query.iter_mut() { @@ -80,6 +80,7 @@ pub fn update_give_work_to_scenes( .insert(VisibilityBundle::default()) .remove::(); commands.entity(scene_entity).insert(SceneOccupiedMarker); + break 'a; } } }