some work on getting pvs compiling

This commit is contained in:
Bill Currie 2012-07-01 09:00:01 +09:00
parent 7694ae29cc
commit 0ba00652a1
3 changed files with 64 additions and 6 deletions

View file

@ -57,6 +57,16 @@ typedef struct frame_s {
packet_entities_t entities;
} frame_t;
typedef struct qtv_leaf_s {
struct qtv_leaf_s *next;
int num;
} qtv_leaf_t;
typedef struct {
entity_state_t e;
qtv_leaf_t *leafs;
} qtv_entity_t;
#define MAX_SV_PLAYERS 32
#define MAX_SV_ENTITIES 512
#define MAX_SIGNON_BUFFERS 8
@ -96,7 +106,7 @@ typedef struct server_s {
int validsequence;
frame_t frames[UPDATE_BACKUP];
entity_state_t entities[MAX_SV_ENTITIES];
qtv_entity_t entities[MAX_SV_ENTITIES];
byte ent_valid[MAX_SV_ENTITIES];
entity_state_t baselines[MAX_SV_ENTITIES];
player_t players[MAX_SV_PLAYERS];

View file

@ -985,7 +985,7 @@ add_to_fat_pvs (vec3_t org, mnode_t *node, server_t *sv)
byte *pvs;
int i;
float d;
mplane_t *plane;
plane_t *plane;
while (1) {
// if this is a leaf, accumulate the pvs bits

View file

@ -61,6 +61,54 @@
#include "qtv/include/qtv.h"
#include "qtv/include/server.h"
#define QTV_LEAFS 32
typedef struct qtv_leaf_bucket_s {
struct qtv_leaf_bucket_s *next;
qtv_leaf_t qtv_leafs[QTV_LEAFS];
} qtv_leaf_bucket_t;
static qtv_leaf_bucket_t *qtv_leaf_buckets;
static qtv_leaf_bucket_t **qtv_leaf_bucket_tail = &qtv_leaf_buckets;
static qtv_leaf_t *free_qtv_leaf_list;
static qtv_leaf_t *
alloc_qtv_leaf (void)
{
qtv_leaf_bucket_t *bucket;
qtv_leaf_t *leaf;
int i;
if ((leaf = free_qtv_leaf_list)) {
free_qtv_leaf_list = leaf->next;
leaf->next = 0;
return leaf;
}
bucket = malloc (sizeof (qtv_leaf_bucket_t));
bucket->next = 0;
*qtv_leaf_bucket_tail = bucket;
qtv_leaf_bucket_tail = &bucket->next;
for (leaf = bucket->qtv_leafs, i = 0; i < QTV_LEAFS - 1; i++, leaf++)
leaf->next = leaf + 1;
leaf->next = 0;
free_qtv_leaf_list = bucket->qtv_leafs;
return alloc_qtv_leaf ();
}
static void
free_qtv_leafs (qtv_leaf_t **leafs)
{
qtv_leaf_t **l;
for (l = leafs; *l; l = &(*l)->next)
;
*l = free_qtv_leaf_list;
free_qtv_leaf_list = *leafs;
*leafs = 0;
}
static void
sv_serverdata (server_t *sv, qmsg_t *msg)
{
@ -430,7 +478,7 @@ sv_packetentities (server_t *sv, qmsg_t *msg, int delta)
}
newp->entities[newindex] = oldp->entities[oldindex];
num = newp->entities[newindex].number;
sv->entities[num] = newp->entities[newindex];
sv->entities[num].e = newp->entities[newindex];
sv->ent_valid[num] = 1;
newindex++;
oldindex++;
@ -457,7 +505,7 @@ sv_packetentities (server_t *sv, qmsg_t *msg, int delta)
}
newp->entities[newindex] = oldp->entities[oldindex];
num = newp->entities[newindex].number;
sv->entities[num] = newp->entities[newindex];
sv->entities[num].e = newp->entities[newindex];
sv->ent_valid[num] = 1;
newindex++;
oldindex++;
@ -484,7 +532,7 @@ sv_packetentities (server_t *sv, qmsg_t *msg, int delta)
}
newp->entities[newindex] = sv->baselines[newnum];
sv_parse_delta (msg, word, &newp->entities[newindex]);
sv->entities[newnum] = newp->entities[newindex];
sv->entities[newnum].e = newp->entities[newindex];
newindex++;
continue;
}
@ -500,7 +548,7 @@ sv_packetentities (server_t *sv, qmsg_t *msg, int delta)
}
newp->entities[newindex] = oldp->entities[oldindex];
sv_parse_delta (msg, word, &newp->entities[newindex]);
sv->entities[newnum] = newp->entities[newindex];
sv->entities[newnum].e = newp->entities[newindex];
sv->ent_valid[newnum] = 1;
newindex++;
oldindex++;