This commit is contained in:
2024-09-02 23:44:35 -04:00
parent 2d1fb78ab8
commit d58570f646
4 changed files with 39 additions and 8 deletions

2
.vscode/launch.json vendored
View File

@@ -12,7 +12,7 @@
"name": "Debug", "name": "Debug",
"program": "${workspaceRoot}/target/debug/phos.exe", "program": "${workspaceRoot}/target/debug/phos.exe",
"args": [], "args": [],
"cwd": "${workspaceRoot}/target/debug", "cwd": "${workspaceRoot}/game/main",
"preLaunchTask": "Build", "preLaunchTask": "Build",
// "environment": [ // "environment": [
// { // {

View File

@@ -36,6 +36,11 @@ fn main() {
mag_filter: ImageFilterMode::Nearest, mag_filter: ImageFilterMode::Nearest,
..default() ..default()
}, },
})
.set(AssetPlugin {
#[cfg(not(debug_assertions))]
watch_for_changes_override: Some(true),
..Default::default()
}), }),
WorldInspectorPlugin::new(), WorldInspectorPlugin::new(),
WireframePlugin, WireframePlugin,

View File

@@ -128,8 +128,8 @@ fn finalize_biome_painter(
biome_painter: Res<BiomePainterAsset>, biome_painter: Res<BiomePainterAsset>,
biomes: Res<Assets<BiomeAsset>>, biomes: Res<Assets<BiomeAsset>>,
) { ) {
let biome_painter = biome_painter.build(&biomes); let painter = biome_painter.build(&biomes);
commands.insert_resource(biome_painter); commands.insert_resource(painter);
next_generator_state.set(GeneratorState::GenerateHeightmap); next_generator_state.set(GeneratorState::GenerateHeightmap);
} }

View File

@@ -1,10 +1,11 @@
use bevy::{prelude::*, render::render_asset::RenderAssetUsages}; use bevy::{prelude::*, render::render_asset::RenderAssetUsages};
use bevy_inspector_egui::bevy_egui::EguiContexts; use bevy_inspector_egui::bevy_egui::EguiContexts;
use bevy_inspector_egui::egui::{self}; use bevy_inspector_egui::egui::{self};
use bevy_rapier3d::rapier::crossbeam::deque::Steal;
use image::{ImageBuffer, Rgba}; use image::{ImageBuffer, Rgba};
use world_generation::map::biome_map::{self, BiomeMap}; use world_generation::biome_asset::BiomeAsset;
use world_generation::map::map_utils::{render_biome_map, render_biome_noise_map, update_map}; 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}; use world_generation::{map::map_utils::render_map, prelude::Map, states::GeneratorState};
pub struct EditorPlugin; 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(PostUpdate, prepare_image.run_if(in_state(GeneratorState::SpawnMap)));
app.add_systems( app.add_systems(
Update, 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, BiomeNoiseMoisture,
} }
fn render_map_ui(image: Res<MapImage>, heightmap: Res<Map>, biome_map: Res<BiomeMap>, mut contexts: EguiContexts, mut state: ResMut<UIState>) { fn asset_reloaded(
mut asset_events: EventReader<AssetEvent<BiomeAsset>>,
mut biomes: ResMut<Assets<BiomeAsset>>,
biome_painter: Res<BiomePainterAsset>,
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<MapImage>,
heightmap: Res<Map>,
biome_map: Res<BiomeMap>,
mut contexts: EguiContexts,
mut state: ResMut<UIState>,
) {
let id = contexts.add_image(image.0.clone_weak()); let id = contexts.add_image(image.0.clone_weak());
let mut map_type = state.target_map_type; let mut map_type = state.target_map_type;