mirror of
https://github.com/open-goal/jak-project
synced 2026-09-02 18:12:50 -04:00
[jak2] entity debug improvements and add a hack to make airlocks faster because we can + fix defend stadium (#2432)
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
)
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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)))
|
||||
|
||||
Reference in New Issue
Block a user