diff --git a/Cargo.lock b/Cargo.lock index 9ad4cfa..844e163 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -886,19 +886,6 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8050e2869fe341db6874203b5a01ff12673807a2c7c80cb829f6c7bea6997268" -[[package]] -name = "bevy_rapier3d" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ac2b344d110e8aff2dab7ca6ed428dfcbbfeeb8f20827825996538f24e7fcdf" -dependencies = [ - "bevy", - "bitflags 2.5.0", - "log", - "nalgebra", - "rapier3d", -] - [[package]] name = "bevy_reflect" version = "0.13.2" @@ -1198,6 +1185,34 @@ dependencies = [ "winit", ] +[[package]] +name = "bevy_xpbd_3d" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0425ea7361b9b27c2a382e0663deb42f41147eee60fb2b3d5fa7e42d363ea848" +dependencies = [ + "bevy", + "bevy_math", + "bevy_xpbd_derive", + "derive_more", + "fxhash", + "indexmap", + "itertools", + "nalgebra", + "parry3d", + "parry3d-f64", +] + +[[package]] +name = "bevy_xpbd_derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e1ef1d5e328abe1b76df974245f78e17fd17867583883d5e77444c6a8223a64" +dependencies = [ + "quote", + "syn 2.0.55", +] + [[package]] name = "bindgen" version = "0.69.4" @@ -1561,6 +1576,12 @@ dependencies = [ "const_soft_float", ] +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + [[package]] name = "core-foundation" version = "0.9.4" @@ -1653,19 +1674,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "crossbeam" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" -dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-epoch", - "crossbeam-queue", - "crossbeam-utils", -] - [[package]] name = "crossbeam-channel" version = "0.5.12" @@ -1694,15 +1702,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "crossbeam-queue" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "crossbeam-utils" version = "0.8.19" @@ -1744,8 +1743,10 @@ version = "0.99.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ + "convert_case", "proc-macro2", "quote", + "rustc_version", "syn 1.0.109", ] @@ -2100,6 +2101,15 @@ dependencies = [ "thread_local", ] +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + [[package]] name = "generator" version = "0.8.1" @@ -2949,9 +2959,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ "num-traits", ] @@ -2978,11 +2988,10 @@ dependencies = [ [[package]] name = "num-rational" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg", "num-integer", "num-traits", ] @@ -3198,9 +3207,9 @@ dependencies = [ [[package]] name = "parry3d" -version = "0.13.7" +version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ccba18a65dba56c08dadfa936e0c9efbc883b3a26dc77d2685f78be10f7667c" +checksum = "7d27f5ab3d42400056b5b6a6306dbaa91fc3033d8628146dca0d8ed7fbc20730" dependencies = [ "approx", "arrayvec", @@ -3210,6 +3219,29 @@ dependencies = [ "nalgebra", "num-derive", "num-traits", + "rayon", + "rustc-hash", + "simba", + "slab", + "smallvec", + "spade", +] + +[[package]] +name = "parry3d-f64" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c46e77bfaf70d3f26dd0615dfab06a39f17ef2ae989bad44561318f47997ca7" +dependencies = [ + "approx", + "arrayvec", + "bitflags 1.3.2", + "downcast-rs", + "either", + "nalgebra", + "num-derive", + "num-traits", + "rayon", "rustc-hash", "simba", "slab", @@ -3245,7 +3277,7 @@ version = "0.1.0" dependencies = [ "bevy", "bevy-inspector-egui 0.23.4", - "bevy_rapier3d", + "bevy_xpbd_3d", "iyes_perf_ui", "noise 0.8.2", "rayon", @@ -3472,28 +3504,6 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab" -[[package]] -name = "rapier3d" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d07a833e0aa3bc57010caaa50bf75fa78afc03a74207607db740da4e4579a1" -dependencies = [ - "approx", - "arrayvec", - "bit-vec", - "bitflags 1.3.2", - "crossbeam", - "downcast-rs", - "nalgebra", - "num-derive", - "num-traits", - "parry3d", - "rayon", - "rustc-hash", - "simba", - "vec_map", -] - [[package]] name = "raw-window-handle" version = "0.5.2" @@ -3640,6 +3650,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + [[package]] name = "rustix" version = "0.38.32" @@ -3719,6 +3738,12 @@ dependencies = [ "tiny-skia", ] +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + [[package]] name = "serde" version = "1.0.197" @@ -4612,9 +4637,9 @@ dependencies = [ [[package]] name = "wide" -version = "0.7.15" +version = "0.7.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89beec544f246e679fc25490e3f8e08003bc4bf612068f325120dad4cea02c1c" +checksum = "0f0e39d2c603fdc0504b12b458cf1f34e0b937ed2f4f2dc20796e3e86f34e11f" dependencies = [ "bytemuck", "safe_arch", diff --git a/game/main/Cargo.toml b/game/main/Cargo.toml index 34965c4..bace50a 100644 --- a/game/main/Cargo.toml +++ b/game/main/Cargo.toml @@ -12,9 +12,9 @@ bevy-inspector-egui = "0.23.4" iyes_perf_ui = "0.2.3" noise = "0.8.2" world_generation ={path="../../engine/world_generation"} -bevy_rapier3d = { version = "0.25.0", features = [ "simd-stable", "debug-render-3d","parallel" ] } rayon = "1.10.0" +bevy_xpbd_3d = { version= "0.4.2", features= ["simd", "parallel"] } [features] -tracing = ["bevy/trace_tracy", "world_generation/tracing"] \ No newline at end of file +tracing = ["bevy/trace_tracy", "world_generation/tracing"] diff --git a/game/main/src/camera_system/camera_plugin.rs b/game/main/src/camera_system/camera_plugin.rs index 7c8ecb6..a40ea55 100644 --- a/game/main/src/camera_system/camera_plugin.rs +++ b/game/main/src/camera_system/camera_plugin.rs @@ -1,9 +1,7 @@ use bevy::core_pipeline::experimental::taa::{TemporalAntiAliasBundle, TemporalAntiAliasPlugin}; use bevy::input::mouse::{MouseMotion, MouseScrollUnit, MouseWheel}; -use bevy::pbr::ScreenSpaceAmbientOcclusionBundle; use bevy::prelude::*; use bevy::window::CursorGrabMode; -use bevy_rapier3d::plugin::RapierContext; use world_generation::hex_utils::HexCoord; use world_generation::prelude::Map; diff --git a/game/main/src/map_rendering/chunk_rebuild.rs b/game/main/src/map_rendering/chunk_rebuild.rs index 13b16fd..76ca42d 100644 --- a/game/main/src/map_rendering/chunk_rebuild.rs +++ b/game/main/src/map_rendering/chunk_rebuild.rs @@ -1,5 +1,5 @@ use bevy::prelude::*; -use bevy_rapier3d::geometry::{Collider, TriMeshFlags}; +use bevy_xpbd_3d::plugins::collision::Collider; use rayon::iter::{IntoParallelRefIterator, ParallelIterator}; use world_generation::{ biome_painter::BiomePainterAsset, @@ -65,8 +65,7 @@ fn chunk_rebuilder( let chunk = &heightmap.chunks[*idx]; let mesh = generate_chunk_mesh(chunk, &heightmap, cur_painter, &tile_assets, &tile_mappers); let (col_verts, col_indicies) = generate_chunk_collider(chunk, &heightmap); - let collider = - Collider::trimesh_with_flags(col_verts, col_indicies, TriMeshFlags::MERGE_DUPLICATE_VERTICES); + let collider = Collider::trimesh(col_verts, col_indicies); return ( mesh, collider, diff --git a/game/main/src/map_rendering/map_init.rs b/game/main/src/map_rendering/map_init.rs index 3994c20..7889eb1 100644 --- a/game/main/src/map_rendering/map_init.rs +++ b/game/main/src/map_rendering/map_init.rs @@ -2,7 +2,7 @@ use bevy::log::*; use bevy::{asset::LoadState, pbr::ExtendedMaterial, prelude::*}; use bevy_inspector_egui::quick::ResourceInspectorPlugin; -use bevy_rapier3d::geometry::Collider; +use bevy_xpbd_3d::plugins::collision::Collider; use rayon::iter::{IntoParallelRefIterator, ParallelIterator}; use world_generation::{ biome_painter::*, @@ -181,8 +181,8 @@ fn create_map(mut commands: Commands, mut cam: Query<(&mut Transform, Entity), W noise_scale: 450., sea_level: 8.5, border_size: 64., - size: UVec2::splat(1024 / Chunk::SIZE as u32), - // size: UVec2::splat(1), + //size: UVec2::splat(1024 / Chunk::SIZE as u32), + size: UVec2::splat(2), }; let heightmap = generate_heightmap(&config, 4); diff --git a/game/main/src/map_rendering/terraforming_test.rs b/game/main/src/map_rendering/terraforming_test.rs index 8bd7e9c..70a3803 100644 --- a/game/main/src/map_rendering/terraforming_test.rs +++ b/game/main/src/map_rendering/terraforming_test.rs @@ -1,5 +1,5 @@ use bevy::{prelude::*, window::PrimaryWindow}; -use bevy_rapier3d::{pipeline::QueryFilter, plugin::RapierContext}; +use bevy_xpbd_3d::plugins::spatial_query::{SpatialQuery, SpatialQueryFilter}; use world_generation::{hex_utils::HexCoord, prelude::Map}; use crate::{camera_system::components::PhosCamera, prelude::PhosChunkRegistry}; @@ -18,7 +18,7 @@ fn deform( cam_query: Query<(&GlobalTransform, &Camera), With>, window: Query<&Window, With>, mouse: Res>, - rapier_context: Res, + spatial_query: SpatialQuery, mut heightmap: ResMut, mut rebuild: ResMut, time: Res