h-raylib-4.5.3.0: examples/basic-models/src/Main.hs
{-# OPTIONS -Wall #-}
module Main where
import Raylib.Core (beginDrawing, beginMode3D, changeDirectory, clearBackground, closeWindow, disableCursor, endDrawing, endMode3D, getApplicationDirectory, initWindow, setTargetFPS, updateCamera)
import Raylib.Core.Models (drawGrid, drawModel, genMeshCube, loadModel, loadModelFromMesh)
import Raylib.Types (Camera3D (Camera3D), CameraMode (CameraModeFirstPerson), CameraProjection (CameraPerspective), Vector3 (Vector3))
import Raylib.Util (whileWindowOpen_)
import Raylib.Util.Colors (orange, white)
modelPath :: String
modelPath = "../../../../../../../../../examples/basic-models/assets/Model.obj"
main :: IO ()
main = do
initWindow 650 400 "raylib [models] example - basic models"
setTargetFPS 60
disableCursor
_ <- getApplicationDirectory >>= changeDirectory
mesh <- genMeshCube 2 3 4
cubeModel <- loadModelFromMesh mesh
customModel <- loadModel modelPath
let camera = Camera3D (Vector3 3 2 3) (Vector3 0 0 0) (Vector3 0 1 0) 70 CameraPerspective
whileWindowOpen_
( \c -> do
beginDrawing
clearBackground white
beginMode3D c
drawGrid 20 2.0
drawModel cubeModel (Vector3 0 1.5 0) 1 orange
drawModel customModel (Vector3 (-5) 1 0) 1 white
endMode3D
endDrawing
updateCamera c CameraModeFirstPerson
)
camera
closeWindow