jak-project/goal_src/levels/common/water-anim.gc
Tyler Wilding c6f0c5cd29
decomp: merge all s6-* remappings and finish training-obs | villagep-obs | lavatube-obs | rolling-robber | snow-obs (#1018)
* decompiler: merge all `s6-*` usages

* decomp: finish `training-obs`

* decomp: finish `rolling-robber`

* decomp: finish `villagep-obs`

* decomp: finish `lavatube-obs`

* skip function in `lavatube-obs` over #1029

* closes #1029

* kick nasm

* merge s6 and sp in variable naming pass

* revert my fix

* fix mistakes and a bad method signature

Co-authored-by: water111 <awaterford111445@gmail.com>
2021-12-28 23:16:42 -05:00

974 lines
25 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: water-anim.gc
;; name in dgo: water-anim
;; dgos: GAME, COMMON, L1, WATER-AN
;; DECOMP BEGINS
(deftype water-anim (water-vol)
((ppointer-water-anim (pointer water-anim) :offset 24)
(look int32 :offset-assert 212)
(play-ambient-sound? symbol :offset-assert 216)
)
:heap-base #x70
:method-count-assert 30
:size-assert #xdc
:flag-assert #x1e007000dc
)
(defskelgroup *water-anim-sunken-dark-eco-qbert-sg* water-anim-sunken-dark-eco
0
-1
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 40)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-sunken-dark-eco-platform-room-sg* water-anim-sunken-dark-eco
2
-1
((3 (meters 999999)))
:bounds (static-spherem 0 0 0 22)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-sunken-dark-eco-helix-room-sg* water-anim-sunken-dark-eco
4
-1
((5 (meters 999999)))
:bounds (static-spherem 0 0 0 21)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-sunken-big-room-sg* water-anim-sunken
0
-1
((1 (meters 999999)))
:bounds (static-spherem 15 0 -36 70)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-sunken-first-room-from-entrance-sg* water-anim-sunken
2
-1
((3 (meters 999999)))
:bounds (static-spherem 0 0 0 50)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-sunken-qbert-room-sg* water-anim-sunken
4
-1
((5 (meters 999999)))
:bounds (static-spherem 0 0 0 48)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-sunken-first-right-branch-sg* water-anim-sunken
6
-1
((7 (meters 999999)))
:bounds (static-spherem 0 0 0 30)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-sunken-circular-with-bullys-sg* water-anim-sunken
8
-1
((9 (meters 999999)))
:bounds (static-spherem 0 0 0 15)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-sunken-hall-with-one-whirlpool-sg* water-anim-sunken
10
-1
((11 (meters 999999)))
:bounds (static-spherem 0 0 0 27)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-sunken-hall-with-three-whirlpools-sg* water-anim-sunken
12
-1
((13 (meters 999999)))
:bounds (static-spherem 0 0 0 26)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-sunken-start-of-helix-slide-sg* water-anim-sunken
14
-1
((15 (meters 999999)))
:bounds (static-spherem 0 0 0 25)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-sunken-room-above-exit-chamber-sg* water-anim-sunken
16
-1
((17 (meters 999999)))
:bounds (static-spherem 0 0 0 45)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-sunken-hall-before-big-room-sg* water-anim-sunken
18
-1
((19 (meters 999999)))
:bounds (static-spherem 5 0 -3 24)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-sunken-short-piece-sg* water-anim-sunken
20
-1
((21 (meters 999999)))
:bounds (static-spherem 0 0 0 20)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-sunken-big-room-upper-water-sg* water-anim-sunken
22
-1
((23 (meters 999999)))
:bounds (static-spherem 0 0 0 27)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-maincave-center-pool-sg* water-anim-maincave
0
-1
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 70)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-maincave-lower-right-pool-sg* water-anim-maincave
2
-1
((3 (meters 999999)))
:bounds (static-spherem 6 0 5 61)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-maincave-mid-right-pool-sg* water-anim-maincave
4
-1
((5 (meters 999999)))
:bounds (static-spherem 0 0 0 37)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-maincave-lower-left-pool-sg* water-anim-maincave
6
-1
((7 (meters 999999)))
:bounds (static-spherem -1 0 0 20)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-maincave-mid-left-pool-sg* water-anim-maincave
8
-1
((9 (meters 999999)))
:bounds (static-spherem 0 0 0 51)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-maincave-water-with-crystal-sg* water-anim-maincave-water
0
-1
((1 (meters 999999)))
:bounds (static-spherem 0 0 -3 22)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-robocave-main-pool-sg* water-anim-robocave
0
-1
((1 (meters 20)) (2 (meters 999999)))
:bounds (static-spherem 0 0 0 54)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-misty-mud-by-arena-sg* water-anim-misty
0
-1
((1 (meters 999999)))
:bounds (static-spherem 0 0 -2.5 19)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-misty-mud-above-skeleton-sg* water-anim-misty
2
-1
((3 (meters 999999)))
:bounds (static-spherem 0 0 0 14)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-misty-mud-behind-skeleton-sg* water-anim-misty
4
-1
((5 (meters 999999)))
:bounds (static-spherem 0 0 4 25)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-misty-mud-above-skull-back-sg* water-anim-misty
6
-1
((7 (meters 999999)))
:bounds (static-spherem 0 0 0 14)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-misty-mud-above-skull-front-sg* water-anim-misty
8
-1
((9 (meters 999999)))
:bounds (static-spherem 0 0 0 16)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-misty-mud-other-near-skull-sg* water-anim-misty
10
-1
((11 (meters 999999)))
:bounds (static-spherem 0 0 0 13)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-misty-mud-near-skull-sg* water-anim-misty
12
-1
((13 (meters 999999)))
:bounds (static-spherem 0 0 0 15)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-misty-mud-under-spine-sg* water-anim-misty
14
-1
((15 (meters 999999)))
:bounds (static-spherem 0 0 0 16)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-misty-mud-by-dock-sg* water-anim-misty
16
-1
((17 (meters 999999)))
:bounds (static-spherem 0 0 0 21)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-misty-mud-island-near-dock-sg* water-anim-misty
18
-1
((19 (meters 999999)))
:bounds (static-spherem -1 0 -1 15)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-misty-mud-lonely-island-sg* water-anim-misty
20
-1
((21 (meters 999999)))
:bounds (static-spherem 0 0 0 10)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-misty-dark-eco-pool-sg* water-anim-misty
22
-1
((23 (meters 999999)))
:bounds (static-spherem 0 0 0 17)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-ogre-lava-sg* water-anim-ogre
0
-1
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 112)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-jungle-river-sg* water-anim-jungle
0
-1
((1 (meters 20)) (2 (meters 999999)))
:bounds (static-spherem 0 0 0 91)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-village3-lava-sg* water-anim-village3
0
-1
((1 (meters 20)) (2 (meters 999999)))
:bounds (static-spherem 15 0 10 163)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-training-lake-sg* water-anim-training
0
-1
((1 (meters 999999)))
:bounds (static-spherem -18 0 0 52)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-darkcave-water-with-crystal-sg* water-anim-darkcave
0
-1
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 19)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-rolling-water-back-sg* water-anim-rolling
0
-1
((1 (meters 999999)))
:bounds (static-spherem -10 0 0 70)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-rolling-water-front-sg* water-anim-rolling
2
-1
((3 (meters 999999)))
:bounds (static-spherem 0 0 0 70)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-finalboss-dark-eco-pool-sg* water-anim-finalboss
0
-1
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 19)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-lavatube-energy-lava-sg* water-anim-lavatube
0
-1
((1 (meters 999999)))
:bounds (static-spherem 0 -7 0 25)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-village1-rice-paddy-sg* water-anim-village1
0
-1
((1 (meters 999999)))
:bounds (static-spherem -15 0 0 27)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-village1-fountain-sg* water-anim-village1
6
-1
((7 (meters 999999)))
:bounds (static-spherem 0 0 0 4.5)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-village1-rice-paddy-mid-sg* water-anim-village1
2
-1
((3 (meters 999999)))
:bounds (static-spherem 0 0 0 35)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-village1-rice-paddy-top-sg* water-anim-village1
4
-1
((5 (meters 999999)))
:bounds (static-spherem 6 0 -17 20)
:longest-edge (meters 0)
)
(defskelgroup *water-anim-village2-bucket-sg* water-anim-village2
0
-1
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 0.7)
:longest-edge (meters 0)
)
(deftype water-anim-look (structure)
((skel-group symbol :offset-assert 0)
(anim int32 :offset-assert 4)
(ambient-sound-spec sound-spec :offset-assert 8)
)
:method-count-assert 9
:size-assert #xc
:flag-assert #x90000000c
)
(define
*water-anim-look*
(the-as (array water-anim-look)
(new
'static
'boxed-array
:type water-anim-look :length 48 :allocated-length 48
(new 'static 'water-anim-look
:skel-group '*water-anim-sunken-big-room-sg*
:anim 24
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "water-loop")
:volume #x400
:fo-min 70
:fo-max 80
)
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-sunken-first-room-from-entrance-sg*
:anim 24
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "water-loop")
:volume #x400
:fo-min 50
:fo-max 60
)
)
(new 'static 'water-anim-look
:skel-group '*water-anim-sunken-qbert-room-sg*
:anim 24
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "water-loop")
:volume #x400
:fo-min 48
:fo-max 58
)
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-sunken-first-right-branch-sg*
:anim 24
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "water-loop")
:volume #x400
:fo-min 30
:fo-max 40
)
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-sunken-circular-with-bullys-sg*
:anim 24
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "water-loop")
:volume #x400
:fo-min 15
:fo-max 25
)
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-sunken-hall-with-one-whirlpool-sg*
:anim 24
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "water-loop")
:volume #x400
:fo-min 27
:fo-max 37
)
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-sunken-hall-with-three-whirlpools-sg*
:anim 24
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "water-loop")
:volume #x400
:fo-min 26
:fo-max 36
)
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-sunken-start-of-helix-slide-sg*
:anim 24
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "water-loop")
:volume #x400
:fo-min 25
:fo-max 35
)
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-sunken-room-above-exit-chamber-sg*
:anim 24
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "water-loop")
:volume #x400
:fo-min 45
:fo-max 55
)
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-sunken-hall-before-big-room-sg*
:anim 24
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "water-loop")
:volume #x400
:fo-min 20
:fo-max 30
)
)
(new 'static 'water-anim-look
:skel-group '*water-anim-sunken-dark-eco-qbert-sg*
:anim 6
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "darkeco-pool")
:volume #x400
:fo-min 40
:fo-max 50
)
)
(new 'static 'water-anim-look
:skel-group '*water-anim-sunken-short-piece-sg*
:anim 24
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "water-loop")
:volume #x400
:fo-min 20
:fo-max 30
)
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-sunken-big-room-upper-water-sg*
:anim 24
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "water-loop")
:volume #x400
:fo-min 27
:fo-max 37
)
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-sunken-dark-eco-platform-room-sg*
:anim 6
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "darkeco-pool")
:volume #x400
:fo-min 22
:fo-max 32
)
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-maincave-water-with-crystal-sg*
:anim 2
:ambient-sound-spec #f
)
(new 'static 'water-anim-look
:skel-group '*water-anim-maincave-center-pool-sg*
:anim 10
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "darkeco-pool")
:volume #x400
:fo-min 70
:fo-max 80
)
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-maincave-lower-right-pool-sg*
:anim 10
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "darkeco-pool")
:volume #x400
:fo-min 40
:fo-max 50
)
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-maincave-mid-right-pool-sg*
:anim 10
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "darkeco-pool")
:volume #x400
:fo-min 37
:fo-max 47
)
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-maincave-lower-left-pool-sg*
:anim 10
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "darkeco-pool")
:volume #x400
:fo-min 20
:fo-max 30
)
)
(new 'static 'water-anim-look
:skel-group '*water-anim-maincave-mid-left-pool-sg*
:anim 10
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "darkeco-pool")
:volume #x400
:fo-min 51
:fo-max 61
)
)
(new 'static 'water-anim-look
:skel-group '*water-anim-robocave-main-pool-sg*
:anim 3
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "darkeco-pool")
:volume #x400
:fo-min 54
:fo-max 64
)
)
(new 'static 'water-anim-look :skel-group '*water-anim-misty-mud-by-arena-sg* :anim 24 :ambient-sound-spec #f)
(new 'static 'water-anim-look
:skel-group
'*water-anim-misty-mud-above-skeleton-sg*
:anim 24
:ambient-sound-spec #f
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-misty-mud-behind-skeleton-sg*
:anim 24
:ambient-sound-spec #f
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-misty-mud-above-skull-back-sg*
:anim 24
:ambient-sound-spec #f
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-misty-mud-above-skull-front-sg*
:anim 24
:ambient-sound-spec #f
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-misty-mud-other-near-skull-sg*
:anim 24
:ambient-sound-spec #f
)
(new 'static 'water-anim-look
:skel-group '*water-anim-misty-mud-near-skull-sg*
:anim 24
:ambient-sound-spec #f
)
(new 'static 'water-anim-look
:skel-group '*water-anim-misty-mud-under-spine-sg*
:anim 24
:ambient-sound-spec #f
)
(new 'static 'water-anim-look :skel-group '*water-anim-misty-mud-by-dock-sg* :anim 24 :ambient-sound-spec #f)
(new 'static 'water-anim-look
:skel-group
'*water-anim-misty-mud-island-near-dock-sg*
:anim 24
:ambient-sound-spec #f
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-misty-mud-lonely-island-sg*
:anim 24
:ambient-sound-spec #f
)
(new 'static 'water-anim-look
:skel-group '*water-anim-misty-dark-eco-pool-sg*
:anim 24
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "darkeco-pool")
:volume #x400
:fo-min 17
:fo-max 27
)
)
(new 'static 'water-anim-look :skel-group '*water-anim-ogre-lava-sg* :anim 2 :ambient-sound-spec #f)
(new 'static 'water-anim-look :skel-group '*water-anim-jungle-river-sg* :anim 3 :ambient-sound-spec #f)
(new 'static 'water-anim-look :skel-group '*water-anim-village3-lava-sg* :anim 3 :ambient-sound-spec #f)
(new 'static 'water-anim-look :skel-group '*water-anim-training-lake-sg* :anim 2 :ambient-sound-spec #f)
(new 'static 'water-anim-look
:skel-group
'*water-anim-darkcave-water-with-crystal-sg*
:anim 2
:ambient-sound-spec #f
)
(new 'static 'water-anim-look :skel-group '*water-anim-rolling-water-back-sg* :anim 4 :ambient-sound-spec #f)
(new 'static 'water-anim-look :skel-group '*water-anim-rolling-water-front-sg* :anim 4 :ambient-sound-spec #f)
(new 'static 'water-anim-look
:skel-group
'*water-anim-sunken-dark-eco-helix-room-sg*
:anim 6
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "helix-dark-eco")
:volume #x400
:fo-min #x78
:fo-max #x82
)
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-finalboss-dark-eco-pool-sg*
:anim 2
:ambient-sound-spec
(new 'static 'sound-spec
:mask #xc0
:num 1.0
:group #x1
:sound-name (static-sound-name "darkeco-pool")
:volume #x400
:fo-min 19
:fo-max 29
)
)
(new 'static 'water-anim-look
:skel-group '*water-anim-lavatube-energy-lava-sg*
:anim 2
:ambient-sound-spec #f
)
(new 'static 'water-anim-look :skel-group '*water-anim-village1-rice-paddy-sg* :anim 8 :ambient-sound-spec #f)
(new 'static 'water-anim-look :skel-group '*water-anim-village1-fountain-sg* :anim 8 :ambient-sound-spec #f)
(new 'static 'water-anim-look
:skel-group
'*water-anim-village1-rice-paddy-mid-sg*
:anim 8
:ambient-sound-spec #f
)
(new 'static 'water-anim-look
:skel-group
'*water-anim-village1-rice-paddy-top-sg*
:anim 8
:ambient-sound-spec #f
)
(new 'static 'water-anim-look :skel-group '*water-anim-village2-bucket-sg* :anim 2 :ambient-sound-spec #f)
)
)
)
(defstate water-vol-idle (water-anim)
:virtual #t
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(let ((v1-0 arg2))
(the-as object (when (= v1-0 'move-to)
(set! (-> self root trans quad) (-> (the-as vector (-> arg3 param 0)) quad))
(set! (-> self water-height) (-> self root trans y))
(if (nonzero? (-> self sound))
(update-trans! (-> self sound) (-> self root trans))
)
(let ((v0-0 (logclear (-> self mask) (process-mask sleep-code))))
(set! (-> self mask) v0-0)
v0-0
)
)
)
)
)
:trans
(behavior ()
(let ((t9-0 (-> (method-of-type water-vol water-vol-idle) trans)))
(if t9-0
(t9-0)
)
)
(if (< (-> (math-camera-pos) y) (+ -8192.0 (-> self root trans y)))
(logior! (-> self draw status) (draw-status drwf01))
(logclear! (-> self draw status) (draw-status drwf01))
)
(if (and (-> self play-ambient-sound?) (nonzero? (-> self sound)))
(update! (-> self sound))
)
(none)
)
:code
(behavior ()
(while #t
(ja-post)
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
)
(none)
)
)
(defmethod get-ripple-height water-anim ((obj water-anim) (arg0 vector))
(ripple-find-height obj 0 arg0)
)
(defmethod set-stack-size! water-anim ((obj water-anim))
(none)
)
(defmethod TODO-RENAME-25 water-anim ((obj water-anim))
(local-vars (sv-16 res-tag))
(set! (-> obj play-ambient-sound?) #t)
(set! (-> obj look) (res-lump-value (-> obj entity) 'look int :default (the-as uint128 -1)))
(set! sv-16 (new 'static 'res-tag))
(let ((v1-3 (res-lump-data (-> obj entity) 'trans-offset (pointer float) :tag-ptr (& sv-16))))
(when v1-3
(+! (-> obj root trans x) (-> v1-3 0))
(+! (-> obj root trans y) (-> v1-3 1))
(+! (-> obj root trans z) (-> v1-3 2))
)
)
(let ((f0-6 (res-lump-float (-> obj entity) 'rotoffset)))
(the-as object (if (!= f0-6 0.0)
(quaternion-rotate-y! (-> obj root quat) (-> obj root quat) f0-6)
)
)
)
)
(defmethod TODO-RENAME-22 water-anim ((obj water-anim))
(let ((s5-0 (-> obj look)))
(if (or (< s5-0 0) (>= s5-0 (-> *water-anim-look* length)))
(go process-drawable-art-error "skel group")
)
(let ((s5-1 (-> *water-anim-look* s5-0)))
(let ((s4-0 (-> s5-1 skel-group value)))
(let ((s3-0 s4-0))
(if (not (if (and (nonzero? s3-0) (type-type? (-> (the-as basic s3-0) type) skeleton-group))
s3-0
)
)
(go process-drawable-art-error "skel group")
)
)
(initialize-skeleton obj (the-as skeleton-group s4-0) '())
)
(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 (-> s5-1 anim)))
num-func-identity
)
(set! (-> s4-1 frame-num) 0.0)
)
(let ((a2-2 (-> s5-1 ambient-sound-spec)))
(when a2-2
(let ((a3-0 (new 'stack-no-clear 'vector)))
(vector+! a3-0 (-> obj root trans) (-> obj draw bounds))
(set! (-> obj sound) (new 'process 'ambient-sound a2-2 a3-0))
)
)
)
)
)
(ja-post)
(none)
)