Introduced the new OpenAL EFX handling subsystem. It's fully user-definable

via plain-text definitions and allows even legacy/GoldSrc content to take
advantage of it.
This commit is contained in:
Marco Cawthorne 2021-04-22 11:33:48 +02:00
parent 74f6d1a033
commit f09f5833e0
70 changed files with 1825 additions and 335 deletions

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.690000"
gain "0.316200"
gain_hf "0.794300"
gain_lf "0.891300"
decay_time "3.280000"
decay_hf_ratio "1.170000"
decay_lf_ratio "0.910000"
reflections_gain "0.446700"
reflections_delay "0.044000"
reflections_pan "0 0 0"
late_reverb_gain "0.281800"
late_reverb_delay "0.024000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.200000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.996600"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.300000"
gain "0.316200"
gain_hf "0.732800"
gain_lf "1.000000"
decay_time "1.490000"
decay_hf_ratio "0.860000"
decay_lf_ratio "1.000000"
reflections_gain "0.250000"
reflections_delay "0.007000"
reflections_pan "0 0 0"
late_reverb_gain "0.995400"
late_reverb_delay "0.011000"
late_reverb_pan "0 0 0"
echo_time "0.125000"
echo_depth "0.950000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.447700"
gain_lf "1.000000"
decay_time "7.240000"
decay_hf_ratio "0.330000"
decay_lf_ratio "1.000000"
reflections_gain "0.261200"
reflections_delay "0.020000"
reflections_pan "0 0 0"
late_reverb_gain "1.018600"
late_reverb_delay "0.030000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.578100"
gain_lf "1.000000"
decay_time "4.320000"
decay_hf_ratio "0.590000"
decay_lf_ratio "1.000000"
reflections_gain "0.403200"
reflections_delay "0.020000"
reflections_pan "0 0 0"
late_reverb_gain "0.717000"
late_reverb_delay "0.030000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "0.171500"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.251200"
gain_lf "1.000000"
decay_time "1.490000"
decay_hf_ratio "0.540000"
decay_lf_ratio "1.000000"
reflections_gain "0.653100"
reflections_delay "0.007000"
reflections_pan "0 0 0"
late_reverb_gain "3.273400"
late_reverb_delay "0.011000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "0.428700"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.010000"
gain_lf "1.000000"
decay_time "0.300000"
decay_hf_ratio "0.100000"
decay_lf_ratio "1.000000"
reflections_gain "0.121500"
reflections_delay "0.002000"
reflections_pan "0 0 0"
late_reverb_gain "0.153100"
late_reverb_delay "0.030000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "1.000000"
gain_lf "1.000000"
decay_time "2.910000"
decay_hf_ratio "1.300000"
decay_lf_ratio "1.000000"
reflections_gain "0.500000"
reflections_delay "0.015000"
reflections_pan "0 0 0"
late_reverb_gain "0.706300"
late_reverb_delay "0.022000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "0"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.840000"
gain "0.316200"
gain_hf "0.562300"
gain_lf "1.000000"
decay_time "4.620000"
decay_hf_ratio "0.640000"
decay_lf_ratio "1.230000"
reflections_gain "0.446700"
reflections_delay "0.032000"
reflections_pan "0 0 0"
late_reverb_gain "0.794300"
late_reverb_delay "0.049000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.110000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.500000"
gain "0.316200"
gain_hf "0.398100"
gain_lf "1.000000"
decay_time "1.490000"
decay_hf_ratio "0.670000"
decay_lf_ratio "1.000000"
reflections_gain "0.073000"
reflections_delay "0.007000"
reflections_pan "0 0 0"
late_reverb_gain "0.142700"
late_reverb_delay "0.011000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.780000"
gain "0.316200"
gain_hf "0.707900"
gain_lf "0.891300"
decay_time "1.790000"
decay_hf_ratio "1.120000"
decay_lf_ratio "0.910000"
reflections_gain "0.281800"
reflections_delay "0.046000"
reflections_pan "0 0 0"
late_reverb_gain "0.199500"
late_reverb_delay "0.028000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.200000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.562300"
gain_lf "1.000000"
decay_time "3.920000"
decay_hf_ratio "0.700000"
decay_lf_ratio "1.000000"
reflections_gain "0.242700"
reflections_delay "0.020000"
reflections_pan "0 0 0"
late_reverb_gain "0.997700"
late_reverb_delay "0.029000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.000000"
gain_hf "1.000000"
gain_lf "1.000000"
decay_time "1.000000"
decay_hf_ratio "1.000000"
decay_lf_ratio "1.000000"
reflections_gain "0.000000"
reflections_delay "0.000000"
reflections_pan "0 0 0"
late_reverb_gain "1.000000"
late_reverb_delay "0.000000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "1.000000"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.000000"
gain_hf "1.000000"
gain_lf "1.000000"
decay_time "1.000000"
decay_hf_ratio "1.000000"
decay_lf_ratio "1.000000"
reflections_gain "0.000000"
reflections_delay "0.000000"
reflections_pan "0 0 0"
late_reverb_gain "1.000000"
late_reverb_delay "0.000000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "1.000000"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "0.364500"
diffusion "0.600000"
gain "0.316200"
gain_hf "0.631000"
gain_lf "1.000000"
decay_time "17.230000"
decay_hf_ratio "0.560000"
decay_lf_ratio "1.000000"
reflections_gain "0.139200"
reflections_delay "0.020000"
reflections_pan "0 0 0"
late_reverb_gain "0.493700"
late_reverb_delay "0.030000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "1.000000"
modulation_time "0.810000"
modulation_depth "0.310000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "0"

View file

@ -0,0 +1,23 @@
density "0.428700"
diffusion "0.500000"
gain "0.316200"
gain_hf "1.000000"
gain_lf "1.000000"
decay_time "8.390000"
decay_hf_ratio "1.390000"
decay_lf_ratio "1.000000"
reflections_gain "0.876000"
reflections_delay "0.002000"
reflections_pan "0 0 0"
late_reverb_gain "3.108100"
late_reverb_delay "0.030000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "1.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "0"

View file

