mirror of
https://github.com/bulletphysics/bullet3
synced 2024-12-14 05:40:05 +00:00
fix issue (apparently closestFaceA/B can be -1, need to figure out how that can ever happen (it shouldn’t)
This commit is contained in:
parent
7964f2d8c1
commit
7bde13be62
@ -1539,7 +1539,7 @@ inline int findClippingFaces(const float4 separatingNormal,
|
|||||||
int numWorldVertsB1= 0;
|
int numWorldVertsB1= 0;
|
||||||
|
|
||||||
|
|
||||||
int closestFaceB=-1;
|
int closestFaceB=0;
|
||||||
float dmax = -FLT_MAX;
|
float dmax = -FLT_MAX;
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -1573,7 +1573,7 @@ inline int findClippingFaces(const float4 separatingNormal,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int closestFaceA=-1;
|
int closestFaceA=0;
|
||||||
{
|
{
|
||||||
float dmin = FLT_MAX;
|
float dmin = FLT_MAX;
|
||||||
for(int face=0;face<hullA->m_numFaces;face++)
|
for(int face=0;face<hullA->m_numFaces;face++)
|
||||||
|
@ -597,7 +597,7 @@ inline int findClippingFaces(const float4 separatingNormal,
|
|||||||
int numWorldVertsB1= 0;
|
int numWorldVertsB1= 0;
|
||||||
|
|
||||||
|
|
||||||
int closestFaceB=-1;
|
int closestFaceB=0;
|
||||||
float dmax = -FLT_MAX;
|
float dmax = -FLT_MAX;
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -620,6 +620,8 @@ inline int findClippingFaces(const float4 separatingNormal,
|
|||||||
int numVertices = polyB.m_numIndices;
|
int numVertices = polyB.m_numIndices;
|
||||||
if (numVertices>capacityWorldVerts)
|
if (numVertices>capacityWorldVerts)
|
||||||
numVertices = capacityWorldVerts;
|
numVertices = capacityWorldVerts;
|
||||||
|
if (numVertices<0)
|
||||||
|
numVertices = 0;
|
||||||
|
|
||||||
for(int e0=0;e0<numVertices;e0++)
|
for(int e0=0;e0<numVertices;e0++)
|
||||||
{
|
{
|
||||||
@ -631,7 +633,7 @@ inline int findClippingFaces(const float4 separatingNormal,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int closestFaceA=-1;
|
int closestFaceA=0;
|
||||||
{
|
{
|
||||||
float dmin = FLT_MAX;
|
float dmin = FLT_MAX;
|
||||||
for(int face=0;face<hullA->m_numFaces;face++)
|
for(int face=0;face<hullA->m_numFaces;face++)
|
||||||
@ -656,6 +658,8 @@ inline int findClippingFaces(const float4 separatingNormal,
|
|||||||
int numVerticesA = facesA[hullA->m_faceOffset+closestFaceA].m_numIndices;
|
int numVerticesA = facesA[hullA->m_faceOffset+closestFaceA].m_numIndices;
|
||||||
if (numVerticesA>capacityWorldVerts)
|
if (numVerticesA>capacityWorldVerts)
|
||||||
numVerticesA = capacityWorldVerts;
|
numVerticesA = capacityWorldVerts;
|
||||||
|
if (numVerticesA<0)
|
||||||
|
numVerticesA=0;
|
||||||
|
|
||||||
for(int e0=0;e0<numVerticesA;e0++)
|
for(int e0=0;e0<numVerticesA;e0++)
|
||||||
{
|
{
|
||||||
@ -1179,6 +1183,7 @@ __kernel void findConcaveSeparatingAxisEdgeEdgeKernel( __global int4* concaveP
|
|||||||
float minDist = -1e30f;
|
float minDist = -1e30f;
|
||||||
float maxDist = 0.02f;
|
float maxDist = 0.02f;
|
||||||
|
|
||||||
|
|
||||||
findClippingFaces(sepAxis,
|
findClippingFaces(sepAxis,
|
||||||
&convexPolyhedronA,
|
&convexPolyhedronA,
|
||||||
&convexShapes[shapeIndexB],
|
&convexShapes[shapeIndexB],
|
||||||
|
@ -809,7 +809,7 @@ static const char* satConcaveKernelsCL= \
|
|||||||
" int numWorldVertsB1= 0;\n"
|
" int numWorldVertsB1= 0;\n"
|
||||||
" \n"
|
" \n"
|
||||||
" \n"
|
" \n"
|
||||||
" int closestFaceB=-1;\n"
|
" int closestFaceB=0;\n"
|
||||||
" float dmax = -FLT_MAX;\n"
|
" float dmax = -FLT_MAX;\n"
|
||||||
" \n"
|
" \n"
|
||||||
" {\n"
|
" {\n"
|
||||||
@ -832,6 +832,8 @@ static const char* satConcaveKernelsCL= \
|
|||||||
" int numVertices = polyB.m_numIndices;\n"
|
" int numVertices = polyB.m_numIndices;\n"
|
||||||
" if (numVertices>capacityWorldVerts)\n"
|
" if (numVertices>capacityWorldVerts)\n"
|
||||||
" numVertices = capacityWorldVerts;\n"
|
" numVertices = capacityWorldVerts;\n"
|
||||||
|
" if (numVertices<0)\n"
|
||||||
|
" numVertices = 0;\n"
|
||||||
" \n"
|
" \n"
|
||||||
" for(int e0=0;e0<numVertices;e0++)\n"
|
" for(int e0=0;e0<numVertices;e0++)\n"
|
||||||
" {\n"
|
" {\n"
|
||||||
@ -843,7 +845,7 @@ static const char* satConcaveKernelsCL= \
|
|||||||
" }\n"
|
" }\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
" \n"
|
" \n"
|
||||||
" int closestFaceA=-1;\n"
|
" int closestFaceA=0;\n"
|
||||||
" {\n"
|
" {\n"
|
||||||
" float dmin = FLT_MAX;\n"
|
" float dmin = FLT_MAX;\n"
|
||||||
" for(int face=0;face<hullA->m_numFaces;face++)\n"
|
" for(int face=0;face<hullA->m_numFaces;face++)\n"
|
||||||
@ -868,6 +870,8 @@ static const char* satConcaveKernelsCL= \
|
|||||||
" int numVerticesA = facesA[hullA->m_faceOffset+closestFaceA].m_numIndices;\n"
|
" int numVerticesA = facesA[hullA->m_faceOffset+closestFaceA].m_numIndices;\n"
|
||||||
" if (numVerticesA>capacityWorldVerts)\n"
|
" if (numVerticesA>capacityWorldVerts)\n"
|
||||||
" numVerticesA = capacityWorldVerts;\n"
|
" numVerticesA = capacityWorldVerts;\n"
|
||||||
|
" if (numVerticesA<0)\n"
|
||||||
|
" numVerticesA=0;\n"
|
||||||
" \n"
|
" \n"
|
||||||
" for(int e0=0;e0<numVerticesA;e0++)\n"
|
" for(int e0=0;e0<numVerticesA;e0++)\n"
|
||||||
" {\n"
|
" {\n"
|
||||||
@ -1382,6 +1386,7 @@ static const char* satConcaveKernelsCL= \
|
|||||||
" \n"
|
" \n"
|
||||||
" float minDist = -1e30f;\n"
|
" float minDist = -1e30f;\n"
|
||||||
" float maxDist = 0.02f;\n"
|
" float maxDist = 0.02f;\n"
|
||||||
|
" \n"
|
||||||
" findClippingFaces(sepAxis,\n"
|
" findClippingFaces(sepAxis,\n"
|
||||||
" &convexPolyhedronA,\n"
|
" &convexPolyhedronA,\n"
|
||||||
" &convexShapes[shapeIndexB],\n"
|
" &convexShapes[shapeIndexB],\n"
|
||||||
|
@ -1642,7 +1642,7 @@ static const char* satKernelsCL= \
|
|||||||
" int numWorldVertsB1= 0;\n"
|
" int numWorldVertsB1= 0;\n"
|
||||||
" \n"
|
" \n"
|
||||||
" \n"
|
" \n"
|
||||||
" int closestFaceB=-1;\n"
|
" int closestFaceB=0;\n"
|
||||||
" float dmax = -FLT_MAX;\n"
|
" float dmax = -FLT_MAX;\n"
|
||||||
" \n"
|
" \n"
|
||||||
" {\n"
|
" {\n"
|
||||||
@ -1676,7 +1676,7 @@ static const char* satKernelsCL= \
|
|||||||
" }\n"
|
" }\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
" \n"
|
" \n"
|
||||||
" int closestFaceA=-1;\n"
|
" int closestFaceA=0;\n"
|
||||||
" {\n"
|
" {\n"
|
||||||
" float dmin = FLT_MAX;\n"
|
" float dmin = FLT_MAX;\n"
|
||||||
" for(int face=0;face<hullA->m_numFaces;face++)\n"
|
" for(int face=0;face<hullA->m_numFaces;face++)\n"
|
||||||
|
Loading…
Reference in New Issue
Block a user