Files
jak-project/goal_src/jak1/engine/common-obs/tippy.gc
T
ManDude b74399ed57 rework goal_src structure for jak 1 a bit (#1615)
* move files

* update game.gp
2022-07-05 16:00:09 -04:00

77 lines
2.4 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: tippy.gc
;; name in dgo: tippy
;; dgos: GAME, COMMON, L1
;; DECOMP BEGINS
(deftype tippy (structure)
((axis vector :inline :offset-assert 0)
(angle float :offset-assert 16)
(orig quaternion :inline :offset-assert 32)
(dist-ratio float :offset-assert 48)
(damping float :offset-assert 52)
(1-damping float :offset-assert 56)
)
:method-count-assert 11
:size-assert #x3c
:flag-assert #xb0000003c
(:methods
(reset! (_type_ process-drawable float float) none 9)
(TODO-RENAME-10 (_type_ process-drawable vector) symbol 10)
)
)
(defmethod reset! tippy ((obj tippy) (arg0 process-drawable) (arg1 float) (arg2 float))
(set-vector! (-> obj axis) 0.0 0.0 0.0 1.0)
(set! (-> obj angle) 0.0)
(quaternion-copy! (-> obj orig) (-> arg0 root quat))
(set! (-> obj dist-ratio) arg1)
(set! (-> obj damping) arg2)
(set! (-> obj 1-damping) (- 1.0 arg2))
0
(none)
)
(defmethod TODO-RENAME-10 tippy ((obj tippy) (arg0 process-drawable) (arg1 vector))
(let ((s4-0 #t))
(cond
(arg1
(let ((s3-0 (new 'stack-no-clear 'vector)))
0.0
(set! (-> s3-0 x) (- (-> arg1 z) (-> arg0 root trans z)))
(set! (-> s3-0 y) 0.0)
(set! (-> s3-0 z) (- (-> arg0 root trans x) (-> arg1 x)))
(let ((f0-6 (vector-length s3-0)))
(vector-float*! s3-0 s3-0 (/ 1.0 f0-6))
(let ((f30-0 (* f0-6 (-> obj dist-ratio))))
(set! (-> obj axis x) (+ (* (-> obj 1-damping) (-> obj axis x)) (* (-> obj damping) (-> s3-0 x))))
(set! (-> obj axis y) 0.0)
(set! (-> obj axis z) (+ (* (-> obj 1-damping) (-> obj axis z)) (* (-> obj damping) (-> s3-0 z))))
(vector-normalize! (-> obj axis) 1.0)
(set! (-> obj angle) (+ (* (-> obj 1-damping) (-> obj angle)) (* (-> obj damping) f30-0)))
)
)
)
)
(else
(set! (-> obj angle) (* (-> obj 1-damping) (-> obj angle)))
(when (< (-> obj angle) 182.04445)
(set! (-> obj angle) 0.0)
(set! s4-0 #f)
)
)
)
(quaternion-vector-angle! (-> arg0 root quat) (-> obj axis) (-> obj angle))
(quaternion*! (-> arg0 root quat) (-> arg0 root quat) (-> obj orig))
s4-0
)
)