units testing

This commit is contained in:
2024-09-10 20:41:33 -04:00
parent 805fb3feb6
commit b156a33a54
15 changed files with 254 additions and 131 deletions

View File

@@ -107,6 +107,7 @@ fn setup_materials(
base: StandardMaterial {
base_color: Color::srgb(0., 0.878, 1.),
alpha_mode: AlphaMode::Blend,
metallic: 1.0,
..Default::default()
},
extension: WaterMaterial {

View File

@@ -2,6 +2,7 @@ use bevy::{prelude::*, utils::hashbrown::HashSet, window::PrimaryWindow};
use bevy_rapier3d::{pipeline::QueryFilter, plugin::RapierContext};
use shared::{
events::{ChunkModifiedEvent, TileModifiedEvent},
resources::TileUnderCursor,
states::GameplayState,
};
use world_generation::{hex_utils::HexCoord, prelude::Map, states::GeneratorState};
@@ -25,13 +26,11 @@ impl Plugin for TerraFormingTestPlugin {
}
fn deform(
cam_query: Query<(&GlobalTransform, &Camera), With<PhosCamera>>,
mut commands: Commands,
window: Query<&Window, With<PrimaryWindow>>,
mouse: Res<ButtonInput<MouseButton>>,
rapier_context: Res<RapierContext>,
mut heightmap: ResMut<Map>,
chunks: Res<PhosChunkRegistry>,
tile_under_cursor: Res<TileUnderCursor>,
mut chunk_modified: EventWriter<ChunkModifiedEvent>,
mut tile_modified: EventWriter<TileModifiedEvent>,
) {
@@ -46,33 +45,10 @@ fn deform(
return;
}
let win = window.single();
let (cam_transform, camera) = cam_query.single();
let Some(cursor_pos) = win.cursor_position() else {
return;
};
let Some(cam_ray) = camera.viewport_to_world(cam_transform, cursor_pos) else {
return;
};
let collision = rapier_context.cast_ray(
cam_ray.origin,
cam_ray.direction.into(),
500.,
true,
QueryFilter::only_fixed(),
);
if let Some((_, dist)) = collision {
if let Some(contact) = tile_under_cursor.0 {
#[cfg(feature = "tracing")]
let span = info_span!("Deform Mesh").entered();
let contact_point = cam_ray.get_point(dist);
let contact_coord = HexCoord::from_world_pos(contact_point);
if !heightmap.is_in_bounds(&contact_coord) {
return;
}
let modified_tiles = heightmap.create_crater(&contact_coord, 5, 5. * multi);
let modified_tiles = heightmap.create_crater(&contact.tile, 5, 5. * multi);
let mut chunk_set: HashSet<usize> = HashSet::new();
for (tile, height) in modified_tiles {
let chunk = tile.to_chunk_index(heightmap.width);