Files
Cesarus85--mjolnir-vr/source/physics/collision_bsp_definitions.h
T
2026-07-13 14:34:27 +01:00

88 lines
1.6 KiB
C

/*
COLLISION_BSP_DEFINITIONS.H
header included in hcex build.
*/
#ifndef __COLLISION_BSP_DEFINITIONS_H
#define __COLLISION_BSP_DEFINITIONS_H
#pragma once
/* ---------- headers */
#include "bsp2d.h"
#include "bsp3d.h"
#include "math/real_math.h"
/* ---------- constants */
enum
{
MAXIMUM_BSP2D_REFERENCES_PER_COLLISION_BSP = 131072,
MAXIMUM_SURFACES_PER_COLLISION_BSP = 131072,
MAXIMUM_EDGES_PER_COLLISION_BSP = 262144,
MAXIMUM_VERTICES_PER_COLLISION_BSP = 131072,
MAXIMUM_VERTICES_PER_COLLISION_SURFACE = 8,
MAXIMUM_EDGES_PER_COLLISION_SURFACE = 8,
};
/* ---------- macros */
/* ---------- structures */
struct collision_surface
{
long plane_designator;
long first_edge_index;
byte flags;
byte breakable_surface_index;
short material_index;
};
struct collision_edge
{
long vertex_indices[2];
long edge_indices[2];
long surface_indices[2];
};
struct collision_vertex
{
real_point3d point;
long first_edge_index;
};
struct collision_bsp
{
struct bsp3d bsp3d;
struct tag_block leaves;
struct tag_block bsp2d_references;
struct bsp2d bsp2d;
struct tag_block surfaces; // collision_surface
struct tag_block edges; // collision_edge
struct tag_block vertices; // collision_vertex
};
struct collision_node
{
char name[32];
short region_index;
short parent_node_index;
short next_sibling_node_index;
short first_child_node_index;
long unused[2];
word pad;
short runtime_damage_part;
struct tag_block bsps;
};
/* ---------- prototypes/COLLISION_BSP_DEFINITIONS.C */
/* ---------- globals */
/* ---------- public code */
#endif // __COLLISION_BSP_DEFINITIONS_H