From d58570f64649bf27272fde87beb0c6e3a34c417b Mon Sep 17 00:00:00 2001 From: Amatsugu Date: Mon, 2 Sep 2024 23:44:35 -0400 Subject: [PATCH] misc --- .vscode/launch.json | 2 +- game/main/src/main.rs | 5 ++++ game/main/src/map_rendering/map_init.rs | 4 +-- game/main/src/utlis/editor_plugin.rs | 36 +++++++++++++++++++++---- 4 files changed, 39 insertions(+), 8 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 2c57237..53fd94b 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -12,7 +12,7 @@ "name": "Debug", "program": "${workspaceRoot}/target/debug/phos.exe", "args": [], - "cwd": "${workspaceRoot}/target/debug", + "cwd": "${workspaceRoot}/game/main", "preLaunchTask": "Build", // "environment": [ // { diff --git a/game/main/src/main.rs b/game/main/src/main.rs index 09a015b..ba158be 100644 --- a/game/main/src/main.rs +++ b/game/main/src/main.rs @@ -36,6 +36,11 @@ fn main() { mag_filter: ImageFilterMode::Nearest, ..default() }, + }) + .set(AssetPlugin { + #[cfg(not(debug_assertions))] + watch_for_changes_override: Some(true), + ..Default::default() }), WorldInspectorPlugin::new(), WireframePlugin, diff --git a/game/main/src/map_rendering/map_init.rs b/game/main/src/map_rendering/map_init.rs index f698ebb..dae29fc 100644 --- a/game/main/src/map_rendering/map_init.rs +++ b/game/main/src/map_rendering/map_init.rs @@ -128,8 +128,8 @@ fn finalize_biome_painter( biome_painter: Res, biomes: Res>, ) { - let biome_painter = biome_painter.build(&biomes); - commands.insert_resource(biome_painter); + let painter = biome_painter.build(&biomes); + commands.insert_resource(painter); next_generator_state.set(GeneratorState::GenerateHeightmap); } diff --git a/game/main/src/utlis/editor_plugin.rs b/game/main/src/utlis/editor_plugin.rs index 1a5a242..b6dc417 100644 --- a/game/main/src/utlis/editor_plugin.rs +++ b/game/main/src/utlis/editor_plugin.rs @@ -1,10 +1,11 @@ use bevy::{prelude::*, render::render_asset::RenderAssetUsages}; use bevy_inspector_egui::bevy_egui::EguiContexts; use bevy_inspector_egui::egui::{self}; -use bevy_rapier3d::rapier::crossbeam::deque::Steal; use image::{ImageBuffer, Rgba}; -use world_generation::map::biome_map::{self, BiomeMap}; -use world_generation::map::map_utils::{render_biome_map, render_biome_noise_map, update_map}; +use world_generation::biome_asset::BiomeAsset; +use world_generation::biome_painter::BiomePainterAsset; +use world_generation::map::biome_map::BiomeMap; +use world_generation::map::map_utils::{render_biome_map, render_biome_noise_map}; use world_generation::{map::map_utils::render_map, prelude::Map, states::GeneratorState}; pub struct EditorPlugin; @@ -16,7 +17,7 @@ impl Plugin for EditorPlugin { app.add_systems(PostUpdate, prepare_image.run_if(in_state(GeneratorState::SpawnMap))); app.add_systems( Update, - (render_map_ui, update_map_render).run_if(in_state(GeneratorState::Idle)), + (render_map_ui, update_map_render, asset_reloaded).run_if(in_state(GeneratorState::Idle)), ); } } @@ -59,7 +60,32 @@ enum MapDisplayType { BiomeNoiseMoisture, } -fn render_map_ui(image: Res, heightmap: Res, biome_map: Res, mut contexts: EguiContexts, mut state: ResMut) { +fn asset_reloaded( + mut asset_events: EventReader>, + mut biomes: ResMut>, + biome_painter: Res, + mut commands: Commands, +) { + let mut rebuild = false; + for event in asset_events.read() { + match event { + AssetEvent::Modified { id } => rebuild = true, + _ => todo!(), + } + } + if rebuild { + let painter = biome_painter.build(&biomes); + commands.insert_resource(painter); + } +} + +fn render_map_ui( + image: Res, + heightmap: Res, + biome_map: Res, + mut contexts: EguiContexts, + mut state: ResMut, +) { let id = contexts.add_image(image.0.clone_weak()); let mut map_type = state.target_map_type;