本文整理汇总了C++中EHANDLE::GetServerVehicle方法的典型用法代码示例。如果您正苦于以下问题:C++ EHANDLE::GetServerVehicle方法的具体用法?C++ EHANDLE::GetServerVehicle怎么用?C++ EHANDLE::GetServerVehicle使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类EHANDLE
的用法示例。
在下文中一共展示了EHANDLE::GetServerVehicle方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Simulate
IMotionEvent::simresult_e CPhysicsNPCSolver::Simulate( IPhysicsMotionController *pController, IPhysicsObject *pObject,
float deltaTime, Vector &linear, AngularImpulse &angular )
{
if ( IsIntersecting() )
{
const float PUSH_SPEED = 150.0f;
if ( pObject->GetGameFlags() & FVPHYSICS_PLAYER_HELD )
{
CBasePlayer *pPlayer = UTIL_GetLocalPlayer();
if ( pPlayer )
{
pPlayer->ForceDropOfCarriedPhysObjects( m_hEntity );
}
}
ResetCancelTime();
angular.Init();
linear.Init();
// Don't push on vehicles because they won't move
if ( pObject->GetGameFlags() & FVPHYSICS_MULTIOBJECT_ENTITY )
{
if ( m_hEntity->GetServerVehicle() )
return SIM_NOTHING;
}
Vector origin, vel;
pObject->GetPosition( &origin, NULL );
pObject->GetVelocity( &vel, NULL );
Vector dir = origin - m_hNPC->GetAbsOrigin();
dir.z = dir.z > 0 ? 0.1f : -0.1f;
VectorNormalize(dir);
AngularImpulse angVel;
angVel.Init();
// NOTE: Iterate this object's contact points
// if it can't move in this direction, try sliding along the plane/crease
Vector pushImpulse;
PhysComputeSlideDirection( pObject, dir * PUSH_SPEED, angVel, &pushImpulse, NULL, 0 );
dir = pushImpulse;
VectorNormalize(dir);
if ( DotProduct( vel, dir ) < PUSH_SPEED * 0.5f )
{
linear = pushImpulse;
if ( pObject->GetContactPoint(NULL,NULL) )
{
linear.z += GetCurrentGravity();
}
}
return SIM_GLOBAL_ACCELERATION;
}
return SIM_NOTHING;
}