Skip to content

Commit c98a68f

Browse files
committed
Merge remote-tracking branch 'dimforge/master' into more-deterministic-context
2 parents 537b1b8 + a149ff5 commit c98a68f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+1213
-1334
lines changed

.github/workflows/main.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,6 @@ jobs:
5454
targets: wasm32-unknown-unknown
5555
- uses: Swatinem/rust-cache@v2
5656
- name: Clippy bevy_rapier2d
57-
run: cd bevy_rapier2d && cargo clippy --verbose --features wasm-bindgen --target wasm32-unknown-unknown
57+
run: cd bevy_rapier2d && cargo clippy --verbose --features wasm-bindgen,bevy/webgl2 --target wasm32-unknown-unknown
5858
- name: Clippy bevy_rapier3d
59-
run: cd bevy_rapier3d && cargo clippy --verbose --features wasm-bindgen --target wasm32-unknown-unknown
59+
run: cd bevy_rapier3d && cargo clippy --verbose --features wasm-bindgen,bevy/webgl2 --target wasm32-unknown-unknown

CHANGELOG.md

+33
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,38 @@
11
# Changelog
22

3+
## Unreleased
4+
### Added
5+
- `ColliderView::as_typed_shape` and `::to_shared_shape` to convert a `ColliderView` to a parry’s
6+
`TypedShape` or `SharedShape`. The `From` trait has also been implemented accordingly.
7+
- Implement `Copy` for `ColliderView` and all the other non-mut shape views.
8+
- Add `RapierContext::rigid_body_colliders` to retrieve all collider entities attached to this rigid-body.
9+
- Add `RapierPhysicsPlugin::in_fixed_schedule`/`::in_schedude` to add rapier’s systems to a fixed/custom
10+
schedule.
11+
12+
### Fix
13+
- Fix debug-renderer lagging one frame behind.
14+
- Fix Collider `Transform` rotation change not being taken into account by the physics engine.
15+
- Fix automatic update of `ReadMassProperties`.
16+
17+
## 0.22.0 (10 July 2023)
18+
### Modified
19+
- Update to Bevy 0.11.
20+
- Disabled rigid-bodies are no longer synchronized with the rapier backend.
21+
- Switch to bevy’s gizmo system for the debug-renderer. This removes the vendored debug lines plugin.
22+
23+
### Added
24+
- Add a joint for simulating ropes: the `RopeJoint`.
25+
- Add `Velocity::linear_velocity_at_point` to calculate the linear velocity at the given world-space point.
26+
- Add the `ComputedColliderShape::ConvexHull` variant to automatcially calculate the convex-hull of an imported mesh.
27+
- Implement `Reflect` for the debug-renderer.
28+
29+
### Fix
30+
- Fix broken interpolation for rigid-bodies with the `TransformInterpolation` component.
31+
- Fix compilation when `bevy_rapier` is being used with headless bevy.
32+
- Improved performance of the writeback system by not iterting on non-rigid-body entities.
33+
- Fix typo by renaming `CuboidViewMut::sed_half_extents` to `set_half_extents`.
34+
- Properly scale parented collider’s offset based on changes on its `ColliderScale`.
35+
336
## 0.21.0 (07 March 2023)
437
### Modified
538
- Update to Bevy 0.10.

Cargo.toml

+4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
members = ["bevy_rapier2d", "bevy_rapier3d"]
33
resolver = "2"
44

5+
[profile.dev]
6+
# Use slightly better optimization by default, as examples otherwise seem laggy.
7+
opt-level = 1
8+
59
[profile.release]
610
codegen-units = 1
711

bevy_rapier2d/Cargo.toml

+10-15
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "bevy_rapier2d"
3-
version = "0.21.0"
3+
version = "0.22.0"
44
authors = ["Sébastien Crozet <developer@crozet.re>"]
55
description = "2-dimensional physics engine in Rust, official Bevy plugin."
66
documentation = "http://docs.rs/bevy_rapier2d"
@@ -19,26 +19,21 @@ required-features = [ "dim2" ]
1919

