mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 21:27:52 -04:00
11e11d2c04
* fix assorted bugs * stricter return types * only look for functions in code files
468 lines
11 KiB
Common Lisp
468 lines
11 KiB
Common Lisp
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; name: path.gc
|
|
;; name in dgo: path
|
|
;; dgos: GAME, ENGINE
|
|
|
|
;; definition for method 9 of type path-control
|
|
;; INFO: Return type mismatch int vs none.
|
|
(defmethod dummy-9 path-control ((obj path-control))
|
|
(cond
|
|
((nonzero? (logand (-> obj flags) (path-control-flag not-found)))
|
|
(when
|
|
(and
|
|
(type-type? (-> obj process type) process-drawable)
|
|
*display-entity-errors*
|
|
)
|
|
(let ((s5-0 add-debug-text-3d)
|
|
(s4-0 #t)
|
|
(s3-0 68)
|
|
)
|
|
(format
|
|
(clear *temp-string*)
|
|
"path data error in ~S"
|
|
(-> obj process name)
|
|
)
|
|
(s5-0
|
|
s4-0
|
|
(the-as bucket-id s3-0)
|
|
*temp-string*
|
|
(-> obj process root trans)
|
|
(font-color orange-red)
|
|
(the-as vector2h #f)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
((let ((a0-5 obj))
|
|
(and
|
|
*display-path-marks*
|
|
(logtest? (-> a0-5 flags) (path-control-flag display))
|
|
)
|
|
)
|
|
(dotimes (s5-1 (-> obj curve num-cverts))
|
|
(let ((s4-1 (-> obj cverts s5-1)))
|
|
(if
|
|
(and
|
|
(nonzero? (logand (-> obj flags) (path-control-flag draw-line)))
|
|
(< s5-1 (+ (-> obj curve num-cverts) -1))
|
|
)
|
|
(add-debug-line
|
|
#t
|
|
(bucket-id debug-draw1)
|
|
s4-1
|
|
(-> obj cverts (+ s5-1 1))
|
|
(new 'static 'rgba :r #xff :g #x80 :a #x80)
|
|
#f
|
|
(the-as rgba -1)
|
|
)
|
|
)
|
|
(if (nonzero? (logand (-> obj flags) (path-control-flag draw-point)))
|
|
(add-debug-x
|
|
#t
|
|
(bucket-id debug-draw1)
|
|
s4-1
|
|
(new 'static 'rgba :r #xff :a #x80)
|
|
)
|
|
)
|
|
(when (nonzero? (logand (-> obj flags) (path-control-flag draw-text)))
|
|
(let ((s3-1 add-debug-text-3d)
|
|
(s2-1 #t)
|
|
(s1-0 68)
|
|
)
|
|
(format (clear *temp-string*) "~D" s5-1)
|
|
(s3-1
|
|
s2-1
|
|
(the-as bucket-id s1-0)
|
|
*temp-string*
|
|
s4-1
|
|
(font-color bright-orange-red)
|
|
(the-as vector2h #f)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 16 of type path-control
|
|
(defmethod path-distance path-control ((obj path-control))
|
|
(let ((f30-0 0.0))
|
|
(dotimes (s5-0 (+ (-> obj curve num-cverts) -1))
|
|
(+!
|
|
f30-0
|
|
(vector-vector-distance (-> obj cverts s5-0) (-> obj cverts (+ s5-0 1)))
|
|
)
|
|
)
|
|
f30-0
|
|
)
|
|
)
|
|
|
|
;; definition for method 16 of type curve-control
|
|
(defmethod path-distance curve-control ((obj curve-control))
|
|
(let ((f0-0 (-> obj curve length)))
|
|
(when (= f0-0 0.0)
|
|
(set! f0-0 (curve-length (the-as curve (&-> obj cverts))))
|
|
(set! (-> obj curve length) f0-0)
|
|
)
|
|
f0-0
|
|
)
|
|
)
|
|
|
|
;; definition for method 10 of type path-control
|
|
;; Used lq/sq
|
|
(defmethod
|
|
eval-path-curve-div!
|
|
path-control
|
|
((obj path-control) (arg0 vector) (arg1 float) (arg2 symbol))
|
|
(let ((a1-1 (-> obj curve num-cverts))
|
|
(f0-3 (the float (the int arg1)))
|
|
)
|
|
(cond
|
|
((< arg1 0.0)
|
|
(set! (-> arg0 quad) (-> obj cverts 0 quad))
|
|
)
|
|
((>= f0-3 (the float (+ a1-1 -1)))
|
|
(set! (-> arg0 quad) (-> obj cverts (+ a1-1 -1) quad))
|
|
)
|
|
(else
|
|
(if (or (= arg2 'exact) (= f0-3 arg1))
|
|
(set! (-> arg0 quad) (-> obj cverts (the int f0-3) quad))
|
|
(vector-lerp!
|
|
arg0
|
|
(-> obj cverts (the int f0-3))
|
|
(-> obj cverts (the int (+ 1.0 f0-3)))
|
|
(- arg1 f0-3)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
arg0
|
|
)
|
|
|
|
;; definition for method 11 of type path-control
|
|
;; Used lq/sq
|
|
(defmethod get-random-point path-control ((obj path-control) (arg0 vector))
|
|
(with-pp
|
|
(cond
|
|
((> (-> obj curve num-cverts) 0)
|
|
(let ((s4-0 (rand-vu-int-count (-> obj curve num-cverts))))
|
|
(when *run-time-assert-enable*
|
|
(set-pos *__private-assert-info* "path" (the-as uint 83) (the-as uint 6))
|
|
(__assert-zero-lim-range-int
|
|
s4-0
|
|
(-> obj curve num-cverts)
|
|
"rand-index"
|
|
"(-> obj num-cverts)"
|
|
)
|
|
)
|
|
(set! (-> arg0 quad) (-> obj cverts s4-0 quad))
|
|
)
|
|
)
|
|
(else
|
|
(format
|
|
#t
|
|
"WARNING: method get-random-point called on a path-control object with no vertices.~%"
|
|
)
|
|
(if pp
|
|
(format #t "current process is ~A~%" (-> pp name))
|
|
)
|
|
(set! (-> arg0 quad) (-> *null-vector* quad))
|
|
)
|
|
)
|
|
arg0
|
|
)
|
|
)
|
|
|
|
;; definition for method 13 of type path-control
|
|
(defmethod
|
|
eval-path-curve!
|
|
path-control
|
|
((obj path-control) (arg0 vector) (arg1 float) (arg2 symbol))
|
|
(eval-path-curve-div!
|
|
obj
|
|
arg0
|
|
(* arg1 (the float (+ (-> obj curve num-cverts) -1)))
|
|
arg2
|
|
)
|
|
)
|
|
|
|
;; definition for method 13 of type curve-control
|
|
;; INFO: Return type mismatch object vs vector.
|
|
(defmethod
|
|
eval-path-curve!
|
|
curve-control
|
|
((obj curve-control) (arg0 vector) (arg1 float) (arg2 symbol))
|
|
(the-as
|
|
vector
|
|
(if (nonzero? (logand (-> obj flags) (path-control-flag not-found)))
|
|
0.0
|
|
(curve-evaluate!
|
|
arg0
|
|
arg1
|
|
(the-as pointer (-> obj cverts))
|
|
(-> obj curve num-cverts)
|
|
(-> obj curve knots)
|
|
(-> obj curve num-knots)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for method 10 of type curve-control
|
|
;; INFO: Return type mismatch object vs vector.
|
|
(defmethod
|
|
eval-path-curve-div!
|
|
curve-control
|
|
((obj curve-control) (arg0 vector) (arg1 float) (arg2 symbol))
|
|
(the-as
|
|
vector
|
|
(if (nonzero? (logand (-> obj flags) (path-control-flag not-found)))
|
|
0.0
|
|
(curve-evaluate!
|
|
arg0
|
|
(/ arg1 (the float (+ (-> obj curve num-cverts) -1)))
|
|
(the-as pointer (-> obj cverts))
|
|
(-> obj curve num-cverts)
|
|
(-> obj curve knots)
|
|
(-> obj curve num-knots)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for method 12 of type path-control
|
|
(defmethod
|
|
TODO-RENAME-12
|
|
path-control
|
|
((obj path-control) (arg0 vector) (arg1 float))
|
|
(when (zero? (logand (-> obj flags) (path-control-flag not-found)))
|
|
(let ((v1-3 (-> obj curve num-cverts))
|
|
(f0-3 (the float (the int arg1)))
|
|
)
|
|
(cond
|
|
((< v1-3 2)
|
|
)
|
|
((< arg1 0.0)
|
|
(vector-! arg0 (-> obj cverts 1) (-> obj cverts 0))
|
|
)
|
|
(else
|
|
(let ((f0-4 (fmin f0-3 (the float (+ v1-3 -2)))))
|
|
(vector-!
|
|
arg0
|
|
(-> obj cverts (the int (+ 1.0 f0-4)))
|
|
(-> obj cverts (the int f0-4))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(vector-normalize! arg0 1.0)
|
|
)
|
|
|
|
;; definition for method 14 of type path-control
|
|
(defmethod
|
|
TODO-RENAME-14
|
|
path-control
|
|
((obj path-control) (arg0 vector) (arg1 float))
|
|
(TODO-RENAME-12
|
|
obj
|
|
arg0
|
|
(* arg1 (the float (+ (-> obj curve num-cverts) -1)))
|
|
)
|
|
)
|
|
|
|
;; definition for method 14 of type curve-control
|
|
(defmethod
|
|
TODO-RENAME-14
|
|
curve-control
|
|
((obj curve-control) (arg0 vector) (arg1 float))
|
|
(when (zero? (logand (-> obj flags) (path-control-flag not-found)))
|
|
(let ((s4-0 (new 'stack-no-clear 'vector)))
|
|
(curve-evaluate!
|
|
arg0
|
|
arg1
|
|
(the-as pointer (-> obj cverts))
|
|
(-> obj curve num-cverts)
|
|
(-> obj curve knots)
|
|
(-> obj curve num-knots)
|
|
)
|
|
(cond
|
|
((< arg1 0.99)
|
|
(curve-evaluate!
|
|
s4-0
|
|
(+ 0.01 arg1)
|
|
(the-as pointer (-> obj cverts))
|
|
(-> obj curve num-cverts)
|
|
(-> obj curve knots)
|
|
(-> obj curve num-knots)
|
|
)
|
|
(vector-! arg0 s4-0 arg0)
|
|
)
|
|
(else
|
|
(curve-evaluate!
|
|
s4-0
|
|
(+ -0.01 arg1)
|
|
(the-as pointer (-> obj cverts))
|
|
(-> obj curve num-cverts)
|
|
(-> obj curve knots)
|
|
(-> obj curve num-knots)
|
|
)
|
|
(vector-! arg0 arg0 s4-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(vector-normalize! arg0 1.0)
|
|
)
|
|
|
|
;; definition for method 12 of type curve-control
|
|
(defmethod
|
|
TODO-RENAME-12
|
|
curve-control
|
|
((obj curve-control) (arg0 vector) (arg1 float))
|
|
(TODO-RENAME-14
|
|
obj
|
|
arg0
|
|
(/ arg1 (the float (+ (-> obj curve num-cverts) -1)))
|
|
)
|
|
)
|
|
|
|
;; definition for method 19 of type path-control
|
|
;; Used lq/sq
|
|
(defmethod TODO-RENAME-19 path-control ((obj path-control))
|
|
(let ((s5-0 (new 'stack-no-clear 'vector))
|
|
(s4-0 (new 'stack-no-clear 'vector))
|
|
(s3-0 (new 'stack-no-clear 'vector))
|
|
(f30-0 4096000000.0)
|
|
(f28-0 0.0)
|
|
)
|
|
(let ((s2-0 (new 'stack-no-clear 'vector)))
|
|
(set! (-> s3-0 quad) (-> (target-pos 0) quad))
|
|
(set! (-> s3-0 y) 0.0)
|
|
(eval-path-curve-div! obj s4-0 0.0 'interp)
|
|
(set! (-> s4-0 y) 0.0)
|
|
(dotimes (s1-1 (+ (-> obj curve num-cverts) -1))
|
|
(set! (-> s5-0 quad) (-> s4-0 quad))
|
|
(eval-path-curve-div! obj s4-0 (the float (+ s1-1 1)) 'interp)
|
|
(set! (-> s4-0 y) 0.0)
|
|
(let ((f0-5 (vector-segment-distance-point! s3-0 s5-0 s4-0 s2-0)))
|
|
(when (< f0-5 f30-0)
|
|
(set! f30-0 f0-5)
|
|
(set!
|
|
f28-0
|
|
(+
|
|
(/
|
|
(vector-vector-xz-distance s2-0 s5-0)
|
|
(vector-vector-xz-distance s4-0 s5-0)
|
|
)
|
|
(the float s1-1)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
f28-0
|
|
)
|
|
)
|
|
|
|
;; definition for method 20 of type path-control
|
|
(defmethod TODO-RENAME-20 path-control ((obj path-control))
|
|
(/ (TODO-RENAME-19 obj) (the float (+ (-> obj curve num-cverts) -1)))
|
|
)
|
|
|
|
;; definition for method 9 of type curve-control
|
|
;; INFO: Return type mismatch int vs none.
|
|
(defmethod dummy-9 curve-control ((obj curve-control))
|
|
(cond
|
|
((nonzero? (logand (-> obj flags) (path-control-flag not-found)))
|
|
(when
|
|
(and
|
|
(type-type? (-> obj process type) process-drawable)
|
|
*display-entity-errors*
|
|
)
|
|
(let ((s5-0 add-debug-text-3d)
|
|
(s4-0 #t)
|
|
(s3-0 68)
|
|
)
|
|
(format
|
|
(clear *temp-string*)
|
|
"curve data error in ~S"
|
|
(-> obj process name)
|
|
)
|
|
(s5-0
|
|
s4-0
|
|
(the-as bucket-id s3-0)
|
|
*temp-string*
|
|
(-> obj process root trans)
|
|
(font-color orange-red)
|
|
(the-as vector2h #f)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
((let ((a0-5 obj))
|
|
(and
|
|
*display-path-marks*
|
|
(logtest? (-> a0-5 flags) (path-control-flag display))
|
|
)
|
|
)
|
|
(if
|
|
(and
|
|
(logtest? (-> obj flags) (path-control-flag draw-line))
|
|
(> (-> obj curve num-cverts) 0)
|
|
)
|
|
(add-debug-curve2
|
|
#t
|
|
(bucket-id debug-draw1)
|
|
(the-as curve (&-> obj cverts))
|
|
(new 'static 'rgba :r #xff :g #x80 :a #x80)
|
|
#f
|
|
)
|
|
)
|
|
(dotimes (s5-1 (-> obj curve num-cverts))
|
|
(let ((s4-1 (-> obj cverts s5-1)))
|
|
(if (nonzero? (logand (-> obj flags) (path-control-flag draw-point)))
|
|
(add-debug-x
|
|
#t
|
|
(bucket-id debug-draw1)
|
|
s4-1
|
|
(new 'static 'rgba :r #xff :a #x80)
|
|
)
|
|
)
|
|
(when (nonzero? (logand (-> obj flags) (path-control-flag draw-text)))
|
|
(let ((s3-1 add-debug-text-3d)
|
|
(s2-1 #t)
|
|
(s1-0 68)
|
|
)
|
|
(format (clear *temp-string*) "~D" s5-1)
|
|
(s3-1
|
|
s2-1
|
|
(the-as bucket-id s1-0)
|
|
*temp-string*
|
|
s4-1
|
|
(font-color bright-orange-red)
|
|
(the-as vector2h #f)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
|
|
|
|
|