packages feed

edge-0.8.18: AfterEffect.hs

{-# LANGUAGE ExistentialQuantification #-}

module AfterEffect ( AfterEffect (..) ) where

import Animation (Audible(..), Animation(..))
import Updating (InternallyUpdating(..), Transient(..))
import Moving (Locatable(..))

data AfterEffect =
    forall a. ( Animation a
         , Locatable a
         , Transient a
         , Audible a
         ) => AfterEffect a

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) c = do b <- processAudio a c
                                      return (AfterEffect b)

  terminateAudio (AfterEffect a) = do b <- terminateAudio a
                                      return (AfterEffect b)