[renderer] Support multiple entity queues

While there's currently only the one still, this will allow the entities
to be multiply queued for multi-pass rendering (eg, shadows). As the
avoidance of putting an entity in the same queue more than once relies
on the entity id, all entities now come from the scene (which is stored
in cl_world in the client code for nq and qw), thus the extensive
changes in the clients.
This commit is contained in:
Bill Currie 2022-03-05 01:48:10 +09:00
parent 6573acbc74
commit d69355f521
53 changed files with 741 additions and 618 deletions

View file

@ -222,14 +222,10 @@ typedef struct client_state_s {
char model_name[MAX_MODELS][MAX_QPATH];
char sound_name[MAX_SOUNDS][MAX_QPATH];
struct model_s *model_precache[MAX_MODELS];
struct sfx_s *sound_precache[MAX_SOUNDS];
int nummodels;
int numsounds;
struct plitem_s *edicts;
struct plitem_s *worldspawn;
char levelname[40]; // for display on solo scoreboard
int spectator;
int playernum;
@ -247,9 +243,7 @@ typedef struct client_state_s {
int fbskins;
// refresh related state
struct model_s *worldmodel; // cl_entitites[0].model
int num_entities; // held in cl_entities array
entity_t viewent; // the weapon model
int cdtrack; // cd audio
@ -288,10 +282,7 @@ extern struct cvar_s *cl_fb_players;
extern client_state_t cl;
typedef struct entitystateset_s DARRAY_TYPE (struct entity_state_s)
entitystateset_t;
extern entitystateset_t cl_static_entities;
extern entity_t cl_entities[512];
extern entity_t *cl_entities[512];
extern byte cl_entity_valid[2][512];
extern qboolean nomaster;