Client: viewmodel and player model weapon now inherit the rendermode of the player.

This commit is contained in:
Marco Cawthorne 2023-04-16 10:43:40 -07:00
parent e482cb0103
commit 706241a7b6
Signed by: eukara
GPG Key ID: CE2032F0A2882A22
3 changed files with 26 additions and 12 deletions

View File

@ -24,11 +24,13 @@ View_Init(void)
pSeat = &g_seats[s];
if(!pSeat->m_eViewModel) {
/* right side */
pSeat->m_eViewModel = spawn();
pSeat->m_eViewModel = spawn(NSRenderableEntity);
pSeat->m_eViewModel.classname = "vm";
pSeat->m_eViewModel.renderflags = RF_DEPTHHACK | RF_FIRSTPERSON;
pSeat->m_eViewModel.effects |= EF_NOSHADOW;
pSeat->m_eViewModel.alpha = 1.0f;
pSeat->m_eViewModel.drawmask = 0;
setsize(pSeat->m_eViewModel, [0,0,0], [0,0,0]);
pSeat->m_eMuzzleflash = spawn();
@ -38,11 +40,12 @@ View_Init(void)
setsize(pSeat->m_eMuzzleflash, [0,0,0], [0,0,0]);
/* left side */
pSeat->m_eViewModelL = spawn();
pSeat->m_eViewModelL = spawn(NSRenderableEntity);
pSeat->m_eViewModelL.classname = "vm";
pSeat->m_eViewModelL.renderflags = RF_DEPTHHACK | RF_FIRSTPERSON;
pSeat->m_eViewModelL.effects |= EF_NOSHADOW;
pSeat->m_eViewModelL.alpha = 1.0f;
pSeat->m_eViewModelL.drawmask = 0;
setsize(pSeat->m_eViewModelL, [0,0,0], [0,0,0]);
pSeat->m_eMuzzleflashL = spawn();
@ -135,9 +138,9 @@ muzzleflash, dynamic lights and so on appear
void
View_DrawViewModel(void)
{
entity m_eViewModel = pSeat->m_eViewModel;
NSRenderableEntity m_eViewModel = pSeat->m_eViewModel;
entity m_eMuzzleflash = pSeat->m_eMuzzleflash;
entity m_eViewModelL = pSeat->m_eViewModelL;
NSRenderableEntity m_eViewModelL = pSeat->m_eViewModelL;
entity m_eMuzzleflashL = pSeat->m_eMuzzleflashL;
player pl = __NULL__;
@ -172,6 +175,11 @@ View_DrawViewModel(void)
return;
}
m_eViewModel.SetRenderMode(pl.GetRenderMode());
m_eViewModel.SetRenderFX(pl.GetRenderFX());
m_eViewModel.SetRenderColor(pl.GetRenderColor());
m_eViewModel.SetRenderAmt(pl.GetRenderAmt());
View_UpdateWeapon(pl, m_eViewModel, m_eMuzzleflash);
float fBaseTime2 = m_eViewModel.frame1time;
float fBaseTime = m_eViewModel.frame1time;
@ -278,8 +286,13 @@ View_DrawViewModel(void)
}
setorigin(m_eViewModel, m_eViewModel.origin);
setorigin(m_eViewModelL, m_eViewModel.origin);
addentity(m_eViewModel);
addentity(m_eViewModelL);
m_eViewModel.RenderFXPass();
m_eViewModelL.RenderFXPass();
if (m_eViewModel.GetRenderMode() != RM_DONTRENDER)
addentity(m_eViewModel);
if (m_eViewModelL.GetRenderMode() != RM_DONTRENDER)
addentity(m_eViewModelL);
}
}

View File

@ -297,8 +297,10 @@ NSClientPlayer::predraw(void)
g_view.SetDrawLocalPlayer(true);
/* sucks we can't draw a shadow on this thing, maybe in the future when FTEQW allows it */
if (p_model)
addentity(p_model);
if (p_model) {
if (p_model.GetRenderMode() != RM_DONTRENDER)
addentity(p_model);
}
} else { /* we're doing first person stuff */
/* flags that the model appear in mirrors only */
renderflags |= RF_EXTERNALMODEL;
@ -318,7 +320,8 @@ NSClientPlayer::predraw(void)
/* this needs to be called absolutely last */
/* we're calling this so that the shadow can still be drawn */
addentity(this);
if (GetRenderMode() != RM_DONTRENDER)
addentity(this);
return (PREDRAW_NEXT);
}

View File

@ -371,8 +371,6 @@ NSRenderableEntity::RenderFXPass(void)
abslight = 128;
break;
case RM_DONTRENDER:
/* prevent addentity() from being called */
alpha = 0.0f;
break;
}
@ -555,7 +553,7 @@ NSRenderableEntity::predraw(void)
float dim = ((sin(time * autocvar(rfx_q2pulse_speed, 4)) + (M_PI/2)) * autocvar(rfx_q2pulse_intensity, 1.0));
dim += 1.0f;
addentity_lighting(this, [0,0,0], [dim, dim, dim], [0,0,0], 0, 0);
} else {
} else if (m_iRenderMode != RM_DONTRENDER) {
addentity(this);
}
}