biome sampling
This commit is contained in:
@@ -9,6 +9,7 @@ use bevy_inspector_egui::quick::ResourceInspectorPlugin;
|
||||
use rayon::iter::{IntoParallelRefIterator, ParallelIterator};
|
||||
use shared::states::{GameplayState, MenuState};
|
||||
use world_generation::{
|
||||
biome_asset::BiomeAsset,
|
||||
biome_painter::*,
|
||||
heightmap::generate_heightmap,
|
||||
hex_utils::{offset_to_index, SHORT_DIAGONAL},
|
||||
@@ -272,6 +273,7 @@ fn spawn_map(
|
||||
tile_assets: Res<Assets<TileAsset>>,
|
||||
tile_mappers: Res<Assets<TileMapperAsset>>,
|
||||
biome_painters: Res<Assets<BiomePainterAsset>>,
|
||||
biome_assets: Res<Assets<BiomeAsset>>,
|
||||
painter: Res<CurrentBiomePainter>,
|
||||
mut generator_state: ResMut<NextState<GeneratorState>>,
|
||||
cur_game_state: Res<State<MenuState>>,
|
||||
@@ -280,7 +282,7 @@ fn spawn_map(
|
||||
) {
|
||||
let b_painter = biome_painters.get(painter.handle.clone());
|
||||
let cur_painter = b_painter.unwrap();
|
||||
paint_map(&mut heightmap, cur_painter, &tile_assets, &tile_mappers);
|
||||
paint_map(&mut heightmap, cur_painter, &tile_assets, &biome_assets, &tile_mappers);
|
||||
|
||||
let chunk_meshes: Vec<_> = heightmap
|
||||
.chunks
|
||||
|
||||
@@ -9,6 +9,7 @@ use bevy::{
|
||||
use bevy_rapier3d::geometry::{Collider, TriMeshFlags};
|
||||
use rayon::iter::{IntoParallelRefMutIterator, ParallelIterator};
|
||||
use world_generation::{
|
||||
biome_asset::BiomeAsset,
|
||||
biome_painter::BiomePainterAsset,
|
||||
generators::{chunk_colliders::generate_chunk_collider, mesh_generator::generate_chunk_mesh},
|
||||
hex_utils::offset_to_world,
|
||||
@@ -21,10 +22,11 @@ pub fn paint_map(
|
||||
map: &mut Map,
|
||||
painter: &BiomePainterAsset,
|
||||
tiles: &Res<Assets<TileAsset>>,
|
||||
biomes: &Res<Assets<BiomeAsset>>,
|
||||
mappers: &Res<Assets<TileMapperAsset>>,
|
||||
) {
|
||||
map.chunks.par_iter_mut().for_each(|chunk: &mut Chunk| {
|
||||
paint_chunk(chunk, painter, tiles, mappers);
|
||||
paint_chunk(chunk, painter, tiles, biomes, mappers);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -32,6 +34,7 @@ pub fn paint_chunk(
|
||||
chunk: &mut Chunk,
|
||||
painter: &BiomePainterAsset,
|
||||
tiles: &Res<Assets<TileAsset>>,
|
||||
biomes: &Res<Assets<BiomeAsset>>,
|
||||
mappers: &Res<Assets<TileMapperAsset>>,
|
||||
) {
|
||||
for z in 0..Chunk::SIZE {
|
||||
@@ -40,8 +43,11 @@ pub fn paint_chunk(
|
||||
let height = chunk.heights[idx];
|
||||
let moisture = chunk.moisture[idx];
|
||||
let temperature = chunk.temperature[idx];
|
||||
let biome = mappers.get(painter.sample_biome(moisture, temperature));
|
||||
let tile_handle = biome.unwrap().sample_tile(height);
|
||||
let biome = biomes
|
||||
.get(painter.sample_biome(&biomes, moisture, temperature, 0.))
|
||||
.unwrap();
|
||||
let mapper = mappers.get(biome.tile_mapper.clone());
|
||||
let tile_handle = mapper.unwrap().sample_tile(height);
|
||||
let tile = tiles.get(tile_handle).unwrap();
|
||||
chunk.textures[idx] = [tile.texture_id, tile.side_texture_id];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user