COLLIDERSSSS!!!!!!!

This commit is contained in:
Schrottkatze 2025-06-26 22:19:05 +02:00
parent 7e531d42a8
commit 643a16f008
Signed by: schrottkatze
SSH key fingerprint: SHA256:/raZeWZ2RLThYkX/nq26frnmA4Bi3qRM/hijRmDBa10
14 changed files with 541 additions and 33 deletions

View file

@ -4,6 +4,7 @@ use bevy::{
asset::{AssetPath, io::AssetSourceEvent},
prelude::*,
};
use bevy_rapier3d::render::DebugRenderContext;
use crate::debug::{ConsoleLog, DebugEvent, DebugMode};
@ -13,6 +14,7 @@ pub fn plugin(app: &mut App) {
(
handle_load_gltf.run_if(in_state(DebugMode::Enabled)),
handle_despawn,
handle_debug_rapier,
),
);
}
@ -74,3 +76,20 @@ fn handle_despawn(
}
}
}
fn handle_debug_rapier(
mut dbg_reader: EventReader<DebugEvent>,
mut logger: ResMut<ConsoleLog>,
mut rapier_ctx: ResMut<DebugRenderContext>,
) {
for ev in dbg_reader.read() {
if &DebugEvent::DebugRapier == ev {
rapier_ctx.enabled = !rapier_ctx.enabled;
logger.write(if rapier_ctx.enabled {
"Enabled Rapier debug rendering."
} else {
"Disabled Rapier debug rendering."
})
}
}
}

View file

@ -1,21 +1,32 @@
use bevy::prelude::*;
use bevy_rapier3d::prelude::{Collider, RigidBody};
use bevy_third_person_camera::ThirdPersonCameraTarget;
use log::info;
use crate::cleanup;
use crate::{AppState, cleanup};
pub fn setup(
mut c: Commands,
asset_server: Res<AssetServer>,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
) {
let scene_handle = asset_server.load(GltfAssetLabel::Scene(0).from_asset("gltf/test.glb"));
c.spawn((
Mesh3d(meshes.add(Cuboid::new(1., 1., 1.))),
MeshMaterial3d(materials.add(Color::BLACK)),
ThirdPersonCameraTarget,
cleanup::Scene,
));
c.spawn(SceneRoot(scene_handle));
info!("Scene spawned!")
pub fn plugin(app: &mut App) {
app.register_type::<StaticColliderConfig>()
// .add_systems(OnEnter(AppState::Ingame), test_spawn_on_init)
.add_systems(Update, add_colliders_to_things_that_need_them);
}
// uses blender coords
#[derive(Component, Clone, Copy, Reflect)]
#[reflect(Component)]
pub struct StaticColliderConfig {
x: f32,
y: f32,
z: f32,
}
fn add_colliders_to_things_that_need_them(
mut c: Commands,
to_modify: Query<(Entity, &StaticColliderConfig), Without<Collider>>,
) {
for (entity, StaticColliderConfig { x, y, z }) in to_modify.iter() {
info!("meow");
c.entity(entity)
.insert(Collider::cuboid(*x / 2., *z / 2., -*y / 2.));
}
}