diff --git a/src/display3d.rs b/src/display3d.rs index cac7a8c..e760ff5 100644 --- a/src/display3d.rs +++ b/src/display3d.rs @@ -12,14 +12,15 @@ impl Plugin for Display3dPlugin { .add_systems( OnExit(GameState::Loading), ( - initialize, fix_skybox.before(initialize), + initialize, update_tweaks.run_if(resource_exists::), ), ) .add_systems( Update, ( + debug_textures, load_assets .run_if(in_state(GameState::Loading)) .run_if(on_event::>()), @@ -37,10 +38,7 @@ impl Plugin for Display3dPlugin { .or_else(any_component_changed::()) ) ), - set_board_model.run_if( - any_component_added::() - .or_else(any_component_added::()) - ), + set_board_model.run_if(any_component_added::()), set_valid_move_model.run_if(any_component_added::()), set_tile_hitbox.run_if(any_component_added::()), select @@ -49,8 +47,8 @@ impl Plugin for Display3dPlugin { .run_if(on_event::()), pick_up.run_if(any_component_added::()), put_down.run_if(any_component_removed::()), - setup_capture_piece.run_if(any_component_changed::>()), - capture_piece.run_if(any_with_component::), + // setup_capture_piece.run_if(any_component_changed::>()), + // capture_piece.run_if(any_with_component::), skip_animation .run_if(just_pressed(KeyCode::Enter).or_else(just_pressed(MouseButton::Left))) .run_if(in_state(GameState::Play)), @@ -93,9 +91,6 @@ impl Plugin for Display3dPlugin { #[derive(Debug, Component, PartialEq)] pub(crate) struct Display3d; -#[derive(Debug, Component)] -struct TilesComponent; - #[derive(Debug, Resource, Clone)] struct AssetsMap { hitbox_shape: Handle, @@ -146,14 +141,6 @@ fn initialize(mut commands: Commands, board: Res, assets: Res>, mut commands: Commands, ) { - warn!("Updating tweaks!"); if let Some(tweak) = tweaks.get(tweaks_file.handle.clone()) { + warn!("Updating tweaks!"); camera_settings.iter_mut().for_each( |(entity, mut fog, mut color_grading, mut tonemapping, mut bloom)| { *fog = tweak @@ -387,8 +374,7 @@ fn set_board_model( mut boards: Query< &mut Handle, ( - With, - Without, + Added, With, ), >, @@ -400,6 +386,7 @@ fn set_board_model( .get(tweaks_file.handle.clone()) .expect("Load tweakfile"); boards.iter_mut().for_each(|mut handle| { + info!("Setting board model"); let assets_handle = tweak .get_handle::("display3d_models_assets_file") .unwrap(); @@ -511,41 +498,47 @@ fn update_pieces( let models = gltfs.get(assets_handle).unwrap(); query.iter_mut().for_each(|(entity, piece, side, board_index, mut transform, mut scene, animation_player)| { + // Set position of piece let new_translation = board_translation(board_index); if transform.translation != new_translation { + info!("Updating piece transform"); transform.translation = new_translation; } - // Find name of this piece's model scene - let scene_tweak_name: Option = match (piece, side) { - (Piece::Pawn, Side::A) => { - tweak.get("display3d_models_scenes_pawn_red") - }, - (Piece::Pawn, Side::B) => { - tweak.get("display3d_models_scenes_pawn_blue") - } - (Piece::Drone, Side::A) => { - tweak.get("display3d_models_scenes_drone_red") - }, - (Piece::Drone, Side::B) => { - tweak.get("display3d_models_scenes_drone_blue") - } - (Piece::Queen, Side::A) => { - tweak.get("display3d_models_scenes_queen_red") - }, - (Piece::Queen, Side::B) => { - tweak.get("display3d_models_scenes_queen_blue") - } - }; + if animation_player.is_finished() { + info!("Updating piece object scene"); + + // Find name of this piece's model scene + let scene_tweak_name: Option = match (piece, side) { + (Piece::Pawn, Side::A) => { + tweak.get("display3d_models_scenes_pawn_red") + }, + (Piece::Pawn, Side::B) => { + tweak.get("display3d_models_scenes_pawn_blue") + } + (Piece::Drone, Side::A) => { + tweak.get("display3d_models_scenes_drone_red") + }, + (Piece::Drone, Side::B) => { + tweak.get("display3d_models_scenes_drone_blue") + } + (Piece::Queen, Side::A) => { + tweak.get("display3d_models_scenes_queen_red") + }, + (Piece::Queen, Side::B) => { + tweak.get("display3d_models_scenes_queen_blue") + } + }; - // Get model scene for this piece - let scene_handle = models.named_scenes.get(&scene_tweak_name.unwrap()).unwrap(); + // Get model scene for this piece + let scene_handle = models.named_scenes.get(&scene_tweak_name.unwrap()).unwrap(); - // Set scene model for this piece - if *scene != *scene_handle { - warn!("Updating scene for piece {:?}", entity); - *scene = scene_handle.clone(); + // Set scene model for this piece + if *scene != *scene_handle { + warn!("Updating scene for piece {:?}", entity); + *scene = scene_handle.clone(); + } } }); } @@ -655,6 +648,8 @@ fn set_valid_move_model( .get_handle::("display3d_models_assets_file") .unwrap(); if let Some(gltf) = gltfs.get(assets_handle) { + info!("Setting valid move model"); + events.iter_mut().for_each(|(mut handle, mut visibility)| { *handle = gltf .named_scenes @@ -688,6 +683,8 @@ fn pick_up( .get(tweaks_file.handle.clone()) .expect("Load tweakfile"); events.iter_mut().for_each(|(entity, piece, side)| { + info!("Picking up piece"); + let assets_handle = tweak .get_handle::("display3d_models_assets_file") .unwrap(); @@ -755,6 +752,8 @@ fn put_down( .expect("Load tweakfile"); events.read().for_each(|entity| { if let Ok((piece, side)) = query.get_mut(entity) { + info!("Putting down piece"); + let assets_handle = tweak .get_handle::("display3d_models_assets_file") .unwrap(); @@ -795,6 +794,8 @@ fn set_tile_hitbox( mut events: Query<(&mut Transform, &BoardIndex), (With, Added)>, ) { events.iter_mut().for_each(|(mut transform, index)| { + info!("Setting tile hitbox"); + *transform = Transform::from_translation(board_translation(index)); }); } @@ -813,6 +814,8 @@ fn skip_animation( time: Res