END_TEST START_TEST(test_parse_cpu_string) { numa_node nn; std::string str("0-1,8-9"); nn.parse_cpu_string(str); fail_unless(nn.get_total_cpus() == 4); fail_unless(nn.get_available_cpus() == 4); std::string str2("0,8"); numa_node n2; n2.parse_cpu_string(str2); fail_unless(n2.get_total_cpus() == 2); fail_unless(n2.get_available_cpus() == 2); numa_node nn2("torque2", 0); fail_unless(nn2.get_total_cpus() == 2); fail_unless(nn2.get_available_cpus() == 2); numa_node nn4("torque4", 0); fail_unless(nn4.get_total_cpus() == 4); fail_unless(nn4.get_available_cpus() == 4); }
//------------------------------------------------------------- //- GetMeshPointFromSecondTexCoord //- Get real vertex position and normal from mesh according to TexCoord1 //------------------------------------------------------------- bool CSGPModelMF1::GetMeshPointFromSecondTexCoord( Vector3D& position, Vector3D& normal, const Vector2D& uv, const Matrix4x4& modelMatrix ) { for( uint32 i=0; i<m_Header.m_iNumMeshes; i++ ) { if( !m_pLOD0Meshes[i].m_pTexCoords1 || (m_pLOD0Meshes[i].m_iNumUV1==0) ) continue; jassert( m_pLOD0Meshes[i].m_iNumUV0 == m_pLOD0Meshes[i].m_iNumUV1 ); for( uint32 j=0; j<m_pLOD0Meshes[i].m_iNumIndices; j += 3 ) { Vector3D v0( m_pLOD0Meshes[i].m_pVertex[ m_pLOD0Meshes[i].m_pIndices[j ] ].vPos[0], m_pLOD0Meshes[i].m_pVertex[ m_pLOD0Meshes[i].m_pIndices[j ] ].vPos[1], m_pLOD0Meshes[i].m_pVertex[ m_pLOD0Meshes[i].m_pIndices[j ] ].vPos[2] ); Vector3D v1( m_pLOD0Meshes[i].m_pVertex[ m_pLOD0Meshes[i].m_pIndices[j+1] ].vPos[0], m_pLOD0Meshes[i].m_pVertex[ m_pLOD0Meshes[i].m_pIndices[j+1] ].vPos[1], m_pLOD0Meshes[i].m_pVertex[ m_pLOD0Meshes[i].m_pIndices[j+1] ].vPos[2] ); Vector3D v2( m_pLOD0Meshes[i].m_pVertex[ m_pLOD0Meshes[i].m_pIndices[j+2] ].vPos[0], m_pLOD0Meshes[i].m_pVertex[ m_pLOD0Meshes[i].m_pIndices[j+2] ].vPos[1], m_pLOD0Meshes[i].m_pVertex[ m_pLOD0Meshes[i].m_pIndices[j+2] ].vPos[2] ); v0 = v0 * modelMatrix; v1 = v1 * modelMatrix; v2 = v2 * modelMatrix; Vector2D t0(m_pLOD0Meshes[i].m_pTexCoords1[ m_pLOD0Meshes[i].m_pIndices[j ] ].m_fTexCoord[0], m_pLOD0Meshes[i].m_pTexCoords1[ m_pLOD0Meshes[i].m_pIndices[j ] ].m_fTexCoord[1] ); Vector2D t1(m_pLOD0Meshes[i].m_pTexCoords1[ m_pLOD0Meshes[i].m_pIndices[j+1] ].m_fTexCoord[0], m_pLOD0Meshes[i].m_pTexCoords1[ m_pLOD0Meshes[i].m_pIndices[j+1] ].m_fTexCoord[1] ); Vector2D t2(m_pLOD0Meshes[i].m_pTexCoords1[ m_pLOD0Meshes[i].m_pIndices[j+2] ].m_fTexCoord[0], m_pLOD0Meshes[i].m_pTexCoords1[ m_pLOD0Meshes[i].m_pIndices[j+2] ].m_fTexCoord[1] ); Vector3D samplePos = TexcoordToPos( v0, v1, v2, t0, t1, t2, uv ); if( !IsPointInsideTriangle(v0, v1, v2, samplePos, 0.1f) ) continue; else { Vector4D n0( m_pLOD0Meshes[i].m_pVertex[ m_pLOD0Meshes[i].m_pIndices[j ] ].vNormal[0], m_pLOD0Meshes[i].m_pVertex[ m_pLOD0Meshes[i].m_pIndices[j ] ].vNormal[1], m_pLOD0Meshes[i].m_pVertex[ m_pLOD0Meshes[i].m_pIndices[j ] ].vNormal[2], 0); Vector4D n1( m_pLOD0Meshes[i].m_pVertex[ m_pLOD0Meshes[i].m_pIndices[j+1] ].vNormal[0], m_pLOD0Meshes[i].m_pVertex[ m_pLOD0Meshes[i].m_pIndices[j+1] ].vNormal[1], m_pLOD0Meshes[i].m_pVertex[ m_pLOD0Meshes[i].m_pIndices[j+1] ].vNormal[2], 0); Vector4D n2( m_pLOD0Meshes[i].m_pVertex[ m_pLOD0Meshes[i].m_pIndices[j+2] ].vNormal[0], m_pLOD0Meshes[i].m_pVertex[ m_pLOD0Meshes[i].m_pIndices[j+2] ].vNormal[1], m_pLOD0Meshes[i].m_pVertex[ m_pLOD0Meshes[i].m_pIndices[j+2] ].vNormal[2], 0); n0 = n0 * modelMatrix; n1 = n1 * modelMatrix; n2 = n2 * modelMatrix; Vector3D nn0(n0.x, n0.y, n0.z); Vector3D nn1(n1.x, n1.y, n1.z); Vector3D nn2(n2.x, n2.y, n2.z); nn0.Normalize(); nn1.Normalize(); nn2.Normalize(); normal = TexcoordToPos( nn0, nn1, nn2, t0, t1, t2, uv ); normal.Normalize(); position = samplePos; return true; } } } return false; }