mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Use a different voice attentuation distance for teammates
Separate cvar to control this. Double the normal distance by default.
This commit is contained in:
parent
23b4b83c7c
commit
a0ede8101d
3 changed files with 23 additions and 4 deletions
|
|
@ -1409,6 +1409,10 @@ consvar_t cv_voice_distanceattenuation_distance = NetVar("voice_distanceattenuat
|
|||
.floating_point()
|
||||
.description("Voice speaker's distance from listener at which positional voice is fully attenuated");
|
||||
|
||||
consvar_t cv_voice_distanceattenuation_teamdistance = NetVar("voice_distanceattenuation_teamdistance", "8192")
|
||||
.floating_point()
|
||||
.description("Teammate voice speaker's distance from listener at which positional voice is fully attenuated");
|
||||
|
||||
// The volume factor (scaled logarithmically, i.e. 0.5 = "half as loud") for voice distance attenuation
|
||||
consvar_t cv_voice_distanceattenuation_factor = NetVar("voice_distanceattenuation_factor", "0.2")
|
||||
.floating_point()
|
||||
|
|
|
|||
|
|
@ -933,6 +933,7 @@ void S_UpdateVoicePositionalProperties(void)
|
|||
// Positional voice audio
|
||||
boolean voice_proximity_enabled = cv_voice_proximity.value == 1;
|
||||
float voice_distanceattenuation_distance = FixedToFloat(cv_voice_distanceattenuation_distance.value) * FixedToFloat(mapheaderinfo[gamemap-1]->mobj_scale);
|
||||
float voice_distanceattenuation_teamdistance = FixedToFloat(cv_voice_distanceattenuation_teamdistance.value) * FixedToFloat(mapheaderinfo[gamemap-1]->mobj_scale);
|
||||
float voice_distanceattenuation_factor = FixedToFloat(cv_voice_distanceattenuation_factor.value);
|
||||
float voice_stereopanning_factor = FixedToFloat(cv_voice_stereopanning_factor.value);
|
||||
float voice_concurrentattenuation_min = max(0, min(MAXPLAYERS, cv_voice_concurrentattenuation_min.value));
|
||||
|
|
@ -946,9 +947,15 @@ void S_UpdateVoicePositionalProperties(void)
|
|||
{
|
||||
if (S_IsPlayerVoiceActive(i))
|
||||
{
|
||||
if (voice_distanceattenuation_distance > 0)
|
||||
float attenuation_distance = voice_distanceattenuation_distance;
|
||||
if (G_GametypeHasTeams() && players[i].team == players[consoleplayer].team)
|
||||
{
|
||||
speakingplayers += 1.f - (playerdistances[i] / voice_distanceattenuation_distance);
|
||||
attenuation_distance = voice_distanceattenuation_teamdistance;
|
||||
}
|
||||
|
||||
if (attenuation_distance > 0)
|
||||
{
|
||||
speakingplayers += 1.f - (playerdistances[i] / attenuation_distance);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -1006,10 +1013,17 @@ void S_UpdateVoicePositionalProperties(void)
|
|||
angle = PointIsLeft(ldirx, ldiry, pdirx, pdiry) ? -angle : angle;
|
||||
|
||||
float plrvolume = 1.0f;
|
||||
if (voice_distanceattenuation_distance > 0 && voice_distanceattenuation_factor >= 0 && voice_distanceattenuation_factor <= 1.0f)
|
||||
|
||||
float attenuation_distance = voice_distanceattenuation_distance;
|
||||
if (G_GametypeHasTeams() && players[i].team == players[consoleplayer].team)
|
||||
{
|
||||
attenuation_distance = voice_distanceattenuation_teamdistance;
|
||||
}
|
||||
|
||||
if (attenuation_distance > 0 && voice_distanceattenuation_factor >= 0 && voice_distanceattenuation_factor <= 1.0f)
|
||||
{
|
||||
float invfactor = 1.0f - voice_distanceattenuation_factor;
|
||||
float distfactor = max(0.f, min(voice_distanceattenuation_distance, pdistance)) / voice_distanceattenuation_distance;
|
||||
float distfactor = max(0.f, min(attenuation_distance, pdistance)) / attenuation_distance;
|
||||
plrvolume = max(0.0f, min(1.0f, 1.0f - (invfactor * distfactor)));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ extern consvar_t cv_voice_inputamp;
|
|||
extern consvar_t cv_voice_activationthreshold;
|
||||
extern consvar_t cv_voice_proximity;
|
||||
extern consvar_t cv_voice_distanceattenuation_distance;
|
||||
extern consvar_t cv_voice_distanceattenuation_teamdistance;
|
||||
extern consvar_t cv_voice_distanceattenuation_factor;
|
||||
extern consvar_t cv_voice_stereopanning_factor;
|
||||
extern consvar_t cv_voice_concurrentattenuation_factor;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue