put-down animation works!

Thank christ
main
Elijah C. Voigt 2 years ago
parent 4cebce8bf2
commit df1a2a3bf7

@ -199,28 +199,28 @@ turn_b = "GameCamSide2>1"
turn_a = "GameCamSide1>2"
[display3d.models.animations.pick_up]
pawn_blue = "PawnBluePiecePickup"
pawn_red = "PawnRedPiecePickup"
drone_blue = "DroneBluePiecePickup"
drone_red = "DroneRedPiecePickup"
queen_blue = "QueenBluePiecePickup"
queen_red = "QueenRedPiecePickup"
PawnBlue = "PawnBluePiecePickup"
PawnRed = "PawnRedPiecePickup"
DroneBlue = "DroneBluePiecePickup"
DroneRed = "DroneRedPiecePickup"
QueenBlue = "QueenBluePiecePickup"
QueenRed = "QueenRedPiecePickup"
[display3d.models.animations.put_down]
pawn_blue = "PawnBluePiecePutDown"
pawn_red = "PawnRedPiecePutDown"
drone_blue = "DroneBluePiecePutDown"
drone_red = "DroneRedPiecePutDown"
queen_blue = "QueenBluePiecePutDown"
queen_red = "QueenRedPiecePutDown"
PawnBlue = "PawnBluePiecePutDown"
PawnRed = "PawnRedPiecePutDown"
DroneBlue = "DroneBluePiecePutDown"
DroneRed = "DroneRedPiecePutDown"
QueenBlue = "QueenBluePiecePutDown"
QueenRed = "QueenRedPiecePutDown"
[display3d.models.animations.idle]
pawn_blue = "PawnBluePieceIdle"
pawn_red = "PawnRedPieceIdle"
drone_blue = "DroneBluePieceIdle"
drone_red = "DroneRedPieceIdle"
queen_blue = "QueenBluePieceIdle"
queen_red = "QueenRedPieceIdle"
PawnBlue = "PawnBluePieceIdle"
PawnRed = "PawnRedPieceIdle"
DroneBlue = "DroneBluePieceIdle"
DroneRed = "DroneRedPieceIdle"
QueenBlue = "QueenBluePieceIdle"
QueenRed = "QueenRedPieceIdle"
######################

