diff options
| author | 3gg <3gg@shellblade.net> | 2024-08-14 19:43:35 -0700 |
|---|---|---|
| committer | 3gg <3gg@shellblade.net> | 2024-08-14 19:43:35 -0700 |
| commit | d0ea9cd023b7eebbee082501d8af1a1ec9af2081 (patch) | |
| tree | 0da7e30ee9a511e9e66f8f28215a92d2d9449bb4 | |
| parent | 701d1fdb1607f336bd3a7e9ce666ca43febeadfa (diff) | |
Check input events once per frame.
| -rw-r--r-- | Spear/App.hs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/Spear/App.hs b/Spear/App.hs index f70dd06..1a0095b 100644 --- a/Spear/App.hs +++ b/Spear/App.hs | |||
| @@ -57,16 +57,17 @@ loop' :: | |||
| 57 | loop' window ddt inputTimer elapsed timeBudget app = do | 57 | loop' window ddt inputTimer elapsed timeBudget app = do |
| 58 | timer <- gameIO $ tick inputTimer | 58 | timer <- gameIO $ tick inputTimer |
| 59 | 59 | ||
| 60 | inputEvents <- gameIO $ pollInputEvents window | ||
| 61 | |||
| 60 | let timeBudgetThisFrame = timeBudget + deltaTime timer | 62 | let timeBudgetThisFrame = timeBudget + deltaTime timer |
| 61 | let steps = timeBudgetThisFrame `div` ddt | 63 | let steps = timeBudgetThisFrame `div` ddt |
| 62 | 64 | ||
| 63 | continue <- and <$> forM [1..steps] (\i -> do | 65 | continue <- and <$> forM [1..steps] (\i -> do |
| 64 | let t = timeDeltaToSec $ elapsed + i * ddt | 66 | let t = timeDeltaToSec $ elapsed + i * ddt |
| 65 | let dt = timeDeltaToSec ddt | 67 | let dt = timeDeltaToSec ddt |
| 66 | inputEvents <- gameIO $ pollInputEvents window | ||
| 67 | stepApp app t dt inputEvents) | 68 | stepApp app t dt inputEvents) |
| 68 | 69 | ||
| 69 | let elapsed' = elapsed + steps * ddt | 70 | let elapsed' = elapsed + steps * ddt |
| 70 | let timeBudget' = timeBudgetThisFrame `mod` ddt | 71 | let timeBudget' = timeBudgetThisFrame `mod` ddt |
| 71 | 72 | ||
| 72 | when continue $ do | 73 | when continue $ do |