@ -0,0 +1,23 @@
density "0.364500"
diffusion "0.560000"
gain "0.316200"
gain_hf "0.794300"
gain_lf "0.707900"
decay_time "1.790000"
decay_hf_ratio "0.380000"
decay_lf_ratio "0.210000"
reflections_gain "0.501200"
reflections_delay "0.002000"
reflections_pan "0 0 0"
late_reverb_gain "1.258900"
late_reverb_delay "0.006000"
late_reverb_pan "0 0 0"
echo_time "0.202000"
echo_depth "0.050000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.988600"
hf_reference "13046.000000"
lf_reference "163.300003"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.300000"
gain "0.316200"
gain_hf "0.022400"
gain_lf "1.000000"
decay_time "1.490000"
decay_hf_ratio "0.540000"
decay_lf_ratio "1.000000"
reflections_gain "0.052500"
reflections_delay "0.162000"
reflections_pan "0 0 0"
late_reverb_gain "0.768200"
late_reverb_delay "0.088000"
late_reverb_pan "0 0 0"
echo_time "0.125000"
echo_depth "1.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.500000"
gain "0.316200"
gain_hf "0.398100"
gain_lf "1.000000"
decay_time "1.490000"
decay_hf_ratio "0.670000"
decay_lf_ratio "1.000000"
reflections_gain "0.073000"
reflections_delay "0.007000"
reflections_pan "0 0 0"
late_reverb_gain "0.142700"
late_reverb_delay "0.011000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.780000"
gain "0.316200"
gain_hf "0.707900"
gain_lf "0.891300"
decay_time "1.790000"
decay_hf_ratio "1.120000"
decay_lf_ratio "0.910000"
reflections_gain "0.281800"
reflections_delay "0.046000"
reflections_pan "0 0 0"
late_reverb_gain "0.199500"
late_reverb_delay "0.028000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.200000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.562300"
gain_lf "1.000000"
decay_time "3.920000"
decay_hf_ratio "0.700000"
decay_lf_ratio "1.000000"
reflections_gain "0.242700"
reflections_delay "0.020000"
reflections_pan "0 0 0"
late_reverb_gain "0.997700"
late_reverb_delay "0.029000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "0.364500"
diffusion "0.560000"
gain "0.316200"
gain_hf "0.794300"
gain_lf "0.707900"
decay_time "1.790000"
decay_hf_ratio "0.380000"
decay_lf_ratio "0.210000"
reflections_gain "0.501200"
reflections_delay "0.002000"
reflections_pan "0 0 0"
late_reverb_gain "1.258900"
late_reverb_delay "0.006000"
late_reverb_pan "0 0 0"
echo_time "0.202000"
echo_depth "0.050000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.988600"
hf_reference "13046.000000"
lf_reference "163.300003"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "0.976600"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.001000"
gain_lf "1.000000"
decay_time "0.500000"
decay_hf_ratio "0.100000"
decay_lf_ratio "1.000000"
reflections_gain "0.205100"
reflections_delay "0.003000"
reflections_pan "0 0 0"
late_reverb_gain "0.280500"
late_reverb_delay "0.004000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "0.171500"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.001000"
gain_lf "1.000000"
decay_time "0.170000"
decay_hf_ratio "0.100000"
decay_lf_ratio "1.000000"
reflections_gain "0.250000"
reflections_delay "0.001000"
reflections_pan "0 0 0"
late_reverb_gain "1.269100"
late_reverb_delay "0.002000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "1.000000"
gain_lf "1.000000"
decay_time "2.910000"
decay_hf_ratio "1.300000"
decay_lf_ratio "1.000000"
reflections_gain "0.500000"
reflections_delay "0.015000"
reflections_pan "0 0 0"
late_reverb_gain "0.706300"
late_reverb_delay "0.022000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "0"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "1.000000"
gain_lf "1.000000"
decay_time "2.910000"
decay_hf_ratio "1.300000"
decay_lf_ratio "1.000000"
reflections_gain "0.500000"
reflections_delay "0.015000"
reflections_pan "0 0 0"
late_reverb_gain "0.706300"
late_reverb_delay "0.022000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "0"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "1.000000"
gain_lf "1.000000"
decay_time "2.910000"
decay_hf_ratio "1.300000"
decay_lf_ratio "1.000000"
reflections_gain "0.500000"
reflections_delay "0.015000"
reflections_pan "0 0 0"
late_reverb_gain "0.706300"
late_reverb_delay "0.022000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "0"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.447700"
gain_lf "1.000000"
decay_time "7.240000"
decay_hf_ratio "0.330000"
decay_lf_ratio "1.000000"
reflections_gain "0.261200"
reflections_delay "0.020000"
reflections_pan "0 0 0"
late_reverb_gain "1.018600"
late_reverb_delay "0.030000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.562300"
gain_lf "1.000000"
decay_time "3.920000"
decay_hf_ratio "0.700000"
decay_lf_ratio "1.000000"
reflections_gain "0.242700"
reflections_delay "0.020000"
reflections_pan "0 0 0"
late_reverb_gain "0.997700"
late_reverb_delay "0.029000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.578100"
gain_lf "1.000000"
decay_time "4.320000"
decay_hf_ratio "0.590000"
decay_lf_ratio "1.000000"
reflections_gain "0.403200"
reflections_delay "0.020000"
reflections_pan "0 0 0"
late_reverb_gain "0.717000"
late_reverb_delay "0.030000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.316200"
gain_lf "1.000000"
decay_time "1.490000"
decay_hf_ratio "0.830000"
decay_lf_ratio "1.000000"
reflections_gain "0.000000"
reflections_delay "0.061000"
reflections_pan "0 0 0"
late_reverb_gain "1.778300"
late_reverb_delay "0.025000"
late_reverb_pan "0 0 0"
echo_time "0.125000"
echo_depth "0.700000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "1.000000"
gain_lf "1.000000"
decay_time "1.650000"
decay_hf_ratio "1.500000"
decay_lf_ratio "1.000000"
reflections_gain "0.208200"
reflections_delay "0.008000"
reflections_pan "0 0 0"
late_reverb_gain "0.265200"
late_reverb_delay "0.012000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "0"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.761200"
gain_lf "1.000000"
decay_time "2.700000"
decay_hf_ratio "0.790000"
decay_lf_ratio "1.000000"
reflections_gain "0.247200"
reflections_delay "0.013000"
reflections_pan "0 0 0"
late_reverb_gain "1.575800"
late_reverb_delay "0.020000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "0.428700"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.592900"
gain_lf "1.000000"
decay_time "0.400000"
decay_hf_ratio "0.830000"
decay_lf_ratio "1.000000"
reflections_gain "0.150300"
reflections_delay "0.002000"
reflections_pan "0 0 0"
late_reverb_gain "1.062900"
late_reverb_delay "0.003000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.740000"
gain "0.316200"
gain_hf "0.707900"
gain_lf "0.891300"
decay_time "3.010000"
decay_hf_ratio "1.230000"
decay_lf_ratio "0.910000"
reflections_gain "0.707900"
reflections_delay "0.046000"
reflections_pan "0 0 0"
late_reverb_gain "1.258900"
late_reverb_delay "0.028000"
late_reverb_pan "0 0 0"
echo_time "0.125000"
echo_depth "0.210000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.700000"
gain "0.316200"
gain_hf "0.447700"
gain_lf "1.000000"
decay_time "1.510000"
decay_hf_ratio "1.250000"
decay_lf_ratio "1.140000"
reflections_gain "0.891300"
reflections_delay "0.020000"
reflections_pan "0 0 0"
late_reverb_gain "1.412500"
late_reverb_delay "0.030000"
late_reverb_pan "0 0 0"
echo_time "0.179000"
echo_depth "0.150000"
modulation_time "0.895000"
modulation_depth "0.190000"
air_absorbtion_hf "0.992000"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "0"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.700000"
gain "0.316200"
gain_hf "0.447700"
gain_lf "1.000000"
decay_time "1.510000"
decay_hf_ratio "1.250000"
decay_lf_ratio "1.140000"
reflections_gain "0.891300"
reflections_delay "0.020000"
reflections_pan "0 0 0"
late_reverb_gain "1.412500"
late_reverb_delay "0.030000"
late_reverb_pan "0 0 0"
echo_time "0.179000"
echo_depth "0.150000"
modulation_time "0.895000"
modulation_depth "0.190000"
air_absorbtion_hf "0.992000"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "0"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.820000"
gain "0.316200"
gain_hf "0.446700"
gain_lf "0.891300"
decay_time "3.570000"
decay_hf_ratio "1.120000"
decay_lf_ratio "0.910000"
reflections_gain "0.398100"
reflections_delay "0.059000"
reflections_pan "0 0 0"
late_reverb_gain "0.891300"
late_reverb_delay "0.037000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.140000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.992000"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.300000"
gain "0.316200"
gain_hf "0.732800"
gain_lf "1.000000"
decay_time "1.490000"
decay_hf_ratio "0.860000"
decay_lf_ratio "1.000000"
reflections_gain "0.250000"
reflections_delay "0.007000"
reflections_pan "0 0 0"
late_reverb_gain "0.995400"
late_reverb_delay "0.011000"
late_reverb_pan "0 0 0"
echo_time "0.125000"
echo_depth "0.950000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.690000"
gain "0.316200"
gain_hf "0.794300"
gain_lf "0.891300"
decay_time "3.280000"
decay_hf_ratio "1.170000"
decay_lf_ratio "0.910000"
reflections_gain "0.446700"
reflections_delay "0.044000"
reflections_pan "0 0 0"
late_reverb_gain "0.281800"
late_reverb_delay "0.024000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.200000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.996600"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "0.25"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.010000"
gain_lf "1.000000"
decay_time "1.490000"
decay_hf_ratio "0.100000"
decay_lf_ratio "1.000000"
reflections_gain "0.596300"
reflections_delay "0.007000"
reflections_pan "0 0 0"
late_reverb_gain "7.079500"
late_reverb_delay "0.011000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "1.180000"
modulation_depth "0.348000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "0.5"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.010000"
gain_lf "1.000000"
decay_time "1.490000"
decay_hf_ratio "0.100000"
decay_lf_ratio "1.000000"
reflections_gain "0.596300"
reflections_delay "0.007000"
reflections_pan "0 0 0"
late_reverb_gain "7.079500"
late_reverb_delay "0.011000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "1.180000"
modulation_depth "0.348000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.0"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.010000"
gain_lf "1.000000"
decay_time "1.490000"
decay_hf_ratio "0.100000"
decay_lf_ratio "1.000000"
reflections_gain "0.596300"
reflections_delay "0.007000"
reflections_pan "0 0 0"
late_reverb_gain "7.079500"
late_reverb_delay "0.011000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "1.180000"
modulation_depth "0.348000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "0.364500"
diffusion "0.600000"
gain "0.316200"
gain_hf "0.631000"
gain_lf "1.000000"
decay_time "17.230000"
decay_hf_ratio "0.560000"
decay_lf_ratio "1.000000"
reflections_gain "0.139200"
reflections_delay "0.020000"
reflections_pan "0 0 0"
late_reverb_gain "0.493700"
late_reverb_delay "0.030000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "1.000000"
modulation_time "0.810000"
modulation_depth "0.310000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "0"

