Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local fade_seconds = 2
- local fade_in_table = {}
- local fade_out_table = {}
- function fade_in(snd)
- local key = check_table(fade_out_table,snd)
- if key ~= nil then
- fade_out_table[key]:stop()
- fade_out_table[key] = nil
- table.remove(fade_out_table,key)
- end
- if snd.volume == 1 then
- snd.volume = 0
- end
- table.insert(fade_in_table,snd)
- --c_print("FADE IN " .. #fade_in_table)
- end
- function fade_out(snd)
- local key = check_table(fade_in_table,snd)
- if key ~= nil then
- table.remove(fade_in_table,key)
- end
- table.insert(fade_out_table,snd)
- --c_print("FADE OUT " .. #fade_out_table)
- end
- function fade_in_update(delta)
- local change = delta/(fade_seconds*1000)
- for k, v in pairs (fade_in_table) do
- if v.volume + change < 1 then
- v.volume = v.volume + change
- else
- v.volume = 1
- table.remove(fade_in_table,k)
- break
- end
- end
- end
- function fade_out_update(delta)
- local change = delta/(fade_seconds*1000)
- for k, v in pairs (fade_out_table) do
- if v.volume - change > 0 then
- v.volume = v.volume - change
- else
- v:stop()
- v = nil
- table.remove(fade_out_table,k)
- break
- end
- end
- end
- --Just shortening 2 functions in the update binder to one
- function fade_update(delta)
- fade_in_update(delta)
- fade_out_update(delta)
- end
- --Utility function. We don't want a sound object in both the "fade in" and "fade out" tables.
- function check_table(tab,elem)
- for k, v in pairs(tab) do
- if v.id == elem.id then
- return k
- end
- end
- return nil
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement