mirror of
https://github.com/open-goal/jak-project
synced 2026-07-27 06:45:56 -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:
@@ -13,121 +13,107 @@
|
||||
;; 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")
|
||||
;; og:preserve-this
|
||||
(abandon-thread)
|
||||
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")
|
||||
;; og:preserve-this
|
||||
(abandon-thread)
|
||||
;; (.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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch (inline-array transform) vs transform.
|
||||
@@ -143,10 +129,10 @@
|
||||
|
||||
(defmethod align! ((this align-control) (options align-opts) (x float) (y float) (z float))
|
||||
"As long as [[align-flags::0]] is not set call [[process-drawable::16]] on the process being controlled
|
||||
using the arguments passed to construct a [[vector]] - <`x`, `y`, `z`, 1.0>
|
||||
using the arguments passed to construct a [[vector]] - <`x`, `y`, `z`, 1.0>
|
||||
|
||||
@returns the `root` of the [[process-drawable]] after the method returns
|
||||
@see [[process-drawable::16]]"
|
||||
@returns the `root` of the [[process-drawable]] after the method returns
|
||||
@see [[process-drawable::16]]"
|
||||
(when (not (logtest? (-> this flags) (align-flags disabled)))
|
||||
(let* ((process (-> this process))
|
||||
(method-call (method-of-object process apply-alignment))
|
||||
|
||||
@@ -60,6 +60,8 @@
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype joint-mod (basic)
|
||||
"Utility to modify a joint transform from code, rather than just getting it from animation.
|
||||
This is used to make jak look toward an enemy, for example."
|
||||
((mode joint-mod-mode)
|
||||
(process process-drawable)
|
||||
(joint cspace)
|
||||
@@ -119,13 +121,15 @@
|
||||
)
|
||||
|
||||
|
||||
(defun-debug joint-mod-debug-draw ((arg0 joint-mod))
|
||||
(add-debug-matrix #t (bucket-id debug-no-zbuf1) (-> arg0 joint bone transform) (meters 2))
|
||||
(defun-debug joint-mod-debug-draw ((jmod joint-mod))
|
||||
"Debug draw the bone transform for the associated bone of a joint-mod"
|
||||
(add-debug-matrix #t (bucket-id debug-no-zbuf1) (-> jmod joint bone transform) (meters 2))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod reset-blend! ((this joint-mod))
|
||||
"Set the blend to 0."
|
||||
(set! (-> this blend) 0.0)
|
||||
this
|
||||
)
|
||||
@@ -196,6 +200,7 @@
|
||||
)
|
||||
|
||||
(deftype joint-mod-set-local (basic)
|
||||
"Override the trans, quat, and scale of the joint transform. The component to override is selected by the flag."
|
||||
((transform transformq :inline)
|
||||
(set-rotation symbol)
|
||||
(set-scale symbol)
|
||||
@@ -209,6 +214,7 @@
|
||||
|
||||
|
||||
(defun joint-mod-set-local-callback ((arg0 cspace) (arg1 transformq))
|
||||
"Callback for joint-mod-rotate-local. See comment on that type."
|
||||
(let ((v1-0 (the-as joint-mod-set-local (-> arg0 param1))))
|
||||
(cond
|
||||
((-> v1-0 enable)
|
||||
@@ -256,6 +262,8 @@
|
||||
)
|
||||
|
||||
(deftype joint-mod-add-local (basic)
|
||||
"Add to the trans, rotate the quat, and multiply the scale of the joint transform. The components can be selected by the flag.
|
||||
Unlike jak 2, this actually multiplies the scale, instead of adding."
|
||||
((transform transformq :inline)
|
||||
(add-rotation symbol)
|
||||
(add-scale symbol)
|
||||
@@ -269,6 +277,7 @@
|
||||
|
||||
|
||||
(defun joint-mod-add-local-callback ((arg0 cspace) (arg1 transformq))
|
||||
"Callback for joint-mod-add-local. See comment on that type."
|
||||
(let ((s4-0 (the-as joint-mod-add-local (-> arg0 param1))))
|
||||
(when (-> s4-0 enable)
|
||||
(if (-> s4-0 add-translation)
|
||||
@@ -311,6 +320,8 @@
|
||||
)
|
||||
|
||||
(deftype joint-mod-set-world (basic)
|
||||
"Directly overwrite the _bone_ transform (ignoring the parent entirely).
|
||||
This does not pay attention to the flags."
|
||||
((transform transformq :inline)
|
||||
(node-index int32)
|
||||
(enable symbol)
|
||||
@@ -323,6 +334,7 @@
|
||||
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defun joint-mod-set-world-callback ((arg0 cspace) (arg1 transformq))
|
||||
"Callback for joint-mod-set-world. See comment on that type."
|
||||
(let ((v1-0 (the-as joint-mod-set-world (-> arg0 param1))))
|
||||
(if (-> v1-0 enable)
|
||||
(cspace<-transformq! arg0 (-> v1-0 transform))
|
||||
@@ -348,6 +360,8 @@
|
||||
)
|
||||
|
||||
(deftype joint-mod-blend-local (basic)
|
||||
"Blend the _joint_ transform between this transform and the animated one.
|
||||
Then, apply the normal parented transform."
|
||||
((transform transformq :inline)
|
||||
(blend-transform transformq :inline)
|
||||
(node-index int32)
|
||||
@@ -361,6 +375,7 @@
|
||||
|
||||
|
||||
(defun joint-mod-blend-local-callback ((arg0 cspace) (arg1 transformq))
|
||||
"Callback for joint-mod-blend-local. See comment on that type."
|
||||
(let ((gp-0 (the-as joint-mod-blend-local (-> arg0 param1))))
|
||||
(cond
|
||||
((-> gp-0 enable)
|
||||
@@ -399,6 +414,7 @@
|
||||
)
|
||||
|
||||
(deftype joint-mod-spinner (basic)
|
||||
"Control a joint by just spinning it around an axis."
|
||||
((spin-axis vector :inline)
|
||||
(angle float)
|
||||
(spin-rate float)
|
||||
@@ -410,29 +426,30 @@
|
||||
)
|
||||
|
||||
|
||||
(defun joint-mod-spinner-callback ((arg0 cspace) (arg1 transformq))
|
||||
(let ((gp-0 (the-as joint-mod-spinner (-> arg0 param1))))
|
||||
(defun joint-mod-spinner-callback ((bone-cspace cspace) (joint-transform transformq))
|
||||
"cspace callback for joint-mod-spinner. Update the cspace's bone from the parent transformq, plus the rotation from this spinner."
|
||||
(let ((gp-0 (the-as joint-mod-spinner (-> bone-cspace param1))))
|
||||
(when (-> gp-0 enable)
|
||||
(let ((f30-0
|
||||
(the float (sar (shl (the int (+ (-> gp-0 angle) (* (-> gp-0 spin-rate) (seconds-per-frame)))) 48) 48))
|
||||
)
|
||||
)
|
||||
(quaternion-vector-angle! (-> arg1 quat) (-> gp-0 spin-axis) f30-0)
|
||||
(quaternion-vector-angle! (-> joint-transform quat) (-> gp-0 spin-axis) f30-0)
|
||||
(set! (-> gp-0 angle) f30-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(cspace<-parented-transformq-joint! arg0 arg1)
|
||||
(cspace<-parented-transformq-joint! bone-cspace joint-transform)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod new joint-mod-spinner ((allocation symbol) (type-to-make type) (arg0 process-drawable) (arg1 int) (arg2 vector) (arg3 float))
|
||||
(defmethod new joint-mod-spinner ((allocation symbol) (type-to-make type) (proc process-drawable) (bone-idx int) (axis vector) (rate float))
|
||||
(let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
|
||||
(set! (-> v0-0 spin-axis quad) (-> arg2 quad))
|
||||
(set! (-> v0-0 spin-rate) arg3)
|
||||
(set! (-> v0-0 spin-axis quad) (-> axis quad))
|
||||
(set! (-> v0-0 spin-rate) rate)
|
||||
(set! (-> v0-0 enable) #t)
|
||||
(set! (-> v0-0 angle) 0.0)
|
||||
(let ((a0-3 (-> arg0 node-list data arg1)))
|
||||
(let ((a0-3 (-> proc node-list data bone-idx)))
|
||||
(set! (-> a0-3 param0) joint-mod-spinner-callback)
|
||||
(set! (-> a0-3 param1) v0-0)
|
||||
)
|
||||
@@ -441,6 +458,7 @@
|
||||
)
|
||||
|
||||
(deftype joint-mod-blend-world (basic)
|
||||
"Blend the _bone_ transform between this one and the animated one."
|
||||
((transform transformq :inline)
|
||||
(blend-transform transformq :inline)
|
||||
(blend-flags joint-mod-blend-flags)
|
||||
@@ -456,80 +474,66 @@
|
||||
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defun joint-mod-blend-world-callback ((arg0 cspace) (arg1 transformq))
|
||||
(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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.svf (&-> v1-19 quad) vf6)
|
||||
)
|
||||
"Callback for joint-mod-blend-local. See comment on that type."
|
||||
(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)
|
||||
)
|
||||
|
||||
(defmethod new joint-mod-blend-world ((allocation symbol) (type-to-make type) (arg0 process-drawable) (arg1 int) (arg2 symbol) (arg3 float))
|
||||
@@ -559,6 +563,7 @@
|
||||
|
||||
|
||||
(defun joint-mod-rotate-local-callback ((arg0 cspace) (arg1 transformq))
|
||||
"Apply an additional rotation to the transform (left side quaternion multiplication"
|
||||
(let ((v1-0 (the-as joint-mod-rotate-local (-> arg0 param1))))
|
||||
(new 'stack-no-clear 'vector)
|
||||
(if (-> v1-0 enable)
|
||||
|
||||
@@ -303,10 +303,10 @@
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod new joint-mod-ik ((allocation symbol) (type-to-make type) (arg0 process-drawable) (arg1 int) (arg2 float))
|
||||
(defmethod new joint-mod-ik ((allocation symbol) (type-to-make type) (proc process-drawable) (joint-id int) (hand-dist float))
|
||||
(let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
|
||||
(set! (-> v0-0 process) arg0)
|
||||
(set! (-> v0-0 hand-dist) arg2)
|
||||
(set! (-> v0-0 process) proc)
|
||||
(set! (-> v0-0 hand-dist) hand-dist)
|
||||
(set! (-> v0-0 elbow-pole-vector-axis) (the-as uint 0))
|
||||
(logclear! (-> v0-0 flags) (joint-mod-ik-flags elbow-trans-neg))
|
||||
(set! (-> v0-0 elbow-rotation-axis) (the-as uint 2))
|
||||
@@ -314,10 +314,10 @@
|
||||
(set! (-> v0-0 callback) #f)
|
||||
(set! (-> v0-0 blend) 0.0)
|
||||
(logclear! (-> v0-0 flags) (joint-mod-ik-flags enable))
|
||||
(let ((a0-5 (-> arg0 node-list data arg1)))
|
||||
(let ((a0-5 (-> proc node-list data joint-id)))
|
||||
(set! (-> a0-5 param0) joint-mod-ik-callback)
|
||||
(set! (-> a0-5 param1) v0-0)
|
||||
(set! (-> a0-5 param2) (the-as basic arg1))
|
||||
(set! (-> a0-5 param2) (the-as basic joint-id))
|
||||
)
|
||||
v0-0
|
||||
)
|
||||
@@ -329,8 +329,8 @@
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod enable-set! ((this joint-mod-ik) (arg0 symbol))
|
||||
(if arg0
|
||||
(defmethod enable-set! ((this joint-mod-ik) (enable symbol))
|
||||
(if enable
|
||||
(logior! (-> this flags) (joint-mod-ik-flags enable))
|
||||
(logclear! (-> this flags) (joint-mod-ik-flags enable))
|
||||
)
|
||||
@@ -348,103 +348,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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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)
|
||||
)
|
||||
@@ -452,55 +401,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)
|
||||
)
|
||||
|
||||
(defbehavior joint-mod-gun-look-at-handler process ((arg0 cspace) (arg1 transformq))
|
||||
@@ -703,40 +686,40 @@
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod twist-set! ((this joint-mod) (arg0 float) (arg1 float) (arg2 float))
|
||||
(if arg0
|
||||
(set! (-> this twist x) arg0)
|
||||
(defmethod twist-set! ((this joint-mod) (x float) (y float) (z float))
|
||||
(if x
|
||||
(set! (-> this twist x) x)
|
||||
)
|
||||
(if arg1
|
||||
(set! (-> this twist y) arg1)
|
||||
(if y
|
||||
(set! (-> this twist y) y)
|
||||
)
|
||||
(if arg2
|
||||
(set! (-> this twist z) arg2)
|
||||
(if z
|
||||
(set! (-> this twist z) z)
|
||||
)
|
||||
(-> this twist)
|
||||
)
|
||||
|
||||
(defmethod trs-set! ((this joint-mod) (arg0 vector) (arg1 quaternion) (arg2 vector))
|
||||
(if arg0
|
||||
(set! (-> this trans quad) (-> arg0 quad))
|
||||
(defmethod trs-set! ((this joint-mod) (trans vector) (quat quaternion) (scale vector))
|
||||
(if trans
|
||||
(set! (-> this trans quad) (-> trans quad))
|
||||
)
|
||||
(if arg1
|
||||
(quaternion-copy! (-> this quat) arg1)
|
||||
(if quat
|
||||
(quaternion-copy! (-> this quat) quat)
|
||||
)
|
||||
(if arg2
|
||||
(set! (-> this scale quad) (-> arg2 quad))
|
||||
(if scale
|
||||
(set! (-> this scale quad) (-> scale quad))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod target-set! ((this joint-mod) (arg0 vector))
|
||||
(defmethod target-set! ((this joint-mod) (pos vector))
|
||||
(if (= (-> this mode) (joint-mod-mode reset))
|
||||
(mode-set! this (joint-mod-mode look-at))
|
||||
)
|
||||
(let ((f0-0 (vector-vector-distance (-> this process root trans) arg0)))
|
||||
(let ((f0-0 (vector-vector-distance (-> this process root trans) pos)))
|
||||
(set! (-> this shutting-down?) #f)
|
||||
(set! (-> this target quad) (-> arg0 quad))
|
||||
(set! (-> this target quad) (-> pos quad))
|
||||
(if (< f0-0 (-> this max-dist))
|
||||
(set! (-> this blend) 1.0)
|
||||
(set! (-> this blend) 0.0)
|
||||
@@ -1225,112 +1208,78 @@
|
||||
)
|
||||
|
||||
(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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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)
|
||||
)
|
||||
|
||||
(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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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)
|
||||
)
|
||||
|
||||
(defbehavior joint-mod-joint-set-handler process ((arg0 cspace) (arg1 transformq))
|
||||
@@ -1434,40 +1383,23 @@
|
||||
)
|
||||
|
||||
(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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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)
|
||||
)
|
||||
|
||||
(defbehavior joint-mod-joint-set*-world-handler process ((arg0 cspace) (arg1 transformq))
|
||||
|
||||
@@ -116,75 +116,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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -10,125 +10,108 @@
|
||||
;; 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")
|
||||
;; og:preserve-this
|
||||
;; (.lw ra-0 return-from-thread s7-0)
|
||||
;; (.jr ra-0)
|
||||
(abandon-thread)
|
||||
(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")
|
||||
;; og:preserve-this
|
||||
(abandon-thread)
|
||||
;; (.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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch (inline-array transform) vs transform.
|
||||
|
||||
@@ -373,37 +373,20 @@ Unlike jak 2, this actually multiplies the scale, instead of adding."
|
||||
|
||||
(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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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)
|
||||
)
|
||||
|
||||
(defmethod init ((this joint-mod-add-local) (arg0 process-drawable) (arg1 uint) (arg2 joint-mod-base-flags))
|
||||
@@ -552,71 +535,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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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)
|
||||
)
|
||||
|
||||
(defmethod init ((this joint-mod-blend-world) (arg0 process-drawable) (arg1 uint) (arg2 joint-mod-base-flags))
|
||||
|
||||
@@ -295,103 +295,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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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)
|
||||
)
|
||||
@@ -399,55 +348,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)
|
||||
)
|
||||
|
||||
(defbehavior joint-mod-gun-look-at-handler process ((arg0 cspace) (arg1 transformq))
|
||||
@@ -752,138 +735,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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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)
|
||||
)
|
||||
|
||||
(defbehavior joint-mod-world-look-at-handler process ((arg0 cspace) (arg1 transformq))
|
||||
@@ -995,113 +961,79 @@
|
||||
|
||||
(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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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)
|
||||
)
|
||||
|
||||
(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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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)
|
||||
)
|
||||
|
||||
(defbehavior joint-mod-joint-set-handler process ((arg0 cspace) (arg1 transformq))
|
||||
@@ -1206,40 +1138,23 @@
|
||||
)
|
||||
|
||||
(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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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)
|
||||
)
|
||||
|
||||
(defbehavior joint-mod-joint-set*-world-handler process ((arg0 cspace) (arg1 transformq))
|
||||
|
||||
@@ -538,183 +538,123 @@
|
||||
)
|
||||
|
||||
(defun ragdoll-joint-callback ((arg0 cspace) (arg1 transformq) (arg2 process-drawable) (arg3 ragdoll-proc))
|
||||
(local-vars (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)))
|
||||
(local-vars (a2-10 matrix) (sv-240 int) (sv-256 quaternion) (sv-272 vector) (sv-288 matrix))
|
||||
(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)
|
||||
)
|
||||
)
|
||||
(set! (-> s2-1 trans quad) (-> s1-1 position quad))
|
||||
(set! (-> s2-1 trans w) 1.0)
|
||||
(if (logtest? (-> s3-1 ragdoll-flags) (ragdoll-flag mirror))
|
||||
(matrix*! s2-1 s2-1 (-> s3-1 mirror))
|
||||
)
|
||||
(cond
|
||||
((>= (-> s3-1 flex-blend) 1.0)
|
||||
(let ((a2-10 (-> arg0 bone transform))
|
||||
(v1-51 (-> s2-1 rvec quad))
|
||||
(a0-45 (-> s2-1 uvec quad))
|
||||
(a1-20 (-> s2-1 fvec quad))
|
||||
(a3-1 (-> s2-1 trans quad))
|
||||
)
|
||||
(set! (-> a2-10 rvec quad) v1-51)
|
||||
(set! (-> a2-10 uvec quad) a0-45)
|
||||
(set! (-> a2-10 fvec quad) a1-20)
|
||||
(set! (-> a2-10 trans quad) a3-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)
|
||||
)
|
||||
(ragdoll-matrix-interp (-> arg0 bone transform) (-> arg0 bone transform) s2-1 (-> s3-1 flex-blend))
|
||||
(set! (-> arg0 bone transform trans quad) (-> s1-3 quad))
|
||||
(set! (-> arg0 bone transform trans w) 1.0)
|
||||
a2-10
|
||||
)
|
||||
)
|
||||
(set! (-> arg0 bone transform trans w) 1.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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)
|
||||
)
|
||||
|
||||
(defbehavior ragdoll-other-joint-callback ragdoll-proc ((arg0 cspace) (arg1 transformq))
|
||||
@@ -863,7 +803,7 @@
|
||||
)
|
||||
(vector-! (-> s1-0 velocity) sv-144 (-> s1-0 position))
|
||||
(vector-float*! (-> s1-0 velocity) (-> s1-0 velocity) (/ 1.0 (-> pp clock time-adjust-ratio)))
|
||||
(set! (-> s1-0 position quad) (-> sv-144 quad))
|
||||
(vector-copy! (-> s1-0 position) sv-144)
|
||||
)
|
||||
(else
|
||||
(vector<-cspace! (-> s1-0 position) (-> arg0 node-list data (-> s1-0 joint-index)))
|
||||
@@ -891,7 +831,7 @@
|
||||
(vector<-cspace! s0-0 (-> arg0 node-list data (-> this ragdoll-joints (+ s2-1 -1) joint-index)))
|
||||
)
|
||||
(else
|
||||
(set! (-> s0-0 quad) (-> arg0 root trans quad))
|
||||
(vector-copy! s0-0 (-> arg0 root trans))
|
||||
)
|
||||
)
|
||||
(if (logtest? (-> this ragdoll-flags) (ragdoll-flag mirror))
|
||||
@@ -990,7 +930,7 @@
|
||||
(let ((s4-1 (new 'stack-no-clear 'matrix)))
|
||||
(matrix-axis-angle! s4-1 (-> this orient-tform) (- (-> this orient-tform w)))
|
||||
(matrix*! s4-1 s4-1 arg2)
|
||||
(set! (-> s4-1 trans quad) (-> arg2 trans quad))
|
||||
(vector-copy! (-> s4-1 trans) (-> arg2 trans))
|
||||
(add-debug-matrix #t (bucket-id debug-no-zbuf1) s4-1 (meters 2))
|
||||
)
|
||||
)
|
||||
@@ -1009,7 +949,7 @@
|
||||
(quaternion->matrix arg3 (-> s2-0 quat))
|
||||
(matrix-axis-angle! s3-0 (-> arg1 pre-tform) (- (-> arg1 pre-tform w)))
|
||||
(matrix*! arg3 s3-0 arg3)
|
||||
(set! (-> arg3 trans quad) (-> s2-0 position quad))
|
||||
(vector-copy! (-> arg3 trans) (-> s2-0 position))
|
||||
)
|
||||
(else
|
||||
(matrix-axis-angle! s3-0 (-> arg1 pre-tform) (- (-> arg1 pre-tform w)))
|
||||
@@ -1023,15 +963,15 @@
|
||||
(let ((s3-1 (new 'stack-no-clear 'matrix))
|
||||
(s5-1 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(set! (-> s5-1 quad) (-> arg3 trans quad))
|
||||
(vector-copy! s5-1 (-> arg3 trans))
|
||||
(matrix-axis-angle! s3-1 (-> arg1 pre-tform) (- (-> arg1 pre-tform w)))
|
||||
(matrix*! arg3 s3-1 arg3)
|
||||
(set! (-> arg3 trans quad) (-> s5-1 quad))
|
||||
(vector-copy! (-> arg3 trans) s5-1)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(quaternion->matrix arg3 (-> arg0 root quat))
|
||||
(set! (-> arg3 trans quad) (-> arg0 root trans quad))
|
||||
(vector-copy! (-> arg3 trans) (-> arg0 root trans))
|
||||
)
|
||||
)
|
||||
0
|
||||
@@ -1344,7 +1284,7 @@
|
||||
(.svf (&-> v1-176 quad) vf1)
|
||||
)
|
||||
)
|
||||
(set! (-> s0-1 position quad) (-> sv-560 quad))
|
||||
(vector-copy! (-> s0-1 position) sv-560)
|
||||
(cond
|
||||
((or (> s1-1 0) (!= (-> s0-1 parent-joint) -1))
|
||||
(vector-! (-> s3-1 uvec) sv-560 (-> s2-1 trans))
|
||||
@@ -1392,11 +1332,11 @@
|
||||
(.mul.x.vf acc vf2 vf3)
|
||||
(.add.mul.w.vf.xyz vf4 vf1 vf0 acc)
|
||||
(.svf (&-> sv-544 quad) vf4)
|
||||
(set! (-> s0-1 old-x quad) (-> s3-1 rvec quad))
|
||||
(vector-copy! (-> s0-1 old-x) (-> s3-1 rvec))
|
||||
)
|
||||
(else
|
||||
(set! (-> s3-1 rvec quad) (-> sv-528 quad))
|
||||
(set! (-> s0-1 old-x quad) (-> s3-1 rvec quad))
|
||||
(vector-copy! (-> s3-1 rvec) sv-528)
|
||||
(vector-copy! (-> s0-1 old-x) (-> s3-1 rvec))
|
||||
)
|
||||
)
|
||||
(vector-cross! (-> s3-1 fvec) (-> s3-1 rvec) (-> s3-1 uvec))
|
||||
@@ -1411,27 +1351,16 @@
|
||||
(quaternion->matrix s3-1 (-> s0-1 quat))
|
||||
)
|
||||
)
|
||||
(set! (-> s3-1 trans quad) (-> sv-560 quad))
|
||||
(vector-copy! (-> s3-1 trans) sv-560)
|
||||
(set! (-> s3-1 rvec w) 0.0)
|
||||
(set! (-> s3-1 uvec w) 0.0)
|
||||
(set! (-> s3-1 fvec w) 0.0)
|
||||
(if (and (zero? s1-1) (< (-> s0-1 parent-joint) 0) (logtest? (-> this ragdoll-flags) (ragdoll-flag rf7)))
|
||||
(set! (-> arg0 root trans quad) (-> s3-1 trans quad))
|
||||
(vector-copy! (-> arg0 root trans) (-> s3-1 trans))
|
||||
)
|
||||
(ragdoll-method-13 this arg1 s0-1 s3-1 s2-1)
|
||||
)
|
||||
(let* ((a2-19 s2-1)
|
||||
(a3-10 s3-1)
|
||||
(v1-216 (-> a3-10 rvec quad))
|
||||
(a0-119 (-> a3-10 uvec quad))
|
||||
(a1-47 (-> a3-10 fvec quad))
|
||||
(a3-11 (-> a3-10 trans quad))
|
||||
)
|
||||
(set! (-> a2-19 rvec quad) v1-216)
|
||||
(set! (-> a2-19 uvec quad) a0-119)
|
||||
(set! (-> a2-19 fvec quad) a1-47)
|
||||
(set! (-> a2-19 trans quad) a3-11)
|
||||
)
|
||||
(matrix-copy! s2-1 s3-1)
|
||||
)
|
||||
)
|
||||
(if (and (< (min (the-as int (-> this num-joints)) (max 2 (the int (* 0.9 (the float (-> this num-joints))))))
|
||||
@@ -1479,8 +1408,8 @@
|
||||
(set! (-> s2-0 joint-type) (-> v1-15 joint-type))
|
||||
(set! (-> s2-0 joint-index) (-> v1-15 joint-index))
|
||||
(set! (-> s2-0 parent-joint) (-> v1-15 parent-joint))
|
||||
(set! (-> s2-0 pre-tform quad) (-> v1-15 pre-tform quad))
|
||||
(set! (-> s2-0 geo-tform quad) (-> v1-15 geo-tform quad))
|
||||
(vector-copy! (-> s2-0 pre-tform) (-> v1-15 pre-tform))
|
||||
(vector-copy! (-> s2-0 geo-tform) (-> v1-15 geo-tform))
|
||||
(set! (-> s2-0 axial-slop) (-> v1-15 axial-slop))
|
||||
(set! (-> s2-0 max-angle) (-> v1-15 max-angle))
|
||||
(set! (-> s2-0 coll-rad) (-> v1-15 coll-rad))
|
||||
@@ -1509,11 +1438,11 @@
|
||||
)
|
||||
0
|
||||
)
|
||||
(set! (-> this orient-tform quad) (-> setup orient-tform quad))
|
||||
(set! (-> this scale quad) (-> setup scale quad))
|
||||
(vector-copy! (-> this orient-tform) (-> setup orient-tform))
|
||||
(vector-copy! (-> this scale) (-> setup scale))
|
||||
(set! (-> this bg-collide-with) (the-as uint (-> setup bg-collide-with)))
|
||||
(set-vector! (-> this gravity) 0.0 -1.0 0.0 1.0)
|
||||
(set! (-> this gravity-target quad) (-> this gravity quad))
|
||||
(vector-copy! (-> this gravity-target) (-> this gravity))
|
||||
(set! (-> this stretch-vel) 0.7)
|
||||
(set! (-> this stretch-vel-parallel) 0.8)
|
||||
(set! (-> this compress-vel) 0.85)
|
||||
@@ -1584,7 +1513,7 @@
|
||||
)
|
||||
)
|
||||
((= proc *target*)
|
||||
(set! (-> s4-0 quad) (-> (the-as process-drawable proc) root trans quad))
|
||||
(vector-copy! s4-0 (-> (the-as process-drawable proc) root trans))
|
||||
(vector-! s5-0 (-> s2-0 root trans) (-> (the-as process-drawable proc) root trans))
|
||||
(set! s3-0 #t)
|
||||
)
|
||||
@@ -1600,12 +1529,12 @@
|
||||
(the-as touching-shapes-entry a3-1)
|
||||
)
|
||||
)
|
||||
(set! (-> s4-0 quad) (-> s5-0 quad))
|
||||
(vector-copy! s4-0 s5-0)
|
||||
(vector-! s5-0 (-> s2-0 root trans) s5-0)
|
||||
(set! s3-0 #t)
|
||||
)
|
||||
(when (logtest? (attack-mask attacker-velocity) (-> (the-as attack-info gp-0) mask))
|
||||
(set! (-> s5-0 quad) (-> (the-as attack-info gp-0) attacker-velocity quad))
|
||||
(vector-copy! s5-0 (-> (the-as attack-info gp-0) attacker-velocity))
|
||||
(when (not s3-0)
|
||||
(vector-! s4-0 (-> self ragdoll ragdoll-joints 0 position) s5-0)
|
||||
(set! s3-0 #t)
|
||||
@@ -1620,7 +1549,7 @@
|
||||
(set! (-> s5-0 y) 0.0)
|
||||
(vector-normalize! s5-0 409.6)
|
||||
(+! (-> s5-0 y) 1024.0)
|
||||
(set! (-> self ragdoll ragdoll-joints 0 velocity quad) (-> s5-0 quad))
|
||||
(vector-copy! (-> self ragdoll ragdoll-joints 0 velocity) s5-0)
|
||||
(if (logtest? (-> (the-as attack-info gp-0) mask) (attack-mask id))
|
||||
(set! (-> self last-attack-id) (-> (the-as attack-info gp-0) id))
|
||||
)
|
||||
|
||||
@@ -541,7 +541,7 @@
|
||||
((-> jcontrol postbind-function) this joints jcontrol)
|
||||
)
|
||||
(let ((a1-5 (new 'stack-no-clear 'vector)))
|
||||
(set! (-> a1-5 quad) (-> this bounds quad))
|
||||
(vector-copy! a1-5 (-> this bounds))
|
||||
(set! (-> a1-5 w) 1.0)
|
||||
(vector-norm-matrix*!
|
||||
(-> this origin)
|
||||
@@ -819,7 +819,7 @@
|
||||
(set! (-> v1-35 origin-joint-index) (the-as uint (-> skelgroup origin-joint-index)))
|
||||
(set! (-> v1-35 shadow-joint-index) (the-as uint (-> skelgroup shadow-joint-index)))
|
||||
)
|
||||
(set! (-> s2-0 bounds quad) (-> skelgroup bounds quad))
|
||||
(vector-copy! (-> s2-0 bounds) (-> skelgroup bounds))
|
||||
(let ((v1-37 (-> skelgroup shadow)))
|
||||
(when (and (> v1-37 0) (< v1-37 sv-20))
|
||||
(let ((s0-0 (-> s1-0 data v1-37)))
|
||||
@@ -923,19 +923,17 @@
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! (-> s3-0 skeleton bones 0 transform trans quad) (-> (the-as vector (get-property-struct
|
||||
(-> s3-0 jgeo extra)
|
||||
'trans-offset
|
||||
'interp
|
||||
-1000000000.0
|
||||
*null-vector*
|
||||
(the-as (pointer res-tag) #f)
|
||||
*res-static-buf*
|
||||
)
|
||||
)
|
||||
quad
|
||||
)
|
||||
)
|
||||
(vector-copy! (-> s3-0 skeleton bones 0 transform trans) (the-as vector (get-property-struct
|
||||
(-> s3-0 jgeo extra)
|
||||
'trans-offset
|
||||
'interp
|
||||
-1000000000.0
|
||||
*null-vector*
|
||||
(the-as (pointer res-tag) #f)
|
||||
*res-static-buf*
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -1118,53 +1116,36 @@
|
||||
|
||||
(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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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*
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -2079,8 +2060,8 @@
|
||||
(set! v1-0 (-> self entity))
|
||||
)
|
||||
(if arg1
|
||||
(set! (-> gp-0 quad) (-> arg1 quad))
|
||||
(set! (-> gp-0 quad) (-> v1-0 extra trans quad))
|
||||
(vector-copy! gp-0 arg1)
|
||||
(vector-copy! gp-0 (-> v1-0 extra trans))
|
||||
)
|
||||
(let ((s5-0 (-> v1-0 extra perm task))
|
||||
(s4-0 (new 'static 'fact-info))
|
||||
|
||||
@@ -1215,49 +1215,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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -2774,7 +2764,7 @@
|
||||
)
|
||||
(when gp-0
|
||||
(quaternion-copy! (-> gp-0 root quat) (-> (the-as target self) control quat-for-control))
|
||||
(set! (-> gp-0 root trans quad) (-> (the-as target self) control trans quad))
|
||||
(vector-copy! (-> gp-0 root trans) (-> (the-as target self) control trans))
|
||||
(let ((s5-1 (the-as target self)))
|
||||
;; og:preserve-this
|
||||
(set! self (the target gp-0))
|
||||
|
||||
@@ -177,66 +177,43 @@
|
||||
|
||||
;; 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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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)
|
||||
)
|
||||
|
||||
(defun init-mood-templed ((arg0 mood-context))
|
||||
|
||||
@@ -16,66 +16,43 @@
|
||||
|
||||
;; 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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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.w vf6 vf0 vf0)
|
||||
(.mul.vf.xyz vf6 vf4 vf5)
|
||||
(.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)
|
||||
)
|
||||
|
||||
(defbehavior update-mood-templex time-of-day-proc ((arg0 mood-context) (arg1 float) (arg2 int))
|
||||
|
||||
Reference in New Issue
Block a user