Remove non-progs data from edict_t.

All data that is irrelevant to the progs engine itself has been removed
from edict_t and moved into the sv_progs code.
This commit is contained in:
Bill Currie 2010-12-09 14:27:36 +09:00
parent 9deb178e21
commit 3ae2ef8d11
10 changed files with 117 additions and 88 deletions

View file

@ -32,7 +32,10 @@
#ifndef __sv_progs_h
#define __sv_progs_h
#include "QF/link.h"
#include "QF/progs.h"
#include "qw/protocol.h"
#include "sv_pr_cmds.h"
typedef struct {
@ -174,7 +177,7 @@ typedef struct
extern sv_fields_t sv_fields;
extern struct progs_s sv_pr_state;
extern progs_t sv_pr_state;
#define PR_RANGE_ID 0x0000
#define PR_RANGE_ID_MAX 82
@ -194,7 +197,20 @@ extern struct progs_s sv_pr_state;
#define SVvector(e,f) SVFIELD (e, f, vector)
#define SVinteger(e,f) SVFIELD (e, f, integer)
#define PROGHEADER_CRC 54730
typedef struct edict_leaf_s {
struct edict_leaf_s *next;
struct mleaf_s *leaf;
} edict_leaf_t;
typedef struct sv_data_s {
edict_t *edict;
link_t area; ///< linked to a division node or leaf
edict_leaf_t *leafs;
entity_state_t state;
} sv_data_t;
#define SVdata(e) ((sv_data_t *) ((e)->edata))
#define EDICT_FROM_AREA(l) (STRUCT_FROM_LINK(l,sv_data_t,area)->edict)
static inline void
sv_pr_touch (edict_t *self, edict_t *other)