@ -18,6 +18,7 @@ impl Plugin for DebugPlugin {
(
selected_gizmo.run_if(any_with_component::<game::Selected>),
selected_position.run_if(any_with_component::<game::Selected>),
debug_piece.run_if(resource_changed::<display3d::PiecePointer>),
)
.run_if(in_state(DebugState::Enabled)),
)
@ -65,6 +66,9 @@ pub(crate) enum DebugState {
#[derive(Debug, Component)]
struct DebugRoot;
#[derive(Debug, Component)]
struct DebugPiece;
fn toggle_debug_mode(
mut events: EventReader<KeyboardInput>,
current_state: Res<State<DebugState>>,
@ -84,7 +88,7 @@ fn toggle_debug_mode(
}
fn toggle_debug_ui(
mut visibility: Query<&mut Visibility, With<DebugRoot>>,
mut visibility: Query<&mut Visibility, Or<(With<DebugRoot>, With<DebugPiece>)>>,
current_state: Res<State<DebugState>>,
) {
visibility.iter_mut().for_each(|mut vis| {
@ -118,6 +122,32 @@ fn init_debug_ui(mut commands: Commands) {
DebugRoot,
));
});
commands
.spawn((
NodeBundle {
style: Style {
padding: UiRect::all(Val::Px(10.0)),
position_type: PositionType::Absolute,
bottom: Val::Px(0.0),
right: Val::Px(0.0),
..default()
},
background_color: Color::BLACK.into(),
visibility: Visibility::Hidden,
..default()
},
DebugPiece,
))
.with_children(|parent| {
parent.spawn((
TextBundle {
style: Style { ..default() },
..default()
},
DebugPiece,
));
});
}
fn display_diagnostics(
@ -190,3 +220,30 @@ fn selected_position(
.join("");
debug_info.set("Position".into(), val);
}
fn debug_piece(
query: Query<(Entity, Option<&Side>, Option<&Piece>, Option<&BoardIndex>, Option<&display3d::Animating>, Option<&Selected>), With<Piece>>,
pointer: Res<display3d::PiecePointer>,
mut root: Query<(&mut Text, &mut Visibility), With<DebugPiece>>,
// mut commands: Commands,
) {
// query.iter().nth(1).iter().for_each(|e| {
// commands.entity(*e).log_components();
// });
match *pointer {
display3d::PiecePointer(Some(e)) => {
if let Ok((e, si, p, bi, a, sel)) = query.get(e) {
root.iter_mut().for_each(|(mut text, mut vis)| {
let value = format!("Entity: {:?}\nSide: {:?}\nPiece: {:?}\nBoard Index: {:?}\nAnimating: {:?}\nSelected: {:?}", e, si, p, bi, a, sel);
*text = Text::from_section(value, TextStyle { ..default() });
*vis = Visibility::Inherited;
});
}
},
_ => {
root.iter_mut().for_each(|(_, mut vis)| {
*vis = Visibility::Hidden;
});
}
}
}

@ -79,7 +79,7 @@ impl Plugin for Display3dPlugin {
in_state(debug::DebugState::Enabled)
.and_then(on_event::<MouseMotion>())
.or_else(just_pressed(MouseButton::Left))
),
).before(select),
select
.run_if(in_state(GameState::Play))
.run_if(in_state(DisplayState::Display3d))
@ -639,7 +639,7 @@ fn update_pieces(
if animating > 0 {
info!("Piece {:?} is animating. Skipping...", entity);
} else {
info!("Checking piece object scene for {:?}", entity);
debug!("Checking piece object scene for {:?}", entity);
// Find name of this piece's model scene
let scene_tweak_name: Option<String> = match (piece, side) {
@ -655,10 +655,10 @@ fn update_pieces(
let scene_handle = models.named_scenes.get(&scene_tweak_name.unwrap()).unwrap();
// Set scene model for this piece
// if *scene != *scene_handle {
if *scene != *scene_handle {
warn!("Updating scene for piece {:?}", entity);
*scene = scene_handle.clone();
// }
}
}
},
);
@ -688,7 +688,7 @@ fn select(
}
#[derive(Debug, Default, Resource)]
struct PiecePointer(Option<Entity>);
pub(crate) struct PiecePointer(pub Option<Entity>);
/// Select tiles and pieces in 3d
/// There is a bug where we are selecting multiple entities...
@ -840,13 +840,11 @@ fn pick_up(
children.iter_descendants(entity).for_each(|child| {
info!(" Child: {:?}", child);
if let Ok((name, mut player)) = players.get_mut(child) {
info!("Picking up {:?} ({:?}) {:?}", name, entity, piece);
let pickup_animation = format!(
"display3d_models_animations_pick_up_{:?}_{}",
piece,
side.color_str()
)
.to_ascii_lowercase();
"display3d_models_animations_pick_up_{}",
name.as_str(),
);
info!("Picking up {:?} ({:?}) {:?} {:?}", name, entity, piece, pickup_animation);
let pickup_handle = gltf
.named_animations
.get(
@ -857,11 +855,9 @@ fn pick_up(
)
.expect("Pickup Animation");
let idle_animation = format!(
"display3d_models_animations_idle_{:?}_{}",
piece,
side.color_str()
)
.to_ascii_lowercase();
"display3d_models_animations_idle_{}",
name.as_str()
);
let idle_handle = gltf
.named_animations
.get(
@ -919,12 +915,7 @@ fn put_down(
children.iter_descendants(entity).for_each(|child| {
if let Ok((name, mut player)) = players.get_mut(child) {
info!("Putting down {:?}", entity);
let putdown_animation = format!(
"display3d_models_animations_put_down_{:?}_{}",
piece,
side.color_str()
)
.to_ascii_lowercase();
let putdown_animation = format!("display3d_models_animations_put_down_{}", name.as_str());
let putdown_handle = gltf
.named_animations
.get(
@ -943,10 +934,18 @@ fn put_down(
Duration::from_secs_f32(0.75),
)
.set_repeat(RepeatAnimation::Never);
} else {
info!("Clip {:?}({:?}) not compatible with {:?}", putdown_animation, putdown_clip, name);
}
} else {
info!("Clip not found");
}
} else {
info!("Player not found");
}
})
} else {
info!("Piece+Side not found for entity");
}
})
}
@ -1200,7 +1199,7 @@ fn debug_textures(mut events: EventReader<AssetEvent<StandardMaterial>>) {
// Marker for entities which are currently animating
#[derive(Component, Debug)]
struct Animating;
pub(crate) struct Animating;
fn monitor_animations(
active: Query<(Entity, &AnimationPlayer), (Changed<AnimationPlayer>, With<Animating>)>,

Loading…
Cancel
Save