open-goal-jak-project/test/decompiler/reference/levels/sunken/orbit-plat_REF.gc

999 lines
35 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; definition of type orbit-plat-bottom
(deftype orbit-plat-bottom (process-drawable)
((parent-override (pointer orbit-plat) :offset 12)
(part2 sparticle-launch-control :offset-assert 176)
)
:heap-base #x50
:method-count-assert 21
:size-assert #xb4
:flag-assert #x15005000b4
(:methods
(dummy-20 (_type_ vector vector) none 20)
)
(:states
orbit-plat-bottom-idle
)
)
;; definition for method 3 of type orbit-plat-bottom
(defmethod inspect orbit-plat-bottom ((obj orbit-plat-bottom))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tpart2: ~A~%" (-> obj part2))
obj
)
;; failed to figure out what this is:
(defskelgroup *orbit-plat-bottom-sg* orbit-plat-bottom
0
2
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 2.8)
:longest-edge (meters 0)
)
;; definition of type orbit-plat
(deftype orbit-plat (baseplat)
((other entity-actor :offset-assert 228)
(rot-dir float :offset-assert 232)
(reset-trans vector :inline :offset-assert 240)
(is-reset? symbol :offset-assert 256)
(reset-length float :offset-assert 260)
(timeout float :offset-assert 264)
(plat-status uint64 :offset-assert 272)
)
:heap-base #xb0
:method-count-assert 29
:size-assert #x118
:flag-assert #x1d00b00118
(:methods
(dummy-27 (_type_) symbol 27)
(dummy-28 (_type_) symbol 28)
)
(:states
orbit-plat-idle
orbit-plat-reset
orbit-plat-riding
orbit-plat-rotating
orbit-plat-still
orbit-plat-wait-for-other
)
)
;; definition for method 3 of type orbit-plat
(defmethod inspect orbit-plat ((obj orbit-plat))
(let ((t9-0 (method-of-type baseplat inspect)))
(t9-0 obj)
)
(format #t "~T~Tother: ~A~%" (-> obj other))
(format #t "~T~Trot-dir: ~f~%" (-> obj rot-dir))
(format #t "~T~Treset-trans: #<vector @ #x~X>~%" (-> obj reset-trans))
(format #t "~T~Tis-reset?: ~A~%" (-> obj is-reset?))
(format #t "~T~Treset-length: ~f~%" (-> obj reset-length))
(format #t "~T~Ttimeout: ~f~%" (-> obj timeout))
(format #t "~T~Tplat-status: ~D~%" (-> obj plat-status))
obj
)
;; failed to figure out what this is:
(defskelgroup *orbit-plat-sg* orbit-plat
0
2
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 3.4)
:longest-edge (meters 0)
)
;; failed to figure out what this is:
(defpartgroup group-orbit-plat-jet
:id 440
:bounds (static-bspherem 0 0 0 6)
:parts
((sp-item 1715 :fade-after (meters 100) :falloff-to (meters 120) :period 150 :length 75)
(sp-item 1715 :fade-after (meters 100) :falloff-to (meters 120) :period 75 :length 96)
(sp-item 1715 :fade-after (meters 140) :falloff-to (meters 160) :period 90 :length 60)
(sp-item 1716 :fade-after (meters 100) :falloff-to (meters 100))
)
)
;; failed to figure out what this is:
(defpart 1716
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-rnd-flt spt-num 0.0 1.0 1.0)
(sp-rnd-flt spt-scale-x (meters 1) (meters 0.5) 1.0)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 0.0)
(sp-flt spt-g 64.0)
(sp-flt spt-b 48.0)
(sp-rnd-flt spt-a 32.0 96.0 1.0)
(sp-rnd-flt spt-vel-z (meters 0.02) (meters 0.0033333334) 1.0)
(sp-rnd-flt spt-scalevel-x (meters -0.013333334) (meters 0.006666667) 1.0)
(sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-a -1.7066667)
(sp-int spt-timer 75)
(sp-cpuinfo-flags bit2)
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 15.0) 1.0)
)
)
;; failed to figure out what this is:
(defpart 1715
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-rnd-flt spt-num 1.0 2.0 1.0)
(sp-sound (new 'static 'sound-spec
:mask #x1
:num 0.05
:group #x1
:sound-name (static-sound-name "steam-medium")
:volume #x333
)
)
(sp-rnd-flt spt-scale-x (meters 0.75) (meters 0.75) 1.0)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 0.0)
(sp-flt spt-g 96.0)
(sp-flt spt-b 128.0)
(sp-rnd-flt spt-a 16.0 32.0 1.0)
(sp-rnd-flt spt-vel-z (meters 0.053333335) (meters 0.0033333334) 1.0)
(sp-rnd-flt spt-scalevel-x (meters -0.013333334) (meters 0.006666667) 1.0)
(sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-a -0.8)
(sp-flt spt-friction 0.96)
(sp-int spt-timer 75)
(sp-cpuinfo-flags bit2)
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 15.0) 1.0)
)
)
;; failed to figure out what this is:
(defpart 1717
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
(sp-rnd-flt spt-num 1.0 3.0 1.0)
(sp-rnd-flt spt-scale-x (meters 1.7) (meters 0.3) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 32.0)
(sp-rnd-flt spt-g 16.0 96.0 1.0)
(sp-flt spt-b 255.0)
(sp-flt spt-a 64.0)
(sp-rnd-flt spt-vel-z (meters 0.45) (meters 0.05) 1.0)
(sp-flt spt-fade-r -0.08888889)
(sp-int spt-timer 360)
(sp-cpuinfo-flags bit2 launch-along-z)
(sp-flt spt-conerot-x (degrees 0.0))
(sp-flt spt-conerot-y (degrees 0.0))
(sp-rnd-flt spt-conerot-radius (meters -3) (meters 4) 1.0)
)
)
;; definition for method 20 of type orbit-plat-bottom
;; INFO: Return type mismatch int vs none.
(defmethod dummy-20 orbit-plat-bottom ((obj orbit-plat-bottom) (arg0 vector) (arg1 vector))
(let* ((s5-1 (vector-! (new 'stack-no-clear 'vector) arg1 arg0))
(f30-0 (vector-length s5-1))
)
(let ((f28-0 (* 0.0005022321 f30-0)))
(set! (-> *part-id-table* 1717 init-specs 13 initial-valuef) (vector-y-angle s5-1))
(set! (-> *part-id-table* 1717 init-specs 12 initial-valuef) (- (vector-x-angle s5-1)))
(set! (-> *part-id-table* 1717 init-specs 9 initial-valuef) (/ -32.0 f28-0))
(set! (-> *part-id-table* 1717 init-specs 10 initial-valuef) (the-as float (the int f28-0)))
)
(set! (-> *part-id-table* 1717 init-specs 1 random-rangef) (* 0.000009494358 f30-0))
)
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* 1717)
arg0
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
0
(none)
)
;; failed to figure out what this is:
(defstate orbit-plat-bottom-idle (orbit-plat-bottom)
:code
(behavior ()
(while #t
(set! (-> self root trans quad) (-> self parent-override 0 root-override trans quad))
(set! (-> self root trans y) (+ -5324.8 (-> self root trans y)))
(spawn (-> self part2) (-> self root trans))
(let* ((a0-6 (-> self parent-override 0 other))
(v1-9 (if a0-6
(-> a0-6 extra process)
)
)
)
(when v1-9
(let ((f30-0 (atan
(- (-> (the-as orbit-plat v1-9) root-override trans x) (-> self root trans x))
(- (-> (the-as orbit-plat v1-9) root-override trans z) (-> self root trans z))
)
)
)
(quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 f30-0)
(let ((v1-16 (-> self parent-override 0 plat-status))
(f30-1 (+ 16384.0 f30-0))
)
(cond
((= v1-16 2)
(let ((gp-0 (new 'stack-no-clear 'vector)))
(set-vector! gp-0 0.0 -2048.0 8192.0 1.0)
(if (< (-> self parent-override 0 rot-dir) 0.0)
(set! f30-1 (+ 32768.0 f30-1))
)
(vector-rotate-around-y! gp-0 gp-0 f30-1)
(set! (-> *part-id-table* 1716 init-specs 16 initial-valuef) f30-1)
(set! (-> *part-id-table* 1715 init-specs 18 initial-valuef) f30-1)
(vector+! gp-0 gp-0 (-> self root trans))
(spawn (-> self part) gp-0)
)
)
(else
(let* ((a0-18 (-> self parent-override 0 other))
(v1-32 (if a0-18
(-> a0-18 extra process)
)
)
)
(when (and v1-32 (= (-> (the-as orbit-plat v1-32) plat-status) 2))
(let ((gp-1 (new 'stack-no-clear 'vector))
(s5-0 (new 'stack-no-clear 'vector))
)
(let ((s4-0 (new 'stack-no-clear 'vector)))
(set! (-> gp-1 quad) (-> self root trans quad))
(set! (-> gp-1 y) (+ -2048.0 (-> gp-1 y)))
(set! (-> s5-0 quad) (-> (the-as orbit-plat v1-32) root-override trans quad))
(set! (-> s5-0 y) (+ -7372.8 (-> s5-0 y)))
(vector-! s4-0 s5-0 gp-1)
(vector-normalize! s4-0 1.0)
(vector+*! s5-0 gp-1 s4-0 26624.0)
(vector+*! gp-1 gp-1 s4-0 8192.0)
)
(dummy-20 self gp-1 s5-0)
)
)
)
)
)
)
)
)
)
(suspend)
)
(none)
)
:post
(the-as (function none :behavior orbit-plat-bottom) ja-post)
)
;; definition for method 7 of type orbit-plat-bottom
;; INFO: Return type mismatch process-drawable vs orbit-plat-bottom.
(defmethod relocate orbit-plat-bottom ((obj orbit-plat-bottom) (arg0 int))
(if (nonzero? (-> obj part2))
(&+! (-> obj part2) arg0)
)
(the-as orbit-plat-bottom ((method-of-type process-drawable relocate) obj arg0))
)
;; definition for method 10 of type orbit-plat-bottom
(defmethod deactivate orbit-plat-bottom ((obj orbit-plat-bottom))
(if (nonzero? (-> obj part2))
(kill-and-free-particles (-> obj part2))
)
((method-of-type process-drawable deactivate) obj)
(none)
)
;; definition for function orbit-plat-bottom-init-by-other
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defbehavior orbit-plat-bottom-init-by-other orbit-plat-bottom ((arg0 entity) (arg1 orbit-plat))
(set! (-> self entity) arg0)
(set! (-> self mask) (logior (process-mask platform) (-> self mask)))
(set! (-> self root) (new 'process 'trsqv))
(set! (-> self root trans quad) (-> arg1 root-override trans quad))
(quaternion-copy! (-> self root quat) (-> arg1 root-override quat))
(set! (-> self root scale quad) (-> arg1 root-override scale quad))
(set! (-> self root trans y) (+ -5324.8 (-> self root trans y)))
(set! (-> self part) (create-launch-control (-> *part-group-id-table* 440) self))
(set! (-> self part2) (create-launch-control (-> *part-group-id-table* 107) self))
(initialize-skeleton self *orbit-plat-bottom-sg* '())
(ja-channel-set! 1)
(let ((gp-1 (-> self skel root-channel 0)))
(joint-control-channel-group-eval!
gp-1
(the-as art-joint-anim (-> self draw art-group data 2))
num-func-identity
)
(set! (-> gp-1 frame-num) 0.0)
)
(go orbit-plat-bottom-idle)
(none)
)
;; failed to figure out what this is:
(defstate orbit-plat-idle (orbit-plat)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(let ((v1-0 arg2))
(the-as object (cond
((= v1-0 'bonk)
(dummy-22 self)
)
((= v1-0 'go)
(go orbit-plat-rotating)
)
((= v1-0 'query-reset)
(if (not (-> self is-reset?))
(go orbit-plat-reset)
)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) self)
(set! (-> a1-1 num-params) 0)
(set! (-> a1-1 message) 'reset)
(let ((t9-3 send-event-function)
(v1-8 (-> self other))
)
(t9-3
(if v1-8
(-> v1-8 extra process)
)
a1-1
)
)
)
)
((= v1-0 'reset)
(go orbit-plat-reset)
)
)
)
)
)
:trans
(the-as (function none :behavior orbit-plat) plat-trans)
:code
(behavior ()
(set! (-> self plat-status) (the-as uint 0))
(let ((a0-0 (-> self skel root-channel 0)))
(set! (-> a0-0 param 0) 0.0)
(set! (-> a0-0 param 1) 1.0)
(joint-control-channel-group! a0-0 (the-as art-joint-anim #f) num-func-seek!)
)
(dotimes (gp-0 2)
(transform-post)
(suspend)
(when (not (ja-done? 0))
(let ((a0-2 (-> self skel root-channel 0)))
(set! (-> a0-2 param 0) 0.0)
(set! (-> a0-2 param 1) 1.0)
(joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-seek!)
)
)
)
(while #t
(when (nonzero? (-> self root-override riders num-riders))
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) self)
(set! (-> a1-2 num-params) 0)
(set! (-> a1-2 message) 'go)
(let ((t9-4 send-event-function)
(v1-14 (-> self other))
)
(t9-4
(if v1-14
(-> v1-14 extra process)
)
a1-2
)
)
)
(go orbit-plat-riding)
)
(suspend)
(when (not (ja-done? 0))
(let ((a0-5 (-> self skel root-channel 0)))
(set! (-> a0-5 param 0) 0.0)
(set! (-> a0-5 param 1) 1.0)
(joint-control-channel-group-eval! a0-5 (the-as art-joint-anim #f) num-func-seek!)
)
)
(when (not (-> self is-reset?))
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-4 from) self)
(set! (-> a1-4 num-params) 0)
(set! (-> a1-4 message) 'query-reset)
(let ((t9-8 send-event-function)
(v1-26 (-> self other))
)
(t9-8
(if v1-26
(-> v1-26 extra process)
)
a1-4
)
)
)
)
)
(none)
)
:post
(the-as (function none :behavior orbit-plat) plat-post)
)
;; definition for method 28 of type orbit-plat
(defmethod dummy-28 orbit-plat ((obj orbit-plat))
(when (>= (- (-> *display* base-frame-counter) (-> obj state-time)) (the int (* 300.0 (-> obj timeout))))
(cond
(*target*
(let ((s5-0 (target-pos 0)))
(if (or (>= (vector-vector-xz-distance s5-0 (-> obj root-override trans)) 102400.0)
(>= (- (-> obj root-override trans y) (-> s5-0 y)) 16384.0)
)
(return #t)
)
)
)
(else
(return #t)
)
)
)
#f
)
;; failed to figure out what this is:
(defstate orbit-plat-still (orbit-plat)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(let ((v1-0 arg2))
(the-as object (cond
((= v1-0 'bonk)
(dummy-22 self)
)
((= v1-0 'go)
(go orbit-plat-rotating)
)
)
)
)
)
:trans
(the-as (function none :behavior orbit-plat) plat-trans)
:code
(behavior ()
(set! (-> self plat-status) (the-as uint 0))
(set! (-> self state-time) (-> *display* base-frame-counter))
(let ((a0-0 (-> self skel root-channel 0)))
(set! (-> a0-0 param 0) 0.0)
(set! (-> a0-0 param 1) 1.0)
(joint-control-channel-group! a0-0 (the-as art-joint-anim #f) num-func-seek!)
)
(until (dummy-28 self)
(when (nonzero? (-> self root-override riders num-riders))
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) self)
(set! (-> a1-1 num-params) 0)
(set! (-> a1-1 message) 'go)
(let ((t9-1 send-event-function)
(v1-10 (-> self other))
)
(t9-1
(if v1-10
(-> v1-10 extra process)
)
a1-1
)
)
)
(go orbit-plat-riding)
)
(suspend)
(when (not (ja-done? 0))
(let ((a0-3 (-> self skel root-channel 0)))
(set! (-> a0-3 param 0) 0.0)
(set! (-> a0-3 param 1) 1.0)
(joint-control-channel-group-eval! a0-3 (the-as art-joint-anim #f) num-func-seek!)
)
)
)
(go orbit-plat-idle)
(none)
)
:post
(the-as (function none :behavior orbit-plat) plat-post)
)
;; failed to figure out what this is:
(defstate orbit-plat-riding (orbit-plat)
:event
(the-as (function process int symbol event-message-block object :behavior orbit-plat) plat-event)
:trans
(the-as (function none :behavior orbit-plat) plat-trans)
:code
(behavior ()
(set! (-> self plat-status) (the-as uint 1))
(let ((a0-0 (-> self skel root-channel 0)))
(set! (-> a0-0 param 0) (the float (+ (-> a0-0 frame-group data 0 length) -1)))
(set! (-> a0-0 param 1) 1.0)
(joint-control-channel-group! a0-0 (the-as art-joint-anim #f) num-func-seek!)
)
(while #t
(when (zero? (-> self root-override riders num-riders))
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) self)
(set! (-> a1-1 num-params) 0)
(set! (-> a1-1 message) 'stop)
(let ((t9-1 send-event-function)
(v1-13 (-> self other))
)
(t9-1
(if v1-13
(-> v1-13 extra process)
)
a1-1
)
)
)
(go orbit-plat-still)
)
(suspend)
(when (not (ja-done? 0))
(let ((a0-3 (-> self skel root-channel 0)))
(set! (-> a0-3 param 0) (the float (+ (-> a0-3 frame-group data 0 length) -1)))
(set! (-> a0-3 param 1) 1.0)
(joint-control-channel-group-eval! a0-3 (the-as art-joint-anim #f) num-func-seek!)
)
)
)
(none)
)
:post
(the-as (function none :behavior orbit-plat) plat-post)
)
;; definition for function get-rotate-point!
(defun get-rotate-point! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector) (arg4 float) (arg5 float))
(let ((s5-0 (new 'stack-no-clear 'vector)))
(let ((s2-0 (new 'stack-no-clear 'vector)))
(vector-! s5-0 arg2 arg1)
(when (!= arg4 0.0)
(set! (-> s2-0 x) (* arg4 (-> s5-0 z)))
(set! (-> s2-0 y) 0.0)
(set! (-> s2-0 z) (- (* arg4 (-> s5-0 x))))
(vector-normalize! s2-0 (* arg5 (-> *display* seconds-per-frame)))
(+! (-> s5-0 x) (-> s2-0 x))
(+! (-> s5-0 z) (-> s2-0 z))
)
)
(vector-normalize! s5-0 (the-as float arg3))
(vector+! arg0 arg1 s5-0)
)
arg0
)
;; definition for function get-nav-point!
;; Used lq/sq
(defun get-nav-point! ((arg0 vector) (arg1 orbit-plat) (arg2 vector) (arg3 float))
(set! (-> arg1 nav target-pos quad) (-> arg2 quad))
(logclear! (-> arg1 nav flags) (nav-control-flags bit19))
(dummy-11 (-> arg1 nav) (-> arg1 nav target-pos))
(let ((f0-0 (vector-length (-> arg1 nav travel))))
(if (< arg3 f0-0)
(set! f0-0 arg3)
)
(vector-normalize! (-> arg1 nav travel) (* f0-0 (-> *display* seconds-per-frame)))
)
(set! (-> arg0 x) (+ (-> arg1 root-override trans x) (-> arg1 nav travel x)))
(set! (-> arg0 y) (-> arg1 root-override trans x))
(set! (-> arg0 z) (+ (-> arg1 root-override trans z) (-> arg1 nav travel z)))
arg0
)
;; failed to figure out what this is:
(defstate orbit-plat-rotating (orbit-plat)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(let ((v1-0 arg2))
(the-as object (cond
((= v1-0 'bonk)
(dummy-22 self)
)
((= v1-0 'stop)
(go orbit-plat-still)
)
)
)
)
)
:trans
(the-as (function none :behavior orbit-plat) plat-trans)
:code
(behavior ()
(set! (-> self plat-status) (the-as uint 2))
(set! (-> self is-reset?) #f)
(let ((gp-0 (new 'stack-no-clear 'vector)))
0.0
(let ((a0-0 (new 'stack-no-clear 'vector))
(s5-0 (new 'stack-no-clear 'vector))
)
(let ((v1-1 gp-0)
(a1-0 (-> self other))
)
(set! (-> v1-1 quad) (-> (the-as orbit-plat (if a1-0
(-> a1-0 extra process)
)
)
root-override
trans
quad
)
)
)
(vector-! a0-0 (-> self basetrans) gp-0)
(let ((f30-0 (vector-length a0-0)))
(set! (-> self reset-length) f30-0)
(let ((a0-1 (-> self skel root-channel 0)))
(set! (-> a0-1 param 0) 0.0)
(set! (-> a0-1 param 1) 1.0)
(joint-control-channel-group! a0-1 (the-as art-joint-anim #f) num-func-seek!)
)
(label cfg-3)
(dotimes (s4-0 2)
(get-rotate-point! s5-0 gp-0 (-> self basetrans) (the-as vector f30-0) (-> self rot-dir) 40960.0)
(b! (not (dummy-16 (-> self nav) s5-0)) cfg-6 :delay (empty-form))
(set! (-> self basetrans quad) (-> s5-0 quad))
(b! #t cfg-9 :delay (nop!))
(label cfg-6)
(set! (-> self rot-dir) (- (-> self rot-dir)))
)
)
)
)
(label cfg-9)
(suspend)
(when (not (ja-done? 0))
(let ((a0-7 (-> self skel root-channel 0)))
(set! (-> a0-7 param 0) 0.0)
(set! (-> a0-7 param 1) 1.0)
(joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!)
)
)
(b! #t cfg-3 :delay (nop!))
(none)
)
:post
(the-as (function none :behavior orbit-plat) plat-post)
)
;; definition for method 27 of type orbit-plat
;; INFO: Return type mismatch object vs symbol.
;; WARN: disable def twice: 132. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare.
;; Used lq/sq
(defmethod dummy-27 orbit-plat ((obj orbit-plat))
(local-vars (v0-11 object))
(let* ((v1-0 (-> obj other))
(s5-0 (if v1-0
(-> v1-0 extra process)
)
)
)
(the-as
symbol
(cond
((and s5-0
(< (vector-vector-xz-distance (the-as vector (&-> s5-0 stack 96)) (the-as vector (&-> s5-0 stack 128)))
(vector-vector-xz-distance (-> obj basetrans) (-> obj reset-trans))
)
)
(cond
((-> (the-as orbit-plat s5-0) is-reset?)
(when (!= (-> obj plat-status) 2)
(set! (-> obj plat-status) (the-as uint 2))
(let ((f30-1 (atan
(- (-> obj basetrans x) (-> (the-as orbit-plat s5-0) basetrans x))
(- (-> obj basetrans z) (-> (the-as orbit-plat s5-0) basetrans z))
)
)
(f0-9 (atan
(- (-> obj reset-trans x) (-> (the-as orbit-plat s5-0) basetrans x))
(- (-> obj reset-trans z) (-> (the-as orbit-plat s5-0) basetrans z))
)
)
)
(if (>= (deg- f0-9 f30-1) 0.0)
(set! (-> obj rot-dir) 1.0)
(set! (-> obj rot-dir) -1.0)
)
)
)
(let ((s4-0 (new 'stack-no-clear 'vector)))
0.0
(let ((a0-7 (new 'stack-no-clear 'vector))
(s5-1 (new 'stack-no-clear 'vector))
)
(let ((v1-9 s4-0)
(a1-5 (-> obj other))
)
(set! (-> v1-9 quad) (-> (the-as orbit-plat (if a1-5
(-> a1-5 extra process)
)
)
root-override
trans
quad
)
)
)
(vector-! a0-7 (-> obj basetrans) s4-0)
(let ((f30-2 (vector-length a0-7)))
(get-rotate-point! s5-1 s4-0 (-> obj basetrans) (the-as vector f30-2) (-> obj rot-dir) 40960.0)
(cond
((dummy-16 (-> obj nav) s5-1)
(set! (-> obj basetrans quad) (-> s5-1 quad))
)
(else
(set! (-> obj rot-dir) (- (-> obj rot-dir)))
(get-rotate-point! s5-1 s4-0 (-> obj basetrans) (the-as vector f30-2) (-> obj rot-dir) 40960.0)
(if (dummy-16 (-> obj nav) s5-1)
(set! (-> obj basetrans quad) (-> s5-1 quad))
)
)
)
)
)
)
(when (>= 614.4 (vector-vector-xz-distance (-> obj basetrans) (-> obj reset-trans)))
(set! v0-11 (logior (nav-control-flags bit19) (-> obj nav flags)))
(set! (-> obj nav flags) (the-as nav-control-flags v0-11))
v0-11
)
)
(else
(let ((s5-2 (new 'stack-no-clear 'vector)))
(let ((s4-1 (new 'stack-no-clear 'vector)))
(get-nav-point! s5-2 obj (-> obj reset-trans) 40960.0)
(let ((v1-20 s4-1)
(a0-19 (-> obj other))
)
(set! (-> v1-20 quad) (-> (the-as orbit-plat (if a0-19
(-> a0-19 extra process)
)
)
root-override
trans
quad
)
)
)
(set! (-> s5-2 y) (-> s4-1 y))
(vector-! s5-2 s5-2 s4-1)
(vector-normalize! s5-2 (-> obj reset-length))
(vector+! s5-2 s5-2 s4-1)
(when (not (dummy-16 (-> obj nav) s5-2))
(logclear! (-> obj nav flags) (nav-control-flags bit19))
(get-rotate-point! s5-2 s4-1 (-> obj basetrans) (the-as vector (-> obj reset-length)) 0.0 40960.0)
(when (not (dummy-16 (-> obj nav) s5-2))
(get-rotate-point!
s5-2
s4-1
(-> obj basetrans)
(the-as vector (-> obj reset-length))
(-> obj rot-dir)
40960.0
)
(when (not (dummy-16 (-> obj nav) s5-2))
(set! (-> obj rot-dir) (- (-> obj rot-dir)))
(get-rotate-point!
s5-2
s4-1
(-> obj basetrans)
(the-as vector (-> obj reset-length))
(-> obj rot-dir)
40960.0
)
)
)
)
)
(set! (-> s5-2 y) (-> obj basetrans y))
(set! v0-11 (-> obj basetrans))
(set! (-> (the-as vector v0-11) quad) (-> s5-2 quad))
)
v0-11
)
)
)
(else
(let ((s5-3 (new 'stack-no-clear 'vector)))
(set! (-> s5-3 quad) (-> obj basetrans quad))
(get-nav-point! (-> obj basetrans) obj (-> obj reset-trans) 40960.0)
(let ((f0-29 (-> s5-3 y)))
(set! (-> obj basetrans y) f0-29)
f0-29
)
)
)
)
)
)
)
;; failed to figure out what this is:
(defstate orbit-plat-reset (orbit-plat)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(let ((v1-0 arg2))
(the-as object (cond
((= v1-0 'bonk)
(dummy-22 self)
)
((= v1-0 'go)
(go orbit-plat-rotating)
)
)
)
)
)
:trans
(the-as (function none :behavior orbit-plat) plat-trans)
:code
(behavior ()
(set! (-> self plat-status) (the-as uint 3))
(logclear! (-> self nav flags) (nav-control-flags bit19))
(let ((a0-3 (-> self skel root-channel 0)))
(set! (-> a0-3 param 0) 0.0)
(set! (-> a0-3 param 1) 1.0)
(joint-control-channel-group! a0-3 (the-as art-joint-anim #f) num-func-seek!)
)
(while (zero? (logand (nav-control-flags bit19) (-> self nav flags)))
(dummy-27 self)
(when (nonzero? (-> self root-override riders num-riders))
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) self)
(set! (-> a1-1 num-params) 0)
(set! (-> a1-1 message) 'go)
(let ((t9-2 send-event-function)
(v1-13 (-> self other))
)
(t9-2
(if v1-13
(-> v1-13 extra process)
)
a1-1
)
)
)
(go orbit-plat-riding)
)
(suspend)
(when (not (ja-done? 0))
(let ((a0-7 (-> self skel root-channel 0)))
(set! (-> a0-7 param 0) 0.0)
(set! (-> a0-7 param 1) 1.0)
(joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!)
)
)
)
(set! (-> self is-reset?) #t)
(go orbit-plat-idle)
(none)
)
:post
(the-as (function none :behavior orbit-plat) plat-post)
)
;; failed to figure out what this is:
(defstate orbit-plat-wait-for-other (orbit-plat)
:code
(behavior ()
(set! (-> self plat-status) (the-as uint 0))
(let ((a0-0 (-> self skel root-channel 0)))
(set! (-> a0-0 param 0) 0.0)
(set! (-> a0-0 param 1) 1.0)
(joint-control-channel-group! a0-0 (the-as art-joint-anim #f) num-func-seek!)
)
(while #t
(let ((v1-3 (-> self other)))
(when (if v1-3
(-> v1-3 extra process)
)
(suspend)
(go orbit-plat-idle)
)
)
(suspend)
(when (not (ja-done? 0))
(let ((a0-3 (-> self skel root-channel 0)))
(set! (-> a0-3 param 0) 0.0)
(set! (-> a0-3 param 1) 1.0)
(joint-control-channel-group-eval! a0-3 (the-as art-joint-anim #f) num-func-seek!)
)
)
)
(none)
)
:post
(the-as (function none :behavior orbit-plat) ja-post)
)
;; definition for method 11 of type orbit-plat
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defmethod init-from-entity! orbit-plat ((obj orbit-plat) (arg0 entity-actor))
(set! (-> obj plat-status) (the-as uint 0))
(set! (-> obj mask) (logior (process-mask platform) (-> obj mask)))
(let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others))))
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s4-0 reaction) default-collision-reaction)
(set! (-> s4-0 no-reaction)
(the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)
)
(alloc-riders s4-0 1)
(let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0))))
(set! (-> s3-0 prim-core collide-as) (collide-kind ground-object))
(set! (-> s3-0 collide-with) (collide-kind target))
(set! (-> s3-0 prim-core action) (collide-action solid ca-1))
(set! (-> s3-0 prim-core offense) (collide-offense indestructible))
(set! (-> s3-0 transform-index) 3)
(set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 13926.4)
(set-root-prim! s4-0 s3-0)
)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(backup-collide-with-as s4-0)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton obj *orbit-plat-sg* '())
(logior! (-> obj skel status) 1)
(ja-channel-set! 1)
(let ((s4-1 (-> obj skel root-channel 0)))
(joint-control-channel-group-eval!
s4-1
(the-as art-joint-anim (-> obj draw art-group data 2))
num-func-identity
)
(set! (-> s4-1 frame-num) 0.0)
)
(ja-post)
(update-transforms! (-> obj root-override))
(dummy-21 obj)
(set! (-> obj nav) (new 'process 'nav-control (-> obj root-override) 16 40960.0))
(logior! (-> obj nav flags) (nav-control-flags display-marks bit3 bit5 bit6 bit7))
(set! (-> obj nav gap-event) 'blocked)
(set! (-> obj other) (entity-actor-lookup arg0 'alt-actor 0))
(let ((f0-7 (res-lump-float arg0 'scale :default 1.0)))
(set-vector! (-> obj root-override scale) f0-7 f0-7 f0-7 1.0)
)
(set! (-> obj timeout) (res-lump-float arg0 'timeout :default 10.0))
(set! (-> obj rot-dir) 1.0)
(set! (-> obj reset-trans quad) (-> obj basetrans quad))
(set! (-> obj is-reset?) #t)
(let ((s5-1 (get-process *default-dead-pool* orbit-plat-bottom #x4000)))
(when s5-1
(let ((t9-18 (method-of-type orbit-plat-bottom activate)))
(t9-18 (the-as orbit-plat-bottom s5-1) obj 'orbit-plat-bottom (the-as pointer #x70004000))
)
(run-now-in-process s5-1 orbit-plat-bottom-init-by-other (-> obj entity) obj)
(-> s5-1 ppointer)
)
)
(go orbit-plat-wait-for-other)
(none)
)