From a8ae15139b309aec173aae327ecad303580e7d84 Mon Sep 17 00:00:00 2001 From: Luminar Light <18116946+LuminarLight@users.noreply.github.com> Date: Tue, 1 Aug 2023 23:06:20 +0200 Subject: [PATCH] Anim Tester X - Quality of Life improvements (#2682) Co-authored-by: Tyler Wilding Co-authored-by: ManDude <7569514+ManDude@users.noreply.github.com> --- goal_src/jak1/pc/debug/anim-tester-x.gc | 140 +++++++++++++--------- goal_src/jak1/pc/debug/default-menu-pc.gc | 9 ++ goal_src/jak2/pc/debug/anim-tester-x.gc | 139 ++++++++++++--------- goal_src/jak2/pc/debug/default-menu-pc.gc | 9 ++ 4 files changed, 185 insertions(+), 112 deletions(-) diff --git a/goal_src/jak1/pc/debug/anim-tester-x.gc b/goal_src/jak1/pc/debug/anim-tester-x.gc index c9ac3505fc..a0fec20e58 100644 --- a/goal_src/jak1/pc/debug/anim-tester-x.gc +++ b/goal_src/jak1/pc/debug/anim-tester-x.gc @@ -464,7 +464,7 @@ (if (= *master-mode* 'menu) (anim-tester-x-interface) - (set! *camera-read-buttons* #t) + (set! *camera-read-buttons* #f) ) (when (!= *master-mode* 'menu) (add-debug-x #t (bucket-id debug-no-zbuf) (-> self root trans) *color-white*) @@ -472,65 +472,92 @@ (none)) :code (behavior () + (let + ((need-update #f) + (lst (the-as atx-list #f))) - (loop + (loop - (when (and (-> self cur-joint-geo) (!= (-> self cur-joint-geo) (-> self draw jgeo))) - (process-disconnect self) - (set! (-> self draw art-group) (-> self cur-art-group)) - (set! (-> self draw cur-lod) -1) - (set! (-> self draw jgeo) (-> self cur-joint-geo)) - (set! (-> self draw sink-group) (-> *level* level-default foreground-sink-group 1)) - (set! (-> self draw lod-set lod 0 geo) (-> self cur-mesh-geo)) - (set! (-> self draw lod-set lod 0 dist) (meters 999999)) - (set! (-> self draw bounds w) (meters 10)) - (set! (-> self draw data-format) (the-as uint 1)) - (vector-copy! (-> self draw color-mult) (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)) - (vector-copy! (-> self draw color-emissive) (new 'static 'vector)) - (set! (-> self draw secondary-interp) 0.0) - (set! (-> self draw shadow) #f) - (set! (-> self draw shadow-ctrl) #f) - (set! (-> self draw ripple) #f) - (set! (-> self draw level-index) (the-as uint 2)) - (set! (-> self node-list) (make-nodes-from-jg (-> self draw jgeo) *default-skel-template* 'debug)) - (if (not (-> self skel effect)) - (set! (-> self skel effect) (new 'process 'effect-control self))) - (fill-skeleton-cache self) - (lod-set! (-> self draw) 0) - (ja-channel-set! 0) - ) - - (cond - ((-> self cur-joint-geo) - (if (> 1 (-> self skel active-channels)) - (ja-channel-set! 1)) - (set! (-> self draw lod-set lod 0 geo) (-> self cur-mesh-geo)) - (ja-no-eval :group! (-> self cur-joint-anim)) - (when (!= *master-mode* 'menu) - (case (-> *ATX-settings* mode) - (('loop) - (ja :num! (loop! (-> *ATX-settings* speed))) - ) - (('identity) - (ja :num! (identity (-> *ATX-settings* frame-num))) - ) - (('seek) - (ja :num! (seek! max (-> *ATX-settings* speed))) - ) - ) + (when (and (-> self cur-joint-geo) (!= (-> self cur-joint-geo) (-> self draw jgeo))) + (process-disconnect self) + (set! (-> self draw art-group) (-> self cur-art-group)) + (set! (-> self draw cur-lod) -1) + (set! (-> self draw jgeo) (-> self cur-joint-geo)) + (set! (-> self draw sink-group) (-> *level* level-default foreground-sink-group 1)) + (set! (-> self draw lod-set lod 0 geo) (-> self cur-mesh-geo)) + (set! (-> self draw lod-set lod 0 dist) (meters 999999)) + (set! (-> self draw bounds w) (meters 10)) + (set! (-> self draw data-format) (the-as uint 1)) + (vector-copy! (-> self draw color-mult) (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)) + (vector-copy! (-> self draw color-emissive) (new 'static 'vector)) + (set! (-> self draw secondary-interp) 0.0) + (set! (-> self draw shadow) #f) + (set! (-> self draw shadow-ctrl) #f) + (set! (-> self draw ripple) #f) + (set! (-> self draw level-index) (the-as uint 2)) + (set! (-> self node-list) (make-nodes-from-jg (-> self draw jgeo) *default-skel-template* 'debug)) + (if (not (-> self skel effect)) + (set! (-> self skel effect) (new 'process 'effect-control self))) + (fill-skeleton-cache self) + (lod-set! (-> self draw) 0) + (ja-channel-set! 0) + (set! lst (-> self selected-art-group ja-list)) ) - (compute-alignment! (-> self align)) - (align! (-> self align) (align-opts adjust-x-vel adjust-y-vel adjust-xz-vel keep-other-velocities adjust-quat) - 1.0 1.0 1.0) - ) - (else - (if (!= *master-mode* 'menu) - (format *stdcon* "~%~%no art selected~%") - ) - ) - ) - (suspend)) + (cond + ((-> self cur-joint-geo) + (if (> 1 (-> self skel active-channels)) + (ja-channel-set! 1)) + (set! (-> self draw lod-set lod 0 geo) (-> self cur-mesh-geo)) + (ja-no-eval :group! (-> self cur-joint-anim)) + (when (!= *master-mode* 'menu) + (case (-> *ATX-settings* mode) + (('loop) + (ja :num! (loop! (-> *ATX-settings* speed))) + ) + (('identity) + (ja :num! (identity (-> *ATX-settings* frame-num))) + ) + (('seek) + (ja :num! (seek! max (-> *ATX-settings* speed))) + ) + ) + ) + (compute-alignment! (-> self align)) + (align! (-> self align) (align-opts adjust-x-vel adjust-y-vel adjust-xz-vel keep-other-velocities adjust-quat) + 1.0 1.0 1.0) + ) + (else + (if (!= *master-mode* 'menu) + (format *stdcon* "~%~%no art selected~%") + ) + ) + ) + + (when (and lst (-> lst head) (!= *master-mode* 'menu)) + (cond + ((cpad-pressed? 0 left) + (cpad-clear! 0 left) + (-! (-> lst selection) 1) + (set! need-update #t)) + ((cpad-pressed? 0 right) + (cpad-clear! 0 right) + (+! (-> lst selection) 1) + (set! need-update #t)) + ) + (cond + ((< (-> lst selection) 0) + (set! (-> lst selection) (1- (atx-list-size lst)))) + ((>= (-> lst selection) (atx-list-size lst)) + (set! (-> lst selection) 0)) + ) + (when need-update + ((-> lst func) (atx-list-get-by-index lst (-> lst selection))) + (set! need-update #f)) + ) + + (suspend)) + ) ) :post (behavior () @@ -577,6 +604,7 @@ "kill the anim tester process" (kill-by-type anim-tester-x *default-pool*) + (set! *camera-read-buttons* #t) (set! *atx* (the (pointer anim-tester-x) #f))) (defun atx-start () diff --git a/goal_src/jak1/pc/debug/default-menu-pc.gc b/goal_src/jak1/pc/debug/default-menu-pc.gc index a09bb75dcf..fb8e28dd52 100644 --- a/goal_src/jak1/pc/debug/default-menu-pc.gc +++ b/goal_src/jak1/pc/debug/default-menu-pc.gc @@ -492,6 +492,14 @@ ) #f) +(defun dm-anim-tester-x-refresh () + (atx-start) + (atx-list-init! (-> *ATX-settings* list-ctrl)) + (set! (-> *ATX-settings* list-ctrl func) atx-list-art-group-func) + (atx-add-common-group) + (atx-add-level-group) +) + (defun dm-anim-tester-x-func ((action symbol)) (unless *atx* (atx-start)) @@ -535,6 +543,7 @@ (debug-menu-append-item menu (new-dm-func "Stop" #f atx-stop)) (debug-menu-append-item menu (new-dm-var-float "Speed" (the int #f) (dm-lambda-float-var (-> *ATX-settings* speed)) 0.01 -10.0 10.0)) (debug-menu-append-item menu (new-dm-var-float "Frame Num" (the int #f) (dm-lambda-float-var (-> *ATX-settings* frame-num)) 0.1 0.0 99999.0)) + (debug-menu-append-item menu (new-dm-func "Refresh" #f dm-anim-tester-x-refresh)) (debug-menu-append-item menu (new-dm-func "Pick Art Group" 'pick-art-group dm-anim-tester-x-func)) (debug-menu-append-item menu (new-dm-func "Pick Anim" 'at-pick-joint-anim dm-anim-tester-x-func)) (debug-menu-append-item menu (new-dm-func "Pick Mesh" 'pick-mesh-geo dm-anim-tester-x-func)) diff --git a/goal_src/jak2/pc/debug/anim-tester-x.gc b/goal_src/jak2/pc/debug/anim-tester-x.gc index 479ca4ae41..a137ff4d0e 100644 --- a/goal_src/jak2/pc/debug/anim-tester-x.gc +++ b/goal_src/jak2/pc/debug/anim-tester-x.gc @@ -473,66 +473,93 @@ (none)) :code (behavior () + (let + ((need-update #f) + (lst (the-as atx-list #f))) - (loop + (loop - (when (and (-> self cur-joint-geo) (!= (-> self cur-joint-geo) (-> self draw jgeo))) - (process-disconnect self) - (set! (-> self draw art-group) (-> self cur-art-group)) - (set! (-> self draw cur-lod) -1) - (set! (-> self draw jgeo) (-> self cur-joint-geo)) - ;; (set! (-> self draw sink-group) (-> *level* default-level foreground-sink-group 1)) - (set! (-> self draw lod-set lod 0 geo) (-> self cur-mesh-geo)) - (set! (-> self draw lod-set lod 0 dist) (meters 999999)) - (set! (-> self draw bounds w) (meters 10)) - (set! (-> self draw data-format) (draw-control-data-format merc)) - (vector-copy! (-> self draw color-mult) (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)) - (vector-copy! (-> self draw color-emissive) (new 'static 'vector)) - ;; (set! (-> self draw secondary-interp) 0.0) - (set! (-> self draw shadow) #f) - (set! (-> self draw shadow-ctrl) #f) - (set! (-> self draw ripple) #f) - (set! (-> self draw level-index) (the-as uint 2)) - ;; (set! (-> self node-list) (make-nodes-from-jg (-> self draw jgeo) *default-skel-template* 'debug)) - (set! (-> self node-list) (setup-cspace-and-add (-> self draw) (-> self draw jgeo) 'debug)) - (if (not (-> self skel effect)) - (set! (-> self skel effect) (new 'process 'effect-control self))) - ;; (fill-skeleton-cache self) - (lod-set! (-> self draw) 0) - (ja-channel-set! 0) - ) - - (cond - ((-> self cur-joint-geo) - (if (> 1 (-> self skel active-channels)) - (ja-channel-set! 1)) - (set! (-> self draw lod-set lod 0 geo) (-> self cur-mesh-geo)) - (ja-no-eval :group! (-> self cur-joint-anim)) - (when (!= *master-mode* 'menu) - (case (-> *ATX-settings* mode) - (('loop) - (ja :num! (loop! (-> *ATX-settings* speed))) - ) - (('identity) - (ja :num! (identity (-> *ATX-settings* frame-num))) - ) - (('seek) - (ja :num! (seek! max (-> *ATX-settings* speed))) - ) - ) + (when (and (-> self cur-joint-geo) (!= (-> self cur-joint-geo) (-> self draw jgeo))) + (process-disconnect self) + (set! (-> self draw art-group) (-> self cur-art-group)) + (set! (-> self draw cur-lod) -1) + (set! (-> self draw jgeo) (-> self cur-joint-geo)) + ;; (set! (-> self draw sink-group) (-> *level* default-level foreground-sink-group 1)) + (set! (-> self draw lod-set lod 0 geo) (-> self cur-mesh-geo)) + (set! (-> self draw lod-set lod 0 dist) (meters 999999)) + (set! (-> self draw bounds w) (meters 10)) + (set! (-> self draw data-format) (draw-control-data-format merc)) + (vector-copy! (-> self draw color-mult) (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)) + (vector-copy! (-> self draw color-emissive) (new 'static 'vector)) + ;; (set! (-> self draw secondary-interp) 0.0) + (set! (-> self draw shadow) #f) + (set! (-> self draw shadow-ctrl) #f) + (set! (-> self draw ripple) #f) + (set! (-> self draw level-index) (the-as uint 2)) + ;; (set! (-> self node-list) (make-nodes-from-jg (-> self draw jgeo) *default-skel-template* 'debug)) + (set! (-> self node-list) (setup-cspace-and-add (-> self draw) (-> self draw jgeo) 'debug)) + (if (not (-> self skel effect)) + (set! (-> self skel effect) (new 'process 'effect-control self))) + ;; (fill-skeleton-cache self) + (lod-set! (-> self draw) 0) + (ja-channel-set! 0) + (set! lst (-> self selected-art-group ja-list)) ) - (compute-alignment! (-> self align)) - (align! (-> self align) (align-opts adjust-x-vel adjust-y-vel adjust-xz-vel keep-other-velocities adjust-quat) - 1.0 1.0 1.0) - ) - (else - (if (!= *master-mode* 'menu) - (format *stdcon* "~%~%no art selected~%") - ) - ) - ) - (suspend)) + (cond + ((-> self cur-joint-geo) + (if (> 1 (-> self skel active-channels)) + (ja-channel-set! 1)) + (set! (-> self draw lod-set lod 0 geo) (-> self cur-mesh-geo)) + (ja-no-eval :group! (-> self cur-joint-anim)) + (when (!= *master-mode* 'menu) + (case (-> *ATX-settings* mode) + (('loop) + (ja :num! (loop! (-> *ATX-settings* speed))) + ) + (('identity) + (ja :num! (identity (-> *ATX-settings* frame-num))) + ) + (('seek) + (ja :num! (seek! max (-> *ATX-settings* speed))) + ) + ) + ) + (compute-alignment! (-> self align)) + (align! (-> self align) (align-opts adjust-x-vel adjust-y-vel adjust-xz-vel keep-other-velocities adjust-quat) + 1.0 1.0 1.0) + ) + (else + (if (!= *master-mode* 'menu) + (format *stdcon* "~%~%no art selected~%") + ) + ) + ) + + (when (and lst (-> lst head) (!= *master-mode* 'menu)) + (cond + ((cpad-pressed? 0 left) + (cpad-clear! 0 left) + (-! (-> lst selection) 1) + (set! need-update #t)) + ((cpad-pressed? 0 right) + (cpad-clear! 0 right) + (+! (-> lst selection) 1) + (set! need-update #t)) + ) + (cond + ((< (-> lst selection) 0) + (set! (-> lst selection) (1- (atx-list-size lst)))) + ((>= (-> lst selection) (atx-list-size lst)) + (set! (-> lst selection) 0)) + ) + (when need-update + ((-> lst func) (atx-list-get-by-index lst (-> lst selection))) + (set! need-update #f)) + ) + + (suspend)) + ) ) :post (behavior () diff --git a/goal_src/jak2/pc/debug/default-menu-pc.gc b/goal_src/jak2/pc/debug/default-menu-pc.gc index 6cd5134211..203bb3cd44 100644 --- a/goal_src/jak2/pc/debug/default-menu-pc.gc +++ b/goal_src/jak2/pc/debug/default-menu-pc.gc @@ -485,6 +485,14 @@ ) #f) +(defun dm-anim-tester-x-refresh () + (atx-start) + (atx-list-init! (-> *ATX-settings* list-ctrl)) + (set! (-> *ATX-settings* list-ctrl func) atx-list-art-group-func) + (atx-add-common-group) + (atx-add-level-group) +) + (defun dm-anim-tester-x-func ((action symbol)) (unless *atx* (atx-start)) @@ -532,6 +540,7 @@ (debug-menu-append-item menu (new-dm-func "Stop" #f atx-stop)) (debug-menu-append-item menu (new-dm-var-float "Speed" (the int #f) (dm-lambda-float-var (-> *ATX-settings* speed)) 0.01 -10.0 10.0)) (debug-menu-append-item menu (new-dm-var-float "Frame Num" (the int #f) (dm-lambda-float-var (-> *ATX-settings* frame-num)) 0.1 0.0 99999.0)) + (debug-menu-append-item menu (new-dm-func "Refresh" #f dm-anim-tester-x-refresh)) (debug-menu-append-item menu (new-dm-func "Pick Art Group" 'pick-art-group dm-anim-tester-x-func)) (debug-menu-append-item menu (new-dm-func "Pick Anim" 'at-pick-joint-anim dm-anim-tester-x-func)) (debug-menu-append-item menu (new-dm-func "Pick Mesh" 'pick-mesh-geo dm-anim-tester-x-func))