Skip to content

Commit

Permalink
Merge upstream main into split_rapiercontext
Browse files Browse the repository at this point in the history
  • Loading branch information
Vrixyz committed Dec 9, 2024
1 parent 7cff2c2 commit 6698a9e
Show file tree
Hide file tree
Showing 66 changed files with 428 additions and 437 deletions.
56 changes: 23 additions & 33 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,31 @@

### Modified

- `RapierContext` has been split in multiple `Component`s:
- `RapierContextColliders`
- `RapierContextJoints`
- `RapierContextSimulation`
- `RapierRigidBodySet`

## v0.28.0 (09 December 2024)

### Modified

- Update from rapier `0.21` to rapier `0.22`,
see [rapier's changelog](https://github.com/dimforge/rapier/blob/master/CHANGELOG.md).
- Update bevy to 0.15.
- `RapierContext`, `RapierConfiguration` and `RenderToSimulationTime` are now a `Component` instead of resources.
- Rapier now supports multiple independent physics worlds, see example `multi_world3` for usage details.
- Migration guide:
- `ResMut<mut RapierContext>` -> `WriteDefaultRapierContext`
- `Res<RapierContext>` -> `ReadDefaultRapierContext`
- Access to `RapierConfiguration` and `RenderToSimulationTime` should query for it
on the responsible entity owning the `RenderContext`.
- If you are building a library on top of `bevy_rapier` and would want to support multiple independent physics worlds too,
you can check out the details of [#545](https://github.com/dimforge/bevy_rapier/pull/545)
to get more context and information.
- `colliders_with_aabb_intersecting_aabb` now takes `bevy::math::bounding::Aabb3d` (or `[..]::Aabb2d` in 2D) as parameter.
- it is now accessible with `headless` feature enabled.

### Fix

Expand All @@ -21,39 +44,6 @@ which was its hardcoded behaviour.
`RapierDebugColliderPlugin` and `DebugRenderContext`, as well as individual collider setup via
a `ColliderDebug` component.

### Modified

- Rapier now supports multiple independent physics contexts, see example `multi_contexts3` for usage details.
- Each entity managed by bevy_rapier has a `RapierContextEntityLink` pointing to the entity containing the components above.
- If you are building a library on top of `bevy_rapier` and would want to support multiple independent physics contexts too,
you can check out the details of [#545](https://github.com/dimforge/bevy_rapier/pull/545)
to find more information.
- Rapier now supports multiple independent physics contexts, see example `multi_contexts3` for usage details.
- Migration guide:
- `ResMut<mut RapierContext>` -> `WriteDefaultRapierContext`
- `Res<RapierContext>` -> `ReadDefaultRapierContext`
- Access to `RapierConfiguration` and `RenderToSimulationTime` should query for it
on the responsible entity owning the `RenderContext`.
- If you are building a library on top of `bevy_rapier` and would want to support multiple independent physics contexts too,
you can check out the details of [#545](https://github.com/dimforge/bevy_rapier/pull/545)
to get more context and information.
- `colliders_with_aabb_intersecting_aabb` now takes `bevy::math::bounding::Aabb3d` (or `[..]::Aabb2d` in 2D) as parameter.
- it is now accessible with `headless` feature enabled.
- `RapierContext`, `RapierConfiguration` and `SimulationToRenderTime` are no longer `Resource`s.
- They have been split in multiple `Component`s:
- `RapierContextColliders`
- `RapierContextJoints`
- `RapierContextSimulation`
- `RapierRigidBodySet`
- `SimulationToRenderTime`
- `RapierConfiguration`
- Migration guide:
- `ResMut<mut RapierContext>` -> `WriteRapierContext`
- `Res<RapierContext>` -> `ReadRapierContext`
- Access to `RapierConfiguration` and `SimulationToRenderTime` should query for it
on the responsible entity owning the `RenderContext`.
- See [`ray_casting`](bevy_rapier3d/examples/ray_casting3.rs) example for a usage example.

## v0.27.0 (07 July 2024)

**This is an update from rapier 0.19 to Rapier 0.21 which includes several stability improvements
Expand Down
6 changes: 0 additions & 6 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,6 @@
members = ["bevy_rapier2d", "bevy_rapier3d", "bevy_rapier_benches3d"]
resolver = "2"

[workspace.lints]
rust.unexpected_cfgs = { level = "warn", check-cfg = [
'cfg(feature, values("dim2", "dim3"))',
] }

[profile.dev]
# Use slightly better optimization by default, as examples otherwise seem laggy.
opt-level = 1
Expand All @@ -20,7 +15,6 @@ codegen-units = 1
#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" }
Expand Down
24 changes: 14 additions & 10 deletions bevy_rapier2d/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "bevy_rapier2d"
version = "0.27.0"
version = "0.28.0"
authors = ["Sébastien Crozet <developer@crozet.re>"]
description = "2-dimensional physics engine in Rust, official Bevy plugin."
documentation = "http://docs.rs/bevy_rapier2d"
Expand All @@ -18,7 +18,10 @@ path = "../src/lib.rs"
required-features = ["dim2"]

[lints]
workspace = true
rust.unexpected_cfgs = { level = "warn", check-cfg = [
'cfg(feature, values("dim3"))',
] }
clippy = { needless_lifetimes = "allow" }

[features]
default = ["dim2", "async-collider", "debug-render-2d"]
Expand Down Expand Up @@ -46,28 +49,29 @@ wasm-bindgen = ["rapier2d/wasm-bindgen"]
serde-serialize = ["rapier2d/serde-serialize", "bevy/serialize", "serde"]
enhanced-determinism = ["rapier2d/enhanced-determinism"]
headless = []
async-collider = ["bevy/bevy_asset", "bevy/bevy_scene"]
async-collider = ["bevy/bevy_asset", "bevy/bevy_scene", "bevy/bevy_render"]

[dependencies]
bevy = { version = "0.14", default-features = false }
nalgebra = { version = "0.33", features = ["convert-glam027"] }
bevy = { version = "0.15", default-features = false }
nalgebra = { version = "0.33", features = ["convert-glam029"] }
rapier2d = "0.22"
bitflags = "2.4"
log = "0.4"
serde = { version = "1", features = ["derive"], optional = true }

[dev-dependencies]
bevy = { version = "0.14", default-features = false, features = [
bevy = { version = "0.15", default-features = false, features = [
"x11",
"bevy_state",
"bevy_window",
"bevy_debug_stepping",
] }
oorandom = "11"
approx = "0.5.1"
glam = { version = "0.27", features = ["approx"] }
bevy-inspector-egui = "0.25.1"
bevy_egui = "0.28.0"
bevy_mod_debugdump = "0.11"
glam = { version = "0.29", features = ["approx"] }
bevy-inspector-egui = "0.28.0"
bevy_egui = "0.31"
bevy_mod_debugdump = "0.12"

[package.metadata.docs.rs]
# Enable all the features when building the docs on docs.rs
Expand Down
9 changes: 3 additions & 6 deletions bevy_rapier2d/examples/boxes2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,7 @@ fn main() {
}

pub fn setup_graphics(mut commands: Commands) {
commands.spawn(Camera2dBundle {
transform: Transform::from_xyz(0.0, 20.0, 0.0),
..default()
});
commands.spawn((Camera2d::default(), Transform::from_xyz(0.0, 20.0, 0.0)));
}

pub fn setup_physics(mut commands: Commands) {
Expand All @@ -32,7 +29,7 @@ pub fn setup_physics(mut commands: Commands) {
let ground_height = 10.0;

commands.spawn((
TransformBundle::from(Transform::from_xyz(0.0, 0.0 * -ground_height, 0.0)),
Transform::from_xyz(0.0, 0.0 * -ground_height, 0.0),
Collider::cuboid(ground_size, ground_height),
));

Expand All @@ -54,7 +51,7 @@ pub fn setup_physics(mut commands: Commands) {
let y = j as f32 * shift + centery + 30.0;

commands.spawn((
TransformBundle::from(Transform::from_xyz(x, y, 0.0)),
Transform::from_xyz(x, y, 0.0),
RigidBody::Dynamic,
Collider::cuboid(rad, rad),
));
Expand Down
11 changes: 4 additions & 7 deletions bevy_rapier2d/examples/contact_filter2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,7 @@ fn main() {
}

fn setup_graphics(mut commands: Commands) {
commands.spawn(Camera2dBundle {
transform: Transform::from_xyz(0.0, 20.0, 0.0),
..default()
});
commands.spawn((Camera2d::default(), Transform::from_xyz(0.0, 20.0, 0.0)));
}

pub fn setup_physics(mut commands: Commands) {
Expand All @@ -58,13 +55,13 @@ pub fn setup_physics(mut commands: Commands) {
let ground_size = 100.0;

commands.spawn((
TransformBundle::from(Transform::from_xyz(0.0, -100.0, 0.0)),
Transform::from_xyz(0.0, -100.0, 0.0),
Collider::cuboid(ground_size, 12.0),
CustomFilterTag::GroupA,
));

commands.spawn((
TransformBundle::from(Transform::from_xyz(0.0, 0.0, 0.0)),
Transform::from_xyz(0.0, 0.0, 0.0),
Collider::cuboid(ground_size, 12.0),
CustomFilterTag::GroupB,
));
Expand All @@ -89,7 +86,7 @@ pub fn setup_physics(mut commands: Commands) {
group_id += 1;

commands.spawn((
TransformBundle::from(Transform::from_xyz(x, y, 0.0)),
Transform::from_xyz(x, y, 0.0),
RigidBody::Dynamic,
Collider::cuboid(rad, rad),
ActiveHooks::FILTER_CONTACT_PAIRS,
Expand Down
9 changes: 3 additions & 6 deletions bevy_rapier2d/examples/custom_system_setup2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,7 @@ fn despawn_one_box(
}

fn setup_graphics(mut commands: Commands) {
commands.spawn(Camera2dBundle {
transform: Transform::from_xyz(0.0, 20.0, 0.0),
..default()
});
commands.spawn((Camera2d::default(), Transform::from_xyz(0.0, 20.0, 0.0)));
}

pub fn setup_physics(mut commands: Commands) {
Expand All @@ -75,7 +72,7 @@ pub fn setup_physics(mut commands: Commands) {
let ground_height = 10.0;

commands.spawn((
TransformBundle::from(Transform::from_xyz(0.0, 0.0 * -ground_height, 0.0)),
Transform::from_xyz(0.0, 0.0 * -ground_height, 0.0),
Collider::cuboid(ground_size, ground_height),
));

Expand All @@ -97,7 +94,7 @@ pub fn setup_physics(mut commands: Commands) {
let y = j as f32 * shift + centery + 30.0;

commands.spawn((
TransformBundle::from(Transform::from_xyz(x, y, 0.0)),
Transform::from_xyz(x, y, 0.0),
RigidBody::Dynamic,
Collider::cuboid(rad, rad),
));
Expand Down
24 changes: 9 additions & 15 deletions bevy_rapier2d/examples/debug_despawn2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ pub fn setup_game(mut commands: Commands, mut game: ResMut<Game>) {
byte_rgb(255, 0, 0),
];

commands.spawn(Camera2dBundle::default());
commands.spawn(Camera2d::default());

setup_board(&mut commands, &game);

Expand Down Expand Up @@ -131,15 +131,12 @@ fn setup_board(commands: &mut Commands, game: &Game) {

// Add floor
commands.spawn((
SpriteBundle {
sprite: Sprite {
color: Color::srgb(0.5, 0.5, 0.5),
custom_size: Some(Vec2::new(game.n_lanes as f32 * 30.0, 60.0)),
..Default::default()
},
transform: Transform::from_xyz(0.0, floor_y - 30.0 * 0.5, 0.0),
Sprite {
color: Color::srgb(0.5, 0.5, 0.5),
custom_size: Some(Vec2::new(game.n_lanes as f32 * 30.0, 60.0)),
..Default::default()
},
Transform::from_xyz(0.0, floor_y - 30.0 * 0.5, 0.0),
RigidBody::Fixed,
Collider::cuboid(game.n_lanes as f32 * 30.0 / 2.0, 60.0 / 2.0),
));
Expand Down Expand Up @@ -200,15 +197,12 @@ fn spawn_block(

commands
.spawn((
SpriteBundle {
sprite: Sprite {
color: game.cube_colors[kind as usize],
custom_size: Some(Vec2::new(30.0, 30.0)),
..Default::default()
},
transform: Transform::from_xyz(x, y, 0.0),
Sprite {
color: game.cube_colors[kind as usize],
custom_size: Some(Vec2::new(30.0, 30.0)),
..Default::default()
},
Transform::from_xyz(x, y, 0.0),
RigidBody::Dynamic,
Damping {
linear_damping,
Expand Down
17 changes: 7 additions & 10 deletions bevy_rapier2d/examples/debug_toggle2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,10 @@ fn main() {
}

pub fn setup_graphics(mut commands: Commands) {
commands.spawn(Camera3dBundle {
transform: Transform::from_xyz(-30.0, 30.0, 100.0)
.looking_at(Vec3::new(0.0, 10.0, 0.0), Vec3::Y),
..Default::default()
});
commands.spawn((
Camera3d::default(),
Transform::from_xyz(-30.0, 30.0, 100.0).looking_at(Vec3::new(0.0, 10.0, 0.0), Vec3::Y),
));
}

#[derive(Component)]
Expand All @@ -49,7 +48,7 @@ pub fn setup_physics(mut commands: Commands) {
let ground_height = 0.1;

commands.spawn((
TransformBundle::from(Transform::from_xyz(0.0, -ground_height, 0.0)),
Transform::from_xyz(0.0, -ground_height, 0.0),
Collider::cuboid(ground_size, ground_height),
));

Expand Down Expand Up @@ -81,12 +80,10 @@ pub fn setup_physics(mut commands: Commands) {
color += 1;

commands
.spawn(TransformBundle::from(Transform::from_rotation(
Quat::from_rotation_x(0.2),
)))
.spawn(Transform::from_rotation(Quat::from_rotation_x(0.2)))
.with_children(|child| {
child.spawn((
TransformBundle::from(Transform::from_xyz(x, y, z)),
Transform::from_xyz(x, y, z),
RigidBody::Dynamic,
Collider::cuboid(rad, rad),
ColliderDebugColor(colors[color % 3]),
Expand Down
11 changes: 4 additions & 7 deletions bevy_rapier2d/examples/despawn2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,7 @@ pub fn setup_graphics(
resize.timer = Timer::from_seconds(6.0, TimerMode::Once);
despawn.timer = Timer::from_seconds(5.0, TimerMode::Once);

commands.spawn(Camera2dBundle {
transform: Transform::from_xyz(0.0, 20.0, 0.0),
..default()
});
commands.spawn((Camera2d::default(), Transform::from_xyz(0.0, 20.0, 0.0)));
}

pub fn setup_physics(mut commands: Commands) {
Expand All @@ -58,12 +55,12 @@ pub fn setup_physics(mut commands: Commands) {
commands.spawn((Collider::cuboid(ground_size, 12.0), Despawn));

commands.spawn((
TransformBundle::from(Transform::from_xyz(ground_size, ground_size * 2.0, 0.0)),
Transform::from_xyz(ground_size, ground_size * 2.0, 0.0),
Collider::cuboid(12.0, ground_size * 2.0),
));

commands.spawn((
TransformBundle::from(Transform::from_xyz(-ground_size, ground_size * 2.0, 0.0)),
Transform::from_xyz(-ground_size, ground_size * 2.0, 0.0),
Collider::cuboid(12.0, ground_size * 2.0),
));

Expand All @@ -83,7 +80,7 @@ pub fn setup_physics(mut commands: Commands) {
let y = j as f32 * shift + centery + 2.0;

let mut entity = commands.spawn((
TransformBundle::from(Transform::from_xyz(x, y, 0.0)),
Transform::from_xyz(x, y, 0.0),
RigidBody::Dynamic,
Collider::cuboid(rad, rad),
));
Expand Down
Loading

0 comments on commit 6698a9e

Please sign in to comment.