added more ambient sound control
This commit is contained in:
parent
b2a18e619c
commit
f01a0051c6
|
@ -75,8 +75,11 @@ headbars_scale = 1
|
|||
# private messages
|
||||
pm_enable_saving = true
|
||||
|
||||
# ambience noises
|
||||
flowing_water_sounds = true
|
||||
# ambience noises (uncomment the lines below to disable specific ambient sounds)
|
||||
ambiance_volume = 1.0
|
||||
#ambiance_disable_birds = true
|
||||
#ambiance_disable_crickets = true
|
||||
#ambiance_disable_flowing_water = true
|
||||
|
||||
# server(user stuff)
|
||||
max_users = 16
|
||||
|
|
|
@ -72,44 +72,46 @@ local function step(dtime)
|
|||
local name = player:get_player_name()
|
||||
|
||||
for soundname, sound in pairs(ambiance.sounds) do
|
||||
if lastsound[name][soundname] then
|
||||
lastsound[name][soundname] = lastsound[name][soundname] + dtime
|
||||
else
|
||||
lastsound[name][soundname] = 0
|
||||
end
|
||||
|
||||
if lastsound[name][soundname] > sound.length then
|
||||
local sourcepos = ambient_node_near(sound, pos)
|
||||
|
||||
if sound.can_play and sourcepos ~= nil and (not sound.can_play(sourcepos)) then
|
||||
sourcepos = nil
|
||||
if not minetest.setting_getbool("ambiance_disable_" .. soundname) then
|
||||
if lastsound[name][soundname] then
|
||||
lastsound[name][soundname] = lastsound[name][soundname] + dtime
|
||||
else
|
||||
lastsound[name][soundname] = 0
|
||||
end
|
||||
|
||||
if sourcepos == nil then
|
||||
if soundspec[name][soundname] then
|
||||
minetest.sound_stop(soundspec[name][soundname])
|
||||
if lastsound[name][soundname] > sound.length then
|
||||
local sourcepos = ambient_node_near(sound, pos)
|
||||
|
||||
soundspec[name][soundname] = nil
|
||||
lastsound[name][soundname] = 0
|
||||
if sound.can_play and sourcepos ~= nil and (not sound.can_play(sourcepos)) then
|
||||
sourcepos = nil
|
||||
end
|
||||
else
|
||||
local ok = true
|
||||
for _, p in pairs(player_positions) do
|
||||
if (p.x * pos.x) + (p.y * pos.y) + (p.z * pos.z) < sound.dist * sound.dist then
|
||||
ok = false
|
||||
|
||||
if sourcepos == nil then
|
||||
if soundspec[name][soundname] then
|
||||
minetest.sound_stop(soundspec[name][soundname])
|
||||
|
||||
soundspec[name][soundname] = nil
|
||||
lastsound[name][soundname] = 0
|
||||
end
|
||||
else
|
||||
local ok = true
|
||||
for _, p in pairs(player_positions) do
|
||||
if (p.x * pos.x) + (p.y * pos.y) + (p.z * pos.z) < sound.dist * sound.dist then
|
||||
ok = false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if ok then
|
||||
soundspec[name][soundname] = minetest.sound_play(
|
||||
sound.file,
|
||||
{
|
||||
pos = sourcepos,
|
||||
max_hear_distance = sound.dist,
|
||||
gain = ambiance_volume,
|
||||
})
|
||||
if ok then
|
||||
soundspec[name][soundname] = minetest.sound_play(
|
||||
sound.file,
|
||||
{
|
||||
pos = sourcepos,
|
||||
max_hear_distance = sound.dist,
|
||||
gain = ambiance_volume,
|
||||
})
|
||||
|
||||
lastsound[name][soundname] = 0
|
||||
lastsound[name][soundname] = 0
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue