101 lines
3.0 KiB
101 lines
3.0 KiB
/* |
|
world.h - shared world routines |
|
Copyright (C) 2009 Uncle Mike |
|
|
|
This program is free software: you can redistribute it and/or modify |
|
it under the terms of the GNU General Public License as published by |
|
the Free Software Foundation, either version 3 of the License, or |
|
(at your option) any later version. |
|
|
|
This program is distributed in the hope that it will be useful, |
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
GNU General Public License for more details. |
|
*/ |
|
|
|
#ifndef WORLD_H |
|
#define WORLD_H |
|
|
|
#define MOVE_NORMAL 0 // normal trace |
|
#define MOVE_NOMONSTERS 1 // ignore monsters (edicts with flags (FL_MONSTER|FL_FAKECLIENT|FL_CLIENT) set) |
|
#define MOVE_MISSILE 2 // extra size for monsters |
|
|
|
#define CONTENTS_NONE 0 // no custom contents specified |
|
|
|
/* |
|
=============================================================================== |
|
|
|
ENTITY AREA CHECKING |
|
|
|
=============================================================================== |
|
*/ |
|
#define MAX_TOTAL_ENT_LEAFS 128 |
|
#define AREA_NODES 32 |
|
#define AREA_DEPTH 4 |
|
|
|
#include "lightstyle.h" |
|
|
|
extern const char *et_name[]; |
|
|
|
// linked list |
|
void InsertLinkBefore( link_t *l, link_t *before ); |
|
void RemoveLink( link_t *l ); |
|
void ClearLink( link_t *l ); |
|
|
|
// 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 ); |
|
void World_TransformAABB( matrix4x4 transform, const vec3_t mins, const vec3_t maxs, vec3_t outmins, vec3_t outmaxs ); |
|
trace_t World_CombineTraces( trace_t *cliptrace, trace_t *trace, edict_t *touch ); |
|
int BoxOnPlaneSide( const vec3_t emins, const vec3_t emaxs, const mplane_t *p ); |
|
int RankForContents( int contents ); |
|
|
|
#define BOX_ON_PLANE_SIDE( emins, emaxs, p ) \ |
|
((( p )->type < 3 ) ? \ |
|
( \ |
|
((p)->dist <= (emins)[(p)->type]) ? \ |
|
1 \ |
|
: \ |
|
( \ |
|
((p)->dist >= (emaxs)[(p)->type]) ? \ |
|
2 \ |
|
: \ |
|
3 \ |
|
) \ |
|
) \ |
|
: \ |
|
BoxOnPlaneSide(( emins ), ( emaxs ), ( p ))) |
|
|
|
|
|
#define check_angles( x ) ( (int)x == 90 || (int)x == 180 || (int)x == 270 || (int)x == -90 || (int)x == -180 || (int)x == -270 ) |
|
|
|
/* |
|
=============================================================================== |
|
|
|
EVENTS QUEUE (hl1 events code) |
|
|
|
=============================================================================== |
|
*/ |
|
#include "event_api.h" |
|
#include "event_args.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; |
|
|
|
#endif//WORLD_H
|
|
|