#include "Game/LiveActor/ClippingJudge.hpp" #include "Game/Util.hpp" ClippingJudge::ClippingJudge(const char *pName) : NameObj(pName), mFrustum() { for (s32 i = 0; i < 8; i++) { mClipDistances[i] = -1.0f; } mClipDistances[0] = 0.0f; mClipDistances[1] = 60000.0f; mClipDistances[2] = 50000.0f; mClipDistances[3] = 40000.0f; mClipDistances[4] = 30000.0f; mClipDistances[5] = 20000.0f; mClipDistances[6] = 10000.0f; mClipDistances[7] = 5000.0f; } void ClippingJudge::init(const JMapInfoIter &rIter) { } void ClippingJudge::movement() { calcViewingVolume(&mFrustum, MR::getFarZ()); for (u32 i = 1; i < 8; i++) { calcViewingVolume(&mClipFrustums[i], mClipDistances[i]); } } bool ClippingJudge::isJudgedToClipFrustum(const TVec3f &rVec, f32 a2) const { return !mFrustum.mayIntersectBall3(rVec, a2); } bool ClippingJudge::isJudgedToClipFrustum(const TVec3f &rVec, f32 a2, s32 index) const { return (!index) ? !mFrustum.mayIntersectBall3(rVec, a2) : !mClipFrustums[index].mayIntersectBall3(rVec, a2); } // ClippingJudge::calcViewingVolume ClippingJudge::~ClippingJudge() { }