jak-project/goal_src/jak2/examples/collide-hash-debug.gc

89 lines
3.2 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
(define *collide-hash-test-origin* (new 'global 'vector))
(define *collide-hash-test-size* (new 'global 'vector))
(set-vector! *collide-hash-test-size* (meters 2.0) (meters 2.0) (meters 2.0) 0.0)
(defun test-collide-hash ((iter int))
;; create a collide query
(let ((query (new 'stack 'collide-query)))
;; set the min/max
(vector+! (-> query bbox max) *collide-hash-test-origin* *collide-hash-test-size*)
(vector-! (-> query bbox min) *collide-hash-test-origin* *collide-hash-test-size*)
(add-debug-box #t (bucket-id debug2) (-> query bbox min) (-> query bbox max) (new 'static 'rgba :g #xff :b #xff :a #x80))
(set! (-> query collide-with) (collide-spec backgnd))
(set! (-> query ignore-process0) #f)
(set! (-> query ignore-process1) #f)
(set! (-> query ignore-pat) (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1))
;; set integer box
(dotimes (i 4)
(set! (-> query bbox4w min data i) (the int (-> query bbox min data i)))
(set! (-> query bbox4w max data i) (the int (-> query bbox max data i)))
)
;; first is fill-collide-list-from-box
;; sec is collide-list-fill-bg-using-box
(set! (-> *collide-list* num-items) 0)
(dotimes (i (-> *level* length))
(let ((lev (-> *level* level i)))
(when (= (-> lev status) 'active)
(fill-collide-list-from-box (-> lev bsp collide-hash) 0 *collide-list* query)
)
)
)
(format *stdcon* "got ~d things in the list~%" (-> *collide-list* num-items))
(dotimes (i (-> *collide-list* num-items))
(let ((item (-> *collide-list* items i)))
(cond
((= (-> item mesh type) instance-tie)
(add-debug-sphere
#t
(bucket-id debug2)
(-> (the instance-tie (-> item mesh)) bsphere)
(-> (the instance-tie (-> item mesh)) bsphere w)
(new 'static 'rgba :r #xff :g #xff :a #x80))
)
((= (-> item mesh type) collide-hash-fragment)
(add-debug-sphere
#t
(bucket-id debug2)
(-> (the collide-hash-fragment (-> item mesh)) bsphere)
(-> (the collide-hash-fragment (-> item mesh)) bsphere w)
(new 'static 'rgba :r #xff :b #xff :a #x80))
)
)
)
(format *stdcon* "[~d] ~A~%" i (-> *collide-list* items i mesh))
)
)
)
(defun move-box-to-cam ()
(vector-copy! *collide-hash-test-origin* (target-cam-pos))
)
(defun launch-collide-hash-debug-process ()
(set! *stats-profile-bars* #f)
(let ((proc (get-process *nk-dead-pool* process 1024)))
(activate proc *entity-pool* "test" *kernel-dram-stack*)
(run-next-time-in-process proc (lambda ()
(let ((iter 0))
(while #t
(test-collide-hash iter)
(suspend)
(+! iter 1)
)
)
)
)
proc)
)