//---------------------------------------------------------------------------- TriMesh* StandardMesh::Box (float fXExtent, float fYExtent, float fZExtent) { int iVQuantity = 8; int iTQuantity = 12; CreateData(iVQuantity,iTQuantity); // generate geometry m_akVertex[0] = Vector3f(-fXExtent,-fYExtent,-fZExtent); m_akVertex[1] = Vector3f(+fXExtent,-fYExtent,-fZExtent); m_akVertex[2] = Vector3f(+fXExtent,+fYExtent,-fZExtent); m_akVertex[3] = Vector3f(-fXExtent,+fYExtent,-fZExtent); m_akVertex[4] = Vector3f(-fXExtent,-fYExtent,+fZExtent); m_akVertex[5] = Vector3f(+fXExtent,-fYExtent,+fZExtent); m_akVertex[6] = Vector3f(+fXExtent,+fYExtent,+fZExtent); m_akVertex[7] = Vector3f(-fXExtent,+fYExtent,+fZExtent); if (m_bUVs) { m_akUV[0] = Vector2f(0.25f,0.75f); m_akUV[1] = Vector2f(0.75f,0.75f); m_akUV[2] = Vector2f(0.75f,0.25f); m_akUV[3] = Vector2f(0.25f,0.25f); m_akUV[4] = Vector2f(0.0f,1.0f); m_akUV[5] = Vector2f(1.0f,1.0f); m_akUV[6] = Vector2f(1.0f,0.0f); m_akUV[7] = Vector2f(0.0f,0.0f); } // generate connectivity (outside view) m_aiIndex[ 0] = 0; m_aiIndex[ 1] = 2; m_aiIndex[ 2] = 1; m_aiIndex[ 3] = 0; m_aiIndex[ 4] = 3; m_aiIndex[ 5] = 2; m_aiIndex[ 6] = 0; m_aiIndex[ 7] = 1; m_aiIndex[ 8] = 5; m_aiIndex[ 9] = 0; m_aiIndex[10] = 5; m_aiIndex[11] = 4; m_aiIndex[12] = 0; m_aiIndex[13] = 4; m_aiIndex[14] = 7; m_aiIndex[15] = 0; m_aiIndex[16] = 7; m_aiIndex[17] = 3; m_aiIndex[18] = 6; m_aiIndex[19] = 4; m_aiIndex[20] = 5; m_aiIndex[21] = 6; m_aiIndex[22] = 7; m_aiIndex[23] = 4; m_aiIndex[24] = 6; m_aiIndex[25] = 5; m_aiIndex[26] = 1; m_aiIndex[27] = 6; m_aiIndex[28] = 1; m_aiIndex[29] = 2; m_aiIndex[30] = 6; m_aiIndex[31] = 2; m_aiIndex[32] = 3; m_aiIndex[33] = 6; m_aiIndex[34] = 3; m_aiIndex[35] = 7; if (m_bInside) { ReverseTriangleOrder(iTQuantity); } TransformData(iVQuantity); TriMesh* pkMesh = WM3_NEW TriMesh(m_spkVertices,m_spkIndices,false); if (m_spkNormals) { pkMesh->Normals = m_spkNormals; pkMesh->UpdateMS(true); } return pkMesh; }