44 lines
1.7 KiB
Common Lisp
44 lines
1.7 KiB
Common Lisp
|
(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)"))))))
|