Skip to content

Instantly share code, notes, and snippets.

@whitetigle
Created December 4, 2017 17:35
Show Gist options
  • Save whitetigle/85380dad237a1a9fd0f7d99db540c4c0 to your computer and use it in GitHub Desktop.
Save whitetigle/85380dad237a1a9fd0f7d99db540c4c0 to your computer and use it in GitHub Desktop.
let events = ResizeArray()
let rec stateMachine (smodel: StateModel) (rmodel: RenderModel option) lastDelta: Async<unit> = async {
let! delta = awaitAnimationFrame()
let diff = delta - lastDelta
let newState =
(smodel, events)
||> Seq.fold (fun smodel ev ->
match ev with
| DonePreparing -> Run
| _ -> ev
)
events.Clear()
let newRender = render newState rmodel events.Add app scale renderer diff
return! stateMachine newState (Some newRender) delta
}
let state = Init
stateMachine state None
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment