void dgCollisionBVH::GetVertexListIndexList (const dgVector& p0, const dgVector& p1, dgGetVertexListIndexList &data) const { ForAllSectors (p0, p1, CollectVertexListIndexList, &data); data.m_veterxArray = GetLocalVertexPool(); data.m_vertexCount = GetVertexCount(); data.m_vertexStrideInBytes = GetStrideInBytes(); }
void dgCollisionBVH::ForEachFace (dgAABBIntersectCallback callback, void* const context) const { dgVector p0 (-1.0e10f, -1.0e10f, -1.0e10f, 1.0f); dgVector p1 ( 1.0e10f, 1.0e10f, 1.0e10f, 1.0f); dgVector zero (dgFloat32 (0.0f)); dgFastAABBInfo box (dgGetIdentityMatrix(), dgVector (dgFloat32 (1.0e15f))); //ForAllSectors (p0, p1, zero, dgFloat32 (1.0f), callback, context); ForAllSectors (box, zero, dgFloat32 (1.0f), callback, context); }
void dgCollisionBVH::GetVertexListIndexList (const dgVector& p0, const dgVector& p1, dgMeshVertexListIndexList &data) const { dgFastAABBInfo box (p0, p1); ForAllSectors (box, dgVector (dgFloat32 (0.0f)), dgFloat32 (1.0f), CollectVertexListIndexList, &data); data.m_veterxArray = GetLocalVertexPool(); data.m_vertexCount = GetVertexCount(); data.m_vertexStrideInBytes = GetStrideInBytes(); }
void dgCollisionBVH::DebugCollision (const dgMatrix& matrixPtr, dgCollision::OnDebugCollisionMeshCallback callback, void* const userData) const { dgCollisionBVHShowPolyContext context; context.m_matrix = matrixPtr; context.m_userData = userData;; context.m_callback = callback; dgFastAABBInfo box (dgGetIdentityMatrix(), dgVector (1.0e15f)); ForAllSectors (box, dgVector(dgFloat32 (0.0f)), dgFloat32 (1.0f), ShowDebugPolygon, &context); }
void dgCollisionBVH::DebugCollision (const dgMatrix& matrixPtr, OnDebugCollisionMeshCallback callback, void* const userData) const { dgCollisionBVHShowPolyContext context; context.m_matrix = matrixPtr; context.m_userData = userData;; context.m_callback = callback; dgVector p0 (dgFloat32 (-1.0e20f), dgFloat32 (-1.0e20f), dgFloat32 (-1.0e20f), dgFloat32 (0.0f)); dgVector p1 (dgFloat32 ( 1.0e20f), dgFloat32 ( 1.0e20f), dgFloat32 ( 1.0e20f), dgFloat32 (0.0f)); ForAllSectors (p0, p1, ShowDebugPolygon, &context); }
void dgCollisionBVH::GetCollidingFaces (dgPolygonMeshDesc* const data) const { data->m_me = this; data->m_vertex = GetLocalVertexPool(); data->m_vertexStrideInBytes = GetStrideInBytes(); data->m_faceCount = 0; data->m_globalIndexCount = 0; data->m_faceIndexCount = data->m_meshData.m_globalFaceIndexCount; data->m_faceIndexStart = data->m_meshData.m_globalFaceIndexStart; data->m_faceVertexIndex = data->m_globalFaceVertexIndex; data->m_hitDistance = data->m_meshData.m_globalHitDistance; ForAllSectors (*data, data->m_boxDistanceTravelInMeshSpace, data->m_maxT, GetPolygon, data); }
PBODY EnterWorld( INDEX iWorld ) { POBJECT root = CreateObject(); { RCOORD size; CDATA c; { DrawThis.iWorld = iWorld; DrawThis.root = root; ForAllSectors( iWorld, DrawSectorLines, 0 ); } } SetRootObject( root ); return NULL; }
void dgCollisionBVH::GetCollidingFaces (dgPolygonMeshDesc* const data) const { data->m_faceCount = 0; data->m_me = this; data->m_vertex = GetLocalVertexPool(); data->m_vertexStrideInBytes = GetStrideInBytes(); data->m_globalIndexCount = 0; data->m_faceMaxSize = data->m_globalFaceMaxSize; data->m_userAttribute = data->m_globalUserAttribute; data->m_faceIndexCount = data->m_globalFaceIndexCount; data->m_faceVertexIndex = data->m_globalFaceVertexIndex; data->m_faceNormalIndex = data->m_globalFaceNormalIndex; data->m_faceAdjencentEdgeNormal = data->m_globalAdjencentEdgeNormal; ForAllSectors (data->m_boxP0, data->m_boxP1, GetPolygon, data); }
void dgCollisionBVH::GetCollisionInfo(dgCollisionInfo* const info) const { dgCollision::GetCollisionInfo(info); dgMeshVertexListIndexList data; data.m_indexList = NULL; data.m_userDataList = NULL; data.m_maxIndexCount = 1000000000; data.m_triangleCount = 0; // dgVector p0 (-1.0e10f, -1.0e10f, -1.0e10f, 1.0f); // dgVector p1 ( 1.0e10f, 1.0e10f, 1.0e10f, 1.0f); dgVector zero (dgFloat32 (0.0f)); dgFastAABBInfo box (dgGetIdentityMatrix(), dgVector (dgFloat32 (1.0e15f))); ForAllSectors (box, zero, dgFloat32 (1.0f), GetTriangleCount, &data); info->m_bvhCollision.m_vertexCount = GetVertexCount(); info->m_bvhCollision.m_indexCount = data.m_triangleCount * 3; }
void dgCollisionBVH::GetCollisionInfo(dgCollisionInfo* info) const { dgCollision::GetCollisionInfo(info); info->m_offsetMatrix = GetOffsetMatrix(); info->m_collisionType = m_collsionId; dgGetVertexListIndexList data; data.m_indexList = NULL; data.m_userDataList = NULL; data.m_maxIndexCount = 1000000000; data.m_triangleCount = 0; dgVector p0 (-1.0e10f, -1.0e10f, -1.0e10f, 1.0f); dgVector p1 ( 1.0e10f, 1.0e10f, 1.0e10f, 1.0f); ForAllSectors (p0, p1, GetTriangleCount, &data); info->m_bvhCollision.m_vertexCount = GetVertexCount(); info->m_bvhCollision.m_indexCount = data.m_triangleCount * 3; }