mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-03-21 01:41:10 +00:00
some work on getting pvs compiling
This commit is contained in:
parent
7694ae29cc
commit
0ba00652a1
3 changed files with 64 additions and 6 deletions
|
@ -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];
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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++;
|
||||
|
|
Loading…
Reference in a new issue