Move physics parts to a physics module
This commit is contained in:
@@ -1,8 +1,12 @@
|
||||
pub mod physics;
|
||||
|
||||
use bevy::prelude::*;
|
||||
use bevy_spatial::{
|
||||
kdtree::KDTree2, AutomaticUpdate, SpatialAccess, SpatialStructure, TransformMode,
|
||||
};
|
||||
|
||||
use crate::birdoids::physics::{apply_velocity, Force, Velocity};
|
||||
|
||||
const BACKGROUND_COLOR: Color = Color::srgb(0.4, 0.4, 0.4);
|
||||
const PLAYERBOID_COLOR: Color = Color::srgb(1.0, 0.0, 0.0);
|
||||
const TURN_FACTOR: f32 = 1.0;
|
||||
@@ -47,14 +51,8 @@ pub(crate) struct Boid;
|
||||
#[derive(Component)]
|
||||
struct PlayerBoid;
|
||||
|
||||
#[derive(Component, Deref, DerefMut)]
|
||||
pub(crate) struct Velocity(Vec3);
|
||||
|
||||
#[derive(Component, Default, Deref, DerefMut, PartialEq, Debug)]
|
||||
pub(crate) struct Force(Vec3);
|
||||
|
||||
#[derive(Component)]
|
||||
pub(crate) struct TrackedByKdTree;
|
||||
pub struct TrackedByKdTree;
|
||||
|
||||
#[derive(Bundle)]
|
||||
struct BoidBundle {
|
||||
@@ -136,15 +134,6 @@ fn turn_if_edge(
|
||||
}
|
||||
}
|
||||
|
||||
fn apply_velocity(mut query: Query<(&mut Transform, &Velocity, &mut Force)>, time: Res<Time>) {
|
||||
for (mut transform, velocity, mut acceleration) in &mut query {
|
||||
let delta_v = **acceleration * time.delta_secs();
|
||||
**acceleration = Vec3::ZERO;
|
||||
let delta_position = (**velocity + delta_v) * time.delta_secs();
|
||||
transform.translation += delta_position;
|
||||
}
|
||||
}
|
||||
|
||||
fn check_keyboard(
|
||||
keyboard_input: Res<ButtonInput<KeyCode>>,
|
||||
mut app_exit_events: ResMut<Events<bevy::app::AppExit>>,
|
||||
@@ -324,7 +313,7 @@ mod tests {
|
||||
|
||||
use crate::birdoids::{cohesive_force, separation_force};
|
||||
|
||||
use super::{Force, BOID_VIEW_RANGE};
|
||||
use super::{physics::Force, BOID_VIEW_RANGE};
|
||||
|
||||
// forces are relative to the boid's view range, so all
|
||||
// distances need to be fractions of that
|
||||
|
||||
16
src/birdoids/physics.rs
Normal file
16
src/birdoids/physics.rs
Normal file
@@ -0,0 +1,16 @@
|
||||
use bevy::prelude::*;
|
||||
|
||||
#[derive(Component, Deref, DerefMut)]
|
||||
pub struct Velocity(pub Vec3);
|
||||
|
||||
#[derive(Component, Default, Deref, DerefMut, PartialEq, Debug)]
|
||||
pub struct Force(pub Vec3);
|
||||
|
||||
pub fn apply_velocity(mut query: Query<(&mut Transform, &Velocity, &mut Force)>, time: Res<Time>) {
|
||||
for (mut transform, velocity, mut acceleration) in &mut query {
|
||||
let delta_v = **acceleration * time.delta_secs();
|
||||
**acceleration = Vec3::ZERO;
|
||||
let delta_position = (**velocity + delta_v) * time.delta_secs();
|
||||
transform.translation += delta_position;
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@ use bevy::{prelude::*, window::PrimaryWindow};
|
||||
use bevy_spatial::{kdtree::KDTree2, SpatialAccess};
|
||||
|
||||
use crate::birdoids::{
|
||||
center_of_boids, velocity_of_boids, Boid, Force, TrackedByKdTree, Velocity,
|
||||
center_of_boids, physics::Force, physics::Velocity, velocity_of_boids, Boid, TrackedByKdTree,
|
||||
};
|
||||
|
||||
const SCANRADIUS: f32 = 50.0;
|
||||
|
||||
Reference in New Issue
Block a user