Compare commits
3 Commits
92805832f2
...
7eba1d88fe
Author | SHA1 | Date |
---|---|---|
Zynh Ludwig | 7eba1d88fe | |
Zynh Ludwig | f4079d173a | |
Zynh Ludwig | 8d4b01f1ab |
34
src/main.rs
34
src/main.rs
|
@ -3,7 +3,7 @@
|
||||||
mod boid_mesh;
|
mod boid_mesh;
|
||||||
mod boundary;
|
mod boundary;
|
||||||
|
|
||||||
use bevy::{color::palettes::tailwind, prelude::*, sprite::MaterialMesh2dBundle};
|
use bevy::{color::palettes::tailwind, prelude::*, reflect::List, sprite::MaterialMesh2dBundle};
|
||||||
use boid_mesh::BoidMesh;
|
use boid_mesh::BoidMesh;
|
||||||
use rand::{Rng, SeedableRng};
|
use rand::{Rng, SeedableRng};
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ fn main() {
|
||||||
Update,
|
Update,
|
||||||
(
|
(
|
||||||
(seperation, cohesion, alignment),
|
(seperation, cohesion, alignment),
|
||||||
move_boids,
|
(accelerate, move_boids).chain(),
|
||||||
boundary::boid_border_teleport,
|
boundary::boid_border_teleport,
|
||||||
)
|
)
|
||||||
.chain(),
|
.chain(),
|
||||||
|
@ -54,11 +54,37 @@ struct BoidBundle {
|
||||||
cache: BoidAccelerationBundle,
|
cache: BoidAccelerationBundle,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Component, Default)]
|
||||||
|
struct LocalCache(Vec<Entity>);
|
||||||
|
|
||||||
|
fn is_local(a: Vec3, b: Vec3) -> bool {
|
||||||
|
const LOCAL_DISTANCE: f32 = 100.;
|
||||||
|
|
||||||
|
a.distance(b) < LOCAL_DISTANCE
|
||||||
|
}
|
||||||
|
|
||||||
|
fn build_local_cache(
|
||||||
|
mut boids_with_cache: Query<(Entity, &Transform, &mut LocalCache), With<Boid>>,
|
||||||
|
other_boids: Query<(Entity, &Transform), With<Boid>>,
|
||||||
|
) {
|
||||||
|
boids_with_cache
|
||||||
|
.par_iter_mut()
|
||||||
|
.for_each(|(id, transform, mut local_cache)| {
|
||||||
|
local_cache.0.clear();
|
||||||
|
|
||||||
|
for (other_id, other_transform) in other_boids.iter() {
|
||||||
|
if id != other_id && is_local(transform.translation, other_transform.translation) {
|
||||||
|
local_cache.0.push(other_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
fn seperation(mut boids: Query<(Entity, &Transform, &mut SeperationAcceleration), With<Boid>>) {}
|
fn seperation(mut boids: Query<(Entity, &Transform, &mut SeperationAcceleration), With<Boid>>) {}
|
||||||
|
|
||||||
fn cohesion(mut boids: Query<(Entity, &Transform, &mut SeperationAcceleration), With<Boid>>) {}
|
fn cohesion(mut boids: Query<(Entity, &Transform, &mut CohesionAcceleration), With<Boid>>) {}
|
||||||
|
|
||||||
fn alignment(mut boids: Query<(Entity, &Transform, &mut SeperationAcceleration), With<Boid>>) {}
|
fn alignment(mut boids: Query<(Entity, &Transform, &mut AlignmentAcceleration), With<Boid>>) {}
|
||||||
|
|
||||||
fn accelerate(
|
fn accelerate(
|
||||||
mut boids: Query<
|
mut boids: Query<
|
||||||
|
|
Loading…
Reference in New Issue