mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-23 04:42:32 +00:00
[qw] Use a dynamic array to track static entities
This takes care of another fixme in the cleanup of entity_t.
This commit is contained in:
parent
c05a15dec5
commit
51e8694195
5 changed files with 10 additions and 9 deletions
|
@ -69,6 +69,8 @@
|
|||
ele_type *a; \
|
||||
}
|
||||
|
||||
#define DARRAY_STATIC_INIT(g) { .grow = g }
|
||||
|
||||
/** Allocate a fixed-size array using the given allocator
|
||||
|
||||
The allocated array is initilized to be ungrowable, and with both size
|
||||
|
|
|
@ -124,7 +124,6 @@ typedef struct renderer_s {
|
|||
|
||||
typedef struct entity_s {
|
||||
struct entity_s *next;
|
||||
struct entity_s *unext; //FIXME this shouldn't be here. for qw demos
|
||||
|
||||
struct transform_s *transform;
|
||||
animation_t animation;
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#ifndef _CLIENT_H
|
||||
#define _CLIENT_H
|
||||
|
||||
#include "QF/entity.h"
|
||||
#include "QF/info.h"
|
||||
#include "QF/quakefs.h"
|
||||
#include "QF/vid.h"
|
||||
|
@ -341,7 +342,7 @@ extern struct cvar_s *cl_fb_players;
|
|||
|
||||
extern client_state_t cl;
|
||||
|
||||
extern entity_t *cl_static_entities;
|
||||
extern entityset_t cl_static_entities;
|
||||
extern entity_t cl_entities[512];
|
||||
extern byte cl_entity_valid[2][512];
|
||||
|
||||
|
|
|
@ -755,7 +755,9 @@ demo_start_recording (int track)
|
|||
SZ_Clear (&buf);
|
||||
}
|
||||
// spawnstatic
|
||||
for (ent = cl_static_entities; ent; ent = ent->unext) {
|
||||
for (size_t staticIndex = 0; staticIndex < cl_static_entities.size;
|
||||
staticIndex++) {
|
||||
ent = cl_static_entities.a[staticIndex];
|
||||
MSG_WriteByte (&buf, svc_spawnstatic);
|
||||
|
||||
for (j = 1; j < cl.nummodels; j++) {
|
||||
|
|
|
@ -169,8 +169,7 @@ int packet_latency[NET_TIMINGS];
|
|||
|
||||
extern cvar_t *hud_scoreboard_uid;
|
||||
|
||||
entity_t *cl_static_entities;
|
||||
static entity_t **cl_static_tail;
|
||||
entityset_t cl_static_entities = DARRAY_STATIC_INIT (32);
|
||||
|
||||
static void
|
||||
CL_LoadSky (void)
|
||||
|
@ -298,8 +297,7 @@ map_ent (const char *mapname)
|
|||
static void
|
||||
CL_NewMap (const char *mapname)
|
||||
{
|
||||
cl_static_entities = 0;
|
||||
cl_static_tail = &cl_static_entities;
|
||||
cl_static_entities.size = 0;
|
||||
r_funcs->R_NewMap (cl.worldmodel, cl.model_precache, cl.nummodels);
|
||||
Team_NewMap ();
|
||||
Con_NewMap ();
|
||||
|
@ -973,8 +971,7 @@ CL_ParseStatic (void)
|
|||
ent = r_funcs->R_AllocEntity ();
|
||||
CL_Init_Entity (ent);
|
||||
|
||||
*cl_static_tail = ent;
|
||||
cl_static_tail = &ent->unext;
|
||||
DARRAY_APPEND (&cl_static_entities, ent);
|
||||
|
||||
// copy it to the current state
|
||||
ent->renderer.model = cl.model_precache[es.modelindex];
|
||||
|
|
Loading…
Reference in a new issue