2023-10-10 09:41:05 -04:00
|
|
|
;;-*-Lisp-*-
|
|
|
|
(in-package goal)
|
|
|
|
|
|
|
|
;; name: dynamics-h.gc
|
|
|
|
;; name in dgo: dynamics-h
|
|
|
|
;; dgos: GAME
|
|
|
|
|
|
|
|
;; DECOMP BEGINS
|
|
|
|
|
2024-01-31 18:25:06 -05:00
|
|
|
(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)
|
|
|
|
)
|
|
|
|
)
|