Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update to Bevy 0.13 #5

Merged
merged 2 commits into from
Mar 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ name = "bevy_mod_physx"
path = "src/lib.rs"

[dependencies]
bevy = "0.12.0"
bevy = "0.13.0"
derive_more = "0.99.17"
enumflags2 = "0.7.7"
physx = "0.19.0"
physx-sys = "0.11.5"
serde = { version = "1", features = ["derive"], optional = true }

[dev-dependencies]
bevy-inspector-egui = "0.21.0"
bevy-inspector-egui = "0.23.0"

[features]
serialize = ["dep:serde", "bevy/serialize"]
17 changes: 9 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,9 @@ use bevy_mod_physx::prelude::{Material, Shape}; // bevy prelude conflicts
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(PhysicsPlugins)
.add_plugins(PhysicsPlugins.set(
PhysicsCore::new().with_pvd()
))
.add_systems(Startup, setup_graphics)
.add_systems(Startup, setup_physics)
.insert_resource(DebugRenderSettings::enable())
Expand All @@ -55,7 +57,7 @@ fn setup_physics(
commands.spawn((
RigidBody::Static,
Shape {
geometry: geometries.add(Geometry::halfspace(Vec3::Y)),
geometry: geometries.add(Plane3d::default()),
material: materials.add(Material::new(&mut physics, 0.5, 0.5, 0.6)),
..default()
},
Expand All @@ -66,7 +68,7 @@ fn setup_physics(
commands.spawn((
RigidBody::Dynamic,
Shape {
geometry: geometries.add(Geometry::ball(0.5)),
geometry: geometries.add(Sphere::new(0.5)),
material: materials.add(Material::new(&mut physics, 0.5, 0.5, 0.6)),
..default()
},
Expand All @@ -79,13 +81,12 @@ fn setup_physics(

|[]() |[]() |[]() |[]() |
|---------------|--------------------------------------------------------------------------------------------------------|--------------|---------------|
| published | [0.4.x](https://crates.io/crates/bevy_mod_physx) | Bevy 0.12 | PhysX 5 |
| published | [0.5.x](https://crates.io/crates/bevy_mod_physx) | Bevy 0.13 | PhysX 5 |
| | [0.4.x](https://crates.io/crates/bevy_mod_physx) | Bevy 0.12 | PhysX 5 |
| | [0.2.x - 0.3.x](https://crates.io/crates/bevy_mod_physx) | Bevy 0.11 | PhysX 5 |
| | | | |
| git tags | [git:master](https://github.com/rlidwka/bevy_mod_physx) | Bevy 0.12 | PhysX 5 |
| | [git:a2741a6](https://github.com/rlidwka/bevy_mod_physx/tree/a2741a632b03e0a2c5763768a1042ca8d42774a1) | Bevy 0.11 | PhysX 5 |
| | [git:a21b570](https://github.com/rlidwka/bevy_mod_physx/tree/a21b570b20a1e7ac22b5c86c54fcc1597760f2ec) | Bevy 0.11 | PhysX 4 |
| | [git:43ae89e](https://github.com/rlidwka/bevy_mod_physx/tree/43ae89e013daf00ef841611149420fb4d04c2a4f) | Bevy 0.10 | PhysX 5 |
| git tags | [git:a21b570](https://github.com/rlidwka/bevy_mod_physx/tree/a21b570b20a1e7ac22b5c86c54fcc1597760f2ec) | Bevy 0.11 | PhysX 4 |
| (unpublished) | [git:43ae89e](https://github.com/rlidwka/bevy_mod_physx/tree/43ae89e013daf00ef841611149420fb4d04c2a4f) | Bevy 0.10 | PhysX 5 |
| | [git:8f66a99](https://github.com/rlidwka/bevy_mod_physx/tree/8f66a9965eb461794856898ca44a1faf13c295ab) | Bevy 0.10 | PhysX 4 |
| | | | |
| other crates | [bevy_mod_physx](https://github.com/MasterOfMarkets/bevy_mod_physx) v0.1.0 | Bevy 0.10 | deprecated |
Expand Down
30 changes: 16 additions & 14 deletions examples/articulation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,11 @@ fn spawn_long_chain(
const OVERLAPPING_LINKS: bool = true;

let mut position = Vec3::new(0., 24., 0.);
let mesh = meshes.add(Mesh::from(shape::Capsule { radius: RADIUS, depth: HALF_HEIGHT + RADIUS * 2., ..default() }));
let material = materials.add(Color::rgb(1., 0.7, 0.).into());
let primitive = Capsule3d::new(RADIUS, HALF_HEIGHT + RADIUS * 2.);
let mesh = meshes.add(primitive);
let material = materials.add(Color::rgb(1., 0.7, 0.));

let px_geometry = px_geometries.add(bpx::Geometry::capsule(HALF_HEIGHT, RADIUS));
let px_geometry = px_geometries.add(primitive);
let mut parent_link = None;

for _ in 0..SEGMENTS {
Expand Down Expand Up @@ -126,9 +127,10 @@ fn spawn_long_chain(
position.x -= (RADIUS + HALF_HEIGHT) * 2.;
position.x += (RADIUS + HALF_HEIGHT) + BOX_SIZE;

let box_mesh = meshes.add(Mesh::from(shape::Cube { size: BOX_SIZE * 2. }));
let box_material = materials.add(Color::rgb(0.8, 0.7, 0.6).into());
let box_geometry = px_geometries.add(bpx::Geometry::cuboid(BOX_SIZE, BOX_SIZE, BOX_SIZE));
let primitive = Cuboid::from_size(Vec3::splat(BOX_SIZE * 2.));
let box_mesh = meshes.add(primitive);
let box_material = materials.add(Color::rgb(0.8, 0.7, 0.6));
let box_geometry = px_geometries.add(primitive);

commands.spawn_empty()
.insert(bpx::RigidBody::ArticulationLink)
Expand Down Expand Up @@ -176,12 +178,11 @@ fn spawn_obstacle(
const HALF_Y: f32 = 0.1;
const HALF_Z: f32 = 2.;

let mesh = meshes.add(Mesh::from(
shape::Box { min_x: -HALF_X, max_x: HALF_X, min_y: -HALF_Y, max_y: HALF_Y, min_z: -HALF_Z, max_z: HALF_Z }
));
let material = materials.add(Color::rgb(0.8, 0.7, 0.6).into());
let primitive = Cuboid::new(HALF_X * 2., HALF_Y * 2., HALF_Z * 2.);
let mesh = meshes.add(primitive);
let material = materials.add(Color::rgb(0.8, 0.7, 0.6));

let px_geometry = px_geometries.add(bpx::Geometry::cuboid(HALF_X, HALF_Y, HALF_Z));
let px_geometry = px_geometries.add(primitive);
let px_material = px_materials.add(bpx::Material::new(&mut physics, 0.5, 0.5, 0.6));
let transform = Transform::from_xyz(10., 21., 0.);

Expand Down Expand Up @@ -209,9 +210,10 @@ fn spawn_plane(
mut px_geometries: ResMut<Assets<bpx::Geometry>>,
mut px_materials: ResMut<Assets<bpx::Material>>,
) {
let mesh = meshes.add(Mesh::from(shape::Plane { size: 500.0, subdivisions: 4 }));
let material = materials.add(Color::rgb(0.3, 0.5, 0.3).into());
let px_geometry = px_geometries.add(bpx::Geometry::halfspace(Vec3::Y));
let primitive = Plane3d::default();
let mesh = meshes.add(primitive.mesh().size(500., 500.));
let material = materials.add(Color::rgb(0.3, 0.5, 0.3));
let px_geometry = px_geometries.add(primitive);
let px_material = px_materials.add(bpx::Material::new(&mut physics, 0.5, 0.5, 0.6));

commands.spawn_empty()
Expand Down
2 changes: 1 addition & 1 deletion examples/common/debug_render.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ impl Plugin for DebugRenderPlugin {
}

fn debug_render_toggle(
input: Res<Input<KeyCode>>,
input: Res<ButtonInput<KeyCode>>,
mut settings: ResMut<DebugRenderSettings>,
) {
if input.just_pressed(KeyCode::F11) {
Expand Down
4 changes: 2 additions & 2 deletions examples/common/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ fn adjust_light_settings(
// but we still want examples to be functional by default without this plugin.
// So a good solution is to get existing light and adjust it to look nicer.
for (entity, mut light) in query.iter_mut() {
light.illuminance = 15000.;
light.illuminance = 6500.;
light.shadows_enabled = true;
commands.entity(entity).insert(DemoUtilsLightFixed);
}
Expand All @@ -116,7 +116,7 @@ fn adjust_camera_settings(
}

fn spacebar_pauses_simulation(
keys: Res<Input<KeyCode>>,
keys: Res<ButtonInput<KeyCode>>,
mut time: ResMut<Time<Virtual>>,
) {
if keys.just_pressed(KeyCode::Space) {
Expand Down
2 changes: 1 addition & 1 deletion examples/common/orbit_camera.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ fn apply_camera_controls(
mut gamepad_events: EventReader<GamepadEvent>,
mut gamepad_state: Local<GamepadState>,
time: Res<Time>,
buttons: Res<Input<MouseButton>>,
buttons: Res<ButtonInput<MouseButton>>,
mut egui_contexts: EguiContexts,
mut camera_query: Query<&mut OrbitCamera>,
) {
Expand Down
21 changes: 12 additions & 9 deletions examples/cube_stacks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,10 @@ fn spawn_plane(
mut px_geometries: ResMut<Assets<bpx::Geometry>>,
mut px_materials: ResMut<Assets<bpx::Material>>,
) {
let mesh = meshes.add(Mesh::from(shape::Plane { size: 500.0, subdivisions: 4 }));
let material = materials.add(Color::rgb(0.3, 0.5, 0.3).into());
let px_geometry = px_geometries.add(bpx::Geometry::halfspace(Vec3::Y));
let primitive = Plane3d::default();
let mesh = meshes.add(primitive.mesh().size(500., 500.));
let material = materials.add(Color::rgb(0.3, 0.5, 0.3));
let px_geometry = px_geometries.add(primitive);
let px_material = px_materials.add(bpx::Material::new(&mut physics, 0.5, 0.5, 0.6));

commands.spawn_empty()
Expand All @@ -56,10 +57,11 @@ fn spawn_stacks(
const WIDTH: f32 = 0.5;
const SIZE: usize = 10;

let mesh = meshes.add(Mesh::from(shape::Cube { size: WIDTH }));
let material = materials.add(Color::rgb(0.8, 0.7, 0.6).into());
let primitive = Cuboid::from_size(Vec3::splat(WIDTH));
let mesh = meshes.add(primitive);
let material = materials.add(Color::rgb(0.8, 0.7, 0.6));

let px_geometry = px_geometries.add(bpx::Geometry::cuboid(WIDTH / 2., WIDTH / 2., WIDTH / 2.));
let px_geometry = px_geometries.add(primitive);

for i in 0..5 {
commands.spawn(SpatialBundle::from_transform(Transform::from_xyz(0., 0., -1.25 * i as f32)))
Expand Down Expand Up @@ -102,10 +104,11 @@ fn spawn_dynamic(
) {
const RADIUS: f32 = 1.25;

let mesh = meshes.add(Mesh::from(shape::UVSphere { radius: 1.25, ..default() }));
let material = materials.add(Color::rgb(0.8, 0.7, 0.6).into());
let primitive = Sphere::new(RADIUS);
let mesh = meshes.add(primitive);
let material = materials.add(Color::rgb(0.8, 0.7, 0.6));

let px_geometry = px_geometries.add(bpx::Geometry::ball(RADIUS));
let px_geometry = px_geometries.add(primitive);
let px_material = px_materials.add(bpx::Material::new(&mut physics, 0.5, 0.5, 0.6));

let transform = Transform::from_xyz(0., 5., 12.5);
Expand Down
25 changes: 13 additions & 12 deletions examples/detect_contacts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,8 @@ fn init_materials(
mut materials: ResMut<Assets<StandardMaterial>>,
) {
commands.insert_resource(DemoMaterials {
normal: materials.add(Color::rgb(0.8, 0.7, 0.6).into()),
highlighted: materials.add(Color::rgb(0.3, 0.4, 0.9).into()),
normal: materials.add(Color::rgb(0.8, 0.7, 0.6)),
highlighted: materials.add(Color::rgb(0.3, 0.4, 0.9)),
});
}

Expand All @@ -149,9 +149,10 @@ fn spawn_plane(
mut px_geometries: ResMut<Assets<bpx::Geometry>>,
mut px_materials: ResMut<Assets<bpx::Material>>,
) {
let mesh = meshes.add(Mesh::from(shape::Plane { size: 500.0, subdivisions: 4 }));
let material = materials.add(Color::rgb(0.3, 0.5, 0.3).into());
let px_geometry = px_geometries.add(bpx::Geometry::halfspace(Vec3::Y));
let primitive = Plane3d::default();
let mesh = meshes.add(primitive.mesh().size(500., 500.));
let material = materials.add(Color::rgb(0.3, 0.5, 0.3));
let px_geometry = px_geometries.add(primitive);
let px_material = px_materials.add(bpx::Material::new(&mut physics, 0.5, 0.5, 0.6));

commands.spawn_empty()
Expand All @@ -178,8 +179,9 @@ fn spawn_tiles(
let num = 32;
let rad = 1.0;
let height = 0.1;
let px_geometry = px_geometries.add(bpx::Geometry::cuboid(rad, height, rad));
let mesh = meshes.add(Mesh::from(shape::Box { min_x: -rad, min_y: -height, min_z: -rad, max_x: rad, max_y: height, max_z: rad }));
let primitive = Cuboid::new(rad * 2., height * 2., rad * 2.);
let px_geometry = px_geometries.add(primitive);
let mesh = meshes.add(primitive);
let material = materials.normal.clone();

let shift = rad * 2.5;
Expand Down Expand Up @@ -218,12 +220,11 @@ fn spawn_dynamic(
mut px_geometries: ResMut<Assets<bpx::Geometry>>,
mut px_materials: ResMut<Assets<bpx::Material>>,
) {
const RADIUS: f32 = 1.25;
let primitive = Sphere::new(1.25);
let mesh = meshes.add(primitive);
let material = materials.add(Color::rgb(0.8, 0.7, 0.6));

let mesh = meshes.add(Mesh::from(shape::UVSphere { radius: 1.25, ..default() }));
let material = materials.add(Color::rgb(0.8, 0.7, 0.6).into());

let px_geometry = px_geometries.add(bpx::Geometry::ball(RADIUS));
let px_geometry = px_geometries.add(primitive);
let px_material = px_materials.add(bpx::Material::new(&mut physics, 0., 0., 1.));

let transform = Transform::from_xyz(0., 5., 32.5);
Expand Down
4 changes: 2 additions & 2 deletions examples/getting_started.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ fn setup_physics(
commands.spawn((
RigidBody::Static,
Shape {
geometry: geometries.add(Geometry::halfspace(Vec3::Y)),
geometry: geometries.add(Plane3d::default()),
material: materials.add(Material::new(&mut physics, 0.5, 0.5, 0.6)),
..default()
},
Expand All @@ -44,7 +44,7 @@ fn setup_physics(
commands.spawn((
RigidBody::Dynamic,
Shape {
geometry: geometries.add(Geometry::ball(0.5)),
geometry: geometries.add(Sphere::new(0.5)),
material: materials.add(Material::new(&mut physics, 0.5, 0.5, 0.6)),
..default()
},
Expand Down
30 changes: 17 additions & 13 deletions examples/kinematic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,10 @@ fn spawn_table(
const THICKNESS: f32 = 0.5;
const SIDE_HEIGHT: f32 = 1.;

let mesh = meshes.add(Mesh::from(shape::Box::new(SIZE, THICKNESS, SIZE)));
let material = materials.add(Color::rgb(0.3, 0.5, 0.3).into());
let px_geometry = px_geometries.add(bpx::Geometry::cuboid(SIZE / 2., THICKNESS / 2., SIZE / 2.));
let primitive = Cuboid::new(SIZE, THICKNESS, SIZE);
let mesh = meshes.add(primitive);
let material = materials.add(Color::rgb(0.3, 0.5, 0.3));
let px_geometry = px_geometries.add(primitive);
let px_material = px_materials.add(bpx::Material::new(&mut physics, 0.5, 0.5, 0.6));

commands.spawn_empty()
Expand All @@ -69,9 +70,10 @@ fn spawn_table(
.insert(Surface)
.insert(Name::new("TableSurface"));

let mesh = meshes.add(Mesh::from(shape::Box::new(SIZE + THICKNESS, SIDE_HEIGHT, THICKNESS)));
let material = materials.add(Color::rgb(0.3, 0.5, 0.3).into());
let px_geometry = px_geometries.add(bpx::Geometry::cuboid(SIZE / 2. + THICKNESS / 2., SIDE_HEIGHT / 2., THICKNESS / 2.));
let primitive = Cuboid::new(SIZE + THICKNESS, SIDE_HEIGHT, THICKNESS);
let mesh = meshes.add(primitive);
let material = materials.add(Color::rgb(0.3, 0.5, 0.3));
let px_geometry = px_geometries.add(primitive);
let px_material = px_materials.add(bpx::Material::new(&mut physics, 0.5, 0.5, 0.6));

for side in 0..4 {
Expand Down Expand Up @@ -104,10 +106,11 @@ fn spawn_pyramid(
mut px_geometries: ResMut<Assets<bpx::Geometry>>,
mut px_materials: ResMut<Assets<bpx::Material>>,
) {
let mesh = meshes.add(Mesh::from(shape::UVSphere { radius: BALL_SIZE, ..default() }));
let material = materials.add(Color::rgb(0.8, 0.7, 0.6).into());
let primitive = Sphere::new(BALL_SIZE);
let mesh = meshes.add(primitive);
let material = materials.add(Color::rgb(0.8, 0.7, 0.6));

let px_geometry = px_geometries.add(bpx::Geometry::ball(BALL_SIZE));
let px_geometry = px_geometries.add(primitive);
let px_material = px_materials.add(bpx::Material::new(&mut physics, 0., 0., 1.));

for dx in 0..8 {
Expand Down Expand Up @@ -144,10 +147,11 @@ fn spawn_kinematic(
mut px_geometries: ResMut<Assets<bpx::Geometry>>,
mut px_materials: ResMut<Assets<bpx::Material>>,
) {
let mesh = meshes.add(Mesh::from(shape::Box::new(CUE_SIZE, CUE_SIZE, CUE_SIZE)));
let material = materials.add(Color::rgb(0.8, 0.7, 0.6).into());
let primitive = Cuboid::new(CUE_SIZE, CUE_SIZE, CUE_SIZE);
let mesh = meshes.add(primitive);
let material = materials.add(Color::rgb(0.8, 0.7, 0.6));

let px_geometry = px_geometries.add(bpx::Geometry::cuboid(CUE_SIZE / 2., CUE_SIZE / 2., CUE_SIZE / 2.));
let px_geometry = px_geometries.add(primitive);
let px_material = px_materials.add(bpx::Material::new(&mut physics, 0., 0., 1.));
let transform = Transform::from_xyz(0., BALL_SIZE, 0.);

Expand Down Expand Up @@ -200,7 +204,7 @@ fn move_kinematic(

let filter = SceneQueryFilter::callback(raycast_filter, &surface_entity as *const Entity as *mut c_void);

if let Some(hit) = scene.raycast(ray.origin, ray.direction, f32::MAX, &filter) {
if let Some(hit) = scene.raycast(ray, f32::MAX, &filter) {
kinematic.target.translation.x = hit.position.x;
kinematic.target.translation.z = hit.position.z;
kinematic.target.translation.y = BALL_SIZE;
Expand Down
18 changes: 10 additions & 8 deletions examples/raycast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ fn init_materials(
mut materials: ResMut<Assets<StandardMaterial>>,
) {
commands.insert_resource(DemoMaterials {
normal: materials.add(Color::rgb(0.8, 0.7, 0.6).into()),
highlighted: materials.add(Color::rgb(0.3, 0.4, 0.9).into()),
normal: materials.add(Color::rgb(0.8, 0.7, 0.6)),
highlighted: materials.add(Color::rgb(0.3, 0.4, 0.9)),
});
}

Expand All @@ -59,9 +59,10 @@ fn spawn_plane(
mut px_geometries: ResMut<Assets<bpx::Geometry>>,
mut px_materials: ResMut<Assets<bpx::Material>>,
) {
let mesh = meshes.add(Mesh::from(shape::Plane { size: 500.0, subdivisions: 4 }));
let material = materials.add(Color::rgb(0.3, 0.5, 0.3).into());
let px_geometry = px_geometries.add(bpx::Geometry::halfspace(Vec3::Y));
let primitive = Plane3d::default();
let mesh = meshes.add(primitive.mesh().size(500., 500.));
let material = materials.add(Color::rgb(0.3, 0.5, 0.3));
let px_geometry = px_geometries.add(primitive);
let px_material = px_materials.add(bpx::Material::new(&mut physics, 0.5, 0.5, 0.6));

commands.spawn_empty()
Expand All @@ -87,8 +88,9 @@ fn spawn_cubes(
) {
let num = 8;
let rad = 1.0;
let px_geometry = px_geometries.add(bpx::Geometry::cuboid(rad, rad, rad));
let mesh = meshes.add(Mesh::from(shape::Cube { size: rad * 2. }));
let primitive = Cuboid::from_size(Vec3::splat(rad * 2.));
let px_geometry = px_geometries.add(primitive);
let mesh = meshes.add(primitive);
let material = materials.normal.clone();

let shift = rad * 2.0 + rad;
Expand Down Expand Up @@ -152,7 +154,7 @@ fn hover_highlight(
for (camera, camera_transform) in &cameras {
let Some(ray) = camera.viewport_to_world(camera_transform, cursor_position) else { continue; };

if let Some(hit) = scene.raycast(ray.origin, ray.direction, f32::MAX, &default()) {
if let Some(hit) = scene.raycast(ray, f32::MAX, &default()) {
if highlighable.get(hit.actor).is_ok() {
commands.entity(hit.actor)
.insert(materials.highlighted.clone())
Expand Down
Loading
Loading