You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.1 KiB
Rust

use bevy::{pbr::wireframe::{Wireframe, WireframeColor}, prelude::*};
use crate::components::{ColliderDebug, Velocity, AABB};
pub(crate) fn update_movement(mut moving_objects: Query<(&Velocity, &mut Transform)>, time: Res<Time>)
{
for (velocity, mut transform) in moving_objects.iter_mut()
{
transform.translation += velocity.value * time.delta_seconds();
}
}
pub(crate) fn update_colliders()
{
todo!()
}
pub(crate) fn debug_draw_aabbs(
mut commands: Commands,
aabbs: Query<(Entity, &AABB), Without<ColliderDebug>>,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>
){
// TODO: Spawn one of these for each collider in the scene,
// need to set the scale, rotation and translation to match the AABB
for (entity, _aabb) in aabbs.iter()
{
let cube_mesh_handle: Handle<Mesh> = meshes.add(Cuboid::default());
commands.entity(entity).insert((PbrBundle
{
mesh: cube_mesh_handle,
material: materials.add(StandardMaterial
{
base_color: Color::Rgba { red: 0.0, green: 1.0, blue: 0.0, alpha: 0.25 },
alpha_mode: AlphaMode::Blend,
..default()
}),
transform: Transform::from_xyz(0.0, 7.25, -1.0)
//.with_rotation(Quat::from_rotation_y(45.0))
.with_rotation(Quat::from_rotation_x(45.0)),
..default()
},
Wireframe,
WireframeColor { color: Color::GREEN },
));
}
// TEST CUBE
// Spawns a cube with a colored wireframe and partially transparent body
// Should be able to update the material on the fly to change the colors
// to red when the AABB is intersecting another AABB
// commands.spawn((PbrBundle {
// mesh: cube_mesh_handle,
// material: materials.add(StandardMaterial {
// base_color: Color::Rgba { red: 0.0, green: 1.0, blue: 0.0, alpha: 0.25 },
// alpha_mode: AlphaMode::Blend,
// ..default()
// }),
// transform: Transform::from_xyz(0.0, 7.25, -1.0)
// //.with_rotation(Quat::from_rotation_y(45.0))
// .with_rotation(Quat::from_rotation_x(45.0)),
// ..default()
// },
// Wireframe, WireframeColor { color: Color::GREEN },
// ));
}
pub(crate) fn debug_update_colliders(colliders: Query<&ColliderDebug>)
{
}