View file

@ -0,0 +1,23 @@
density "0.428700"
diffusion "0.500000"
gain "0.316200"
gain_hf "1.000000"
gain_lf "1.000000"
decay_time "8.390000"
decay_hf_ratio "1.390000"
decay_lf_ratio "1.000000"
reflections_gain "0.876000"
reflections_delay "0.002000"
reflections_pan "0 0 0"
late_reverb_gain "3.108100"
late_reverb_delay "0.030000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "1.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "0"

View file

@ -0,0 +1,23 @@
density "0.062500"
diffusion "0.500000"
gain "0.316200"
gain_hf "0.840400"
gain_lf "1.000000"
decay_time "7.560000"
decay_hf_ratio "0.910000"
decay_lf_ratio "1.000000"
reflections_gain "0.486400"
reflections_delay "0.020000"
reflections_pan "0 0 0"
late_reverb_gain "2.437800"
late_reverb_delay "0.030000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "4.000000"
modulation_depth "1.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "0"

View file

@ -0,0 +1,23 @@
density "0.364500"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.707900"
gain_lf "1.000000"
decay_time "1.490000"
decay_hf_ratio "0.590000"
decay_lf_ratio "1.000000"
reflections_gain "0.245800"
reflections_delay "0.007000"
reflections_pan "0 0 0"
late_reverb_gain "1.661500"
late_reverb_delay "0.011000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.316200"
gain_lf "1.000000"
decay_time "10.050000"
decay_hf_ratio "0.230000"
decay_lf_ratio "1.000000"
reflections_gain "0.500000"
reflections_delay "0.020000"
reflections_pan "0 0 0"
late_reverb_gain "1.256000"
late_reverb_delay "0.030000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.820000"
gain "0.316200"
gain_hf "0.281800"
gain_lf "0.089100"
decay_time "2.760000"
decay_hf_ratio "0.890000"
decay_lf_ratio "0.410000"
reflections_gain "0.354800"
reflections_delay "0.029000"
reflections_pan "0 0 0"
late_reverb_gain "0.891300"
late_reverb_delay "0.020000"
late_reverb_pan "0 0 0"
echo_time "0.130000"
echo_depth "0.170000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "2854.399902"
lf_reference "107.500000"
room_rolloff_factor "0.000000"
decay_limit "0"

View file

@ -0,0 +1,23 @@
density "0.976600"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.001000"
gain_lf "1.000000"
decay_time "0.500000"
decay_hf_ratio "0.100000"
decay_lf_ratio "1.000000"
reflections_gain "0.205100"
reflections_delay "0.003000"
reflections_pan "0 0 0"
late_reverb_gain "0.280500"
late_reverb_delay "0.004000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.270000"
gain "0.316200"
gain_hf "0.056200"
gain_lf "1.000000"
decay_time "1.490000"
decay_hf_ratio "0.210000"
decay_lf_ratio "1.000000"
reflections_gain "0.040700"
reflections_delay "0.300000"
reflections_pan "0 0 0"
late_reverb_gain "0.191900"
late_reverb_delay "0.100000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "1.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "0"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.820000"
gain "0.316200"
gain_hf "0.177800"
gain_lf "0.177800"
decay_time "3.280000"
decay_hf_ratio "1.400000"
decay_lf_ratio "0.570000"
reflections_gain "0.251200"
reflections_delay "0.039000"
reflections_pan "0 0 0"
late_reverb_gain "0.891300"
late_reverb_delay "0.034000"
late_reverb_pan "0 0 0"
echo_time "0.130000"
echo_depth "0.170000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "2854.399902"
lf_reference "107.500000"
room_rolloff_factor "0.000000"
decay_limit "0"

View file

