本文整理汇总了C++中CASW_Marine::ASWEyeAngles方法的典型用法代码示例。如果您正苦于以下问题:C++ CASW_Marine::ASWEyeAngles方法的具体用法?C++ CASW_Marine::ASWEyeAngles怎么用?C++ CASW_Marine::ASWEyeAngles使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CASW_Marine
的用法示例。
在下文中一共展示了CASW_Marine::ASWEyeAngles方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: WeldDoor
void CASW_Weapon_Welder::WeldDoor(bool bSeal)
{
CASW_Marine *pMarine = GetMarine();
if ( !pMarine || !pMarine->GetCommander() )
return;
bool bWelding = false;
CASW_Door* pDoor = FindDoor();
if ( pDoor )
{
bWelding = true;
Vector vecFacingPoint = pDoor->GetWeldFacingPoint(pMarine);
Vector diff = vecFacingPoint - pMarine->GetAbsOrigin();
diff.z = 0;
VectorNormalize(diff);
QAngle angCurrentFacing = pMarine->ASWEyeAngles();
Vector vecCurrentFacing = vec3_origin;
AngleVectors(angCurrentFacing, &vecCurrentFacing);
vecCurrentFacing.z = 0;
VectorNormalize(vecCurrentFacing);
bool bFacing = DotProduct(diff, vecCurrentFacing) > 0.6f;
if ( !pMarine->IsInhabited() )
{
bFacing = true; // AI marines don't know how to face the door yet
}
if ( bFacing && !pDoor->IsOpen() )
{
// do our muzzle flash, if we're going to alter the weld some
if ( bSeal && pDoor->GetSealAmount() < 1.0f )
{
pMarine->DoMuzzleFlash();
m_bIsFiring = true;
}
else if ( !bSeal && pDoor->GetSealAmount() > 0 )
{
pMarine->DoMuzzleFlash();
m_bIsFiring = true;
}
}
#ifdef CLIENT_DLL
pMarine->SetFacingPoint(vecFacingPoint, GetFireRate()*2.0f);
#else
if ( gpGlobals->maxClients <= 1 )
{
pMarine->SetFacingPoint(vecFacingPoint, GetFireRate()*2.0f);
}
#endif
if ( bFacing )
{
if ( pDoor->IsOpen() )
{
#ifndef CLIENT_DLL
if ( bSeal )
{
pDoor->CloseForWeld( pMarine ); // shut the door first, so we can start welding it
}
#endif
}
else
{
// tell the weapon to weld over the next fire rate interval
m_fWeldTime = GetFireRate() + 0.004f;
m_bWeldSeal = bSeal;
#ifndef CLIENT_DLL
m_pWeldDoor = pDoor;
//Msg( "Setting weld door to %d\n", pDoor->entindex() );
// network door which door we're working on so all players can see progress
if ( pMarine->GetMarineResource() )
pMarine->GetMarineResource()->m_hWeldingDoor = pDoor;
#endif
}
}
}
else
{
//Msg( "Couldn't find door to weld\n" );
}
if ( pMarine->GetActiveWeapon() != this )
{
bool bAttack1, bAttack2, bReload, bOldReload, bOldAttack1;
GetButtons( bAttack1, bAttack2, bReload, bOldReload, bOldAttack1 );
if ( bAttack1 || bAttack2 || bReload || pMarine->GetCurrentMeleeAttack() )
{
bWelding = false;
}
}
if ( !bWelding )
{
m_iAutomaticWeldDirection = 0;
m_bShotDelayed = false;
#ifdef GAME_DLL
if ( pMarine->GetMarineResource() )
{
pMarine->GetMarineResource()->m_hWeldingDoor = NULL;
}
//.........这里部分代码省略.........