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",
"program": "${workspaceRoot}/target/debug/phos.exe",
"args": [],
"cwd": "${workspaceRoot}/target/debug",
"cwd": "${workspaceRoot}/game/main",
"preLaunchTask": "Build",
// "environment": [
// {

View File

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

View File

@@ -128,8 +128,8 @@ fn finalize_biome_painter(
biome_painter: Res<BiomePainterAsset>,
biomes: Res<Assets<BiomeAsset>>,
) {
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);
}

View File

@@ -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<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 mut map_type = state.target_map_type;