Проектная работа - WIP
This commit is contained in:
@@ -6,11 +6,7 @@ use crate::{
|
||||
};
|
||||
|
||||
/// Система поворота головы змеи
|
||||
pub fn head_rotation(
|
||||
input: Res<ButtonInput<KeyCode>>,
|
||||
query: Single<(&mut Transform, &mut Direction), With<Head>>,
|
||||
mut snake_path: ResMut<SnakePath>,
|
||||
) {
|
||||
pub fn head_rotation(input: Res<ButtonInput<KeyCode>>, query: Single<(&mut Transform, &mut Direction), With<Head>>, mut snake_path: ResMut<SnakePath>) {
|
||||
use core::f32::consts::PI;
|
||||
|
||||
let (mut transform, mut direction) = query.into_inner();
|
||||
@@ -33,17 +29,14 @@ pub fn head_rotation(
|
||||
}
|
||||
|
||||
/// Система движения для всех движущихся сущностей
|
||||
pub fn moving(
|
||||
time: Res<Time<Fixed>>,
|
||||
query: Query<(&mut Transform, &mut Inert, &Direction, &Velocity, Entity)>,
|
||||
mut commands: Commands,
|
||||
) {
|
||||
pub fn moving(time: Res<Time<Fixed>>, query: Query<(&mut Transform, &mut Inert, &Direction, &Velocity, Entity)>, mut commands: Commands) {
|
||||
for (mut transform, mut inert, direction, Velocity(velocity), entity) in query.into_iter() {
|
||||
let src_transftorm = transform.clone();
|
||||
let delta = velocity * time.delta_secs();
|
||||
let src = inert.0.get_coord(&transform);
|
||||
let sign = inert.0.get_change_sign();
|
||||
let dst = src + sign * delta;
|
||||
let mut splited = _split_by_grid_tracing(src, dst, GRID_SIZE as f32).into_iter();
|
||||
let mut splited = split_by_grid(src, dst, GRID_SIZE as f32).into_iter();
|
||||
let first = splited.next().unwrap_or((0.0, 0.0));
|
||||
inert.0.set_coord(&mut transform, first.0);
|
||||
if let Some(second) = splited.next() {
|
||||
@@ -53,16 +46,13 @@ pub fn moving(
|
||||
let sign = inert.0.get_change_sign();
|
||||
let dst = src + sign * delta;
|
||||
inert.0.set_coord(&mut transform, dst);
|
||||
commands.trigger(GridBarier(entity));
|
||||
commands.trigger(GridBarier::new(entity, (&src_transftorm).into(), transform.into()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn _split_by_grid_tracing(src: f32, dst: f32, grid: f32) -> Vec<(f32, f32)> {
|
||||
let result = split_by_grid(src, dst, grid);
|
||||
trace!(
|
||||
"\tsplit_by_grid({:?}, {:?}, {:?}) -> {:?}",
|
||||
src, dst, grid, result
|
||||
);
|
||||
trace!("\tsplit_by_grid({:?}, {:?}, {:?}) -> {:?}", src, dst, grid, result);
|
||||
result
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user