mirror of
https://github.com/open-goal/jak-project
synced 2026-08-16 05:09:45 -04:00
jak2 gsrc
This commit is contained in:
@@ -16,7 +16,6 @@ Do not call these functions unless *debug-segment* is set.
|
||||
"Fills points with positions that make a wireframe sphere made of the given number of horizontal and vertical lines.
|
||||
The points array is expected to have a capacity of at least (h-lines * v-lines * 3).
|
||||
Both h-lines and v-lines should be whole numbers."
|
||||
(local-vars (next-hz vector) (next-vt vector) (h-line int))
|
||||
(let ((offset (new-stack-vector0))
|
||||
(scale 1.0)
|
||||
(num-points 0)
|
||||
@@ -26,27 +25,29 @@ Do not call these functions unless *debug-segment* is set.
|
||||
(let ((f28-0 (* scale (sin (* (the float v-line) (/ 32768.0 v-lines)))))
|
||||
(f26-0 (* scale (sin (* (the float (+ v-line 1)) (/ 32768.0 v-lines)))))
|
||||
(current (new-stack-vector0))
|
||||
(next-hz (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(set! next-hz (new 'stack-no-clear 'vector))
|
||||
(set! (-> next-hz quad) (the-as uint128 0))
|
||||
(set! next-vt (new 'stack-no-clear 'vector))
|
||||
(set! (-> next-vt quad) (the-as uint128 0))
|
||||
(set! (-> current y) (+ (-> offset y) (* (cos (* (the float v-line) (/ 32768.0 v-lines))) scale)))
|
||||
(set! (-> next-hz y) (-> current y))
|
||||
(set! (-> next-vt y) (+ (-> offset y) (* (cos (* (the float (+ v-line 1)) (/ 32768.0 v-lines))) scale)))
|
||||
(set! h-line 0)
|
||||
(while (< h-line (the int h-lines))
|
||||
(set! (-> current x) (+ (-> offset x) (* (cos (* (the float h-line) (/ 65536.0 h-lines))) f28-0)))
|
||||
(set! (-> current z) (+ (-> offset z) (* (sin (* (the float h-line) (/ 65536.0 h-lines))) f28-0)))
|
||||
(set! (-> next-hz x) (+ (-> offset x) (* (cos (* (the float (+ h-line 1)) (/ 65536.0 h-lines))) f28-0)))
|
||||
(set! (-> next-hz z) (+ (-> offset z) (* (sin (* (the float (+ h-line 1)) (/ 65536.0 h-lines))) f28-0)))
|
||||
(set! (-> next-vt x) (+ (-> offset x) (* (cos (* (the float h-line) (/ 65536.0 h-lines))) f26-0)))
|
||||
(set! (-> next-vt z) (+ (-> offset z) (* (sin (* (the float h-line) (/ 65536.0 h-lines))) f26-0)))
|
||||
(set! (-> points data num-points quad) (-> current quad))
|
||||
(set! (-> points data (+ num-points 1) quad) (-> next-hz quad))
|
||||
(set! (-> points data (+ num-points 2) quad) (-> next-vt quad))
|
||||
(+! num-points 3)
|
||||
(set! h-line (+ h-line 1))
|
||||
(let ((next-vt (new 'stack-no-clear 'vector)))
|
||||
(set! (-> next-vt quad) (the-as uint128 0))
|
||||
(set! (-> current y) (+ (-> offset y) (* (cos (* (the float v-line) (/ 32768.0 v-lines))) scale)))
|
||||
(set! (-> next-hz y) (-> current y))
|
||||
(set! (-> next-vt y) (+ (-> offset y) (* (cos (* (the float (+ v-line 1)) (/ 32768.0 v-lines))) scale)))
|
||||
(let ((h-line 0))
|
||||
(while (< h-line (the int h-lines))
|
||||
(set! (-> current x) (+ (-> offset x) (* (cos (* (the float h-line) (/ 65536.0 h-lines))) f28-0)))
|
||||
(set! (-> current z) (+ (-> offset z) (* (sin (* (the float h-line) (/ 65536.0 h-lines))) f28-0)))
|
||||
(set! (-> next-hz x) (+ (-> offset x) (* (cos (* (the float (+ h-line 1)) (/ 65536.0 h-lines))) f28-0)))
|
||||
(set! (-> next-hz z) (+ (-> offset z) (* (sin (* (the float (+ h-line 1)) (/ 65536.0 h-lines))) f28-0)))
|
||||
(set! (-> next-vt x) (+ (-> offset x) (* (cos (* (the float h-line) (/ 65536.0 h-lines))) f26-0)))
|
||||
(set! (-> next-vt z) (+ (-> offset z) (* (sin (* (the float h-line) (/ 65536.0 h-lines))) f26-0)))
|
||||
(set! (-> points data num-points quad) (-> current quad))
|
||||
(set! (-> points data (+ num-points 1) quad) (-> next-hz quad))
|
||||
(set! (-> points data (+ num-points 2) quad) (-> next-vt quad))
|
||||
(+! num-points 3)
|
||||
(+! h-line 1)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -68,7 +69,6 @@ Do not call these functions unless *debug-segment* is set.
|
||||
"Adds a debug sphere to a bucket.
|
||||
The table-idx specifies the resolution of the sphere and must be >= 0 and <= 9, where 9 would specify
|
||||
the highest resolution available and 0 would draw nothing."
|
||||
(local-vars (sphere-points vector-array) (point-3 vector))
|
||||
(rlet ((vf1 :class vf)
|
||||
(vf2 :class vf)
|
||||
(vf3 :class vf)
|
||||
@@ -83,12 +83,12 @@ Do not call these functions unless *debug-segment* is set.
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! sphere-points (-> *debug-sphere-table* table-idx))
|
||||
(set! point-3 (the-as vector (new-stack-vector0)))
|
||||
(let ((point-1 (new-stack-vector0))
|
||||
(point-2 (new-stack-vector0))
|
||||
(points (-> sphere-points data))
|
||||
)
|
||||
(let* ((sphere-points (-> *debug-sphere-table* table-idx))
|
||||
(point-3 (the-as vector (new-stack-vector0)))
|
||||
(point-1 (new-stack-vector0))
|
||||
(point-2 (new-stack-vector0))
|
||||
(points (-> sphere-points data))
|
||||
)
|
||||
(.lvf vf1 (&-> position quad))
|
||||
(.mov vf2 radius)
|
||||
(countdown (s4-1 (/ (-> sphere-points length) 3))
|
||||
@@ -109,6 +109,7 @@ Do not call these functions unless *debug-segment* is set.
|
||||
(add-debug-line #t bucket point-1 point-3 color #f (the-as rgba -1))
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user