mirror of
https://github.com/open-goal/jak-project
synced 2026-08-04 01:04:11 -04:00
[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:
+92
-109
@@ -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
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user