jak-project/goal_src/levels/common/water-anim.gc
Tyler Wilding 5f1ed7ab60
decomp: decompile *-obs files (#856)
* decomp: mostly finish `cam-master`

* decomp/scripts: lots of work in cam-states

* stash

* Merge remote-tracking branch 'water111/master' into decomp/camera-master

Updated submodule third-party/googletest

* decompiler: Add support for non power of 2 offsets for inline arr access

* decomp: mostly finish `cam-states` need to fix a macro issue

* blocked: `cam-master` decompiler crash when adding casts

* decomp: finish `cam-states-dbg`

* decomp: mostly finish `pov-camera` with the exception of joint-related code

* decomp: `cam-debug` finished decompiling, no way does this compile yet though

* decomp: considerable work done in `cam-layout`

* decomp: `cam-layout` almost done!

* decomp: `pov-camera` finished, TC tests will fail for now

* decomp: working on resolving issues

* decomp: cam-layout decompiling

* fixing more issues in cam-master...one event handler remains

* skip problematic function in `cam-master` for now

* gsrc: update res macros

* decomp: finish `cam-states`

* decomp: giving up on `cam-debug`

* tests: allow skipping state handlers in ref tests

* decomp: working through cam-layout bugs

* decomp: allow for shifting non-integers

* decomp: finalize `cam-layout` and `cam-master`

* decomp: finalize `cam-states`

* cleanup: bi-annual formatting of the casting files

* formatting

* decomp: start working on beach-obs

* blocked: `beach-obs` mostly finished, but handle cast issues and unknown `prebind` func signature

* blocked: `villagep-obs` done, `s6` not being referred to as `self`

* decomp: finish `citadel-obs`

* decomp: finish `darkcave-obs`

* blocked: need to allow `hud-h` to decompile properly (#f as static pointer)

* decomp: finish `jungle-obs`

* decomp: finish `village-obs`

* blocked: `misty-obs` handle cast issues

* decomp: finish `village2-obs`

* decomp: 1 function left in `swamp-obs`, particle related -- maybe we know now?

* decomp: finish `swamp-obs`

* blocked: `maincave-obs` handle casts

* decomp: finish `sunken-obs`

* blocked: `rolling-obs` handle casts and hud-parts

* decomp: finish `firecanyon-obs`

* decomp: finish `ogre-obs`

* blocked: `village3-obs` gives up type analysis!

* blocked: `snow-obs` has hud-parts and handle casts code

* decomp: finish `snow-flutflut-obs`

* blocked: `lavatube-obs` has s6-1 issue

* blocked: `title-obs` handle cast issues

* fixed post merge problems

* decomp: finish `jungleb-obs`

* blocked: `training-obs` has `s6-1` issue

* fix type consistency

* scripts: Extend update script to handle the game-text-id enum as well

* git: Update git attributes to effectively halve PR burden

* fixed `sound-play-by-name` signature

* fix particle definitions in firecanyon-obs

* fix func signature in racer-states

* update ref tests

* tests: update current ref tests

* tests: add `joint` to ref-tests

* tests: add `process-drawable` to ref-tests

* updated gsrc

* add back manual fix

* address most feedback, update source files

* get rid of forward declarations in `darkcave-obs`

Co-authored-by: ManDude <7569514+ManDude@users.noreply.github.com>
2021-11-05 21:29:32 -04:00

1452 lines
33 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
)
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "water-anim-sunken-dark-eco"
:bounds (new 'static 'vector :w 163840.0)
:version #x6
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) -1)
(set! (-> v1-1 mgeo 0) 1)
(set! (-> v1-1 lod-dist 0) 4095996000.0)
(set! *water-anim-sunken-dark-eco-qbert-sg* v1-1)
)
(let
((v1-2
(new 'static 'skeleton-group
:art-group-name "water-anim-sunken-dark-eco"
:bounds (new 'static 'vector :w 90112.0)
:version #x6
)
)
)
(set! (-> v1-2 jgeo) 2)
(set! (-> v1-2 janim) -1)
(set! (-> v1-2 mgeo 0) 3)
(set! (-> v1-2 lod-dist 0) 4095996000.0)
(set! *water-anim-sunken-dark-eco-platform-room-sg* v1-2)
)
(let
((v1-3
(new 'static 'skeleton-group
:art-group-name "water-anim-sunken-dark-eco"
:bounds (new 'static 'vector :w 86016.0)
:version #x6
)
)
)
(set! (-> v1-3 jgeo) 4)
(set! (-> v1-3 janim) -1)
(set! (-> v1-3 mgeo 0) 5)
(set! (-> v1-3 lod-dist 0) 4095996000.0)
(set! *water-anim-sunken-dark-eco-helix-room-sg* v1-3)
)
(let
((v1-4
(new 'static 'skeleton-group
:art-group-name "water-anim-sunken"
:bounds
(new 'static 'vector :x 61440.0 :z -147456.0 :w 286720.0)
:version #x6
)
)
)
(set! (-> v1-4 jgeo) 0)
(set! (-> v1-4 janim) -1)
(set! (-> v1-4 mgeo 0) 1)
(set! (-> v1-4 lod-dist 0) 4095996000.0)
(set! *water-anim-sunken-big-room-sg* v1-4)
)
(let
((v1-5
(new 'static 'skeleton-group
:art-group-name "water-anim-sunken"
:bounds (new 'static 'vector :w 204800.0)
:version #x6
)
)
)
(set! (-> v1-5 jgeo) 2)
(set! (-> v1-5 janim) -1)
(set! (-> v1-5 mgeo 0) 3)
(set! (-> v1-5 lod-dist 0) 4095996000.0)
(set! *water-anim-sunken-first-room-from-entrance-sg* v1-5)
)
(let
((v1-6
(new 'static 'skeleton-group
:art-group-name "water-anim-sunken"
:bounds (new 'static 'vector :w 196608.0)
:version #x6
)
)
)
(set! (-> v1-6 jgeo) 4)
(set! (-> v1-6 janim) -1)
(set! (-> v1-6 mgeo 0) 5)
(set! (-> v1-6 lod-dist 0) 4095996000.0)
(set! *water-anim-sunken-qbert-room-sg* v1-6)
)
(let
((v1-7
(new 'static 'skeleton-group
:art-group-name "water-anim-sunken"
:bounds (new 'static 'vector :w 122880.0)
:version #x6
)
)
)
(set! (-> v1-7 jgeo) 6)
(set! (-> v1-7 janim) -1)
(set! (-> v1-7 mgeo 0) 7)
(set! (-> v1-7 lod-dist 0) 4095996000.0)
(set! *water-anim-sunken-first-right-branch-sg* v1-7)
)
(let
((v1-8
(new 'static 'skeleton-group
:art-group-name "water-anim-sunken"
:bounds (new 'static 'vector :w 61440.0)
:version #x6
)
)
)
(set! (-> v1-8 jgeo) 8)
(set! (-> v1-8 janim) -1)
(set! (-> v1-8 mgeo 0) 9)
(set! (-> v1-8 lod-dist 0) 4095996000.0)
(set! *water-anim-sunken-circular-with-bullys-sg* v1-8)
)
(let
((v1-9
(new 'static 'skeleton-group
:art-group-name "water-anim-sunken"
:bounds (new 'static 'vector :w 110592.0)
:version #x6
)
)
)
(set! (-> v1-9 jgeo) 10)
(set! (-> v1-9 janim) -1)
(set! (-> v1-9 mgeo 0) 11)
(set! (-> v1-9 lod-dist 0) 4095996000.0)
(set! *water-anim-sunken-hall-with-one-whirlpool-sg* v1-9)
)
(let
((v1-10
(new 'static 'skeleton-group
:art-group-name "water-anim-sunken"
:bounds (new 'static 'vector :w 106496.0)
:version #x6
)
)
)
(set! (-> v1-10 jgeo) 12)
(set! (-> v1-10 janim) -1)
(set! (-> v1-10 mgeo 0) 13)
(set! (-> v1-10 lod-dist 0) 4095996000.0)
(set! *water-anim-sunken-hall-with-three-whirlpools-sg* v1-10)
)
(let
((v1-11
(new 'static 'skeleton-group
:art-group-name "water-anim-sunken"
:bounds (new 'static 'vector :w 102400.0)
:version #x6
)
)
)
(set! (-> v1-11 jgeo) 14)
(set! (-> v1-11 janim) -1)
(set! (-> v1-11 mgeo 0) 15)
(set! (-> v1-11 lod-dist 0) 4095996000.0)
(set! *water-anim-sunken-start-of-helix-slide-sg* v1-11)
)
(let
((v1-12
(new 'static 'skeleton-group
:art-group-name "water-anim-sunken"
:bounds (new 'static 'vector :w 184320.0)
:version #x6
)
)
)
(set! (-> v1-12 jgeo) 16)
(set! (-> v1-12 janim) -1)
(set! (-> v1-12 mgeo 0) 17)
(set! (-> v1-12 lod-dist 0) 4095996000.0)
(set! *water-anim-sunken-room-above-exit-chamber-sg* v1-12)
)
(let
((v1-13
(new 'static 'skeleton-group
:art-group-name "water-anim-sunken"
:bounds
(new 'static 'vector :x 20480.0 :z -12288.0 :w 98304.0)
:version #x6
)
)
)
(set! (-> v1-13 jgeo) 18)
(set! (-> v1-13 janim) -1)
(set! (-> v1-13 mgeo 0) 19)
(set! (-> v1-13 lod-dist 0) 4095996000.0)
(set! *water-anim-sunken-hall-before-big-room-sg* v1-13)
)
(let
((v1-14
(new 'static 'skeleton-group
:art-group-name "water-anim-sunken"
:bounds (new 'static 'vector :w 81920.0)
:version #x6
)
)
)
(set! (-> v1-14 jgeo) 20)
(set! (-> v1-14 janim) -1)
(set! (-> v1-14 mgeo 0) 21)
(set! (-> v1-14 lod-dist 0) 4095996000.0)
(set! *water-anim-sunken-short-piece-sg* v1-14)
)
(let
((v1-15
(new 'static 'skeleton-group
:art-group-name "water-anim-sunken"
:bounds (new 'static 'vector :w 110592.0)
:version #x6
)
)
)
(set! (-> v1-15 jgeo) 22)
(set! (-> v1-15 janim) -1)
(set! (-> v1-15 mgeo 0) 23)
(set! (-> v1-15 lod-dist 0) 4095996000.0)
(set! *water-anim-sunken-big-room-upper-water-sg* v1-15)
)
(let
((v1-16
(new 'static 'skeleton-group
:art-group-name "water-anim-maincave"
:bounds (new 'static 'vector :w 286720.0)
:version #x6
)
)
)
(set! (-> v1-16 jgeo) 0)
(set! (-> v1-16 janim) -1)
(set! (-> v1-16 mgeo 0) 1)
(set! (-> v1-16 lod-dist 0) 4095996000.0)
(set! *water-anim-maincave-center-pool-sg* v1-16)
)
(let
((v1-17
(new 'static 'skeleton-group
:art-group-name "water-anim-maincave"
:bounds
(new 'static 'vector :x 24576.0 :z 20480.0 :w 249856.0)
:version #x6
)
)
)
(set! (-> v1-17 jgeo) 2)
(set! (-> v1-17 janim) -1)
(set! (-> v1-17 mgeo 0) 3)
(set! (-> v1-17 lod-dist 0) 4095996000.0)
(set! *water-anim-maincave-lower-right-pool-sg* v1-17)
)
(let
((v1-18
(new 'static 'skeleton-group
:art-group-name "water-anim-maincave"
:bounds (new 'static 'vector :w 151552.0)
:version #x6
)
)
)
(set! (-> v1-18 jgeo) 4)
(set! (-> v1-18 janim) -1)
(set! (-> v1-18 mgeo 0) 5)
(set! (-> v1-18 lod-dist 0) 4095996000.0)
(set! *water-anim-maincave-mid-right-pool-sg* v1-18)
)
(let
((v1-19
(new 'static 'skeleton-group
:art-group-name "water-anim-maincave"
:bounds
(new 'static 'vector :x -4096.0 :w 81920.0)
:version #x6
)
)
)
(set! (-> v1-19 jgeo) 6)
(set! (-> v1-19 janim) -1)
(set! (-> v1-19 mgeo 0) 7)
(set! (-> v1-19 lod-dist 0) 4095996000.0)
(set! *water-anim-maincave-lower-left-pool-sg* v1-19)
)
(let
((v1-20
(new 'static 'skeleton-group
:art-group-name "water-anim-maincave"
:bounds (new 'static 'vector :w 208896.0)
:version #x6
)
)
)
(set! (-> v1-20 jgeo) 8)
(set! (-> v1-20 janim) -1)
(set! (-> v1-20 mgeo 0) 9)
(set! (-> v1-20 lod-dist 0) 4095996000.0)
(set! *water-anim-maincave-mid-left-pool-sg* v1-20)
)
(let
((v1-21
(new 'static 'skeleton-group
:art-group-name "water-anim-maincave-water"
:bounds
(new 'static 'vector :z -12288.0 :w 90112.0)
:version #x6
)
)
)
(set! (-> v1-21 jgeo) 0)
(set! (-> v1-21 janim) -1)
(set! (-> v1-21 mgeo 0) 1)
(set! (-> v1-21 lod-dist 0) 4095996000.0)
(set! *water-anim-maincave-water-with-crystal-sg* v1-21)
)
(let
((v1-22
(new 'static 'skeleton-group
:art-group-name "water-anim-robocave"
:bounds (new 'static 'vector :w 221184.0)
:max-lod 1
:version #x6
)
)
)
(set! (-> v1-22 jgeo) 0)
(set! (-> v1-22 janim) -1)
(set! (-> v1-22 mgeo 0) 1)
(set! (-> v1-22 lod-dist 0) 81920.0)
(set! (-> v1-22 mgeo 1) 2)
(set! (-> v1-22 lod-dist 1) 4095996000.0)
(set! *water-anim-robocave-main-pool-sg* v1-22)
)
(let
((v1-23
(new 'static 'skeleton-group
:art-group-name "water-anim-misty"
:bounds
(new 'static 'vector :z -10240.0 :w 77824.0)
:version #x6
)
)
)
(set! (-> v1-23 jgeo) 0)
(set! (-> v1-23 janim) -1)
(set! (-> v1-23 mgeo 0) 1)
(set! (-> v1-23 lod-dist 0) 4095996000.0)
(set! *water-anim-misty-mud-by-arena-sg* v1-23)
)
(let
((v1-24
(new 'static 'skeleton-group
:art-group-name "water-anim-misty"
:bounds (new 'static 'vector :w 57344.0)
:version #x6
)
)
)
(set! (-> v1-24 jgeo) 2)
(set! (-> v1-24 janim) -1)
(set! (-> v1-24 mgeo 0) 3)
(set! (-> v1-24 lod-dist 0) 4095996000.0)
(set! *water-anim-misty-mud-above-skeleton-sg* v1-24)
)
(let
((v1-25
(new 'static 'skeleton-group
:art-group-name "water-anim-misty"
:bounds
(new 'static 'vector :z 16384.0 :w 102400.0)
:version #x6
)
)
)
(set! (-> v1-25 jgeo) 4)
(set! (-> v1-25 janim) -1)
(set! (-> v1-25 mgeo 0) 5)
(set! (-> v1-25 lod-dist 0) 4095996000.0)
(set! *water-anim-misty-mud-behind-skeleton-sg* v1-25)
)
(let
((v1-26
(new 'static 'skeleton-group
:art-group-name "water-anim-misty"
:bounds (new 'static 'vector :w 57344.0)
:version #x6
)
)
)
(set! (-> v1-26 jgeo) 6)
(set! (-> v1-26 janim) -1)
(set! (-> v1-26 mgeo 0) 7)
(set! (-> v1-26 lod-dist 0) 4095996000.0)
(set! *water-anim-misty-mud-above-skull-back-sg* v1-26)
)
(let
((v1-27
(new 'static 'skeleton-group
:art-group-name "water-anim-misty"
:bounds (new 'static 'vector :w 65536.0)
:version #x6
)
)
)
(set! (-> v1-27 jgeo) 8)
(set! (-> v1-27 janim) -1)
(set! (-> v1-27 mgeo 0) 9)
(set! (-> v1-27 lod-dist 0) 4095996000.0)
(set! *water-anim-misty-mud-above-skull-front-sg* v1-27)
)
(let
((v1-28
(new 'static 'skeleton-group
:art-group-name "water-anim-misty"
:bounds (new 'static 'vector :w 53248.0)
:version #x6
)
)
)
(set! (-> v1-28 jgeo) 10)
(set! (-> v1-28 janim) -1)
(set! (-> v1-28 mgeo 0) 11)
(set! (-> v1-28 lod-dist 0) 4095996000.0)
(set! *water-anim-misty-mud-other-near-skull-sg* v1-28)
)
(let
((v1-29
(new 'static 'skeleton-group
:art-group-name "water-anim-misty"
:bounds (new 'static 'vector :w 61440.0)
:version #x6
)
)
)
(set! (-> v1-29 jgeo) 12)
(set! (-> v1-29 janim) -1)
(set! (-> v1-29 mgeo 0) 13)
(set! (-> v1-29 lod-dist 0) 4095996000.0)
(set! *water-anim-misty-mud-near-skull-sg* v1-29)
)
(let
((v1-30
(new 'static 'skeleton-group
:art-group-name "water-anim-misty"
:bounds (new 'static 'vector :w 65536.0)
:version #x6
)
)
)
(set! (-> v1-30 jgeo) 14)
(set! (-> v1-30 janim) -1)
(set! (-> v1-30 mgeo 0) 15)
(set! (-> v1-30 lod-dist 0) 4095996000.0)
(set! *water-anim-misty-mud-under-spine-sg* v1-30)
)
(let
((v1-31
(new 'static 'skeleton-group
:art-group-name "water-anim-misty"
:bounds (new 'static 'vector :w 86016.0)
:version #x6
)
)
)
(set! (-> v1-31 jgeo) 16)
(set! (-> v1-31 janim) -1)
(set! (-> v1-31 mgeo 0) 17)
(set! (-> v1-31 lod-dist 0) 4095996000.0)
(set! *water-anim-misty-mud-by-dock-sg* v1-31)
)
(let
((v1-32
(new 'static 'skeleton-group
:art-group-name "water-anim-misty"
:bounds
(new 'static 'vector :x -4096.0 :z -4096.0 :w 61440.0)
:version #x6
)
)
)
(set! (-> v1-32 jgeo) 18)
(set! (-> v1-32 janim) -1)
(set! (-> v1-32 mgeo 0) 19)
(set! (-> v1-32 lod-dist 0) 4095996000.0)
(set! *water-anim-misty-mud-island-near-dock-sg* v1-32)
)
(let
((v1-33
(new 'static 'skeleton-group
:art-group-name "water-anim-misty"
:bounds (new 'static 'vector :w 40960.0)
:version #x6
)
)
)
(set! (-> v1-33 jgeo) 20)
(set! (-> v1-33 janim) -1)
(set! (-> v1-33 mgeo 0) 21)
(set! (-> v1-33 lod-dist 0) 4095996000.0)
(set! *water-anim-misty-mud-lonely-island-sg* v1-33)
)
(let
((v1-34
(new 'static 'skeleton-group
:art-group-name "water-anim-misty"
:bounds (new 'static 'vector :w 69632.0)
:version #x6
)
)
)
(set! (-> v1-34 jgeo) 22)
(set! (-> v1-34 janim) -1)
(set! (-> v1-34 mgeo 0) 23)
(set! (-> v1-34 lod-dist 0) 4095996000.0)
(set! *water-anim-misty-dark-eco-pool-sg* v1-34)
)
(let
((v1-35
(new 'static 'skeleton-group
:art-group-name "water-anim-ogre"
:bounds (new 'static 'vector :w 458752.0)
:version #x6
)
)
)
(set! (-> v1-35 jgeo) 0)
(set! (-> v1-35 janim) -1)
(set! (-> v1-35 mgeo 0) 1)
(set! (-> v1-35 lod-dist 0) 4095996000.0)
(set! *water-anim-ogre-lava-sg* v1-35)
)
(let
((v1-36
(new 'static 'skeleton-group
:art-group-name "water-anim-jungle"
:bounds (new 'static 'vector :w 372736.0)
:max-lod 1
:version #x6
)
)
)
(set! (-> v1-36 jgeo) 0)
(set! (-> v1-36 janim) -1)
(set! (-> v1-36 mgeo 0) 1)
(set! (-> v1-36 lod-dist 0) 81920.0)
(set! (-> v1-36 mgeo 1) 2)
(set! (-> v1-36 lod-dist 1) 4095996000.0)
(set! *water-anim-jungle-river-sg* v1-36)
)
(let
((v1-37
(new 'static 'skeleton-group
:art-group-name "water-anim-village3"
:bounds
(new 'static 'vector :x 61440.0 :z 40960.0 :w 667648.0)
:max-lod 1
:version #x6
)
)
)
(set! (-> v1-37 jgeo) 0)
(set! (-> v1-37 janim) -1)
(set! (-> v1-37 mgeo 0) 1)
(set! (-> v1-37 lod-dist 0) 81920.0)
(set! (-> v1-37 mgeo 1) 2)
(set! (-> v1-37 lod-dist 1) 4095996000.0)
(set! *water-anim-village3-lava-sg* v1-37)
)
(let
((v1-38
(new 'static 'skeleton-group
:art-group-name "water-anim-training"
:bounds
(new 'static 'vector :x -73728.0 :w 212992.0)
:version #x6
)
)
)
(set! (-> v1-38 jgeo) 0)
(set! (-> v1-38 janim) -1)
(set! (-> v1-38 mgeo 0) 1)
(set! (-> v1-38 lod-dist 0) 4095996000.0)
(set! *water-anim-training-lake-sg* v1-38)
)
(let
((v1-39
(new 'static 'skeleton-group
:art-group-name "water-anim-darkcave"
:bounds (new 'static 'vector :w 77824.0)
:version #x6
)
)
)
(set! (-> v1-39 jgeo) 0)
(set! (-> v1-39 janim) -1)
(set! (-> v1-39 mgeo 0) 1)
(set! (-> v1-39 lod-dist 0) 4095996000.0)
(set! *water-anim-darkcave-water-with-crystal-sg* v1-39)
)
(let
((v1-40
(new 'static 'skeleton-group
:art-group-name "water-anim-rolling"
:bounds
(new 'static 'vector :x -40960.0 :w 286720.0)
:version #x6
)
)
)
(set! (-> v1-40 jgeo) 0)
(set! (-> v1-40 janim) -1)
(set! (-> v1-40 mgeo 0) 1)
(set! (-> v1-40 lod-dist 0) 4095996000.0)
(set! *water-anim-rolling-water-back-sg* v1-40)
)
(let
((v1-41
(new 'static 'skeleton-group
:art-group-name "water-anim-rolling"
:bounds (new 'static 'vector :w 286720.0)
:version #x6
)
)
)
(set! (-> v1-41 jgeo) 2)
(set! (-> v1-41 janim) -1)
(set! (-> v1-41 mgeo 0) 3)
(set! (-> v1-41 lod-dist 0) 4095996000.0)
(set! *water-anim-rolling-water-front-sg* v1-41)
)
(let
((v1-42
(new 'static 'skeleton-group
:art-group-name "water-anim-finalboss"
:bounds (new 'static 'vector :w 77824.0)
:version #x6
)
)
)
(set! (-> v1-42 jgeo) 0)
(set! (-> v1-42 janim) -1)
(set! (-> v1-42 mgeo 0) 1)
(set! (-> v1-42 lod-dist 0) 4095996000.0)
(set! *water-anim-finalboss-dark-eco-pool-sg* v1-42)
)
(let
((v1-43
(new 'static 'skeleton-group
:art-group-name "water-anim-lavatube"
:bounds
(new 'static 'vector :y -28672.0 :w 102400.0)
:version #x6
)
)
)
(set! (-> v1-43 jgeo) 0)
(set! (-> v1-43 janim) -1)
(set! (-> v1-43 mgeo 0) 1)
(set! (-> v1-43 lod-dist 0) 4095996000.0)
(set! *water-anim-lavatube-energy-lava-sg* v1-43)
)
(let
((v1-44
(new 'static 'skeleton-group
:art-group-name "water-anim-village1"
:bounds
(new 'static 'vector :x -61440.0 :w 110592.0)
:version #x6
)
)
)
(set! (-> v1-44 jgeo) 0)
(set! (-> v1-44 janim) -1)
(set! (-> v1-44 mgeo 0) 1)
(set! (-> v1-44 lod-dist 0) 4095996000.0)
(set! *water-anim-village1-rice-paddy-sg* v1-44)
)
(let
((v1-45
(new 'static 'skeleton-group
:art-group-name "water-anim-village1"
:bounds (new 'static 'vector :w 18432.0)
:version #x6
)
)
)
(set! (-> v1-45 jgeo) 6)
(set! (-> v1-45 janim) -1)
(set! (-> v1-45 mgeo 0) 7)
(set! (-> v1-45 lod-dist 0) 4095996000.0)
(set! *water-anim-village1-fountain-sg* v1-45)
)
(let
((v1-46
(new 'static 'skeleton-group
:art-group-name "water-anim-village1"
:bounds (new 'static 'vector :w 143360.0)
:version #x6
)
)
)
(set! (-> v1-46 jgeo) 2)
(set! (-> v1-46 janim) -1)
(set! (-> v1-46 mgeo 0) 3)
(set! (-> v1-46 lod-dist 0) 4095996000.0)
(set! *water-anim-village1-rice-paddy-mid-sg* v1-46)
)
(let
((v1-47
(new 'static 'skeleton-group
:art-group-name "water-anim-village1"
:bounds
(new 'static 'vector :x 24576.0 :z -69632.0 :w 81920.0)
:version #x6
)
)
)
(set! (-> v1-47 jgeo) 4)
(set! (-> v1-47 janim) -1)
(set! (-> v1-47 mgeo 0) 5)
(set! (-> v1-47 lod-dist 0) 4095996000.0)
(set! *water-anim-village1-rice-paddy-top-sg* v1-47)
)
(let
((v1-48
(new 'static 'skeleton-group
:art-group-name "water-anim-village2"
:bounds (new 'static 'vector :w 2867.2)
:version #x6
)
)
)
(set! (-> v1-48 jgeo) 0)
(set! (-> v1-48 janim) -1)
(set! (-> v1-48 mgeo 0) 1)
(set! (-> v1-48 lod-dist 0) 4095996000.0)
(set! *water-anim-village2-bucket-sg* v1-48)
)
(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) 2)
(set! (-> self draw status) (logand -3 (-> self draw status)))
)
(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 dummy-24 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))
)
)
)
)
)
(the-as ripple-wave-set (ja-post))
)