From 8351ef7e0fba8b9ab485f90a712d6c2da1f3d848 Mon Sep 17 00:00:00 2001 From: kaadmy Date: Wed, 16 Dec 2015 10:01:43 -0800 Subject: [PATCH] added directional ambiance sounds --- mods/ambiance/README.txt | 10 ++ mods/ambiance/depends.txt | 1 + mods/ambiance/init.lua | 139 ++++++++++++++++++ mods/ambiance/sounds/ambiance_birds.ogg | Bin 0 -> 34299 bytes .../sounds/ambiance_crickets.ogg} | Bin mods/default/nodes.lua | 10 +- mods/default/player.lua | 29 ---- mods/weather/README.txt | 1 - mods/weather/init.lua | 25 +--- 9 files changed, 156 insertions(+), 59 deletions(-) create mode 100644 mods/ambiance/README.txt create mode 100644 mods/ambiance/depends.txt create mode 100644 mods/ambiance/init.lua create mode 100644 mods/ambiance/sounds/ambiance_birds.ogg rename mods/{weather/sounds/weather_night.ogg => ambiance/sounds/ambiance_crickets.ogg} (100%) diff --git a/mods/ambiance/README.txt b/mods/ambiance/README.txt new file mode 100644 index 0000000..c932d4e --- /dev/null +++ b/mods/ambiance/README.txt @@ -0,0 +1,10 @@ +Ambiance mod +============ +By Kaadmy, for Pixture + +Adds directional ambient sounds coming from the correct sources. + +Sound license: + ambiance_birds.ogg: CC0, by syncopika(http://opengameart.org/users/syncopika) + ambiance_crickets.ogg: CC0, by syncopika(http://opengameart.org/users/syncopika) +Source license: WTFPL diff --git a/mods/ambiance/depends.txt b/mods/ambiance/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/mods/ambiance/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/ambiance/init.lua b/mods/ambiance/init.lua new file mode 100644 index 0000000..e250925 --- /dev/null +++ b/mods/ambiance/init.lua @@ -0,0 +1,139 @@ +-- +-- Ambiance mod +-- By Kaadmy, for Pixture +-- + +ambiance = {} + +ambiance.sounds = {} + +ambiance.sounds["birds"] = { + length = 5.0, + chance = 4, + file = "ambiance_birds", + dist = 8, + nodename = "group:leaves", + can_play = function(pos) + local tod = (minetest.get_timeofday() or 1) * 2 + + if tod > 0.47 and tod < 1.53 then -- bit of overlap into crickets + return true + end + + return false + end, +} + +ambiance.sounds["crickets"] = { + length = 6.0, + chance = 3, + file = "ambiance_crickets", + dist = 8, + nodename = "group:grass", + can_play = function(pos) + local tod = (minetest.get_timeofday() or 1) * 2 + + if tod < 0.5 or tod > 1.5 then + return true + end + + return false + end, +} + +ambiance.sounds["flowing_water"] = { + length = 3.3, + chance = 1, + file = "default_water", + dist = 16, + nodename = "group:flowing_water", +} + +local ambiance_volume = tonumber(minetest.setting_get("ambiance_volume")) or 1.0 + +local soundspec = {} +local lastsound = {} + +local function ambient_node_near(sound, pos) local nodepos = minetest.find_node_near(pos, sound.dist, sound.nodename) + + if nodepos ~= nil and math.random(1, sound.chance) == 1 then + return nodepos + end + + return nil +end + +local function step(dtime) + local player_positions = {} + + for _, player in ipairs(minetest.get_connected_players()) do + local pos = player:getpos() + 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 + end + + 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 + + if ok then + soundspec[name][soundname] = minetest.sound_play( + sound.file, + { + pos = sourcepos, + max_hear_distance = sound.dist, + }) + + lastsound[name][soundname] = 0 + end + end + end + end + + table.insert(player_positions, pos) + end +end + +local function on_joinplayer(player) + local name = player:get_player_name() + + soundspec[name] = {} + lastsound[name] = {} +end + +local function on_leaveplayer(player) + local name = player:get_player_name() + + soundspec[name] = nil + lastsound[name] = nil +end + +minetest.register_on_joinplayer(on_joinplayer) +minetest.register_on_leaveplayer(on_leaveplayer) +minetest.register_globalstep(step) + +default.log("mod:ambiance", "loaded") \ No newline at end of file diff --git a/mods/ambiance/sounds/ambiance_birds.ogg b/mods/ambiance/sounds/ambiance_birds.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f131c037aa9f3ab2c4a380cdbb6e1e3c5e7e35e1 GIT binary patch literal 34299 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 3.3 then player_soundspec[name]=minetest.sound_play( @@ -78,27 +70,6 @@ local function step(dtime) }) minetest.after(0.15, function() minetest.delete_particlespawner(particlespawners[name]) end) - elseif flowing_water_pos then - if player_lastsound[name] > 3.3 then - - local c = true - for _, p in pairs(player_positions) do - if (p.x * player_pos.x) + (p.y * player_pos.y) + (p.z * player_pos.z) < 256 then - -- 256 is 16*16 for distance checking - c = false - end - end - - if c then - player_soundspec[name]=minetest.sound_play( - "default_water", - { - pos = flowing_water_pos, - max_hear_distance = 16, - }) - player_lastsound[name] = 0 - end - end else if player_soundspec[name] ~= nil then minetest.sound_stop(player_soundspec[name]) diff --git a/mods/weather/README.txt b/mods/weather/README.txt index 78f7c26..b5e80cd 100644 --- a/mods/weather/README.txt +++ b/mods/weather/README.txt @@ -4,7 +4,6 @@ By Kaadmy, for Pixture Texture license: WTFPL Sound license: - weather_night.ogg: CC0 weather_storm.ogg: GPLv2(Replace this, I want CC0/WTFPL-only assets) weather_snowstorm.ogg: GPLv2(Replace this, I want CC0/WTFPL-only assets) Source license: WTFPL diff --git a/mods/weather/init.lua b/mods/weather/init.lua index 81a09da..3230368 100644 --- a/mods/weather/init.lua +++ b/mods/weather/init.lua @@ -21,30 +21,7 @@ local function play_sound() minetest.sound_stop(weather_soundspec) end - local timeofday=minetest.get_timeofday() - - if timeofday == nil then - timeofday=1 - end - - timeofday=timeofday*2 - - if weather.weather == "clear" then - if (timeofday > 0.4 and timeofday < 0.5) or (timeofday > 1.5 and timeofday < 1.6) then - -- dusk and dawn - weather_soundspec=minetest.sound_play({name="weather_night", gain=0.5}) - minetest.after(12, play_sound) - - return - elseif (timeofday < 0.4 or timeofday > 1.6) then - -- night - weather_soundspec=minetest.sound_play({name="weather_night", gain=0.3}) - minetest.after(12, play_sound) - - return - end - -- daytime - elseif weather.weather == "storm" then + if weather.weather == "storm" then weather_soundspec=minetest.sound_play({name="weather_storm"}) minetest.after(18, play_sound)