2020
[features]
2121
default = [ "dim2", "async-collider", "debug-render-2d" ]
22-
dim2 = ["bevy/bevy_render"]
23-
debug-render-2d = [ "bevy/bevy_core_pipeline", "bevy/bevy_sprite", "bevy/bevy_render", "rapier2d/debug-render" ]
24-
debug-render-3d = [ "bevy/bevy_core_pipeline", "bevy/bevy_pbr", "bevy/bevy_render", "rapier2d/debug-render" ]
22+
dim2 = []
23+
debug-render-2d = [ "bevy/bevy_core_pipeline", "bevy/bevy_sprite", "bevy/bevy_gizmos", "rapier2d/debug-render", "bevy/bevy_asset" ]
24+
debug-render-3d = [ "bevy/bevy_core_pipeline", "bevy/bevy_pbr", "bevy/bevy_gizmos", "rapier2d/debug-render", "bevy/bevy_asset" ]
2525
parallel = [ "rapier2d/parallel" ]
2626
simd-stable = [ "rapier2d/simd-stable" ]
2727
simd-nightly = [ "rapier2d/simd-nightly" ]
2828
wasm-bindgen = [ "rapier2d/wasm-bindgen" ]
2929
serde-serialize = [ "rapier2d/serde-serialize", "bevy/serialize", "serde" ]
3030
enhanced-determinism = [ "rapier2d/enhanced-determinism" ]
31-
32-
# Enables the AsyncCollider and AsyncSceneCollider components that wait for specific
33-
# assets to be loaded before creating the actual Collider.
34-
# See https://github.com/dimforge/bevy_rapier/issues/296 for a workaround on how
35-
# to use this when using bevy headless.
36-
async-collider = [ ]
37-
31+
headless = []
32+
async-collider = [ "bevy/bevy_asset", "bevy/bevy_scene" ]
3833

3934
[dependencies]
40-
bevy = { version = "0.10", default-features = false, features = ["bevy_asset", "bevy_scene"] }
41-
nalgebra = { version = "0.32.2", features = [ "convert-glam023" ] }
35+
bevy = { version = "0.11", default-features = false }
36+
nalgebra = { version = "0.32.3", features = [ "convert-glam024" ] }
4237
# Don't enable the default features because we don't need the ColliderSet/RigidBodySet
4338
rapier2d = "0.17.0"
4439
bitflags = "1"
@@ -47,10 +42,10 @@ log = "0.4"
4742
serde = { version = "1", features = [ "derive" ], optional = true}
4843

4944
[dev-dependencies]
50-
bevy = { version = "0.10", default-features = false, features = ["x11"]}
45+
bevy = { version = "0.11", default-features = false, features = ["x11"]}
5146
oorandom = "11"
5247
approx = "0.5.1"
53-
glam = { version = "0.23", features = [ "approx" ] }
48+
glam = { version = "0.24", features = [ "approx" ] }
5449

5550
[package.metadata.docs.rs]
5651
# Enable all the features when building the docs on docs.rs

bevy_rapier2d/examples/boxes2.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@ fn main() {
88
0xF9 as f32 / 255.0,
99
0xFF as f32 / 255.0,
1010
)))
11-
.add_plugins(DefaultPlugins)
12-
.add_plugin(RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(100.0))
13-
.add_plugin(RapierDebugRenderPlugin::default())
14-
.add_startup_system(setup_graphics)
15-
.add_startup_system(setup_physics)
11+
.add_plugins((
12+
DefaultPlugins,
13+
RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(100.0),
14+
RapierDebugRenderPlugin::default(),
15+
))
16+
.add_systems(Startup, (setup_graphics, setup_physics))
1617
.run();
1718
}
1819

bevy_rapier2d/examples/contact_filter2.rs

+5-6
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,12 @@ fn main() {
3535
0xF9 as f32 / 255.0,
3636
0xFF as f32 / 255.0,
3737
)))
38-
.add_plugins(DefaultPlugins)
39-
.add_plugin(RapierPhysicsPlugin::<SameUserDataFilter>::pixels_per_meter(
40-
100.0,
38+
.add_plugins((
39+
DefaultPlugins,
40+
RapierPhysicsPlugin::<SameUserDataFilter>::pixels_per_meter(100.0),
41+
RapierDebugRenderPlugin::default(),
4142
))
42-
.add_plugin(RapierDebugRenderPlugin::default())
43-
.add_startup_system(setup_graphics)
44-
.add_startup_system(setup_physics)
43+
.add_systems(Startup, (setup_graphics, setup_physics))
4544
.run();
4645
}
4746

bevy_rapier2d/examples/custom_system_setup2.rs

+26-47
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1-
use bevy::{core::FrameCount, ecs::schedule::ScheduleLabel, prelude::*};
1+
use bevy::{core::FrameCount, prelude::*, transform::TransformSystem};
22
use bevy_rapier2d::prelude::*;
33

4-
#[derive(ScheduleLabel, Hash, Debug, PartialEq, Eq, Clone)]
5-
struct SpecialSchedule;
6-
74
fn main() {
85
let mut app = App::new();
96

@@ -12,58 +9,40 @@ fn main() {
129
0xF9 as f32 / 255.0,
1310
0xFF as f32 / 255.0,
1411
)))
15-
.add_plugins(DefaultPlugins)
16-
.add_plugin(RapierDebugRenderPlugin::default())
17-
.add_startup_system(setup_graphics)
18-
.add_startup_system(setup_physics)
19-
.add_system(
20-
(|world: &mut World| {
21-
world.run_schedule(SpecialSchedule);
22-
})
23-
.in_base_set(CoreSet::PostUpdate),
24-
);
25-
26-
// Do the setup however we want, maybe in its very own schedule
27-
let mut schedule = Schedule::new();
28-
29-
schedule.configure_sets(
12+
.add_plugins((
13+
DefaultPlugins,
14+
RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(100.0).with_default_system_setup(false),
15+
RapierDebugRenderPlugin::default(),
16+
))
17+
.add_systems(Startup, (setup_graphics, setup_physics));
18+
19+
app.configure_sets(
20+
PostUpdate,
3021
(
3122
PhysicsSet::SyncBackend,
32-
PhysicsSet::SyncBackendFlush,
3323
PhysicsSet::StepSimulation,
3424
PhysicsSet::Writeback,
3525
)
36-
.chain(),
37-
);
38-
39-
schedule.add_systems(
40-
RapierPhysicsPlugin::<NoUserData>::get_systems(PhysicsSet::SyncBackend)
41-
.in_base_set(PhysicsSet::SyncBackend),
26+
.chain()
27+
.before(TransformSystem::TransformPropagate),
4228
);
4329

44-
schedule.add_systems(
45-
RapierPhysicsPlugin::<NoUserData>::get_systems(PhysicsSet::SyncBackendFlush)
46-
.in_base_set(PhysicsSet::SyncBackendFlush),
47-
);
48-
49-
schedule.add_systems(
50-
RapierPhysicsPlugin::<NoUserData>::get_systems(PhysicsSet::StepSimulation)
51-
.in_base_set(PhysicsSet::StepSimulation),
52-
);
53-
schedule.add_system(despawn_one_box.in_base_set(PhysicsSet::StepSimulation));
54-
55-
schedule.add_systems(
56-
RapierPhysicsPlugin::<NoUserData>::get_systems(PhysicsSet::Writeback)
57-
.in_base_set(PhysicsSet::Writeback),
30+
app.add_systems(
31+
PostUpdate,
32+
(
33+
RapierPhysicsPlugin::<NoUserData>::get_systems(PhysicsSet::SyncBackend)
34+
.in_set(PhysicsSet::SyncBackend),
35+
(
36+
RapierPhysicsPlugin::<NoUserData>::get_systems(PhysicsSet::StepSimulation),
37+
despawn_one_box,
38+
)
39+
.in_set(PhysicsSet::StepSimulation),
40+
RapierPhysicsPlugin::<NoUserData>::get_systems(PhysicsSet::Writeback)
41+
.in_set(PhysicsSet::Writeback),
42+
),
5843
);
5944

60-
app.add_schedule(SpecialSchedule, schedule)
61-
.add_plugin(
62-
RapierPhysicsPlugin::<NoUserData>::default()
63-
.with_physics_scale(100.)
64-
.with_default_system_setup(false),
65-
)
66-
.run();
45+
app.run();
6746
}
6847

6948
fn despawn_one_box(

bevy_rapier2d/examples/debug_despawn2.rs

+7-5
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@ fn main() {
99
App::new()
1010
.init_resource::<Game>()
1111
.insert_resource(ClearColor(Color::rgb(0.0, 0.0, 0.0)))
12-
.add_plugins(DefaultPlugins)
13-
.add_startup_system(setup_game)
14-
.add_system(cube_sleep_detection)
15-
.add_plugin(RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(100.0))
16-
.add_plugin(RapierDebugRenderPlugin::default())
12+
.add_plugins((
13+
DefaultPlugins,
14+
RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(100.0),
15+
RapierDebugRenderPlugin::default(),
16+
))
17+
.add_systems(Startup, setup_game)
18+
.add_systems(Update, cube_sleep_detection)
1719
.run();
1820
}
1921

bevy_rapier2d/examples/despawn2.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ fn main() {
2020
)))
2121
.insert_resource(DespawnResource::default())
2222
.insert_resource(ResizeResource::default())
23-
.add_plugins(DefaultPlugins)
24-
.add_plugin(RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(100.0))
25-
.add_plugin(RapierDebugRenderPlugin::default())
26-
.add_startup_system(setup_graphics)
27-
.add_startup_system(setup_physics)
28-
.add_system(despawn)
29-
.add_system(resize)
23+
.add_plugins((
24+
DefaultPlugins,
25+
RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(100.0),
26+
RapierDebugRenderPlugin::default(),
27+
))
28+
.add_systems(Startup, (setup_graphics, setup_physics))
29+
.add_systems(Update, (despawn, resize))
3030
.run();
3131
}
3232

