- int CFrustum::IsBoxWithin(float pX,float pY,float pZ,float pB,float pH,float pT)
- {
- float minX = (pX - pB), maxX = (pX + pB);
- float minY = (pY - pH), maxY = (pY + pH);
- float minZ = (pZ - pT), maxZ = (pZ + pT);
- // ***** NEUE ZEILE *****
- int part = FULL_VISIBLE;
- for(int i=0;i<6;i++)
- {
- if((m_Frustum[i][0] * minX + m_Frustum[i][1] * minY + m_Frustum[i][2] * minZ + m_Frustum[i][3]) > 0)
- continue;
- // ***** NEUE ZEILE *****
- part = PART_VISIBLE;
- if((m_Frustum[i][0] * maxX + m_Frustum[i][1] * minY + m_Frustum[i][2] * minZ + m_Frustum[i][3]) > 0)
- continue;
- if((m_Frustum[i][0] * minX + m_Frustum[i][1] * maxY + m_Frustum[i][2] * minZ + m_Frustum[i][3]) > 0)
- continue;
- if((m_Frustum[i][0] * maxX + m_Frustum[i][1] * maxY + m_Frustum[i][2] * minZ + m_Frustum[i][3]) > 0)
- continue;
- if((m_Frustum[i][0] * minX + m_Frustum[i][1] * minY + m_Frustum[i][2] * maxZ + m_Frustum[i][3]) > 0)
- continue;
- if((m_Frustum[i][0] * maxX + m_Frustum[i][1] * minY + m_Frustum[i][2] * maxZ + m_Frustum[i][3]) > 0)
- continue;
- if((m_Frustum[i][0] * minX + m_Frustum[i][1] * maxY + m_Frustum[i][2] * maxZ + m_Frustum[i][3]) > 0)
- continue;
- if((m_Frustum[i][0] * maxX + m_Frustum[i][1] * maxY + m_Frustum[i][2] * maxZ + m_Frustum[i][3]) > 0)
- continue;
- return NOT_VISIBLE;
- }
- return part;
- }