dragonering/src/collision/mod.rs
2026-05-05 00:26:51 +05:00

37 lines
1,015 B
Rust

use bevy::prelude::*;
use collider::Collider;
use event::Collided;
mod collider;
mod event;
pub struct CollisionPlugin;
impl Plugin for CollisionPlugin {
fn build(&self, app: &mut App) {
app.add_systems(Update, detect_collision_system);
}
}
fn detect_collision_system(mut commands: Commands, query: Query<(Entity, &Transform, &Collider)>) {
for (first_entity, first_transform, first_collider) in query {
for (second_entity, second_transform, second_collider) in query {
if first_entity == second_entity {
continue;
}
if first_collider.detect_collision(
first_transform.translation.truncate(),
&second_collider,
second_transform.translation.truncate()
){
commands.trigger(
Collided {
entity:first_entity,
with:second_entity
});
}
}
}
}