{-# LANGUAGE RankNTypes #-}
module Graphics.Gloss.Interface.Pure.Simulate
( module Graphics.Gloss.Data.Display
, module Graphics.Gloss.Data.Picture
, module Graphics.Gloss.Data.Color
, simulate
, ViewPort(..))
where
import Graphics.Gloss.Data.Display
import Graphics.Gloss.Data.Picture
import Graphics.Gloss.Data.Color
import Graphics.Gloss.Data.ViewPort
import Graphics.Gloss.Internals.Interface.Simulate
import Graphics.Gloss.Internals.Interface.Backend
simulate
:: Display
-> Color
-> Int
-> model
-> (model -> Picture)
-> (ViewPort -> Float -> model -> model)
-> IO ()
simulate :: Display
-> Color
-> Int
-> model
-> (model -> Picture)
-> (ViewPort -> Float -> model -> model)
-> IO ()
simulate Display
display Color
backColor Int
simResolution
model
modelStart model -> Picture
modelToPicture ViewPort -> Float -> model -> model
modelStep
= do ()
_ <- GLUTState
-> Display
-> Color
-> Int
-> model
-> (model -> IO Picture)
-> (ViewPort -> Float -> model -> IO model)
-> IO ()
forall model a.
Backend a =>
a
-> Display
-> Color
-> Int
-> model
-> (model -> IO Picture)
-> (ViewPort -> Float -> model -> IO model)
-> IO ()
simulateWithBackendIO GLUTState
defaultBackendState
Display
display Color
backColor Int
simResolution
model
modelStart
(Picture -> IO Picture
forall (m :: * -> *) a. Monad m => a -> m a
return (Picture -> IO Picture)
-> (model -> Picture) -> model -> IO Picture
forall b c a. (b -> c) -> (a -> b) -> a -> c
. model -> Picture
modelToPicture)
(\ViewPort
view Float
time model
model -> model -> IO model
forall (m :: * -> *) a. Monad m => a -> m a
return (model -> IO model) -> model -> IO model
forall a b. (a -> b) -> a -> b
$ ViewPort -> Float -> model -> model
modelStep ViewPort
view Float
time model
model)
() -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()