//--------------------------------------------------------- int CMesh::FrustumSelect( Vector3 Normals[4], Vector3 Points[8] ) { int nbHits = 0; Vector3 Tri[3]; for (int nTri = 0; nTri < (int)mTriCount; nTri++ ) { int nV = nTri*3; Tri[0] = mVertices[ mIndices[ nV ] ]; Tri[1] = mVertices[ mIndices[ nV+1 ] ]; Tri[2] = mVertices[ mIndices[ nV+2 ] ]; if ( TriInFrustum( Tri, Normals, Points ) ) { selectTriangle( nTri ); nbHits++; } } return nbHits; }
// // Select mesh triangles that are in a frustum defined by 8 Points( and 4 face normals ) // I'm currently ignoring near and far planes, but they could be easily added // int CMesh::FrustumSelect( CVec3 Normals[4], CVec3 Points[8] ) { int nbHits = 0; CVec3 Tri[3]; for (int nTri = 0; nTri < m_nbTris; nTri++ ) { int nV = nTri*3; Tri[0] = m_pVerts[ m_pTris[ nV ] ]; Tri[1] = m_pVerts[ m_pTris[ nV+1 ] ]; Tri[2] = m_pVerts[ m_pTris[ nV+2 ] ]; if ( TriInFrustum( Tri, Normals, Points ) ) { SelectTriangle( nTri ); nbHits++; } } return nbHits; }