mirror of
https://github.com/ValveSoftware/source-sdk-2013.git
synced 2025-07-26 15:11:47 +03:00
Fix Wrangler shield not moving with sentrygun
This commit is contained in:
parent
39f6dde8fb
commit
57a8b644af
@ -60,7 +60,7 @@ C_ObjectSentrygun::C_ObjectSentrygun()
|
|||||||
m_nShieldLevel = SHIELD_NONE;
|
m_nShieldLevel = SHIELD_NONE;
|
||||||
m_nOldShieldLevel = SHIELD_NONE;
|
m_nOldShieldLevel = SHIELD_NONE;
|
||||||
m_hLaserBeamEffect = NULL;
|
m_hLaserBeamEffect = NULL;
|
||||||
m_pTempShield = NULL;
|
m_hShieldModel = NULL;
|
||||||
m_bNearMiss = false;
|
m_bNearMiss = false;
|
||||||
m_flNextNearMissCheck = 0.f;
|
m_flNextNearMissCheck = 0.f;
|
||||||
|
|
||||||
@ -312,7 +312,7 @@ void C_ObjectSentrygun::SetDormant( bool bDormant )
|
|||||||
if ( IsDormant() && !bDormant )
|
if ( IsDormant() && !bDormant )
|
||||||
{
|
{
|
||||||
// Make sure our shield is where we are. We may have moved since last seen.
|
// Make sure our shield is where we are. We may have moved since last seen.
|
||||||
if ( m_pTempShield )
|
if ( m_hShieldModel )
|
||||||
{
|
{
|
||||||
m_bRecreateShield = true;
|
m_bRecreateShield = true;
|
||||||
m_bRecreateLaserBeam = true;
|
m_bRecreateLaserBeam = true;
|
||||||
@ -329,13 +329,12 @@ void C_ObjectSentrygun::CreateShield( void )
|
|||||||
{
|
{
|
||||||
DestroyShield();
|
DestroyShield();
|
||||||
|
|
||||||
model_t *pModel = (model_t *) engine->LoadModel( "models/buildables/sentry_shield.mdl" );
|
m_hShieldModel = C_SentrygunShield::Create( "models/buildables/sentry_shield.mdl" );
|
||||||
m_pTempShield = tempents->SpawnTempModel( pModel, GetAbsOrigin(), GetAbsAngles(), Vector(0, 0, 0), 1, FTENT_NEVERDIE );
|
if ( m_hShieldModel )
|
||||||
if ( m_pTempShield )
|
|
||||||
{
|
{
|
||||||
m_pTempShield->ChangeTeam( GetTeamNumber() );
|
m_hShieldModel->FollowEntity( this, false );
|
||||||
m_pTempShield->m_nSkin = ( GetTeamNumber() == TF_TEAM_RED ) ? 0 : 1;
|
m_hShieldModel->ChangeTeam( GetTeamNumber() );
|
||||||
//m_pTempShield->m_nRenderFX = kRenderFxDistort;
|
m_hShieldModel->m_nSkin = ( GetTeamNumber() == TF_TEAM_RED ) ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_hShieldEffect = ParticleProp()->Create( "turret_shield", PATTACH_ABSORIGIN_FOLLOW, 0, Vector( 0,0,30) );
|
m_hShieldEffect = ParticleProp()->Create( "turret_shield", PATTACH_ABSORIGIN_FOLLOW, 0, Vector( 0,0,30) );
|
||||||
@ -356,12 +355,10 @@ void C_ObjectSentrygun::CreateShield( void )
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void C_ObjectSentrygun::DestroyShield( void )
|
void C_ObjectSentrygun::DestroyShield( void )
|
||||||
{
|
{
|
||||||
if ( m_pTempShield )
|
if ( m_hShieldModel )
|
||||||
{
|
{
|
||||||
m_pTempShield->flags = FTENT_FADEOUT;
|
m_hShieldModel->StartFadeOut( 1.0f );
|
||||||
m_pTempShield->die = gpGlobals->curtime;
|
m_hShieldModel = NULL;
|
||||||
m_pTempShield->fadeSpeed = 1.0f;
|
|
||||||
m_pTempShield = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( m_hShieldEffect )
|
if ( m_hShieldEffect )
|
||||||
@ -758,4 +755,49 @@ const char* C_ObjectSentrygun::GetStatusName() const
|
|||||||
return "#TF_Object_Sentry";
|
return "#TF_Object_Sentry";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
C_SentrygunShield* C_SentrygunShield::Create( const char* pszModelName )
|
||||||
|
{
|
||||||
|
C_SentrygunShield* pShield = new C_SentrygunShield();
|
||||||
|
if ( !pShield )
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if ( !pShield->InitializeAsClientEntity( pszModelName, RENDER_GROUP_TRANSLUCENT_ENTITY ) )
|
||||||
|
{
|
||||||
|
pShield->Release();
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
pShield->AddEffects( EF_NORECEIVESHADOW | EF_NOSHADOW );
|
||||||
|
return pShield;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void C_SentrygunShield::ClientThink()
|
||||||
|
{
|
||||||
|
if ( m_flFadeOutEndTime <= gpGlobals->curtime )
|
||||||
|
{
|
||||||
|
Release();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
float flAlpha = RemapVal( gpGlobals->curtime, m_flFadeOutStartTime, m_flFadeOutEndTime, 255.0f, 0.0f );
|
||||||
|
SetRenderColorA( (byte)flAlpha );
|
||||||
|
SetNextClientThink( CLIENT_THINK_ALWAYS );
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void C_SentrygunShield::StartFadeOut( float flDuration )
|
||||||
|
{
|
||||||
|
SetRenderMode( kRenderTransTexture );
|
||||||
|
|
||||||
|
m_flFadeOutStartTime = gpGlobals->curtime;
|
||||||
|
m_flFadeOutEndTime = gpGlobals->curtime + flDuration;
|
||||||
|
SetNextClientThink( gpGlobals->curtime );
|
||||||
|
}
|
@ -27,6 +27,25 @@ enum
|
|||||||
SHIELD_MAX, // 10% damage taken, no inactive period
|
SHIELD_MAX, // 10% damage taken, no inactive period
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Purpose: Wrangler shield
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
class C_SentrygunShield : public C_BaseAnimating
|
||||||
|
{
|
||||||
|
DECLARE_CLASS( C_SentrygunShield, C_BaseAnimating );
|
||||||
|
|
||||||
|
public:
|
||||||
|
static C_SentrygunShield* Create( const char* pszModelName );
|
||||||
|
|
||||||
|
virtual void ClientThink();
|
||||||
|
|
||||||
|
void StartFadeOut( float flDuration );
|
||||||
|
|
||||||
|
private:
|
||||||
|
float m_flFadeOutStartTime;
|
||||||
|
float m_flFadeOutEndTime;
|
||||||
|
};
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Purpose: Sentry object
|
// Purpose: Sentry object
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@ -124,7 +143,7 @@ private:
|
|||||||
bool m_bRecreateLaserBeam;
|
bool m_bRecreateLaserBeam;
|
||||||
float m_flNextNearMissCheck;
|
float m_flNextNearMissCheck;
|
||||||
|
|
||||||
C_LocalTempEntity *m_pTempShield;
|
CHandle<C_SentrygunShield> m_hShieldModel;
|
||||||
|
|
||||||
HPARTICLEFFECT m_hSirenEffect;
|
HPARTICLEFFECT m_hSirenEffect;
|
||||||
HPARTICLEFFECT m_hShieldEffect;
|
HPARTICLEFFECT m_hShieldEffect;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user