[nq] Add a cvar to control player shadows

cl_player_shadows defaults to 1 thus giving a nice (for the resolution)
shadow of the player (and disables the weapon shadow).
This commit is contained in:
Bill Currie 2023-08-05 19:58:37 +09:00
parent 6892dc1422
commit 5a6d3ec3c9
3 changed files with 20 additions and 4 deletions

View file

@ -202,6 +202,7 @@ extern int cl_color;
extern int cl_shownet;
extern int cl_nolerp;
extern int cl_player_shadows;
extern char *cl_name;
extern int cl_writecfg;

View file

@ -265,7 +265,7 @@ CL_RelinkEntities (void)
animation->pose1 = animation->pose2 = -1;
CL_TransformEntity (ent, new->scale / 16.0, new->angles,
new->origin);
if (i != cl.viewentity || chase_active) {
if (i != cl.viewentity || chase_active || cl_player_shadows) {
R_AddEfrags (&cl_world.scene->worldmodel->brush, ent);
}
*old_origin = new->origin;
@ -296,13 +296,15 @@ CL_RelinkEntities (void)
}
CL_TransformEntity (ent, new->scale / 16.0, angles, origin);
}
if (i != cl.viewentity || chase_active) {
if (i != cl.viewentity || chase_active || cl_player_shadows) {
vec4f_t org = Transform_GetWorldPosition (transform);
if (!VectorCompare (org, *old_origin)) {//FIXME
R_AddEfrags (&cl_world.scene->worldmodel->brush, ent);
}
}
}
renderer->onlyshadows = (cl_player_shadows && i == cl.viewentity
&& !chase_active);
// rotate binary objects locally
if (model_flags & EF_ROTATE) {

View file

@ -123,6 +123,15 @@ static cvar_t cl_nolerp_cvar = {
.flags = CVAR_NONE,
.value = { .type = &cexpr_int, .value = &cl_nolerp },
};
int cl_player_shadows;
static cvar_t cl_player_shadows_cvar = {
.name = "cl_player_shadows",
.description =
"Show player shadows instead of weapon shadows",
.default_value = "1",
.flags = CVAR_ARCHIVE,
.value = { .type = &cexpr_int, .value = &cl_player_shadows },
};
static int r_ambient;
static cvar_t r_ambient_cvar = {
@ -257,6 +266,7 @@ CL_InitCvars (void)
Cvar_Register (&cl_writecfg_cvar, 0, 0);
Cvar_Register (&cl_shownet_cvar, 0, 0);
Cvar_Register (&cl_nolerp_cvar, 0, 0);
Cvar_Register (&cl_player_shadows_cvar, 0, 0);
//FIXME not hooked up (don't do anything), but should not work in
//multi-player
@ -280,9 +290,12 @@ CL_ClearState (void)
r_data->lightstyle = cl.lightstyle;
cl.viewstate.weapon_entity = Scene_CreateEntity (cl_world.scene);
renderer_t *renderer = Ent_GetComponent (cl.viewstate.weapon_entity.id, scene_renderer, cl_world.scene->reg);
renderer->depthhack = 1;
CL_Init_Entity (cl.viewstate.weapon_entity);
renderer_t *renderer = Ent_GetComponent (cl.viewstate.weapon_entity.id,
scene_renderer,
cl_world.scene->reg);
renderer->depthhack = 1;
renderer->noshadows = cl_player_shadows;
r_data->view_model = cl.viewstate.weapon_entity;
CL_TEnts_Precache ();