Advertisement
Daemonion

huh

Feb 5th, 2013
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. local fade_seconds = 2
  2. local fade_in_table = {}
  3. local fade_out_table = {}
  4.  
  5. function fade_in(snd)
  6. local key = check_table(fade_out_table,snd)
  7. if key ~= nil then
  8. fade_out_table[key]:stop()
  9. fade_out_table[key] = nil
  10. table.remove(fade_out_table,key)
  11. end
  12. if snd.volume == 1 then
  13. snd.volume = 0
  14. end
  15. table.insert(fade_in_table,snd)
  16. --c_print("FADE IN " .. #fade_in_table)
  17. end
  18.  
  19. function fade_out(snd)
  20. local key = check_table(fade_in_table,snd)
  21. if key ~= nil then
  22. table.remove(fade_in_table,key)
  23. end
  24. table.insert(fade_out_table,snd)
  25. --c_print("FADE OUT " .. #fade_out_table)
  26. end
  27.  
  28. function fade_in_update(delta)
  29. local change = delta/(fade_seconds*1000)
  30. for k, v in pairs (fade_in_table) do
  31. if v.volume + change < 1 then
  32. v.volume = v.volume + change
  33. else
  34. v.volume = 1
  35. table.remove(fade_in_table,k)
  36. break
  37. end
  38. end
  39. end
  40.  
  41. function fade_out_update(delta)
  42. local change = delta/(fade_seconds*1000)
  43. for k, v in pairs (fade_out_table) do
  44. if v.volume - change > 0 then
  45. v.volume = v.volume - change
  46. else
  47. v:stop()
  48. v = nil
  49. table.remove(fade_out_table,k)
  50. break
  51. end
  52. end
  53. end
  54.  
  55. --Just shortening 2 functions in the update binder to one
  56. function fade_update(delta)
  57. fade_in_update(delta)
  58. fade_out_update(delta)
  59. end
  60.  
  61. --Utility function. We don't want a sound object in both the "fade in" and "fade out" tables.
  62. function check_table(tab,elem)
  63. for k, v in pairs(tab) do
  64. if v.id == elem.id then
  65. return k
  66. end
  67. end
  68. return nil
  69. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement