h-raylib-4.5.3.0: examples/first-person-camera/src/Main.hs
{-# OPTIONS -Wall #-}
module Main where
import Raylib.Core
( beginDrawing,
beginMode3D,
clearBackground,
closeWindow,
disableCursor,
endDrawing,
endMode3D,
initWindow,
setTargetFPS,
updateCamera,
)
import Raylib.Core.Models (drawCircle3D, drawCubeWiresV, drawLine3D)
import Raylib.Core.Text (drawFPS)
import Raylib.Types (Camera3D (Camera3D), CameraMode (CameraModeFirstPerson), CameraProjection (CameraPerspective), Vector3 (Vector3))
import Raylib.Util (whileWindowOpen_)
import Raylib.Util.Colors (black, white)
main :: IO ()
main = do
initWindow 600 450 "raylib [core] example - first person camera"
setTargetFPS 60
disableCursor
let camera = Camera3D (Vector3 0 0 0) (Vector3 2 0 1) (Vector3 0 1 0) 70 CameraPerspective
whileWindowOpen_
( \c -> do
beginDrawing
clearBackground black
drawFPS 10 20
beginMode3D c
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
endMode3D
endDrawing
updateCamera c CameraModeFirstPerson
)
camera
closeWindow