Skip to content

Commit

Permalink
working boxes2 example
Browse files Browse the repository at this point in the history
  • Loading branch information
Vrixyz committed Jun 12, 2024
1 parent 0d9c1d7 commit 202d756
Show file tree
Hide file tree
Showing 8 changed files with 94 additions and 58 deletions.
13 changes: 9 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,19 @@ opt-level = 1
codegen-units = 1

[patch.crates-io]
#nalgebra = { path = "../nalgebra" }
#parry2d = { path = "../parry/crates/parry2d" }
#parry3d = { path = "../parry/crates/parry3d" }
nalgebra = { path = "../nalgebra" }
# parry2d = { path = "../parry/crates/parry2d" }
# parry3d = { path = "../parry/crates/parry3d" }
#rapier2d = { path = "../rapier/crates/rapier2d" }
#rapier3d = { path = "../rapier/crates/rapier3d" }

#nalgebra = { git = "https://github.com/dimforge/nalgebra", branch = "dev" }
#parry2d = { git = "https://github.com/dimforge/parry", branch = "master" }
#parry3d = { git = "https://github.com/dimforge/parry", branch = "master" }
#rapier2d = { git = "https://github.com/dimforge/rapier", branch = "character-controller" }
#rapier3d = { git = "https://github.com/dimforge/rapier", branch = "character-controller" }
#rapier3d = { git = "https://github.com/dimforge/rapier", branch = "character-controller" }

# nalgebra = { git = 'https://github.com/waywardmonkeys/nalgebra.git', branch = "support-glam-027", features = [
# "glam027",
# "approx",
# ] }
24 changes: 18 additions & 6 deletions bevy_rapier2d/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,20 @@ required-features = ["dim2"]
[features]
default = ["dim2", "async-collider", "debug-render-2d"]
dim2 = []
debug-render-2d = ["bevy/bevy_core_pipeline", "bevy/bevy_sprite", "bevy/bevy_gizmos", "rapier2d/debug-render", "bevy/bevy_asset"]
debug-render-3d = ["bevy/bevy_core_pipeline", "bevy/bevy_pbr", "bevy/bevy_gizmos", "rapier2d/debug-render", "bevy/bevy_asset"]
debug-render-2d = [
"bevy/bevy_core_pipeline",
"bevy/bevy_sprite",
"bevy/bevy_gizmos",
"rapier2d/debug-render",
"bevy/bevy_asset",
]
debug-render-3d = [
"bevy/bevy_core_pipeline",
"bevy/bevy_pbr",
"bevy/bevy_gizmos",
"rapier2d/debug-render",
"bevy/bevy_asset",
]
parallel = ["rapier2d/parallel"]
simd-stable = ["rapier2d/simd-stable"]
simd-nightly = ["rapier2d/simd-nightly"]
Expand All @@ -32,18 +44,18 @@ headless = []
async-collider = ["bevy/bevy_asset", "bevy/bevy_scene"]

[dependencies]
bevy = { version = "0.13", default-features = false }
nalgebra = { version = "0.32.3", features = ["convert-glam025"] }
bevy = { version = "0.14.0-rc.2", default-features = false }
nalgebra = { version = "0.32.5", features = ["convert-glam027"] }
rapier2d = "0.19.0"
bitflags = "2.4"
log = "0.4"
serde = { version = "1", features = ["derive"], optional = true }

[dev-dependencies]
bevy = { version = "0.13", default-features = false, features = ["x11"] }
bevy = { version = "0.14.0-rc.2", default-features = false, features = ["x11"] }
oorandom = "11"
approx = "0.5.1"
glam = { version = "0.25", features = ["approx"] }
glam = { version = "0.27", features = ["approx"] }

[package.metadata.docs.rs]
# Enable all the features when building the docs on docs.rs
Expand Down
28 changes: 22 additions & 6 deletions bevy_rapier3d/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,20 @@ required-features = ["dim3"]
default = ["dim3", "async-collider", "debug-render-3d"]
dim3 = []
debug-render = ["debug-render-3d"]
debug-render-2d = ["bevy/bevy_core_pipeline", "bevy/bevy_sprite", "bevy/bevy_gizmos", "rapier3d/debug-render", "bevy/bevy_asset"]
debug-render-3d = ["bevy/bevy_core_pipeline", "bevy/bevy_pbr", "bevy/bevy_gizmos", "rapier3d/debug-render", "bevy/bevy_asset"]
debug-render-2d = [
"bevy/bevy_core_pipeline",
"bevy/bevy_sprite",
"bevy/bevy_gizmos",
"rapier3d/debug-render",
"bevy/bevy_asset",
]
debug-render-3d = [
"bevy/bevy_core_pipeline",
"bevy/bevy_pbr",
"bevy/bevy_gizmos",
"rapier3d/debug-render",
"bevy/bevy_asset",
]
parallel = ["rapier3d/parallel"]
simd-stable = ["rapier3d/simd-stable"]
simd-nightly = ["rapier3d/simd-nightly"]
Expand All @@ -33,17 +45,21 @@ headless = []
async-collider = ["bevy/bevy_asset", "bevy/bevy_scene"]

