This commit is contained in:
2024-05-09 19:34:22 -04:00
parent d9b50538d9
commit fcee3f8158
7 changed files with 111 additions and 91 deletions

View File

@@ -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"]
tracing = ["bevy/trace_tracy", "world_generation/tracing"]

View File

@@ -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;

View File

@@ -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,

View File

@@ -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);

View File

@@ -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<PhosCamera>>,
window: Query<&Window, With<PrimaryWindow>>,
mouse: Res<ButtonInput<MouseButton>>,
rapier_context: Res<RapierContext>,
spatial_query: SpatialQuery,
mut heightmap: ResMut<Map>,
mut rebuild: ResMut<ChunkRebuildQueue>,
time: Res<Time>,
@@ -44,16 +44,16 @@ fn deform(
return;
};
let collision = rapier_context.cast_ray(
let collision = spatial_query.cast_ray(
cam_ray.origin,
cam_ray.direction.into(),
100.,
true,
QueryFilter::only_fixed(),
SpatialQueryFilter::default(),
);
if let Some((_, dist)) = collision {
let contact_point = cam_ray.get_point(dist);
if let Some(hit) = collision {
let contact_point = cam_ray.get_point(hit.time_of_impact);
let contact_coord = HexCoord::from_world_pos(contact_point);
let cur_height = heightmap.sample_height(&contact_coord);
heightmap.set_height(&contact_coord, cur_height + 1. * time.delta_seconds() * multi);

View File

@@ -1,6 +1,5 @@
use crate::camera_system::camera_plugin::PhosCameraPlugin;
use crate::camera_system::components::PhosCamera;
use crate::map_rendering::chunk_rebuild::ChunkRebuildPlugin;
use crate::map_rendering::map_init::MapInitPlugin;
use crate::shader_extensions::chunk_material::ChunkMaterial;
use crate::utlis::render_distance_system::RenderDistancePlugin;
@@ -9,9 +8,9 @@ use bevy::{
pbr::{wireframe::WireframeConfig, CascadeShadowConfig},
prelude::*,
};
use bevy_rapier3d::dynamics::{Ccd, RigidBody, Velocity};
use bevy_rapier3d::geometry::Collider;
use bevy_rapier3d::plugin::{NoUserData, RapierPhysicsPlugin};
use bevy_xpbd_3d::components::{LinearVelocity, RigidBody};
use bevy_xpbd_3d::plugins::collision::Collider;
use bevy_xpbd_3d::plugins::PhysicsPlugins;
use iyes_perf_ui::prelude::*;
use world_generation::biome_painter::BiomePainterPlugin;
use world_generation::tile_manager::TileAssetPlugin;
@@ -45,7 +44,7 @@ impl Plugin for PhosGamePlugin {
app.add_plugins(TileMapperAssetPlugin);
app.add_plugins(BiomePainterPlugin);
//Physics
app.add_plugins(RapierPhysicsPlugin::<NoUserData>::default());
app.add_plugins(PhysicsPlugins::default());
// app.add_plugins(RapierDebugRenderPlugin::default());
app.insert_resource(WireframeConfig {
@@ -104,10 +103,9 @@ fn spawn_sphere(
transform: Transform::from_translation(cam_transform.translation),
..default()
},
Collider::ball(0.3),
Collider::sphere(0.3),
RigidBody::Dynamic,
Ccd::enabled(),
Velocity::linear(cam_transform.forward() * 50.),
LinearVelocity(cam_transform.forward() * 50.),
));
}
}