Rename Acceleration to Force

Closes #2

Acceleration is mass * force.
This doesn't materially change anything, but it will make it easier to
give the boids a mass component. The change will not require updates to
most of the systems, only the physics integrator and the boids bundle.
This commit is contained in:
2024-07-12 16:47:27 -05:00
parent 092f0a25dd
commit 18885d9b94
2 changed files with 12 additions and 12 deletions

View File

@@ -52,7 +52,7 @@ struct PlayerBoid;
pub(crate) struct Velocity(Vec3);
#[derive(Component, Deref, DerefMut)]
pub(crate) struct Acceleration(Vec3);
pub(crate) struct Force(Vec3);
#[derive(Component)]
pub(crate) struct TrackedByKdTree;
@@ -61,7 +61,7 @@ pub(crate) struct TrackedByKdTree;
struct BoidBundle {
boid: Boid,
velocity: Velocity,
accel: Acceleration,
accel: Force,
spatial: TrackedByKdTree,
}
@@ -70,7 +70,7 @@ impl BoidBundle {
Self {
boid: Boid,
velocity: Velocity(vel),
accel: Acceleration(Vec3::ZERO),
accel: Force(Vec3::ZERO),
spatial: TrackedByKdTree,
}
}
@@ -114,7 +114,7 @@ fn spawn_boids(
));
}
fn space_brakes(mut mobs: Query<&mut Acceleration, With<Boid>>) {
fn space_brakes(mut mobs: Query<&mut Force, With<Boid>>) {
for mut accel in &mut mobs {
let braking_dir = -accel.0 * SPACEBRAKES_COEFFICIENT;
accel.0 += braking_dir;
@@ -147,7 +147,7 @@ fn turn_if_edge(
}
fn apply_velocity(
mut query: Query<(&mut Transform, &Velocity, &mut Acceleration)>,
mut query: Query<(&mut Transform, &Velocity, &mut Force)>,
time: Res<Time>,
) {
for (mut transform, velocity, mut acceleration) in &mut query {
@@ -187,7 +187,7 @@ fn check_keyboard(
fn cohesion(
spatial_tree: Res<KDTree2<TrackedByKdTree>>,
mut boids: Query<(&Transform, &mut Acceleration), With<Boid>>,
mut boids: Query<(&Transform, &mut Force), With<Boid>>,
) {
// for each boid
// find neighbors
@@ -205,7 +205,7 @@ fn cohesion(
fn separation(
spatial_tree: Res<KDTree2<TrackedByKdTree>>,
mut boids: Query<(&Transform, &mut Acceleration), With<Boid>>,
mut boids: Query<(&Transform, &mut Force), With<Boid>>,
) {
// for each boid
// find neighbors
@@ -226,14 +226,14 @@ fn separation(
}
// TODO: Make this an exponential so force gets stronger faster as the points approach.
fn separation_force(us: Vec2, neighbor: Vec2) -> Acceleration {
fn separation_force(us: Vec2, neighbor: Vec2) -> Force {
let distance = neighbor - us;
Acceleration(-(distance * SEPARATION_FACTOR).extend(0.0))
Force(-(distance * SEPARATION_FACTOR).extend(0.0))
}
fn alignment(
spatial_tree: Res<KDTree2<TrackedByKdTree>>,
mut boids: Query<(&Transform, &Velocity, &mut Acceleration), With<Boid>>,
mut boids: Query<(&Transform, &Velocity, &mut Force), With<Boid>>,
boid_velocities: Query<&Velocity, With<Boid>>,
) {
// for each boid

View File

@@ -2,7 +2,7 @@ use bevy::{prelude::*, sprite::MaterialMesh2dBundle, window::PrimaryWindow};
use bevy_spatial::{kdtree::KDTree2, SpatialAccess};
use crate::birdoids_plugin::{
center_of_boids, velocity_of_boids, Acceleration, Boid, TrackedByKdTree, Velocity,
center_of_boids, velocity_of_boids, Force, Boid, TrackedByKdTree, Velocity,
};
const SCANRADIUS: f32 = 50.0;
@@ -117,7 +117,7 @@ fn print_gizmo_config(query: Query<(&SelectionMode, &ScannerMode), With<Cursor>>
}
fn do_scan(
boids_query: Query<(&Transform, &Velocity, &Acceleration), With<Boid>>,
boids_query: Query<(&Transform, &Velocity, &Force), With<Boid>>,
scanner_query: Query<(&Transform, &SelectionMode, &ScannerMode), With<Cursor>>,
spatial_tree: Res<KDTree2<TrackedByKdTree>>,
/* Push info to summary somewhere */