2020-10-26 21:08:24 -04:00
|
|
|
;;-*-Lisp-*-
|
2020-09-04 14:44:23 -04:00
|
|
|
(in-package goal)
|
|
|
|
|
|
|
|
;; name: cam-interface.gc
|
|
|
|
;; name in dgo: cam-interface
|
|
|
|
;; dgos: GAME, ENGINE
|
|
|
|
|
2021-06-02 20:09:04 -04:00
|
|
|
|
|
|
|
;; definition for function position-in-front-of-camera!
|
|
|
|
(defun position-in-front-of-camera! ((arg0 vector) (arg1 float) (arg2 float))
|
2021-06-27 17:24:35 -04:00
|
|
|
(vector-float*! arg0 (-> *math-camera* inv-camera-rot vector 2) arg1)
|
|
|
|
(vector+float*! arg0 arg0 (-> *math-camera* inv-camera-rot vector 1) arg2)
|
|
|
|
(vector+! arg0 arg0 (-> *math-camera* trans))
|
|
|
|
arg0
|
2021-06-02 20:09:04 -04:00
|
|
|
)
|
|
|
|
|
|
|
|
;; definition for function matrix-local->world
|
|
|
|
(defun matrix-local->world ((arg0 symbol))
|
|
|
|
(if arg0
|
|
|
|
(-> *math-camera* inv-camera-rot-smooth)
|
|
|
|
(-> *math-camera* inv-camera-rot)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
;; definition for function matrix-world->local
|
|
|
|
(defun matrix-world->local ()
|
|
|
|
(-> *math-camera* camera-rot)
|
|
|
|
)
|
|
|
|
|
2021-06-27 12:11:30 -04:00
|
|
|
(define-perm *camera-dummy-vector* vector (vector-reset! (new 'global 'vector)))
|
2021-06-02 20:09:04 -04:00
|
|
|
|
|
|
|
;; definition for function camera-pos
|
|
|
|
;; INFO: Return type mismatch object vs vector.
|
|
|
|
(defun camera-pos ()
|
|
|
|
(the-as vector (cond
|
|
|
|
(*camera-combiner*
|
|
|
|
(-> *camera-combiner* stack)
|
|
|
|
)
|
|
|
|
(*math-camera*
|
|
|
|
(-> *math-camera* trans)
|
|
|
|
)
|
|
|
|
(else
|
|
|
|
*camera-dummy-vector*
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
;; definition for function math-camera-pos
|
|
|
|
(defun math-camera-pos ()
|
|
|
|
(-> *math-camera* trans)
|
|
|
|
)
|
|
|
|
|
|
|
|
;; definition for function camera-angle
|
|
|
|
(defun camera-angle ()
|
|
|
|
(let ((f0-0 (-> *math-camera* camera-rot data 0))
|
|
|
|
(f1-0 (-> *math-camera* camera-rot data 2))
|
|
|
|
)
|
|
|
|
(atan f1-0 f0-0)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
;; definition for function camera-teleport-to-entity
|
|
|
|
;; INFO: Return type mismatch int vs none.
|
|
|
|
;; Used lq/sq
|
2021-07-04 16:54:07 -04:00
|
|
|
(defbehavior camera-teleport-to-entity process ((arg0 entity-actor))
|
|
|
|
(let ((gp-0 (new 'stack 'transformq)))
|
|
|
|
(set! (-> gp-0 trans quad)
|
|
|
|
(-> (the-as transform (-> arg0 extra)) scale quad)
|
|
|
|
)
|
|
|
|
(quaternion-copy! (-> gp-0 quat) (-> arg0 quat))
|
|
|
|
(vector-identity! (-> gp-0 scale))
|
|
|
|
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
|
|
|
|
(set! (-> a1-2 from) self)
|
|
|
|
(set! (-> a1-2 num-params) 1)
|
|
|
|
(set! (-> a1-2 message) 'teleport-to-transformq)
|
|
|
|
(set! (-> a1-2 param 0) (the-as uint gp-0))
|
|
|
|
(send-event-function *camera* a1-2)
|
2021-06-14 20:46:54 -04:00
|
|
|
)
|
2021-06-02 20:09:04 -04:00
|
|
|
)
|
2021-07-04 16:54:07 -04:00
|
|
|
0
|
|
|
|
(none)
|
2021-06-02 20:09:04 -04:00
|
|
|
)
|