mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Switched light map iteration order, fire bowls in dungeons
This commit is contained in:
parent
a1236d4da0
commit
765a1ca17b
@ -171,6 +171,7 @@ impl Block {
|
|||||||
SpriteKind::StreetLamp | SpriteKind::StreetLampTall => Some(24),
|
SpriteKind::StreetLamp | SpriteKind::StreetLampTall => Some(24),
|
||||||
SpriteKind::Ember => Some(20),
|
SpriteKind::Ember => Some(20),
|
||||||
SpriteKind::WallLamp => Some(16),
|
SpriteKind::WallLamp => Some(16),
|
||||||
|
SpriteKind::FireBowlGround => Some(16),
|
||||||
SpriteKind::Velorite | SpriteKind::VeloriteFrag => Some(6),
|
SpriteKind::Velorite | SpriteKind::VeloriteFrag => Some(6),
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,7 @@ impl<'a> System<'a> for Sys {
|
|||||||
let body = entity.get_body();
|
let body = entity.get_body();
|
||||||
server_emitter.emit(ServerEvent::CreateNpc {
|
server_emitter.emit(ServerEvent::CreateNpc {
|
||||||
pos: comp::Pos(spawn_pos),
|
pos: comp::Pos(spawn_pos),
|
||||||
stats: comp::Stats::new("Traveller [rt]".to_string(), body)
|
stats: comp::Stats::new("Traveller".to_string(), body)
|
||||||
.with_level(entity.get_level()),
|
.with_level(entity.get_level()),
|
||||||
health: comp::Health::new(body, 10),
|
health: comp::Health::new(body, 10),
|
||||||
loadout: entity.get_loadout(&ability_map),
|
loadout: entity.get_loadout(&ability_map),
|
||||||
|
@ -54,8 +54,8 @@ fn calc_light<V: RectRasterableVol<Vox = Block> + ReadVol + Debug>(
|
|||||||
|
|
||||||
let mut light_map = vec![UNKNOWN; outer.size().product() as usize];
|
let mut light_map = vec![UNKNOWN; outer.size().product() as usize];
|
||||||
let lm_idx = {
|
let lm_idx = {
|
||||||
let (w, h, _) = outer.clone().size().into_tuple();
|
let (_, h, d) = outer.clone().size().into_tuple();
|
||||||
move |x, y, z| (z * h * w + x * h + y) as usize
|
move |x, y, z| (h * d * x + d * y + z) as usize
|
||||||
};
|
};
|
||||||
// Light propagation queue
|
// Light propagation queue
|
||||||
let mut prop_que = lit_blocks
|
let mut prop_que = lit_blocks
|
||||||
@ -67,8 +67,8 @@ fn calc_light<V: RectRasterableVol<Vox = Block> + ReadVol + Debug>(
|
|||||||
.collect::<VecDeque<_>>();
|
.collect::<VecDeque<_>>();
|
||||||
// Start sun rays
|
// Start sun rays
|
||||||
if is_sunlight {
|
if is_sunlight {
|
||||||
for y in 0..outer.size().h {
|
for x in 0..outer.size().w {
|
||||||
for x in 0..outer.size().w {
|
for y in 0..outer.size().h {
|
||||||
let z = outer.size().d - 1;
|
let z = outer.size().d - 1;
|
||||||
let is_air = vol_cached
|
let is_air = vol_cached
|
||||||
.get(outer.min + Vec3::new(x, y, z))
|
.get(outer.min + Vec3::new(x, y, z))
|
||||||
@ -209,20 +209,20 @@ fn calc_light<V: RectRasterableVol<Vox = Block> + ReadVol + Debug>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
let min_bounds = Aabb {
|
let min_bounds = Aabb {
|
||||||
min: bounds.min - Vec3::unit_z(),
|
min: bounds.min - 1,
|
||||||
max: bounds.max + Vec3::unit_z(),
|
max: bounds.max + 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Minimise light map to reduce duplication. We can now discard light info
|
// Minimise light map to reduce duplication. We can now discard light info
|
||||||
// for blocks outside of the chunk borders.
|
// for blocks outside of the chunk borders.
|
||||||
let mut light_map2 = vec![UNKNOWN; min_bounds.size().product() as usize];
|
let mut light_map2 = vec![UNKNOWN; min_bounds.size().product() as usize];
|
||||||
let lm_idx2 = {
|
let lm_idx2 = {
|
||||||
let (w, h, _) = min_bounds.clone().size().into_tuple();
|
let (_, h, d) = min_bounds.clone().size().into_tuple();
|
||||||
move |x, y, z| (z * h * w + x * h + y) as usize
|
move |x, y, z| (h * d * x + d * y + z) as usize
|
||||||
};
|
};
|
||||||
for z in 0..min_bounds.size().d {
|
for x in 0..min_bounds.size().w {
|
||||||
for y in 0..min_bounds.size().h {
|
for y in 0..min_bounds.size().h {
|
||||||
for x in 0..min_bounds.size().w {
|
for z in 0..min_bounds.size().d {
|
||||||
let off = min_bounds.min - outer.min;
|
let off = min_bounds.min - outer.min;
|
||||||
light_map2[lm_idx2(x, y, z)] = light_map[lm_idx(x + off.x, y + off.y, z + off.z)];
|
light_map2[lm_idx2(x, y, z)] = light_map[lm_idx(x + off.x, y + off.y, z + off.z)];
|
||||||
}
|
}
|
||||||
|
@ -1032,14 +1032,15 @@ impl Floor {
|
|||||||
let tunnel_dist =
|
let tunnel_dist =
|
||||||
1.0 - (dist_to_wall - wall_thickness).max(0.0) / (TILE_SIZE as f32 - wall_thickness);
|
1.0 - (dist_to_wall - wall_thickness).max(0.0) / (TILE_SIZE as f32 - wall_thickness);
|
||||||
|
|
||||||
let floor_sprite = if RandomField::new(7331).chance(Vec3::from(pos), 0.00005) {
|
let floor_sprite = if RandomField::new(7331).chance(Vec3::from(pos), 0.001) {
|
||||||
BlockMask::new(
|
BlockMask::new(
|
||||||
with_sprite(
|
with_sprite(
|
||||||
match (RandomField::new(1337).get(Vec3::from(pos)) / 2) % 20 {
|
match (RandomField::new(1337).get(Vec3::from(pos)) / 2) % 30 {
|
||||||
0 => SpriteKind::Apple,
|
0 => SpriteKind::Apple,
|
||||||
1 => SpriteKind::VeloriteFrag,
|
1 => SpriteKind::VeloriteFrag,
|
||||||
2 => SpriteKind::Velorite,
|
2 => SpriteKind::Velorite,
|
||||||
3..=8 => SpriteKind::Mushroom,
|
3..=8 => SpriteKind::Mushroom,
|
||||||
|
9..=15 => SpriteKind::FireBowlGround,
|
||||||
_ => SpriteKind::ShortGrass,
|
_ => SpriteKind::ShortGrass,
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
Loading…
Reference in New Issue
Block a user