;;-*-Lisp-*-
(in-package goal)

;; name: collide-h.gc
;; name in dgo: collide-h
;; dgos: GAME

;; DECOMP BEGINS

(deftype collide-query (structure)
  "Very general collision-query structure. The meaning is different depending on where it used.
This has both inputs from the user, and collision results."
  ((best-other-tri    collide-tri-result     :inline)
   (best-my-tri       collide-tri-result     :inline :overlay-at best-other-tri)
   (ignore-processes  process-tree           2)
   (ignore-process0   process-tree                   :overlay-at (-> ignore-processes 0))
   (ignore-process1   process-tree                   :overlay-at (-> ignore-processes 1))
   (ignore-pat        pat-surface)
   (ignore-pat-s32    int32                          :overlay-at ignore-pat)
   (collide-with      collide-spec)
   (collide-with-s32  int32                          :overlay-at collide-with)
   (overlay-params    uint32                 3       :offset 112)
   (bbox              bounding-box           :inline)
   (bbox4w            bounding-box4w         :inline)
   (bsphere           sphere                 :inline)
   (start-pos         vector                 :inline)
   (move-dist         vector                 :inline)
   (rlength           vector                 :inline)
   (exit-planes       plane                  2 :inline)
   (radius            float                          :overlay-at (-> exit-planes 0 data 3))
   (inv-mat           matrix                 :inline :offset 288)
   (spheres           (inline-array sphere)          :overlay-at (-> overlay-params 0))
   (num-spheres       uint32                         :overlay-at (-> overlay-params 1))
   (solid-only        symbol                         :overlay-at (-> overlay-params 2))
   (best-dist         float                          :overlay-at spheres)
   (best-other-prim   collide-shape-prim             :overlay-at num-spheres)
   (best-my-prim      collide-shape-prim             :overlay-at solid-only)
   (move-vec          vector                 :inline :overlay-at move-dist)
   (best-u            float                          :overlay-at best-dist)
   (action-mask       collide-action                 :offset 352)
   (local-box4w       bounding-box4w         :inline)
   (search-box        bounding-box4w         :inline)
   (search-vector     vector4w               :inline)
   (instance-mat      matrix                 :inline)
   (instance-ptr      basic)
   (x-addr            uint32)
   (x-step            uint32)
   (y-addr            uint32)
   (y-step            uint32)
   (z-addr            uint32)
   (z-step            uint32)
   )
  )


(define *collide-test-flag* #f)