@ -0,0 +1,23 @@
density "0.171500"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.001000"
gain_lf "1.000000"
decay_time "0.170000"
decay_hf_ratio "0.100000"
decay_lf_ratio "1.000000"
reflections_gain "0.250000"
reflections_delay "0.001000"
reflections_pan "0 0 0"
late_reverb_gain "1.269100"
late_reverb_delay "0.002000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "1.000000"
gain_lf "1.000000"
decay_time "1.650000"
decay_hf_ratio "1.500000"
decay_lf_ratio "1.000000"
reflections_gain "0.208200"
reflections_delay "0.008000"
reflections_pan "0 0 0"
late_reverb_gain "0.265200"
late_reverb_delay "0.012000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "0"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.210000"
gain "0.316200"
gain_hf "0.100000"
gain_lf "1.000000"
decay_time "1.490000"
decay_hf_ratio "0.500000"
decay_lf_ratio "1.000000"
reflections_gain "0.058500"
reflections_delay "0.179000"
reflections_pan "0 0 0"
late_reverb_gain "0.108900"
late_reverb_delay "0.100000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "1.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "0.062500"
diffusion "0.500000"
gain "0.316200"
gain_hf "0.840400"
gain_lf "1.000000"
decay_time "7.560000"
decay_hf_ratio "0.910000"
decay_lf_ratio "1.000000"
reflections_gain "0.486400"
reflections_delay "0.020000"
reflections_pan "0 0 0"
late_reverb_gain "2.437800"
late_reverb_delay "0.030000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "4.000000"
modulation_depth "1.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "0"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.316200"
gain_lf "1.000000"
decay_time "1.490000"
decay_hf_ratio "0.830000"
decay_lf_ratio "1.000000"
reflections_gain "0.000000"
reflections_delay "0.061000"
reflections_pan "0 0 0"
late_reverb_gain "1.778300"
late_reverb_delay "0.025000"
late_reverb_pan "0 0 0"
echo_time "0.125000"
echo_depth "0.700000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "0.428700"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.592900"
gain_lf "1.000000"
decay_time "0.400000"
decay_hf_ratio "0.830000"
decay_lf_ratio "1.000000"
reflections_gain "0.150300"
reflections_delay "0.002000"
reflections_pan "0 0 0"
late_reverb_gain "1.062900"
late_reverb_delay "0.003000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "0.307100"
diffusion "0.800000"
gain "0.316200"
gain_hf "0.316200"
gain_lf "1.000000"
decay_time "2.810000"
decay_hf_ratio "0.140000"
decay_lf_ratio "1.000000"
reflections_gain "1.638700"
reflections_delay "0.014000"
reflections_pan "0 0 0"
late_reverb_gain "3.247100"
late_reverb_delay "0.021000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.700000"
gain "0.316200"
gain_hf "0.447700"
gain_lf "1.000000"
decay_time "1.510000"
decay_hf_ratio "1.250000"
decay_lf_ratio "1.140000"
reflections_gain "0.891300"
reflections_delay "0.020000"
reflections_pan "0 0 0"
late_reverb_gain "1.412500"
late_reverb_delay "0.030000"
late_reverb_pan "0 0 0"
echo_time "0.179000"
echo_depth "0.150000"
modulation_time "0.895000"
modulation_depth "0.190000"
air_absorbtion_hf "0.992000"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "0"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.761200"
gain_lf "1.000000"
decay_time "2.700000"
decay_hf_ratio "0.790000"
decay_lf_ratio "1.000000"
reflections_gain "0.247200"
reflections_delay "0.013000"
reflections_pan "0 0 0"
late_reverb_gain "1.575800"
late_reverb_delay "0.020000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.707900"
gain_lf "1.000000"
decay_time "2.310000"
decay_hf_ratio "0.640000"
decay_lf_ratio "1.000000"
reflections_gain "0.441100"
reflections_delay "0.012000"
reflections_pan "0 0 0"
late_reverb_gain "1.100300"
late_reverb_delay "0.017000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.740000"
gain "0.316200"
gain_hf "0.707900"
gain_lf "0.891300"
decay_time "3.010000"
decay_hf_ratio "1.230000"
decay_lf_ratio "0.910000"
reflections_gain "0.707900"
reflections_delay "0.046000"
reflections_pan "0 0 0"
late_reverb_gain "1.258900"
late_reverb_delay "0.028000"
late_reverb_pan "0 0 0"
echo_time "0.125000"
echo_depth "0.210000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "1.000000"
diffusion "0.820000"
gain "0.316200"
gain_hf "0.446700"
gain_lf "0.891300"
decay_time "3.570000"
decay_hf_ratio "1.120000"
decay_lf_ratio "0.910000"
reflections_gain "0.398100"
reflections_delay "0.059000"
reflections_pan "0 0 0"
late_reverb_gain "0.891300"
late_reverb_delay "0.037000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.140000"
modulation_time "0.250000"
modulation_depth "0.000000"
air_absorbtion_hf "0.992000"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -0,0 +1,23 @@
density "0.364500"
diffusion "1.000000"
gain "0.316200"
gain_hf "0.010000"
gain_lf "1.000000"
decay_time "1.490000"
decay_hf_ratio "0.100000"
decay_lf_ratio "1.000000"
reflections_gain "0.596300"
reflections_delay "0.007000"
reflections_pan "0 0 0"
late_reverb_gain "7.079500"
late_reverb_delay "0.011000"
late_reverb_pan "0 0 0"
echo_time "0.250000"
echo_depth "0.000000"
modulation_time "1.180000"
modulation_depth "0.348000"
air_absorbtion_hf "0.994300"
hf_reference "5000.000000"
lf_reference "250.000000"
room_rolloff_factor "0.000000"
decay_limit "1"

View file

@ -15,6 +15,7 @@
*/
#include "textmenu.h"
#include "efx.h"
/* flags for 2d drawing */
#define DRAWFLAG_NORMAL 0

28
src/client/efx.h Normal file
View file