[dependencies]
bevy = { version = "0.13", default-features = false }
nalgebra = { version = "0.32.3", features = ["convert-glam025"] }
bevy = { version = "0.14.0-rc.2", default-features = false }
# nalgebra = { version = "0.32.5", features = ["convert-glam027"] }
nalgebra = { path = "../../nalgebra", features = ["convert-glam027"] }
rapier3d = "0.19"
bitflags = "2.4"
log = "0.4"
serde = { version = "1", features = ["derive"], optional = true }

[dev-dependencies]
bevy = { version = "0.13", default-features = false, features = ["x11", "tonemapping_luts"] }
bevy = { version = "0.14.0-rc.2", default-features = false, features = [
"x11",
"tonemapping_luts",
] }
approx = "0.5.1"
glam = { version = "0.25", features = ["approx"] }
glam = { version = "0.27", features = ["approx"] }

[package.metadata.docs.rs]
# Enable all the features when building the docs on docs.rs
Expand Down
2 changes: 1 addition & 1 deletion bevy_rapier3d/examples/boxes3.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use bevy_rapier3d::prelude::*;

fn main() {
App::new()
.insert_resource(ClearColor(Color::rgb(
.insert_resource(ClearColor(Color::srgb(
0xF9 as f32 / 255.0,
0xF9 as f32 / 255.0,
0xFF as f32 / 255.0,
Expand Down
21 changes: 8 additions & 13 deletions src/plugin/plugin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@ use crate::pipeline::{CollisionEvent, ContactForceEvent};
use crate::plugin::configuration::SimulationToRenderTime;
use crate::plugin::{systems, RapierConfiguration, RapierContext};
use crate::prelude::*;
use bevy::{
ecs::{
event::{event_update_system, Events},
schedule::{ScheduleLabel, SystemConfigs},
system::SystemParamItem,
},
utils::intern::Interned,
use bevy::ecs::{
event::{event_update_system, Events},
intern::Interned,
schedule::{ScheduleLabel, SystemConfigs},
system::SystemParamItem,
};
use bevy::{prelude::*, transform::TransformSystem};
use rapier::dynamics::IntegrationParameters;
Expand Down Expand Up @@ -111,17 +109,14 @@ where
.into_configs(),
PhysicsSet::StepSimulation => (
systems::step_simulation::<PhysicsHooks>,
event_update_system::<CollisionEvent>
.before(systems::step_simulation::<PhysicsHooks>),
event_update_system::<ContactForceEvent>
.before(systems::step_simulation::<PhysicsHooks>),
event_update_system.before(systems::step_simulation::<PhysicsHooks>),
)
.into_configs(),
PhysicsSet::Writeback => (
systems::update_colliding_entities,
systems::writeback_rigid_bodies,
systems::writeback_mass_properties,
event_update_system::<MassModifiedEvent>.after(systems::writeback_mass_properties),
event_update_system.after(systems::writeback_mass_properties),
)
.into_configs(),
}
Expand Down Expand Up @@ -241,7 +236,7 @@ where

// Warn user if the timestep mode isn't in Fixed
if self.schedule.as_dyn_eq().dyn_eq(FixedUpdate.as_dyn_eq()) {
let config = app.world.resource::<RapierConfiguration>();
let config = app.world_mut().resource::<RapierConfiguration>();
match config.timestep_mode {
TimestepMode::Fixed { .. } => {}
mode => {
Expand Down
28 changes: 17 additions & 11 deletions src/plugin/systems/collider.rs
Original file line number Diff line number Diff line change
Expand Up @@ -492,14 +492,14 @@ pub mod test {
app.add_plugins(HeadlessRenderPlugin)
.add_systems(Update, init_async_colliders);

let mut meshes = app.world.resource_mut::<Assets<Mesh>>();
let mut meshes = app.world_mut().resource_mut::<Assets<Mesh>>();
let cube = meshes.add(Cuboid::default());

let entity = app.world.spawn((cube, AsyncCollider::default())).id();
let entity = app.world_mut().spawn((cube, AsyncCollider::default())).id();

app.update();

let entity = app.world.entity(entity);
let entity = app.world().entity(entity);
assert!(
entity.get::<Collider>().is_some(),
"Collider component should be added"
Expand All @@ -520,19 +520,22 @@ pub mod test {
app.add_plugins(HeadlessRenderPlugin)
.add_systems(PostUpdate, init_async_scene_colliders);

let mut meshes = app.world.resource_mut::<Assets<Mesh>>();
let mut meshes = app.world_mut().resource_mut::<Assets<Mesh>>();
let cube_handle = meshes.add(Cuboid::default());
let capsule_handle = meshes.add(Capsule3d::default());
let cube = app.world.spawn((Name::new("Cube"), cube_handle)).id();
let capsule = app.world.spawn((Name::new("Capsule"), capsule_handle)).id();
let cube = app.world_mut().spawn((Name::new("Cube"), cube_handle)).id();
let capsule = app
.world_mut()
.spawn((Name::new("Capsule"), capsule_handle))
.id();

let mut scenes = app.world.resource_mut::<Assets<Scene>>();
let mut scenes = app.world_mut().resource_mut::<Assets<Scene>>();
let scene = scenes.add(Scene::new(World::new()));

let mut named_shapes = bevy::utils::HashMap::new();
named_shapes.insert("Capsule".to_string(), None);
let parent = app
.world
.world_mut()
.spawn((
scene,
AsyncSceneCollider {
Expand All @@ -546,15 +549,18 @@ pub mod test {
app.update();

assert!(
app.world.entity(cube).get::<Collider>().is_some(),
app.world_mut().entity(cube).get::<Collider>().is_some(),
"Collider component should be added for cube"
);
assert!(
app.world.entity(capsule).get::<Collider>().is_none(),
app.world_mut().entity(capsule).get::<Collider>().is_none(),
"Collider component shouldn't be added for capsule"
);
assert!(
app.world.entity(parent).get::<AsyncCollider>().is_none(),
app.world_mut()
.entity(parent)
.get::<AsyncCollider>()
.is_none(),
"AsyncSceneCollider component should be removed after Collider components creation"
);
}
Expand Down
32 changes: 16 additions & 16 deletions src/plugin/systems/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,11 +89,11 @@ mod tests {
app.add_event::<CollisionEvent>()
.add_systems(Update, update_colliding_entities);

let entity1 = app.world.spawn(CollidingEntities::default()).id();
let entity2 = app.world.spawn(CollidingEntities::default()).id();
let entity1 = app.world_mut().spawn(CollidingEntities::default()).id();
let entity2 = app.world_mut().spawn(CollidingEntities::default()).id();

let mut collision_events = app
.world
.world_mut()
.get_resource_mut::<Events<CollisionEvent>>()
.unwrap();
collision_events.send(CollisionEvent::Started(
Expand All @@ -105,7 +105,7 @@ mod tests {
app.update();

let colliding_entities1 = app
.world
.world()
.entity(entity1)
.get::<CollidingEntities>()
.unwrap();
Expand All @@ -121,7 +121,7 @@ mod tests {
);

let colliding_entities2 = app
.world
.world()
.entity(entity2)
.get::<CollidingEntities>()
.unwrap();
Expand All @@ -137,7 +137,7 @@ mod tests {
);

let mut collision_events = app
.world
.world_mut()
.get_resource_mut::<Events<CollisionEvent>>()
.unwrap();
collision_events.send(CollisionEvent::Stopped(
Expand All @@ -149,7 +149,7 @@ mod tests {
app.update();

let colliding_entities1 = app
.world
.world()
.entity(entity1)
.get::<CollidingEntities>()
.unwrap();
Expand All @@ -159,7 +159,7 @@ mod tests {
);

let colliding_entities2 = app
.world
.world()
.entity(entity2)
.get::<CollidingEntities>()
.unwrap();
Expand Down Expand Up @@ -198,22 +198,22 @@ mod tests {

for (child_transform, parent_transform) in [zero, same, different] {
let child = app
.world
.world_mut()
.spawn((
TransformBundle::from(child_transform),
RigidBody::Fixed,
Collider::ball(1.0),
))
.id();

app.world
app.world_mut()
.spawn(TransformBundle::from(parent_transform))
.push_children(&[child]);

app.update();

let child_transform = app.world.entity(child).get::<GlobalTransform>().unwrap();
let context = app.world.resource::<RapierContext>();
let child_transform = app.world().entity(child).get::<GlobalTransform>().unwrap();
let context = app.world().resource::<RapierContext>();
let child_handle = context.entity2body[&child];
let child_body = context.bodies.get(child_handle).unwrap();
let body_transform = utils::iso_to_transform(child_body.position());
Expand Down Expand Up @@ -257,25 +257,25 @@ mod tests {

for (child_transform, parent_transform) in [zero, same, different] {
let child = app
.world
.world_mut()
.spawn((TransformBundle::from(child_transform), Collider::ball(1.0)))
.id();

let parent = app
.world
.world_mut()
.spawn((TransformBundle::from(parent_transform), RigidBody::Fixed))
.push_children(&[child])
.id();

app.update();

let child_transform = app
.world
.world()
.entity(child)
.get::<GlobalTransform>()
.unwrap()
.compute_transform();
let context = app.world.resource::<RapierContext>();
let context = app.world().resource::<RapierContext>();
let parent_handle = context.entity2body[&parent];
let parent_body = context.bodies.get(parent_handle).unwrap();
let child_collider_handle = parent_body.colliders()[0];
Expand Down
4 changes: 3 additions & 1 deletion src/render/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,9 @@ impl<'world, 'state, 'a, 'b> BevyLinesRenderBackend<'world, 'state, 'a, 'b> {
_ => None,
};

color.map(|co| co.as_hsla_f32()).unwrap_or(default)
color
.map(|co: Color| co.linear().to_f32_array())
.unwrap_or(default)
}
}

Expand Down

0 comments on commit 202d756

Please sign in to comment.