DragonNest/Common/EngineUtil/EtConvexVolume.cpp
2024-12-20 16:56:44 +08:00

63 lines
2.5 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "StdAfx.h"
#include "EtConvexVolume.h"
#include "EtCollisionFunc.h"
#ifdef _DEBUG
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
#endif
CEtConvexVolume::CEtConvexVolume(void)
{
}
CEtConvexVolume::~CEtConvexVolume(void)
{
}
void CEtConvexVolume::Initialize( EtMatrix &ViewProjMat )
{
EtVector4 TempVec;
m_Planes.clear();
std::vector<EtVector4>().swap(m_Planes);
if( CalcFrustumLeftPlane( TempVec, ViewProjMat ) )
{
m_Planes.push_back( TempVec );
}
if( CalcFrustumRightPlane( TempVec, ViewProjMat ) )
{
m_Planes.push_back( TempVec );
}
if( CalcFrustumTopPlane( TempVec, ViewProjMat ) )
{
m_Planes.push_back( TempVec );
}
if( CalcFrustumBottomPlane( TempVec, ViewProjMat ) )
{
m_Planes.push_back( TempVec );
}
if( CalcFrustumFarPlane( TempVec, ViewProjMat ) )
{
m_Planes.push_back( TempVec );
}
if( CalcFrustumNearPlane( TempVec, ViewProjMat ) )
{
m_Planes.push_back( TempVec );
}
}
bool CEtConvexVolume::TesToBox( EtVector3 &Origin, EtVector3 &Extent )
{
int i;
for( i = 0; i < ( int )m_Planes.size(); i++ )
{
if( PlaneDot( m_Planes[ i ], Origin ) > CalcBoxPushOut( m_Planes[ i ], Extent ) )
{
return false;
}
}
return true;
}