mirror of
https://github.com/kaosat-dev/Blender_bevy_components_workflow.git
synced 2024-11-22 03:50:52 +00:00
refactor(examples): Remove RigidBodyProxy (not necessary anymore) (#16)
This commit is contained in:
parent
94b20bdf0e
commit
4866ce1620
@ -17,7 +17,6 @@ impl Plugin for PhysicsPlugin {
|
||||
app
|
||||
.register_type::<AutoAABBCollider>()
|
||||
.register_type::<physics_replace_proxies::Collider>()
|
||||
.register_type::<physics_replace_proxies::RigidBodyProxy>()
|
||||
|
||||
// find a way to make serde's stuff serializable
|
||||
// .register_type::<bevy_rapier3d::dynamics::CoefficientCombineRule>()
|
||||
|
@ -1,21 +1,10 @@
|
||||
use bevy::prelude::*;
|
||||
// use bevy::render::primitives::Aabb;
|
||||
use bevy_rapier3d::geometry::Collider as RapierCollider;
|
||||
use bevy_rapier3d::dynamics::RigidBody as RapierRigidBody;
|
||||
use bevy_rapier3d::prelude::{ComputedColliderShape, ActiveEvents, ActiveCollisionTypes};
|
||||
|
||||
use super::utils::*;
|
||||
|
||||
#[derive(Component, Reflect, Default, Debug, )]
|
||||
#[reflect(Component)]
|
||||
pub enum RigidBodyProxy{
|
||||
#[default]
|
||||
Dynamic,
|
||||
Fixed,
|
||||
Position,
|
||||
Velocity
|
||||
}
|
||||
|
||||
#[derive(Component, Reflect, Default, Debug, )]
|
||||
#[reflect(Component)]
|
||||
pub enum Collider {
|
||||
@ -40,8 +29,6 @@ pub enum AutoAABBCollider {
|
||||
pub fn physics_replace_proxies (
|
||||
meshes: Res<Assets<Mesh>>,
|
||||
mesh_handles: Query<&Handle<Mesh>>,
|
||||
// rigidbodies
|
||||
proxy_rigidbodies: Query<(Entity, &RigidBodyProxy,), (Without<RapierRigidBody>, Added<RigidBodyProxy>)>,
|
||||
mut proxy_colliders: Query<(Entity, &Collider, &Name, &mut Visibility), (Without<RapierCollider>, Added<Collider>)>,
|
||||
// needed for tri meshes
|
||||
children: Query<&Children>,
|
||||
@ -96,26 +83,7 @@ pub fn physics_replace_proxies (
|
||||
// break;
|
||||
// RapierCollider::convex_hull(points)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
// rigidbodies
|
||||
for (entity, proxy_rigidbody) in proxy_rigidbodies.iter() {
|
||||
info!("Generation rigid body from Proxy rigid body !! {:?}", proxy_rigidbody );
|
||||
let rigid_body:RapierRigidBody = match proxy_rigidbody {
|
||||
RigidBodyProxy::Dynamic => RapierRigidBody::Dynamic,
|
||||
RigidBodyProxy::Fixed=> RapierRigidBody::Fixed,
|
||||
RigidBodyProxy::Position => RapierRigidBody::KinematicPositionBased,
|
||||
RigidBodyProxy::Velocity => RapierRigidBody::KinematicVelocityBased,
|
||||
};
|
||||
commands.entity(entity)
|
||||
.insert(rigid_body)
|
||||
// IMPORTANT ! this allows collisions between dynamic & static(fixed) entities
|
||||
// see https://rapier.rs/docs/user_guides/bevy_plugin/colliders#active-collision-types
|
||||
.insert(ActiveCollisionTypes::default() | ActiveCollisionTypes::KINEMATIC_STATIC | ActiveCollisionTypes::STATIC_STATIC | ActiveCollisionTypes::DYNAMIC_STATIC)
|
||||
.insert(ActiveEvents::COLLISION_EVENTS)
|
||||
;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ use bevy_rapier3d::prelude::RigidBody;
|
||||
use std::io::Write;
|
||||
use std::fs::File;
|
||||
|
||||
use crate::core::physics::{Collider, RigidBodyProxy};
|
||||
use crate::core::physics::Collider;
|
||||
use crate::game::{Pickable, Player};
|
||||
|
||||
use super::Saveable;
|
||||
@ -63,7 +63,6 @@ pub fn save_game(
|
||||
|
||||
.deny::<Collider>()
|
||||
.deny::<RigidBody>()
|
||||
.deny::<RigidBodyProxy>()
|
||||
.deny::<Saveable>()
|
||||
|
||||
// camera stuff
|
||||
|
@ -14,7 +14,6 @@ impl Plugin for PhysicsPlugin {
|
||||
app
|
||||
.register_type::<AutoAABBCollider>()
|
||||
.register_type::<physics_replace_proxies::Collider>()
|
||||
.register_type::<physics_replace_proxies::RigidBodyProxy>()
|
||||
|
||||
// find a way to make serde's stuff serializable
|
||||
// .register_type::<bevy_rapier3d::dynamics::CoefficientCombineRule>()
|
||||
|
@ -1,21 +1,10 @@
|
||||
use bevy::prelude::*;
|
||||
// use bevy::render::primitives::Aabb;
|
||||
use bevy_rapier3d::geometry::Collider as RapierCollider;
|
||||
use bevy_rapier3d::dynamics::RigidBody as RapierRigidBody;
|
||||
use bevy_rapier3d::prelude::{ComputedColliderShape, ActiveEvents, ActiveCollisionTypes};
|
||||
|
||||
use super::utils::*;
|
||||
|
||||
#[derive(Component, Reflect, Default, Debug, )]
|
||||
#[reflect(Component)]
|
||||
pub enum RigidBodyProxy{
|
||||
#[default]
|
||||
Dynamic,
|
||||
Fixed,
|
||||
Position,
|
||||
Velocity
|
||||
}
|
||||
|
||||
#[derive(Component, Reflect, Default, Debug, )]
|
||||
#[reflect(Component)]
|
||||
pub enum Collider {
|
||||
@ -26,7 +15,6 @@ pub enum Collider {
|
||||
Mesh,
|
||||
}
|
||||
|
||||
|
||||
#[derive(Component, Reflect, Default, Debug, )]
|
||||
#[reflect(Component)]
|
||||
pub enum AutoAABBCollider {
|
||||
@ -40,8 +28,6 @@ pub enum AutoAABBCollider {
|
||||
pub fn physics_replace_proxies (
|
||||
meshes: Res<Assets<Mesh>>,
|
||||
mesh_handles: Query<&Handle<Mesh>>,
|
||||
// rigidbodies
|
||||
proxy_rigidbodies: Query<(Entity, &RigidBodyProxy,), (Without<RapierRigidBody>, Added<RigidBodyProxy>)>,
|
||||
mut proxy_colliders: Query<(Entity, &Collider, &Name, &mut Visibility), (Without<RapierCollider>, Added<Collider>)>,
|
||||
// needed for tri meshes
|
||||
children: Query<&Children>,
|
||||
@ -96,27 +82,7 @@ pub fn physics_replace_proxies (
|
||||
// break;
|
||||
// RapierCollider::convex_hull(points)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
// rigidbodies
|
||||
for (entity, proxy_rigidbody) in proxy_rigidbodies.iter() {
|
||||
info!("Proxy rigid body !! {:?}", proxy_rigidbody );
|
||||
let rigid_body:RapierRigidBody = match proxy_rigidbody {
|
||||
RigidBodyProxy::Dynamic => RapierRigidBody::Dynamic,
|
||||
RigidBodyProxy::Fixed=> RapierRigidBody::Fixed,
|
||||
RigidBodyProxy::Position => RapierRigidBody::KinematicPositionBased,
|
||||
RigidBodyProxy::Velocity => RapierRigidBody::KinematicVelocityBased,
|
||||
};
|
||||
println!("inserting rigidbody {:?}", rigid_body);
|
||||
commands.entity(entity)
|
||||
.insert(rigid_body)
|
||||
// IMPORTANT ! this allows collisions between dynamic & static(fixed) entities
|
||||
// see https://rapier.rs/docs/user_guides/bevy_plugin/colliders#active-collision-types
|
||||
.insert(ActiveCollisionTypes::default() | ActiveCollisionTypes::KINEMATIC_STATIC | ActiveCollisionTypes::STATIC_STATIC | ActiveCollisionTypes::DYNAMIC_STATIC)
|
||||
.insert(ActiveEvents::COLLISION_EVENTS)
|
||||
;
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user