{-|
  This module provides everything relating to input in the scope of spice.
-}
module FRP.Spice.Input where

--------------------
-- Global Imports --
import Graphics.UI.GLFW
import Data.Map.Strict

-------------------
-- Local Imports --
import FRP.Spice.Math

----------
-- Code --

{-|
  A container for all of the states themselves. It is used as a @'Signal'@
  @'Input'@ in the @'InputContainer'@ (which is necessary to use it within
  Elerea's FRP network).
-}
data Input = Input { mousePosition :: Vector Float
                   , keyboard      :: Map Key Bool
                   , mouse         :: Map MouseButton Bool
                   }