h-raylib-5.5.0.0: examples/first-person-camera/src/Main.hs
{-# LANGUAGE PatternSynonyms #-}
module Main where
import Raylib.Core (clearBackground, disableCursor)
import Raylib.Core.Camera (updateCamera)
import Raylib.Core.Models (drawCircle3D, drawCubeWiresV, drawLine3D)
import Raylib.Core.Text (drawFPS)
import Raylib.Types (Camera3D (Camera3D), CameraMode (CameraModeFirstPerson), CameraProjection (CameraPerspective), pattern Vector3)
import Raylib.Util (drawing, mode3D, whileWindowOpen_, withWindow)
import Raylib.Util.Colors (black, white)
main :: IO ()
main = do
withWindow
600
450
"raylib [core] example - first person camera"
60
( \_ -> do
disableCursor
let camera = Camera3D (Vector3 0 0 0) (Vector3 2 0 1) (Vector3 0 1 0) 70 CameraPerspective
whileWindowOpen_
( \c ->
drawing
( do
clearBackground black
drawFPS 10 20
mode3D
c
( do
drawCircle3D (Vector3 2 0 1) 2 (Vector3 0 0 0) 0 white
drawLine3D (Vector3 3 (-1) 1) (Vector3 1 1 1) white
drawLine3D (Vector3 4 2 2) (Vector3 1 (-1) 1) white
drawCubeWiresV (Vector3 (-2) 0 0) (Vector3 1 1 1) white
)
)
>> updateCamera c CameraModeFirstPerson
)
camera
)