@ -0,0 +1,28 @@
/*
* Copyright (c) 2016-2020 Marco Hladik <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
reverbinfo_t *g_efx;
string *g_efx_name;
int g_efx_count;
var int autocvar_s_al_use_reverb = TRUE;
reverbinfo_t mix;
int g_iEFX;
int g_iEFXold;
float g_flEFXTime;
int EFX_Load(string efx_file);

281
src/client/efx.qc Normal file
View file

@ -0,0 +1,281 @@
/*
* Copyright (c) 2016-2020 Marco Hladik <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
int
EFX_Load(string efx_file)
{
filestream fh;
string line;
int i;
if (!efx_file) {
return;
}
i = g_efx_count;
efx_file = strtolower(efx_file);
/* check if it's already cached */
for (int x = 0; x < g_efx_count; x++) {
if (efx_file == g_efx_name[x]) {
return x;
}
}
g_efx_count++;
g_efx = (reverbinfo_t *)memrealloc(g_efx, sizeof(reverbinfo_t), i, g_efx_count);
g_efx_name = (string *)memrealloc(g_efx_name, sizeof(string), i, g_efx_count);
fh = fopen(strcat("efx/", efx_file, ".efx"), FILE_READ);
if (fh < 0) {
return 0;
}
/* cache the name */
g_efx_name[i] = efx_file;
/* add some default values */
g_efx[i].flDensity = 1.000000;
g_efx[i].flDiffusion = 1.000000;
g_efx[i].flGain = 0.000000;
g_efx[i].flGainHF = 1.000000;
g_efx[i].flGainLF = 1.000000;
g_efx[i].flDecayTime = 1.000000;
g_efx[i].flDecayHFRatio = 1.000000;
g_efx[i].flDecayLFRatio = 1.000000;
g_efx[i].flReflectionsGain = 0.000000;
g_efx[i].flReflectionsDelay = 0.000000;
g_efx[i].flLateReverbPan = [0,0,0];
g_efx[i].flLateReverbGain = 1.000000;
g_efx[i].flLateReverbDelay = 0.000000;
g_efx[i].flLateReverbPan = [0,0,0];
g_efx[i].flEchoTime = 0.250000;
g_efx[i].flEchoDepth = 0.000000;
g_efx[i].flModulationTime = 0.250000;
g_efx[i].flModulationDepth = 0.000000;
g_efx[i].flAirAbsorptionGainHF = 1.000000;
g_efx[i].flHFReference = 5000.000000;
g_efx[i].flLFReference = 250.000000;
g_efx[i].flRoomRolloffFactor = 0.000000;
g_efx[i].iDecayHFLimit = 1i;
while ((line = fgets(fh))) {
int c = tokenize_console(line);
switch (argv(0)) {
case "density":
g_efx[i].flDensity = stof(argv(1));
break;
case "diffusion":
g_efx[i].flDiffusion = stof(argv(1));
break;
case "gain":
g_efx[i].flGain = stof(argv(1));
break;
case "gain_hf":
g_efx[i].flGainHF = stof(argv(1));
break;
case "gain_lf":
g_efx[i].flGainLF = stof(argv(1));
break;
case "decay_time":
g_efx[i].flDecayTime = stof(argv(1));
break;
case "decay_hf_ratio":
g_efx[i].flDecayHFRatio = stof(argv(1));
break;
case "decay_lf_ratio":
g_efx[i].flDecayLFRatio = stof(argv(1));
break;
case "reflections_gain":
g_efx[i].flReflectionsGain = stof(argv(1));
break;
case "reflections_delay":
g_efx[i].flReflectionsDelay = stof(argv(1));
break;
case "reflections_pan": /* VECTOR! */
g_efx[i].flReflectionsPan = stov(argv(1));
break;
case "late_reverb_gain":
g_efx[i].flLateReverbGain = stof(argv(1));
break;
case "late_reverb_delay":
g_efx[i].flLateReverbDelay = stof(argv(1));
break;
case "late_reverb_pan":
g_efx[i].flLateReverbPan = stov(argv(1));
break;
case "echo_time":
g_efx[i].flEchoTime = stof(argv(1));
break;
case "echo_depth":
g_efx[i].flEchoDepth = stof(argv(1));
break;
case "modulation_time":
g_efx[i].flModulationTime = stof(argv(1));
break;
case "modulation_depth":
g_efx[i].flModulationDepth = stof(argv(1));
break;
case "air_absorbtion_hf":
g_efx[i].flAirAbsorptionGainHF = stof(argv(1));
break;
case "hf_reference":
g_efx[i].flHFReference = stof(argv(1));
break;
case "lf_reference":
g_efx[i].flLFReference = stof(argv(1));
break;
case "room_rolloff_factor":
g_efx[i].flRoomRolloffFactor = stof(argv(1));
break;
case "decay_limit":
g_efx[i].iDecayHFLimit = stoi(argv(1));
break;
}
}
fclose(fh);
return i;
}
void
EFX_SetEnvironment(int id)
{
if (g_iEFX == id) {
return;
}
g_iEFXold = g_iEFX;
g_iEFX = id;
g_flEFXTime = 0.0f;
}
void
EFX_Interpolate(int id)
{
mix.flDensity = Math_Lerp(mix.flDensity, g_efx[id].flDensity, g_flEFXTime);
mix.flDiffusion = Math_Lerp(mix.flDiffusion, g_efx[id].flDiffusion, g_flEFXTime);
mix.flGain = Math_Lerp(mix.flGain, g_efx[id].flGain, g_flEFXTime);
mix.flGainHF = Math_Lerp(mix.flGainHF, g_efx[id].flGainHF, g_flEFXTime);
mix.flGainLF = Math_Lerp(mix.flGainLF, g_efx[id].flGainLF, g_flEFXTime);
mix.flDecayTime = Math_Lerp(mix.flDecayTime, g_efx[id].flDecayTime, g_flEFXTime);
mix.flDecayHFRatio = Math_Lerp(mix.flDecayHFRatio, g_efx[id].flDecayHFRatio, g_flEFXTime);
mix.flDecayLFRatio = Math_Lerp(mix.flDecayLFRatio, g_efx[id].flDecayLFRatio, g_flEFXTime);
mix.flReflectionsGain = Math_Lerp(mix.flReflectionsGain, g_efx[id].flReflectionsGain, g_flEFXTime);
mix.flReflectionsDelay = Math_Lerp(mix.flReflectionsDelay, g_efx[id].flReflectionsDelay, g_flEFXTime);
mix.flReflectionsPan[0] = Math_Lerp(mix.flReflectionsPan[0], g_efx[id].flReflectionsPan[0], g_flEFXTime);
mix.flReflectionsPan[1] = Math_Lerp(mix.flReflectionsPan[1], g_efx[id].flReflectionsPan[1], g_flEFXTime);
mix.flReflectionsPan[1] = Math_Lerp(mix.flReflectionsPan[2], g_efx[id].flReflectionsPan[2], g_flEFXTime);
mix.flLateReverbGain = Math_Lerp(mix.flLateReverbGain, g_efx[id].flLateReverbGain, g_flEFXTime);
mix.flLateReverbDelay = Math_Lerp(mix.flLateReverbDelay, g_efx[id].flLateReverbDelay, g_flEFXTime);
mix.flLateReverbPan[0] = Math_Lerp(mix.flLateReverbPan[0], g_efx[id].flLateReverbPan[0], g_flEFXTime);
mix.flLateReverbPan[1] = Math_Lerp(mix.flLateReverbPan[1], g_efx[id].flLateReverbPan[1], g_flEFXTime);
mix.flLateReverbPan[2] = Math_Lerp(mix.flLateReverbPan[2], g_efx[id].flLateReverbPan[2], g_flEFXTime);
mix.flEchoTime = Math_Lerp(mix.flEchoTime, g_efx[id].flEchoTime, g_flEFXTime);
mix.flEchoDepth = Math_Lerp(mix.flEchoDepth, g_efx[id].flEchoDepth, g_flEFXTime);
mix.flModulationTime = Math_Lerp(mix.flModulationTime, g_efx[id].flModulationTime, g_flEFXTime);
mix.flModulationDepth = Math_Lerp(mix.flModulationDepth, g_efx[id].flModulationDepth, g_flEFXTime);
mix.flAirAbsorptionGainHF = Math_Lerp(mix.flAirAbsorptionGainHF, g_efx[id].flAirAbsorptionGainHF, g_flEFXTime);
mix.flHFReference = Math_Lerp(mix.flHFReference, g_efx[id].flHFReference, g_flEFXTime);
mix.flLFReference = Math_Lerp(mix.flLFReference, g_efx[id].flLFReference, g_flEFXTime);
mix.flRoomRolloffFactor = Math_Lerp(mix.flRoomRolloffFactor, g_efx[id].flRoomRolloffFactor, g_flEFXTime);
mix.iDecayHFLimit = Math_Lerp(mix.iDecayHFLimit, g_efx[id].iDecayHFLimit, g_flEFXTime);
}
void
EFX_UpdateListener(void)
{
static int old_dsp;
vector vecPlayer;
if (autocvar_s_al_use_reverb == FALSE) {
return;
}
int s = (float)getproperty(VF_ACTIVESEAT);
pSeat = &g_seats[s];
vecPlayer = pSeat->m_vecPredictedOrigin;
float bestdist = 999999;
for (entity e = world; (e = find(e, classname, "env_sound"));) {
env_sound scape = (env_sound)e;
other = world;
traceline(scape.origin, vecPlayer, MOVE_OTHERONLY, scape);
if (trace_fraction < 1.0f) {
continue;
}
float dist = vlen(e.origin - vecPlayer);
if (dist > scape.m_iRadius) {
continue;
}
if (dist > bestdist) {
continue;
}
bestdist = dist;
EFX_SetEnvironment(scape.m_iRoomType);
}
makevectors(getproperty(VF_CL_VIEWANGLES));
SetListener(getproperty(VF_ORIGIN), v_forward, v_right, v_up, 12);
if (old_dsp == g_iEFX) {
return;
}
#ifdef EFX_LERP
if (g_flEFXTime < 1.0)
{
EFX_Interpolate(g_iEFX);
setup_reverb(12, &mix, sizeof(reverbinfo_t));
} else {
old_dsp = g_iEFX;
}
g_flEFXTime += clframetime;
#else
dprint(sprintf("EFX_UpdateListener: Changed style to %s (%i)\n",
g_efx_name[g_iEFX], g_iEFX));
old_dsp = g_iEFX;
setup_reverb(12, &g_efx[g_iEFX], sizeof(reverbinfo_t));
#endif
}
void
EFX_Init(void)
{
int efx_default;
int efx_underwater;
efx_default = EFX_Load("default");
efx_underwater = EFX_Load("underwater");
EFX_SetEnvironment(efx_default);
/* mix the final value immediately */
#ifdef EFX_LERP
g_flEFXTime = 1.0f;
EFX_Interpolate(g_iEFX);
#endif
setup_reverb(12, &g_efx[g_iEFX], sizeof(reverbinfo_t));
setup_reverb(10, &g_efx[efx_underwater], sizeof(reverbinfo_t));
}

