extract camera control into seperate system
This commit is contained in:
parent
83a9048cde
commit
b993ca80b9
1 changed files with 24 additions and 19 deletions
|
@ -19,13 +19,6 @@ use super::{
|
||||||
PLAYER_DEPTH,
|
PLAYER_DEPTH,
|
||||||
};
|
};
|
||||||
|
|
||||||
mod camera {
|
|
||||||
use bevy::prelude::*;
|
|
||||||
|
|
||||||
#[derive(Component)]
|
|
||||||
struct CameraAttached;
|
|
||||||
}
|
|
||||||
|
|
||||||
mod movement {}
|
mod movement {}
|
||||||
|
|
||||||
mod animation;
|
mod animation;
|
||||||
|
@ -64,6 +57,7 @@ pub(super) fn player_plugin(app: &mut App) {
|
||||||
(
|
(
|
||||||
move_player,
|
move_player,
|
||||||
debug_player_pos,
|
debug_player_pos,
|
||||||
|
move_camera,
|
||||||
run_animations::<PlayerAnimations>,
|
run_animations::<PlayerAnimations>,
|
||||||
)
|
)
|
||||||
.in_set(IngameSet),
|
.in_set(IngameSet),
|
||||||
|
@ -85,10 +79,11 @@ fn debug_player_pos(query: Query<&Transform, With<Player>>) {
|
||||||
|
|
||||||
/// what this system actually does:
|
/// what this system actually does:
|
||||||
/// - move player
|
/// - move player
|
||||||
/// - act as camera controller
|
/// - <del>act as camera controller</del>
|
||||||
/// - control player animations (fair? i guess??)
|
/// - control player animations (fair? i guess??)
|
||||||
|
/// - count grounded timer
|
||||||
/// - set respawn points?!
|
/// - set respawn points?!
|
||||||
/// - check for player deaths to the void?!?!??
|
/// - <del>check for player deaths to the void?!?!??</del>
|
||||||
fn move_player(
|
fn move_player(
|
||||||
mut commands: Commands,
|
mut commands: Commands,
|
||||||
kb_input: Res<ButtonInput<KeyCode>>,
|
kb_input: Res<ButtonInput<KeyCode>>,
|
||||||
|
@ -100,7 +95,6 @@ fn move_player(
|
||||||
&mut Sprite,
|
&mut Sprite,
|
||||||
&mut PlayerAnimations,
|
&mut PlayerAnimations,
|
||||||
)>,
|
)>,
|
||||||
mut camera_query: Query<&mut Transform, (With<Camera2d>, Without<Player>)>,
|
|
||||||
phys: Query<&KinematicCharacterControllerOutput>,
|
phys: Query<&KinematicCharacterControllerOutput>,
|
||||||
player_coords: Res<PlayerCoords>,
|
player_coords: Res<PlayerCoords>,
|
||||||
world_info: Res<WorldInfo>,
|
world_info: Res<WorldInfo>,
|
||||||
|
@ -108,7 +102,6 @@ fn move_player(
|
||||||
) {
|
) {
|
||||||
let (mut vel, mut p_transform, mut player, mut controller, mut sprite, mut anim_state) =
|
let (mut vel, mut p_transform, mut player, mut controller, mut sprite, mut anim_state) =
|
||||||
query.single_mut();
|
query.single_mut();
|
||||||
let (mut cam_transform) = camera_query.single_mut();
|
|
||||||
let (output) = phys.get_single();
|
let (output) = phys.get_single();
|
||||||
if player.move_cooldown.tick(time.delta()).finished() {
|
if player.move_cooldown.tick(time.delta()).finished() {
|
||||||
let mut moved = false;
|
let mut moved = false;
|
||||||
|
@ -134,9 +127,6 @@ fn move_player(
|
||||||
move_y += 1;
|
move_y += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
let orig = cam_transform.translation;
|
|
||||||
cam_transform.translation -= ((orig - p_transform.translation.xy().extend(0.0)) / 30.0);
|
|
||||||
|
|
||||||
controller.translation = Some(Vec2::new(move_x as f32 * 6., 0. - 0.01));
|
controller.translation = Some(Vec2::new(move_x as f32 * 6., 0. - 0.01));
|
||||||
vel.linvel += Vec2::new(0., move_y as f32 * METER);
|
vel.linvel += Vec2::new(0., move_y as f32 * METER);
|
||||||
|
|
||||||
|
@ -161,15 +151,30 @@ fn move_player(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// if p_transform.translation.y < -10. * player_coords.block_size {
|
|
||||||
// commands.trigger(death::PlayerDeathEvent::Void);
|
|
||||||
// p_transform.translation =
|
|
||||||
// Vec2::new(player_coords.x, player_coords.y).extend(PLAYER_DEPTH);
|
|
||||||
// }
|
|
||||||
player.last_grounded += 1;
|
player.last_grounded += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// for now just extract, later proper refactor.
|
||||||
|
fn move_camera(
|
||||||
|
mut camera_query: Query<&mut Transform, With<Camera2d>>,
|
||||||
|
player_query: Query<
|
||||||
|
&Transform,
|
||||||
|
(
|
||||||
|
With<Player>,
|
||||||
|
// there is no player with a camera, but the engine doesn't know this
|
||||||
|
Without<Camera2d>,
|
||||||
|
),
|
||||||
|
>,
|
||||||
|
) {
|
||||||
|
let mut camera_transform = camera_query.single_mut();
|
||||||
|
let player_transform = player_query.single();
|
||||||
|
|
||||||
|
let camera_transform_cur = camera_transform.translation;
|
||||||
|
camera_transform.translation -=
|
||||||
|
((camera_transform_cur - player_transform.translation.xy().extend(0.)) / 30.)
|
||||||
|
}
|
||||||
|
|
||||||
fn add_player(
|
fn add_player(
|
||||||
mut commands: Commands,
|
mut commands: Commands,
|
||||||
mut meshes: ResMut<Assets<Mesh>>,
|
mut meshes: ResMut<Assets<Mesh>>,
|
||||||
|
|
Loading…
Add table
Reference in a new issue