mirror of
https://github.com/open-goal/jak-project
synced 2026-07-07 06:05:15 -04:00
[jak2] minor decomp cleanup + add force actors and sprite pc hacks (#2291)
I didn't actually visually notice much of a difference with these hacks unlike in Jak 1, but I also avoided checking the missions thoroughly since the game crashes very often right now.
This commit is contained in:
@@ -9087,8 +9087,8 @@
|
||||
))
|
||||
|
||||
(define-extern *traffic-manager* process)
|
||||
(define-extern *ctywide-entity* object)
|
||||
(define-extern *lwide-entity* object)
|
||||
(define-extern *ctywide-entity* entity)
|
||||
(define-extern *lwide-entity* entity)
|
||||
(define-extern *race-vehicle-entity* entity-actor)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@@ -30035,7 +30035,7 @@
|
||||
(define-extern entity-count (function int))
|
||||
(define-extern entity-remap-names (function pair none))
|
||||
(define-extern process-status-bits (function process symbol none))
|
||||
(define-extern process-entity-set! (function process entity-actor entity-actor))
|
||||
(define-extern process-entity-set! (function process entity entity))
|
||||
(define-extern process-task-mask (function process task-mask))
|
||||
(define-extern update-actor-vis-box (function process-drawable vector vector none))
|
||||
(define-extern expand-bounding-box (function vector vector vector vector none))
|
||||
@@ -48417,6 +48417,19 @@
|
||||
(phase-4a 7)
|
||||
)
|
||||
|
||||
(defenum nav-branch-flags
|
||||
:bitfield #t
|
||||
:type uint8
|
||||
(nabflags-0)
|
||||
(nabflags-1)
|
||||
(nabflags-2)
|
||||
(nabflags-3)
|
||||
(nabflags-4)
|
||||
(nabflags-5)
|
||||
(nabflags-6)
|
||||
(nabflags-7)
|
||||
)
|
||||
|
||||
(declare-type nav-node structure)
|
||||
(deftype nav-branch (structure)
|
||||
((node nav-node 2 :offset-assert 0)
|
||||
@@ -48430,7 +48443,7 @@
|
||||
(max-user-count uint8 :offset-assert 12)
|
||||
(user-count uint8 :offset-assert 13)
|
||||
(width uint8 :offset-assert 14)
|
||||
(flags uint8 :offset-assert 15)
|
||||
(flags nav-branch-flags :offset-assert 15)
|
||||
)
|
||||
:method-count-assert 21
|
||||
:size-assert #x10
|
||||
@@ -48727,7 +48740,7 @@
|
||||
(city-level-info-method-12 (_type_ vector nav-branch vector) vector 12)
|
||||
(lookup-cell-by-position (_type_ vector) vis-cell 13)
|
||||
(get-first-cell-in-box (_type_ vis-grid-box) vis-cell 14)
|
||||
(sphere-in-grid? (_type_ int int) symbol 15)
|
||||
(sphere-in-grid? (_type_ vector int) symbol 15)
|
||||
(callback-on-nav-segments-in-sphere (_type_ vector int traffic-find-segment-struct (function traffic-find-segment-struct nav-segment none)) none 16)
|
||||
(update-suppressions-from-traffic-engine (_type_ traffic-engine) none 17)
|
||||
(city-level-info-method-18 (_type_) none 18)
|
||||
@@ -48886,8 +48899,21 @@
|
||||
)
|
||||
)
|
||||
|
||||
(defenum traffic-type-flags
|
||||
:bitfield #t
|
||||
:type uint8
|
||||
(trtflags-0)
|
||||
(trtflags-1)
|
||||
(trtflags-2)
|
||||
(trtflags-3)
|
||||
(trtflags-4)
|
||||
(trtflags-5)
|
||||
(trtflags-6)
|
||||
(trtflags-7)
|
||||
)
|
||||
|
||||
(deftype traffic-object-type-info (structure)
|
||||
((flags uint8 :offset-assert 0)
|
||||
((flags traffic-type-flags :offset-assert 0)
|
||||
(target-count int8 :offset-assert 1)
|
||||
(active-count int8 :offset-assert 2)
|
||||
(inactive-count int8 :offset-assert 3)
|
||||
@@ -48898,7 +48924,7 @@
|
||||
(parking-spot-prob uint8 :offset-assert 10)
|
||||
(guard-type uint8 :offset-assert 11)
|
||||
(array (pointer handle) :offset-assert 12) ;; this is a total guess TODO
|
||||
(level level :offset-assert 16)
|
||||
(level symbol :offset-assert 16)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x14
|
||||
@@ -49008,7 +49034,7 @@
|
||||
(stop-alarm-sound (_type_) none 11)
|
||||
(debug-unused (_type_) none 12)
|
||||
(add-object (_type_ traffic-type process) none 13)
|
||||
(sphere-in-loaded-city-infos? (_type_ int vector) symbol 14)
|
||||
(sphere-in-loaded-city-infos? (_type_ vector int) symbol 14)
|
||||
(activate-one-citizen (_type_ nav-segment float) none 15)
|
||||
(activate-one-vehicle (_type_ nav-segment float) none 16)
|
||||
(can-dest-be-used? (_type_ nav-branch) symbol 17)
|
||||
@@ -49028,7 +49054,7 @@
|
||||
(decrease-alert-level (_type_ int) none 31)
|
||||
(set-alert-level (_type_ int) none 32)
|
||||
(set-max-alert-level (_type_ int) none 33)
|
||||
(set-alert-duration (_type_ int) none 34)
|
||||
(set-alert-duration (_type_ time-frame) none 34)
|
||||
(get-alert-level (_type_) int 35)
|
||||
(get-target "@returns [[*target*]]" (_type_) target 36)
|
||||
(set-object-target-level (_type_ int float) none 37)
|
||||
@@ -49055,18 +49081,18 @@
|
||||
(set-object-auto-activate (_type_ int object) none 58)
|
||||
(debug-check-proc-in-tracker (_type_ process int) none 59)
|
||||
(kill-traffic-sphere "Kill everything in the sphere with a traffic-off-force." (_type_ sphere) none 60)
|
||||
(level-loaded "Call after loading a level to patch the data in the bsp" (_type_ level) none 61)
|
||||
(level-killed "Call after removing a level. Kills processes and unlinks nav" (_type_ level) none 62)
|
||||
(level-link "Call after loading a level to patch the data in the bsp" (_type_ level) none 61)
|
||||
(level-unlink "Call after removing a level. Kills processes and unlinks nav" (_type_ level) none 62)
|
||||
(traffic-engine-method-63 (_type_) none 63)
|
||||
(traffic-engine-method-64 (_type_) none 64)
|
||||
(handle-new-vis-cell (_type_ vis-cell) none 65)
|
||||
(update-sync-from-frame-counter (_type_) none 66)
|
||||
(per-frame-guard-update (_type_) none 67)
|
||||
(per-frame-activate-deactivate "per-frame activate and deactivate processes." (_type_) none 68)
|
||||
(per-frame-danger-update "see what's dangerous and make people avoid it." (_type_) none 69)
|
||||
(update-guards (_type_) none 67)
|
||||
(update-traffic-amount "kills inactive traffic and spawns more if needed." (_type_) none 68)
|
||||
(update-danger "see what's dangerous and make people avoid it." (_type_) none 69)
|
||||
(update-danger-from-target "make people run away from jak when he is dangerous." (_type_) none 70)
|
||||
(per-frame-alert-update (_type_) none 71)
|
||||
(per-frame-suppressor-update (_type_) none 72)
|
||||
(update-alert-state (_type_) none 71)
|
||||
(update-suppressor (_type_) none 72)
|
||||
(recompute-supressions (_type_) none 73)
|
||||
)
|
||||
)
|
||||
@@ -51568,8 +51594,8 @@
|
||||
:flag-assert #x900000020)
|
||||
|
||||
(deftype traffic-manager (process)
|
||||
((traffic-engine traffic-engine :offset-assert 128)
|
||||
(fast-spawn basic :offset-assert 132)
|
||||
((traffic-engine traffic-engine :offset-assert 128)
|
||||
(fast-spawn symbol :offset-assert 132)
|
||||
(dark-guard-ratio int32 :offset-assert 136)
|
||||
(spawn-params traffic-object-spawn-params :inline :offset-assert 144)
|
||||
)
|
||||
@@ -51579,12 +51605,12 @@
|
||||
(:methods
|
||||
(idle () _type_ :state 14)
|
||||
(active () _type_ :state 15)
|
||||
(traffic-manager-method-16 (_type_) none 16)
|
||||
(update (_type_) none 16)
|
||||
(spawn-all (_type_) none 17)
|
||||
(traffic-manager-method-18 (_type_) none 18)
|
||||
(kill-all (_type_) none 19)
|
||||
(traffic-manager-method-20 (_type_) none 20)
|
||||
(traffic-manager-method-21 (_type_) none 21)
|
||||
(kill-excess-once (_type_) none 18)
|
||||
(kill-all-inactive (_type_) none 19)
|
||||
(reset-and-init (_type_) none 20)
|
||||
(init-params (_type_) none 21)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -4137,5 +4137,26 @@
|
||||
"vars": {
|
||||
"s4-0": "race-hash"
|
||||
}
|
||||
},
|
||||
"(method 18 traffic-manager)": {
|
||||
"vars": {
|
||||
"s5-0": "type-i",
|
||||
"v1-2": "traffic",
|
||||
"a0-5": "total-count"
|
||||
}
|
||||
},
|
||||
"(method 21 traffic-manager)": {
|
||||
"vars": {
|
||||
"s5-0": "traffic-want-counts",
|
||||
"s5-1": "params"
|
||||
}
|
||||
},
|
||||
"(method 70 traffic-engine)": {
|
||||
"vars": {
|
||||
"f0-0": "notify-radius",
|
||||
"f2-0": "danger-level",
|
||||
"f1-0": "danger-radius",
|
||||
"f3-0": "decay-rate"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ class Merc2 : public BucketRenderer {
|
||||
GLuint vao, vertex;
|
||||
};
|
||||
|
||||
static constexpr int kMaxEffect = 32;
|
||||
static constexpr int kMaxEffect = 64;
|
||||
bool m_effect_debug_mask[kMaxEffect];
|
||||
|
||||
struct MercMat {
|
||||
|
||||
@@ -76,7 +76,8 @@ class GlowRenderer {
|
||||
|
||||
// max sprites should be 128 in simple sprite, plus 256 from aux = 384
|
||||
// 20 width = 20 * 20 = 400 sprites > 384.
|
||||
static constexpr int kDownsampleBatchWidth = 20;
|
||||
// we multiply by 4 to get 16x as many max sprites (in-game the max is only 12x)
|
||||
static constexpr int kDownsampleBatchWidth = 20 * 4;
|
||||
static constexpr int kMaxSprites = kDownsampleBatchWidth * kDownsampleBatchWidth;
|
||||
static constexpr int kMaxVertices = kMaxSprites * 32; // check.
|
||||
static constexpr int kMaxIndices = kMaxSprites * 32; // check.
|
||||
|
||||
@@ -6,9 +6,7 @@
|
||||
;; dgos: GAME, ENGINE
|
||||
|
||||
|
||||
(#if PC_BIG_MEMORY
|
||||
(defconstant SPRITE_MAX_AMOUNT_MULT 12)
|
||||
(none))
|
||||
(#when PC_BIG_MEMORY (defconstant SPRITE_MAX_AMOUNT_MULT 12))
|
||||
|
||||
|
||||
(deftype sprite-vec-data-2d (structure)
|
||||
|
||||
@@ -87,9 +87,10 @@
|
||||
|
||||
(defmethod new sprite-aux-list ((allocation symbol) (type-to-make type) (size int))
|
||||
"Allocate a sprite-aux-list with room for size 4-byte entries"
|
||||
|
||||
(#when PC_BIG_MEMORY
|
||||
(*! size SPRITE_MAX_AMOUNT_MULT)
|
||||
)
|
||||
(*! size SPRITE_MAX_AMOUNT_MULT))
|
||||
|
||||
(let ((v0-0 (object-new allocation type-to-make
|
||||
(the-as int (+ (-> type-to-make size) (the-as uint (* (+ size -1) 4))))
|
||||
)
|
||||
|
||||
@@ -1183,7 +1183,7 @@
|
||||
(defbehavior enemy-init-by-other enemy ((arg0 process-drawable) (arg1 transformq))
|
||||
(let ((a1-1 (-> arg1 scale x)))
|
||||
(if a1-1
|
||||
(process-entity-set! self (the-as entity-actor a1-1))
|
||||
(process-entity-set! self (the-as entity a1-1))
|
||||
)
|
||||
)
|
||||
(if (-> arg1 scale y)
|
||||
|
||||
@@ -71,9 +71,9 @@
|
||||
|
||||
(define *traffic-manager* (the-as process #f))
|
||||
|
||||
(define *ctywide-entity* (the-as object #f))
|
||||
(define *ctywide-entity* (the-as entity #f))
|
||||
|
||||
(define *lwide-entity* (the-as object #f))
|
||||
(define *lwide-entity* (the-as entity #f))
|
||||
|
||||
(define *race-vehicle-entity* (the-as entity-actor #f))
|
||||
|
||||
|
||||
@@ -293,9 +293,9 @@
|
||||
|
||||
(kmemopen global "collide-lists")
|
||||
|
||||
(define *collide-hit-by-player-list* (new 'global 'engine 'collide-hit-by-player-list 640 connection))
|
||||
(define *collide-hit-by-player-list* (new 'global 'engine 'collide-hit-by-player-list (* 640 PROCESS_HEAP_MULT) connection))
|
||||
|
||||
(define *collide-hit-by-others-list* (new 'global 'engine 'collide-hit-by-others-list 768 connection))
|
||||
(define *collide-hit-by-others-list* (new 'global 'engine 'collide-hit-by-others-list PROCESS_HEAP_MAX connection))
|
||||
|
||||
(define *collide-player-list* (new 'global 'engine 'collide-player-list 32 connection))
|
||||
|
||||
|
||||
@@ -2273,7 +2273,7 @@ This commonly includes things such as:
|
||||
(logclear! (-> obj flags) (collectable-flag fadeout))
|
||||
)
|
||||
(((pickup-type board))
|
||||
(process-entity-set! obj (the-as entity-actor #f))
|
||||
(process-entity-set! obj (the-as entity #f))
|
||||
(initialize-skeleton
|
||||
obj
|
||||
(the-as skeleton-group (art-group-get-by-name *level* "skel-board" (the-as (pointer uint32) #f)))
|
||||
|
||||
@@ -456,7 +456,7 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
(defbehavior projectile-init-by-other projectile ((arg0 projectile-init-by-other-params))
|
||||
(stack-size-set! (-> self main-thread) 512)
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(process-entity-set! self (the-as entity-actor (-> arg0 ent)))
|
||||
(process-entity-set! self (-> arg0 ent))
|
||||
(set! (-> self charge-level) (-> arg0 charge))
|
||||
(set! (-> self options) (-> arg0 options))
|
||||
(set! (-> self notify-handle) (-> arg0 notify-handle))
|
||||
|
||||
@@ -572,7 +572,7 @@ This commonly includes things such as:
|
||||
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defbehavior judge-init-by-other judge ((arg0 vector) (arg1 uint))
|
||||
(process-entity-set! self (the-as entity-actor #f))
|
||||
(process-entity-set! self (the-as entity #f))
|
||||
(set! (-> self score) arg1)
|
||||
(setup-collision self)
|
||||
(init self)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
(kmemopen global "engines")
|
||||
|
||||
(defconstant MATRIX_ENGINE_AMOUNT (* 1024 1))
|
||||
(defconstant MATRIX_ENGINE_AMOUNT (* 1024 PROCESS_HEAP_MULT))
|
||||
|
||||
(define *background-draw-engine* (new 'global 'engine 'draw 10 connection))
|
||||
|
||||
|
||||
@@ -56,13 +56,10 @@
|
||||
(define-extern reset-actors (function symbol none))
|
||||
|
||||
;; NOTE - for projectile
|
||||
(define-extern process-entity-set! (function process entity-actor entity-actor))
|
||||
(define-extern process-entity-set! (function process entity entity))
|
||||
(define-extern process-by-ename (function string process))
|
||||
(define-extern entity-birth-no-kill (function entity process))
|
||||
|
||||
;; NOTE - for voicebox
|
||||
(define-extern process-entity-set! (function process entity-actor entity-actor))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(define *generate-actor-vis* #f)
|
||||
|
||||
@@ -485,8 +485,8 @@
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun process-entity-set! ((arg0 process) (arg1 entity-actor))
|
||||
(set! (-> arg0 entity) arg1)
|
||||
(defun process-entity-set! ((arg0 process) (arg1 entity))
|
||||
(set! (-> arg0 entity) (the-as entity-actor arg1))
|
||||
(if arg1
|
||||
(set! (-> arg0 level) (-> arg1 extra level))
|
||||
(set! (-> arg0 level) (-> *level* default-level))
|
||||
@@ -2236,7 +2236,8 @@
|
||||
(dotimes (s1-1 s2-3)
|
||||
(set! sv-48 (-> s3-4 data s1-1))
|
||||
(cond
|
||||
((and (is-object-visible? s4-1 (-> sv-48 vis-id))
|
||||
((and (#if PC_PORT (or (with-pc (-> *pc-settings* force-actors?)) (is-object-visible? s4-1 (-> sv-48 vis-id)))
|
||||
(is-object-visible? s4-1 (-> sv-48 vis-id)))
|
||||
(not (logtest? (-> sv-48 perm status) (entity-perm-status bit-9 bit-10)))
|
||||
(not (logtest? (-> sv-48 kill-mask) sv-32))
|
||||
(or (-> s4-1 vis-info 0) (< (vector-vector-distance (-> sv-48 trans) sv-16) (-> sv-48 vis-dist)))
|
||||
|
||||
@@ -1843,7 +1843,7 @@
|
||||
)
|
||||
)
|
||||
(if a1-6
|
||||
(process-entity-set! self (the-as entity-actor a1-6))
|
||||
(process-entity-set! self a1-6)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1280,5 +1280,5 @@
|
||||
|
||||
;; todo foreground-draw-hud
|
||||
|
||||
;; changed to perm.
|
||||
(define-perm *foreground-draw-engine* engine (new 'global 'engine 'draw 768 connection))
|
||||
;; changed to perm and added multiplier.
|
||||
(define-perm *foreground-draw-engine* engine (new 'global 'engine 'draw PROCESS_HEAP_MAX connection))
|
||||
|
||||
@@ -853,7 +853,15 @@
|
||||
)
|
||||
(add-debug-matrix *display-sprite-marks* (bucket-id debug2) (-> obj origin) (meters 2))
|
||||
)
|
||||
(sphere-in-view-frustum? (the-as sphere s5-1))
|
||||
;; can we see it?
|
||||
(#if (not PC_PORT)
|
||||
(sphere-in-view-frustum? (the-as sphere s5-1))
|
||||
(if (-> *pc-settings* ps2-parts?)
|
||||
;; pc port : launchers have larger bsphere if you have ps2 parts off
|
||||
(sphere-in-view-frustum? (the-as sphere s5-1))
|
||||
(sphere-in-view-frustum? (the-as sphere (begin (*! (-> s5-1 w) 4.0) s5-1)))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -986,6 +994,12 @@
|
||||
(if (nonzero? (-> obj matrix))
|
||||
(set! f30-0 0.0)
|
||||
)
|
||||
|
||||
;; if we have ps2 particles off, say we're at the camera
|
||||
(with-pc
|
||||
(if (not (-> *pc-settings* ps2-parts?))
|
||||
(set! f30-0 0.0)))
|
||||
|
||||
(let ((s2-1 (-> obj length)))
|
||||
(b! #t cfg-95 :delay (nop!))
|
||||
(label cfg-19)
|
||||
|
||||
@@ -54,6 +54,10 @@
|
||||
(arg3 pointer)
|
||||
(arg4 (inline-array adgif-shader))
|
||||
)
|
||||
(#when PC_BIG_MEMORY
|
||||
(*! arg0 SPRITE_MAX_AMOUNT_MULT)
|
||||
; (*! arg1 SPRITE_MAX_AMOUNT_MULT)
|
||||
)
|
||||
(let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
|
||||
(let* ((v1-3 (/ (+ arg0 63) 64))
|
||||
(a0-2 (/ (+ arg1 63) 64))
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
(define-extern sprite-glow-init-engine (function dma-buffer none))
|
||||
(define-extern sprite-glow-draw (function dma-buffer none))
|
||||
|
||||
(#when PC_BIG_MEMORY (defconstant SPRITE_MAX_AMOUNT_MULT 12))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype sprite-vec-data-2d (structure)
|
||||
|
||||
@@ -145,6 +145,10 @@ the sprite renderer draw 2D or 3D sprites
|
||||
)
|
||||
|
||||
(defmethod new sprite-aux-list ((allocation symbol) (type-to-make type) (size int))
|
||||
|
||||
(#when PC_BIG_MEMORY
|
||||
(*! size SPRITE_MAX_AMOUNT_MULT))
|
||||
|
||||
(let ((v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* size 16))))))
|
||||
(set! (-> v0-0 num-entries) size)
|
||||
(set! (-> v0-0 entry) 0)
|
||||
@@ -434,6 +438,12 @@ the sprite renderer draw 2D or 3D sprites
|
||||
|
||||
(defmethod new sprite-array-2d ((allocation symbol) (type-to-make type) (group-0-size int) (group-1-size int))
|
||||
"Allocate a sprite-array for 2d sprites. There are two groups, each can contain the given number."
|
||||
|
||||
(#when PC_BIG_MEMORY
|
||||
(*! group-0-size SPRITE_MAX_AMOUNT_MULT)
|
||||
; (*! group-1-size SPRITE_MAX_AMOUNT_MULT)
|
||||
)
|
||||
|
||||
(let* ((sprite-count (+ group-0-size group-1-size))
|
||||
(vec-data-size (* 3 sprite-count)) ;; 3 quadwords of vec-data per sprite
|
||||
(adgif-data-size (* 5 sprite-count)) ;; 5 quadwords of adgif data per sprite
|
||||
@@ -458,6 +468,12 @@ the sprite renderer draw 2D or 3D sprites
|
||||
(defmethod new sprite-array-3d ((allocation symbol) (type-to-make type) (group-0-size int) (group-1-size int))
|
||||
"Allocate a sprite-array for 3d sprites. There are two groups, each can contain the given number of sprites.
|
||||
Group 1 size is zero in practice for 3d."
|
||||
|
||||
(#when PC_BIG_MEMORY
|
||||
(*! group-0-size SPRITE_MAX_AMOUNT_MULT)
|
||||
; (*! group-1-size SPRITE_MAX_AMOUNT_MULT)
|
||||
)
|
||||
|
||||
(let* ((sprite-count (+ group-0-size group-1-size))
|
||||
(vec-data-size (* 3 sprite-count))
|
||||
(adgif-data-size (* 5 sprite-count))
|
||||
|
||||
@@ -1763,6 +1763,9 @@ into 7 sections, which might explain the weird sizes in the center.
|
||||
(defmethod is-object-visible? level ((obj level) (arg0 int))
|
||||
"Is drawable arg0 visible? Note that this will return #f if the visibility data is not loaded."
|
||||
|
||||
;; note : pc port added option to show every actor regardless
|
||||
(with-pc (if (-> *pc-settings* force-actors?) (return #t)))
|
||||
|
||||
;; check the vis bits!
|
||||
(let* (;; lwu v1, 388(a0)
|
||||
(vis-data (-> obj vis-bits))
|
||||
|
||||
@@ -792,17 +792,9 @@
|
||||
(when (and (>= f30-0 (-> v1-16 start-frame)) (< f30-0 (-> v1-16 end-frame)))
|
||||
(let ((s3-0 (-> v1-16 message s5-0)))
|
||||
(when (and s3-0 (nonzero? s3-0))
|
||||
(let ((s2-0 (new
|
||||
'stack
|
||||
'font-context
|
||||
*font-default-matrix*
|
||||
20
|
||||
290
|
||||
0.0
|
||||
(font-color default)
|
||||
(font-flags shadow kerning)
|
||||
)
|
||||
)
|
||||
(let ((s2-0
|
||||
(new 'stack 'font-context *font-default-matrix* 20 290 0.0 (font-color default) (font-flags shadow kerning))
|
||||
)
|
||||
)
|
||||
(let ((v1-20 s2-0))
|
||||
(set! (-> v1-20 width) (the float 465))
|
||||
@@ -1445,17 +1437,9 @@
|
||||
(when (and (< (- (-> self clock frame-counter) (-> self subtitle-change-time)) (seconds 2))
|
||||
(< (mod (- (-> self clock frame-counter) (-> self subtitle-change-time)) 300) 210)
|
||||
)
|
||||
(let ((gp-6 (new
|
||||
'stack
|
||||
'font-context
|
||||
*font-default-matrix*
|
||||
36
|
||||
60
|
||||
0.0
|
||||
(font-color default)
|
||||
(font-flags shadow kerning)
|
||||
)
|
||||
)
|
||||
(let ((gp-6
|
||||
(new 'stack 'font-context *font-default-matrix* 36 60 0.0 (font-color default) (font-flags shadow kerning))
|
||||
)
|
||||
)
|
||||
(let ((v1-121 gp-6))
|
||||
(set! (-> v1-121 width) (the float 440))
|
||||
@@ -1610,7 +1594,7 @@
|
||||
;; WARN: Using new Jak 2 rtype-of
|
||||
(defbehavior scene-player-init scene-player ((arg0 object) (arg1 symbol) (arg2 string))
|
||||
"`object` arg can be an `(array scene)`, `pair of scene` or a `scene`"
|
||||
(process-entity-set! self (the-as entity-actor #f))
|
||||
(process-entity-set! self (the-as entity #f))
|
||||
(stack-size-set! (-> self main-thread) 1024)
|
||||
(set! (-> self root) (new 'process 'trsqv))
|
||||
(case (rtype-of arg0)
|
||||
|
||||
@@ -1169,7 +1169,7 @@
|
||||
(let ((s4-1 (-> self entity))
|
||||
(s3-0 (-> self level))
|
||||
)
|
||||
(process-entity-set! self (the-as entity-actor (-> self mech entity)))
|
||||
(process-entity-set! self (the-as entity (-> self mech entity)))
|
||||
(let ((s2-0 (get-process *16k-dead-pool* manipy #x4000)))
|
||||
(set! (-> self manipy)
|
||||
(the-as
|
||||
|
||||
@@ -13,6 +13,14 @@
|
||||
(defconstant DPROCESS_STACK_SIZE (#if PC_PORT #x8000 #x3800))
|
||||
(defconstant PROCESS_STACK_SIZE (#if PC_PORT #x6000 #x1c00))
|
||||
|
||||
;; the size of the shared heap used by dynamically sized processes
|
||||
(#if PC_BIG_MEMORY
|
||||
(defconstant PROCESS_HEAP_MULT 4) ;; 4x actors
|
||||
(defconstant PROCESS_HEAP_MULT 1)
|
||||
)
|
||||
(defconstant PROCESS_HEAP_SIZE (* PROCESS_HEAP_MULT 1540 1024))
|
||||
(defconstant PROCESS_HEAP_MAX (* PROCESS_HEAP_MULT 768))
|
||||
|
||||
(defconstant *tab-size* (the binteger 8))
|
||||
(defconstant *gtype-basic-offset* 4)
|
||||
|
||||
|
||||
@@ -2449,7 +2449,7 @@
|
||||
(when *debug-segment*
|
||||
(define *debug-dead-pool* (new 'debug 'dead-pool-heap "*debug-dead-pool*" 768 #x100000))
|
||||
)
|
||||
(define *nk-dead-pool* (new 'global 'dead-pool-heap "*nk-dead-pool*" 768 #x181000))
|
||||
(define *nk-dead-pool* (new 'global 'dead-pool-heap "*nk-dead-pool*" PROCESS_HEAP_MAX PROCESS_HEAP_SIZE))
|
||||
;; more special dead pools
|
||||
(define *default-dead-pool* (the-as dead-pool *nk-dead-pool*))
|
||||
(define *pickup-dead-pool* (the-as dead-pool *nk-dead-pool*))
|
||||
|
||||
@@ -40,6 +40,21 @@
|
||||
(hidden 4))
|
||||
;; ---nav-node-flag-byte
|
||||
|
||||
;; +++nav-branch-flags
|
||||
(defenum nav-branch-flags
|
||||
:bitfield #t
|
||||
:type uint8
|
||||
(nabflags-0)
|
||||
(nabflags-1)
|
||||
(nabflags-2)
|
||||
(nabflags-3)
|
||||
(nabflags-4)
|
||||
(nabflags-5)
|
||||
(nabflags-6)
|
||||
(nabflags-7)
|
||||
)
|
||||
;; ---nav-branch-flags
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype nav-branch (structure)
|
||||
@@ -54,7 +69,7 @@
|
||||
(max-user-count uint8 :offset-assert 12)
|
||||
(user-count uint8 :offset-assert 13)
|
||||
(width uint8 :offset-assert 14)
|
||||
(flags uint8 :offset-assert 15)
|
||||
(flags nav-branch-flags :offset-assert 15)
|
||||
)
|
||||
:method-count-assert 21
|
||||
:size-assert #x10
|
||||
|
||||
@@ -68,6 +68,19 @@
|
||||
(tfs7 7)
|
||||
)
|
||||
|
||||
(defenum traffic-type-flags
|
||||
:bitfield #t
|
||||
:type uint8
|
||||
(trtflags-0)
|
||||
(trtflags-1)
|
||||
(trtflags-2)
|
||||
(trtflags-3)
|
||||
(trtflags-4)
|
||||
(trtflags-5)
|
||||
(trtflags-6)
|
||||
(trtflags-7)
|
||||
)
|
||||
|
||||
|
||||
(declare-type traffic-find-segment-struct structure)
|
||||
|
||||
@@ -191,7 +204,7 @@
|
||||
(city-level-info-method-12 (_type_ vector nav-branch vector) vector 12)
|
||||
(lookup-cell-by-position (_type_ vector) vis-cell 13)
|
||||
(get-first-cell-in-box (_type_ vis-grid-box) vis-cell 14)
|
||||
(sphere-in-grid? (_type_ int int) symbol 15)
|
||||
(sphere-in-grid? (_type_ vector int) symbol 15)
|
||||
(callback-on-nav-segments-in-sphere (_type_ vector int traffic-find-segment-struct (function traffic-find-segment-struct nav-segment none)) none 16)
|
||||
(update-suppressions-from-traffic-engine (_type_ traffic-engine) none 17)
|
||||
(city-level-info-method-18 (_type_) none 18)
|
||||
@@ -318,18 +331,18 @@
|
||||
|
||||
|
||||
(deftype traffic-object-type-info (structure)
|
||||
((flags uint8 :offset-assert 0)
|
||||
(target-count int8 :offset-assert 1)
|
||||
(active-count int8 :offset-assert 2)
|
||||
(inactive-count int8 :offset-assert 3)
|
||||
(reserve-count uint16 :offset-assert 4)
|
||||
(killed-count uint16 :offset-assert 6)
|
||||
(want-count int8 :offset-assert 8)
|
||||
(tracker-index uint8 :offset-assert 9)
|
||||
(parking-spot-prob uint8 :offset-assert 10)
|
||||
(guard-type uint8 :offset-assert 11)
|
||||
(array (pointer handle) :offset-assert 12)
|
||||
(level level :offset-assert 16)
|
||||
((flags traffic-type-flags :offset-assert 0)
|
||||
(target-count int8 :offset-assert 1)
|
||||
(active-count int8 :offset-assert 2)
|
||||
(inactive-count int8 :offset-assert 3)
|
||||
(reserve-count uint16 :offset-assert 4)
|
||||
(killed-count uint16 :offset-assert 6)
|
||||
(want-count int8 :offset-assert 8)
|
||||
(tracker-index uint8 :offset-assert 9)
|
||||
(parking-spot-prob uint8 :offset-assert 10)
|
||||
(guard-type uint8 :offset-assert 11)
|
||||
(array (pointer handle) :offset-assert 12)
|
||||
(level symbol :offset-assert 16)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x14
|
||||
@@ -423,7 +436,7 @@
|
||||
(stop-alarm-sound (_type_) none 11)
|
||||
(debug-unused (_type_) none 12)
|
||||
(add-object (_type_ traffic-type process) none 13)
|
||||
(sphere-in-loaded-city-infos? (_type_ int vector) symbol 14)
|
||||
(sphere-in-loaded-city-infos? (_type_ vector int) symbol 14)
|
||||
(activate-one-citizen (_type_ nav-segment float) none 15)
|
||||
(activate-one-vehicle (_type_ nav-segment float) none 16)
|
||||
(can-dest-be-used? (_type_ nav-branch) symbol 17)
|
||||
@@ -443,7 +456,7 @@
|
||||
(decrease-alert-level (_type_ int) none 31)
|
||||
(set-alert-level (_type_ int) none 32)
|
||||
(set-max-alert-level (_type_ int) none 33)
|
||||
(set-alert-duration (_type_ int) none 34)
|
||||
(set-alert-duration (_type_ time-frame) none 34)
|
||||
(get-alert-level (_type_) int 35)
|
||||
(get-target (_type_) target 36)
|
||||
(set-object-target-level (_type_ int float) none 37)
|
||||
@@ -470,18 +483,18 @@
|
||||
(set-object-auto-activate (_type_ int object) none 58)
|
||||
(debug-check-proc-in-tracker (_type_ process int) none 59)
|
||||
(kill-traffic-sphere (_type_ sphere) none 60)
|
||||
(level-loaded (_type_ level) none 61)
|
||||
(level-killed (_type_ level) none 62)
|
||||
(level-link (_type_ level) none 61)
|
||||
(level-unlink (_type_ level) none 62)
|
||||
(traffic-engine-method-63 (_type_) none 63)
|
||||
(traffic-engine-method-64 (_type_) none 64)
|
||||
(handle-new-vis-cell (_type_ vis-cell) none 65)
|
||||
(update-sync-from-frame-counter (_type_) none 66)
|
||||
(per-frame-guard-update (_type_) none 67)
|
||||
(per-frame-activate-deactivate (_type_) none 68)
|
||||
(per-frame-danger-update (_type_) none 69)
|
||||
(update-guards (_type_) none 67)
|
||||
(update-traffic-amount (_type_) none 68)
|
||||
(update-danger (_type_) none 69)
|
||||
(update-danger-from-target (_type_) none 70)
|
||||
(per-frame-alert-update (_type_) none 71)
|
||||
(per-frame-suppressor-update (_type_) none 72)
|
||||
(update-alert-state (_type_) none 71)
|
||||
(update-suppressor (_type_) none 72)
|
||||
(recompute-supressions (_type_) none 73)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -584,9 +584,9 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(when (and (> (-> v1-2 inactive-count) 0)
|
||||
(> (-> v1-2 reserve-count) 0)
|
||||
(< (-> v1-2 active-count) (-> v1-2 target-count))
|
||||
(logtest? (-> v1-2 flags) 4)
|
||||
(logtest? (-> v1-2 flags) 8)
|
||||
(or (not (logtest? (-> v1-2 flags) 1))
|
||||
(logtest? (-> v1-2 flags) (traffic-type-flags trtflags-2))
|
||||
(logtest? (-> v1-2 flags) (traffic-type-flags trtflags-3))
|
||||
(or (not (logtest? (-> v1-2 flags) (traffic-type-flags trtflags-0)))
|
||||
(zero? (logand (-> obj traffic alert-state flags) (traffic-alert-flag alert-ending)))
|
||||
)
|
||||
)
|
||||
@@ -726,7 +726,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(let ((v1-4 (-> obj inactive-object-array)))
|
||||
(dotimes (a0-5 21)
|
||||
(let ((a1-3 (-> obj object-type-info-array a0-5)))
|
||||
(set! (-> a1-3 flags) (the-as uint 6))
|
||||
(set! (-> a1-3 flags) (traffic-type-flags trtflags-1 trtflags-2))
|
||||
(set! (-> a1-3 inactive-count) 0)
|
||||
(set! (-> a1-3 active-count) 0)
|
||||
(set! (-> a1-3 target-count) 20)
|
||||
@@ -739,7 +739,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
)
|
||||
)
|
||||
(set! (-> obj object-type-info-array 6 guard-type) (the-as uint 0))
|
||||
(set! (-> obj object-type-info-array 20 level) (the-as level 'ctywide))
|
||||
(set! (-> obj object-type-info-array 20 level) 'ctywide)
|
||||
(let ((v1-8 11))
|
||||
(dotimes (a0-6 10)
|
||||
(set! (-> obj object-type-info-array v1-8 tracker-index) (the-as uint 0))
|
||||
@@ -782,7 +782,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(dotimes (s5-2 (-> *level* length))
|
||||
(let ((a1-12 (-> *level* level s5-2)))
|
||||
(if (= (-> a1-12 status) 'active)
|
||||
(level-loaded obj a1-12)
|
||||
(level-link obj a1-12)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -797,7 +797,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod level-loaded traffic-engine ((obj traffic-engine) (arg0 level))
|
||||
(defmethod level-link traffic-engine ((obj traffic-engine) (arg0 level))
|
||||
"Call after loading a level to patch the data in the bsp"
|
||||
(format #t "traffic-engine: level birth ~S~%" (-> arg0 nickname))
|
||||
(cond
|
||||
@@ -929,7 +929,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod level-killed traffic-engine ((obj traffic-engine) (arg0 level))
|
||||
(defmethod level-unlink traffic-engine ((obj traffic-engine) (arg0 level))
|
||||
"Call after removing a level. Kills processes and unlinks nav"
|
||||
(let ((s4-0 (-> arg0 bsp city-level-info nav-graph)))
|
||||
(dotimes (v1-2 2)
|
||||
@@ -1170,11 +1170,11 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod sphere-in-loaded-city-infos? traffic-engine ((obj traffic-engine) (arg0 int) (arg1 vector))
|
||||
(defmethod sphere-in-loaded-city-infos? traffic-engine ((obj traffic-engine) (arg0 vector) (arg1 int))
|
||||
(dotimes (s3-0 2)
|
||||
(let ((v1-3 (-> obj level-data-array s3-0)))
|
||||
(when (nonzero? (-> v1-3 city-info))
|
||||
(if (sphere-in-grid? (-> v1-3 city-info) arg0 (the-as int arg1))
|
||||
(if (sphere-in-grid? (-> v1-3 city-info) arg0 arg1)
|
||||
(return #t)
|
||||
)
|
||||
)
|
||||
@@ -1185,7 +1185,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
|
||||
(defmethod can-dest-be-used? traffic-engine ((obj traffic-engine) (arg0 nav-branch))
|
||||
(let ((v1-0 (-> arg0 src-node)))
|
||||
(or (logtest? (-> arg0 flags) 1)
|
||||
(or (logtest? (-> arg0 flags) (nav-branch-flags nabflags-0))
|
||||
(logtest? (-> v1-0 flags) (nav-node-flag-byte blocked))
|
||||
(not (-> arg0 dest-node))
|
||||
(>= (-> arg0 user-count) (-> arg0 max-user-count))
|
||||
@@ -1294,44 +1294,44 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(let ((v1-1 (-> obj danger-sphere-array)))
|
||||
(set! (-> v1-1 0 handle) (process->handle s5-0))
|
||||
(let ((a0-4 (-> s5-0 focus-status))
|
||||
(f0-0 0.0)
|
||||
(f1-0 0.0)
|
||||
(f3-0 1.0)
|
||||
(f2-0 0.0)
|
||||
(notify-radius 0.0)
|
||||
(danger-radius 0.0)
|
||||
(decay-rate 1.0)
|
||||
(danger-level 0.0)
|
||||
)
|
||||
(cond
|
||||
((logtest? (focus-status mech dark shooting) a0-4)
|
||||
(set! f0-0 245760.0)
|
||||
(set! f1-0 163840.0)
|
||||
(set! f2-0 1.0)
|
||||
(set! f3-0 0.0)
|
||||
(set! notify-radius 245760.0)
|
||||
(set! danger-radius 163840.0)
|
||||
(set! danger-level 1.0)
|
||||
(set! decay-rate 0.0)
|
||||
)
|
||||
((logtest? (focus-status gun) a0-4)
|
||||
(set! f0-0 102400.0)
|
||||
(set! f1-0 61440.0)
|
||||
(set! f2-0 0.5)
|
||||
(set! f3-0 0.5)
|
||||
(set! notify-radius 102400.0)
|
||||
(set! danger-radius 61440.0)
|
||||
(set! danger-level 0.5)
|
||||
(set! decay-rate 0.5)
|
||||
)
|
||||
((logtest? (focus-status board pilot) a0-4)
|
||||
(set! f0-0 40960.0)
|
||||
(set! f1-0 24576.0)
|
||||
(set! f2-0 0.5)
|
||||
(set! notify-radius 40960.0)
|
||||
(set! danger-radius 24576.0)
|
||||
(set! danger-level 0.5)
|
||||
)
|
||||
((logtest? a0-4 (focus-status dangerous))
|
||||
(set! f0-0 61440.0)
|
||||
(set! f1-0 40960.0)
|
||||
(set! f3-0 0.0)
|
||||
(set! f2-0 0.5)
|
||||
(set! notify-radius 61440.0)
|
||||
(set! danger-radius 40960.0)
|
||||
(set! decay-rate 0.0)
|
||||
(set! danger-level 0.5)
|
||||
)
|
||||
(else
|
||||
(set! f3-0 1.5)
|
||||
(set! decay-rate 1.5)
|
||||
)
|
||||
)
|
||||
(set! (-> v1-1 0 decay-rate) (* 0.1 f3-0))
|
||||
(when (< (-> v1-1 0 danger-level) f2-0)
|
||||
(set! (-> v1-1 0 danger-level) f2-0)
|
||||
(set! (-> v1-1 0 sphere r) f1-0)
|
||||
(set! (-> v1-1 0 notify-radius) f0-0)
|
||||
(set! (-> v1-1 0 decay-rate) (* 0.1 decay-rate))
|
||||
(when (< (-> v1-1 0 danger-level) danger-level)
|
||||
(set! (-> v1-1 0 danger-level) danger-level)
|
||||
(set! (-> v1-1 0 sphere r) danger-radius)
|
||||
(set! (-> v1-1 0 notify-radius) notify-radius)
|
||||
)
|
||||
)
|
||||
(let ((f0-1 (-> v1-1 0 sphere r)))
|
||||
@@ -1456,7 +1456,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod per-frame-danger-update traffic-engine ((obj traffic-engine))
|
||||
(defmethod update-danger traffic-engine ((obj traffic-engine))
|
||||
"see what's dangerous and make people avoid it."
|
||||
(update-danger-from-target obj)
|
||||
(dotimes (s5-0 (-> obj danger-sphere-count))
|
||||
@@ -1564,8 +1564,8 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod per-frame-activate-deactivate traffic-engine ((obj traffic-engine))
|
||||
"per-frame activate and deactivate processes."
|
||||
(defmethod update-traffic-amount traffic-engine ((obj traffic-engine))
|
||||
"kills inactive traffic and spawns more if needed."
|
||||
(local-vars (sv-48 int) (sv-64 nav-segment))
|
||||
(set! (-> obj object-hash object-count) 0)
|
||||
(let* ((v1-1 (-> obj object-hash))
|
||||
@@ -1622,7 +1622,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(set! (-> s5-0 quad) (-> v1-33 trans quad))
|
||||
(set! (-> s5-0 w) (-> v1-33 root-prim prim-core world-sphere w))
|
||||
)
|
||||
(sphere-in-loaded-city-infos? obj (the-as int s5-0) (the-as vector 0))
|
||||
(sphere-in-loaded-city-infos? obj s5-0 0)
|
||||
)
|
||||
(set! (-> (the-as vehicle s3-0) traffic-hash-id)
|
||||
(spatial-hash-method-39 (-> obj object-hash) s5-0 (the-as hash-object-info s3-0))
|
||||
@@ -1652,7 +1652,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(set! (-> s5-0 quad) (-> v1-54 trans quad))
|
||||
(set! (-> s5-0 w) (-> v1-54 root-prim prim-core world-sphere w))
|
||||
)
|
||||
(sphere-in-loaded-city-infos? obj (the-as int s5-0) (the-as vector 1))
|
||||
(sphere-in-loaded-city-infos? obj s5-0 1)
|
||||
)
|
||||
(spatial-hash-method-39 (-> obj object-hash) s5-0 (the-as hash-object-info s3-1))
|
||||
)
|
||||
@@ -1730,7 +1730,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
|
||||
(defmethod update-traffic traffic-engine ((obj traffic-engine))
|
||||
(update-sync-from-frame-counter obj)
|
||||
(per-frame-suppressor-update obj)
|
||||
(update-suppressor obj)
|
||||
(let ((s5-0 (new 'stack-no-clear 'bounding-box)))
|
||||
(set-vector!
|
||||
(-> s5-0 min)
|
||||
@@ -1757,11 +1757,11 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
)
|
||||
(update-grid-for-objects-in-box (-> obj object-hash) 253 (-> s5-0 min) (-> s5-0 max))
|
||||
)
|
||||
(per-frame-activate-deactivate obj)
|
||||
(update-traffic-amount obj)
|
||||
(set! (-> obj alert-state guard-aim-count) 0)
|
||||
(per-frame-alert-update obj)
|
||||
(per-frame-guard-update obj)
|
||||
(per-frame-danger-update obj)
|
||||
(update-alert-state obj)
|
||||
(update-guards obj)
|
||||
(update-danger obj)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
@@ -2142,7 +2142,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(defmethod traffic-engine-method-49 traffic-engine ((obj traffic-engine) (los vector) (arg2 int) (target-status traffic-target-status))
|
||||
(local-vars
|
||||
(guards (pointer crimson-guard))
|
||||
(guard-dists (pointer float))
|
||||
(guard-target-dists (pointer float))
|
||||
(guard-idx int)
|
||||
(sv-208 int)
|
||||
(sv-216 float)
|
||||
@@ -2191,7 +2191,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
)
|
||||
(when (update-guard-status-spots target-pos)
|
||||
(set! guards (new 'stack-no-clear 'array 'crimson-guard 16))
|
||||
(set! guard-dists (new 'stack-no-clear 'array 'float 16))
|
||||
(set! guard-target-dists (new 'stack-no-clear 'array 'float 16))
|
||||
(set! guard-idx 0)
|
||||
(dotimes (guard-count (the-as int (-> obj vehicle-tracker-array active-object-count)))
|
||||
(case (-> obj vehicle-tracker-array active-object-type-list guard-count)
|
||||
@@ -2202,7 +2202,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(= (-> (the-as crimson-guard guard) traffic-target-status handle) (-> target-status handle))
|
||||
)
|
||||
(set! (-> guards guard-idx) (the-as crimson-guard guard))
|
||||
(set! (-> guard-dists guard-idx)
|
||||
(set! (-> guard-target-dists guard-idx)
|
||||
(vector-vector-distance (-> (the-as crimson-guard guard) root-override2 trans) target-pos)
|
||||
)
|
||||
(set! guard-idx (+ guard-idx 1))
|
||||
@@ -2216,14 +2216,14 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(while a0-35
|
||||
(set! a0-35 #f)
|
||||
(dotimes (v1-77 (+ guard-idx -1))
|
||||
(when (< (-> guard-dists (+ v1-77 1)) (-> guard-dists v1-77))
|
||||
(when (< (-> guard-target-dists (+ v1-77 1)) (-> guard-target-dists v1-77))
|
||||
(let ((a0-38 (-> guards v1-77))
|
||||
(f0-2 (-> guard-dists v1-77))
|
||||
(f0-2 (-> guard-target-dists v1-77))
|
||||
)
|
||||
(set! (-> guards v1-77) (-> guards (+ v1-77 1)))
|
||||
(set! (-> guards (+ v1-77 1)) a0-38)
|
||||
(set! (-> guard-dists v1-77) (-> guard-dists (+ v1-77 1)))
|
||||
(set! (-> guard-dists (+ v1-77 1)) f0-2)
|
||||
(set! (-> guard-target-dists v1-77) (-> guard-target-dists (+ v1-77 1)))
|
||||
(set! (-> guard-target-dists (+ v1-77 1)) f0-2)
|
||||
)
|
||||
(set! a0-35 #t)
|
||||
)
|
||||
@@ -2285,7 +2285,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod set-alert-duration traffic-engine ((obj traffic-engine) (arg0 int))
|
||||
(defmethod set-alert-duration traffic-engine ((obj traffic-engine) (arg0 time-frame))
|
||||
(set! (-> obj alert-state duration) (the-as uint arg0))
|
||||
0
|
||||
(none)
|
||||
@@ -2599,7 +2599,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(-> obj alert-state guard-type-info-array arg0 change-to-type)
|
||||
)
|
||||
|
||||
(defmethod per-frame-guard-update traffic-engine ((obj traffic-engine))
|
||||
(defmethod update-guards traffic-engine ((obj traffic-engine))
|
||||
(dotimes (v1-0 6)
|
||||
(set! (-> obj alert-state guard-type-info-array v1-0 count) 0)
|
||||
)
|
||||
@@ -2730,7 +2730,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod per-frame-alert-update traffic-engine ((obj traffic-engine))
|
||||
(defmethod update-alert-state traffic-engine ((obj traffic-engine))
|
||||
(with-pp
|
||||
(if (and (logtest? (-> obj alert-state flags) (traffic-alert-flag target-jak)) *target*)
|
||||
(set! (-> obj alert-state target-status-array 0 handle) (process->handle *target*))
|
||||
@@ -2893,7 +2893,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
*target*
|
||||
)
|
||||
(for-all-active-processes obj (lambda ((arg0 process-focusable) (arg1 traffic-object-type-info))
|
||||
(if (logtest? (-> arg1 flags) 1)
|
||||
(if (logtest? (-> arg1 flags) (traffic-type-flags trtflags-0))
|
||||
(send-event arg0 'alert-begin *target*)
|
||||
)
|
||||
(none)
|
||||
@@ -2903,7 +2903,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
)
|
||||
(else
|
||||
(for-all-active-processes obj (lambda ((arg0 process-focusable) (arg1 traffic-object-type-info))
|
||||
(if (logtest? (-> arg1 flags) 1)
|
||||
(if (logtest? (-> arg1 flags) (traffic-type-flags trtflags-0))
|
||||
(send-event arg0 'alert-end)
|
||||
)
|
||||
(none)
|
||||
@@ -2930,54 +2930,56 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(logclear! (-> v1-6 0 flags) (traffic-target-flag force-visible))
|
||||
)
|
||||
(set-target-level obj 1.0)
|
||||
(set-alert-duration obj 9000)
|
||||
(set-alert-duration obj (seconds 30))
|
||||
(set-max-alert-level obj 4)
|
||||
(let ((v1-13 42))
|
||||
(dotimes (a0-7 21)
|
||||
(let ((a1-6 (-> obj object-type-info-array a0-7)))
|
||||
(set! (-> a1-6 flags) (the-as uint 6))
|
||||
(set! (-> a1-6 flags) (traffic-type-flags trtflags-1 trtflags-2))
|
||||
(set! (-> a1-6 reserve-count) (the-as uint (max 1000 (min #xfde8 (* 1000 (-> a1-6 want-count))))))
|
||||
(set! (-> a1-6 killed-count) (the-as uint 0))
|
||||
(set! (-> a1-6 parking-spot-prob)
|
||||
(the-as uint (if (and (zero? (-> a1-6 tracker-index)) (zero? (logand (-> a1-6 flags) 1)))
|
||||
v1-13
|
||||
0
|
||||
)
|
||||
)
|
||||
(the-as
|
||||
uint
|
||||
(if (and (zero? (-> a1-6 tracker-index)) (zero? (logand (-> a1-6 flags) (traffic-type-flags trtflags-0))))
|
||||
v1-13
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-16 (-> obj object-type-info-array 6)))
|
||||
(logior! (-> v1-16 flags) 1)
|
||||
(logior! (-> v1-16 flags) (traffic-type-flags trtflags-0))
|
||||
)
|
||||
(let ((v1-17 (-> obj object-type-info-array 7)))
|
||||
(logior! (-> v1-17 flags) 1)
|
||||
(logior! (-> v1-17 flags) (traffic-type-flags trtflags-0))
|
||||
)
|
||||
(let ((v1-18 (-> obj object-type-info-array 18)))
|
||||
(logior! (-> v1-18 flags) 1)
|
||||
(logior! (-> v1-18 flags) (traffic-type-flags trtflags-0))
|
||||
)
|
||||
(let ((v1-19 (-> obj object-type-info-array 19)))
|
||||
(logior! (-> v1-19 flags) 1)
|
||||
(logior! (-> v1-19 flags) (traffic-type-flags trtflags-0))
|
||||
)
|
||||
(let ((v1-20 (-> obj object-type-info-array 20)))
|
||||
(logior! (-> v1-20 flags) 1)
|
||||
(logior! (-> v1-20 flags) (traffic-type-flags trtflags-0))
|
||||
)
|
||||
(let ((v1-21 (-> obj object-type-info-array 5)))
|
||||
(set! (-> v1-21 target-count) 0)
|
||||
(set! (-> v1-21 flags) (logand -7 (-> v1-21 flags)))
|
||||
(logclear! (-> v1-21 flags) (traffic-type-flags trtflags-1 trtflags-2))
|
||||
)
|
||||
(let ((v1-22 (-> obj object-type-info-array 3)))
|
||||
(set! (-> v1-22 target-count) 0)
|
||||
(set! (-> v1-22 flags) (logand -5 (-> v1-22 flags)))
|
||||
(logclear! (-> v1-22 flags) (traffic-type-flags trtflags-2))
|
||||
)
|
||||
(let ((v1-23 (-> obj object-type-info-array 4)))
|
||||
(set! (-> v1-23 target-count) 0)
|
||||
(set! (-> v1-23 flags) (logand -5 (-> v1-23 flags)))
|
||||
(logclear! (-> v1-23 flags) (traffic-type-flags trtflags-2))
|
||||
)
|
||||
(let ((v1-24 (-> obj object-type-info-array 17)))
|
||||
(set! (-> v1-24 target-count) 0)
|
||||
(set! (-> v1-24 flags) (logand -7 (-> v1-24 flags)))
|
||||
(logclear! (-> v1-24 flags) (traffic-type-flags trtflags-1 trtflags-2))
|
||||
)
|
||||
(dotimes (v1-25 6)
|
||||
(let ((a0-28 (-> obj alert-state guard-type-info-array v1-25)))
|
||||
@@ -3041,8 +3043,8 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(defmethod set-object-auto-activate traffic-engine ((obj traffic-engine) (arg0 int) (arg1 object))
|
||||
(let ((v1-2 (-> obj object-type-info-array arg0)))
|
||||
(if arg1
|
||||
(logior! (-> v1-2 flags) 4)
|
||||
(set! (-> v1-2 flags) (logand -5 (-> v1-2 flags)))
|
||||
(logior! (-> v1-2 flags) (traffic-type-flags trtflags-2))
|
||||
(logclear! (-> v1-2 flags) (traffic-type-flags trtflags-2))
|
||||
)
|
||||
)
|
||||
0
|
||||
@@ -3105,7 +3107,9 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
)
|
||||
(while (< (the-as uint s5-0) (the-as uint 21))
|
||||
(let ((s2-0 (-> obj object-type-info-array s5-0)))
|
||||
(when (and (logtest? (-> s2-0 flags) 8) (= (level-status *level* (the-as symbol (-> s2-0 level))) 'active))
|
||||
(when (and (logtest? (-> s2-0 flags) (traffic-type-flags trtflags-3))
|
||||
(= (level-status *level* (-> s2-0 level)) 'active)
|
||||
)
|
||||
(+! s3-0 (-> s2-0 parking-spot-prob))
|
||||
(b! (>= (the-as uint s3-0) (the-as uint s4-0)) cfg-10)
|
||||
)
|
||||
@@ -3150,7 +3154,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod per-frame-suppressor-update traffic-engine ((obj traffic-engine))
|
||||
(defmethod update-suppressor traffic-engine ((obj traffic-engine))
|
||||
(let ((v1-3 (- (-> *display* game-clock frame-counter) (-> *display* game-clock old-frame-counter))))
|
||||
(dotimes (a1-3 16)
|
||||
(let ((a2-2 (-> obj suppressor array a1-3)))
|
||||
@@ -3207,12 +3211,12 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod sphere-in-grid? city-level-info ((obj city-level-info) (arg0 int) (arg1 int))
|
||||
(defmethod sphere-in-grid? city-level-info ((obj city-level-info) (arg0 vector) (arg1 int))
|
||||
(let ((gp-0 #f))
|
||||
(let ((s3-0 (new 'stack-no-clear 'vis-grid-box))
|
||||
(s2-0 (new 'stack-no-clear 'vis-grid-box))
|
||||
)
|
||||
(lookup-box-for-sphere (-> obj grid-info) s2-0 (the-as vector arg0))
|
||||
(lookup-box-for-sphere (-> obj grid-info) s2-0 arg0)
|
||||
(set! (-> s3-0 min y) (-> s2-0 min y))
|
||||
(let ((v1-6 (+ (- 1 (-> s2-0 min y)) (-> s2-0 max y))))
|
||||
(b! #t cfg-13 :delay (nop!))
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
(deftype traffic-manager (process)
|
||||
((traffic-engine traffic-engine :offset-assert 128)
|
||||
(fast-spawn basic :offset-assert 132)
|
||||
(fast-spawn symbol :offset-assert 132)
|
||||
(dark-guard-ratio int32 :offset-assert 136)
|
||||
(spawn-params traffic-object-spawn-params :inline :offset-assert 144)
|
||||
)
|
||||
@@ -24,12 +24,12 @@
|
||||
(:methods
|
||||
(idle () _type_ :state 14)
|
||||
(active () _type_ :state 15)
|
||||
(traffic-manager-method-16 (_type_) none 16)
|
||||
(update (_type_) none 16)
|
||||
(spawn-all (_type_) none 17)
|
||||
(traffic-manager-method-18 (_type_) none 18)
|
||||
(kill-all (_type_) none 19)
|
||||
(traffic-manager-method-20 (_type_) none 20)
|
||||
(traffic-manager-method-21 (_type_) none 21)
|
||||
(kill-excess-once (_type_) none 18)
|
||||
(kill-all-inactive (_type_) none 19)
|
||||
(reset-and-init (_type_) none 20)
|
||||
(init-params (_type_) none 21)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -54,9 +54,9 @@
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod traffic-manager-method-16 traffic-manager ((obj traffic-manager))
|
||||
(defmethod update traffic-manager ((obj traffic-manager))
|
||||
(update-traffic (-> obj traffic-engine))
|
||||
(traffic-manager-method-18 obj)
|
||||
(kill-excess-once obj)
|
||||
(spawn-all obj)
|
||||
(if *debug-segment*
|
||||
(debug-unused (-> obj traffic-engine))
|
||||
@@ -75,16 +75,16 @@
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod traffic-manager-method-18 traffic-manager ((obj traffic-manager))
|
||||
(let ((s5-0 0))
|
||||
(while (< (the-as uint s5-0) (the-as uint 21))
|
||||
(let ((v1-2 (-> obj traffic-engine object-type-info-array s5-0)))
|
||||
(when (logtest? (-> v1-2 flags) 2)
|
||||
(let ((a0-5 (+ (-> v1-2 active-count) (-> v1-2 inactive-count))))
|
||||
(when (< (-> v1-2 want-count) a0-5)
|
||||
(defmethod kill-excess-once traffic-manager ((obj traffic-manager))
|
||||
(let ((type-i 0))
|
||||
(while (< (the-as uint type-i) (the-as uint 21))
|
||||
(let ((traffic (-> obj traffic-engine object-type-info-array type-i)))
|
||||
(when (logtest? (-> traffic flags) (traffic-type-flags trtflags-1))
|
||||
(let ((total-count (+ (-> traffic active-count) (-> traffic inactive-count))))
|
||||
(when (< (-> traffic want-count) total-count)
|
||||
(let ((a0-10 (handle->process (get-from-inactive-by-type
|
||||
(-> obj traffic-engine tracker-array (-> v1-2 tracker-index))
|
||||
(the-as traffic-type s5-0)
|
||||
(-> obj traffic-engine tracker-array (-> traffic tracker-index))
|
||||
(the-as traffic-type type-i)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -97,14 +97,14 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(+! s5-0 1)
|
||||
(+! type-i 1)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod kill-all traffic-manager ((obj traffic-manager))
|
||||
(defmethod kill-all-inactive traffic-manager ((obj traffic-manager))
|
||||
(let ((s5-0 0))
|
||||
(while (< (the-as uint s5-0) (the-as uint 21))
|
||||
(let ((s4-0 (-> obj traffic-engine object-type-info-array s5-0)))
|
||||
@@ -134,9 +134,9 @@
|
||||
(b! #t cfg-4 :delay (nop!))
|
||||
(label cfg-1)
|
||||
(let ((s4-0 (-> obj traffic-engine object-type-info-array s5-0)))
|
||||
(set! (-> s4-0 flags) (logand -9 (-> s4-0 flags)))
|
||||
(if (= (level-status *level* (the-as symbol (-> s4-0 level))) 'active)
|
||||
(logior! (-> s4-0 flags) 8)
|
||||
(logclear! (-> s4-0 flags) (traffic-type-flags trtflags-3))
|
||||
(if (= (level-status *level* (-> s4-0 level)) 'active)
|
||||
(logior! (-> s4-0 flags) (traffic-type-flags trtflags-3))
|
||||
)
|
||||
)
|
||||
(+! s5-0 1)
|
||||
@@ -159,7 +159,11 @@
|
||||
(let ((s0-0 (-> obj traffic-engine object-type-info-array s1-0)))
|
||||
(let ((v1-21 (+ (-> s0-0 active-count) (-> s0-0 inactive-count))))
|
||||
(b!
|
||||
(not (and (logtest? (-> s0-0 flags) 2) (logtest? (-> s0-0 flags) 8) (< v1-21 (-> s0-0 want-count))))
|
||||
(not (and (logtest? (-> s0-0 flags) (traffic-type-flags trtflags-1))
|
||||
(logtest? (-> s0-0 flags) (traffic-type-flags trtflags-3))
|
||||
(< v1-21 (-> s0-0 want-count))
|
||||
)
|
||||
)
|
||||
cfg-29
|
||||
:delay (nop!)
|
||||
)
|
||||
@@ -356,7 +360,7 @@
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod traffic-manager-method-20 traffic-manager ((obj traffic-manager))
|
||||
(defmethod reset-and-init traffic-manager ((obj traffic-manager))
|
||||
(set! (-> obj traffic-engine) *traffic-engine*)
|
||||
(reset-and-init-from-manager (-> obj traffic-engine) obj)
|
||||
(restore-city-speeches)
|
||||
@@ -383,54 +387,54 @@
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod traffic-manager-method-21 traffic-manager ((obj traffic-manager))
|
||||
(let ((s5-0 (new 'stack-no-clear 'array 'int8 21)))
|
||||
(set! (-> s5-0 11) 8)
|
||||
(set! (-> s5-0 12) 8)
|
||||
(set! (-> s5-0 13) 8)
|
||||
(set! (-> s5-0 14) 7)
|
||||
(set! (-> s5-0 15) 7)
|
||||
(set! (-> s5-0 16) 7)
|
||||
(set! (-> s5-0 18) 4)
|
||||
(set! (-> s5-0 19) 3)
|
||||
(set! (-> s5-0 20) 0)
|
||||
(set! (-> s5-0 0) 15)
|
||||
(set! (-> s5-0 1) 15)
|
||||
(set! (-> s5-0 2) 14)
|
||||
(set! (-> s5-0 3) 1)
|
||||
(set! (-> s5-0 4) 1)
|
||||
(set! (-> s5-0 6) 9)
|
||||
(set! (-> s5-0 7) 0)
|
||||
(set! (-> s5-0 8) 14)
|
||||
(set! (-> s5-0 9) 14)
|
||||
(set! (-> s5-0 10) 14)
|
||||
(set! (-> obj fast-spawn) (the-as basic *traffic-fast-spawn*))
|
||||
(traffic-manager-method-20 obj)
|
||||
(defmethod init-params traffic-manager ((obj traffic-manager))
|
||||
(let ((traffic-want-counts (new 'stack-no-clear 'array 'int8 21)))
|
||||
(set! (-> traffic-want-counts 11) 8)
|
||||
(set! (-> traffic-want-counts 12) 8)
|
||||
(set! (-> traffic-want-counts 13) 8)
|
||||
(set! (-> traffic-want-counts 14) 7)
|
||||
(set! (-> traffic-want-counts 15) 7)
|
||||
(set! (-> traffic-want-counts 16) 7)
|
||||
(set! (-> traffic-want-counts 18) 4)
|
||||
(set! (-> traffic-want-counts 19) 3)
|
||||
(set! (-> traffic-want-counts 20) 0)
|
||||
(set! (-> traffic-want-counts 0) 15)
|
||||
(set! (-> traffic-want-counts 1) 15)
|
||||
(set! (-> traffic-want-counts 2) 14)
|
||||
(set! (-> traffic-want-counts 3) 1)
|
||||
(set! (-> traffic-want-counts 4) 1)
|
||||
(set! (-> traffic-want-counts 6) 9)
|
||||
(set! (-> traffic-want-counts 7) 0)
|
||||
(set! (-> traffic-want-counts 8) 14)
|
||||
(set! (-> traffic-want-counts 9) 14)
|
||||
(set! (-> traffic-want-counts 10) 14)
|
||||
(set! (-> obj fast-spawn) *traffic-fast-spawn*)
|
||||
(reset-and-init obj)
|
||||
(let ((v1-20 (-> obj traffic-engine)))
|
||||
(dotimes (a0-2 21)
|
||||
(set! (-> v1-20 object-type-info-array a0-2 want-count) (-> s5-0 a0-2))
|
||||
(set! (-> v1-20 object-type-info-array a0-2 want-count) (-> traffic-want-counts a0-2))
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((s5-1 (-> obj spawn-params)))
|
||||
(set! (-> s5-1 object-type) (traffic-type crimson-guard-1))
|
||||
(set! (-> s5-1 behavior) (the-as uint 1))
|
||||
(set! (-> s5-1 id) (the-as uint 0))
|
||||
(set! (-> s5-1 nav-mesh) #f)
|
||||
(set! (-> s5-1 nav-branch) #f)
|
||||
(set! (-> s5-1 proc) #f)
|
||||
(set! (-> s5-1 handle) (the-as handle #f))
|
||||
(set! (-> s5-1 user-data) (the-as uint 0))
|
||||
(set! (-> s5-1 flags) (the-as uint 2))
|
||||
(set! (-> s5-1 guard-type) (the-as uint 7))
|
||||
(vector-reset! (-> s5-1 velocity))
|
||||
(vector-reset! (-> s5-1 position))
|
||||
(let ((params (-> obj spawn-params)))
|
||||
(set! (-> params object-type) (traffic-type crimson-guard-1))
|
||||
(set! (-> params behavior) (the-as uint 1))
|
||||
(set! (-> params id) (the-as uint 0))
|
||||
(set! (-> params nav-mesh) #f)
|
||||
(set! (-> params nav-branch) #f)
|
||||
(set! (-> params proc) #f)
|
||||
(set! (-> params handle) (the-as handle #f))
|
||||
(set! (-> params user-data) (the-as uint 0))
|
||||
(set! (-> params flags) (the-as uint 2))
|
||||
(set! (-> params guard-type) (the-as uint 7))
|
||||
(vector-reset! (-> params velocity))
|
||||
(vector-reset! (-> params position))
|
||||
(forward-up-nopitch->quaternion
|
||||
(-> s5-1 rotation)
|
||||
(-> params rotation)
|
||||
(new 'static 'vector :z 1.0 :w 1.0)
|
||||
(new 'static 'vector :y 1.0 :w 1.0)
|
||||
)
|
||||
(set! (-> s5-1 id) (the-as uint 1))
|
||||
(set! (-> params id) (the-as uint 1))
|
||||
)
|
||||
(set! (-> obj dark-guard-ratio) (if (task-node-closed? (game-task-node tomb-boss-resolution))
|
||||
5
|
||||
@@ -476,7 +480,7 @@
|
||||
)
|
||||
(('set-alert-duration)
|
||||
(let ((a1-8 (-> arg3 param 0)))
|
||||
(set-alert-duration (-> self traffic-engine) (the-as int a1-8))
|
||||
(set-alert-duration (-> self traffic-engine) (the-as time-frame a1-8))
|
||||
)
|
||||
)
|
||||
(('deactivate-all)
|
||||
@@ -613,12 +617,12 @@
|
||||
)
|
||||
(('level-loaded)
|
||||
(let ((a1-29 (-> arg3 param 0)))
|
||||
(level-loaded (-> self traffic-engine) (the-as level a1-29))
|
||||
(level-link (-> self traffic-engine) (the-as level a1-29))
|
||||
)
|
||||
)
|
||||
(('level-killed)
|
||||
(let ((s5-1 (the-as object (-> arg3 param 0))))
|
||||
(level-killed (-> self traffic-engine) (the-as level s5-1))
|
||||
(level-unlink (-> self traffic-engine) (the-as level s5-1))
|
||||
(format #t "traffic-manager : level killed ~S~%" (-> (the-as level s5-1) nickname))
|
||||
)
|
||||
)
|
||||
@@ -632,11 +636,11 @@
|
||||
(('kill-all)
|
||||
(format #t "traffic-manager::kill-all~%")
|
||||
(deactivate-all (-> self traffic-engine))
|
||||
(kill-all self)
|
||||
(kill-all-inactive self)
|
||||
)
|
||||
(('spawn-all)
|
||||
(format #t "traffic-manager::spawn-all~%")
|
||||
(set! (-> self fast-spawn) (the-as basic #t))
|
||||
(set! (-> self fast-spawn) #t)
|
||||
(spawn-all self)
|
||||
)
|
||||
(('set-density-factor)
|
||||
@@ -672,7 +676,7 @@
|
||||
(defbehavior traffic-manager-init-by-other traffic-manager ()
|
||||
(stack-size-set! (-> self main-thread) 128)
|
||||
(ctywide-entity-hack)
|
||||
(traffic-manager-method-21 self)
|
||||
(init-params self)
|
||||
(add-setting! 'task-mask 'clear 0 #x4000)
|
||||
(set! (-> self event-hook) traffic-manager-event-handler)
|
||||
(rigid-body-queue-manager-spawn *traffic-rigid-body-queue* self)
|
||||
@@ -713,7 +717,7 @@
|
||||
:event traffic-manager-event-handler
|
||||
:code (the-as (function none :behavior traffic-manager) sleep-code)
|
||||
:post (behavior ()
|
||||
(traffic-manager-method-16 self)
|
||||
(update self)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
@@ -763,54 +767,54 @@
|
||||
(when gp-0
|
||||
(case (-> arg0 name)
|
||||
(('lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 0 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 1 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 2 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 3 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 4 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 0 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 1 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 2 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 3 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 4 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 5 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 6 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 6 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 7 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 8 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 9 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 10 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 11 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 12 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 13 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 14 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 15 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 16 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 11 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 12 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 13 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 14 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 15 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 16 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 17 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 18 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 19 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 18 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 19 level) 'lwidea)
|
||||
(logior! (-> gp-0 alert-state flags) (traffic-alert-flag target-jak))
|
||||
(set! *traffic-alert-level-force* #f)
|
||||
)
|
||||
(('lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 0 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 0 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 1 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 2 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 3 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 4 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 3 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 4 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 5 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 6 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 6 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 7 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 8 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 9 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 10 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 11 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 8 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 9 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 10 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 11 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 12 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 13 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 14 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 14 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 15 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 16 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 17 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 18 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 18 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 19 level) #f)
|
||||
(logclear! (-> gp-0 alert-state flags) (traffic-alert-flag target-jak))
|
||||
(set-alert-level gp-0 3)
|
||||
(logior! (-> gp-0 alert-state flags) (traffic-alert-flag guard-multi-focus))
|
||||
(set-alert-duration gp-0 #x6c258c00)
|
||||
(set-alert-duration gp-0 (seconds 6048000))
|
||||
(set! *traffic-alert-level-force* #t)
|
||||
)
|
||||
)
|
||||
@@ -821,14 +825,14 @@
|
||||
)
|
||||
|
||||
(defun lwide-deactivate ()
|
||||
(set! *lwide-entity* (the-as object #f))
|
||||
(set! *lwide-entity* #f)
|
||||
(send-event *traffic-manager* 'kill-all)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun ctywide-deactivate ()
|
||||
(set! *ctywide-entity* (the-as object #f))
|
||||
(set! *ctywide-entity* #f)
|
||||
(set! *traffic-engine* #f)
|
||||
(set! *trail-graph* #f)
|
||||
(init *city-dead-pool* 'loading-level 0)
|
||||
@@ -847,7 +851,7 @@
|
||||
)
|
||||
)
|
||||
(else
|
||||
(process-entity-set! pp (the-as entity-actor *ctywide-entity*))
|
||||
(process-entity-set! pp *ctywide-entity*)
|
||||
)
|
||||
)
|
||||
0
|
||||
@@ -857,7 +861,7 @@
|
||||
|
||||
(defun lwide-entity-hack ()
|
||||
(with-pp
|
||||
(process-entity-set! pp (the-as entity-actor *lwide-entity*))
|
||||
(process-entity-set! pp *lwide-entity*)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
@@ -523,16 +523,8 @@
|
||||
(return (the-as object (-> self selected)))
|
||||
)
|
||||
)
|
||||
(set! sv-112 (new
|
||||
'stack
|
||||
'font-context
|
||||
*font-default-matrix*
|
||||
64
|
||||
312
|
||||
0.0
|
||||
(font-color default)
|
||||
(font-flags shadow kerning)
|
||||
)
|
||||
(set! sv-112
|
||||
(new 'stack 'font-context *font-default-matrix* 64 312 0.0 (font-color default) (font-flags shadow kerning))
|
||||
)
|
||||
(let ((v1-25 sv-112))
|
||||
(set! (-> v1-25 width) (the float 384))
|
||||
@@ -1036,7 +1028,7 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(process-entity-set! self (the-as entity-actor a1-2))
|
||||
(process-entity-set! self a1-2)
|
||||
)
|
||||
(set-setting! 'allow-pause #f 0 0)
|
||||
(set-setting! 'allow-progress #f 0 0)
|
||||
|
||||
@@ -183,7 +183,7 @@
|
||||
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defbehavior canyon-lightning-thingy-init-by-other canyon-lightning-thingy ((arg0 vector) (arg1 vector))
|
||||
(process-entity-set! self (the-as entity-actor #f))
|
||||
(process-entity-set! self (the-as entity #f))
|
||||
(set! (-> self root) (new 'process 'trsqv))
|
||||
(set! (-> self root trans quad) (-> arg0 quad))
|
||||
(let ((a2-1 (vector-normalize-copy! (new 'stack-no-clear 'vector) arg1 1.0)))
|
||||
|
||||
@@ -498,6 +498,7 @@
|
||||
)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch int vs object.
|
||||
;; WARN: new jak 2 until loop case, check carefully
|
||||
(defbehavior title-menu title-control ()
|
||||
(local-vars (sv-112 font-context))
|
||||
@@ -528,16 +529,8 @@
|
||||
)
|
||||
)
|
||||
(when (< (mod (-> self clock frame-counter) 300) 210)
|
||||
(set! sv-112 (new
|
||||
'stack
|
||||
'font-context
|
||||
*font-default-matrix*
|
||||
64
|
||||
312
|
||||
0.0
|
||||
(font-color default)
|
||||
(font-flags shadow kerning)
|
||||
)
|
||||
(set! sv-112
|
||||
(new 'stack 'font-context *font-default-matrix* 64 312 0.0 (font-color default) (font-flags shadow kerning))
|
||||
)
|
||||
(let ((v1-35 sv-112))
|
||||
(set! (-> v1-35 width) (the float 384))
|
||||
@@ -922,7 +915,7 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(process-entity-set! self (the-as entity-actor a1-2))
|
||||
(process-entity-set! self a1-2)
|
||||
)
|
||||
(set-setting! 'allow-pause #f 0 0)
|
||||
(set-setting! 'allow-progress #f 0 0)
|
||||
|
||||
@@ -27,6 +27,13 @@
|
||||
,inc #t ,min ,max 1)
|
||||
)
|
||||
|
||||
(defun dm-int-var-func ((var symbol) (msg debug-menu-msg) (val int) (undo-val int))
|
||||
(when (= msg (debug-menu-msg press))
|
||||
(set! (-> var value) val)
|
||||
)
|
||||
(-> var value)
|
||||
)
|
||||
|
||||
;; (defun dm-want-level-toggle-pick-func ((arg0 pair) (arg1 debug-menu-msg))
|
||||
;; (let* ((levname (the-as symbol (car arg0)))
|
||||
;; (info (the-as level-load-info (-> levname value)))
|
||||
@@ -755,13 +762,13 @@
|
||||
(flag "Discord RPC" #t ,(dm-lambda-boolean-flag (-> *pc-settings* discord-rpc?)))
|
||||
(flag "Jetboard Trick String" #t ,(dm-lambda-boolean-flag (-> *pc-settings* jetboard-trick-text?)))
|
||||
;; (flag "Speedrunner Mode" #t ,(dm-lambda-boolean-flag (-> *pc-settings* speedrunner-mode?)))
|
||||
;; (menu "PS2 settings"
|
||||
;; ;(flag "PS2 Load speed" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-read-speed?)))
|
||||
;; (flag "PS2 Particles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-parts?)))
|
||||
;; ;(flag "PS2 Music" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-music?)))
|
||||
;; ;(flag "PS2 Sound effects" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-se?)))
|
||||
;; ;(flag "PS2 Hints" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-hints?)))
|
||||
;; )
|
||||
(menu "PS2 settings"
|
||||
;(flag "PS2 Load speed" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-read-speed?)))
|
||||
(flag "PS2 Particles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-parts?)))
|
||||
;(flag "PS2 Music" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-music?)))
|
||||
;(flag "PS2 Sound effects" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-se?)))
|
||||
;(flag "PS2 Hints" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-hints?)))
|
||||
)
|
||||
(menu "Level of detail"
|
||||
(flag "PS2 LOD " #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-lod-dist?)))
|
||||
;(flag "Force Envmap" #f ,(dm-lambda-boolean-flag (-> *pc-settings* force-envmap?)))
|
||||
@@ -827,6 +834,10 @@
|
||||
;; (flag "Text boxes" #f ,(dm-lambda-boolean-flag (-> *pc-settings* display-text-box)))
|
||||
(float-var "Actor birth dist" #f ,(dm-lambda-meters-var (-> *ACTOR-bank* birth-dist)) 20 1 #t 0 10000 1)
|
||||
(float-var "Actor pause dist" #f ,(dm-lambda-meters-var (-> *ACTOR-bank* pause-dist)) 20 1 #t 0 10000 1)
|
||||
(flag "Display city info" *display-city-info* dm-boolean-toggle-pick-func)
|
||||
(int-var "City info x" *city-info-x* dm-int-var-func 10 1 #t 0 255 1)
|
||||
(int-var "City info y" *city-info-y* dm-int-var-func 10 1 #t 0 255 1)
|
||||
(int-var "City info z" *city-info-z* dm-int-var-func 10 1 #t 0 255 1)
|
||||
;; (menu "Mood override"
|
||||
;; (function "-- SIMPLE OVERRIDE" #f nothing)
|
||||
;; (flag "Palette 0" 0 dm-mood-override-palette-pick-func)
|
||||
|
||||
@@ -56,4 +56,9 @@
|
||||
(define *region-debug-inspect* (the drawable-region-prim #f))
|
||||
(define *display-region-inside* #f)
|
||||
|
||||
(define *display-city-info* #f)
|
||||
(define *city-info-x* 0)
|
||||
(define *city-info-y* 0)
|
||||
(define *city-info-z* 0)
|
||||
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
;; The Jak 2 version of the pc-settings object.
|
||||
(deftype pc-settings-jak2 (pc-settings)
|
||||
(
|
||||
;; debug
|
||||
(jetboard-trick-text? symbol) ;; enable rendering jetboard trick combo during minigame
|
||||
)
|
||||
)
|
||||
|
||||
+1
-1
@@ -1257,7 +1257,7 @@
|
||||
(defbehavior enemy-init-by-other enemy ((arg0 process-drawable) (arg1 transformq))
|
||||
(let ((a1-1 (-> arg1 scale x)))
|
||||
(if a1-1
|
||||
(process-entity-set! self (the-as entity-actor a1-1))
|
||||
(process-entity-set! self (the-as entity a1-1))
|
||||
)
|
||||
)
|
||||
(if (-> arg1 scale y)
|
||||
|
||||
+4
-4
@@ -4,11 +4,11 @@
|
||||
;; definition for symbol *traffic-manager*, type process
|
||||
(define *traffic-manager* (the-as process #f))
|
||||
|
||||
;; definition for symbol *ctywide-entity*, type object
|
||||
(define *ctywide-entity* (the-as object #f))
|
||||
;; definition for symbol *ctywide-entity*, type entity
|
||||
(define *ctywide-entity* (the-as entity #f))
|
||||
|
||||
;; definition for symbol *lwide-entity*, type object
|
||||
(define *lwide-entity* (the-as object #f))
|
||||
;; definition for symbol *lwide-entity*, type entity
|
||||
(define *lwide-entity* (the-as entity #f))
|
||||
|
||||
;; definition for symbol *race-vehicle-entity*, type entity-actor
|
||||
(define *race-vehicle-entity* (the-as entity-actor #f))
|
||||
|
||||
+1
-1
@@ -2699,7 +2699,7 @@ This commonly includes things such as:
|
||||
(logclear! (-> obj flags) (collectable-flag fadeout))
|
||||
)
|
||||
(((pickup-type board))
|
||||
(process-entity-set! obj (the-as entity-actor #f))
|
||||
(process-entity-set! obj (the-as entity #f))
|
||||
(initialize-skeleton
|
||||
obj
|
||||
(the-as skeleton-group (art-group-get-by-name *level* "skel-board" (the-as (pointer uint32) #f)))
|
||||
|
||||
+1
-1
@@ -496,7 +496,7 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
(defbehavior projectile-init-by-other projectile ((arg0 projectile-init-by-other-params))
|
||||
(stack-size-set! (-> self main-thread) 512)
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(process-entity-set! self (the-as entity-actor (-> arg0 ent)))
|
||||
(process-entity-set! self (-> arg0 ent))
|
||||
(set! (-> self charge-level) (-> arg0 charge))
|
||||
(set! (-> self options) (-> arg0 options))
|
||||
(set! (-> self notify-handle) (-> arg0 notify-handle))
|
||||
|
||||
+1
-1
@@ -657,7 +657,7 @@ This commonly includes things such as:
|
||||
;; INFO: Used lq/sq
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defbehavior judge-init-by-other judge ((arg0 vector) (arg1 uint))
|
||||
(process-entity-set! self (the-as entity-actor #f))
|
||||
(process-entity-set! self (the-as entity #f))
|
||||
(set! (-> self score) arg1)
|
||||
(setup-collision self)
|
||||
(init self)
|
||||
|
||||
+2
-2
@@ -516,8 +516,8 @@
|
||||
)
|
||||
|
||||
;; definition for function process-entity-set!
|
||||
(defun process-entity-set! ((arg0 process) (arg1 entity-actor))
|
||||
(set! (-> arg0 entity) arg1)
|
||||
(defun process-entity-set! ((arg0 process) (arg1 entity))
|
||||
(set! (-> arg0 entity) (the-as entity-actor arg1))
|
||||
(if arg1
|
||||
(set! (-> arg0 level) (-> arg1 extra level))
|
||||
(set! (-> arg0 level) (-> *level* default-level))
|
||||
|
||||
+1
-1
@@ -1906,7 +1906,7 @@
|
||||
)
|
||||
)
|
||||
(if a1-6
|
||||
(process-entity-set! self (the-as entity-actor a1-6))
|
||||
(process-entity-set! self a1-6)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
+1
-1
@@ -1761,7 +1761,7 @@
|
||||
;; WARN: Using new Jak 2 rtype-of
|
||||
(defbehavior scene-player-init scene-player ((arg0 object) (arg1 symbol) (arg2 string))
|
||||
"`object` arg can be an `(array scene)`, `pair of scene` or a `scene`"
|
||||
(process-entity-set! self (the-as entity-actor #f))
|
||||
(process-entity-set! self (the-as entity #f))
|
||||
(stack-size-set! (-> self main-thread) 512)
|
||||
(set! (-> self root) (new 'process 'trsqv))
|
||||
(case (rtype-of arg0)
|
||||
|
||||
+1
-1
@@ -1171,7 +1171,7 @@
|
||||
(let ((s4-1 (-> self entity))
|
||||
(s3-0 (-> self level))
|
||||
)
|
||||
(process-entity-set! self (the-as entity-actor (-> self mech entity)))
|
||||
(process-entity-set! self (the-as entity (-> self mech entity)))
|
||||
(let ((s2-0 (get-process *16k-dead-pool* manipy #x4000)))
|
||||
(set! (-> self manipy)
|
||||
(the-as
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@
|
||||
(max-user-count uint8 :offset-assert 12)
|
||||
(user-count uint8 :offset-assert 13)
|
||||
(width uint8 :offset-assert 14)
|
||||
(flags uint8 :offset-assert 15)
|
||||
(flags nav-branch-flags :offset-assert 15)
|
||||
)
|
||||
:method-count-assert 21
|
||||
:size-assert #x10
|
||||
|
||||
+22
-22
@@ -248,7 +248,7 @@
|
||||
(city-level-info-method-12 (_type_ vector nav-branch vector) vector 12)
|
||||
(lookup-cell-by-position (_type_ vector) vis-cell 13)
|
||||
(get-first-cell-in-box (_type_ vis-grid-box) vis-cell 14)
|
||||
(sphere-in-grid? (_type_ int int) symbol 15)
|
||||
(sphere-in-grid? (_type_ vector int) symbol 15)
|
||||
(callback-on-nav-segments-in-sphere (_type_ vector int traffic-find-segment-struct (function traffic-find-segment-struct nav-segment none)) none 16)
|
||||
(update-suppressions-from-traffic-engine (_type_ traffic-engine) none 17)
|
||||
(city-level-info-method-18 (_type_) none 18)
|
||||
@@ -561,18 +561,18 @@
|
||||
|
||||
;; definition of type traffic-object-type-info
|
||||
(deftype traffic-object-type-info (structure)
|
||||
((flags uint8 :offset-assert 0)
|
||||
(target-count int8 :offset-assert 1)
|
||||
(active-count int8 :offset-assert 2)
|
||||
(inactive-count int8 :offset-assert 3)
|
||||
(reserve-count uint16 :offset-assert 4)
|
||||
(killed-count uint16 :offset-assert 6)
|
||||
(want-count int8 :offset-assert 8)
|
||||
(tracker-index uint8 :offset-assert 9)
|
||||
(parking-spot-prob uint8 :offset-assert 10)
|
||||
(guard-type uint8 :offset-assert 11)
|
||||
(array (pointer handle) :offset-assert 12)
|
||||
(level level :offset-assert 16)
|
||||
((flags traffic-type-flags :offset-assert 0)
|
||||
(target-count int8 :offset-assert 1)
|
||||
(active-count int8 :offset-assert 2)
|
||||
(inactive-count int8 :offset-assert 3)
|
||||
(reserve-count uint16 :offset-assert 4)
|
||||
(killed-count uint16 :offset-assert 6)
|
||||
(want-count int8 :offset-assert 8)
|
||||
(tracker-index uint8 :offset-assert 9)
|
||||
(parking-spot-prob uint8 :offset-assert 10)
|
||||
(guard-type uint8 :offset-assert 11)
|
||||
(array (pointer handle) :offset-assert 12)
|
||||
(level symbol :offset-assert 16)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x14
|
||||
@@ -722,7 +722,7 @@
|
||||
(stop-alarm-sound (_type_) none 11)
|
||||
(debug-unused (_type_) none 12)
|
||||
(add-object (_type_ traffic-type process) none 13)
|
||||
(sphere-in-loaded-city-infos? (_type_ int vector) symbol 14)
|
||||
(sphere-in-loaded-city-infos? (_type_ vector int) symbol 14)
|
||||
(activate-one-citizen (_type_ nav-segment float) none 15)
|
||||
(activate-one-vehicle (_type_ nav-segment float) none 16)
|
||||
(can-dest-be-used? (_type_ nav-branch) symbol 17)
|
||||
@@ -742,7 +742,7 @@
|
||||
(decrease-alert-level (_type_ int) none 31)
|
||||
(set-alert-level (_type_ int) none 32)
|
||||
(set-max-alert-level (_type_ int) none 33)
|
||||
(set-alert-duration (_type_ int) none 34)
|
||||
(set-alert-duration (_type_ time-frame) none 34)
|
||||
(get-alert-level (_type_) int 35)
|
||||
(get-target (_type_) target 36)
|
||||
(set-object-target-level (_type_ int float) none 37)
|
||||
@@ -769,18 +769,18 @@
|
||||
(set-object-auto-activate (_type_ int object) none 58)
|
||||
(debug-check-proc-in-tracker (_type_ process int) none 59)
|
||||
(kill-traffic-sphere (_type_ sphere) none 60)
|
||||
(level-loaded (_type_ level) none 61)
|
||||
(level-killed (_type_ level) none 62)
|
||||
(level-link (_type_ level) none 61)
|
||||
(level-unlink (_type_ level) none 62)
|
||||
(traffic-engine-method-63 (_type_) none 63)
|
||||
(traffic-engine-method-64 (_type_) none 64)
|
||||
(handle-new-vis-cell (_type_ vis-cell) none 65)
|
||||
(update-sync-from-frame-counter (_type_) none 66)
|
||||
(per-frame-guard-update (_type_) none 67)
|
||||
(per-frame-activate-deactivate (_type_) none 68)
|
||||
(per-frame-danger-update (_type_) none 69)
|
||||
(update-guards (_type_) none 67)
|
||||
(update-traffic-amount (_type_) none 68)
|
||||
(update-danger (_type_) none 69)
|
||||
(update-danger-from-target (_type_) none 70)
|
||||
(per-frame-alert-update (_type_) none 71)
|
||||
(per-frame-suppressor-update (_type_) none 72)
|
||||
(update-alert-state (_type_) none 71)
|
||||
(update-suppressor (_type_) none 72)
|
||||
(recompute-supressions (_type_) none 73)
|
||||
)
|
||||
)
|
||||
|
||||
+77
-73
@@ -636,9 +636,9 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(when (and (> (-> v1-2 inactive-count) 0)
|
||||
(> (-> v1-2 reserve-count) 0)
|
||||
(< (-> v1-2 active-count) (-> v1-2 target-count))
|
||||
(logtest? (-> v1-2 flags) 4)
|
||||
(logtest? (-> v1-2 flags) 8)
|
||||
(or (not (logtest? (-> v1-2 flags) 1))
|
||||
(logtest? (-> v1-2 flags) (traffic-type-flags trtflags-2))
|
||||
(logtest? (-> v1-2 flags) (traffic-type-flags trtflags-3))
|
||||
(or (not (logtest? (-> v1-2 flags) (traffic-type-flags trtflags-0)))
|
||||
(zero? (logand (-> obj traffic alert-state flags) (traffic-alert-flag alert-ending)))
|
||||
)
|
||||
)
|
||||
@@ -789,7 +789,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(let ((v1-4 (-> obj inactive-object-array)))
|
||||
(dotimes (a0-5 21)
|
||||
(let ((a1-3 (-> obj object-type-info-array a0-5)))
|
||||
(set! (-> a1-3 flags) (the-as uint 6))
|
||||
(set! (-> a1-3 flags) (traffic-type-flags trtflags-1 trtflags-2))
|
||||
(set! (-> a1-3 inactive-count) 0)
|
||||
(set! (-> a1-3 active-count) 0)
|
||||
(set! (-> a1-3 target-count) 20)
|
||||
@@ -802,7 +802,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
)
|
||||
)
|
||||
(set! (-> obj object-type-info-array 6 guard-type) (the-as uint 0))
|
||||
(set! (-> obj object-type-info-array 20 level) (the-as level 'ctywide))
|
||||
(set! (-> obj object-type-info-array 20 level) 'ctywide)
|
||||
(let ((v1-8 11))
|
||||
(dotimes (a0-6 10)
|
||||
(set! (-> obj object-type-info-array v1-8 tracker-index) (the-as uint 0))
|
||||
@@ -845,7 +845,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(dotimes (s5-2 (-> *level* length))
|
||||
(let ((a1-12 (-> *level* level s5-2)))
|
||||
(if (= (-> a1-12 status) 'active)
|
||||
(level-loaded obj a1-12)
|
||||
(level-link obj a1-12)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -864,7 +864,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
|
||||
;; definition for method 61 of type traffic-engine
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod level-loaded traffic-engine ((obj traffic-engine) (arg0 level))
|
||||
(defmethod level-link traffic-engine ((obj traffic-engine) (arg0 level))
|
||||
"Call after loading a level to patch the data in the bsp"
|
||||
(format #t "traffic-engine: level birth ~S~%" (-> arg0 nickname))
|
||||
(cond
|
||||
@@ -998,7 +998,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
|
||||
;; definition for method 62 of type traffic-engine
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod level-killed traffic-engine ((obj traffic-engine) (arg0 level))
|
||||
(defmethod level-unlink traffic-engine ((obj traffic-engine) (arg0 level))
|
||||
"Call after removing a level. Kills processes and unlinks nav"
|
||||
(let ((s4-0 (-> arg0 bsp city-level-info nav-graph)))
|
||||
(dotimes (v1-2 2)
|
||||
@@ -1257,11 +1257,11 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
)
|
||||
|
||||
;; definition for method 14 of type traffic-engine
|
||||
(defmethod sphere-in-loaded-city-infos? traffic-engine ((obj traffic-engine) (arg0 int) (arg1 vector))
|
||||
(defmethod sphere-in-loaded-city-infos? traffic-engine ((obj traffic-engine) (arg0 vector) (arg1 int))
|
||||
(dotimes (s3-0 2)
|
||||
(let ((v1-3 (-> obj level-data-array s3-0)))
|
||||
(when (nonzero? (-> v1-3 city-info))
|
||||
(if (sphere-in-grid? (-> v1-3 city-info) arg0 (the-as int arg1))
|
||||
(if (sphere-in-grid? (-> v1-3 city-info) arg0 arg1)
|
||||
(return #t)
|
||||
)
|
||||
)
|
||||
@@ -1273,7 +1273,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
;; definition for method 17 of type traffic-engine
|
||||
(defmethod can-dest-be-used? traffic-engine ((obj traffic-engine) (arg0 nav-branch))
|
||||
(let ((v1-0 (-> arg0 src-node)))
|
||||
(or (logtest? (-> arg0 flags) 1)
|
||||
(or (logtest? (-> arg0 flags) (nav-branch-flags nabflags-0))
|
||||
(logtest? (-> v1-0 flags) (nav-node-flag-byte blocked))
|
||||
(not (-> arg0 dest-node))
|
||||
(>= (-> arg0 user-count) (-> arg0 max-user-count))
|
||||
@@ -1387,44 +1387,44 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(let ((v1-1 (-> obj danger-sphere-array)))
|
||||
(set! (-> v1-1 0 handle) (process->handle s5-0))
|
||||
(let ((a0-4 (-> s5-0 focus-status))
|
||||
(f0-0 0.0)
|
||||
(f1-0 0.0)
|
||||
(f3-0 1.0)
|
||||
(f2-0 0.0)
|
||||
(notify-radius 0.0)
|
||||
(danger-radius 0.0)
|
||||
(decay-rate 1.0)
|
||||
(danger-level 0.0)
|
||||
)
|
||||
(cond
|
||||
((logtest? (focus-status mech dark shooting) a0-4)
|
||||
(set! f0-0 245760.0)
|
||||
(set! f1-0 163840.0)
|
||||
(set! f2-0 1.0)
|
||||
(set! f3-0 0.0)
|
||||
(set! notify-radius 245760.0)
|
||||
(set! danger-radius 163840.0)
|
||||
(set! danger-level 1.0)
|
||||
(set! decay-rate 0.0)
|
||||
)
|
||||
((logtest? (focus-status gun) a0-4)
|
||||
(set! f0-0 102400.0)
|
||||
(set! f1-0 61440.0)
|
||||
(set! f2-0 0.5)
|
||||
(set! f3-0 0.5)
|
||||
(set! notify-radius 102400.0)
|
||||
(set! danger-radius 61440.0)
|
||||
(set! danger-level 0.5)
|
||||
(set! decay-rate 0.5)
|
||||
)
|
||||
((logtest? (focus-status board pilot) a0-4)
|
||||
(set! f0-0 40960.0)
|
||||
(set! f1-0 24576.0)
|
||||
(set! f2-0 0.5)
|
||||
(set! notify-radius 40960.0)
|
||||
(set! danger-radius 24576.0)
|
||||
(set! danger-level 0.5)
|
||||
)
|
||||
((logtest? a0-4 (focus-status dangerous))
|
||||
(set! f0-0 61440.0)
|
||||
(set! f1-0 40960.0)
|
||||
(set! f3-0 0.0)
|
||||
(set! f2-0 0.5)
|
||||
(set! notify-radius 61440.0)
|
||||
(set! danger-radius 40960.0)
|
||||
(set! decay-rate 0.0)
|
||||
(set! danger-level 0.5)
|
||||
)
|
||||
(else
|
||||
(set! f3-0 1.5)
|
||||
(set! decay-rate 1.5)
|
||||
)
|
||||
)
|
||||
(set! (-> v1-1 0 decay-rate) (* 0.1 f3-0))
|
||||
(when (< (-> v1-1 0 danger-level) f2-0)
|
||||
(set! (-> v1-1 0 danger-level) f2-0)
|
||||
(set! (-> v1-1 0 sphere r) f1-0)
|
||||
(set! (-> v1-1 0 notify-radius) f0-0)
|
||||
(set! (-> v1-1 0 decay-rate) (* 0.1 decay-rate))
|
||||
(when (< (-> v1-1 0 danger-level) danger-level)
|
||||
(set! (-> v1-1 0 danger-level) danger-level)
|
||||
(set! (-> v1-1 0 sphere r) danger-radius)
|
||||
(set! (-> v1-1 0 notify-radius) notify-radius)
|
||||
)
|
||||
)
|
||||
(let ((f0-1 (-> v1-1 0 sphere r)))
|
||||
@@ -1552,7 +1552,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
;; definition for method 69 of type traffic-engine
|
||||
;; INFO: Used lq/sq
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod per-frame-danger-update traffic-engine ((obj traffic-engine))
|
||||
(defmethod update-danger traffic-engine ((obj traffic-engine))
|
||||
"see what's dangerous and make people avoid it."
|
||||
(update-danger-from-target obj)
|
||||
(dotimes (s5-0 (-> obj danger-sphere-count))
|
||||
@@ -1667,8 +1667,8 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
;; definition for method 68 of type traffic-engine
|
||||
;; INFO: Used lq/sq
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod per-frame-activate-deactivate traffic-engine ((obj traffic-engine))
|
||||
"per-frame activate and deactivate processes."
|
||||
(defmethod update-traffic-amount traffic-engine ((obj traffic-engine))
|
||||
"kills inactive traffic and spawns more if needed."
|
||||
(local-vars (sv-48 int) (sv-64 nav-segment))
|
||||
(set! (-> obj object-hash object-count) 0)
|
||||
(let* ((v1-1 (-> obj object-hash))
|
||||
@@ -1725,7 +1725,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(set! (-> s5-0 quad) (-> v1-33 trans quad))
|
||||
(set! (-> s5-0 w) (-> v1-33 root-prim prim-core world-sphere w))
|
||||
)
|
||||
(sphere-in-loaded-city-infos? obj (the-as int s5-0) (the-as vector 0))
|
||||
(sphere-in-loaded-city-infos? obj s5-0 0)
|
||||
)
|
||||
(set! (-> (the-as vehicle s3-0) traffic-hash-id)
|
||||
(spatial-hash-method-39 (-> obj object-hash) s5-0 (the-as hash-object-info s3-0))
|
||||
@@ -1755,7 +1755,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(set! (-> s5-0 quad) (-> v1-54 trans quad))
|
||||
(set! (-> s5-0 w) (-> v1-54 root-prim prim-core world-sphere w))
|
||||
)
|
||||
(sphere-in-loaded-city-infos? obj (the-as int s5-0) (the-as vector 1))
|
||||
(sphere-in-loaded-city-infos? obj s5-0 1)
|
||||
)
|
||||
(spatial-hash-method-39 (-> obj object-hash) s5-0 (the-as hash-object-info s3-1))
|
||||
)
|
||||
@@ -1835,7 +1835,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod update-traffic traffic-engine ((obj traffic-engine))
|
||||
(update-sync-from-frame-counter obj)
|
||||
(per-frame-suppressor-update obj)
|
||||
(update-suppressor obj)
|
||||
(let ((s5-0 (new 'stack-no-clear 'bounding-box)))
|
||||
(set-vector!
|
||||
(-> s5-0 min)
|
||||
@@ -1862,11 +1862,11 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
)
|
||||
(update-grid-for-objects-in-box (-> obj object-hash) 253 (-> s5-0 min) (-> s5-0 max))
|
||||
)
|
||||
(per-frame-activate-deactivate obj)
|
||||
(update-traffic-amount obj)
|
||||
(set! (-> obj alert-state guard-aim-count) 0)
|
||||
(per-frame-alert-update obj)
|
||||
(per-frame-guard-update obj)
|
||||
(per-frame-danger-update obj)
|
||||
(update-alert-state obj)
|
||||
(update-guards obj)
|
||||
(update-danger obj)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
@@ -2438,7 +2438,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
|
||||
;; definition for method 34 of type traffic-engine
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod set-alert-duration traffic-engine ((obj traffic-engine) (arg0 int))
|
||||
(defmethod set-alert-duration traffic-engine ((obj traffic-engine) (arg0 time-frame))
|
||||
(set! (-> obj alert-state duration) (the-as uint arg0))
|
||||
0
|
||||
(none)
|
||||
@@ -2765,7 +2765,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
|
||||
;; definition for method 67 of type traffic-engine
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod per-frame-guard-update traffic-engine ((obj traffic-engine))
|
||||
(defmethod update-guards traffic-engine ((obj traffic-engine))
|
||||
(dotimes (v1-0 6)
|
||||
(set! (-> obj alert-state guard-type-info-array v1-0 count) 0)
|
||||
)
|
||||
@@ -2899,7 +2899,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
;; definition for method 71 of type traffic-engine
|
||||
;; INFO: Used lq/sq
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod per-frame-alert-update traffic-engine ((obj traffic-engine))
|
||||
(defmethod update-alert-state traffic-engine ((obj traffic-engine))
|
||||
(with-pp
|
||||
(if (and (logtest? (-> obj alert-state flags) (traffic-alert-flag target-jak)) *target*)
|
||||
(set! (-> obj alert-state target-status-array 0 handle) (process->handle *target*))
|
||||
@@ -3064,7 +3064,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
*target*
|
||||
)
|
||||
(for-all-active-processes obj (lambda ((arg0 process-focusable) (arg1 traffic-object-type-info))
|
||||
(if (logtest? (-> arg1 flags) 1)
|
||||
(if (logtest? (-> arg1 flags) (traffic-type-flags trtflags-0))
|
||||
(send-event arg0 'alert-begin *target*)
|
||||
)
|
||||
(none)
|
||||
@@ -3074,7 +3074,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
)
|
||||
(else
|
||||
(for-all-active-processes obj (lambda ((arg0 process-focusable) (arg1 traffic-object-type-info))
|
||||
(if (logtest? (-> arg1 flags) 1)
|
||||
(if (logtest? (-> arg1 flags) (traffic-type-flags trtflags-0))
|
||||
(send-event arg0 'alert-end)
|
||||
)
|
||||
(none)
|
||||
@@ -3103,54 +3103,56 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(logclear! (-> v1-6 0 flags) (traffic-target-flag force-visible))
|
||||
)
|
||||
(set-target-level obj 1.0)
|
||||
(set-alert-duration obj 9000)
|
||||
(set-alert-duration obj (seconds 30))
|
||||
(set-max-alert-level obj 4)
|
||||
(let ((v1-13 42))
|
||||
(dotimes (a0-7 21)
|
||||
(let ((a1-6 (-> obj object-type-info-array a0-7)))
|
||||
(set! (-> a1-6 flags) (the-as uint 6))
|
||||
(set! (-> a1-6 flags) (traffic-type-flags trtflags-1 trtflags-2))
|
||||
(set! (-> a1-6 reserve-count) (the-as uint (max 1000 (min #xfde8 (* 1000 (-> a1-6 want-count))))))
|
||||
(set! (-> a1-6 killed-count) (the-as uint 0))
|
||||
(set! (-> a1-6 parking-spot-prob)
|
||||
(the-as uint (if (and (zero? (-> a1-6 tracker-index)) (zero? (logand (-> a1-6 flags) 1)))
|
||||
v1-13
|
||||
0
|
||||
)
|
||||
)
|
||||
(the-as
|
||||
uint
|
||||
(if (and (zero? (-> a1-6 tracker-index)) (zero? (logand (-> a1-6 flags) (traffic-type-flags trtflags-0))))
|
||||
v1-13
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-16 (-> obj object-type-info-array 6)))
|
||||
(logior! (-> v1-16 flags) 1)
|
||||
(logior! (-> v1-16 flags) (traffic-type-flags trtflags-0))
|
||||
)
|
||||
(let ((v1-17 (-> obj object-type-info-array 7)))
|
||||
(logior! (-> v1-17 flags) 1)
|
||||
(logior! (-> v1-17 flags) (traffic-type-flags trtflags-0))
|
||||
)
|
||||
(let ((v1-18 (-> obj object-type-info-array 18)))
|
||||
(logior! (-> v1-18 flags) 1)
|
||||
(logior! (-> v1-18 flags) (traffic-type-flags trtflags-0))
|
||||
)
|
||||
(let ((v1-19 (-> obj object-type-info-array 19)))
|
||||
(logior! (-> v1-19 flags) 1)
|
||||
(logior! (-> v1-19 flags) (traffic-type-flags trtflags-0))
|
||||
)
|
||||
(let ((v1-20 (-> obj object-type-info-array 20)))
|
||||
(logior! (-> v1-20 flags) 1)
|
||||
(logior! (-> v1-20 flags) (traffic-type-flags trtflags-0))
|
||||
)
|
||||
(let ((v1-21 (-> obj object-type-info-array 5)))
|
||||
(set! (-> v1-21 target-count) 0)
|
||||
(set! (-> v1-21 flags) (logand -7 (-> v1-21 flags)))
|
||||
(logclear! (-> v1-21 flags) (traffic-type-flags trtflags-1 trtflags-2))
|
||||
)
|
||||
(let ((v1-22 (-> obj object-type-info-array 3)))
|
||||
(set! (-> v1-22 target-count) 0)
|
||||
(set! (-> v1-22 flags) (logand -5 (-> v1-22 flags)))
|
||||
(logclear! (-> v1-22 flags) (traffic-type-flags trtflags-2))
|
||||
)
|
||||
(let ((v1-23 (-> obj object-type-info-array 4)))
|
||||
(set! (-> v1-23 target-count) 0)
|
||||
(set! (-> v1-23 flags) (logand -5 (-> v1-23 flags)))
|
||||
(logclear! (-> v1-23 flags) (traffic-type-flags trtflags-2))
|
||||
)
|
||||
(let ((v1-24 (-> obj object-type-info-array 17)))
|
||||
(set! (-> v1-24 target-count) 0)
|
||||
(set! (-> v1-24 flags) (logand -7 (-> v1-24 flags)))
|
||||
(logclear! (-> v1-24 flags) (traffic-type-flags trtflags-1 trtflags-2))
|
||||
)
|
||||
(dotimes (v1-25 6)
|
||||
(let ((a0-28 (-> obj alert-state guard-type-info-array v1-25)))
|
||||
@@ -3222,8 +3224,8 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
(defmethod set-object-auto-activate traffic-engine ((obj traffic-engine) (arg0 int) (arg1 object))
|
||||
(let ((v1-2 (-> obj object-type-info-array arg0)))
|
||||
(if arg1
|
||||
(logior! (-> v1-2 flags) 4)
|
||||
(set! (-> v1-2 flags) (logand -5 (-> v1-2 flags)))
|
||||
(logior! (-> v1-2 flags) (traffic-type-flags trtflags-2))
|
||||
(logclear! (-> v1-2 flags) (traffic-type-flags trtflags-2))
|
||||
)
|
||||
)
|
||||
0
|
||||
@@ -3299,7 +3301,9 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
)
|
||||
(while (< (the-as uint s5-0) (the-as uint 21))
|
||||
(let ((s2-0 (-> obj object-type-info-array s5-0)))
|
||||
(when (and (logtest? (-> s2-0 flags) 8) (= (level-status *level* (the-as symbol (-> s2-0 level))) 'active))
|
||||
(when (and (logtest? (-> s2-0 flags) (traffic-type-flags trtflags-3))
|
||||
(= (level-status *level* (-> s2-0 level)) 'active)
|
||||
)
|
||||
(+! s3-0 (-> s2-0 parking-spot-prob))
|
||||
(b! (>= (the-as uint s3-0) (the-as uint s4-0)) cfg-10)
|
||||
)
|
||||
@@ -3353,7 +3357,7 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
|
||||
;; definition for method 72 of type traffic-engine
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod per-frame-suppressor-update traffic-engine ((obj traffic-engine))
|
||||
(defmethod update-suppressor traffic-engine ((obj traffic-engine))
|
||||
(let ((v1-3 (- (-> *display* game-clock frame-counter) (-> *display* game-clock old-frame-counter))))
|
||||
(dotimes (a1-3 16)
|
||||
(let ((a2-2 (-> obj suppressor array a1-3)))
|
||||
@@ -3415,12 +3419,12 @@ Process is recycled and moved to reserved, if it deactivates."
|
||||
)
|
||||
|
||||
;; definition for method 15 of type city-level-info
|
||||
(defmethod sphere-in-grid? city-level-info ((obj city-level-info) (arg0 int) (arg1 int))
|
||||
(defmethod sphere-in-grid? city-level-info ((obj city-level-info) (arg0 vector) (arg1 int))
|
||||
(let ((gp-0 #f))
|
||||
(let ((s3-0 (new 'stack-no-clear 'vis-grid-box))
|
||||
(s2-0 (new 'stack-no-clear 'vis-grid-box))
|
||||
)
|
||||
(lookup-box-for-sphere (-> obj grid-info) s2-0 (the-as vector arg0))
|
||||
(lookup-box-for-sphere (-> obj grid-info) s2-0 arg0)
|
||||
(set! (-> s3-0 min y) (-> s2-0 min y))
|
||||
(let ((v1-6 (+ (- 1 (-> s2-0 min y)) (-> s2-0 max y))))
|
||||
(b! #t cfg-13 :delay (nop!))
|
||||
|
||||
+103
-99
@@ -10,7 +10,7 @@
|
||||
;; definition of type traffic-manager
|
||||
(deftype traffic-manager (process)
|
||||
((traffic-engine traffic-engine :offset-assert 128)
|
||||
(fast-spawn basic :offset-assert 132)
|
||||
(fast-spawn symbol :offset-assert 132)
|
||||
(dark-guard-ratio int32 :offset-assert 136)
|
||||
(spawn-params traffic-object-spawn-params :inline :offset-assert 144)
|
||||
)
|
||||
@@ -21,12 +21,12 @@
|
||||
(:methods
|
||||
(idle () _type_ :state 14)
|
||||
(active () _type_ :state 15)
|
||||
(traffic-manager-method-16 (_type_) none 16)
|
||||
(update (_type_) none 16)
|
||||
(spawn-all (_type_) none 17)
|
||||
(traffic-manager-method-18 (_type_) none 18)
|
||||
(kill-all (_type_) none 19)
|
||||
(traffic-manager-method-20 (_type_) none 20)
|
||||
(traffic-manager-method-21 (_type_) none 21)
|
||||
(kill-excess-once (_type_) none 18)
|
||||
(kill-all-inactive (_type_) none 19)
|
||||
(reset-and-init (_type_) none 20)
|
||||
(init-params (_type_) none 21)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -71,9 +71,9 @@
|
||||
|
||||
;; definition for method 16 of type traffic-manager
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod traffic-manager-method-16 traffic-manager ((obj traffic-manager))
|
||||
(defmethod update traffic-manager ((obj traffic-manager))
|
||||
(update-traffic (-> obj traffic-engine))
|
||||
(traffic-manager-method-18 obj)
|
||||
(kill-excess-once obj)
|
||||
(spawn-all obj)
|
||||
(if *debug-segment*
|
||||
(debug-unused (-> obj traffic-engine))
|
||||
@@ -94,16 +94,16 @@
|
||||
|
||||
;; definition for method 18 of type traffic-manager
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod traffic-manager-method-18 traffic-manager ((obj traffic-manager))
|
||||
(let ((s5-0 0))
|
||||
(while (< (the-as uint s5-0) (the-as uint 21))
|
||||
(let ((v1-2 (-> obj traffic-engine object-type-info-array s5-0)))
|
||||
(when (logtest? (-> v1-2 flags) 2)
|
||||
(let ((a0-5 (+ (-> v1-2 active-count) (-> v1-2 inactive-count))))
|
||||
(when (< (-> v1-2 want-count) a0-5)
|
||||
(defmethod kill-excess-once traffic-manager ((obj traffic-manager))
|
||||
(let ((type-i 0))
|
||||
(while (< (the-as uint type-i) (the-as uint 21))
|
||||
(let ((traffic (-> obj traffic-engine object-type-info-array type-i)))
|
||||
(when (logtest? (-> traffic flags) (traffic-type-flags trtflags-1))
|
||||
(let ((total-count (+ (-> traffic active-count) (-> traffic inactive-count))))
|
||||
(when (< (-> traffic want-count) total-count)
|
||||
(let ((a0-10 (handle->process (get-from-inactive-by-type
|
||||
(-> obj traffic-engine tracker-array (-> v1-2 tracker-index))
|
||||
(the-as traffic-type s5-0)
|
||||
(-> obj traffic-engine tracker-array (-> traffic tracker-index))
|
||||
(the-as traffic-type type-i)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -116,7 +116,7 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(+! s5-0 1)
|
||||
(+! type-i 1)
|
||||
)
|
||||
)
|
||||
0
|
||||
@@ -125,7 +125,7 @@
|
||||
|
||||
;; definition for method 19 of type traffic-manager
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod kill-all traffic-manager ((obj traffic-manager))
|
||||
(defmethod kill-all-inactive traffic-manager ((obj traffic-manager))
|
||||
(let ((s5-0 0))
|
||||
(while (< (the-as uint s5-0) (the-as uint 21))
|
||||
(let ((s4-0 (-> obj traffic-engine object-type-info-array s5-0)))
|
||||
@@ -157,9 +157,9 @@
|
||||
(b! #t cfg-4 :delay (nop!))
|
||||
(label cfg-1)
|
||||
(let ((s4-0 (-> obj traffic-engine object-type-info-array s5-0)))
|
||||
(set! (-> s4-0 flags) (logand -9 (-> s4-0 flags)))
|
||||
(if (= (level-status *level* (the-as symbol (-> s4-0 level))) 'active)
|
||||
(logior! (-> s4-0 flags) 8)
|
||||
(logclear! (-> s4-0 flags) (traffic-type-flags trtflags-3))
|
||||
(if (= (level-status *level* (-> s4-0 level)) 'active)
|
||||
(logior! (-> s4-0 flags) (traffic-type-flags trtflags-3))
|
||||
)
|
||||
)
|
||||
(+! s5-0 1)
|
||||
@@ -182,7 +182,11 @@
|
||||
(let ((s0-0 (-> obj traffic-engine object-type-info-array s1-0)))
|
||||
(let ((v1-21 (+ (-> s0-0 active-count) (-> s0-0 inactive-count))))
|
||||
(b!
|
||||
(not (and (logtest? (-> s0-0 flags) 2) (logtest? (-> s0-0 flags) 8) (< v1-21 (-> s0-0 want-count))))
|
||||
(not (and (logtest? (-> s0-0 flags) (traffic-type-flags trtflags-1))
|
||||
(logtest? (-> s0-0 flags) (traffic-type-flags trtflags-3))
|
||||
(< v1-21 (-> s0-0 want-count))
|
||||
)
|
||||
)
|
||||
cfg-29
|
||||
:delay (nop!)
|
||||
)
|
||||
@@ -385,7 +389,7 @@
|
||||
|
||||
;; definition for method 20 of type traffic-manager
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod traffic-manager-method-20 traffic-manager ((obj traffic-manager))
|
||||
(defmethod reset-and-init traffic-manager ((obj traffic-manager))
|
||||
(set! (-> obj traffic-engine) *traffic-engine*)
|
||||
(reset-and-init-from-manager (-> obj traffic-engine) obj)
|
||||
(restore-city-speeches)
|
||||
@@ -416,54 +420,54 @@
|
||||
|
||||
;; definition for method 21 of type traffic-manager
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod traffic-manager-method-21 traffic-manager ((obj traffic-manager))
|
||||
(let ((s5-0 (new 'stack-no-clear 'array 'int8 21)))
|
||||
(set! (-> s5-0 11) 8)
|
||||
(set! (-> s5-0 12) 8)
|
||||
(set! (-> s5-0 13) 8)
|
||||
(set! (-> s5-0 14) 7)
|
||||
(set! (-> s5-0 15) 7)
|
||||
(set! (-> s5-0 16) 7)
|
||||
(set! (-> s5-0 18) 4)
|
||||
(set! (-> s5-0 19) 3)
|
||||
(set! (-> s5-0 20) 0)
|
||||
(set! (-> s5-0 0) 15)
|
||||
(set! (-> s5-0 1) 15)
|
||||
(set! (-> s5-0 2) 14)
|
||||
(set! (-> s5-0 3) 1)
|
||||
(set! (-> s5-0 4) 1)
|
||||
(set! (-> s5-0 6) 9)
|
||||
(set! (-> s5-0 7) 0)
|
||||
(set! (-> s5-0 8) 14)
|
||||
(set! (-> s5-0 9) 14)
|
||||
(set! (-> s5-0 10) 14)
|
||||
(set! (-> obj fast-spawn) (the-as basic *traffic-fast-spawn*))
|
||||
(traffic-manager-method-20 obj)
|
||||
(defmethod init-params traffic-manager ((obj traffic-manager))
|
||||
(let ((traffic-want-counts (new 'stack-no-clear 'array 'int8 21)))
|
||||
(set! (-> traffic-want-counts 11) 8)
|
||||
(set! (-> traffic-want-counts 12) 8)
|
||||
(set! (-> traffic-want-counts 13) 8)
|
||||
(set! (-> traffic-want-counts 14) 7)
|
||||
(set! (-> traffic-want-counts 15) 7)
|
||||
(set! (-> traffic-want-counts 16) 7)
|
||||
(set! (-> traffic-want-counts 18) 4)
|
||||
(set! (-> traffic-want-counts 19) 3)
|
||||
(set! (-> traffic-want-counts 20) 0)
|
||||
(set! (-> traffic-want-counts 0) 15)
|
||||
(set! (-> traffic-want-counts 1) 15)
|
||||
(set! (-> traffic-want-counts 2) 14)
|
||||
(set! (-> traffic-want-counts 3) 1)
|
||||
(set! (-> traffic-want-counts 4) 1)
|
||||
(set! (-> traffic-want-counts 6) 9)
|
||||
(set! (-> traffic-want-counts 7) 0)
|
||||
(set! (-> traffic-want-counts 8) 14)
|
||||
(set! (-> traffic-want-counts 9) 14)
|
||||
(set! (-> traffic-want-counts 10) 14)
|
||||
(set! (-> obj fast-spawn) *traffic-fast-spawn*)
|
||||
(reset-and-init obj)
|
||||
(let ((v1-20 (-> obj traffic-engine)))
|
||||
(dotimes (a0-2 21)
|
||||
(set! (-> v1-20 object-type-info-array a0-2 want-count) (-> s5-0 a0-2))
|
||||
(set! (-> v1-20 object-type-info-array a0-2 want-count) (-> traffic-want-counts a0-2))
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((s5-1 (-> obj spawn-params)))
|
||||
(set! (-> s5-1 object-type) (traffic-type crimson-guard-1))
|
||||
(set! (-> s5-1 behavior) (the-as uint 1))
|
||||
(set! (-> s5-1 id) (the-as uint 0))
|
||||
(set! (-> s5-1 nav-mesh) #f)
|
||||
(set! (-> s5-1 nav-branch) #f)
|
||||
(set! (-> s5-1 proc) #f)
|
||||
(set! (-> s5-1 handle) (the-as handle #f))
|
||||
(set! (-> s5-1 user-data) (the-as uint 0))
|
||||
(set! (-> s5-1 flags) (the-as uint 2))
|
||||
(set! (-> s5-1 guard-type) (the-as uint 7))
|
||||
(vector-reset! (-> s5-1 velocity))
|
||||
(vector-reset! (-> s5-1 position))
|
||||
(let ((params (-> obj spawn-params)))
|
||||
(set! (-> params object-type) (traffic-type crimson-guard-1))
|
||||
(set! (-> params behavior) (the-as uint 1))
|
||||
(set! (-> params id) (the-as uint 0))
|
||||
(set! (-> params nav-mesh) #f)
|
||||
(set! (-> params nav-branch) #f)
|
||||
(set! (-> params proc) #f)
|
||||
(set! (-> params handle) (the-as handle #f))
|
||||
(set! (-> params user-data) (the-as uint 0))
|
||||
(set! (-> params flags) (the-as uint 2))
|
||||
(set! (-> params guard-type) (the-as uint 7))
|
||||
(vector-reset! (-> params velocity))
|
||||
(vector-reset! (-> params position))
|
||||
(forward-up-nopitch->quaternion
|
||||
(-> s5-1 rotation)
|
||||
(-> params rotation)
|
||||
(new 'static 'vector :z 1.0 :w 1.0)
|
||||
(new 'static 'vector :y 1.0 :w 1.0)
|
||||
)
|
||||
(set! (-> s5-1 id) (the-as uint 1))
|
||||
(set! (-> params id) (the-as uint 1))
|
||||
)
|
||||
(set! (-> obj dark-guard-ratio) (if (task-node-closed? (game-task-node tomb-boss-resolution))
|
||||
5
|
||||
@@ -510,7 +514,7 @@
|
||||
)
|
||||
(('set-alert-duration)
|
||||
(let ((a1-8 (-> arg3 param 0)))
|
||||
(set-alert-duration (-> self traffic-engine) (the-as int a1-8))
|
||||
(set-alert-duration (-> self traffic-engine) (the-as time-frame a1-8))
|
||||
)
|
||||
)
|
||||
(('deactivate-all)
|
||||
@@ -647,12 +651,12 @@
|
||||
)
|
||||
(('level-loaded)
|
||||
(let ((a1-29 (-> arg3 param 0)))
|
||||
(level-loaded (-> self traffic-engine) (the-as level a1-29))
|
||||
(level-link (-> self traffic-engine) (the-as level a1-29))
|
||||
)
|
||||
)
|
||||
(('level-killed)
|
||||
(let ((s5-1 (the-as object (-> arg3 param 0))))
|
||||
(level-killed (-> self traffic-engine) (the-as level s5-1))
|
||||
(level-unlink (-> self traffic-engine) (the-as level s5-1))
|
||||
(format #t "traffic-manager : level killed ~S~%" (-> (the-as level s5-1) nickname))
|
||||
)
|
||||
)
|
||||
@@ -666,11 +670,11 @@
|
||||
(('kill-all)
|
||||
(format #t "traffic-manager::kill-all~%")
|
||||
(deactivate-all (-> self traffic-engine))
|
||||
(kill-all self)
|
||||
(kill-all-inactive self)
|
||||
)
|
||||
(('spawn-all)
|
||||
(format #t "traffic-manager::spawn-all~%")
|
||||
(set! (-> self fast-spawn) (the-as basic #t))
|
||||
(set! (-> self fast-spawn) #t)
|
||||
(spawn-all self)
|
||||
)
|
||||
(('set-density-factor)
|
||||
@@ -707,7 +711,7 @@
|
||||
(defbehavior traffic-manager-init-by-other traffic-manager ()
|
||||
(stack-size-set! (-> self main-thread) 128)
|
||||
(ctywide-entity-hack)
|
||||
(traffic-manager-method-21 self)
|
||||
(init-params self)
|
||||
(add-setting! 'task-mask 'clear 0 #x4000)
|
||||
(set! (-> self event-hook) traffic-manager-event-handler)
|
||||
(rigid-body-queue-manager-spawn *traffic-rigid-body-queue* self)
|
||||
@@ -753,7 +757,7 @@
|
||||
:event traffic-manager-event-handler
|
||||
:code (the-as (function none :behavior traffic-manager) sleep-code)
|
||||
:post (behavior ()
|
||||
(traffic-manager-method-16 self)
|
||||
(update self)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
@@ -812,54 +816,54 @@
|
||||
(when gp-0
|
||||
(case (-> arg0 name)
|
||||
(('lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 0 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 1 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 2 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 3 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 4 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 0 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 1 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 2 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 3 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 4 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 5 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 6 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 6 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 7 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 8 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 9 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 10 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 11 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 12 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 13 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 14 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 15 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 16 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 11 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 12 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 13 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 14 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 15 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 16 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 17 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 18 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 19 level) (the-as level 'lwidea))
|
||||
(set! (-> gp-0 object-type-info-array 18 level) 'lwidea)
|
||||
(set! (-> gp-0 object-type-info-array 19 level) 'lwidea)
|
||||
(logior! (-> gp-0 alert-state flags) (traffic-alert-flag target-jak))
|
||||
(set! *traffic-alert-level-force* #f)
|
||||
)
|
||||
(('lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 0 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 0 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 1 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 2 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 3 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 4 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 3 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 4 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 5 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 6 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 6 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 7 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 8 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 9 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 10 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 11 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 8 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 9 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 10 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 11 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 12 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 13 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 14 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 14 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 15 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 16 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 17 level) #f)
|
||||
(set! (-> gp-0 object-type-info-array 18 level) (the-as level 'lwideb))
|
||||
(set! (-> gp-0 object-type-info-array 18 level) 'lwideb)
|
||||
(set! (-> gp-0 object-type-info-array 19 level) #f)
|
||||
(logclear! (-> gp-0 alert-state flags) (traffic-alert-flag target-jak))
|
||||
(set-alert-level gp-0 3)
|
||||
(logior! (-> gp-0 alert-state flags) (traffic-alert-flag guard-multi-focus))
|
||||
(set-alert-duration gp-0 #x6c258c00)
|
||||
(set-alert-duration gp-0 (seconds 6048000))
|
||||
(set! *traffic-alert-level-force* #t)
|
||||
)
|
||||
)
|
||||
@@ -872,7 +876,7 @@
|
||||
;; definition for function lwide-deactivate
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defun lwide-deactivate ()
|
||||
(set! *lwide-entity* (the-as object #f))
|
||||
(set! *lwide-entity* #f)
|
||||
(send-event *traffic-manager* 'kill-all)
|
||||
0
|
||||
(none)
|
||||
@@ -881,7 +885,7 @@
|
||||
;; definition for function ctywide-deactivate
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defun ctywide-deactivate ()
|
||||
(set! *ctywide-entity* (the-as object #f))
|
||||
(set! *ctywide-entity* #f)
|
||||
(set! *traffic-engine* #f)
|
||||
(set! *trail-graph* #f)
|
||||
(init *city-dead-pool* 'loading-level 0)
|
||||
@@ -902,7 +906,7 @@
|
||||
)
|
||||
)
|
||||
(else
|
||||
(process-entity-set! pp (the-as entity-actor *ctywide-entity*))
|
||||
(process-entity-set! pp *ctywide-entity*)
|
||||
)
|
||||
)
|
||||
0
|
||||
@@ -914,7 +918,7 @@
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defun lwide-entity-hack ()
|
||||
(with-pp
|
||||
(process-entity-set! pp (the-as entity-actor *lwide-entity*))
|
||||
(process-entity-set! pp *lwide-entity*)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
+1
-1
@@ -1059,7 +1059,7 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(process-entity-set! self (the-as entity-actor a1-2))
|
||||
(process-entity-set! self a1-2)
|
||||
)
|
||||
(set-setting! 'allow-pause #f 0 0)
|
||||
(set-setting! 'allow-progress #f 0 0)
|
||||
|
||||
+1
-1
@@ -201,7 +201,7 @@
|
||||
;; INFO: Used lq/sq
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defbehavior canyon-lightning-thingy-init-by-other canyon-lightning-thingy ((arg0 vector) (arg1 vector))
|
||||
(process-entity-set! self (the-as entity-actor #f))
|
||||
(process-entity-set! self (the-as entity #f))
|
||||
(set! (-> self root) (new 'process 'trsqv))
|
||||
(set! (-> self root trans quad) (-> arg0 quad))
|
||||
(let ((a2-1 (vector-normalize-copy! (new 'stack-no-clear 'vector) arg1 1.0)))
|
||||
|
||||
+1
-1
@@ -955,7 +955,7 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(process-entity-set! self (the-as entity-actor a1-2))
|
||||
(process-entity-set! self a1-2)
|
||||
)
|
||||
(set-setting! 'allow-pause #f 0 0)
|
||||
(set-setting! 'allow-progress #f 0 0)
|
||||
|
||||
Reference in New Issue
Block a user