[jak2] entity debug improvements and add a hack to make airlocks faster because we can + fix defend stadium (#2432)

This commit is contained in:
ManDude
2023-03-27 02:55:16 +01:00
committed by GitHub
parent 0b021d1be1
commit 013a4f4612
17 changed files with 219 additions and 145 deletions
+6 -5
View File
@@ -32287,8 +32287,8 @@
(deftype com-airlock (process-drawable)
((child-override basic :offset 24) ;; what is this!
(root-override collide-shape :offset 128 :score 999)
(level-name string :offset-assert 200)
(open-test symbol :offset-assert 204)
(level-name pair :offset-assert 200)
(open-test pair :offset-assert 204)
(were-behind? symbol :offset-assert 208)
(inner? symbol :offset-assert 212)
(sound-behind? symbol :offset-assert 216)
@@ -50475,6 +50475,7 @@
:method-count-assert 9
:size-assert #x4
:flag-assert #x900000004
:pack-me
)
(deftype race-mesh-hash-cell (structure)
@@ -50516,9 +50517,9 @@
:size-assert #x1c
:flag-assert #x140000001c
(:methods
(race-mesh-method-9 (_type_ int int rgba rgba) none 9)
(race-mesh-method-10 (_type_ int int) symbol 10)
(race-mesh-method-11 (_type_ int) none 11)
(debug-draw-path (_type_ int int rgba rgba) none 9)
(debug-draw-path-from-history (_type_ int int) symbol 10)
(debug-draw-slice (_type_ int) none 11)
(debug-draw-edges (_type_) none 12)
(race-mesh-method-13 (_type_ race-mesh-slice-query) none 13)
(race-mesh-method-14 (_type_ race-mesh-slice-query) none 14)
+1 -1
View File
@@ -403,7 +403,7 @@
"STR/YOLYSAMS.STR",
"STR/YOLYSKDC.STR",
"STR/YOONINTE.STR",
"STR/YOTOMBD.STR"
"STR/YOTOMBD.STR"
],
// some objects are directly stored as files on the DVD. This is just text files.
@@ -11015,7 +11015,5 @@
[[68, 75], "a0", "dma-packet"],
[[79, 86], "a0", "(pointer uint32)"],
[[87, 94], "a0", "(pointer vif-tag)"]
]
}
@@ -4158,5 +4158,19 @@
"f1-0": "danger-radius",
"f3-0": "decay-rate"
}
},
"(method 24 com-airlock)": {
"vars": {
"gp-1": ["level-list", "pair"],
"s4-0": "borrow-lev-name",
"s3-0": ["level-list-iter", "pair"],
"s2-0": "lev-name"
},
"args": ["obj", "display?"]
},
"(method 23 com-airlock)": {
"vars": {
"s4-0": "tgt"
}
}
}
+4 -4
View File
@@ -4012,10 +4012,10 @@
)
(menu
"Gun"
(flag "yellow" 2 dm-game-inventory-toggle-pick-func)
(flag "red" 4 dm-game-inventory-toggle-pick-func)
(flag "blue" 8 dm-game-inventory-toggle-pick-func)
(flag "dark" 16 dm-game-inventory-toggle-pick-func)
(flag "yellow" (the binteger (game-feature gun-yellow)) dm-game-feature-toggle-pick-func)
(flag "red" (the binteger (game-feature gun-red)) dm-game-feature-toggle-pick-func)
(flag "blue" (the binteger (game-feature gun-blue)) dm-game-feature-toggle-pick-func)
(flag "dark" (the binteger (game-feature gun-dark)) dm-game-feature-toggle-pick-func)
(flag "gun-upgrade-speed" 16384 dm-game-feature-toggle-pick-func)
(flag "gun-upgrade-ammo" 32768 dm-game-feature-toggle-pick-func)
(flag "gun-upgrade-damage" 65536 dm-game-feature-toggle-pick-func)
+2
View File
@@ -1743,6 +1743,8 @@
(tick! (-> arg0 bg-clock))
(set! (-> arg0 bg-clock frame-counter) (the-as time-frame (mod (-> arg0 bg-clock frame-counter) #x69780)))
(tick! (-> arg0 part-clock))
(#when PC_PORT
(tick! *airlock-clock*))
; (when (and (nonzero? *screen-shot-work*) (!= (-> *screen-shot-work* count) -1))
; (let ((v1-43 (-> *screen-shot-work* size)))
+5
View File
@@ -41,6 +41,11 @@
(-> obj dog-ratio)
)
(#when PC_PORT
(define *airlock-clock* (new 'global 'clock 13))
(set! (-> *airlock-clock* clock-ratio) 1.5)
)
(defun set-display ((arg0 display))
"Allocate and initialize clocks for the display."
(dotimes (s5-0 13)
+42 -40
View File
@@ -12,8 +12,8 @@
(deftype com-airlock (process-drawable)
((child-override basic :offset 24)
(root-override collide-shape :offset 128)
(level-name string :offset-assert 200)
(open-test symbol :offset-assert 204)
(level-name pair :offset-assert 200)
(open-test pair :offset-assert 204)
(were-behind? symbol :offset-assert 208)
(inner? symbol :offset-assert 212)
(sound-behind? symbol :offset-assert 216)
@@ -106,17 +106,17 @@
(res-lump-float (-> obj entity) 'idle-distance :default (+ 143360.0 (-> obj open-distance)))
)
(set! (-> obj y-height) (res-lump-data (-> obj entity) 'height vector))
(set! (-> obj level-name) (res-lump-struct (-> obj entity) 'on-notice string))
(set! (-> obj level-name) (res-lump-struct (-> obj entity) 'on-notice pair))
(set! (-> obj open-test)
(the-as symbol ((method-of-type res-lump get-property-struct)
(-> obj entity)
'open-test
'interp
-1000000000.0
(the-as structure '(not (or (scene-player?) (focus-test? *target* grabbed))))
(the-as (pointer res-tag) #f)
*res-static-buf*
)
(the-as pair ((method-of-type res-lump get-property-struct)
(-> obj entity)
'open-test
'interp
-1000000000.0
(the-as structure '(not (or (scene-player?) (focus-test? *target* grabbed))))
(the-as (pointer res-tag) #f)
*res-static-buf*
)
)
)
(set! (-> obj sound-gear) #f)
@@ -172,15 +172,15 @@
;; WARN: Return type mismatch object vs symbol.
(defmethod want-cross-airlock? com-airlock ((obj com-airlock))
(local-vars (a0-12 entity-actor))
(let* ((s4-0 (target-pos 0))
(f30-0 (check-crossing-distance obj s4-0 #t))
(let* ((tgt (target-pos 0))
(f30-0 (check-crossing-distance obj tgt #t))
(s5-0 (>= (-> obj latch-open-time) (-> self clock frame-counter)))
)
(the-as
symbol
(and (or s5-0 (< (vector-vector-xz-distance (-> obj root-override trans) s4-0) (-> obj active-distance)))
(or s5-0 (not (-> obj y-height)) (and (>= (-> s4-0 y) (- (-> obj root-override trans y) (-> obj y-height y)))
(< (-> s4-0 y) (+ (-> obj root-override trans y) (-> obj y-height x)))
(and (or s5-0 (< (vector-vector-xz-distance (-> obj root-override trans) tgt) (-> obj active-distance)))
(or s5-0 (not (-> obj y-height)) (and (>= (-> tgt y) (- (-> obj root-override trans y) (-> obj y-height y)))
(< (-> tgt y) (+ (-> obj root-override trans y) (-> obj y-height x)))
)
)
(begin
@@ -200,7 +200,7 @@
)
(logtest? (-> a0-12 extra perm status) (entity-perm-status subtask-complete))
)
(and (script-eval (the-as pair (-> obj open-test))) (-> *setting-control* user-current airlock))
(and (script-eval (-> obj open-test)) (-> *setting-control* user-current airlock))
)
)
s5-0
@@ -221,59 +221,59 @@
)
)
(defmethod destination-loaded? com-airlock ((obj com-airlock) (arg0 symbol))
(let ((gp-1 (script-eval (the-as pair (-> obj level-name))))
(s4-0 #f)
(defmethod destination-loaded? com-airlock ((obj com-airlock) (display? symbol))
(let ((level-list (the-as pair (script-eval (-> obj level-name))))
(borrow-lev-name #f)
)
(cond
((not gp-1)
(if arg0
((not (the-as object level-list))
(if display?
'unknown
#f
)
)
(arg0
(let* ((s3-0 gp-1)
(s2-0 (car s3-0))
(display?
(let* ((level-list-iter level-list)
(lev-name (car (the-as object level-list-iter)))
)
(while (not (null? s3-0))
(let ((v1-4 (level-status *level* (the-as symbol s2-0))))
(while (not (null? (the-as object level-list-iter)))
(let ((v1-4 (level-status *level* (the-as symbol lev-name))))
(if (not (or (= v1-4 'loaded) (= v1-4 'active)))
(return #f)
)
)
(if (= s2-0 'ctywide)
(set! s4-0 (-> ctywide borrow-level 1))
(if (= lev-name 'ctywide)
(set! borrow-lev-name (-> ctywide borrow-level 1))
)
(set! s3-0 (cdr s3-0))
(set! s2-0 (car (the-as pair s3-0)))
(set! level-list-iter (cdr (the-as object level-list-iter)))
(set! lev-name (car level-list-iter))
)
)
(when s4-0
(let ((v1-17 (level-status *level* s4-0)))
(when borrow-lev-name
(let ((v1-17 (level-status *level* borrow-lev-name)))
(if (not (or (= v1-17 'loaded) (= v1-17 'active)))
(return #f)
)
)
)
(if (!= arg0 'display)
(if (!= display? 'display)
(return #t)
)
(let ((a1-7 (car gp-1)))
(while (not (null? gp-1))
(let ((a1-7 (car (the-as object level-list))))
(while (not (null? (the-as object level-list)))
(let ((v1-26 (level-get *level* (the-as symbol a1-7))))
(if (not (and v1-26 (= (-> v1-26 status) 'active) (-> v1-26 display?)))
(return #f)
)
)
(set! gp-1 (cdr gp-1))
(set! a1-7 (car (the-as pair gp-1)))
(set! level-list (cdr (the-as object level-list)))
(set! a1-7 (car level-list))
)
)
#t
)
(else
(let* ((v1-33 gp-1)
(let* ((v1-33 (the-as object level-list))
(a0-11 (car v1-33))
)
(while (not (null? v1-33))
@@ -412,6 +412,7 @@
)
)
:enter (behavior ((arg0 symbol))
(#when PC_PORT (set! (-> self clock) (-> self parent 0 clock)))
(set! (-> self visible-move?) #f)
(none)
)
@@ -616,6 +617,7 @@
:virtual #t
:event (-> (method-of-type com-airlock close) event)
:enter (behavior ((arg0 symbol))
(#when PC_PORT (set! (-> self clock) *airlock-clock*))
(set! (-> self visible-move?) #f)
(none)
)
@@ -948,7 +948,7 @@
(let ((s3-0 8))
(dotimes (s2-0 8)
(if (logtest? s5-0 s3-0)
(race-mesh-method-10 s4-0 s2-0 0)
(debug-draw-path-from-history s4-0 s2-0 0)
)
(set! s3-0 (* s3-0 2))
)
+10 -9
View File
@@ -110,6 +110,7 @@
:method-count-assert 9
:size-assert #x4
:flag-assert #x900000004
:pack-me
)
@@ -154,9 +155,9 @@
:size-assert #x1c
:flag-assert #x140000001c
(:methods
(race-mesh-method-9 (_type_ int int rgba rgba) none 9)
(race-mesh-method-10 (_type_ int int) symbol 10)
(race-mesh-method-11 (_type_ int) none 11)
(debug-draw-path (_type_ int int rgba rgba) none 9)
(debug-draw-path-from-history (_type_ int int) symbol 10)
(debug-draw-slice (_type_ int) none 11)
(debug-draw-edges (_type_) none 12)
(race-mesh-method-13 (_type_ race-mesh-slice-query) none 13)
(race-mesh-method-14 (_type_ race-mesh-slice-query) none 14)
@@ -311,7 +312,7 @@
(none)
)
(defmethod race-mesh-method-9 race-mesh ((obj race-mesh) (arg0 int) (arg1 int) (arg2 rgba) (arg3 rgba))
(defmethod debug-draw-path race-mesh ((obj race-mesh) (arg0 int) (arg1 int) (arg2 rgba) (arg3 rgba))
(when (< arg1 (the-as int (-> obj path-group-count)))
(let ((v1-2 (-> obj path-groups arg1)))
(if (< arg0 (-> v1-2 path-count))
@@ -322,7 +323,7 @@
(none)
)
(defmethod race-mesh-method-10 race-mesh ((obj race-mesh) (arg0 int) (arg1 int))
(defmethod debug-draw-path-from-history race-mesh ((obj race-mesh) (arg0 int) (arg1 int))
(when (< arg1 (the-as int (-> obj path-group-count)))
(let ((v1-2 (-> obj path-groups arg1)))
(countdown (a2-1 (-> v1-2 path-count))
@@ -361,10 +362,10 @@
)
;; WARN: Return type mismatch symbol vs none.
(defmethod race-mesh-method-11 race-mesh ((obj race-mesh) (arg0 int))
(let* ((v1-1 (the-as object (+ (the-as uint (-> obj slices)) (* arg0 4))))
(s3-0 (-> obj edges (-> (the-as race-mesh-slice v1-1) start-edge)))
(s4-0 (-> obj edges (-> (the-as race-mesh-slice v1-1) end-edge)))
(defmethod debug-draw-slice race-mesh ((obj race-mesh) (arg0 int))
(let* ((v1-1 (-> obj slices arg0))
(s3-0 (-> obj edges (-> v1-1 start-edge)))
(s4-0 (-> obj edges (-> v1-1 end-edge)))
)
(add-debug-line
#t
@@ -2103,6 +2103,7 @@ This commonly includes things such as:
- loading the skeleton group / bones
- sounds"
(with-pp
(stack-size-set! (-> obj main-thread) #x180) ;; added
(let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others))))
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s4-0 reaction) cshape-reaction-default)
+43 -8
View File
@@ -204,7 +204,11 @@
(= (-> *entity-debug-inspect* entity) e)
)
(define *entity-debug-display-part* #t)
(define *entity-debug-include-part-spawner* #t)
(define *entity-debug-part-spawner-list* '(stadiumb-part))
(define *entity-debug-include-cameras* #t)
(define *entity-debug-include-nav-meshes* #t)
(define *entity-debug-include-race-meshes* #t)
(defun build-entity-list ()
"Fill the entity pick menu"
;; clear old list
@@ -218,7 +222,9 @@
(when (nonzero? s3-0)
(dotimes (s2-0 (-> s3-0 length))
(let ((s1-0 (-> s3-0 data s2-0 actor)))
(unless (and (not *entity-debug-display-part*) (type-type? (-> s1-0 etype) part-spawner))
(unless (and (not *entity-debug-include-part-spawner*)
(or (type-type? (-> s1-0 etype) part-spawner)
(assoc (-> s1-0 etype symbol) *entity-debug-part-spawner-list*)))
(debug-menu-append-item *entity-pick-menu* (new-dm-flag (res-lump-struct s1-0 'name string) s1-0 dm-entity-flag-func))
)
)
@@ -226,11 +232,37 @@
)
)
;; camera entities
(let ((s4-1 (-> s4-0 bsp cameras)))
(when (nonzero? s4-1)
(dotimes (s3-2 (-> s4-1 length))
(let ((s2-2 (-> s4-1 s3-2)))
(debug-menu-append-item *entity-pick-menu* (new-dm-flag (res-lump-struct s2-2 'name string) s2-2 dm-entity-flag-func))
(when *entity-debug-include-cameras*
(let ((s4-1 (-> s4-0 bsp cameras)))
(when (nonzero? s4-1)
(dotimes (s3-2 (-> s4-1 length))
(let ((s2-2 (-> s4-1 s3-2)))
(debug-menu-append-item *entity-pick-menu* (new-dm-flag (res-lump-struct s2-2 'name string) s2-2 dm-entity-flag-func))
)
)
)
)
)
;; nav mesh entities
(when *entity-debug-include-nav-meshes*
(let ((s4-1 (-> s4-0 bsp nav-meshes)))
(when (nonzero? s4-1)
(dotimes (s3-2 (-> s4-1 length))
(let ((s2-2 (-> s4-1 s3-2)))
(debug-menu-append-item *entity-pick-menu* (new-dm-flag (res-lump-struct s2-2 'name string) s2-2 dm-entity-flag-func))
)
)
)
)
)
;; race mesh entities
(when *entity-debug-include-race-meshes*
(let ((s4-1 (-> s4-0 bsp race-meshes)))
(when (nonzero? s4-1)
(dotimes (s3-2 (-> s4-1 length))
(let ((s2-2 (-> s4-1 s3-2)))
(debug-menu-append-item *entity-pick-menu* (new-dm-flag (res-lump-struct s2-2 'name string) s2-2 dm-entity-flag-func))
)
)
)
)
@@ -274,7 +306,10 @@
(debug-menu-append-item entity-menu (new-dm-func "Print entity info (ag)" 'art-group dm-display-entities-pick-func))
(debug-menu-append-item entity-menu (new-dm-func "Print entity info (meters)" 'entity-meters dm-display-entities-pick-func))
(debug-menu-append-item entity-menu (new-dm-func "Print entity info (perm)" 'entity-perm dm-display-entities-pick-func))
(debug-menu-append-item entity-menu (new-dm-bool "Show part entities" *entity-debug-display-part* dm-boolean-toggle-pick-func))
(debug-menu-append-item entity-menu (new-dm-bool "Include part-spawner" *entity-debug-include-part-spawner* dm-boolean-toggle-pick-func))
(debug-menu-append-item entity-menu (new-dm-bool "Include cameras" *entity-debug-include-cameras* dm-boolean-toggle-pick-func))
(debug-menu-append-item entity-menu (new-dm-bool "Include nav meshes" *entity-debug-include-nav-meshes* dm-boolean-toggle-pick-func))
(debug-menu-append-item entity-menu (new-dm-bool "Include race meshes" *entity-debug-include-race-meshes* dm-boolean-toggle-pick-func))
(new-dm-submenu "Entity" entity-menu)
)
+21 -5
View File
@@ -25,10 +25,21 @@
(update-pad inspect-info 0)
(let* ((e (-> inspect-info entity)) (name (res-lump-struct e 'name string)))
(set! *debug-actor* (the string (and (-> inspect-info show-actor-info) name)))
;; draw trans
(add-debug-x #t (bucket-id debug-no-zbuf1) (-> e trans) (static-rgba 255 255 0 128))
(add-debug-text-3d #t (bucket-id debug-no-zbuf1) name (-> e trans) (font-color red) (new 'static 'vector2h :y 8))
(set! *debug-actor* (the string (and (type-type? (-> e type) entity-actor) (-> inspect-info show-actor-info) name)))
(set! *display-race-marks* (race-marks-controls all-off))
(case (-> e type)
((entity-race-mesh)
(set! *display-race-marks* (race-marks-controls all-paths-on))
;(debug-draw-edges (-> (the entity-race-mesh e) race-mesh))
)
((entity-nav-mesh)
(debug-draw (the entity-nav-mesh e)))
(else
;; draw trans
(add-debug-x #t (bucket-id debug-no-zbuf1) (-> e trans) (static-rgba 255 255 0 128))
(add-debug-text-3d #t (bucket-id debug-no-zbuf1) name (-> e trans) (font-color red) (new 'static 'vector2h :y 8))
)
)
;; start writing text
(let* ((begin-y (- 16 (* (-> inspect-info scroll-y) 16))) (cur-y begin-y) (y-adv 16))
@@ -199,12 +210,17 @@
((uint32)
(case (-> e tag i name)
;; actually actor-id
(('nav-mesh-actor 'open-actor 'trigger-actor 'path-actor 'state-actor 'alt-actor 'next-actor 'prev-actor
(('open-actor 'trigger-actor 'path-actor 'state-actor 'alt-actor 'next-actor 'prev-actor
'spawner-blocker-actor 'spawner-trigger-actor 'kill-actor 'fade-actor 'water-actor 'target-actor 'formation-actor)
(format *debug-temp-string* "~%#x~x (~S)" (-> (the (pointer uint32) data) ii)
(res-lump-struct (entity-by-aid (-> (the (pointer uint32) data) ii)) 'name string))
(+! y-adv 14)
)
(('nav-mesh-actor)
(format *debug-temp-string* "~%#x~x (~S)" (-> (the (pointer uint32) data) ii)
(res-lump-struct (entity-nav-mesh-by-aid (-> (the (pointer actor-id) data) ii)) 'name string))
(+! y-adv 14)
)
(('enemy-options)
(format *debug-temp-string* "~%(~S)" (begin (bit-enum->string enemy-option (-> (the (pointer uint32) data) ii) (clear *temp-string*)) *temp-string*))
(+! y-adv 14)
+44 -40
View File
@@ -5,8 +5,8 @@
(deftype com-airlock (process-drawable)
((child-override basic :offset 24)
(root-override collide-shape :offset 128)
(level-name string :offset-assert 200)
(open-test symbol :offset-assert 204)
(level-name pair :offset-assert 200)
(open-test pair :offset-assert 204)
(were-behind? symbol :offset-assert 208)
(inner? symbol :offset-assert 212)
(sound-behind? symbol :offset-assert 216)
@@ -151,17 +151,17 @@
(res-lump-float (-> obj entity) 'idle-distance :default (+ 143360.0 (-> obj open-distance)))
)
(set! (-> obj y-height) (res-lump-data (-> obj entity) 'height vector))
(set! (-> obj level-name) (res-lump-struct (-> obj entity) 'on-notice string))
(set! (-> obj level-name) (res-lump-struct (-> obj entity) 'on-notice pair))
(set! (-> obj open-test)
(the-as symbol ((method-of-type res-lump get-property-struct)
(-> obj entity)
'open-test
'interp
-1000000000.0
(the-as structure '(not (or (scene-player?) (focus-test? *target* grabbed))))
(the-as (pointer res-tag) #f)
*res-static-buf*
)
(the-as pair ((method-of-type res-lump get-property-struct)
(-> obj entity)
'open-test
'interp
-1000000000.0
(the-as structure '(not (or (scene-player?) (focus-test? *target* grabbed))))
(the-as (pointer res-tag) #f)
*res-static-buf*
)
)
)
(set! (-> obj sound-gear) #f)
@@ -219,15 +219,15 @@
;; WARN: Return type mismatch object vs symbol.
(defmethod want-cross-airlock? com-airlock ((obj com-airlock))
(local-vars (a0-12 entity-actor))
(let* ((s4-0 (target-pos 0))
(f30-0 (check-crossing-distance obj s4-0 #t))
(let* ((tgt (target-pos 0))
(f30-0 (check-crossing-distance obj tgt #t))
(s5-0 (>= (-> obj latch-open-time) (-> self clock frame-counter)))
)
(the-as
symbol
(and (or s5-0 (< (vector-vector-xz-distance (-> obj root-override trans) s4-0) (-> obj active-distance)))
(or s5-0 (not (-> obj y-height)) (and (>= (-> s4-0 y) (- (-> obj root-override trans y) (-> obj y-height y)))
(< (-> s4-0 y) (+ (-> obj root-override trans y) (-> obj y-height x)))
(and (or s5-0 (< (vector-vector-xz-distance (-> obj root-override trans) tgt) (-> obj active-distance)))
(or s5-0 (not (-> obj y-height)) (and (>= (-> tgt y) (- (-> obj root-override trans y) (-> obj y-height y)))
(< (-> tgt y) (+ (-> obj root-override trans y) (-> obj y-height x)))
)
)
(begin
@@ -247,7 +247,7 @@
)
(logtest? (-> a0-12 extra perm status) (entity-perm-status subtask-complete))
)
(and (script-eval (the-as pair (-> obj open-test))) (-> *setting-control* user-current airlock))
(and (script-eval (-> obj open-test)) (-> *setting-control* user-current airlock))
)
)
s5-0
@@ -269,59 +269,59 @@
)
;; definition for method 24 of type com-airlock
(defmethod destination-loaded? com-airlock ((obj com-airlock) (arg0 symbol))
(let ((gp-1 (script-eval (the-as pair (-> obj level-name))))
(s4-0 #f)
(defmethod destination-loaded? com-airlock ((obj com-airlock) (display? symbol))
(let ((level-list (the-as pair (script-eval (-> obj level-name))))
(borrow-lev-name #f)
)
(cond
((not gp-1)
(if arg0
((not (the-as object level-list))
(if display?
'unknown
#f
)
)
(arg0
(let* ((s3-0 gp-1)
(s2-0 (car s3-0))
(display?
(let* ((level-list-iter level-list)
(lev-name (car (the-as object level-list-iter)))
)
(while (not (null? s3-0))
(let ((v1-4 (level-status *level* (the-as symbol s2-0))))
(while (not (null? (the-as object level-list-iter)))
(let ((v1-4 (level-status *level* (the-as symbol lev-name))))
(if (not (or (= v1-4 'loaded) (= v1-4 'active)))
(return #f)
)
)
(if (= s2-0 'ctywide)
(set! s4-0 (-> ctywide borrow-level 1))
(if (= lev-name 'ctywide)
(set! borrow-lev-name (-> ctywide borrow-level 1))
)
(set! s3-0 (cdr s3-0))
(set! s2-0 (car (the-as pair s3-0)))
(set! level-list-iter (cdr (the-as object level-list-iter)))
(set! lev-name (car level-list-iter))
)
)
(when s4-0
(let ((v1-17 (level-status *level* s4-0)))
(when borrow-lev-name
(let ((v1-17 (level-status *level* borrow-lev-name)))
(if (not (or (= v1-17 'loaded) (= v1-17 'active)))
(return #f)
)
)
)
(if (!= arg0 'display)
(if (!= display? 'display)
(return #t)
)
(let ((a1-7 (car gp-1)))
(while (not (null? gp-1))
(let ((a1-7 (car (the-as object level-list))))
(while (not (null? (the-as object level-list)))
(let ((v1-26 (level-get *level* (the-as symbol a1-7))))
(if (not (and v1-26 (= (-> v1-26 status) 'active) (-> v1-26 display?)))
(return #f)
)
)
(set! gp-1 (cdr gp-1))
(set! a1-7 (car (the-as pair gp-1)))
(set! level-list (cdr (the-as object level-list)))
(set! a1-7 (car level-list))
)
)
#t
)
(else
(let* ((v1-33 gp-1)
(let* ((v1-33 (the-as object level-list))
(a0-11 (car v1-33))
)
(while (not (null? v1-33))
@@ -1600,3 +1600,7 @@ This commonly includes things such as:
(go (method-of-object obj close) #t)
(none)
)
+1 -1
View File
@@ -973,7 +973,7 @@
(let ((s3-0 8))
(dotimes (s2-0 8)
(if (logtest? s5-0 s3-0)
(race-mesh-method-10 s4-0 s2-0 0)
(debug-draw-path-from-history s4-0 s2-0 0)
)
(set! s3-0 (* s3-0 2))
)
+20 -19
View File
@@ -212,6 +212,7 @@
(start-edge int16 :offset 0)
(end-edge int16 :offset 2)
)
:pack-me
:method-count-assert 9
:size-assert #x4
:flag-assert #x900000004
@@ -304,9 +305,9 @@
:size-assert #x1c
:flag-assert #x140000001c
(:methods
(race-mesh-method-9 (_type_ int int rgba rgba) none 9)
(race-mesh-method-10 (_type_ int int) symbol 10)
(race-mesh-method-11 (_type_ int) none 11)
(debug-draw-path (_type_ int int rgba rgba) none 9)
(debug-draw-path-from-history (_type_ int int) symbol 10)
(debug-draw-slice (_type_ int) none 11)
(debug-draw-edges (_type_) none 12)
(race-mesh-method-13 (_type_ race-mesh-slice-query) none 13)
(race-mesh-method-14 (_type_ race-mesh-slice-query) none 14)
@@ -491,7 +492,7 @@
)
;; definition for method 9 of type race-mesh
(defmethod race-mesh-method-9 race-mesh ((obj race-mesh) (arg0 int) (arg1 int) (arg2 rgba) (arg3 rgba))
(defmethod debug-draw-path race-mesh ((obj race-mesh) (arg0 int) (arg1 int) (arg2 rgba) (arg3 rgba))
(when (< arg1 (the-as int (-> obj path-group-count)))
(let ((v1-2 (-> obj path-groups arg1)))
(if (< arg0 (-> v1-2 path-count))
@@ -503,7 +504,7 @@
)
;; definition for method 10 of type race-mesh
(defmethod race-mesh-method-10 race-mesh ((obj race-mesh) (arg0 int) (arg1 int))
(defmethod debug-draw-path-from-history race-mesh ((obj race-mesh) (arg0 int) (arg1 int))
(when (< arg1 (the-as int (-> obj path-group-count)))
(let ((v1-2 (-> obj path-groups arg1)))
(countdown (a2-1 (-> v1-2 path-count))
@@ -543,10 +544,10 @@
;; definition for method 11 of type race-mesh
;; WARN: Return type mismatch symbol vs none.
(defmethod race-mesh-method-11 race-mesh ((obj race-mesh) (arg0 int))
(let* ((v1-1 (the-as object (+ (the-as uint (-> obj slices)) (* arg0 4))))
(s3-0 (-> obj edges (-> (the-as race-mesh-slice v1-1) start-edge)))
(s4-0 (-> obj edges (-> (the-as race-mesh-slice v1-1) end-edge)))
(defmethod debug-draw-slice race-mesh ((obj race-mesh) (arg0 int))
(let* ((v1-1 (-> obj slices arg0))
(s3-0 (-> obj edges (-> v1-1 start-edge)))
(s4-0 (-> obj edges (-> v1-1 end-edge)))
)
(add-debug-line
#t
@@ -608,9 +609,9 @@
(slice-cnt (+ (-> obj slice-count) -1))
)
(while (>= slice-cnt idx)
(let* ((v1-2 (the-as object (+ (the-as uint (-> obj slices)) (* idx 4))))
(s3-0 (-> obj edges (-> (the-as (pointer int16) v1-2))))
(s2-0 (-> obj edges (-> (the-as race-mesh-slice v1-2) end-edge)))
(let* ((v1-2 (-> obj slices idx))
(s3-0 (-> obj edges (-> v1-2 start-edge)))
(s2-0 (-> obj edges (-> v1-2 end-edge)))
)
(add-debug-line #t (bucket-id debug-no-zbuf1) (-> s3-0 left) (-> s2-0 left) *color-white* #f (the-as rgba -1))
(add-debug-line
@@ -660,9 +661,9 @@
;; INFO: Used lq/sq
(defmethod race-mesh-method-19 race-mesh ((obj race-mesh) (arg0 int) (arg1 race-mesh-slice-query))
(set! (-> arg1 slice-id) -1)
(let* ((v1-2 (the-as object (+ (the-as uint (-> obj slices)) (* arg0 4))))
(a1-3 (-> obj edges (-> (the-as (pointer int16) v1-2))))
(v1-5 (-> obj edges (-> (the-as race-mesh-slice v1-2) end-edge)))
(let* ((v1-2 (-> obj slices arg0))
(a1-3 (-> obj edges (-> v1-2 start-edge)))
(v1-5 (-> obj edges (-> v1-2 end-edge)))
)
(set! (-> arg1 slice-corners 0 quad) (-> a1-3 left quad))
(set! (-> arg1 slice-corners 1 quad) (-> a1-3 right quad))
@@ -770,9 +771,9 @@
(defmethod race-mesh-method-15 race-mesh ((obj race-mesh) (id int) (slice-query race-mesh-slice-query))
(local-vars (v1-8 symbol))
(set! (-> slice-query slice-id) id)
(let* ((v1-1 (the-as object (+ (the-as uint (-> obj slices)) (* id 4))))
(a1-3 (-> obj edges (-> (the-as (pointer int16) v1-1))))
(v1-4 (-> obj edges (-> (the-as race-mesh-slice v1-1) end-edge)))
(let* ((v1-1 (-> obj slices id))
(a1-3 (-> obj edges (-> v1-1 start-edge)))
(v1-4 (-> obj edges (-> v1-1 end-edge)))
)
(set! (-> slice-query slice-corners 0 quad) (-> a1-3 left quad))
(set! (-> slice-query slice-corners 1 quad) (-> a1-3 right quad))
@@ -995,7 +996,7 @@
)
)
(f0-0 (+ f30-0 f1-0))
(v1-1 (the-as race-mesh-slice (+ (the-as uint (-> obj slices)) (* (-> arg0 slice-id) 4))))
(v1-1 (-> obj slices (-> arg0 slice-id)))
(f2-0 (-> obj edges (-> v1-1 start-edge) left w))
(f3-0 (-> obj edges (-> v1-1 end-edge) left w))
)
+4 -10
View File
@@ -103,17 +103,11 @@
(set! (-> s3-0 search-sphere r) 61440.0)
(race-mesh-method-13 (-> obj mesh) (the-as race-mesh-slice-query (&-> s3-0 slice-id)))
(when (!= (-> s3-0 slice-id) -1)
(let* ((v1-12 (the-as object (+ (the-as uint (-> obj mesh slices)) (* (-> s3-0 slice-id) 4))))
(f0-1
(-> (the-as (pointer float) (+ (* (-> (the-as (pointer int16) v1-12)) 4) (the-as int (-> s4-0 edge-infos)))))
(let* ((v1-12 (-> obj mesh slices (-> s3-0 slice-id)))
(f0-1 (-> (the-as (pointer float) (+ (* (-> v1-12 start-edge) 4) (the-as int (-> s4-0 edge-infos))))))
(f1-0
(-> (the-as race-path-edge-info (+ (* (-> v1-12 end-edge) 4) (the-as int (-> s4-0 edge-infos)))) sample-t)
)
(f1-0 (-> (the-as
race-path-edge-info
(+ (* (-> (the-as race-mesh-slice v1-12) end-edge) 4) (the-as int (-> s4-0 edge-infos)))
)
sample-t
)
)
)
(when (and (>= f0-1 0.0) (>= f1-0 0.0))
(let ((f0-2 (race-path-method-12 s4-0 arg1 f0-1 f1-0)))