bevy_rapier2d/examples/events2.rs

+7-6
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@ fn main() {
88
0xF9 as f32 / 255.0,
99
0xFF as f32 / 255.0,
1010
)))
11-
.add_plugins(DefaultPlugins)
12-
.add_plugin(RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(100.0))
13-
.add_plugin(RapierDebugRenderPlugin::default())
14-
.add_startup_system(setup_graphics)
15-
.add_startup_system(setup_physics)
16-
.add_system(display_events.in_base_set(CoreSet::PostUpdate))
11+
.add_plugins((
12+
DefaultPlugins,
13+
RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(100.0),
14+
RapierDebugRenderPlugin::default(),
15+
))
16+
.add_systems(Startup, (setup_graphics, setup_physics))
17+
.add_systems(PostUpdate, display_events)
1718
.run();
1819
}
1920

bevy_rapier2d/examples/joints2.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@ fn main() {
88
0xF9 as f32 / 255.0,
99
0xFF as f32 / 255.0,
1010
)))
11-
.add_plugins(DefaultPlugins)
12-
.add_plugin(RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(100.0))
13-
.add_plugin(RapierDebugRenderPlugin::default())
14-
.add_startup_system(setup_graphics)
15-
.add_startup_system(setup_physics)
11+
.add_plugins((
12+
DefaultPlugins,
13+
RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(100.0),
14+
RapierDebugRenderPlugin::default(),
15+
))
16+
.add_systems(Startup, (setup_graphics, setup_physics))
1617
.run();
1718
}
1819

bevy_rapier2d/examples/joints_despawn2.rs

+7-6
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,13 @@ fn main() {
1414
0xFF as f32 / 255.0,
1515
)))
1616
.insert_resource(DespawnResource::default())
17-
.add_plugins(DefaultPlugins)
18-
.add_plugin(RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(100.0))
19-
.add_plugin(RapierDebugRenderPlugin::default())
20-
.add_startup_system(setup_graphics)
21-
.add_startup_system(setup_physics)
22-
.add_system(despawn)
17+
.add_plugins((
18+
DefaultPlugins,
19+
RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(100.0),
20+
RapierDebugRenderPlugin::default(),
21+
))
22+
.add_systems(Startup, (setup_graphics, setup_physics))
23+
.add_systems(Update, despawn)
2324
.run();
2425
}
2526

bevy_rapier2d/examples/locked_rotations2.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@ fn main() {
88
0xF9 as f32 / 255.0,
99
0xFF as f32 / 255.0,
1010
)))
11-
.add_plugins(DefaultPlugins)
12-
.add_plugin(RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(100.0))
13-
.add_plugin(RapierDebugRenderPlugin::default())
14-
.add_startup_system(setup_graphics)
15-
.add_startup_system(setup_physics)
11+
.add_plugins((
12+
DefaultPlugins,
13+
RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(100.0),
14+
RapierDebugRenderPlugin::default(),
15+
))
16+
.add_systems(Startup, (setup_graphics, setup_physics))
1617
.run();
1718
}
1819

bevy_rapier2d/examples/multiple_colliders2.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@ fn main() {
88
0xF9 as f32 / 255.0,
99
0xFF as f32 / 255.0,
1010
)))
11-
.add_plugins(DefaultPlugins)
12-
.add_plugin(RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(100.0))
13-
.add_plugin(RapierDebugRenderPlugin::default())
14-
.add_startup_system(setup_graphics)
15-
.add_startup_system(setup_physics)
11+
.add_plugins((
12+
DefaultPlugins,
13+
RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(100.0),
14+
RapierDebugRenderPlugin::default(),
15+
))
16+
.add_systems(Startup, (setup_graphics, setup_physics))
1617
.run();
1718
}
1819

0 commit comments

Comments
 (0)