View file

@ -93,7 +93,7 @@ CSQC_Init(float apilevel, string enginename, float engineversion)
/* Game specific inits */
ClientGame_Init(apilevel, enginename, engineversion);
DSP_Init();
EFX_Init();
CSQC_RendererRestarted("init");
Titles_Init();
Sentences_Init();
@ -414,7 +414,7 @@ CSQC_UpdateView(float w, float h, float focus)
Predict_SpectatorPostFrame((spectator)self);
}
DSP_UpdateListener();
EFX_UpdateListener();
pSeat = (void*)0x70000000i;
pSeatLocal = (void*)0x70000000i;

View file

@ -22,5 +22,6 @@ vgui.qc
vox.qc
way.qc
in_saturn.qc
efx.qc
entry.qc
#endlist

View file

@ -19,42 +19,9 @@
/*QUAKED env_sound (0 1 0.5) (-8 -8 -8) (8 8 8)
"radius" Radius in units.
"roomtype" Roomtype value:
0 = DEFAULT
1 = PADDEDCELL
2 = ROOM
3 = BATHROOM
4 = LIVINGROOM
5 = STONEROOM
6 = AUDITORIUM
7 = CONCERTHALL
8 = CAVE
9 = ARENA
10 = HANGAR
11 = CARPETEDHALLWAY
12 = HALLWAY
13 = STONECORRIDOR
14 = ALLEY
15 = FOREST
16 = CITY
17 = MOUNTAINS
18 = QUARRY
19 = PLAIN
20 = PARKINGLOT
21 = SEWERPIPE
22 = UNDERWATER
23 = DRUGGED
24 = DIZZY
25 = PSYCHOTIC
26 = CITYSTREETS
27 = SUBWAY
28 = MUSEUM
29 = LIBRARY
30 = UNDERPASS
31 = ABANDONED
32 = DUSTYROOM
33 = CHAPEL
34 = SMALLWATERROOM
"efx_file" Name of the OpenAL EFX definiton to use.
"roomtype" Legacy enumeration for GoldSrc support.
Please don't use this.
Client-side environmental reverb modifier.
This works only with the OpenAL sound backend.
@ -63,91 +30,38 @@ Trivia:
This entity was introduced in Half-Life (1998).
*/
var int autocvar_dsp_environments = TRUE;
reverbinfo_t mix;
enum
{
DSP_DEFAULT,
DSP_PADDEDCELL,
DSP_ROOM,
DSP_BATHROOM,
DSP_LIVINGROOM,
DSP_STONEROOM,
DSP_AUDITORIUM,
DSP_CONCERTHALL,
DSP_CAVE,
DSP_ARENA,
DSP_HANGAR,
DSP_CARPETEDHALLWAY,
DSP_HALLWAY,
DSP_STONECORRIDOR,
DSP_ALLEY,
DSP_FOREST,
DSP_CITY,
DSP_MOUNTAINS,
DSP_QUARRY,
DSP_PLAIN,
DSP_PARKINGLOT,
DSP_SEWERPIPE,
DSP_UNDERWATER,
DSP_DRUGGED,
DSP_DIZZY,
DSP_PSYCHOTIC,
DSP_CITYSTREETS,
DSP_SUBWAY,
DSP_MUSEUM,
DSP_LIBRARY,
DSP_UNDERPASS,
DSP_ABANDONED,
DSP_DUSTYROOM,
DSP_CHAPEL,
DSP_SMALLWATERROOM
string g_hlefx[] = {
"default",
"gs_generic",
"gs_metal_s",
"gs_metal_m",
"gs_metal_l",
"gs_tunnel_s",
"gs_tunnel_m",
"gs_tunnel_l",
"gs_chamber_s",
"gs_chamber_m",
"gs_chamber_l",
"gs_bright_s",
"gs_bright_m",
"gs_bright_l",
"gs_water1",
"gs_water2",
"gs_water3",
"gs_concrete_s",
"gs_concrete_m",
"gs_concrete_l",
"gs_big1",
"gs_big2",
"gs_big3",
"gs_cavern_s",
"gs_cavern_m",
"gs_cavern_l",
"gs_weirdo1",
"gs_weirdo2",
"gs_weirdo3"
};
reverbinfo_t reverbPresets [35] = {
{ 1.0000f, 1.0000f, 0.0000f, 1.0000f, 1.0000f, 1.0000f, 1.0000f, 1.0000f, 0.0000f, 0.0000f, [0,0,0], 1.0000f, 0.0000f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 0.0000f, 1.0000f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 0.1715f, 1.0000f, 0.3162f, 0.0010f, 1.0000f, 0.1700f, 0.1000f, 1.0000f, 0.2500f, 0.0010f, [0,0,0], 1.2691f, 0.0020f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 0.4287f, 1.0000f, 0.3162f, 0.5929f, 1.0000f, 0.4000f, 0.8300f, 1.0000f, 0.1503f, 0.0020f, [0,0,0], 1.0629f, 0.0030f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 0.1715f, 1.0000f, 0.3162f, 0.2512f, 1.0000f, 1.4900f, 0.5400f, 1.0000f, 0.6531f, 0.0070f, [0,0,0], 3.2734f, 0.0110f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 0.9766f, 1.0000f, 0.3162f, 0.0010f, 1.0000f, 0.5000f, 0.1000f, 1.0000f, 0.2051f, 0.0030f, [0,0,0], 0.2805f, 0.0040f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 1.0000f, 1.0000f, 0.3162f, 0.7079f, 1.0000f, 2.3100f, 0.6400f, 1.0000f, 0.4411f, 0.0120f, [0,0,0], 1.1003f, 0.0170f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 1.0000f, 1.0000f, 0.3162f, 0.5781f, 1.0000f, 4.3200f, 0.5900f, 1.0000f, 0.4032f, 0.0200f, [0,0,0], 0.7170f, 0.0300f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 1.0000f, 1.0000f, 0.3162f, 0.5623f, 1.0000f, 3.9200f, 0.7000f, 1.0000f, 0.2427f, 0.0200f, [0,0,0], 0.9977f, 0.0290f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 1.0000f, 1.0000f, 0.3162f, 1.0000f, 1.0000f, 2.9100f, 1.3000f, 1.0000f, 0.5000f, 0.0150f, [0,0,0], 0.7063f, 0.0220f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 },
{ 1.0000f, 1.0000f, 0.3162f, 0.4477f, 1.0000f, 7.2400f, 0.3300f, 1.0000f, 0.2612f, 0.0200f, [0,0,0], 1.0186f, 0.0300f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 1.0000f, 1.0000f, 0.3162f, 0.3162f, 1.0000f, 10.0500f, 0.2300f, 1.0000f, 0.5000f, 0.0200f, [0,0,0], 1.2560f, 0.0300f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 0.4287f, 1.0000f, 0.3162f, 0.0100f, 1.0000f, 0.3000f, 0.1000f, 1.0000f, 0.1215f, 0.0020f, [0,0,0], 0.1531f, 0.0300f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 0.3645f, 1.0000f, 0.3162f, 0.7079f, 1.0000f, 1.4900f, 0.5900f, 1.0000f, 0.2458f, 0.0070f, [0,0,0], 1.6615f, 0.0110f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 1.0000f, 1.0000f, 0.3162f, 0.7612f, 1.0000f, 2.7000f, 0.7900f, 1.0000f, 0.2472f, 0.0130f, [0,0,0], 1.5758f, 0.0200f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 1.0000f, 0.3000f, 0.3162f, 0.7328f, 1.0000f, 1.4900f, 0.8600f, 1.0000f, 0.2500f, 0.0070f, [0,0,0], 0.9954f, 0.0110f, [0,0,0], 0.1250f, 0.9500f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 1.0000f, 0.3000f, 0.3162f, 0.0224f, 1.0000f, 1.4900f, 0.5400f, 1.0000f, 0.0525f, 0.1620f, [0,0,0], 0.7682f, 0.0880f, [0,0,0], 0.1250f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 1.0000f, 0.5000f, 0.3162f, 0.3981f, 1.0000f, 1.4900f, 0.6700f, 1.0000f, 0.0730f, 0.0070f, [0,0,0], 0.1427f, 0.0110f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 1.0000f, 0.2700f, 0.3162f, 0.0562f, 1.0000f, 1.4900f, 0.2100f, 1.0000f, 0.0407f, 0.3000f, [0,0,0], 0.1919f, 0.1000f, [0,0,0], 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 },
{ 1.0000f, 1.0000f, 0.3162f, 0.3162f, 1.0000f, 1.4900f, 0.8300f, 1.0000f, 0.0000f, 0.0610f, [0,0,0], 1.7783f, 0.0250f, [0,0,0], 0.1250f, 0.7000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 1.0000f, 0.2100f, 0.3162f, 0.1000f, 1.0000f, 1.4900f, 0.5000f, 1.0000f, 0.0585f, 0.1790f, [0,0,0], 0.1089f, 0.1000f, [0,0,0], 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 1.0000f, 1.0000f, 0.3162f, 1.0000f, 1.0000f, 1.6500f, 1.5000f, 1.0000f, 0.2082f, 0.0080f, [0,0,0], 0.2652f, 0.0120f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 },
{ 0.3071f, 0.8000f, 0.3162f, 0.3162f, 1.0000f, 2.8100f, 0.1400f, 1.0000f, 1.6387f, 0.0140f, [0,0,0], 3.2471f, 0.0210f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 0.3645f, 1.0000f, 0.3162f, 0.0100f, 1.0000f, 1.4900f, 0.1000f, 1.0000f, 0.5963f, 0.0070f, [0,0,0], 7.0795f, 0.0110f, [0,0,0], 0.2500f, 0.0000f, 1.1800f, 0.3480f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 0.4287f, 0.5000f, 0.3162f, 1.0000f, 1.0000f, 8.3900f, 1.3900f, 1.0000f, 0.8760f, 0.0020f, [0,0,0], 3.1081f, 0.0300f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 1.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 },
{ 0.3645f, 0.6000f, 0.3162f, 0.6310f, 1.0000f, 17.2300f, 0.5600f, 1.0000f, 0.1392f, 0.0200f, [0,0,0], 0.4937f, 0.0300f, [0,0,0], 0.2500f, 1.0000f, 0.8100f, 0.3100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 },
{ 0.0625f, 0.5000f, 0.3162f, 0.8404f, 1.0000f, 7.5600f, 0.9100f, 1.0000f, 0.4864f, 0.0200f, [0,0,0], 2.4378f, 0.0300f, [0,0,0], 0.2500f, 0.0000f, 4.0000f, 1.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 },
{ 1.0000f, 0.7800f, 0.3162f, 0.7079f, 0.8913f, 1.7900f, 1.1200f, 0.9100f, 0.2818f, 0.0460f, [0,0,0], 0.1995f, 0.0280f, [0,0,0], 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 1.0000f, 0.7400f, 0.3162f, 0.7079f, 0.8913f, 3.0100f, 1.2300f, 0.9100f, 0.7079f, 0.0460f, [0,0,0], 1.2589f, 0.0280f, [0,0,0], 0.1250f, 0.2100f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 1.0000f, 0.8200f, 0.3162f, 0.1778f, 0.1778f, 3.2800f, 1.4000f, 0.5700f, 0.2512f, 0.0390f, [0,0,0], 0.8913f, 0.0340f, [0,0,0], 0.1300f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 },
{ 1.0000f, 0.8200f, 0.3162f, 0.2818f, 0.0891f, 2.7600f, 0.8900f, 0.4100f, 0.3548f, 0.0290f, [0,0,0], 0.8913f, 0.0200f, [0,0,0], 0.1300f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 },
{ 1.0000f, 0.8200f, 0.3162f, 0.4467f, 0.8913f, 3.5700f, 1.1200f, 0.9100f, 0.3981f, 0.0590f, [0,0,0], 0.8913f, 0.0370f, [0,0,0], 0.2500f, 0.1400f, 0.2500f, 0.0000f, 0.9920f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 1.0000f, 0.6900f, 0.3162f, 0.7943f, 0.8913f, 3.2800f, 1.1700f, 0.9100f, 0.4467f, 0.0440f, [0,0,0], 0.2818f, 0.0240f, [0,0,0], 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9966f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 0.3645f, 0.5600f, 0.3162f, 0.7943f, 0.7079f, 1.7900f, 0.3800f, 0.2100f, 0.5012f, 0.0020f, [0,0,0], 1.2589f, 0.0060f, [0,0,0], 0.2020f, 0.0500f, 0.2500f, 0.0000f, 0.9886f, 13046.0000f, 163.3000f, 0.0000f, 0x1 },
{ 1.0000f, 0.8400f, 0.3162f, 0.5623f, 1.0000f, 4.6200f, 0.6400f, 1.2300f, 0.4467f, 0.0320f, [0,0,0], 0.7943f, 0.0490f, [0,0,0], 0.2500f, 0.0000f, 0.2500f, 0.1100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 },
{ 1.0000f, 0.7000f, 0.3162f, 0.4477f, 1.0000f, 1.5100f, 1.2500f, 1.1400f, 0.8913f, 0.0200f, [0,0,0], 1.4125f, 0.0300f, [0,0,0], 0.1790f, 0.1500f, 0.8950f, 0.1900f, 0.9920f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
};
int g_iDSP;
int g_iDSPold;
float g_flDSPTime;
class env_sound:CBaseEntity
{
int m_iRoomType;
@ -165,231 +79,24 @@ env_sound::env_sound(void)
setsize(this, [0,0,0], [0,0,0]);
setorigin(this, origin);
/* Valve BSP, convert their env_sound */
if (serverkeyfloat("*bspversion") != BSPVER_HL) {
return;
}
switch(m_iRoomType) {
case 0:
case 1:
m_iRoomType = DSP_DEFAULT;
break;
case 2:
m_iRoomType = DSP_SEWERPIPE;
break;
case 3:
m_iRoomType = DSP_SEWERPIPE;
break;
case 4:
m_iRoomType = DSP_SEWERPIPE;
break;
case 5:
m_iRoomType = DSP_HALLWAY;
break;
case 6:
m_iRoomType = DSP_UNDERPASS;
break;
case 7:
m_iRoomType = DSP_SUBWAY;
break;
case 8:
m_iRoomType = DSP_BATHROOM;
break;
case 9:
m_iRoomType = DSP_LIVINGROOM;
break;
case 10:
m_iRoomType = DSP_AUDITORIUM;
break;
case 11:
m_iRoomType = DSP_QUARRY;
break;
case 12:
m_iRoomType = DSP_FOREST;
break;
case 13:
m_iRoomType = DSP_MOUNTAINS;
break;
case 14:
m_iRoomType = DSP_UNDERWATER;
break;
case 15:
m_iRoomType = DSP_UNDERWATER;
break;
case 16:
m_iRoomType = DSP_UNDERWATER;
break;
case 17:
m_iRoomType = DSP_PARKINGLOT;
break;
case 18:
m_iRoomType = DSP_CAVE;
break;
case 19:
m_iRoomType = DSP_ABANDONED;
break;
case 20:
m_iRoomType = DSP_CHAPEL;
break;
case 21:
m_iRoomType = DSP_CONCERTHALL;
break;
case 22:
m_iRoomType = DSP_MUSEUM;
break;
case 23:
m_iRoomType = DSP_CAVE;
break;
case 24:
m_iRoomType = DSP_CAVE;
break;
case 25:
m_iRoomType = DSP_CAVE;
break;
case 26:
m_iRoomType = DSP_DRUGGED;
break;
case 27:
m_iRoomType = DSP_DIZZY;
break;
case 28:
m_iRoomType = DSP_PSYCHOTIC;
break;
}
}
void
env_sound::SpawnKey(string strField, string strKey)
{
switch (strField) {
case "roomtype":
m_iRoomType = stoi(strKey);
case "efx_file":
m_iRoomType = EFX_Load(strKey);
break;
case "radius":
m_iRadius = stoi(strKey);
break;
/* GoldSrc, legacy */
case "roomtype":
int efx_alias = stoi(strKey);
m_iRoomType = EFX_Load(g_hlefx[efx_alias]);
break;
default:
CBaseEntity::SpawnKey(strField, strKey);
}
}
void
DSP_SetEnvironment(int id)
{
if (g_iDSP == id) {
return;
}
g_iDSPold = g_iDSP;
g_iDSP = id;
g_flDSPTime = 0.0f;
}
void
DSP_Interpolate(int id)
{
mix.flDensity = Math_Lerp(mix.flDensity, reverbPresets[id].flDensity, g_flDSPTime);
mix.flDiffusion = Math_Lerp(mix.flDiffusion, reverbPresets[id].flDiffusion, g_flDSPTime);
mix.flGain = Math_Lerp(mix.flGain, reverbPresets[id].flGain, g_flDSPTime);
mix.flGainHF = Math_Lerp(mix.flGainHF, reverbPresets[id].flGainHF, g_flDSPTime);
mix.flGainLF = Math_Lerp(mix.flGainLF, reverbPresets[id].flGainLF, g_flDSPTime);
mix.flDecayTime = Math_Lerp(mix.flDecayTime, reverbPresets[id].flDecayTime, g_flDSPTime);
mix.flDecayHFRatio = Math_Lerp(mix.flDecayHFRatio, reverbPresets[id].flDecayHFRatio, g_flDSPTime);
mix.flDecayLFRatio = Math_Lerp(mix.flDecayLFRatio, reverbPresets[id].flDecayLFRatio, g_flDSPTime);
mix.flReflectionsGain = Math_Lerp(mix.flReflectionsGain, reverbPresets[id].flReflectionsGain, g_flDSPTime);
mix.flReflectionsDelay = Math_Lerp(mix.flReflectionsDelay, reverbPresets[id].flReflectionsDelay, g_flDSPTime);
mix.flReflectionsPan[0] = Math_Lerp(mix.flReflectionsPan[0], reverbPresets[id].flReflectionsPan[0], g_flDSPTime);
mix.flReflectionsPan[1] = Math_Lerp(mix.flReflectionsPan[1], reverbPresets[id].flReflectionsPan[1], g_flDSPTime);
mix.flReflectionsPan[1] = Math_Lerp(mix.flReflectionsPan[2], reverbPresets[id].flReflectionsPan[2], g_flDSPTime);
mix.flLateReverbGain = Math_Lerp(mix.flLateReverbGain, reverbPresets[id].flLateReverbGain, g_flDSPTime);
mix.flLateReverbDelay = Math_Lerp(mix.flLateReverbDelay, reverbPresets[id].flLateReverbDelay, g_flDSPTime);
mix.flLateReverbPan[0] = Math_Lerp(mix.flLateReverbPan[0], reverbPresets[id].flLateReverbPan[0], g_flDSPTime);
mix.flLateReverbPan[1] = Math_Lerp(mix.flLateReverbPan[1], reverbPresets[id].flLateReverbPan[1], g_flDSPTime);
mix.flLateReverbPan[2] = Math_Lerp(mix.flLateReverbPan[2], reverbPresets[id].flLateReverbPan[2], g_flDSPTime);
mix.flEchoTime = Math_Lerp(mix.flEchoTime, reverbPresets[id].flEchoTime, g_flDSPTime);
mix.flEchoDepth = Math_Lerp(mix.flEchoDepth, reverbPresets[id].flEchoDepth, g_flDSPTime);
mix.flModulationTime = Math_Lerp(mix.flModulationTime, reverbPresets[id].flModulationTime, g_flDSPTime);
mix.flModulationDepth = Math_Lerp(mix.flModulationDepth, reverbPresets[id].flModulationDepth, g_flDSPTime);
mix.flAirAbsorptionGainHF = Math_Lerp(mix.flAirAbsorptionGainHF, reverbPresets[id].flAirAbsorptionGainHF, g_flDSPTime);
mix.flHFReference = Math_Lerp(mix.flHFReference, reverbPresets[id].flHFReference, g_flDSPTime);
mix.flLFReference = Math_Lerp(mix.flLFReference, reverbPresets[id].flLFReference, g_flDSPTime);
mix.flRoomRolloffFactor = Math_Lerp(mix.flRoomRolloffFactor, reverbPresets[id].flRoomRolloffFactor, g_flDSPTime);
mix.iDecayHFLimit = Math_Lerp(mix.iDecayHFLimit, reverbPresets[id].iDecayHFLimit, g_flDSPTime);
}
void
DSP_UpdateListener(void)
{
static int old_dsp;
vector vecPlayer;
if (autocvar_dsp_environments == FALSE) {
return;
}
int s = (float)getproperty(VF_ACTIVESEAT);
pSeat = &g_seats[s];
vecPlayer = pSeat->m_vecPredictedOrigin;
float bestdist = 999999;
for (entity e = world; (e = find(e, classname, "env_sound"));) {
env_sound scape = (env_sound)e;
other = world;
traceline(scape.origin, vecPlayer, MOVE_OTHERONLY, scape);
if (trace_fraction < 1.0f) {
continue;
}
float dist = vlen(e.origin - vecPlayer);
if (dist > scape.m_iRadius) {
continue;
}
if (dist > bestdist) {
continue;
}
bestdist = dist;
DSP_SetEnvironment(scape.m_iRoomType);
}
makevectors(getproperty(VF_CL_VIEWANGLES));
SetListener(getproperty(VF_ORIGIN), v_forward, v_right, v_up, 12);
if (old_dsp == g_iDSP) {
return;
}
#ifdef DSP_LERP
if (g_flDSPTime < 1.0)
{
DSP_Interpolate(g_iDSP);
setup_reverb(12, &mix, sizeof(reverbinfo_t));
} else {
old_dsp = g_iDSP;
}
g_flDSPTime += clframetime;
#else
dprint(sprintf("DSP_UpdateListener: Changed style to %i\n",
g_iDSP));
old_dsp = g_iDSP;
setup_reverb(12, &reverbPresets[g_iDSP], sizeof(reverbinfo_t));
#endif
}
void
DSP_Init(void)
{
g_iDSP = 0;
g_flDSPTime = 1.0f;
DSP_Interpolate(g_iDSP);
setup_reverb(12, &reverbPresets[g_iDSP], sizeof(reverbinfo_t));
setup_reverb(10, &reverbPresets[DSP_UNDERWATER], sizeof(reverbinfo_t));
}