Copyright | (c) Pavel Krajcevski 2017 |
---|---|
License | MIT |
Maintainer | Krajcevski@gmail.com |
Stability | experimental |
Portability | POSIX |
Safe Haskell | None |
Language | Haskell2010 |
This module contains data types with instances needed to create wires
that can be used with the netwire-input combinators. In particular, this
package implements GLFWInputT
which has instances of MonadKeyboard
and
MonadMouse
- type GLFWInput = GLFWInputT Identity
- runGLFWInput :: GLFWInput a -> GLFWInputState -> (a, GLFWInputState)
- data GLFWInputT m a
- runGLFWInputT :: GLFWInputT m a -> GLFWInputState -> m (a, GLFWInputState)
- data GLFWInputControl
- data GLFWInputState
- getInput :: GLFWInputControl -> IO GLFWInputState
- mkInputControl :: Window -> IO GLFWInputControl
- pollGLFW :: GLFWInputState -> GLFWInputControl -> IO GLFWInputState
GLFW Input
Basic Input Monad
type GLFWInput = GLFWInputT Identity Source #
The GLFWInput
monad is simply the GLFWInputT transformer around the
identity monad.
runGLFWInput :: GLFWInput a -> GLFWInputState -> (a, GLFWInputState) Source #
Monad Transformer
data GLFWInputT m a Source #
The GLFWInputT
monad transformer is simply a state monad transformer using
GLFWInputState
MonadTrans GLFWInputT Source # | |
MonadWriter w m => MonadWriter w (GLFWInputT m) Source # | |
MonadState s m => MonadState s (GLFWInputT m) Source # | |
MonadReader r m => MonadReader r (GLFWInputT m) Source # | |
MonadError e m => MonadError e (GLFWInputT m) Source # | |
Monad m => MonadMouse MouseButton (GLFWInputT m) Source # | |
Monad m => MonadKeyboard Key (GLFWInputT m) Source # | |
Monad m => Monad (GLFWInputT m) Source # | |
Functor m => Functor (GLFWInputT m) Source # | |
MonadFix m => MonadFix (GLFWInputT m) Source # | |
Monad m => Applicative (GLFWInputT m) Source # | |
MonadIO m => MonadIO (GLFWInputT m) Source # | |
MonadPlus m => Alternative (GLFWInputT m) Source # | |
MonadPlus m => MonadPlus (GLFWInputT m) Source # | |
MonadCont m => MonadCont (GLFWInputT m) Source # | |
runGLFWInputT :: GLFWInputT m a -> GLFWInputState -> m (a, GLFWInputState) Source #
To execute a computation with the current input snapshot, we need to give
supply the current GLFWInputState
. This comes from the GLFWInputControl
associated with the given window.
State Types
data GLFWInputControl Source #
data GLFWInputState Source #
The GLFW input state is a record that keeps track of which buttons and keys are currently pressed. Because GLFW works with callbacks, a call to pollEvents must be made in order to process any of the events. At this time, all of the appropriate callbacks are fired in order of the events received, and this record is updated to reflect the most recent input state.
getInput :: GLFWInputControl -> IO GLFWInputState Source #
Returns a current snapshot of the input
mkInputControl :: Window -> IO GLFWInputControl Source #
Creates and returns an STM
variable for the window that holds all of the
most recent input state information
pollGLFW :: GLFWInputState -> GLFWInputControl -> IO GLFWInputState Source #
Allows GLFW to interact with the windowing system to update the current
state. The old state must be passed in order to properly reset certain
properties such as the scroll wheel. The returned input state is identical
to a subsequent call to getInput
right after a call to pollEvents