summaryrefslogtreecommitdiff
path: root/src/game/world/trace.h
blob: d04ed6b1418b70a7dd34d66c21372f387e91dd33 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#pragma once

#include "bsp.h"
#include "../../util/aabb.h"

// quake uses 1 / 32
const F32 BSP_TRACE_EPSILON = 1.f / 64.f;
const F32 BSP_EDGE_TOLERANCE = 1.f / 16.f;

struct BSP_TRACE {
  VEC3 in_start;
  VEC3 in_end;

  U8 hit;
  F32 frac;
  VEC3 point;
  VEC3 normal;
  U32 propid;
  I32 leafid;
  U32 faceid;
  U8 startsolid;
};

extern U8 bsp_trace( BSP_TRACE* trace, BSP* bsp );
extern U8 bsp_trace( BSP_TRACE* trace, BSP* bsp, VEC3 start, VEC3 end );

extern U8 bsp_trace( BSP_TRACE* trace, BSP* bsp, AABB aabb );
extern U8 bsp_trace( BSP_TRACE* trace, BSP* bsp, AABB aabb, VEC3 start, VEC3 end );

extern U8 bsp_trace( BSP_TRACE* trace );
extern U8 bsp_trace( BSP_TRACE* trace, VEC3 start, VEC3 end );