本文整理汇总了C++中CBaseDoor::IsRotatingDoor方法的典型用法代码示例。如果您正苦于以下问题:C++ CBaseDoor::IsRotatingDoor方法的具体用法?C++ CBaseDoor::IsRotatingDoor怎么用?C++ CBaseDoor::IsRotatingDoor使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CBaseDoor
的用法示例。
在下文中一共展示了CBaseDoor::IsRotatingDoor方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Blocked
void CBaseDoor::Blocked( CBaseEntity *pOther )
{
// hurt the blocker a little.
if( pev->dmg ) pOther->TakeDamage( pev, pev, pev->dmg, DMG_CRUSH );
// if a door has a negative wait, it would never come back if blocked,
// so let it just squash the object to death real fast
if( m_flWait >= 0 )
{
if( !FBitSet( pev->spawnflags, SF_DOOR_SILENT ))
STOP_SOUND( edict(), CHAN_STATIC, STRING( pev->noise1 ));
if( m_iState == STATE_TURN_OFF )
{
DoorGoUp();
}
else
{
DoorGoDown();
}
}
// block all door pieces with the same targetname here.
if( !FStringNull( pev->targetname ))
{
CBaseDoor *pDoorList[64];
int doorCount = GetDoorMovementGroup( pDoorList, ARRAYSIZE( pDoorList ));
for( int i = 0; i < doorCount; i++ )
{
CBaseDoor *pDoor = pDoorList[i];
if( pDoor->m_flWait >= 0)
{
if( m_bDoorGroup && pDoor->pev->movedir == pev->movedir && pDoor->GetAbsVelocity() == GetAbsVelocity() && pDoor->GetLocalAvelocity() == GetLocalAvelocity( ))
{
pDoor->m_iPhysicsFrame = g_ulFrameCount; // don't run physics this frame if you haven't run yet
// this is the most hacked, evil, bastardized thing I've ever seen. kjb
if( !pDoor->IsRotatingDoor( ))
{
// set origin to realign normal doors
pDoor->SetLocalOrigin( GetLocalOrigin( ));
pDoor->SetAbsVelocity( g_vecZero ); // stop!
}
else
{
// set angles to realign rotating doors
pDoor->SetLocalAngles( GetLocalAngles( ));
pDoor->SetLocalAvelocity( g_vecZero );
}
}
if( pDoor->m_iState == STATE_TURN_OFF )
pDoor->DoorGoUp();
else pDoor->DoorGoDown();
}
}
}
}
示例2: Blocked
//-----------------------------------------------------------------------------
// Purpose: Called every frame when the door is blocked while opening or closing.
// Input : pOther - The blocking entity.
//-----------------------------------------------------------------------------
void CBaseDoor::Blocked( CBaseEntity *pOther )
{
// Hurt the blocker a little.
if ( m_flBlockDamage )
{
// if the door is marked "force closed" or it has a negative wait, then there's nothing to do but
// push/damage the object.
// If block damage is set, but this object is a physics prop that can't be damaged, just
// give up and disable collisions
if ( (m_bForceClosed || m_flWait < 0) && pOther->GetMoveType() == MOVETYPE_VPHYSICS &&
(pOther->m_takedamage == DAMAGE_NO || pOther->m_takedamage == DAMAGE_EVENTS_ONLY) )
{
EntityPhysics_CreateSolver( this, pOther, true, 4.0f );
}
else
{
pOther->TakeDamage( CTakeDamageInfo( this, this, m_flBlockDamage, DMG_CRUSH ) );
}
}
// If we're set to force ourselves closed, keep going
if ( m_bForceClosed )
return;
// if a door has a negative wait, it would never come back if blocked,
// so let it just squash the object to death real fast
if (m_flWait >= 0)
{
if (m_toggle_state == TS_GOING_DOWN)
{
DoorGoUp();
}
else
{
DoorGoDown();
}
}
// Block all door pieces with the same targetname here.
if ( GetEntityName() != NULL_STRING )
{
CBaseDoor *pDoorList[64];
int doorCount = GetDoorMovementGroup( pDoorList, ARRAYSIZE(pDoorList) );
for ( int i = 0; i < doorCount; i++ )
{
CBaseDoor *pDoor = pDoorList[i];
if ( pDoor->m_flWait >= 0)
{
if (m_bDoorGroup && pDoor->m_vecMoveDir == m_vecMoveDir && pDoor->GetAbsVelocity() == GetAbsVelocity() && pDoor->GetLocalAngularVelocity() == GetLocalAngularVelocity())
{
pDoor->m_nSimulationTick = m_nSimulationTick; // don't run simulation this frame if you haven't run yet
// this is the most hacked, evil, bastardized thing I've ever seen. kjb
if ( !pDoor->IsRotatingDoor() )
{// set origin to realign normal doors
pDoor->SetLocalOrigin( GetLocalOrigin() );
pDoor->SetAbsVelocity( vec3_origin );// stop!
}
else
{// set angles to realign rotating doors
pDoor->SetLocalAngles( GetLocalAngles() );
pDoor->SetLocalAngularVelocity( vec3_angle );
}
}
if ( pDoor->m_toggle_state == TS_GOING_DOWN)
pDoor->DoorGoUp();
else
pDoor->DoorGoDown();
}
}
}
}