Files
Tyler Wilding e975eab15a decompiler: Apply docstring indentation fix to all game versions (#3614)
Previously was only applying to game versions above Jak 2, Fixes #3342
2024-07-29 21:57:07 -04:00

278 lines
8.1 KiB
Common Lisp
Vendored
Generated

;;-*-Lisp-*-
(in-package goal)
;; definition for method 19 of type bounding-box
(defmethod inside-xyz? ((this bounding-box) (arg0 vector))
"Is the point in the box?"
(and (< (-> this min x) (-> arg0 x))
(< (-> this min y) (-> arg0 y))
(< (-> this min z) (-> arg0 z))
(< (-> arg0 x) (-> this max x))
(< (-> arg0 y) (-> this max y))
(< (-> arg0 z) (-> this max z))
)
)
;; definition for method 20 of type bounding-box
(defmethod inside-xz? ((this bounding-box) (arg0 vector))
"Is the point in the box? Check xz only."
(and (< (-> this min x) (-> arg0 x))
(< (-> this min z) (-> arg0 z))
(< (-> arg0 x) (-> this max x))
(< (-> arg0 z) (-> this max z))
)
)
;; definition for function box-vector-enside?
(defun box-vector-enside? ((arg0 bounding-box) (arg1 vector))
"Is the point in the box? On the edge doesn't count."
(and (< (-> arg0 min x) (-> arg1 x))
(< (-> arg0 min y) (-> arg1 y))
(< (-> arg0 min z) (-> arg1 z))
(< (-> arg1 x) (-> arg0 max x))
(< (-> arg1 y) (-> arg0 max y))
(< (-> arg1 z) (-> arg0 max z))
)
)
;; definition for function box-vector-inside?
(defun box-vector-inside? ((arg0 bounding-box) (arg1 vector))
"Is the point in the box? On the edge counts."
(and (>= (-> arg1 x) (-> arg0 min x))
(>= (-> arg1 y) (-> arg0 min y))
(>= (-> arg1 z) (-> arg0 min z))
(>= (-> arg0 max x) (-> arg1 x))
(>= (-> arg0 max y) (-> arg1 y))
(>= (-> arg0 max z) (-> arg1 z))
)
)
;; definition for method 13 of type bounding-box
;; WARN: Return type mismatch int vs none.
(defmethod set-from-point-offset! ((this bounding-box) (arg0 vector) (arg1 vector))
"Set to the smallest box containing arg0, (arg0 + arg1)"
(rlet ((vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
(vf3 :class vf)
(vf4 :class vf)
(vf5 :class vf)
)
(init-vf0-vector)
(.lvf vf3 (&-> arg1 quad))
(.lvf vf4 (&-> arg0 quad))
(.add.vf vf5 vf4 vf3)
(.min.vf vf1 vf4 vf5)
(.max.vf vf2 vf4 vf5)
(.mov.vf vf1 vf0 :mask #b1000)
(.mov.vf vf2 vf0 :mask #b1000)
(.svf (&-> this min quad) vf1)
(.svf (&-> this max quad) vf2)
0
(none)
)
)
;; definition for method 11 of type bounding-box
;; WARN: Return type mismatch int vs none.
(defmethod add-point! ((this bounding-box) (arg0 vector))
"Expand the box as needed to contain the given point."
(rlet ((vf1 :class vf)
(vf2 :class vf)
(vf3 :class vf)
)
(.lvf vf1 (&-> this min quad))
(.lvf vf2 (&-> this max quad))
(.lvf vf3 (&-> arg0 quad))
(.min.vf vf1 vf1 vf3)
(.max.vf vf2 vf2 vf3)
(.svf (&-> this min quad) vf1)
(.svf (&-> this max quad) vf2)
0
(none)
)
)
;; definition for method 10 of type bounding-box
(defmethod add-box! ((this bounding-box) (arg0 bounding-box))
"Expand the box as needed to contain the given box."
(rlet ((vf1 :class vf)
(vf2 :class vf)
(vf3 :class vf)
(vf4 :class vf)
)
(.lvf vf1 (&-> this min quad))
(.lvf vf2 (&-> this max quad))
(.lvf vf3 (&-> arg0 min quad))
(.lvf vf4 (&-> arg0 max quad))
(.min.vf vf1 vf1 vf3)
(.max.vf vf2 vf2 vf4)
(.svf (&-> this min quad) vf1)
(.svf (&-> this max quad) vf2)
0
)
)
;; definition for method 15 of type bounding-box
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod set-to-point! ((this bounding-box) (arg0 vector))
"Set the box to be a single point."
(set! (-> this min quad) (-> arg0 quad))
(set! (-> this max quad) (-> arg0 quad))
0
(none)
)
;; definition for method 14 of type bounding-box
(defmethod set-from-point-offset-pad! ((this bounding-box) (arg0 vector) (arg1 vector) (arg2 float))
"Set the box to contain arg0, arg0 + offset, with some padding."
(rlet ((vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
(vf3 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(.lvf vf4 (&-> arg1 quad))
(.lvf vf5 (&-> arg0 quad))
(.mov vf1 arg2)
(.add.vf vf6 vf5 vf4)
(.min.vf vf2 vf5 vf6)
(.max.vf vf3 vf5 vf6)
(.add.x.vf vf3 vf3 vf1 :mask #b111)
(.sub.x.vf vf2 vf2 vf1 :mask #b111)
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf vf3 vf0 :mask #b1000)
(.svf (&-> this min quad) vf2)
(.svf (&-> this max quad) vf3)
0
)
)
;; definition for method 16 of type bounding-box
;; WARN: Return type mismatch int vs none.
(defmethod set-from-sphere! ((this bounding-box) (arg0 sphere))
"Set the box to contain a single sphere."
(rlet ((vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
(vf3 :class vf)
)
(init-vf0-vector)
(.lvf vf1 (&-> arg0 quad))
(.sub.w.vf vf2 vf1 vf1 :mask #b111)
(.add.w.vf vf3 vf1 vf1 :mask #b111)
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf vf3 vf0 :mask #b1000)
(.svf (&-> this min quad) vf2)
(.svf (&-> this max quad) vf3)
0
(none)
)
)
;; definition for method 17 of type bounding-box
;; ERROR: function was not converted to expressions. Cannot decompile.
;; definition for method 9 of type bounding-box
;; ERROR: function was not converted to expressions. Cannot decompile.
;; definition for method 18 of type bounding-box
(defmethod get-bounding-sphere ((this bounding-box) (arg0 vector))
"Get a bounding sphere for a bounding box."
(let* ((a1-2 (vector-! (new 'stack-no-clear 'vector) (-> this max) (-> this min)))
(a0-3 (vector-float*! (new 'stack-no-clear 'vector) a1-2 0.5))
)
(vector+! arg0 (-> this min) a0-3)
(set! (-> arg0 w) (vector-length a0-3))
)
arg0
)
;; definition of type liang-barsky-line-clip-params
(deftype liang-barsky-line-clip-params (structure)
((te float)
(tl float)
)
)
;; definition for method 3 of type liang-barsky-line-clip-params
(defmethod inspect ((this liang-barsky-line-clip-params))
(when (not this)
(set! this this)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" this 'liang-barsky-line-clip-params)
(format #t "~1Tte: ~f~%" (-> this te))
(format #t "~1Ttl: ~f~%" (-> this tl))
(label cfg-4)
this
)
;; definition for function liang-barsky-line-clipt
(defun liang-barsky-line-clipt ((arg0 liang-barsky-line-clip-params) (arg1 float) (arg2 float))
"Clip test in 1 dimension. Is arg1 in arg2?"
(cond
((< 0.0 arg1)
(let ((f0-2 (/ arg2 arg1)))
(if (< (-> arg0 tl) f0-2)
(return #f)
)
(if (< (-> arg0 te) f0-2)
(set! (-> arg0 te) f0-2)
)
)
)
((< arg1 0.0)
(let ((f0-5 (/ arg2 arg1)))
(if (< f0-5 (-> arg0 te))
(return #f)
)
(if (< f0-5 (-> arg0 tl))
(set! (-> arg0 tl) f0-5)
)
)
)
(else
(if (< 0.0 arg2)
(return #f)
)
)
)
#t
)
;; definition for method 12 of type bounding-box
;; WARN: disable def twice: 23. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare.
(defmethod intersects-line-segment? ((this bounding-box) (arg0 vector) (arg1 vector))
"Check intersection in xz plane, using liang-barsky. Not sure if this actually
a useful check or not..."
(let ((f28-0 (- (-> arg1 x) (-> arg0 x)))
(f30-0 (- (-> arg1 z) (-> arg0 z)))
)
(cond
((and (= f28-0 0.0) (= f30-0 0.0))
(let ((f1-2 (-> arg0 x))
(f0-4 (-> arg0 z))
)
(and (>= f1-2 (-> this min x)) (>= (-> this max x) f1-2) (>= f0-4 (-> this min z)) (>= (-> this max z) f0-4))
)
)
(else
(let ((s4-0 (new 'stack-no-clear 'liang-barsky-line-clip-params)))
(set! (-> s4-0 te) 0.0)
(set! (-> s4-0 tl) 1.0)
(and (liang-barsky-line-clipt s4-0 f28-0 (- (-> this min x) (-> arg0 x)))
(liang-barsky-line-clipt s4-0 (- f28-0) (- (-> arg0 x) (-> this max x)))
(liang-barsky-line-clipt s4-0 f30-0 (- (-> this min z) (-> arg0 z)))
(liang-barsky-line-clipt s4-0 (- f30-0) (- (-> arg0 z) (-> this max z)))
)
)
)
)
)
)