{-# OPTIONS_HADDOCK hide #-} module Graphics.Gloss.Internals.Interface.Simulate.State ( State (..) , stateInit ) where -- | Simulation state data State = State { -- | The iteration number we're up to. stateIteration :: !Integer -- | Whether the animation is free-running (or single step) , stateRun :: !Bool -- | Signals to callbackIdle to take a single step of the automation. , stateStep :: !Bool -- | Signals to callbackIdle to roll-back to the initial world. , stateReset :: !Bool -- | How many simulation setps to take for each second of real time , stateResolution :: !Int -- | How many seconds worth of simulation we've done so far , stateSimTime :: !Float -- | Record how many steps we've been taking per frame , stateStepsPerFrame :: !Int } -- | Initial control state stateInit :: Int -> State stateInit resolution = State { stateIteration = 0 , stateRun = True , stateStep = False , stateReset = False , stateResolution = resolution , stateSimTime = 0 , stateStepsPerFrame = 0 }