feat: update testbeds to bevy 0.13

This commit is contained in:
Sébastien Crozet
2024-03-24 17:25:42 +01:00
committed by Sébastien Crozet
parent f351dad938
commit 2df7258570
12 changed files with 222 additions and 194 deletions

View File

@@ -22,6 +22,9 @@ pub type BevyMaterial = ColorMaterial;
#[cfg(feature = "dim3")]
pub type BevyMaterial = StandardMaterial;
pub type InstancedMaterials = HashMap<Point3<usize>, Handle<BevyMaterial>>;
pub const SELECTED_OBJECT_MATERIAL_KEY: Point3<usize> = point![42, 42, 42];
pub struct GraphicsManager {
rand: Pcg32,
b2sn: HashMap<RigidBodyHandle, Vec<EntityWithGraphics>>,
@@ -30,6 +33,7 @@ pub struct GraphicsManager {
b2wireframe: HashMap<RigidBodyHandle, bool>,
ground_color: Point3<f32>,
prefab_meshes: HashMap<ShapeType, Handle<Mesh>>,
instanced_materials: InstancedMaterials,
pub gfx_shift: Vector<Real>,
}
@@ -43,10 +47,15 @@ impl GraphicsManager {
ground_color: point![0.5, 0.5, 0.5],
b2wireframe: HashMap::new(),
prefab_meshes: HashMap::new(),
instanced_materials: HashMap::new(),
gfx_shift: Vector::zeros(),
}
}
pub fn selection_material(&self) -> Handle<BevyMaterial> {
self.instanced_materials[&SELECTED_OBJECT_MATERIAL_KEY].clone_weak()
}
pub fn clear(&mut self, commands: &mut Commands) {
for sns in self.b2sn.values_mut() {
for sn in sns.iter_mut() {
@@ -54,6 +63,7 @@ impl GraphicsManager {
}
}
self.instanced_materials.clear();
self.b2sn.clear();
self.c2color.clear();
self.b2color.clear();
@@ -159,10 +169,11 @@ impl GraphicsManager {
fn gen_color(rng: &mut Pcg32) -> Point3<f32> {
let mut color: Point3<f32> = rng.gen();
color *= 1.5;
color.x = color.x.min(1.0);
color.y = color.y.min(1.0);
color.z = color.z.min(1.0);
// Quantize the colors a bit to get some amount of auto-instancing from bevy.
color.x = (color.x * 5.0).round() / 5.0;
color.y = (color.y * 5.0).round() / 5.0;
color.z = (color.z * 5.0).round() / 5.0;
color
}
@@ -191,7 +202,7 @@ impl GraphicsManager {
commands: &mut Commands,
meshes: &mut Assets<Mesh>,
materials: &mut Assets<BevyMaterial>,
components: &mut Query<(&mut Transform,)>,
components: &mut Query<&mut Transform>,
handle: RigidBodyHandle,
bodies: &RigidBodySet,
colliders: &ColliderSet,
@@ -214,7 +225,7 @@ impl GraphicsManager {
commands: &mut Commands,
meshes: &mut Assets<Mesh>,
materials: &mut Assets<BevyMaterial>,
components: &mut Query<(&mut Transform,)>,
components: &mut Query<&mut Transform>,
handle: RigidBodyHandle,
bodies: &RigidBodySet,
colliders: &ColliderSet,
@@ -330,6 +341,7 @@ impl GraphicsManager {
meshes,
materials,
&self.prefab_meshes,
&mut self.instanced_materials,
shape,
handle,
*pos,
@@ -345,7 +357,7 @@ impl GraphicsManager {
&mut self,
_bodies: &RigidBodySet,
colliders: &ColliderSet,
components: &mut Query<(&mut Transform,)>,
components: &mut Query<&mut Transform>,
_materials: &mut Assets<BevyMaterial>,
) {
for (_, ns) in self.b2sn.iter_mut() {