mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Code cleanup, doubled volume of leaves.ogg
This commit is contained in:
parent
0d21361e05
commit
9104a07530
BIN
assets/voxygen/audio/ambience/leaves.ogg
(Stored with Git LFS)
BIN
assets/voxygen/audio/ambience/leaves.ogg
(Stored with Git LFS)
Binary file not shown.
@ -162,7 +162,8 @@ impl WeatherLerp {
|
|||||||
self.old = mem::replace(&mut self.new, (weather, Instant::now()));
|
self.old = mem::replace(&mut self.new, (weather, Instant::now()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Make impårovements to this interpolation, it's main issue is assuming that updates come at regular intervals.
|
// TODO: Make impprovements to this interpolation, it's main issue is assuming
|
||||||
|
// that updates come at regular intervals.
|
||||||
fn update(&mut self, to_update: &mut WeatherGrid) {
|
fn update(&mut self, to_update: &mut WeatherGrid) {
|
||||||
prof_span!("WeatherLerp::update");
|
prof_span!("WeatherLerp::update");
|
||||||
let old = &self.old.0;
|
let old = &self.old.0;
|
||||||
|
@ -48,8 +48,20 @@ impl AmbientMgr {
|
|||||||
// Iterate through each tag
|
// Iterate through each tag
|
||||||
for tag in AmbientChannelTag::iter() {
|
for tag in AmbientChannelTag::iter() {
|
||||||
// If the conditions warrant creating a channel of that tag
|
// If the conditions warrant creating a channel of that tag
|
||||||
if AmbientMgr::check_ambience_necessity(tag, client, camera)
|
if match tag {
|
||||||
&& audio.get_ambient_channel(tag).is_none()
|
AmbientChannelTag::Wind => {
|
||||||
|
AmbientChannelTag::get_tag_volume(tag, client, camera) > 0.0
|
||||||
|
},
|
||||||
|
AmbientChannelTag::Rain => {
|
||||||
|
AmbientChannelTag::get_tag_volume(tag, client, camera) > 0.1
|
||||||
|
},
|
||||||
|
AmbientChannelTag::Thunder => {
|
||||||
|
AmbientChannelTag::get_tag_volume(tag, client, camera) > 0.0
|
||||||
|
},
|
||||||
|
AmbientChannelTag::Leaves => {
|
||||||
|
AmbientChannelTag::get_tag_volume(tag, client, camera) > 0.1
|
||||||
|
},
|
||||||
|
} && audio.get_ambient_channel(tag).is_none()
|
||||||
{
|
{
|
||||||
// Iterate through the supposed number of channels - one for each tag
|
// Iterate through the supposed number of channels - one for each tag
|
||||||
for index in 0..AmbientChannelTag::iter().len() {
|
for index in 0..AmbientChannelTag::iter().len() {
|
||||||
@ -126,60 +138,6 @@ impl AmbientMgr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn check_ambience_necessity(tag: AmbientChannelTag, client: &Client, camera: &Camera) -> bool {
|
|
||||||
match tag {
|
|
||||||
AmbientChannelTag::Wind => {
|
|
||||||
let focus_off = camera.get_focus_pos().map(f32::trunc);
|
|
||||||
let cam_pos = camera.dependents().cam_pos + focus_off;
|
|
||||||
|
|
||||||
let (terrain_alt, tree_density) = if let Some(chunk) = client.current_chunk() {
|
|
||||||
(chunk.meta().alt(), chunk.meta().tree_density())
|
|
||||||
} else {
|
|
||||||
(0.0, 0.0)
|
|
||||||
};
|
|
||||||
|
|
||||||
let alt_multiplier = (cam_pos.z / 1200.0).abs();
|
|
||||||
|
|
||||||
let tree_multiplier = ((1.0 - tree_density)
|
|
||||||
+ ((cam_pos.z - terrain_alt).abs() / 150.0).powi(2))
|
|
||||||
.min(1.0);
|
|
||||||
|
|
||||||
alt_multiplier * tree_multiplier > 0.0
|
|
||||||
},
|
|
||||||
AmbientChannelTag::Rain => {
|
|
||||||
let focus_off = camera.get_focus_pos().map(f32::trunc);
|
|
||||||
let cam_pos = camera.dependents().cam_pos + focus_off;
|
|
||||||
|
|
||||||
let terrain_alt = if let Some(chunk) = client.current_chunk() {
|
|
||||||
chunk.meta().alt()
|
|
||||||
} else {
|
|
||||||
0.0
|
|
||||||
};
|
|
||||||
let camera_multiplier =
|
|
||||||
1.0 - ((cam_pos.z - terrain_alt).abs() / 75.0).powi(2).min(1.0);
|
|
||||||
|
|
||||||
client.weather_at_player().rain > 0.001 || camera_multiplier > 0.0
|
|
||||||
},
|
|
||||||
AmbientChannelTag::Thunder => client.weather_at_player().rain * 500.0 > 0.7,
|
|
||||||
AmbientChannelTag::Leaves => {
|
|
||||||
let focus_off = camera.get_focus_pos().map(f32::trunc);
|
|
||||||
let cam_pos = camera.dependents().cam_pos + focus_off;
|
|
||||||
|
|
||||||
let (terrain_alt, tree_density) = if let Some(chunk) = client.current_chunk() {
|
|
||||||
(chunk.meta().alt(), chunk.meta().tree_density())
|
|
||||||
} else {
|
|
||||||
(0.0, 0.0)
|
|
||||||
};
|
|
||||||
let tree_multiplier = 1.0
|
|
||||||
- (((1.0 - tree_density)
|
|
||||||
+ ((cam_pos.z - terrain_alt + 20.0).abs() / 150.0).powi(2))
|
|
||||||
.min(1.0));
|
|
||||||
|
|
||||||
tree_multiplier > 0.1
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AmbientChannelTag {
|
impl AmbientChannelTag {
|
||||||
@ -237,12 +195,10 @@ impl AmbientChannelTag {
|
|||||||
rain_intensity.min(0.9)
|
rain_intensity.min(0.9)
|
||||||
},
|
},
|
||||||
AmbientChannelTag::Thunder => {
|
AmbientChannelTag::Thunder => {
|
||||||
let rain_intensity = client.weather_at_player().rain * 500.0;
|
if client.weather_at_player().rain * 500.0 < 0.7 {
|
||||||
|
|
||||||
if rain_intensity < 0.7 {
|
|
||||||
0.0
|
0.0
|
||||||
} else {
|
} else {
|
||||||
rain_intensity
|
client.weather_at_player().rain * 500.0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
AmbientChannelTag::Leaves => {
|
AmbientChannelTag::Leaves => {
|
||||||
|
@ -13,7 +13,7 @@ use common::{
|
|||||||
lod,
|
lod,
|
||||||
spiral::Spiral2d,
|
spiral::Spiral2d,
|
||||||
util::srgba_to_linear,
|
util::srgba_to_linear,
|
||||||
weather
|
weather,
|
||||||
};
|
};
|
||||||
use hashbrown::HashMap;
|
use hashbrown::HashMap;
|
||||||
use std::ops::Range;
|
use std::ops::Range;
|
||||||
@ -191,14 +191,7 @@ impl Lod {
|
|||||||
[size.x, size.y],
|
[size.x, size.y],
|
||||||
&weather
|
&weather
|
||||||
.iter()
|
.iter()
|
||||||
.map(|(_, w)| {
|
.map(|(_, w)| [(w.cloud * 255.0) as u8, (w.rain * 255.0) as u8, 0, 0])
|
||||||
[
|
|
||||||
(w.cloud * 255.0) as u8,
|
|
||||||
(w.rain * 255.0) as u8,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
]
|
|
||||||
})
|
|
||||||
.collect::<Vec<_>>(),
|
.collect::<Vec<_>>(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user