[decompiler] Detect vector*! (#3846)

Detect use of `vector*!`, which is inlined in jak 2 and jak 3.

---------

Co-authored-by: water111 <awaterford1111445@gmail.com>
This commit is contained in:
water111
2025-01-20 12:21:28 -05:00
committed by GitHub
parent 3ee2b4423c
commit 98d6618a8b
37 changed files with 2449 additions and 3185 deletions
+1 -13
View File
@@ -25,19 +25,7 @@
;; definition for function vector*!
(defun vector*! ((arg0 vector) (arg1 vector) (arg2 vector))
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(.lvf vf4 (&-> arg1 quad))
(.lvf vf5 (&-> arg2 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> arg0 quad) vf6)
arg0
)
(vector*! arg0 arg1 arg2)
)
;; definition for function vector+*!
+92 -109
View File
@@ -7,122 +7,105 @@
;; ERROR: Unsupported inline assembly instruction kind - [jr ra]
(defmethod compute-alignment! ((this align-control))
(local-vars (a0-10 symbol) (s7-0 none) (ra-0 int))
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(update-anim-data (-> this process skel))
(let ((s5-0 (-> this process skel active-channels)))
(dotimes (s4-0 (the-as int s5-0))
(let* ((a0-4 (-> this process skel channel s4-0))
(v1-7 (-> a0-4 frame-group))
)
(case (-> a0-4 command)
(((joint-control-command stack) (joint-control-command stack1))
(update-anim-data (-> this process skel))
(let ((s5-0 (-> this process skel active-channels)))
(dotimes (s4-0 (the-as int s5-0))
(let* ((a0-4 (-> this process skel channel s4-0))
(v1-7 (-> a0-4 frame-group))
)
(else
(when (!= (-> v1-7 type) art-joint-anim)
(go process-drawable-art-error "align joint-anim")
(.lw ra-0 return-from-thread s7-0)
(.jr ra-0)
(nop!)
0
)
(case (-> a0-4 command)
(((joint-control-command stack) (joint-control-command stack1))
)
(else
(when (!= (-> v1-7 type) art-joint-anim)
(go process-drawable-art-error "align joint-anim")
(.lw ra-0 return-from-thread s7-0)
(.jr ra-0)
(nop!)
0
)
)
)
)
)
(let* ((a0-9 (-> this process skel root-channel 0))
(v1-18 (-> a0-9 frame-group))
(f0-0 (-> a0-9 frame-num))
)
(= (-> a0-9 num-func) num-func-loop!)
(cond
((or (not v1-18) (!= (-> this frame-group) v1-18))
(set! a0-10 #t)
)
((= (-> a0-9 num-func) num-func-loop!)
(set! a0-10 (< (* (-> a0-9 param 0) (- f0-0 (-> this frame-num))) 0.0))
)
(else
(set! a0-10 (= f0-0 0.0))
)
)
(if a0-10
(logior! (-> this flags) (align-flags disabled))
(logclear! (-> this flags) (align-flags disabled))
)
(set! (-> this frame-group) v1-18)
(set! (-> this frame-num) f0-0)
)
(mem-copy! (the-as pointer (-> this transform 1)) (the-as pointer (-> this transform)) 48)
(quaternion-copy! (the-as quaternion (-> this transform 1 rot)) (-> this align quat))
(set! (-> this transform 1 scale quad) (-> this align scale quad))
(let* ((a2-5 (-> this matrix 1))
(a3-0 (-> this matrix))
(v1-21 (-> a3-0 0 quad 0))
(a0-19 (-> a3-0 0 quad 1))
(a1-13 (-> a3-0 0 quad 2))
(a3-1 (-> a3-0 0 trans quad))
)
(set! (-> a2-5 quad 0) v1-21)
(set! (-> a2-5 quad 1) a0-19)
(set! (-> a2-5 quad 2) a1-13)
(set! (-> a2-5 trans quad) a3-1)
)
(let ((s5-1 (-> this process node-list data 1)))
(cspace<-matrix-no-push-joint! s5-1 (-> this process skel))
(let* ((v1-25 (-> this matrix))
(a3-2 (-> s5-1 bone transform))
(a0-22 (-> a3-2 quad 0))
(a1-15 (-> a3-2 quad 1))
(a2-6 (-> a3-2 quad 2))
(a3-3 (-> a3-2 trans quad))
)
(set! (-> v1-25 0 quad 0) a0-22)
(set! (-> v1-25 0 quad 1) a1-15)
(set! (-> v1-25 0 quad 2) a2-6)
(set! (-> v1-25 0 trans quad) a3-3)
)
(let ((v1-26 (-> this transform)))
(let ((a0-24 (-> s5-1 bone transform trans))
(a1-18 (-> this process root scale))
)
(.lvf vf4 (&-> a0-24 quad))
(.lvf vf5 (&-> a1-18 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> v1-26 0 trans quad) vf6)
)
)
(vector-!
(the-as vector (-> this delta))
(the-as vector (-> this transform))
(the-as vector (-> this transform 1))
)
(set-vector!
(-> this align scale)
(vector-length (the-as vector (-> this matrix)))
(vector-length (-> this matrix 0 vector 1))
(vector-length (-> this matrix 0 vector 2))
1.0
)
(vector-! (-> this delta scale) (-> this align scale) (-> this transform 1 scale))
(let ((a2-7 (matrix-inv-scale! (new 'stack-no-clear 'matrix) (-> this align scale))))
(quaternion-normalize!
(matrix->quaternion (-> this align quat) (matrix*! a2-7 (the-as matrix (-> this matrix)) a2-7))
)
)
(let ((a1-27 (quaternion-inverse! (new 'stack-no-clear 'quaternion) (the-as quaternion (-> this transform 1 rot))))
)
(quaternion-normalize! (quaternion*! (-> this delta quat) a1-27 (-> this align quat)))
)
(-> this delta)
)
(let* ((a0-9 (-> this process skel root-channel 0))
(v1-18 (-> a0-9 frame-group))
(f0-0 (-> a0-9 frame-num))
)
(= (-> a0-9 num-func) num-func-loop!)
(cond
((or (not v1-18) (!= (-> this frame-group) v1-18))
(set! a0-10 #t)
)
((= (-> a0-9 num-func) num-func-loop!)
(set! a0-10 (< (* (-> a0-9 param 0) (- f0-0 (-> this frame-num))) 0.0))
)
(else
(set! a0-10 (= f0-0 0.0))
)
)
(if a0-10
(logior! (-> this flags) (align-flags disabled))
(logclear! (-> this flags) (align-flags disabled))
)
(set! (-> this frame-group) v1-18)
(set! (-> this frame-num) f0-0)
)
(mem-copy! (the-as pointer (-> this transform 1)) (the-as pointer (-> this transform)) 48)
(quaternion-copy! (the-as quaternion (-> this transform 1 rot)) (-> this align quat))
(set! (-> this transform 1 scale quad) (-> this align scale quad))
(let* ((a2-5 (-> this matrix 1))
(a3-0 (-> this matrix))
(v1-21 (-> a3-0 0 quad 0))
(a0-19 (-> a3-0 0 quad 1))
(a1-13 (-> a3-0 0 quad 2))
(a3-1 (-> a3-0 0 trans quad))
)
(set! (-> a2-5 quad 0) v1-21)
(set! (-> a2-5 quad 1) a0-19)
(set! (-> a2-5 quad 2) a1-13)
(set! (-> a2-5 trans quad) a3-1)
)
(let ((s5-1 (-> this process node-list data 1)))
(cspace<-matrix-no-push-joint! s5-1 (-> this process skel))
(let* ((v1-25 (-> this matrix))
(a3-2 (-> s5-1 bone transform))
(a0-22 (-> a3-2 quad 0))
(a1-15 (-> a3-2 quad 1))
(a2-6 (-> a3-2 quad 2))
(a3-3 (-> a3-2 trans quad))
)
(set! (-> v1-25 0 quad 0) a0-22)
(set! (-> v1-25 0 quad 1) a1-15)
(set! (-> v1-25 0 quad 2) a2-6)
(set! (-> v1-25 0 trans quad) a3-3)
)
(vector*! (the-as vector (-> this transform)) (-> s5-1 bone transform trans) (-> this process root scale))
)
(vector-!
(the-as vector (-> this delta))
(the-as vector (-> this transform))
(the-as vector (-> this transform 1))
)
(set-vector!
(-> this align scale)
(vector-length (the-as vector (-> this matrix)))
(vector-length (-> this matrix 0 vector 1))
(vector-length (-> this matrix 0 vector 2))
1.0
)
(vector-! (-> this delta scale) (-> this align scale) (-> this transform 1 scale))
(let ((a2-7 (matrix-inv-scale! (new 'stack-no-clear 'matrix) (-> this align scale))))
(quaternion-normalize!
(matrix->quaternion (-> this align quat) (matrix*! a2-7 (the-as matrix (-> this matrix)) a2-7))
)
)
(let ((a1-27 (quaternion-inverse! (new 'stack-no-clear 'quaternion) (the-as quaternion (-> this transform 1 rot))))
)
(quaternion-normalize! (quaternion*! (-> this delta quat) a1-27 (-> this align quat)))
)
(-> this delta)
)
;; definition for method 12 of type align-control
+52 -67
View File
@@ -637,80 +637,65 @@ Then, apply the normal parented transform."
;; WARN: Return type mismatch object vs none.
(defun joint-mod-blend-world-callback ((arg0 cspace) (arg1 transformq))
"Callback for joint-mod-blend-local. See comment on that type."
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(let ((gp-0 (the-as joint-mod-blend-world (-> arg0 param1))))
(cond
((-> gp-0 enable)
(let ((f30-0 (if (logtest? (-> gp-0 blend-flags) (joint-mod-blend-flags trans))
(-> gp-0 blend)
0.0
)
)
(f28-0 (if (logtest? (-> gp-0 blend-flags) (joint-mod-blend-flags scale))
(-> gp-0 blend)
0.0
)
)
(f26-0 (if (logtest? (-> gp-0 blend-flags) (joint-mod-blend-flags rotation))
(-> gp-0 blend)
0.0
)
)
(s0-0 (new 'stack-no-clear 'matrix))
(s2-0 (new 'stack-no-clear 'matrix))
(s3-0 (new 'stack-no-clear 'quaternion))
)
(let ((s1-0 (new 'stack-no-clear 'vector)))
(if (= (-> arg0 parent bone scale w) 0.0)
(matrix<-transformq! s0-0 arg1)
(matrix<-parented-transformq! s0-0 arg1 (-> arg0 parent bone scale))
)
(matrix*! s2-0 s0-0 (-> arg0 parent bone transform))
(set-vector!
s1-0
(vector-length (the-as vector (-> s2-0 vector)))
(vector-length (-> s2-0 vector 1))
(vector-length (-> s2-0 vector 2))
1.0
)
(let ((v1-19 (-> gp-0 blend-transform scale)))
(let ((a0-11 (-> arg1 scale)))
(.lvf vf4 (&-> s1-0 quad))
(.lvf vf5 (&-> a0-11 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> v1-19 quad) vf6)
)
(let ((gp-0 (the-as joint-mod-blend-world (-> arg0 param1))))
(cond
((-> gp-0 enable)
(let ((f30-0 (if (logtest? (-> gp-0 blend-flags) (joint-mod-blend-flags trans))
(-> gp-0 blend)
0.0
)
)
(f28-0 (if (logtest? (-> gp-0 blend-flags) (joint-mod-blend-flags scale))
(-> gp-0 blend)
0.0
)
)
(f26-0 (if (logtest? (-> gp-0 blend-flags) (joint-mod-blend-flags rotation))
(-> gp-0 blend)
0.0
)
)
(s0-0 (new 'stack-no-clear 'matrix))
(s2-0 (new 'stack-no-clear 'matrix))
(s3-0 (new 'stack-no-clear 'quaternion))
)
(vector-lerp!
(the-as vector (-> gp-0 blend-transform))
(-> s2-0 trans)
(the-as vector (-> gp-0 transform))
f30-0
)
(vector-lerp! (-> gp-0 blend-transform scale) (-> gp-0 blend-transform scale) (-> gp-0 transform scale) f28-0)
(quaternion-slerp!
(-> gp-0 blend-transform quat)
(matrix->quaternion s3-0 s2-0)
(-> gp-0 transform quat)
f26-0
(let ((s1-0 (new 'stack-no-clear 'vector)))
(if (= (-> arg0 parent bone scale w) 0.0)
(matrix<-transformq! s0-0 arg1)
(matrix<-parented-transformq! s0-0 arg1 (-> arg0 parent bone scale))
)
(matrix*! s2-0 s0-0 (-> arg0 parent bone transform))
(set-vector!
s1-0
(vector-length (the-as vector (-> s2-0 vector)))
(vector-length (-> s2-0 vector 1))
(vector-length (-> s2-0 vector 2))
1.0
)
(vector*! (-> gp-0 blend-transform scale) s1-0 (-> arg1 scale))
)
(vector-lerp!
(the-as vector (-> gp-0 blend-transform))
(-> s2-0 trans)
(the-as vector (-> gp-0 transform))
f30-0
)
(vector-lerp! (-> gp-0 blend-transform scale) (-> gp-0 blend-transform scale) (-> gp-0 transform scale) f28-0)
(quaternion-slerp!
(-> gp-0 blend-transform quat)
(matrix->quaternion s3-0 s2-0)
(-> gp-0 transform quat)
f26-0
)
(cspace<-transformq! arg0 (-> gp-0 blend-transform))
)
(else
(cspace<-parented-transformq-joint! arg0 arg1)
)
(cspace<-transformq! arg0 (-> gp-0 blend-transform))
)
(else
(cspace<-parented-transformq-joint! arg0 arg1)
)
)
(none)
)
(none)
)
;; definition for method 0 of type joint-mod-blend-world
+338 -423
View File
@@ -337,103 +337,52 @@
(sv-168 vector)
(sv-172 symbol)
)
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(set! sv-16 (the-as joint-mod (-> arg0 param1)))
(let ((a0-1 (-> arg1 scale)))
(let ((v1-1 (-> arg1 scale))
(a2-1 (-> sv-16 scale))
)
(.lvf vf4 (&-> v1-1 quad))
(.lvf vf5 (&-> a2-1 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a0-1 quad) vf6)
)
(cspace<-parented-transformq-joint! arg0 arg1)
(let ((s5-0 (-> arg0 bone transform)))
(let ((s4-0 (matrix->quat s5-0 (new 'stack-no-clear 'quaternion))))
(set! sv-64 (matrix->trans s5-0 (new 'stack-no-clear 'vector)))
(quaternion-rotate-y! s4-0 s4-0 (-> sv-16 twist z))
(set! sv-96 (quaternion-copy! (new 'stack-no-clear 'quaternion) s4-0))
(when (!= (-> sv-16 flex-blend) 0.0)
(set! sv-160 (vector-y-quaternion! (new 'stack-no-clear 'vector) sv-96))
(set! sv-164 (vector-z-quaternion! (new 'stack-no-clear 'vector) sv-96))
(set! sv-168 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> sv-16 target) sv-64) 1.0))
(set! sv-172 (the-as symbol #f))
(let* ((f30-0 (vector-y-angle sv-164))
(a0-13 (vector-flatten! (new 'stack-no-clear 'vector) sv-168 sv-160))
(f0-2 (vector-y-angle a0-13))
(f0-3 (deg-diff f30-0 f0-2))
(f30-1 (* f0-3 (-> sv-16 blend)))
)
(let ((f28-0 (fmax (fmin f30-1 (-> sv-16 twist-max y)) (- (-> sv-16 twist-max y)))))
(if (or (!= f30-1 f28-0) (= (-> sv-16 blend) 0.0))
(logclear! (-> sv-16 track-mode) (track-mode lock-on))
)
(cond
((or (< (-> sv-16 ignore-angle) (fabs f0-3))
(< (-> sv-16 twist-max w) (vector-vector-distance (-> sv-16 target) sv-64))
)
(set! f30-1 0.0)
(set! f28-0 0.0)
(set! sv-172 #t)
)
((< 5461.3335 (fabs (deg-diff f30-1 f28-0)))
(set! (-> sv-16 blend) 0.0001)
)
((< 182.04445 (fabs (deg-diff f30-1 f28-0)))
(logclear! (-> sv-16 track-mode) (track-mode track-x))
)
(set! sv-16 (the-as joint-mod (-> arg0 param1)))
(vector*! (-> arg1 scale) (-> arg1 scale) (-> sv-16 scale))
(cspace<-parented-transformq-joint! arg0 arg1)
(let ((s5-0 (-> arg0 bone transform)))
(let ((s4-0 (matrix->quat s5-0 (new 'stack-no-clear 'quaternion))))
(set! sv-64 (matrix->trans s5-0 (new 'stack-no-clear 'vector)))
(quaternion-rotate-y! s4-0 s4-0 (-> sv-16 twist z))
(set! sv-96 (quaternion-copy! (new 'stack-no-clear 'quaternion) s4-0))
(when (!= (-> sv-16 flex-blend) 0.0)
(set! sv-160 (vector-y-quaternion! (new 'stack-no-clear 'vector) sv-96))
(set! sv-164 (vector-z-quaternion! (new 'stack-no-clear 'vector) sv-96))
(set! sv-168 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> sv-16 target) sv-64) 1.0))
(set! sv-172 (the-as symbol #f))
(let* ((f30-0 (vector-y-angle sv-164))
(a0-14 (vector-flatten! (new 'stack-no-clear 'vector) sv-168 sv-160))
(f0-2 (vector-y-angle a0-14))
(f0-3 (deg-diff f30-0 f0-2))
(f30-1 (* f0-3 (-> sv-16 blend)))
)
(let ((f28-0 (fmax (fmin f30-1 (-> sv-16 twist-max y)) (- (-> sv-16 twist-max y)))))
(if (or (!= f30-1 f28-0) (= (-> sv-16 blend) 0.0))
(logclear! (-> sv-16 track-mode) (track-mode lock-on))
)
(if (or (and (logtest? (-> sv-16 track-mode) (track-mode track-y)) (= f30-1 f28-0))
(< (-> sv-16 twist-max y) (fabs (-> sv-16 twist y)))
)
(set! (-> sv-16 twist y)
(deg-seek (-> sv-16 twist y) f28-0 (* (fabs (deg-diff f28-0 (-> sv-16 twist y)))
(if (logtest? (-> sv-16 track-mode) (track-mode lock-on))
1.0
(-> sv-16 twist-speed-y)
)
(-> self clock time-adjust-ratio)
)
)
)
)
(cond
((or (< (-> sv-16 ignore-angle) (fabs f0-3))
(< (-> sv-16 twist-max w) (vector-vector-distance (-> sv-16 target) sv-64))
)
(set! f30-1 0.0)
(set! f28-0 0.0)
(set! sv-172 #t)
)
((< 5461.3335 (fabs (deg-diff f30-1 f28-0)))
(set! (-> sv-16 blend) 0.0001)
)
((< 182.04445 (fabs (deg-diff f30-1 f28-0)))
(logclear! (-> sv-16 track-mode) (track-mode track-x))
)
)
(if (and (< (fabs (deg-diff f30-1 (-> sv-16 twist y))) 728.1778) (and (not sv-172) (!= (-> sv-16 blend) 0.0)))
(logior! (-> sv-16 track-mode) (track-mode lock-on))
)
)
(quaternion-rotate-local-y! sv-96 sv-96 (-> sv-16 twist y))
(let* ((s3-1 (vector-x-quaternion! (new 'stack-no-clear 'vector) sv-96))
(f30-2 (vector-x-angle sv-164))
(s3-2 (vector-flatten! (new 'stack-no-clear 'vector) sv-168 s3-1))
(f0-24 (vector-x-angle s3-2))
(f30-3 (fmax
(fmin (* (- (deg-diff f30-2 f0-24)) (-> sv-16 blend)) (-> sv-16 twist-max x))
(- (-> sv-16 twist-max x))
)
)
)
(if (or (< (vector-dot s3-2 sv-164) 0.1)
(< (-> sv-16 twist-max z) (vector-vector-distance (-> sv-16 target) sv-64))
(if (or (and (logtest? (-> sv-16 track-mode) (track-mode track-y)) (= f30-1 f28-0))
(< (-> sv-16 twist-max y) (fabs (-> sv-16 twist y)))
)
(set! f30-3 0.0)
)
(if (or (logtest? (-> sv-16 track-mode) (track-mode track-x))
(< (-> sv-16 twist-max x) (fabs (-> sv-16 twist x)))
)
(set! (-> sv-16 twist x)
(deg-seek (-> sv-16 twist x) f30-3 (* (fabs (deg-diff f30-3 (-> sv-16 twist x)))
(set! (-> sv-16 twist y)
(deg-seek (-> sv-16 twist y) f28-0 (* (fabs (deg-diff f28-0 (-> sv-16 twist y)))
(if (logtest? (-> sv-16 track-mode) (track-mode lock-on))
1.0
(-> sv-16 twist-speed-x)
(-> sv-16 twist-speed-y)
)
(-> self clock time-adjust-ratio)
)
@@ -441,55 +390,89 @@
)
)
)
(quaternion-rotate-x! sv-96 sv-96 (-> sv-16 twist x))
(quaternion-normalize! (quaternion*! sv-96 sv-96 (-> sv-16 quat)))
(if (and (< (fabs (deg-diff f30-1 (-> sv-16 twist y))) 728.1778) (and (not sv-172) (!= (-> sv-16 blend) 0.0)))
(logior! (-> sv-16 track-mode) (track-mode lock-on))
)
)
(let ((a1-27 (quaternion-slerp! (new 'stack-no-clear 'quaternion) s4-0 sv-96 (-> sv-16 flex-blend))))
(matrix<-quat s5-0 a1-27)
(quaternion-rotate-local-y! sv-96 sv-96 (-> sv-16 twist y))
(let* ((s3-1 (vector-x-quaternion! (new 'stack-no-clear 'vector) sv-96))
(f30-2 (vector-x-angle sv-164))
(s3-2 (vector-flatten! (new 'stack-no-clear 'vector) sv-168 s3-1))
(f0-24 (vector-x-angle s3-2))
(f30-3 (fmax
(fmin (* (- (deg-diff f30-2 f0-24)) (-> sv-16 blend)) (-> sv-16 twist-max x))
(- (-> sv-16 twist-max x))
)
)
)
(if (or (< (vector-dot s3-2 sv-164) 0.1)
(< (-> sv-16 twist-max z) (vector-vector-distance (-> sv-16 target) sv-64))
)
(set! f30-3 0.0)
)
(if (or (logtest? (-> sv-16 track-mode) (track-mode track-x))
(< (-> sv-16 twist-max x) (fabs (-> sv-16 twist x)))
)
(set! (-> sv-16 twist x)
(deg-seek (-> sv-16 twist x) f30-3 (* (fabs (deg-diff f30-3 (-> sv-16 twist x)))
(if (logtest? (-> sv-16 track-mode) (track-mode lock-on))
1.0
(-> sv-16 twist-speed-x)
)
(-> self clock time-adjust-ratio)
)
)
)
)
)
(quaternion-rotate-x! sv-96 sv-96 (-> sv-16 twist x))
(quaternion-normalize! (quaternion*! sv-96 sv-96 (-> sv-16 quat)))
)
(let ((f30-4 (-> sv-16 trans x))
(s4-1 (-> s5-0 vector 1))
(v1-97 (vector<-matrix! (new 'stack-no-clear 'vector) s5-0))
)
(let ((f0-43 (- f30-4 (-> v1-97 y))))
(if (< 614.4 (fabs f0-43))
(+! (-> sv-16 trans z) (* 8.0 f0-43))
)
)
(+! (-> sv-16 trans z) (* -260.0 (seconds-per-frame) (-> sv-16 trans y)))
(let ((f0-48 (-> sv-16 trans y)))
(+! (-> sv-16 trans y) (* (-> sv-16 trans z) (seconds-per-frame)))
(set! (-> sv-16 trans y) (* 0.95 (-> sv-16 trans y)))
(when (< (* f0-48 (-> sv-16 trans y)) 0.0)
(set! (-> sv-16 trans y) 0.0)
(set! (-> sv-16 trans z) 0.0)
)
)
(cond
((< 409.6 (-> sv-16 trans y))
(set! (-> sv-16 trans y) 409.6)
(set! (-> sv-16 trans z) 0.0)
)
((< (-> sv-16 trans y) -409.6)
(set! (-> sv-16 trans y) -409.6)
(set! (-> sv-16 trans z) 0.0)
)
)
(set! (-> sv-16 trans x) (-> v1-97 y))
(let ((f0-60 (* (-> sv-16 trans y) (-> sv-16 flex-blend))))
(if (!= f0-60 0.0)
(vector+float*! (-> s5-0 trans) v1-97 s4-1 f0-60)
)
)
(let ((a1-27 (quaternion-slerp! (new 'stack-no-clear 'quaternion) s4-0 sv-96 (-> sv-16 flex-blend))))
(matrix<-quat s5-0 a1-27)
)
)
(if (-> sv-16 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
(let ((f30-4 (-> sv-16 trans x))
(s4-1 (-> s5-0 vector 1))
(v1-97 (vector<-matrix! (new 'stack-no-clear 'vector) s5-0))
)
(let ((f0-43 (- f30-4 (-> v1-97 y))))
(if (< 614.4 (fabs f0-43))
(+! (-> sv-16 trans z) (* 8.0 f0-43))
)
)
0
(none)
(+! (-> sv-16 trans z) (* -260.0 (seconds-per-frame) (-> sv-16 trans y)))
(let ((f0-48 (-> sv-16 trans y)))
(+! (-> sv-16 trans y) (* (-> sv-16 trans z) (seconds-per-frame)))
(set! (-> sv-16 trans y) (* 0.95 (-> sv-16 trans y)))
(when (< (* f0-48 (-> sv-16 trans y)) 0.0)
(set! (-> sv-16 trans y) 0.0)
(set! (-> sv-16 trans z) 0.0)
)
)
(cond
((< 409.6 (-> sv-16 trans y))
(set! (-> sv-16 trans y) 409.6)
(set! (-> sv-16 trans z) 0.0)
)
((< (-> sv-16 trans y) -409.6)
(set! (-> sv-16 trans y) -409.6)
(set! (-> sv-16 trans z) 0.0)
)
)
(set! (-> sv-16 trans x) (-> v1-97 y))
(let ((f0-60 (* (-> sv-16 trans y) (-> sv-16 flex-blend))))
(if (!= f0-60 0.0)
(vector+float*! (-> s5-0 trans) v1-97 s4-1 f0-60)
)
)
)
)
(if (-> sv-16 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
)
0
(none)
)
;; definition for function joint-mod-gun-look-at-handler
@@ -819,181 +802,164 @@
;; ERROR: Unsupported inline assembly instruction kind - [madd.s f0, f2, f5]
(defbehavior joint-mod-look-at-handler process ((arg0 cspace) (arg1 transformq))
(local-vars (f0-1 float) (sv-80 symbol) (sv-144 vector) (sv-160 vector) (sv-176 float))
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(let ((gp-0 (the-as joint-mod (-> arg0 param1))))
(cspace<-parented-transformq-joint! arg0 arg1)
(let ((s1-0 (vector-normalize-copy!
(new 'stack-no-clear 'vector)
(-> gp-0 process node-list data 0 bone transform vector 1)
1.0
)
)
(s2-0 (matrix->trans (-> arg0 bone transform) (new 'stack-no-clear 'vector)))
(s3-0 (vector-normalize! (-> arg0 bone transform vector (-> gp-0 nose)) 1.0))
(s0-0 (vector-normalize! (-> arg0 bone transform vector (-> gp-0 ear)) 1.0))
)
(set! sv-144 (vector-normalize!
(vector-cross!
(new 'stack-no-clear 'vector)
(-> arg0 bone transform vector (-> gp-0 up))
(-> arg0 bone transform vector (-> gp-0 nose))
)
1.0
)
)
(let ((s2-1 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> gp-0 target) s2-0) 1.0)))
(set! sv-160 (-> gp-0 process node-list data (-> gp-0 base-joint) bone transform vector (-> gp-0 base-nose)))
(set! sv-80 (the-as symbol #f))
(let ((f0-0 (-> sv-144 x))
(f1-0 (-> sv-144 y))
(f2-0 (-> sv-144 z))
(f3-0 (-> s0-0 x))
(f4-0 (-> s0-0 y))
(f5-0 (-> s0-0 z))
)
(.mula.s f0-0 f3-0)
(.madda.s f1-0 f4-0)
(.madd.s f0-1 f2-0 f5-0)
)
(if (< f0-1 0.0)
(set! sv-80 #t)
)
(let* ((f30-0 (vector-y-angle s3-0))
(a0-18 (vector-flatten! (new-stack-vector0) s2-1 s1-0))
(f0-3 (vector-y-angle a0-18))
(f30-1 (deg-diff f30-0 f0-3))
(f0-4 (if (= (-> gp-0 base-joint) (+ (-> arg0 joint number) 1))
0.0
(deg-diff (vector-y-angle s3-0) (vector-y-angle sv-160))
)
)
)
(if (< (-> gp-0 ignore-angle) (fabs f30-1))
(set! f30-1 0.0)
)
(let ((f30-2
(fmax
(fmin (* f30-1 (-> gp-0 blend) (-> gp-0 flex-blend)) (+ (-> gp-0 twist-max y) (* f0-4 (-> gp-0 flex-blend))))
(+ (- (-> gp-0 twist-max y)) (* f0-4 (-> gp-0 flex-blend)))
)
)
)
(when (and (-> gp-0 shutting-down?) (< (fabs (- (-> gp-0 twist y) f30-2)) 18.204445))
(if (and (= (-> gp-0 scale x) 1.0) (= (-> gp-0 scale y) 1.0) (= (-> gp-0 scale z) 1.0))
(mode-set! gp-0 (joint-mod-mode reset))
(mode-set! gp-0 (joint-mod-mode rotate2))
)
)
(let ((s1-2 deg-seek)
(s0-2 (-> gp-0 twist y))
)
(set! sv-176 f30-2)
(let ((a2-3 (* (fabs (deg-diff f30-2 (-> gp-0 twist y))) (-> gp-0 twist-speed-y) (-> self clock time-adjust-ratio)))
)
(set! (-> gp-0 twist y) (s1-2 s0-2 sv-176 a2-3))
(let ((gp-0 (the-as joint-mod (-> arg0 param1))))
(cspace<-parented-transformq-joint! arg0 arg1)
(let ((s1-0 (vector-normalize-copy!
(new 'stack-no-clear 'vector)
(-> gp-0 process node-list data 0 bone transform vector 1)
1.0
)
)
)
)
0.0
(let ((f0-25 (if sv-80
(- (-> gp-0 twist y))
(-> gp-0 twist y)
)
(s2-0 (matrix->trans (-> arg0 bone transform) (new 'stack-no-clear 'vector)))
(s3-0 (vector-normalize! (-> arg0 bone transform vector (-> gp-0 nose)) 1.0))
(s0-0 (vector-normalize! (-> arg0 bone transform vector (-> gp-0 ear)) 1.0))
)
(set! sv-144 (vector-normalize!
(vector-cross!
(new 'stack-no-clear 'vector)
(-> arg0 bone transform vector (-> gp-0 up))
(-> arg0 bone transform vector (-> gp-0 nose))
)
(v1-49 (-> gp-0 up))
)
(cond
((zero? v1-49)
(quaternion-rotate-x! (-> arg1 quat) (-> arg1 quat) f0-25)
)
((= v1-49 1)
(quaternion-rotate-local-y! (-> arg1 quat) (-> arg1 quat) f0-25)
)
(else
(quaternion-rotate-z! (-> arg1 quat) (-> arg1 quat) f0-25)
)
)
)
(let* ((s1-3
(vector-normalize-copy!
(new 'stack-no-clear 'vector)
(the-as vector (-> gp-0 process node-list data 0 bone transform))
1.0
)
)
(f30-3 (vector-x-angle s3-0))
(s2-2 (vector-flatten! (new-stack-vector0) s2-1 s1-3))
(f0-26 (vector-x-angle s2-2))
(f0-32
(fmax
(fmin (* (- (deg-diff f30-3 f0-26)) (-> gp-0 blend) (-> gp-0 flex-blend)) (-> gp-0 twist-max x))
(- (-> gp-0 twist-max x))
)
(let ((s2-1 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> gp-0 target) s2-0) 1.0)))
(set! sv-160 (-> gp-0 process node-list data (-> gp-0 base-joint) bone transform vector (-> gp-0 base-nose)))
(set! sv-80 (the-as symbol #f))
(let ((f0-0 (-> sv-144 x))
(f1-0 (-> sv-144 y))
(f2-0 (-> sv-144 z))
(f3-0 (-> s0-0 x))
(f4-0 (-> s0-0 y))
(f5-0 (-> s0-0 z))
)
(.mula.s f0-0 f3-0)
(.madda.s f1-0 f4-0)
(.madd.s f0-1 f2-0 f5-0)
)
(if (< f0-1 0.0)
(set! sv-80 #t)
)
(let* ((f30-0 (vector-y-angle s3-0))
(a0-18 (vector-flatten! (new-stack-vector0) s2-1 s1-0))
(f0-3 (vector-y-angle a0-18))
(f30-1 (deg-diff f30-0 f0-3))
(f0-4 (if (= (-> gp-0 base-joint) (+ (-> arg0 joint number) 1))
0.0
(deg-diff (vector-y-angle s3-0) (vector-y-angle sv-160))
)
)
)
)
(if (< (vector-dot s2-2 s3-0) 0.1)
(set! f0-32 0.0)
)
(set! (-> gp-0 twist x)
(deg-seek
(-> gp-0 twist x)
f0-32
(* (fabs (deg-diff f0-32 (-> gp-0 twist x))) (-> gp-0 twist-speed-x) (-> self clock time-adjust-ratio))
)
(if (< (-> gp-0 ignore-angle) (fabs f30-1))
(set! f30-1 0.0)
)
(let ((f30-2
(fmax
(fmin (* f30-1 (-> gp-0 blend) (-> gp-0 flex-blend)) (+ (-> gp-0 twist-max y) (* f0-4 (-> gp-0 flex-blend))))
(+ (- (-> gp-0 twist-max y)) (* f0-4 (-> gp-0 flex-blend)))
)
)
)
)
)
(let ((v1-60 (-> gp-0 ear)))
(cond
((zero? v1-60)
(quaternion-rotate-x! (-> arg1 quat) (-> arg1 quat) (-> gp-0 twist x))
)
((= v1-60 1)
(quaternion-rotate-local-y! (-> arg1 quat) (-> arg1 quat) (-> gp-0 twist x))
)
(else
(quaternion-rotate-z! (-> arg1 quat) (-> arg1 quat) (-> gp-0 twist x))
)
)
)
(vector+! (-> arg1 trans) (-> arg1 trans) (-> gp-0 trans))
(quaternion-normalize! (quaternion*! (-> arg1 quat) (-> arg1 quat) (-> gp-0 quat)))
(let ((a1-36 (-> arg1 scale)))
(let ((v1-63 (-> arg1 scale))
(a0-46 (-> gp-0 scale))
)
(when (and (-> gp-0 shutting-down?) (< (fabs (- (-> gp-0 twist y) f30-2)) 18.204445))
(if (and (= (-> gp-0 scale x) 1.0) (= (-> gp-0 scale y) 1.0) (= (-> gp-0 scale z) 1.0))
(mode-set! gp-0 (joint-mod-mode reset))
(mode-set! gp-0 (joint-mod-mode rotate2))
)
)
(let ((s1-2 deg-seek)
(s0-2 (-> gp-0 twist y))
)
(set! sv-176 f30-2)
(let ((a2-3 (* (fabs (deg-diff f30-2 (-> gp-0 twist y))) (-> gp-0 twist-speed-y) (-> self clock time-adjust-ratio)))
)
(set! (-> gp-0 twist y) (s1-2 s0-2 sv-176 a2-3))
)
)
(.lvf vf4 (&-> v1-63 quad))
(.lvf vf5 (&-> a0-46 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a1-36 quad) vf6)
)
(cspace<-parented-transformq-joint! arg0 arg1)
(if (-> gp-0 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
)
(if (and (= (-> gp-0 process type) target) (!= (-> gp-0 blend) 0.0))
(add-debug-text-sphere
*display-target-marks*
(bucket-id debug-no-zbuf1)
(-> gp-0 target)
(meters 0.2)
"look"
(new 'static 'rgba :r #xff :g #xff :a #x80)
)
)
0.0
(let ((f0-25 (if sv-80
(- (-> gp-0 twist y))
(-> gp-0 twist y)
)
)
(v1-49 (-> gp-0 up))
)
(cond
((zero? v1-49)
(quaternion-rotate-x! (-> arg1 quat) (-> arg1 quat) f0-25)
)
((= v1-49 1)
(quaternion-rotate-local-y! (-> arg1 quat) (-> arg1 quat) f0-25)
)
(else
(quaternion-rotate-z! (-> arg1 quat) (-> arg1 quat) f0-25)
)
)
)
(let* ((s1-3
(vector-normalize-copy!
(new 'stack-no-clear 'vector)
(the-as vector (-> gp-0 process node-list data 0 bone transform))
1.0
)
)
(f30-3 (vector-x-angle s3-0))
(s2-2 (vector-flatten! (new-stack-vector0) s2-1 s1-3))
(f0-26 (vector-x-angle s2-2))
(f0-32
(fmax
(fmin (* (- (deg-diff f30-3 f0-26)) (-> gp-0 blend) (-> gp-0 flex-blend)) (-> gp-0 twist-max x))
(- (-> gp-0 twist-max x))
)
)
)
(if (< (vector-dot s2-2 s3-0) 0.1)
(set! f0-32 0.0)
)
(set! (-> gp-0 twist x)
(deg-seek
(-> gp-0 twist x)
f0-32
(* (fabs (deg-diff f0-32 (-> gp-0 twist x))) (-> gp-0 twist-speed-x) (-> self clock time-adjust-ratio))
)
)
)
)
)
0
(none)
(let ((v1-60 (-> gp-0 ear)))
(cond
((zero? v1-60)
(quaternion-rotate-x! (-> arg1 quat) (-> arg1 quat) (-> gp-0 twist x))
)
((= v1-60 1)
(quaternion-rotate-local-y! (-> arg1 quat) (-> arg1 quat) (-> gp-0 twist x))
)
(else
(quaternion-rotate-z! (-> arg1 quat) (-> arg1 quat) (-> gp-0 twist x))
)
)
)
(vector+! (-> arg1 trans) (-> arg1 trans) (-> gp-0 trans))
(quaternion-normalize! (quaternion*! (-> arg1 quat) (-> arg1 quat) (-> gp-0 quat)))
(vector*! (-> arg1 scale) (-> arg1 scale) (-> gp-0 scale))
(cspace<-parented-transformq-joint! arg0 arg1)
(if (-> gp-0 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
)
(if (and (= (-> gp-0 process type) target) (!= (-> gp-0 blend) 0.0))
(add-debug-text-sphere
*display-target-marks*
(bucket-id debug-no-zbuf1)
(-> gp-0 target)
(meters 0.2)
"look"
(new 'static 'rgba :r #xff :g #xff :a #x80)
)
)
)
0
(none)
)
;; definition for function joint-mod-polar-look-at-guts
@@ -1242,114 +1208,80 @@
;; definition for function joint-mod-rotate-handler
;; WARN: Return type mismatch int vs none.
(defbehavior joint-mod-rotate-handler process ((arg0 cspace) (arg1 transformq))
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(let ((s5-0 (the-as joint-mod (-> arg0 param1))))
(let ((s3-0 (new 'static 'inline-array quaternion 3
(new 'static 'quaternion :x 1.0 :w 1.0)
(new 'static 'quaternion :y 1.0 :w 1.0)
(new 'static 'quaternion :z 1.0 :w 1.0)
)
(let ((s5-0 (the-as joint-mod (-> arg0 param1))))
(let ((s3-0 (new 'static 'inline-array quaternion 3
(new 'static 'quaternion :x 1.0 :w 1.0)
(new 'static 'quaternion :y 1.0 :w 1.0)
(new 'static 'quaternion :z 1.0 :w 1.0)
)
)
(if (not (logtest? (-> s5-0 track-mode) (track-mode no-trans)))
(vector+! (-> arg1 trans) (-> arg1 trans) (-> s5-0 trans))
)
(when (not (logtest? (-> s5-0 track-mode) (track-mode no-rotate)))
(let* ((v1-9 (-> s3-0 (-> s5-0 ear)))
(a1-4 (quaternion-axis-angle!
(new 'stack-no-clear 'quaternion)
(-> v1-9 x)
(-> v1-9 y)
(-> v1-9 z)
(* (-> s5-0 twist x) (-> s5-0 blend) (-> s5-0 flex-blend))
)
)
)
(quaternion-normalize! (quaternion*! (-> arg1 quat) a1-4 (-> arg1 quat)))
)
(let* ((v1-13 (-> s3-0 (-> s5-0 up)))
(a1-6 (quaternion-axis-angle!
(new 'stack-no-clear 'quaternion)
(-> v1-13 x)
(-> v1-13 y)
(-> v1-13 z)
(* (-> s5-0 twist y) (-> s5-0 blend) (-> s5-0 flex-blend))
)
)
)
(quaternion-normalize! (quaternion*! (-> arg1 quat) a1-6 (-> arg1 quat)))
)
(let* ((v1-17 (-> s3-0 (-> s5-0 nose)))
(a1-8 (quaternion-axis-angle!
(new 'stack-no-clear 'quaternion)
(-> v1-17 x)
(-> v1-17 y)
(-> v1-17 z)
(* (-> s5-0 twist z) (-> s5-0 blend) (-> s5-0 flex-blend))
)
)
)
(quaternion-normalize! (quaternion*! (-> arg1 quat) a1-8 (-> arg1 quat)))
)
)
)
(when (not (logtest? (-> s5-0 track-mode) (track-mode no-scale)))
(let ((a1-9 (-> arg1 scale)))
(let ((v1-22 (-> arg1 scale))
(a0-11 (-> s5-0 scale))
)
(.lvf vf4 (&-> v1-22 quad))
(.lvf vf5 (&-> a0-11 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a1-9 quad) vf6)
)
(if (not (logtest? (-> s5-0 track-mode) (track-mode no-trans)))
(vector+! (-> arg1 trans) (-> arg1 trans) (-> s5-0 trans))
)
(when (not (logtest? (-> s5-0 track-mode) (track-mode no-rotate)))
(let* ((v1-9 (-> s3-0 (-> s5-0 ear)))
(a1-4 (quaternion-axis-angle!
(new 'stack-no-clear 'quaternion)
(-> v1-9 x)
(-> v1-9 y)
(-> v1-9 z)
(* (-> s5-0 twist x) (-> s5-0 blend) (-> s5-0 flex-blend))
)
)
)
(quaternion-normalize! (quaternion*! (-> arg1 quat) a1-4 (-> arg1 quat)))
)
(let* ((v1-13 (-> s3-0 (-> s5-0 up)))
(a1-6 (quaternion-axis-angle!
(new 'stack-no-clear 'quaternion)
(-> v1-13 x)
(-> v1-13 y)
(-> v1-13 z)
(* (-> s5-0 twist y) (-> s5-0 blend) (-> s5-0 flex-blend))
)
)
)
(quaternion-normalize! (quaternion*! (-> arg1 quat) a1-6 (-> arg1 quat)))
)
(let* ((v1-17 (-> s3-0 (-> s5-0 nose)))
(a1-8 (quaternion-axis-angle!
(new 'stack-no-clear 'quaternion)
(-> v1-17 x)
(-> v1-17 y)
(-> v1-17 z)
(* (-> s5-0 twist z) (-> s5-0 blend) (-> s5-0 flex-blend))
)
)
)
(quaternion-normalize! (quaternion*! (-> arg1 quat) a1-8 (-> arg1 quat)))
)
)
(cspace<-parented-transformq-joint! arg0 arg1)
(if (-> s5-0 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
)
)
0
(none)
(if (not (logtest? (-> s5-0 track-mode) (track-mode no-scale)))
(vector*! (-> arg1 scale) (-> arg1 scale) (-> s5-0 scale))
)
(cspace<-parented-transformq-joint! arg0 arg1)
(if (-> s5-0 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
)
)
0
(none)
)
;; definition for function joint-mod-scale-handler
;; WARN: Return type mismatch int vs none.
(defbehavior joint-mod-scale-handler process ((arg0 cspace) (arg1 transformq))
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(let ((s5-0 (the-as joint-mod (-> arg0 param1))))
(let ((a2-0 (-> arg1 scale)))
(let ((v1-0 (-> arg1 scale))
(a0-1 (-> s5-0 scale))
)
(.lvf vf4 (&-> v1-0 quad))
(.lvf vf5 (&-> a0-1 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a2-0 quad) vf6)
(let ((s5-0 (the-as joint-mod (-> arg0 param1))))
(vector*! (-> arg1 scale) (-> arg1 scale) (-> s5-0 scale))
(cspace<-parented-transformq-joint! arg0 arg1)
(if (-> s5-0 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
)
(cspace<-parented-transformq-joint! arg0 arg1)
(if (-> s5-0 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
)
)
0
(none)
)
0
(none)
)
;; definition for function joint-mod-joint-set-handler
@@ -1461,40 +1393,23 @@
;; definition for function joint-mod-joint-set*-handler
;; WARN: Return type mismatch int vs none.
(defbehavior joint-mod-joint-set*-handler process ((arg0 cspace) (arg1 transformq))
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(let ((s5-0 (the-as joint-mod (-> arg0 param1))))
(if (not (logtest? (-> s5-0 track-mode) (track-mode no-trans)))
(vector+! (-> arg1 trans) (-> arg1 trans) (-> s5-0 trans))
)
(if (not (logtest? (-> s5-0 track-mode) (track-mode no-rotate)))
(quaternion-normalize! (quaternion*! (-> arg1 quat) (-> arg1 quat) (-> s5-0 quat)))
)
(when (not (logtest? (-> s5-0 track-mode) (track-mode no-scale)))
(let ((a1-4 (-> arg1 scale)))
(let ((v1-11 (-> arg1 scale))
(a0-4 (-> s5-0 scale))
)
(.lvf vf4 (&-> v1-11 quad))
(.lvf vf5 (&-> a0-4 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a1-4 quad) vf6)
)
(let ((s5-0 (the-as joint-mod (-> arg0 param1))))
(if (not (logtest? (-> s5-0 track-mode) (track-mode no-trans)))
(vector+! (-> arg1 trans) (-> arg1 trans) (-> s5-0 trans))
)
(if (not (logtest? (-> s5-0 track-mode) (track-mode no-rotate)))
(quaternion-normalize! (quaternion*! (-> arg1 quat) (-> arg1 quat) (-> s5-0 quat)))
)
(if (not (logtest? (-> s5-0 track-mode) (track-mode no-scale)))
(vector*! (-> arg1 scale) (-> arg1 scale) (-> s5-0 scale))
)
(cspace<-parented-transformq-joint! arg0 arg1)
(if (-> s5-0 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
)
(cspace<-parented-transformq-joint! arg0 arg1)
(if (-> s5-0 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
)
)
0
(none)
)
0
(none)
)
;; definition for function joint-mod-joint-set*-world-handler
+1 -13
View File
@@ -49,19 +49,7 @@
;; definition for function vector*!
(defun vector*! ((arg0 vector) (arg1 vector) (arg2 vector))
"Elementwise product. Set w = 1."
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(.lvf vf4 (&-> arg1 quad))
(.lvf vf5 (&-> arg2 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> arg0 quad) vf6)
arg0
)
(vector*! arg0 arg1 arg2)
)
;; definition for function vector+*!
+44 -61
View File
@@ -159,75 +159,58 @@
:code sleep-code
:post (behavior ()
(local-vars (sv-112 vector) (sv-128 vector) (sv-144 lightning-control))
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(let ((v1-0 (-> self root))
(f30-0 4369.067)
(f28-0 (* (-> self rotate-speed) (seconds-per-frame)))
(gp-0 (new 'stack-no-clear 'vector))
)
(set! (-> gp-0 x) 1.0)
(set! (-> gp-0 y) 1.0)
(set! (-> gp-0 z) 0.4)
(set! (-> gp-0 w) 1.0)
(quaternion-rotate-local-z! (-> v1-0 quat) (-> v1-0 quat) f28-0)
(dotimes (s5-0 3)
(let ((s4-0 (-> self poles s5-0)))
(dotimes (s3-0 6)
(let ((s2-0 (new 'stack-no-clear 'vector))
(s0-0 (-> s4-0 rings s3-0))
(s1-0 (quaternion-rotate-local-z!
(new 'stack-no-clear 'quaternion)
(-> self root quat)
(+ (-> s4-0 z-rotate) (/ f28-0 5))
)
(let ((v1-0 (-> self root))
(f30-0 4369.067)
(f28-0 (* (-> self rotate-speed) (seconds-per-frame)))
(gp-0 (new 'stack-no-clear 'vector))
)
(set! (-> gp-0 x) 1.0)
(set! (-> gp-0 y) 1.0)
(set! (-> gp-0 z) 0.4)
(set! (-> gp-0 w) 1.0)
(quaternion-rotate-local-z! (-> v1-0 quat) (-> v1-0 quat) f28-0)
(dotimes (s5-0 3)
(let ((s4-0 (-> self poles s5-0)))
(dotimes (s3-0 6)
(let ((s2-0 (new 'stack-no-clear 'vector))
(s0-0 (-> s4-0 rings s3-0))
(s1-0 (quaternion-rotate-local-z!
(new 'stack-no-clear 'quaternion)
(-> self root quat)
(+ (-> s4-0 z-rotate) (/ f28-0 5))
)
)
(set-vector! s2-0 0.0 (-> s0-0 dist) 0.0 1.0)
(vector-orient-by-quat! s2-0 s2-0 s1-0)
(vector+! s2-0 s2-0 (-> self root trans))
(set! sv-112 (new 'stack-no-clear 'vector))
(set! sv-128 (new 'stack-no-clear 'vector))
(set! sv-144 (-> s0-0 lightning))
(set-vector! sv-112 (-> s0-0 radius) 0.0 0.0 0.0)
(quaternion-rotate-local-z! s1-0 s1-0 (-> s0-0 local-z-rotate))
(dotimes (s0-1 16)
(vector-orient-by-quat! sv-128 sv-112 s1-0)
(let ((a1-7 sv-128))
(let ((v1-14 sv-128)
(a0-14 gp-0)
)
(.lvf vf4 (&-> v1-14 quad))
(.lvf vf5 (&-> a0-14 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a1-7 quad) vf6)
)
(set-point! sv-144 s0-1 (vector+! (new 'stack-no-clear 'vector) s2-0 sv-128))
(quaternion-rotate-local-y! s1-0 s1-0 f30-0)
)
)
(set-vector! s2-0 0.0 (-> s0-0 dist) 0.0 1.0)
(vector-orient-by-quat! s2-0 s2-0 s1-0)
(vector+! s2-0 s2-0 (-> self root trans))
(set! sv-112 (new 'stack-no-clear 'vector))
(set! sv-128 (new 'stack-no-clear 'vector))
(set! sv-144 (-> s0-0 lightning))
(set-vector! sv-112 (-> s0-0 radius) 0.0 0.0 0.0)
(quaternion-rotate-local-z! s1-0 s1-0 (-> s0-0 local-z-rotate))
(dotimes (s0-1 16)
(vector-orient-by-quat! sv-128 sv-112 s1-0)
(vector*! sv-128 sv-128 gp-0)
(set-point! sv-144 s0-1 (vector+! (new 'stack-no-clear 'vector) s2-0 sv-128))
(quaternion-rotate-local-y! s1-0 s1-0 f30-0)
)
)
)
)
)
(when (time-elapsed? (-> self state-time) (-> self sound-timer))
(sound-play "cab-fan-blade")
(sound-stop (-> self sound-id))
(sound-play "pal-fan-buzz" :id (-> self sound-id))
(set! (-> self sound-timer)
(the-as time-frame (the int (* 300.0 (/ 21845.334 (fabs (-> self rotate-speed))))))
)
(set-time! (-> self state-time))
)
(update! (-> self sound))
(rider-post)
)
(when (time-elapsed? (-> self state-time) (-> self sound-timer))
(sound-play "cab-fan-blade")
(sound-stop (-> self sound-id))
(sound-play "pal-fan-buzz" :id (-> self sound-id))
(set! (-> self sound-timer)
(the-as time-frame (the int (* 300.0 (/ 21845.334 (fabs (-> self rotate-speed))))))
)
(set-time! (-> self state-time))
)
(update! (-> self sound))
(rider-post)
)
)
+93 -110
View File
@@ -6,123 +6,106 @@
;; ERROR: Unsupported inline assembly instruction kind - [lw ra, return-from-thread(s7)]
;; ERROR: Unsupported inline assembly instruction kind - [jr ra]
(defmethod compute-alignment! ((this align-control))
(local-vars (a0-10 symbol) (s7-0 none) (ra-0 int))
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(update-anim-data (-> this process skel))
(let ((s5-0 (-> this process skel active-channels)))
(dotimes (s4-0 (the-as int s5-0))
(let* ((a0-4 (-> this process skel channel s4-0))
(v1-7 (-> a0-4 frame-group))
)
(case (-> a0-4 command)
(((joint-control-command stack) (joint-control-command stack1))
(local-vars (disable? symbol) (s7-0 none) (ra-0 int))
(update-anim-data (-> this process skel))
(let ((num-chans (-> this process skel active-channels)))
(dotimes (chan-idx (the-as int num-chans))
(let* ((chan (-> this process skel channel chan-idx))
(frame-group (-> chan frame-group))
)
(else
(when (!= (-> v1-7 type) art-joint-anim)
(go process-drawable-art-error "align joint-anim")
(.lw ra-0 return-from-thread s7-0)
(.jr ra-0)
(nop!)
0
)
(case (-> chan command)
(((joint-control-command stack) (joint-control-command stack1))
)
(else
(when (!= (-> frame-group type) art-joint-anim)
(go process-drawable-art-error "align joint-anim")
(.lw ra-0 return-from-thread s7-0)
(.jr ra-0)
(nop!)
0
)
)
)
)
)
(let* ((a0-9 (-> this process skel root-channel 0))
(v1-18 (-> a0-9 frame-group))
(f0-0 (-> a0-9 frame-num))
)
(= (-> a0-9 num-func) num-func-loop!)
(cond
((or (not v1-18) (!= (-> this frame-group) v1-18))
(set! a0-10 #t)
)
((= (-> a0-9 num-func) num-func-loop!)
(set! a0-10 (< (* (-> a0-9 param 0) (- f0-0 (-> this frame-num))) 0.0))
)
(else
(set! a0-10 (= f0-0 0.0))
)
)
(if a0-10
(logior! (-> this flags) (align-flags disabled))
(logclear! (-> this flags) (align-flags disabled))
)
(set! (-> this frame-group) v1-18)
(set! (-> this frame-num) f0-0)
)
(mem-copy! (the-as pointer (-> this transform 1)) (the-as pointer (-> this transform)) 48)
(quaternion-copy! (the-as quaternion (-> this transform 1 rot)) (-> this align quat))
(vector-copy! (-> this transform 1 scale) (-> this align scale))
(let* ((a2-5 (-> this matrix 1))
(a3-0 (-> this matrix))
(v1-21 (-> a3-0 0 rvec quad))
(a0-19 (-> a3-0 0 uvec quad))
(a1-13 (-> a3-0 0 fvec quad))
(a3-1 (-> a3-0 0 trans quad))
)
(set! (-> a2-5 rvec quad) v1-21)
(set! (-> a2-5 uvec quad) a0-19)
(set! (-> a2-5 fvec quad) a1-13)
(set! (-> a2-5 trans quad) a3-1)
)
(let ((s5-1 (-> this process node-list data 1)))
(cspace<-matrix-no-push-joint! s5-1 (-> this process skel))
(let* ((v1-25 (-> this matrix))
(a3-2 (-> s5-1 bone transform))
(a0-22 (-> a3-2 rvec quad))
(a1-15 (-> a3-2 uvec quad))
(a2-6 (-> a3-2 fvec quad))
(a3-3 (-> a3-2 trans quad))
)
(set! (-> v1-25 0 rvec quad) a0-22)
(set! (-> v1-25 0 uvec quad) a1-15)
(set! (-> v1-25 0 fvec quad) a2-6)
(set! (-> v1-25 0 trans quad) a3-3)
)
(let ((v1-26 (-> this transform)))
(let ((a0-24 (-> s5-1 bone transform trans))
(a1-18 (-> this process root scale))
)
(.lvf vf4 (&-> a0-24 quad))
(.lvf vf5 (&-> a1-18 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> v1-26 0 trans quad) vf6)
)
)
(vector-!
(the-as vector (-> this delta))
(the-as vector (-> this transform))
(the-as vector (-> this transform 1))
)
(set-vector!
(-> this align scale)
(vector-length (the-as vector (-> this matrix)))
(vector-length (-> this matrix 0 uvec))
(vector-length (-> this matrix 0 fvec))
1.0
)
(vector-! (-> this delta scale) (-> this align scale) (-> this transform 1 scale))
(let ((a2-7 (matrix-inv-scale! (new 'stack-no-clear 'matrix) (-> this align scale))))
(quaternion-normalize!
(matrix->quaternion (-> this align quat) (matrix*! a2-7 (the-as matrix (-> this matrix)) a2-7))
)
)
(let ((a1-27 (quaternion-inverse! (new 'stack-no-clear 'quaternion) (the-as quaternion (-> this transform 1 rot))))
)
(quaternion-normalize! (quaternion*! (-> this delta quat) a1-27 (-> this align quat)))
)
(-> this delta)
)
(let* ((root-chan (-> this process skel root-channel 0))
(root-frame-group (-> root-chan frame-group))
(root-frame-num (-> root-chan frame-num))
)
(= (-> root-chan num-func) num-func-loop!)
(cond
((or (not root-frame-group) (!= (-> this frame-group) root-frame-group))
(set! disable? #t)
)
((= (-> root-chan num-func) num-func-loop!)
(set! disable? (< (* (-> root-chan param 0) (- root-frame-num (-> this frame-num))) 0.0))
)
(else
(set! disable? (= root-frame-num 0.0))
)
)
(if disable?
(logior! (-> this flags) (align-flags disabled))
(logclear! (-> this flags) (align-flags disabled))
)
(set! (-> this frame-group) root-frame-group)
(set! (-> this frame-num) root-frame-num)
)
(mem-copy! (the-as pointer (-> this transform 1)) (the-as pointer (-> this transform)) 48)
(quaternion-copy! (the-as quaternion (-> this transform 1 rot)) (-> this align quat))
(vector-copy! (-> this transform 1 scale) (-> this align scale))
(let* ((a2-5 (-> this matrix 1))
(a3-0 (-> this matrix))
(v1-21 (-> a3-0 0 rvec quad))
(a0-19 (-> a3-0 0 uvec quad))
(a1-13 (-> a3-0 0 fvec quad))
(a3-1 (-> a3-0 0 trans quad))
)
(set! (-> a2-5 rvec quad) v1-21)
(set! (-> a2-5 uvec quad) a0-19)
(set! (-> a2-5 fvec quad) a1-13)
(set! (-> a2-5 trans quad) a3-1)
)
(let ((s5-1 (-> this process node-list data 1)))
(cspace<-matrix-no-push-joint! s5-1 (-> this process skel))
(let* ((v1-25 (-> this matrix))
(a3-2 (-> s5-1 bone transform))
(a0-22 (-> a3-2 rvec quad))
(a1-15 (-> a3-2 uvec quad))
(a2-6 (-> a3-2 fvec quad))
(a3-3 (-> a3-2 trans quad))
)
(set! (-> v1-25 0 rvec quad) a0-22)
(set! (-> v1-25 0 uvec quad) a1-15)
(set! (-> v1-25 0 fvec quad) a2-6)
(set! (-> v1-25 0 trans quad) a3-3)
)
(vector*! (the-as vector (-> this transform)) (-> s5-1 bone transform trans) (-> this process root scale))
)
(vector-!
(the-as vector (-> this delta))
(the-as vector (-> this transform))
(the-as vector (-> this transform 1))
)
(set-vector!
(-> this align scale)
(vector-length (the-as vector (-> this matrix)))
(vector-length (-> this matrix 0 uvec))
(vector-length (-> this matrix 0 fvec))
1.0
)
(vector-! (-> this delta scale) (-> this align scale) (-> this transform 1 scale))
(let ((a2-7 (matrix-inv-scale! (new 'stack-no-clear 'matrix) (-> this align scale))))
(quaternion-normalize!
(matrix->quaternion (-> this align quat) (matrix*! a2-7 (the-as matrix (-> this matrix)) a2-7))
)
)
(let ((a1-27 (quaternion-inverse! (new 'stack-no-clear 'quaternion) (the-as quaternion (-> this transform 1 rot))))
)
(quaternion-normalize! (quaternion*! (-> this delta quat) a1-27 (-> this align quat)))
)
(-> this delta)
)
;; definition for method 12 of type align-control
+54 -88
View File
@@ -486,37 +486,20 @@ Unlike jak 2, this actually multiplies the scale, instead of adding."
;; definition for function joint-mod-add-local-callback
(defun joint-mod-add-local-callback ((bone-cspace cspace) (joint-transform transformq))
"Callback for joint-mod-add-local. See comment on that type."
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(let ((s4-0 (the-as joint-mod-add-local (-> bone-cspace param1))))
(if (logtest? (-> s4-0 flags) (joint-mod-base-flags trans))
(vector+! (-> joint-transform trans) (-> joint-transform trans) (the-as vector (-> s4-0 transform)))
)
(when (logtest? (-> s4-0 flags) (joint-mod-base-flags quat))
(quaternion*! (-> joint-transform quat) (-> joint-transform quat) (-> s4-0 transform quat))
(quaternion-normalize! (-> joint-transform quat))
)
(when (logtest? (-> s4-0 flags) (joint-mod-base-flags scale))
(let ((a0-4 (-> joint-transform scale)))
(let ((v1-11 (-> joint-transform scale))
(a1-4 (-> s4-0 transform scale))
)
(.lvf vf4 (&-> v1-11 quad))
(.lvf vf5 (&-> a1-4 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a0-4 quad) vf6)
)
(let ((s4-0 (the-as joint-mod-add-local (-> bone-cspace param1))))
(if (logtest? (-> s4-0 flags) (joint-mod-base-flags trans))
(vector+! (-> joint-transform trans) (-> joint-transform trans) (the-as vector (-> s4-0 transform)))
)
(when (logtest? (-> s4-0 flags) (joint-mod-base-flags quat))
(quaternion*! (-> joint-transform quat) (-> joint-transform quat) (-> s4-0 transform quat))
(quaternion-normalize! (-> joint-transform quat))
)
(cspace<-parented-transformq-joint! bone-cspace joint-transform)
(none)
(if (logtest? (-> s4-0 flags) (joint-mod-base-flags scale))
(vector*! (-> joint-transform scale) (-> joint-transform scale) (-> s4-0 transform scale))
)
)
(cspace<-parented-transformq-joint! bone-cspace joint-transform)
(none)
)
;; definition for method 9 of type joint-mod-add-local
@@ -746,71 +729,54 @@ Then, apply the normal parented transform."
;; WARN: Return type mismatch matrix vs none.
(defun joint-mod-blend-world-callback ((bone-cspace cspace) (joint-transform transformq))
"Callback for joint-mod-blend-world. See comment on that type."
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(let ((gp-0 (the-as joint-mod-blend-world (-> bone-cspace param1))))
(let ((f30-0 (if (logtest? (-> gp-0 flags) (joint-mod-base-flags trans))
(-> gp-0 blend)
0.0
)
)
(f28-0 (if (logtest? (-> gp-0 flags) (joint-mod-base-flags quat))
(-> gp-0 blend)
0.0
)
)
(f26-0 (if (logtest? (-> gp-0 flags) (joint-mod-base-flags scale))
(-> gp-0 blend)
0.0
)
)
(s3-0 (new 'stack-no-clear 'joint-mod-blend-world-work))
)
(if (= (-> bone-cspace parent bone scale w) 0.0)
(matrix<-transformq! (-> s3-0 mat1) joint-transform)
(matrix<-parented-transformq! (-> s3-0 mat1) joint-transform (-> bone-cspace parent bone scale))
)
(matrix*! (-> s3-0 mat2) (-> s3-0 mat1) (-> bone-cspace parent bone transform))
(set-vector!
(-> s3-0 vec)
(vector-length (the-as vector (-> s3-0 mat2)))
(vector-length (-> s3-0 mat2 uvec))
(vector-length (-> s3-0 mat2 fvec))
1.0
(let ((gp-0 (the-as joint-mod-blend-world (-> bone-cspace param1))))
(let ((f30-0 (if (logtest? (-> gp-0 flags) (joint-mod-base-flags trans))
(-> gp-0 blend)
0.0
)
)
(f28-0 (if (logtest? (-> gp-0 flags) (joint-mod-base-flags quat))
(-> gp-0 blend)
0.0
)
)
(f26-0 (if (logtest? (-> gp-0 flags) (joint-mod-base-flags scale))
(-> gp-0 blend)
0.0
)
)
(s3-0 (new 'stack-no-clear 'joint-mod-blend-world-work))
)
(let ((a0-11 (-> gp-0 blend-transform scale)))
(let ((v1-18 (-> s3-0 vec))
(a1-4 (-> joint-transform scale))
)
(.lvf vf4 (&-> v1-18 quad))
(.lvf vf5 (&-> a1-4 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a0-11 quad) vf6)
)
(vector-lerp!
(the-as vector (-> gp-0 blend-transform))
(-> s3-0 mat2 trans)
(the-as vector (-> gp-0 transform))
f30-0
)
(vector-lerp! (-> gp-0 blend-transform scale) (-> gp-0 blend-transform scale) (-> gp-0 transform scale) f26-0)
(quaternion-slerp!
(-> gp-0 blend-transform quat)
(matrix->quat (-> s3-0 mat2) (-> s3-0 quat))
(-> gp-0 transform quat)
f28-0
(if (= (-> bone-cspace parent bone scale w) 0.0)
(matrix<-transformq! (-> s3-0 mat1) joint-transform)
(matrix<-parented-transformq! (-> s3-0 mat1) joint-transform (-> bone-cspace parent bone scale))
)
(matrix*! (-> s3-0 mat2) (-> s3-0 mat1) (-> bone-cspace parent bone transform))
(set-vector!
(-> s3-0 vec)
(vector-length (the-as vector (-> s3-0 mat2)))
(vector-length (-> s3-0 mat2 uvec))
(vector-length (-> s3-0 mat2 fvec))
1.0
)
(vector*! (-> gp-0 blend-transform scale) (-> s3-0 vec) (-> joint-transform scale))
(vector-lerp!
(the-as vector (-> gp-0 blend-transform))
(-> s3-0 mat2 trans)
(the-as vector (-> gp-0 transform))
f30-0
)
(vector-lerp! (-> gp-0 blend-transform scale) (-> gp-0 blend-transform scale) (-> gp-0 transform scale) f26-0)
(quaternion-slerp!
(-> gp-0 blend-transform quat)
(matrix->quat (-> s3-0 mat2) (-> s3-0 quat))
(-> gp-0 transform quat)
f28-0
)
(cspace<-transformq! bone-cspace (-> gp-0 blend-transform))
)
(none)
(cspace<-transformq! bone-cspace (-> gp-0 blend-transform))
)
(none)
)
;; definition for method 9 of type joint-mod-blend-world
+304 -389
View File
@@ -290,103 +290,52 @@
(sv-168 vector)
(sv-172 symbol)
)
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(set! sv-16 (the-as joint-mod (-> arg0 param1)))
(let ((a0-1 (-> arg1 scale)))
(let ((v1-1 (-> arg1 scale))
(a2-1 (-> sv-16 scale))
)
(.lvf vf4 (&-> v1-1 quad))
(.lvf vf5 (&-> a2-1 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a0-1 quad) vf6)
)
(cspace<-parented-transformq-joint! arg0 arg1)
(let ((s5-0 (-> arg0 bone transform)))
(let ((s4-0 (matrix->quat s5-0 (new 'stack-no-clear 'quaternion))))
(set! sv-64 (matrix->trans s5-0 (new 'stack-no-clear 'vector)))
(quaternion-rotate-y! s4-0 s4-0 (-> sv-16 twist z))
(set! sv-96 (quaternion-copy! (new 'stack-no-clear 'quaternion) s4-0))
(when (!= (-> sv-16 flex-blend) 0.0)
(set! sv-160 (vector-y-quaternion! (new 'stack-no-clear 'vector) sv-96))
(set! sv-164 (vector-z-quaternion! (new 'stack-no-clear 'vector) sv-96))
(set! sv-168 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> sv-16 target) sv-64) 1.0))
(set! sv-172 (the-as symbol #f))
(let* ((f30-0 (vector-y-angle sv-164))
(a0-13 (vector-flatten! (new 'stack-no-clear 'vector) sv-168 sv-160))
(f0-2 (vector-y-angle a0-13))
(f0-3 (deg-diff f30-0 f0-2))
(f30-1 (* f0-3 (-> sv-16 blend)))
)
(let ((f28-0 (fmax (fmin f30-1 (-> sv-16 twist-max y)) (- (-> sv-16 twist-max y)))))
(if (or (!= f30-1 f28-0) (= (-> sv-16 blend) 0.0))
(logclear! (-> sv-16 track-mode) (track-mode lock-on))
)
(cond
((or (< (-> sv-16 ignore-angle) (fabs f0-3))
(< (-> sv-16 twist-max w) (vector-vector-distance (-> sv-16 target) sv-64))
)
(set! f30-1 0.0)
(set! f28-0 0.0)
(set! sv-172 #t)
)
((< 5461.3335 (fabs (deg-diff f30-1 f28-0)))
(set! (-> sv-16 blend) 0.0001)
)
((< 182.04445 (fabs (deg-diff f30-1 f28-0)))
(logclear! (-> sv-16 track-mode) (track-mode track-x))
)
(set! sv-16 (the-as joint-mod (-> arg0 param1)))
(vector*! (-> arg1 scale) (-> arg1 scale) (-> sv-16 scale))
(cspace<-parented-transformq-joint! arg0 arg1)
(let ((s5-0 (-> arg0 bone transform)))
(let ((s4-0 (matrix->quat s5-0 (new 'stack-no-clear 'quaternion))))
(set! sv-64 (matrix->trans s5-0 (new 'stack-no-clear 'vector)))
(quaternion-rotate-y! s4-0 s4-0 (-> sv-16 twist z))
(set! sv-96 (quaternion-copy! (new 'stack-no-clear 'quaternion) s4-0))
(when (!= (-> sv-16 flex-blend) 0.0)
(set! sv-160 (vector-y-quaternion! (new 'stack-no-clear 'vector) sv-96))
(set! sv-164 (vector-z-quaternion! (new 'stack-no-clear 'vector) sv-96))
(set! sv-168 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> sv-16 target) sv-64) 1.0))
(set! sv-172 (the-as symbol #f))
(let* ((f30-0 (vector-y-angle sv-164))
(a0-14 (vector-flatten! (new 'stack-no-clear 'vector) sv-168 sv-160))
(f0-2 (vector-y-angle a0-14))
(f0-3 (deg-diff f30-0 f0-2))
(f30-1 (* f0-3 (-> sv-16 blend)))
)
(let ((f28-0 (fmax (fmin f30-1 (-> sv-16 twist-max y)) (- (-> sv-16 twist-max y)))))
(if (or (!= f30-1 f28-0) (= (-> sv-16 blend) 0.0))
(logclear! (-> sv-16 track-mode) (track-mode lock-on))
)
(if (or (and (logtest? (-> sv-16 track-mode) (track-mode track-y)) (= f30-1 f28-0))
(< (-> sv-16 twist-max y) (fabs (-> sv-16 twist y)))
)
(set! (-> sv-16 twist y)
(deg-seek (-> sv-16 twist y) f28-0 (* (fabs (deg-diff f28-0 (-> sv-16 twist y)))
(if (logtest? (-> sv-16 track-mode) (track-mode lock-on))
1.0
(-> sv-16 twist-speed-y)
)
(-> self clock time-adjust-ratio)
)
)
)
)
(cond
((or (< (-> sv-16 ignore-angle) (fabs f0-3))
(< (-> sv-16 twist-max w) (vector-vector-distance (-> sv-16 target) sv-64))
)
(set! f30-1 0.0)
(set! f28-0 0.0)
(set! sv-172 #t)
)
((< 5461.3335 (fabs (deg-diff f30-1 f28-0)))
(set! (-> sv-16 blend) 0.0001)
)
((< 182.04445 (fabs (deg-diff f30-1 f28-0)))
(logclear! (-> sv-16 track-mode) (track-mode track-x))
)
)
(if (and (< (fabs (deg-diff f30-1 (-> sv-16 twist y))) 728.1778) (and (not sv-172) (!= (-> sv-16 blend) 0.0)))
(logior! (-> sv-16 track-mode) (track-mode lock-on))
)
)
(quaternion-rotate-local-y! sv-96 sv-96 (-> sv-16 twist y))
(let* ((s3-1 (vector-x-quaternion! (new 'stack-no-clear 'vector) sv-96))
(f30-2 (vector-x-angle sv-164))
(s3-2 (vector-flatten! (new 'stack-no-clear 'vector) sv-168 s3-1))
(f0-24 (vector-x-angle s3-2))
(f30-3 (fmax
(fmin (* (- (deg-diff f30-2 f0-24)) (-> sv-16 blend)) (-> sv-16 twist-max x))
(- (-> sv-16 twist-max x))
)
)
)
(if (or (< (vector-dot s3-2 sv-164) 0.1)
(< (-> sv-16 twist-max z) (vector-vector-distance (-> sv-16 target) sv-64))
(if (or (and (logtest? (-> sv-16 track-mode) (track-mode track-y)) (= f30-1 f28-0))
(< (-> sv-16 twist-max y) (fabs (-> sv-16 twist y)))
)
(set! f30-3 0.0)
)
(if (or (logtest? (-> sv-16 track-mode) (track-mode track-x))
(< (-> sv-16 twist-max x) (fabs (-> sv-16 twist x)))
)
(set! (-> sv-16 twist x)
(deg-seek (-> sv-16 twist x) f30-3 (* (fabs (deg-diff f30-3 (-> sv-16 twist x)))
(set! (-> sv-16 twist y)
(deg-seek (-> sv-16 twist y) f28-0 (* (fabs (deg-diff f28-0 (-> sv-16 twist y)))
(if (logtest? (-> sv-16 track-mode) (track-mode lock-on))
1.0
(-> sv-16 twist-speed-x)
(-> sv-16 twist-speed-y)
)
(-> self clock time-adjust-ratio)
)
@@ -394,55 +343,89 @@
)
)
)
(quaternion-rotate-x! sv-96 sv-96 (-> sv-16 twist x))
(quaternion-normalize! (quaternion*! sv-96 sv-96 (-> sv-16 quat)))
(if (and (< (fabs (deg-diff f30-1 (-> sv-16 twist y))) 728.1778) (and (not sv-172) (!= (-> sv-16 blend) 0.0)))
(logior! (-> sv-16 track-mode) (track-mode lock-on))
)
)
(let ((a1-27 (quaternion-slerp! (new 'stack-no-clear 'quaternion) s4-0 sv-96 (-> sv-16 flex-blend))))
(matrix<-quat s5-0 a1-27)
(quaternion-rotate-local-y! sv-96 sv-96 (-> sv-16 twist y))
(let* ((s3-1 (vector-x-quaternion! (new 'stack-no-clear 'vector) sv-96))
(f30-2 (vector-x-angle sv-164))
(s3-2 (vector-flatten! (new 'stack-no-clear 'vector) sv-168 s3-1))
(f0-24 (vector-x-angle s3-2))
(f30-3 (fmax
(fmin (* (- (deg-diff f30-2 f0-24)) (-> sv-16 blend)) (-> sv-16 twist-max x))
(- (-> sv-16 twist-max x))
)
)
)
(if (or (< (vector-dot s3-2 sv-164) 0.1)
(< (-> sv-16 twist-max z) (vector-vector-distance (-> sv-16 target) sv-64))
)
(set! f30-3 0.0)
)
(if (or (logtest? (-> sv-16 track-mode) (track-mode track-x))
(< (-> sv-16 twist-max x) (fabs (-> sv-16 twist x)))
)
(set! (-> sv-16 twist x)
(deg-seek (-> sv-16 twist x) f30-3 (* (fabs (deg-diff f30-3 (-> sv-16 twist x)))
(if (logtest? (-> sv-16 track-mode) (track-mode lock-on))
1.0
(-> sv-16 twist-speed-x)
)
(-> self clock time-adjust-ratio)
)
)
)
)
)
(quaternion-rotate-x! sv-96 sv-96 (-> sv-16 twist x))
(quaternion-normalize! (quaternion*! sv-96 sv-96 (-> sv-16 quat)))
)
(let ((f30-4 (-> sv-16 trans x))
(s4-1 (-> s5-0 uvec))
(v1-97 (vector<-matrix! (new 'stack-no-clear 'vector) s5-0))
)
(let ((f0-43 (- f30-4 (-> v1-97 y))))
(if (< 614.4 (fabs f0-43))
(+! (-> sv-16 trans z) (* 8.0 f0-43))
)
)
(+! (-> sv-16 trans z) (* -260.0 (seconds-per-frame) (-> sv-16 trans y)))
(let ((f0-48 (-> sv-16 trans y)))
(+! (-> sv-16 trans y) (* (-> sv-16 trans z) (seconds-per-frame)))
(set! (-> sv-16 trans y) (* 0.95 (-> sv-16 trans y)))
(when (< (* f0-48 (-> sv-16 trans y)) 0.0)
(set! (-> sv-16 trans y) 0.0)
(set! (-> sv-16 trans z) 0.0)
)
)
(cond
((< 409.6 (-> sv-16 trans y))
(set! (-> sv-16 trans y) 409.6)
(set! (-> sv-16 trans z) 0.0)
)
((< (-> sv-16 trans y) -409.6)
(set! (-> sv-16 trans y) -409.6)
(set! (-> sv-16 trans z) 0.0)
)
)
(set! (-> sv-16 trans x) (-> v1-97 y))
(let ((f0-60 (* (-> sv-16 trans y) (-> sv-16 flex-blend))))
(if (!= f0-60 0.0)
(vector+float*! (-> s5-0 trans) v1-97 s4-1 f0-60)
)
)
(let ((a1-27 (quaternion-slerp! (new 'stack-no-clear 'quaternion) s4-0 sv-96 (-> sv-16 flex-blend))))
(matrix<-quat s5-0 a1-27)
)
)
(if (-> sv-16 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
(let ((f30-4 (-> sv-16 trans x))
(s4-1 (-> s5-0 uvec))
(v1-97 (vector<-matrix! (new 'stack-no-clear 'vector) s5-0))
)
(let ((f0-43 (- f30-4 (-> v1-97 y))))
(if (< 614.4 (fabs f0-43))
(+! (-> sv-16 trans z) (* 8.0 f0-43))
)
)
0
(none)
(+! (-> sv-16 trans z) (* -260.0 (seconds-per-frame) (-> sv-16 trans y)))
(let ((f0-48 (-> sv-16 trans y)))
(+! (-> sv-16 trans y) (* (-> sv-16 trans z) (seconds-per-frame)))
(set! (-> sv-16 trans y) (* 0.95 (-> sv-16 trans y)))
(when (< (* f0-48 (-> sv-16 trans y)) 0.0)
(set! (-> sv-16 trans y) 0.0)
(set! (-> sv-16 trans z) 0.0)
)
)
(cond
((< 409.6 (-> sv-16 trans y))
(set! (-> sv-16 trans y) 409.6)
(set! (-> sv-16 trans z) 0.0)
)
((< (-> sv-16 trans y) -409.6)
(set! (-> sv-16 trans y) -409.6)
(set! (-> sv-16 trans z) 0.0)
)
)
(set! (-> sv-16 trans x) (-> v1-97 y))
(let ((f0-60 (* (-> sv-16 trans y) (-> sv-16 flex-blend))))
(if (!= f0-60 0.0)
(vector+float*! (-> s5-0 trans) v1-97 s4-1 f0-60)
)
)
)
)
(if (-> sv-16 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
)
0
(none)
)
;; definition for function joint-mod-gun-look-at-handler
@@ -768,138 +751,121 @@
(sv-160 (pointer uint128))
(sv-164 symbol)
)
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(let ((gp-0 (the-as joint-mod (-> arg0 param1))))
(cspace<-parented-transformq-joint! arg0 arg1)
(let ((s3-0 (-> arg0 bone transform)))
(set! sv-144 (new 'stack-no-clear 'matrix))
(set! sv-148 (new 'stack-no-clear 'quaternion))
(set! sv-152 (new 'stack-no-clear 'vector))
(set! sv-156 (new 'stack-no-clear 'vector))
(set! sv-160
(&-> (-> gp-0 process node-list data (-> gp-0 base-joint) bone) transform quad (-> gp-0 base-nose))
)
(set! sv-164
(< (vector-dot (-> s3-0 rvec) (vector-cross! (new 'stack-no-clear 'vector) (-> s3-0 uvec) (-> s3-0 fvec)))
0.0
)
)
(vector-normalize-copy! (-> sv-144 rvec) (the-as vector (&-> s3-0 quad (-> gp-0 ear))) (if sv-164
-1.0
1.0
)
)
(vector-normalize-copy! (-> sv-144 uvec) (the-as vector (&-> s3-0 quad (-> gp-0 up))) 1.0)
(vector-normalize-copy! (-> sv-144 fvec) (the-as vector (&-> s3-0 quad (-> gp-0 nose))) 1.0)
)
(vector-reset! (-> sv-144 trans))
(matrix->quaternion sv-148 sv-144)
(vector-normalize! (vector-! sv-152 (-> gp-0 target) (-> arg0 bone transform trans)) 1.0)
(vector-inv-orient-by-quat! sv-156 sv-152 sv-148)
(let ((f30-0 (vector-y-angle sv-156))
(f0-2 (if (= (-> gp-0 base-joint) (+ (-> arg0 joint number) 1))
0.0
(deg-diff (vector-y-angle (-> sv-144 fvec)) (vector-y-angle (the-as vector sv-160)))
)
)
(let ((gp-0 (the-as joint-mod (-> arg0 param1))))
(cspace<-parented-transformq-joint! arg0 arg1)
(let ((s3-0 (-> arg0 bone transform)))
(set! sv-144 (new 'stack-no-clear 'matrix))
(set! sv-148 (new 'stack-no-clear 'quaternion))
(set! sv-152 (new 'stack-no-clear 'vector))
(set! sv-156 (new 'stack-no-clear 'vector))
(set! sv-160
(&-> (-> gp-0 process node-list data (-> gp-0 base-joint) bone) transform quad (-> gp-0 base-nose))
)
(if (< (-> gp-0 ignore-angle) (fabs f30-0))
(set! f30-0 0.0)
(set! sv-164
(< (vector-dot (-> s3-0 rvec) (vector-cross! (new 'stack-no-clear 'vector) (-> s3-0 uvec) (-> s3-0 fvec)))
0.0
)
)
(let ((f30-1
(fmax
(fmin (* f30-0 (-> gp-0 blend) (-> gp-0 flex-blend)) (+ (-> gp-0 twist-max y) (* f0-2 (-> gp-0 flex-blend))))
(+ (- (-> gp-0 twist-max y)) (* f0-2 (-> gp-0 flex-blend)))
)
)
)
(when (and (-> gp-0 shutting-down?) (< (fabs (- (-> gp-0 twist y) f30-1)) 18.204445))
(if (and (= (-> gp-0 scale x) 1.0) (= (-> gp-0 scale y) 1.0) (= (-> gp-0 scale z) 1.0))
(mode-set! gp-0 (joint-mod-mode reset))
(mode-set! gp-0 (joint-mod-mode rotate2))
)
)
(set! (-> gp-0 twist y)
(deg-seek
(-> gp-0 twist y)
f30-1
(* (fabs (deg-diff f30-1 (-> gp-0 twist y))) (-> gp-0 twist-speed-y) (-> self clock time-adjust-ratio))
)
)
)
)
(let ((f0-21 (if sv-164
(- (-> gp-0 twist y))
(-> gp-0 twist y)
)
)
(a1-18 (new-stack-vector0))
)
(set! (-> a1-18 data (-> gp-0 up)) 1.0)
(let ((a2-7 (quaternion-vector-angle! (new-stack-quaternion0) a1-18 f0-21)))
(quaternion-normalize! (quaternion*! (-> arg1 quat) (-> arg1 quat) a2-7))
)
)
(let ((f0-27
(fmax
(fmin (* (- (vector-x-angle sv-156)) (-> gp-0 blend) (-> gp-0 flex-blend)) (-> gp-0 twist-max x))
(- (-> gp-0 twist-max x))
)
)
)
(if (< (vector-dot sv-156 *z-vector*) 0.1)
(set! f0-27 0.0)
)
(set! (-> gp-0 twist x)
(deg-seek
(-> gp-0 twist x)
f0-27
(* (fabs (deg-diff f0-27 (-> gp-0 twist x))) (-> gp-0 twist-speed-x) (-> self clock time-adjust-ratio))
)
)
)
(let ((a1-22 (new-stack-vector0)))
(set! (-> a1-22 data (-> gp-0 ear)) 1.0)
(let ((a2-10 (quaternion-vector-angle! (new-stack-quaternion0) a1-22 (-> gp-0 twist x))))
(quaternion-normalize! (quaternion*! (-> arg1 quat) (-> arg1 quat) a2-10))
)
)
(vector+! (-> arg1 trans) (-> arg1 trans) (-> gp-0 trans))
(quaternion-normalize! (quaternion*! (-> arg1 quat) (-> arg1 quat) (-> gp-0 quat)))
(let ((a1-27 (-> arg1 scale)))
(let ((v1-71 (-> arg1 scale))
(a0-36 (-> gp-0 scale))
)
(.lvf vf4 (&-> v1-71 quad))
(.lvf vf5 (&-> a0-36 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a1-27 quad) vf6)
)
(cspace<-parented-transformq-joint! arg0 arg1)
(if (-> gp-0 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
)
(if (and (= (-> gp-0 process type) target) (!= (-> gp-0 blend) 0.0))
(add-debug-text-sphere
*display-target-marks*
(bucket-id debug-no-zbuf1)
(-> gp-0 target)
(meters 0.2)
"look"
(new 'static 'rgba :r #xff :g #xff :a #x80)
)
)
(vector-normalize-copy! (-> sv-144 rvec) (the-as vector (&-> s3-0 quad (-> gp-0 ear))) (if sv-164
-1.0
1.0
)
)
(vector-normalize-copy! (-> sv-144 uvec) (the-as vector (&-> s3-0 quad (-> gp-0 up))) 1.0)
(vector-normalize-copy! (-> sv-144 fvec) (the-as vector (&-> s3-0 quad (-> gp-0 nose))) 1.0)
)
0
(none)
(vector-reset! (-> sv-144 trans))
(matrix->quaternion sv-148 sv-144)
(vector-normalize! (vector-! sv-152 (-> gp-0 target) (-> arg0 bone transform trans)) 1.0)
(vector-inv-orient-by-quat! sv-156 sv-152 sv-148)
(let ((f30-0 (vector-y-angle sv-156))
(f0-2 (if (= (-> gp-0 base-joint) (+ (-> arg0 joint number) 1))
0.0
(deg-diff (vector-y-angle (-> sv-144 fvec)) (vector-y-angle (the-as vector sv-160)))
)
)
)
(if (< (-> gp-0 ignore-angle) (fabs f30-0))
(set! f30-0 0.0)
)
(let ((f30-1
(fmax
(fmin (* f30-0 (-> gp-0 blend) (-> gp-0 flex-blend)) (+ (-> gp-0 twist-max y) (* f0-2 (-> gp-0 flex-blend))))
(+ (- (-> gp-0 twist-max y)) (* f0-2 (-> gp-0 flex-blend)))
)
)
)
(when (and (-> gp-0 shutting-down?) (< (fabs (- (-> gp-0 twist y) f30-1)) 18.204445))
(if (and (= (-> gp-0 scale x) 1.0) (= (-> gp-0 scale y) 1.0) (= (-> gp-0 scale z) 1.0))
(mode-set! gp-0 (joint-mod-mode reset))
(mode-set! gp-0 (joint-mod-mode rotate2))
)
)
(set! (-> gp-0 twist y)
(deg-seek
(-> gp-0 twist y)
f30-1
(* (fabs (deg-diff f30-1 (-> gp-0 twist y))) (-> gp-0 twist-speed-y) (-> self clock time-adjust-ratio))
)
)
)
)
(let ((f0-21 (if sv-164
(- (-> gp-0 twist y))
(-> gp-0 twist y)
)
)
(a1-18 (new-stack-vector0))
)
(set! (-> a1-18 data (-> gp-0 up)) 1.0)
(let ((a2-7 (quaternion-vector-angle! (new-stack-quaternion0) a1-18 f0-21)))
(quaternion-normalize! (quaternion*! (-> arg1 quat) (-> arg1 quat) a2-7))
)
)
(let ((f0-27
(fmax
(fmin (* (- (vector-x-angle sv-156)) (-> gp-0 blend) (-> gp-0 flex-blend)) (-> gp-0 twist-max x))
(- (-> gp-0 twist-max x))
)
)
)
(if (< (vector-dot sv-156 *z-vector*) 0.1)
(set! f0-27 0.0)
)
(set! (-> gp-0 twist x)
(deg-seek
(-> gp-0 twist x)
f0-27
(* (fabs (deg-diff f0-27 (-> gp-0 twist x))) (-> gp-0 twist-speed-x) (-> self clock time-adjust-ratio))
)
)
)
(let ((a1-22 (new-stack-vector0)))
(set! (-> a1-22 data (-> gp-0 ear)) 1.0)
(let ((a2-10 (quaternion-vector-angle! (new-stack-quaternion0) a1-22 (-> gp-0 twist x))))
(quaternion-normalize! (quaternion*! (-> arg1 quat) (-> arg1 quat) a2-10))
)
)
(vector+! (-> arg1 trans) (-> arg1 trans) (-> gp-0 trans))
(quaternion-normalize! (quaternion*! (-> arg1 quat) (-> arg1 quat) (-> gp-0 quat)))
(vector*! (-> arg1 scale) (-> arg1 scale) (-> gp-0 scale))
(cspace<-parented-transformq-joint! arg0 arg1)
(if (-> gp-0 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
)
(if (and (= (-> gp-0 process type) target) (!= (-> gp-0 blend) 0.0))
(add-debug-text-sphere
*display-target-marks*
(bucket-id debug-no-zbuf1)
(-> gp-0 target)
(meters 0.2)
"look"
(new 'static 'rgba :r #xff :g #xff :a #x80)
)
)
)
0
(none)
)
;; definition for function joint-mod-world-look-at-handler
@@ -1016,115 +982,81 @@
;; WARN: Return type mismatch int vs none.
(defbehavior joint-mod-rotate-handler process ((arg0 cspace) (arg1 transformq))
"Callback for rotate joint mod."
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(let ((s5-0 (the-as joint-mod (-> arg0 param1))))
(let ((s3-0 (new 'static 'inline-array vector 3
(new 'static 'vector :x 1.0 :w 1.0)
(new 'static 'vector :y 1.0 :w 1.0)
(new 'static 'vector :z 1.0 :w 1.0)
)
(let ((s5-0 (the-as joint-mod (-> arg0 param1))))
(let ((s3-0 (new 'static 'inline-array vector 3
(new 'static 'vector :x 1.0 :w 1.0)
(new 'static 'vector :y 1.0 :w 1.0)
(new 'static 'vector :z 1.0 :w 1.0)
)
)
(if (not (logtest? (-> s5-0 track-mode) (track-mode no-trans)))
(vector+! (-> arg1 trans) (-> arg1 trans) (-> s5-0 trans))
)
(when (not (logtest? (-> s5-0 track-mode) (track-mode no-rotate)))
(let* ((v1-9 (-> s3-0 (-> s5-0 ear)))
(a1-4 (quaternion-axis-angle!
(new 'stack-no-clear 'quaternion)
(-> v1-9 x)
(-> v1-9 y)
(-> v1-9 z)
(* (-> s5-0 twist x) (-> s5-0 blend) (-> s5-0 flex-blend))
)
)
)
(quaternion-normalize! (quaternion*! (-> arg1 quat) a1-4 (-> arg1 quat)))
)
(let* ((v1-13 (-> s3-0 (-> s5-0 up)))
(a1-6 (quaternion-axis-angle!
(new 'stack-no-clear 'quaternion)
(-> v1-13 x)
(-> v1-13 y)
(-> v1-13 z)
(* (-> s5-0 twist y) (-> s5-0 blend) (-> s5-0 flex-blend))
)
)
)
(quaternion-normalize! (quaternion*! (-> arg1 quat) a1-6 (-> arg1 quat)))
)
(let* ((v1-17 (-> s3-0 (-> s5-0 nose)))
(a1-8 (quaternion-axis-angle!
(new 'stack-no-clear 'quaternion)
(-> v1-17 x)
(-> v1-17 y)
(-> v1-17 z)
(* (-> s5-0 twist z) (-> s5-0 blend) (-> s5-0 flex-blend))
)
)
)
(quaternion-normalize! (quaternion*! (-> arg1 quat) a1-8 (-> arg1 quat)))
)
)
)
(when (not (logtest? (-> s5-0 track-mode) (track-mode no-scale)))
(let ((a1-9 (-> arg1 scale)))
(let ((v1-22 (-> arg1 scale))
(a0-11 (-> s5-0 scale))
)
(.lvf vf4 (&-> v1-22 quad))
(.lvf vf5 (&-> a0-11 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a1-9 quad) vf6)
)
(if (not (logtest? (-> s5-0 track-mode) (track-mode no-trans)))
(vector+! (-> arg1 trans) (-> arg1 trans) (-> s5-0 trans))
)
(when (not (logtest? (-> s5-0 track-mode) (track-mode no-rotate)))
(let* ((v1-9 (-> s3-0 (-> s5-0 ear)))
(a1-4 (quaternion-axis-angle!
(new 'stack-no-clear 'quaternion)
(-> v1-9 x)
(-> v1-9 y)
(-> v1-9 z)
(* (-> s5-0 twist x) (-> s5-0 blend) (-> s5-0 flex-blend))
)
)
)
(quaternion-normalize! (quaternion*! (-> arg1 quat) a1-4 (-> arg1 quat)))
)
(let* ((v1-13 (-> s3-0 (-> s5-0 up)))
(a1-6 (quaternion-axis-angle!
(new 'stack-no-clear 'quaternion)
(-> v1-13 x)
(-> v1-13 y)
(-> v1-13 z)
(* (-> s5-0 twist y) (-> s5-0 blend) (-> s5-0 flex-blend))
)
)
)
(quaternion-normalize! (quaternion*! (-> arg1 quat) a1-6 (-> arg1 quat)))
)
(let* ((v1-17 (-> s3-0 (-> s5-0 nose)))
(a1-8 (quaternion-axis-angle!
(new 'stack-no-clear 'quaternion)
(-> v1-17 x)
(-> v1-17 y)
(-> v1-17 z)
(* (-> s5-0 twist z) (-> s5-0 blend) (-> s5-0 flex-blend))
)
)
)
(quaternion-normalize! (quaternion*! (-> arg1 quat) a1-8 (-> arg1 quat)))
)
)
(cspace<-parented-transformq-joint! arg0 arg1)
(if (-> s5-0 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
)
)
0
(none)
(if (not (logtest? (-> s5-0 track-mode) (track-mode no-scale)))
(vector*! (-> arg1 scale) (-> arg1 scale) (-> s5-0 scale))
)
(cspace<-parented-transformq-joint! arg0 arg1)
(if (-> s5-0 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
)
)
0
(none)
)
;; definition for function joint-mod-scale-handler
;; WARN: Return type mismatch int vs none.
(defbehavior joint-mod-scale-handler process ((arg0 cspace) (arg1 transformq))
"Callback for scale joint mod."
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(let ((s5-0 (the-as joint-mod (-> arg0 param1))))
(let ((a2-0 (-> arg1 scale)))
(let ((v1-0 (-> arg1 scale))
(a0-1 (-> s5-0 scale))
)
(.lvf vf4 (&-> v1-0 quad))
(.lvf vf5 (&-> a0-1 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a2-0 quad) vf6)
(let ((s5-0 (the-as joint-mod (-> arg0 param1))))
(vector*! (-> arg1 scale) (-> arg1 scale) (-> s5-0 scale))
(cspace<-parented-transformq-joint! arg0 arg1)
(if (-> s5-0 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
)
(cspace<-parented-transformq-joint! arg0 arg1)
(if (-> s5-0 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
)
)
0
(none)
)
0
(none)
)
;; definition for function joint-mod-joint-set-handler
@@ -1237,40 +1169,23 @@
;; definition for function joint-mod-joint-set*-handler
;; WARN: Return type mismatch int vs none.
(defbehavior joint-mod-joint-set*-handler process ((arg0 cspace) (arg1 transformq))
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(let ((s5-0 (the-as joint-mod (-> arg0 param1))))
(if (not (logtest? (-> s5-0 track-mode) (track-mode no-trans)))
(vector+! (-> arg1 trans) (-> arg1 trans) (-> s5-0 trans))
)
(if (not (logtest? (-> s5-0 track-mode) (track-mode no-rotate)))
(quaternion-normalize! (quaternion*! (-> arg1 quat) (-> arg1 quat) (-> s5-0 quat)))
)
(when (not (logtest? (-> s5-0 track-mode) (track-mode no-scale)))
(let ((a1-4 (-> arg1 scale)))
(let ((v1-11 (-> arg1 scale))
(a0-4 (-> s5-0 scale))
)
(.lvf vf4 (&-> v1-11 quad))
(.lvf vf5 (&-> a0-4 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a1-4 quad) vf6)
)
(let ((s5-0 (the-as joint-mod (-> arg0 param1))))
(if (not (logtest? (-> s5-0 track-mode) (track-mode no-trans)))
(vector+! (-> arg1 trans) (-> arg1 trans) (-> s5-0 trans))
)
(if (not (logtest? (-> s5-0 track-mode) (track-mode no-rotate)))
(quaternion-normalize! (quaternion*! (-> arg1 quat) (-> arg1 quat) (-> s5-0 quat)))
)
(if (not (logtest? (-> s5-0 track-mode) (track-mode no-scale)))
(vector*! (-> arg1 scale) (-> arg1 scale) (-> s5-0 scale))
)
(cspace<-parented-transformq-joint! arg0 arg1)
(if (-> s5-0 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
)
(cspace<-parented-transformq-joint! arg0 arg1)
(if (-> s5-0 parented-scale?)
(set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)
)
)
0
(none)
)
0
(none)
)
;; definition for function joint-mod-joint-set*-world-handler
+1 -13
View File
@@ -49,19 +49,7 @@
;; definition for function vector*!
(defun vector*! ((arg0 vector) (arg1 vector) (arg2 vector))
"Elementwise product. Set w = 1."
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(.lvf vf4 (&-> arg1 quad))
(.lvf vf5 (&-> arg2 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> arg0 quad) vf6)
arg0
)
(vector*! arg0 arg1 arg2)
)
;; definition for function vector+*!
+96 -149
View File
@@ -556,175 +556,122 @@
;; WARN: Return type mismatch int vs none.
(defun ragdoll-joint-callback ((arg0 cspace) (arg1 transformq) (arg2 process-drawable) (arg3 ragdoll-proc))
(local-vars (a2-10 matrix) (sv-240 int) (sv-256 quaternion) (sv-272 vector) (sv-288 matrix))
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(when *debug-segment*
(let ((s2-0 (-> *display* frames (-> *display* on-screen) profile-array data 0))
(v1-7 'ragdoll-callback)
(s1-0 *color-white*)
)
(when (and *dproc* *debug-segment*)
(let ((s0-0 (-> s2-0 data (-> s2-0 count))))
(set! sv-240 (-> s2-0 base-time))
(set! (-> s0-0 name) v1-7)
(set! (-> s0-0 start-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint sv-240))))
(set! (-> s0-0 depth) (the-as uint (-> s2-0 depth)))
(set! (-> s0-0 color) s1-0)
(set! (-> s2-0 segment (-> s2-0 depth)) s0-0)
)
(set! (-> s2-0 count) (min 1023 (+ (-> s2-0 count) 1)))
(+! (-> s2-0 depth) 1)
(set! (-> s2-0 max-depth) (max (-> s2-0 max-depth) (-> s2-0 depth)))
(when *debug-segment*
(let ((s2-0 (-> *display* frames (-> *display* on-screen) profile-array data 0))
(v1-7 'ragdoll-callback)
(s1-0 *color-white*)
)
(when (and *dproc* *debug-segment*)
(let ((s0-0 (-> s2-0 data (-> s2-0 count))))
(set! sv-240 (-> s2-0 base-time))
(set! (-> s0-0 name) v1-7)
(set! (-> s0-0 start-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint sv-240))))
(set! (-> s0-0 depth) (the-as uint (-> s2-0 depth)))
(set! (-> s0-0 color) s1-0)
(set! (-> s2-0 segment (-> s2-0 depth)) s0-0)
)
(set! (-> s2-0 count) (min 1023 (+ (-> s2-0 count) 1)))
(+! (-> s2-0 depth) 1)
(set! (-> s2-0 max-depth) (max (-> s2-0 max-depth) (-> s2-0 depth)))
)
0
)
(when arg3
(let ((s3-1 (-> arg3 ragdoll)))
(when (and s3-1
(and (< 0.0 (-> s3-1 flex-blend)) (!= (-> s3-1 ragdoll-joint-remap (+ (-> arg0 joint number) 1)) 255))
)
(let ((s1-1 (-> s3-1 ragdoll-joints (-> s3-1 ragdoll-joint-remap (+ (-> arg0 joint number) 1)))))
(when s1-1
(if (and (-> s1-1 old-param0) (!= (-> s1-1 old-param0) ragdoll-other-joint-callback))
((the-as (function cspace transformq none) (-> s1-1 old-param0)) arg0 arg1)
(cspace<-parented-transformq-joint! arg0 arg1)
)
(let ((s2-1 (new 'stack-no-clear 'matrix)))
(set! sv-256
(quaternion-vector-angle! (new 'stack-no-clear 'quaternion) (-> s1-1 geo-tform) (-> s1-1 geo-tform w))
)
(quaternion-normalize! (quaternion*! sv-256 (-> s1-1 quat) sv-256))
(quaternion->matrix s2-1 sv-256)
(when (logtest? (-> s3-1 ragdoll-flags) (ragdoll-flag rf10))
(let ((v1-40 (&+ s1-1 188)))
(when (and (!= v1-40 (-> s3-1 ragdoll-joints (-> s3-1 num-joints))) (= (-> v1-40 parent-joint) -1))
(let ((s0-3 (vector-! (new 'stack-no-clear 'vector) (-> v1-40 position) (-> s1-1 position))))
(set! sv-272 (new 'stack-no-clear 'vector))
(set! sv-288 (new 'stack-no-clear 'matrix))
(vector-flatten! sv-272 s0-3 (-> s2-1 rvec))
(vector-normalize! sv-272 1.0)
(matrix-from-two-vectors! sv-288 (-> s2-1 uvec) sv-272)
(matrix*! s2-1 s2-1 sv-288)
(vector-flatten! sv-272 s0-3 (-> s2-1 fvec))
)
0
)
(when arg3
(let ((s3-1 (-> arg3 ragdoll)))
(when (and s3-1
(and (< 0.0 (-> s3-1 flex-blend)) (!= (-> s3-1 ragdoll-joint-remap (+ (-> arg0 joint number) 1)) 255))
)
(let ((s1-1 (-> s3-1 ragdoll-joints (-> s3-1 ragdoll-joint-remap (+ (-> arg0 joint number) 1)))))
(when s1-1
(if (and (-> s1-1 old-param0) (!= (-> s1-1 old-param0) ragdoll-other-joint-callback))
((the-as (function cspace transformq none) (-> s1-1 old-param0)) arg0 arg1)
(cspace<-parented-transformq-joint! arg0 arg1)
)
(let ((s2-1 (new 'stack-no-clear 'matrix)))
(set! sv-256
(quaternion-vector-angle! (new 'stack-no-clear 'quaternion) (-> s1-1 geo-tform) (-> s1-1 geo-tform w))
)
(quaternion-normalize! (quaternion*! sv-256 (-> s1-1 quat) sv-256))
(quaternion->matrix s2-1 sv-256)
(when (logtest? (-> s3-1 ragdoll-flags) (ragdoll-flag rf10))
(let ((v1-40 (&+ s1-1 188)))
(when (and (!= v1-40 (-> s3-1 ragdoll-joints (-> s3-1 num-joints))) (= (-> v1-40 parent-joint) -1))
(let ((s0-3 (vector-! (new 'stack-no-clear 'vector) (-> v1-40 position) (-> s1-1 position))))
(set! sv-272 (new 'stack-no-clear 'vector))
(set! sv-288 (new 'stack-no-clear 'matrix))
(vector-flatten! sv-272 s0-3 (-> s2-1 rvec))
(vector-normalize! sv-272 1.0)
(matrix-from-two-vectors! sv-288 (-> s2-1 uvec) sv-272)
(matrix*! s2-1 s2-1 sv-288)
(vector-flatten! sv-272 s0-3 (-> s2-1 fvec))
)
(vector-normalize! sv-272 1.0)
(matrix-from-two-vectors! sv-288 (-> s2-1 uvec) sv-272)
(matrix*! s2-1 s2-1 sv-288)
)
)
(vector-copy! (-> s2-1 trans) (-> s1-1 position))
(set! (-> s2-1 trans w) 1.0)
(if (logtest? (-> s3-1 ragdoll-flags) (ragdoll-flag mirror))
(matrix*! s2-1 s2-1 (-> s3-1 mirror))
)
(set! a2-10
(cond
((>= (-> s3-1 flex-blend) 1.0)
(matrix-copy! (-> arg0 bone transform) s2-1)
)
(else
(let ((s1-3 (vector-lerp!
(new 'stack-no-clear 'vector)
(matrix->trans (-> arg0 bone transform) (new 'stack-no-clear 'vector))
(-> s2-1 trans)
(-> s3-1 flex-blend)
)
)
(vector-copy! (-> s2-1 trans) (-> s1-1 position))
(set! (-> s2-1 trans w) 1.0)
(if (logtest? (-> s3-1 ragdoll-flags) (ragdoll-flag mirror))
(matrix*! s2-1 s2-1 (-> s3-1 mirror))
)
(set! a2-10
(cond
((>= (-> s3-1 flex-blend) 1.0)
(matrix-copy! (-> arg0 bone transform) s2-1)
)
(else
(let ((s1-3 (vector-lerp!
(new 'stack-no-clear 'vector)
(matrix->trans (-> arg0 bone transform) (new 'stack-no-clear 'vector))
(-> s2-1 trans)
(-> s3-1 flex-blend)
)
)
(ragdoll-matrix-interp (-> arg0 bone transform) (-> arg0 bone transform) s2-1 (-> s3-1 flex-blend))
(vector-copy! (-> arg0 bone transform trans) s1-3)
)
(set! (-> arg0 bone transform trans w) 1.0)
a2-10
)
)
(ragdoll-matrix-interp (-> arg0 bone transform) (-> arg0 bone transform) s2-1 (-> s3-1 flex-blend))
(vector-copy! (-> arg0 bone transform trans) s1-3)
)
(set! (-> arg0 bone transform trans w) 1.0)
a2-10
)
)
)
(let ((v1-60 (new 'stack-no-clear 'vector)))
(let ((a0-50 v1-60))
(let ((a1-24 (-> s3-1 scale))
(a2-14 (-> arg2 root scale))
)
(.lvf vf4 (&-> a1-24 quad))
(.lvf vf5 (&-> a2-14 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a0-50 quad) vf6)
)
(let ((a1-25 v1-60))
(let ((a0-51 v1-60)
(a2-15 (-> arg1 scale))
)
(.lvf vf4 (&-> a0-51 quad))
(.lvf vf5 (&-> a2-15 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a1-25 quad) vf6)
)
(let ((a0-53 (-> arg0 bone transform)))
(let ((a1-27 (-> arg0 bone transform))
(a2-16 v1-60)
)
(.lvf vf4 (&-> a1-27 rvec quad))
(.lvf vf5 (&-> a2-16 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a0-53 rvec quad) vf6)
)
(let ((a0-55 (-> arg0 bone transform uvec)))
(let ((a1-29 (-> arg0 bone transform uvec))
(a2-17 v1-60)
)
(.lvf vf4 (&-> a1-29 quad))
(.lvf vf5 (&-> a2-17 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a0-55 quad) vf6)
)
(let ((a0-57 (-> arg0 bone transform fvec)))
(.lvf vf4 (&-> (-> arg0 bone transform fvec) quad))
(.lvf vf5 (&-> v1-60 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a0-57 quad) vf6)
)
)
(set! (-> arg0 bone transform rvec w) 0.0)
(set! (-> arg0 bone transform uvec w) 0.0)
(set! (-> arg0 bone transform fvec w) 0.0)
)
(let ((v1-60 (new 'stack-no-clear 'vector)))
(vector*! v1-60 (-> s3-1 scale) (-> arg2 root scale))
(vector*! v1-60 v1-60 (-> arg1 scale))
(vector*! (the-as vector (-> arg0 bone transform)) (the-as vector (-> arg0 bone transform)) v1-60)
(vector*! (-> arg0 bone transform uvec) (-> arg0 bone transform uvec) v1-60)
(vector*! (-> arg0 bone transform fvec) (-> arg0 bone transform fvec) v1-60)
)
(set! (-> arg0 bone transform rvec w) 0.0)
(set! (-> arg0 bone transform uvec w) 0.0)
(set! (-> arg0 bone transform fvec w) 0.0)
)
)
)
)
(when *debug-segment*
(let ((gp-1 (-> *display* frames (-> *display* on-screen) profile-array data 0)))
(when (and *dproc* *debug-segment*)
(let* ((v1-75 (+ (-> gp-1 depth) -1))
(s5-1 (-> gp-1 segment v1-75))
(s4-1 (-> gp-1 base-time))
)
(when (>= v1-75 0)
(set! (-> s5-1 end-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s4-1))))
(+! (-> gp-1 depth) -1)
)
)
)
)
0
)
(none)
)
(when *debug-segment*
(let ((gp-1 (-> *display* frames (-> *display* on-screen) profile-array data 0)))
(when (and *dproc* *debug-segment*)
(let* ((v1-75 (+ (-> gp-1 depth) -1))
(s5-1 (-> gp-1 segment v1-75))
(s4-1 (-> gp-1 base-time))
)
(when (>= v1-75 0)
(set! (-> s5-1 end-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s4-1))))
(+! (-> gp-1 depth) -1)
)
)
)
)
0
)
(none)
)
;; definition for function ragdoll-other-joint-callback
@@ -1080,53 +1080,36 @@
;; INFO: Used lq/sq
(defbehavior ja-linear-vel process-drawable ((chan int))
(local-vars (s4-1 vector) (sv-16 res-tag))
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
(let* ((s4-0 (-> self skel root-channel chan))
(v1-2 (-> s4-0 frame-group))
)
(init-vf0-vector)
(let* ((s4-0 (-> self skel root-channel chan))
(v1-2 (-> s4-0 frame-group))
)
(cond
((-> v1-2 extra)
(set! sv-16 (new 'static 'res-tag))
(let ((gp-0 (res-lump-data (-> v1-2 extra) 'linear-vel pointer :tag-ptr (& sv-16))))
(cond
(gp-0
(let* ((s5-0 (the int (the float (the int (-> s4-0 frame-num)))))
(f0-5 (-> s4-0 frame-num))
(f28-0 (- f0-5 (the float (the int f0-5))))
)
(set! s4-1 (new 'static 'vector))
(let ((f30-0 (ja-rate 0)))
(vector-lerp! s4-1 (the-as vector (&+ gp-0 (* s5-0 16))) (the-as vector (&+ gp-0 (* (+ s5-0 1) 16))) f28-0)
(let ((a0-7 s4-1))
(let ((v1-9 s4-1)
(a1-3 (-> self root scale))
)
(.lvf vf4 (&-> v1-9 quad))
(.lvf vf5 (&-> a1-3 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a0-7 quad) vf6)
)
(vector-float*! s4-1 s4-1 f30-0)
)
(cond
((-> v1-2 extra)
(set! sv-16 (new 'static 'res-tag))
(let ((gp-0 (res-lump-data (-> v1-2 extra) 'linear-vel pointer :tag-ptr (& sv-16))))
(cond
(gp-0
(let* ((s5-0 (the int (the float (the int (-> s4-0 frame-num)))))
(f0-5 (-> s4-0 frame-num))
(f28-0 (- f0-5 (the float (the int f0-5))))
)
(set! s4-1 (new 'static 'vector))
(let ((f30-0 (ja-rate 0)))
(vector-lerp! s4-1 (the-as vector (&+ gp-0 (* s5-0 16))) (the-as vector (&+ gp-0 (* (+ s5-0 1) 16))) f28-0)
(vector*! s4-1 s4-1 (-> self root scale))
(vector-float*! s4-1 s4-1 f30-0)
)
)
(else
(set! s4-1 *null-vector*)
)
)
(else
(set! s4-1 *null-vector*)
)
)
s4-1
)
(else
*null-vector*
)
s4-1
)
(else
*null-vector*
)
)
)
+31 -41
View File
@@ -1257,49 +1257,39 @@
'trans-hook
(lambda :behavior target
()
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
(let* ((v1-0 (-> self parent))
(gp-0 (if v1-0
(the-as target (-> v1-0 0 self))
)
)
)
(init-vf0-vector)
(let ((gp-0 (ppointer->process (-> self parent))))
(vector-copy! (-> self control trans) (-> (the-as target gp-0) flut flut-trans))
(let ((v1-5 (-> (the-as target gp-0) flut flut-quat quad)))
(set! (-> self control quat quad) v1-5)
)
(vector-copy! (-> self control scale) (-> (the-as target gp-0) flut flut-scale))
(set! (-> self control ground-pat material)
(the-as int (-> (the-as target gp-0) control ground-pat material))
)
(set! (-> self draw light-index) (-> (the-as target gp-0) draw light-index))
(let ((t9-0 flut-color-from-index)
(v1-14 (-> self parent))
)
(t9-0 (-> (the-as target (if v1-14
(the-as target (-> v1-14 0 self))
)
)
flut
color-index
)
)
)
(let ((v1-18 (-> self draw color-mult)))
(let ((a0-19 (-> self draw color-mult))
(a1-1 (-> (the-as target gp-0) draw color-mult))
)
(.lvf vf4 (&-> a0-19 quad))
(.lvf vf5 (&-> a1-1 quad))
(vector-copy! (-> self control trans) (-> gp-0 flut flut-trans))
(let ((v1-5 (-> gp-0 flut flut-quat quad)))
(set! (-> self control quat quad) v1-5)
)
(vector-copy! (-> self control scale) (-> gp-0 flut flut-scale))
(set! (-> self control ground-pat material) (the-as int (-> gp-0 control ground-pat material)))
(set! (-> self draw light-index) (-> gp-0 draw light-index))
(let ((t9-0 flut-color-from-index)
(v1-14 (-> self parent))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> v1-18 quad) vf6)
)
(let ((v0-1 (-> (the-as target gp-0) draw color-emissive quad)))
(set! (-> self draw color-emissive quad) v0-1)
v0-1
)
(t9-0 (-> (the-as target (if v1-14
(the-as target (-> v1-14 0 self))
)
)
flut
color-index
)
)
)
(vector*!
(the-as vector (-> self draw color-mult))
(the-as vector (-> self draw color-mult))
(the-as vector (-> gp-0 draw color-mult))
)
(let ((v0-1 (-> gp-0 draw color-emissive quad)))
(set! (-> self draw color-emissive quad) v0-1)
v0-1
)
)
)
+36 -63
View File
@@ -204,66 +204,43 @@
;; INFO: Used lq/sq
;; WARN: Return type mismatch float vs none.
(defun update-templed-lights ((arg0 mood-context))
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(let ((v1-0 (-> arg0 current-fog)))
(set-vector! (-> v1-0 fog-color) 0.0 44.7999 57.5999 1.0)
(set-vector! (-> v1-0 fog-dists) 131072.0 1843200.0 255.0 128.0)
(set-vector! (-> v1-0 erase-color) 0.0 0.0 0.0 128.0)
)
(let ((s5-0 (-> arg0 light-group 1)))
(mem-copy! (the-as pointer s5-0) (the-as pointer (-> *level* level-default mood-context light-group)) 192)
(set! (-> s5-0 ambi extra x) 0.8)
)
(let ((s5-1 (-> arg0 light-group 2)))
(let ((s4-0 (new 'static 'vector :x 1.0 :y 0.65 :z 0.4 :w 1.0)))
(mem-copy! (the-as pointer s5-1) (the-as pointer (-> *level* level-default mood-context light-group)) 192)
(let ((a1-11 (-> s5-1 dir0 color)))
(let ((v1-6 (-> s5-1 dir0 color))
(a0-6 s4-0)
)
(.lvf vf4 (&-> v1-6 quad))
(.lvf vf5 (&-> a0-6 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a1-11 quad) vf6)
)
(let ((a0-7 (-> s5-1 dir1 color)))
(.lvf vf4 (&-> (-> s5-1 dir1 color) quad))
(.lvf vf5 (&-> s4-0 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a0-7 quad) vf6)
)
)
(set! (-> s5-1 ambi extra x) 0.8)
)
(let ((v1-10 (-> arg0 light-group 3)))
(vector-float*! (the-as vector (-> v1-10 ambi color)) (the-as vector (-> arg0 times)) 0.55)
(vector+!
(the-as vector (-> v1-10 ambi color))
(the-as vector (-> v1-10 ambi color))
(new 'static 'vector :x 0.4253 :y 0.39 :z 0.45 :w 1.0)
)
(set! (-> v1-10 dir0 color quad) (-> arg0 times 0 quad))
(let ((a0-12 (-> v1-10 dir0)))
(set! (-> a0-12 direction x) 0.0)
(set! (-> a0-12 direction y) 1.0)
(set! (-> a0-12 direction z) 0.0)
(set! (-> a0-12 direction w) 0.0)
)
(set! (-> v1-10 ambi extra x) 0.8)
(set! (-> v1-10 dir0 extra x) 0.8)
(set! (-> v1-10 dir1 extra x) 0.0)
(set! (-> v1-10 dir2 extra x) 0.0)
)
(none)
(let ((v1-0 (-> arg0 current-fog)))
(set-vector! (-> v1-0 fog-color) 0.0 44.7999 57.5999 1.0)
(set-vector! (-> v1-0 fog-dists) 131072.0 1843200.0 255.0 128.0)
(set-vector! (-> v1-0 erase-color) 0.0 0.0 0.0 128.0)
)
(let ((s5-0 (-> arg0 light-group 1)))
(mem-copy! (the-as pointer s5-0) (the-as pointer (-> *level* level-default mood-context light-group)) 192)
(set! (-> s5-0 ambi extra x) 0.8)
)
(let ((s5-1 (-> arg0 light-group 2)))
(let ((s4-0 (new 'static 'vector :x 1.0 :y 0.65 :z 0.4 :w 1.0)))
(mem-copy! (the-as pointer s5-1) (the-as pointer (-> *level* level-default mood-context light-group)) 192)
(vector*! (the-as vector (-> s5-1 dir0 color)) (the-as vector (-> s5-1 dir0 color)) s4-0)
(vector*! (the-as vector (-> s5-1 dir1 color)) (the-as vector (-> s5-1 dir1 color)) s4-0)
)
(set! (-> s5-1 ambi extra x) 0.8)
)
(let ((v1-10 (-> arg0 light-group 3)))
(vector-float*! (the-as vector (-> v1-10 ambi color)) (the-as vector (-> arg0 times)) 0.55)
(vector+!
(the-as vector (-> v1-10 ambi color))
(the-as vector (-> v1-10 ambi color))
(new 'static 'vector :x 0.4253 :y 0.39 :z 0.45 :w 1.0)
)
(set! (-> v1-10 dir0 color quad) (-> arg0 times 0 quad))
(let ((a0-13 (-> v1-10 dir0)))
(set! (-> a0-13 direction x) 0.0)
(set! (-> a0-13 direction y) 1.0)
(set! (-> a0-13 direction z) 0.0)
(set! (-> a0-13 direction w) 0.0)
)
(set! (-> v1-10 ambi extra x) 0.8)
(set! (-> v1-10 dir0 extra x) 0.8)
(set! (-> v1-10 dir1 extra x) 0.0)
(set! (-> v1-10 dir2 extra x) 0.0)
)
(none)
)
;; definition for function init-mood-templed
@@ -299,7 +276,3 @@
0
(none)
)
+36 -63
View File
@@ -25,66 +25,43 @@
;; INFO: Used lq/sq
;; WARN: Return type mismatch float vs none.
(defun update-templex-lights ((arg0 mood-context))
(rlet ((vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(let ((v1-0 (-> arg0 current-fog)))
(set-vector! (-> v1-0 fog-color) 0.0 44.7999 57.5999 1.0)
(set-vector! (-> v1-0 fog-dists) 131072.0 1843200.0 255.0 128.0)
(set-vector! (-> v1-0 erase-color) 0.0 0.0 0.0 128.0)
)
(let ((s5-0 (-> arg0 light-group 1)))
(mem-copy! (the-as pointer s5-0) (the-as pointer (-> *level* level-default mood-context light-group)) 192)
(set! (-> s5-0 ambi extra x) 0.8)
)
(let ((s5-1 (-> arg0 light-group 2)))
(let ((s4-0 (new 'static 'vector :x 1.0 :y 0.65 :z 0.4 :w 1.0)))
(mem-copy! (the-as pointer s5-1) (the-as pointer (-> *level* level-default mood-context light-group)) 192)
(let ((a1-11 (-> s5-1 dir0 color)))
(let ((v1-6 (-> s5-1 dir0 color))
(a0-6 s4-0)
)
(.lvf vf4 (&-> v1-6 quad))
(.lvf vf5 (&-> a0-6 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a1-11 quad) vf6)
)
(let ((a0-7 (-> s5-1 dir1 color)))
(.lvf vf4 (&-> (-> s5-1 dir1 color) quad))
(.lvf vf5 (&-> s4-0 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> a0-7 quad) vf6)
)
)
(set! (-> s5-1 ambi extra x) 0.8)
)
(let ((v1-10 (-> arg0 light-group 3)))
(vector-float*! (the-as vector (-> v1-10 ambi color)) (the-as vector (-> arg0 times)) 0.55)
(vector+!
(the-as vector (-> v1-10 ambi color))
(the-as vector (-> v1-10 ambi color))
(new 'static 'vector :x 0.4253 :y 0.39 :z 0.45 :w 1.0)
)
(set! (-> v1-10 dir0 color quad) (-> arg0 times 0 quad))
(let ((a0-12 (-> v1-10 dir0)))
(set! (-> a0-12 direction x) 0.0)
(set! (-> a0-12 direction y) 1.0)
(set! (-> a0-12 direction z) 0.0)
(set! (-> a0-12 direction w) 0.0)
)
(set! (-> v1-10 ambi extra x) 0.8)
(set! (-> v1-10 dir0 extra x) 0.8)
(set! (-> v1-10 dir1 extra x) 0.0)
(set! (-> v1-10 dir2 extra x) 0.0)
)
(none)
(let ((v1-0 (-> arg0 current-fog)))
(set-vector! (-> v1-0 fog-color) 0.0 44.7999 57.5999 1.0)
(set-vector! (-> v1-0 fog-dists) 131072.0 1843200.0 255.0 128.0)
(set-vector! (-> v1-0 erase-color) 0.0 0.0 0.0 128.0)
)
(let ((s5-0 (-> arg0 light-group 1)))
(mem-copy! (the-as pointer s5-0) (the-as pointer (-> *level* level-default mood-context light-group)) 192)
(set! (-> s5-0 ambi extra x) 0.8)
)
(let ((s5-1 (-> arg0 light-group 2)))
(let ((s4-0 (new 'static 'vector :x 1.0 :y 0.65 :z 0.4 :w 1.0)))
(mem-copy! (the-as pointer s5-1) (the-as pointer (-> *level* level-default mood-context light-group)) 192)
(vector*! (the-as vector (-> s5-1 dir0 color)) (the-as vector (-> s5-1 dir0 color)) s4-0)
(vector*! (the-as vector (-> s5-1 dir1 color)) (the-as vector (-> s5-1 dir1 color)) s4-0)
)
(set! (-> s5-1 ambi extra x) 0.8)
)
(let ((v1-10 (-> arg0 light-group 3)))
(vector-float*! (the-as vector (-> v1-10 ambi color)) (the-as vector (-> arg0 times)) 0.55)
(vector+!
(the-as vector (-> v1-10 ambi color))
(the-as vector (-> v1-10 ambi color))
(new 'static 'vector :x 0.4253 :y 0.39 :z 0.45 :w 1.0)
)
(set! (-> v1-10 dir0 color quad) (-> arg0 times 0 quad))
(let ((a0-13 (-> v1-10 dir0)))
(set! (-> a0-13 direction x) 0.0)
(set! (-> a0-13 direction y) 1.0)
(set! (-> a0-13 direction z) 0.0)
(set! (-> a0-13 direction w) 0.0)
)
(set! (-> v1-10 ambi extra x) 0.8)
(set! (-> v1-10 dir0 extra x) 0.8)
(set! (-> v1-10 dir1 extra x) 0.0)
(set! (-> v1-10 dir2 extra x) 0.0)
)
(none)
)
;; definition for function update-mood-templex
@@ -104,7 +81,3 @@
0
(none)
)