本文整理汇总了C++中EHANDLE::GetVectors方法的典型用法代码示例。如果您正苦于以下问题:C++ EHANDLE::GetVectors方法的具体用法?C++ EHANDLE::GetVectors怎么用?C++ EHANDLE::GetVectors使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类EHANDLE
的用法示例。
在下文中一共展示了EHANDLE::GetVectors方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Think
//-----------------------------------------------------------------------------
// Purpose: Called every frame.
//-----------------------------------------------------------------------------
void CPointAngleSensor::Think(void)
{
if (m_hTargetEntity != NULL)
{
Vector forward;
m_hTargetEntity->GetVectors(&forward, NULL, NULL);
m_TargetDir.Set(forward, this, this);
if (m_hLookAtEntity != NULL)
{
//
// Check to see if the measure entity's forward vector has been within
// given tolerance of the target entity for the given period of time.
//
float flDot;
if (IsFacingWithinTolerance(m_hTargetEntity, m_hLookAtEntity, m_flDotTolerance, &flDot ))
{
if (!m_bFired)
{
if (!m_flFacingTime)
{
m_flFacingTime = gpGlobals->curtime;
}
if (gpGlobals->curtime >= m_flFacingTime + m_flDuration)
{
m_OnFacingLookat.FireOutput(this, this);
m_bFired = true;
}
}
}
else
{
// Reset the fired state
if ( m_bFired )
{
m_bFired = false;
}
// Always reset the time when we've lost our facing
m_flFacingTime = 0;
}
// Output the angle range we're in
float flPerc = RemapValClamped( flDot, 1.0f, m_flDotTolerance, 1.0f, 0.0f );
m_FacingPercentage.Set( flPerc, this, this );
}
SetNextThink( gpGlobals->curtime );
}
}
示例2: Think
void CLogicMirrorMovement::Think()
{
// Attempt to get the player's handle because it didn't exist at Activate time
if ( !m_hMirrorTarget.Get() )
{
// If we will never find a target, we don't have a use... shutdown
if ( m_strMirrorTarget == NULL_STRING )
SetNextThink ( NULL );
//BUGBUG: If m_strSetMirrorTarget doesn't exist in ent list, we get per-think searches with no results ever...
SetMirrorTarget ( STRING(m_strMirrorTarget) );
}
// Make sure all entities are valid
if ( m_hMirrorTarget.Get() && m_hMovementTarget.Get() && m_hRemoteTarget.Get() && m_hMirrorRelative.Get() )
{
// Get our two portal's world transforms transforms
VMatrix matPortal1ToWorldInv, matPortal2ToWorld;
MatrixInverseGeneral( m_hMirrorRelative->EntityToWorldTransform(), matPortal1ToWorldInv );
matPortal2ToWorld = m_hRemoteTarget->EntityToWorldTransform();
VMatrix matTransformToRemotePortal = matPortal1ToWorldInv * matPortal2ToWorld;
// Get our scene camera's current orientation
Vector ptCameraPosition, vCameraLook, vCameraRight, vCameraUp;
ptCameraPosition = m_hMirrorTarget->EyePosition();
m_hMirrorTarget->GetVectors ( &vCameraLook, &vCameraRight, &vCameraUp );
// map this position and orientation to the remote portal, mirrored (invert the result)
Vector ptNewPosition, vNewLook;
ptNewPosition = matPortal1ToWorldInv * ptCameraPosition;
ptNewPosition = matPortal2ToWorld*( Vector( -ptNewPosition.x, -ptNewPosition.y, ptNewPosition.z ) );
vNewLook = matPortal1ToWorldInv.ApplyRotation( vCameraLook );
vNewLook = matPortal2ToWorld.ApplyRotation( Vector( -vNewLook.x, -vNewLook.y, vNewLook.z) );
// Set the point camera to the new location/orientation
QAngle qNewAngles;
VectorAngles( vNewLook, qNewAngles );
m_hMovementTarget->Teleport( &ptNewPosition, &qNewAngles, NULL );
}
SetNextThink( gpGlobals->curtime + TICK_INTERVAL );
}