z sorting attempt

This commit is contained in:
2024-12-14 01:04:52 +00:00
parent bf3ddd0e74
commit 8d89f86c69
4 changed files with 57 additions and 53 deletions
+26 -25
View File
@@ -6,28 +6,29 @@ use bevy::prelude::*;
use rand::prelude::*;
use noise::{NoiseFn, Perlin};
pub const Z_INDEX:f32 = 0.;
pub fn setup_level(mut commands: Commands, asset_server: Res<AssetServer>) {
setup_tilemap(&mut commands, &asset_server);
// for x in -50..50 {
// for y in -25..25 {
// if random::<f32>() < 0.1 {
// commands.spawn(Citizen::new(
// &asset_server,
// Vec3::new(x as f32 * 64., y as f32 * 64., 1.),
// ));
// }
// }
// }
for x in -10..10 {
for y in -10..10 {
if random::<f32>() < 0.1 {
commands.spawn(Citizen::new(
&asset_server,
Vec3::new(x as f32 * 64., y as f32 * 64., 0.9),
));
}
}
}
}
fn setup_tilemap(commands: &mut Commands, asset_server: &Res<AssetServer>) {
let perlin = Perlin::new(0);
for x in -150..150 {
for y in -150..150 {
for z in -10..10 {
for x in -20..20 {
for y in -20..20 {
for z in -2..10 {
let position = Vec3::new(
x as f32 * TILE_SIZE,
y as f32 * TILE_SIZE,
@@ -42,23 +43,15 @@ fn setup_tilemap(commands: &mut Commands, asset_server: &Res<AssetServer>) {
]);
let mut items: Vec<ItemBundle> = vec![];
if noise_value < -0.3 {
if noise_value < -0.4 {
commands
.spawn(TilePrefab::rock(position, asset_server))
.spawn(TilePrefab::air(position, asset_server))
.with_children(|parent| {
for item in items {
parent.spawn(item);
}
});
} else if noise_value < 0. {
commands
.spawn(TilePrefab::dirt(position, asset_server))
.with_children(|parent| {
for item in items {
parent.spawn(item);
}
});
} else if noise_value < 0.3 {
} else if noise_value < -0.2 {
commands
.spawn(TilePrefab::grass(position, asset_server))
.with_children(|parent| {
@@ -66,8 +59,16 @@ fn setup_tilemap(commands: &mut Commands, asset_server: &Res<AssetServer>) {
parent.spawn(item);
}
});
} else if noise_value < 0.2 {
commands
.spawn(TilePrefab::dirt(position, asset_server))
.with_children(|parent| {
for item in items {
parent.spawn(item);
}
});
} else {
commands.spawn(TilePrefab::air(position, asset_server));
commands.spawn(TilePrefab::rock(position, asset_server));
}
}
}