(load "~/quicklisp/setup.lisp") (ql:quickload '(:claylib :usocket :simple-actors :bordeau-thread)) (defvar *mouse-delta* (make-vector2 0 0)) (defun reset-up (camera) (setf (x (up camera)) 0 (y (up camera)) 1 (z (up camera)) 0)) (defun pro-mvmt (key1 key2) (if (or (is-key-down-p key1) (is-key-down-p key2)) 0.1 0)) (defun pro-mode-update (camera) (get-mouse-delta :vec *mouse-delta*) (setf (x (movement camera)) (- (pro-mvmt +key-w+ +key-up+) (pro-mvmt +key-s+ +key-down+)) (y (movement camera)) (- (pro-mvmt +key-d+ +key-right+) (pro-mvmt +key-a+ +key-left+)) (x (rot camera)) (* 0.05 (x *mouse-delta*)) (y (rot camera)) (* 0.05 (y *mouse-delta*)) (zoom camera) (* 2 (get-mouse-wheel-move)))) (with-window (:title "common lisp client : raylib") (let ((camera (make-camera-3d 0 2 4 0 2 0 0 1 0 :fovy 60.0 :projection +camera-perspective+ :mode +camera-first-person+)) (scene (make-scene () ((ground (make-plane 0 0 0 32 32 +lightgray+)) (blue (make-cube -16 2.5 0 1 5 32 +blue+))))))) (with-scenes scene () (do-game-loop (:livesupport t) (pro-mode-update camera) (with-drawing () (with-3d-mode camera (draw-scene scene '(ground blue green yellow)) (draw-scene-regex scene "^COLUMN")) (draw-scene-regex scene "^(STATUS|INST)"))))))