edge-0.8: AfterEffect.hs
{-# LANGUAGE ExistentialQuantification #-}
module AfterEffect ( AfterEffect (..) ) where
import Animation
import Updating
import Moving
data AfterEffect =
forall a. ( Animation a
, Locatable a
, Transient a
, Audible a
) => AfterEffect a
-- to be expanded algebraically
instance InternallyUpdating AfterEffect where
preUpdate (AfterEffect a) et = AfterEffect (preUpdate a et)
postUpdate (AfterEffect a) et = AfterEffect (postUpdate a et)
instance Transient AfterEffect where
expired' (AfterEffect a) = expired' a
instance Audible AfterEffect where
processAudio (AfterEffect a) wp = do a' <- processAudio a wp
return (AfterEffect a')
terminateAudio (AfterEffect a) = do a' <- terminateAudio a
return (AfterEffect a')