jak-project/goal_src/engine/nav/path.gc

468 lines
11 KiB
Common Lisp
Raw Normal View History

;;-*-Lisp-*-
2020-09-04 14:44:23 -04:00
(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)
2021-08-14 13:06:43 -04:00
(font-color orange-red)
(the-as vector2h #f)
)
)
)
)
((let ((a0-5 obj))
(and
*display-path-marks*
(nonzero? (logand (-> 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
2021-08-14 13:06:43 -04:00
(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)
2021-08-14 13:06:43 -04:00
(font-color orange-red)
(the-as vector2h #f)
)
)
)
)
((let ((a0-5 obj))
(and
*display-path-marks*
(nonzero? (logand (-> a0-5 flags) (path-control-flag display)))
)
)
(if
(and
(nonzero? (logand (-> 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
2021-08-14 13:06:43 -04:00
(font-color bright-orange-red)
(the-as vector2h #f)
)
)
)
)
)
)
)
0
(none)
)