Supports monadic and arrow operations for animated scenes.
- type AniM a = StateT (TimePlusSceneAccumulator IO) IO a
- data TimePlusSceneAccumulator m
- frameTime :: AniM Time
- runAniM :: AniM (a, SceneLayerInfo) -> IO (a, Scene)
- rotationM :: Vector3D -> Rate Angle -> AniM AffineTransformation
- animateM :: AniM AffineTransformation -> AniM b -> AniM b
- rotateM :: Vector3D -> Rate Angle -> AniM a -> AniM a
- data AnimationObject i o
- newAnimationObjectM :: (i -> AniM o) -> AnimationObject i o
- newAnimationObjectA :: (forall e. FRP e (FRP1 (SceneAccumulator IO) i o) i o) -> IO (AnimationObject i o)
- runAnimationObject :: AnimationObject i o -> i -> AniM o
Documentation
type AniM a = StateT (TimePlusSceneAccumulator IO) IO aSource
A monad for animation using RSAGL's scene accumulation system.
data TimePlusSceneAccumulator m Source
A time-aware scene accumulator.
rotationM :: Vector3D -> Rate Angle -> AniM AffineTransformationSource
Generates a continuous rotation.
animateM :: AniM AffineTransformation -> AniM b -> AniM bSource
Combine an animation with a continuous affine transformation.
data AnimationObject i o Source
An object that can capture either a monadic or arrow-based animation.
newAnimationObjectM :: (i -> AniM o) -> AnimationObject i oSource
newAnimationObjectA :: (forall e. FRP e (FRP1 (SceneAccumulator IO) i o) i o) -> IO (AnimationObject i o)Source
runAnimationObject :: AnimationObject i o -> i -> AniM oSource