This repository has been archived on 2022-06-27. You can view files and clone it, but cannot push or open issues or pull requests.
Xash3DArchive/engine/common/com_world.h

116 lines
3.1 KiB
C
Raw Normal View History

2009-11-02 22:00:00 +01:00
//=======================================================================
// Copyright XashXT Group 2009 <20>
// com_world.h - shared world trace
//=======================================================================
#ifndef COM_WORLD_H
#define COM_WORLD_H
#define MOVE_NORMAL 0 // normal trace
#define MOVE_NOMONSTERS 1 // ignore monsters (edicts with flags (FL_MONSTER|FL_FAKECLIENT|FL_CLIENT) set)
2009-11-23 22:00:00 +01:00
#define MOVE_MISSILE 2 // extra size for monsters
#define MOVE_WORLDONLY 3 // clip only world
2009-11-02 22:00:00 +01:00
/*
===============================================================================
ENTITY AREA CHECKING
===============================================================================
*/
#define EDICT_FROM_AREA( l ) EDICT_NUM( l->entnum )
#define MAX_TOTAL_ENT_LEAFS 128
#define AREA_NODES 64
#define AREA_DEPTH 5
2009-11-26 22:00:00 +01:00
#define AREA_SOLID 1
#define AREA_TRIGGERS 2
2010-05-22 22:00:00 +02:00
#define AREA_CUSTOM 3 // custom contents - water, lava, fog etc
2009-11-26 22:00:00 +01:00
2009-11-02 22:00:00 +01:00
// link_t is only used for entity area links now
typedef struct link_s
{
struct link_s *prev;
struct link_s *next;
int entnum; // NUM_FOR_EDICT
} link_t;
typedef struct areanode_s
{
2010-04-01 22:00:00 +02:00
int axis; // -1 = leaf node
2009-11-02 22:00:00 +01:00
float dist;
struct areanode_s *children[2];
link_t trigger_edicts;
link_t solid_edicts;
2010-04-01 22:00:00 +02:00
link_t water_edicts; // func water
2009-11-02 22:00:00 +01:00
} areanode_t;
typedef struct area_s
{
const float *mins;
const float *maxs;
edict_t **list;
int count;
int maxcount;
int type;
} area_t;
typedef struct moveclip_s
{
vec3_t boxmins; // enclose the test object along entire move
vec3_t boxmaxs;
float *mins;
float *maxs; // size of the moving object
2009-11-23 22:00:00 +01:00
vec3_t mins2;
vec3_t maxs2;
2009-11-02 22:00:00 +01:00
const float *start;
const float *end;
trace_t trace;
edict_t *passedict;
2010-05-22 22:00:00 +02:00
int type; // move type
2009-11-23 22:00:00 +01:00
int flags; // trace flags
2009-11-02 22:00:00 +01:00
} moveclip_t;
2009-11-26 22:00:00 +01:00
extern const char *ed_name[];
2009-11-02 22:00:00 +01:00
// linked list
void InsertLinkBefore( link_t *l, link_t *before, int entnum );
void RemoveLink( link_t *l );
void ClearLink( link_t *l );
2009-11-26 22:00:00 +01:00
// trace common
void World_MoveBounds( const vec3_t start, vec3_t mins, vec3_t maxs, const vec3_t end, vec3_t boxmins, vec3_t boxmaxs );
2010-05-22 22:00:00 +02:00
trace_t World_CombineTraces( trace_t *cliptrace, trace_t *trace, edict_t *touch );
2009-11-26 22:00:00 +01:00
2010-06-28 22:00:00 +02:00
#include "bspfile.h"
2009-12-05 22:00:00 +01:00
#include "pm_shared.h"
2009-11-02 22:00:00 +01:00
2009-12-02 22:00:00 +01:00
/*
===============================================================================
2010-05-22 22:00:00 +02:00
EVENTS QUEUE (hl1 events code)
2009-12-02 22:00:00 +01:00
===============================================================================
*/
#include "event_api.h"
#define MAX_EVENT_QUEUE 64 // 16 simultaneous events, max
typedef struct event_info_s
{
word index; // 0 implies not in use
short packet_index; // Use data from state info for entity in delta_packet .
// -1 implies separate info based on event
// parameter signature
short entity_index; // The edict this event is associated with
float fire_time; // if non-zero, the time when the event should be fired
// ( fixed up on the client )
event_args_t args;
int flags; // reliable or not, etc. ( CLIENT ONLY )
} event_info_t;
typedef struct event_state_s
{
event_info_t ei[MAX_EVENT_QUEUE];
} event_state_t;
2009-11-02 22:00:00 +01:00
#endif//COM_WORLD_H