jak-project/goal_src/engine/camera/cam-interface.gc
Tyler Wilding 991a438927
decomp: decompile target-util | logic-target (#662)
* add IR syntax highlighting

* set the filterFileRegex properly!

* stash

* decompiler: Add print if conditional fails

* decomp: Mostly finish `target-util`

* decomp: figured out a bit more with `target-util`, a bit stuck now

* decomp: *deep breath* `logic-target` mostly complete

* decompiler: More robust arg_count checking for `format` calls

* decomp: some more work in `target-util`

* fix sllv usage

* decomp: `logic-target` is compiling

* decomp: `target-util` very close - blocked by decomp issue!

* decomp: finish `target-util` except for one issue

#772

* demp: update goal_src

* linting

* add back the one remaining method

* address feedback, update source files
2021-08-22 20:46:37 -04:00

84 lines
2.3 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: cam-interface.gc
;; name in dgo: cam-interface
;; dgos: GAME, ENGINE
;; definition for function position-in-front-of-camera!
(defun position-in-front-of-camera! ((arg0 vector) (arg1 float) (arg2 float))
(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
)
;; definition for function matrix-local->world
(defun matrix-local->world ((arg0 symbol) (arg1 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)
)
(define-perm *camera-dummy-vector* vector (vector-reset! (new 'global 'vector)))
;; 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
(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)
)
)
0
(none)
)