mirror of
https://github.com/mapbase-source/source-sdk-2013.git
synced 2025-02-19 18:21:09 +03:00
Spotlight "Ignore solid" keyvalue from MP branch
This commit is contained in:
parent
471a840ed9
commit
5cf63d4eb6
@ -62,6 +62,7 @@ private:
|
|||||||
private:
|
private:
|
||||||
bool m_bSpotlightOn;
|
bool m_bSpotlightOn;
|
||||||
bool m_bEfficientSpotlight;
|
bool m_bEfficientSpotlight;
|
||||||
|
bool m_bIgnoreSolid;
|
||||||
Vector m_vSpotlightTargetPos;
|
Vector m_vSpotlightTargetPos;
|
||||||
Vector m_vSpotlightCurrentPos;
|
Vector m_vSpotlightCurrentPos;
|
||||||
Vector m_vSpotlightDir;
|
Vector m_vSpotlightDir;
|
||||||
@ -100,6 +101,7 @@ BEGIN_DATADESC( CPointSpotlight )
|
|||||||
DEFINE_FIELD( m_vSpotlightDir, FIELD_VECTOR ),
|
DEFINE_FIELD( m_vSpotlightDir, FIELD_VECTOR ),
|
||||||
DEFINE_FIELD( m_nHaloSprite, FIELD_INTEGER ),
|
DEFINE_FIELD( m_nHaloSprite, FIELD_INTEGER ),
|
||||||
|
|
||||||
|
DEFINE_KEYFIELD( m_bIgnoreSolid, FIELD_BOOLEAN, "IgnoreSolid" ),
|
||||||
DEFINE_KEYFIELD( m_flSpotlightMaxLength,FIELD_FLOAT, "SpotlightLength"),
|
DEFINE_KEYFIELD( m_flSpotlightMaxLength,FIELD_FLOAT, "SpotlightLength"),
|
||||||
DEFINE_KEYFIELD( m_flSpotlightGoalWidth,FIELD_FLOAT, "SpotlightWidth"),
|
DEFINE_KEYFIELD( m_flSpotlightGoalWidth,FIELD_FLOAT, "SpotlightWidth"),
|
||||||
DEFINE_KEYFIELD( m_flHDRColorScale, FIELD_FLOAT, "HDRColorScale" ),
|
DEFINE_KEYFIELD( m_flHDRColorScale, FIELD_FLOAT, "HDRColorScale" ),
|
||||||
@ -138,6 +140,7 @@ CPointSpotlight::CPointSpotlight()
|
|||||||
#endif
|
#endif
|
||||||
m_flHDRColorScale = 1.0f;
|
m_flHDRColorScale = 1.0f;
|
||||||
m_nMinDXLevel = 0;
|
m_nMinDXLevel = 0;
|
||||||
|
m_bIgnoreSolid = false;
|
||||||
#ifdef MAPBASE
|
#ifdef MAPBASE
|
||||||
m_flHaloScale = 60.0f;
|
m_flHaloScale = 60.0f;
|
||||||
#endif
|
#endif
|
||||||
@ -380,12 +383,21 @@ void CPointSpotlight::SpotlightCreate(void)
|
|||||||
|
|
||||||
AngleVectors( GetAbsAngles(), &m_vSpotlightDir );
|
AngleVectors( GetAbsAngles(), &m_vSpotlightDir );
|
||||||
|
|
||||||
|
Vector vTargetPos;
|
||||||
|
if ( m_bIgnoreSolid )
|
||||||
|
{
|
||||||
|
vTargetPos = GetAbsOrigin() + m_vSpotlightDir * m_flSpotlightMaxLength;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
trace_t tr;
|
trace_t tr;
|
||||||
UTIL_TraceLine( GetAbsOrigin(), GetAbsOrigin() + m_vSpotlightDir * m_flSpotlightMaxLength, MASK_SOLID_BRUSHONLY, this, COLLISION_GROUP_NONE, &tr);
|
UTIL_TraceLine( GetAbsOrigin(), GetAbsOrigin() + m_vSpotlightDir * m_flSpotlightMaxLength, MASK_SOLID_BRUSHONLY, this, COLLISION_GROUP_NONE, &tr );
|
||||||
|
vTargetPos = tr.endpos;
|
||||||
|
}
|
||||||
|
|
||||||
m_hSpotlightTarget = (CSpotlightEnd*)CreateEntityByName( "spotlight_end" );
|
m_hSpotlightTarget = (CSpotlightEnd*)CreateEntityByName( "spotlight_end" );
|
||||||
m_hSpotlightTarget->Spawn();
|
m_hSpotlightTarget->Spawn();
|
||||||
m_hSpotlightTarget->SetAbsOrigin( tr.endpos );
|
m_hSpotlightTarget->SetAbsOrigin( vTargetPos );
|
||||||
m_hSpotlightTarget->SetOwnerEntity( this );
|
m_hSpotlightTarget->SetOwnerEntity( this );
|
||||||
m_hSpotlightTarget->m_clrRender = m_clrRender;
|
m_hSpotlightTarget->m_clrRender = m_clrRender;
|
||||||
m_hSpotlightTarget->m_Radius = m_flSpotlightMaxLength;
|
m_hSpotlightTarget->m_Radius = m_flSpotlightMaxLength;
|
||||||
@ -437,9 +449,17 @@ Vector CPointSpotlight::SpotlightCurrentPos(void)
|
|||||||
AngleVectors( GetAbsAngles(), &m_vSpotlightDir );
|
AngleVectors( GetAbsAngles(), &m_vSpotlightDir );
|
||||||
|
|
||||||
// Get beam end point. Only collide with solid objects, not npcs
|
// Get beam end point. Only collide with solid objects, not npcs
|
||||||
|
Vector vEndPos = GetAbsOrigin() + ( m_vSpotlightDir * 2 * m_flSpotlightMaxLength );
|
||||||
|
if ( m_bIgnoreSolid )
|
||||||
|
{
|
||||||
|
return vEndPos;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
trace_t tr;
|
trace_t tr;
|
||||||
UTIL_TraceLine( GetAbsOrigin(), GetAbsOrigin() + (m_vSpotlightDir * 2 * m_flSpotlightMaxLength), MASK_SOLID_BRUSHONLY, this, COLLISION_GROUP_NONE, &tr );
|
UTIL_TraceLine( GetAbsOrigin(), vEndPos, MASK_SOLID_BRUSHONLY, this, COLLISION_GROUP_NONE, &tr );
|
||||||
return tr.endpos;
|
return tr.endpos;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user