void CRagdollProp::SetObjectCollisionBox( void )
{
	if ( m_allAsleep )
	{
		Vector fullMins, fullMaxs;
		RagdollComputeExactBbox( m_ragdoll, GetAbsOrigin(), fullMins, fullMaxs );
		SetCollisionBounds( fullMins - GetAbsOrigin(), fullMaxs - GetAbsOrigin() );
		SetAbsMins( fullMins );
		SetAbsMaxs( fullMaxs );
	}
	else
	{
		SetCollisionBounds( m_savedESMins, m_savedESMaxs );
		ComputeSurroundingBox();
	}
}
Example #2
0
//-----------------------------------------------------------------------------
// Computes the surrounding collision bounds based on whatever algorithm we want...
//-----------------------------------------------------------------------------
void CCollisionProperty::WorldSpaceSurroundingBounds( Vector *pVecMins, Vector *pVecMaxs )
{
	const Vector &vecAbsOrigin = GetCollisionOrigin();
	if ( GetOuter()->IsEFlagSet( EFL_DIRTY_SURROUNDING_COLLISION_BOUNDS ))
	{
		GetOuter()->RemoveEFlags( EFL_DIRTY_SURROUNDING_COLLISION_BOUNDS );
		ComputeSurroundingBox( pVecMins, pVecMaxs );
		VectorSubtract( *pVecMins, vecAbsOrigin, m_vecSurroundingMins );
		VectorSubtract( *pVecMaxs, vecAbsOrigin, m_vecSurroundingMaxs );
		
		ASSERT_COORD( m_vecSurroundingMins );
		ASSERT_COORD( m_vecSurroundingMaxs );
	}
	else
	{
		VectorAdd( m_vecSurroundingMins, vecAbsOrigin, *pVecMins );
		VectorAdd( m_vecSurroundingMaxs, vecAbsOrigin, *pVecMaxs );
	}
}