netwire-input-glfw 0.0.8 → 0.0.9
raw patch · 2 files changed
+29/−23 lines, 2 filesdep +deepseqdep ~netwire-input
Dependencies added: deepseq
Dependency ranges changed: netwire-input
Files
- lib/FRP/Netwire/Input/GLFW.hs +20/−10
- netwire-input-glfw.cabal +9/−13
lib/FRP/Netwire/Input/GLFW.hs view
@@ -1,7 +1,7 @@ {-| Module : FRP.Netwire.Input.GLFW Description : netwire-input instances for use with GLFW-Copyright : (c) Pavel Krajcevski, 2017+Copyright : (c) Pavel Krajcevski, 2018 License : MIT Maintainer : Krajcevski@gmail.com Stability : experimental@@ -13,10 +13,13 @@ 'MonadMouse' -}-+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE InstanceSigs #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TypeSynonymInstances #-} {-# LANGUAGE UndecidableInstances #-}- module FRP.Netwire.Input.GLFW ( -- * GLFW Input @@ -40,12 +43,14 @@ import qualified Graphics.UI.GLFW as GLFW import Control.Applicative import Control.Concurrent.STM+import Control.DeepSeq import Control.Monad.RWS import Control.Monad.State import Control.Monad.Except import Control.Monad.Cont import Control.Monad.Identity import GHC.Float hiding (clamp)+import GHC.Generics import FRP.Netwire.Input --------------------------------------------------------------------------------@@ -82,8 +87,12 @@ cursorPos :: (Float, Float), cmode :: CursorMode, scrollAmt :: (Double, Double)-} deriving(Show)+} deriving(Show, Generic) +instance NFData GLFW.Key+instance NFData GLFW.MouseButton+instance NFData GLFWInputState+ instance Key GLFW.Key instance MouseButton GLFW.MouseButton @@ -213,7 +222,6 @@ setInput :: GLFWInputControl -> GLFWInputState -> IO () setInput (IptCtl var win) ipt = do- -- Do we need to change the cursor mode? curMode <- GLFW.getCursorInputMode win let newMode = modeToGLFWMode (cmode ipt)@@ -221,18 +229,20 @@ GLFW.setCursorInputMode win newMode -- Write the new input- atomically $ writeTVar var (ipt { scrollAmt = (0, 0) })+ atomically $ writeTVar var $!! (ipt { scrollAmt = (0, 0) }) resetCursorPos :: GLFWInputState -> GLFWInputState resetCursorPos input = input { cursorPos = (0, 0) } resolveReleased :: GLFWInputState -> GLFWInputState resolveReleased input = input {- keysPressed = Map.map (+1) $- foldl (flip Map.delete) (keysPressed input) (Set.elems $ keysReleased input),+ keysPressed =+ (+1) <$>+ foldl (flip Map.delete) (keysPressed input) (Set.elems $ keysReleased input), keysReleased = Set.empty,- mbPressed = Map.map (+1) $- foldl (flip Map.delete) (mbPressed input) (Set.elems $ mbReleased input),+ mbPressed =+ (+1) <$>+ foldl (flip Map.delete) (mbPressed input) (Set.elems $ mbReleased input), mbReleased = Set.empty }
netwire-input-glfw.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: netwire-input-glfw-version: 0.0.8+version: 0.0.9 synopsis: GLFW instance of netwire-input description: This package contains the necessary glue to allow the use of wires from the netwire-input package. In general, the@@ -14,7 +14,7 @@ license-file: LICENSE author: Pavel Krajcevski maintainer: Krajcevski@gmail.com-copyright: Pavel Krajcevski, 2014-2017+copyright: Pavel Krajcevski, 2014-2018 category: Game build-type: Simple extra-source-files: examples/Cursor.hs README.md@@ -29,18 +29,14 @@ location: https://github.com/Mokosha/netwire-input-glfw library- default-extensions: FlexibleInstances,- TypeSynonymInstances,- MultiParamTypeClasses,- InstanceSigs exposed-modules: FRP.Netwire.Input.GLFW- -- other-modules: - build-depends: base >= 4.6 && < 6,- netwire-input,- containers,- GLFW-b,- stm,- mtl+ build-depends: base >= 4.6 && < 6+ , netwire-input >= 0.0.7+ , containers+ , deepseq+ , GLFW-b+ , stm+ , mtl hs-source-dirs: lib default-language: Haskell2010