module Animation where import Graphics.Gloss.Data.Picture import Moving import Data.WrapAround import Sound.ALUT import Common class Animation a where image :: a -> Time -> Picture class Audible a where processAudio :: a -> WrapPoint -> IO a terminateAudio :: a -> IO a {- Note to self: I need to terminateAudio for the purpose of stopping sound from Audible objects before they vanish (e.g., before a level change). However, I am also concerned about the fact that the Sound.OpenAL API doesn't seem to have any call for destroying a Source. I wonder if this is handled automatically somehow, if I this will lead to a memory leak, with Source objects accumulating in whatever system stores them. -} audioReferenceDistance = 300.0 :: Float -- audioMaxDistance = 800.0 :: Float audioRolloffFactor = 3.0 :: Float audioDistanceModel = InverseDistanceClamped