jak-project/goal_src/jak3/engine/physics/dynamics-h.gc
Hat Kid ea93d32acc
decomp3: more misc files (#3349)
- `pat-h`
- `engines`
- `res-h`
- `res`
- `fact-h`
- `game-info-h`
- `wind-h`
- `merc-h`
- `shadow-vu1-h`
- `shadow-cpu-h`
- `dynamics-h`
- `memcard-h`
- `surface-h`
- part of `gui-h`
- `ambient-h`
- `speech-h`
- `prototype-h`
- `smush-control-h`
- `generic-merc-h`
- `generic-work-h`
- `collide-func-h`
- `collide-mesh-h`
- `collide-shape-h` (only missing the `new` method for `collide-shape`
because we don't have `process-drawable` yet and that also needs joint
stuff etc.)
- `collide-touch-h`
- `collide-edge-grab-h`
- `lightning-h`

This also adds argument name remaps for the `relocate` and `mem-usage`
methods (Jak 1 and 2 ref tests were updated, but not the gsrc).
2024-01-31 18:25:06 -05:00

59 lines
1.5 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: dynamics-h.gc
;; name in dgo: dynamics-h
;; dgos: GAME
;; DECOMP BEGINS
(deftype dynamics (basic)
((name symbol)
(gravity-max meters)
(gravity-length meters)
(gravity vector :inline)
(gravity-normal vector :inline)
(walk-distance meters)
(run-distance meters)
)
(:methods
(set-gravity-length (_type_ float) none)
)
)
(defmethod set-gravity-length ((this dynamics) (arg0 float))
(set! (-> this gravity-length) arg0)
(vector-float*! (-> this gravity) (-> this gravity-normal) arg0)
0
(none)
)
(defun time-to-apex ((arg0 float) (arg1 float))
(the int (/ arg0 (- (* 0.0033333334 arg1))))
)
(defun time-to-ground ((arg0 float) (arg1 float) (arg2 float))
(let ((f0-0 0.0)
(v0-0 0)
)
(while (< (- arg2) f0-0)
(set! arg0 (- arg0 (* 0.0033333334 arg1)))
(+! f0-0 (* 0.0033333334 arg0))
(+! v0-0 1)
)
v0-0
)
)
(define *standard-dynamics* (new 'static 'dynamics
:name 'standard
:gravity-max (meters 40)
:gravity-length (meters 60)
:gravity (new 'static 'vector :y 245760.0 :w 1.0)
:gravity-normal (new 'static 'vector :y 1.0 :w 1.0)
:walk-distance (meters 2)
:run-distance (meters 5)
)
)