fixes in debug drawer: always use rgba color with each component in range [0..1]
use sphere/box rendering of debug drawer Thanks accodejockey for the report: See http://code.google.com/p/bullet/issues/detail?id=280 Also see http://code.google.com/p/bullet/issues/detail?id=279
This commit is contained in:
@@ -33,6 +33,7 @@ public:
|
|||||||
renderTexture(int width,int height);
|
renderTexture(int width,int height);
|
||||||
~renderTexture();
|
~renderTexture();
|
||||||
|
|
||||||
|
///rgba input is in range [0..1] for each component
|
||||||
inline void setPixel(int x,int y,const btVector4& rgba)
|
inline void setPixel(int x,int y,const btVector4& rgba)
|
||||||
{
|
{
|
||||||
unsigned char* pixel = &m_buffer[ (x+y*m_width) * 4];
|
unsigned char* pixel = &m_buffer[ (x+y*m_width) * 4];
|
||||||
|
|||||||
@@ -78,10 +78,10 @@ void btQuantizedBvh::buildInternal()
|
|||||||
#ifdef DEBUG_PATCH_COLORS
|
#ifdef DEBUG_PATCH_COLORS
|
||||||
btVector3 color[4]=
|
btVector3 color[4]=
|
||||||
{
|
{
|
||||||
btVector3(255,0,0),
|
btVector3(1,0,0),
|
||||||
btVector3(0,255,0),
|
btVector3(0,1,0),
|
||||||
btVector3(0,0,255),
|
btVector3(0,0,1),
|
||||||
btVector3(0,255,255)
|
btVector3(0,1,1)
|
||||||
};
|
};
|
||||||
#endif //DEBUG_PATCH_COLORS
|
#endif //DEBUG_PATCH_COLORS
|
||||||
|
|
||||||
|
|||||||
@@ -943,32 +943,6 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void btCollisionWorld::debugDrawSphere(btScalar radius, const btTransform& transform, const btVector3& color)
|
|
||||||
{
|
|
||||||
btVector3 start = transform.getOrigin();
|
|
||||||
|
|
||||||
const btVector3 xoffs = transform.getBasis() * btVector3(radius,0,0);
|
|
||||||
const btVector3 yoffs = transform.getBasis() * btVector3(0,radius,0);
|
|
||||||
const btVector3 zoffs = transform.getBasis() * btVector3(0,0,radius);
|
|
||||||
|
|
||||||
// XY
|
|
||||||
getDebugDrawer()->drawLine(start-xoffs, start+yoffs, color);
|
|
||||||
getDebugDrawer()->drawLine(start+yoffs, start+xoffs, color);
|
|
||||||
getDebugDrawer()->drawLine(start+xoffs, start-yoffs, color);
|
|
||||||
getDebugDrawer()->drawLine(start-yoffs, start-xoffs, color);
|
|
||||||
|
|
||||||
// XZ
|
|
||||||
getDebugDrawer()->drawLine(start-xoffs, start+zoffs, color);
|
|
||||||
getDebugDrawer()->drawLine(start+zoffs, start+xoffs, color);
|
|
||||||
getDebugDrawer()->drawLine(start+xoffs, start-zoffs, color);
|
|
||||||
getDebugDrawer()->drawLine(start-zoffs, start-xoffs, color);
|
|
||||||
|
|
||||||
// YZ
|
|
||||||
getDebugDrawer()->drawLine(start-yoffs, start+zoffs, color);
|
|
||||||
getDebugDrawer()->drawLine(start+zoffs, start+yoffs, color);
|
|
||||||
getDebugDrawer()->drawLine(start+yoffs, start-zoffs, color);
|
|
||||||
getDebugDrawer()->drawLine(start-zoffs, start-yoffs, color);
|
|
||||||
}
|
|
||||||
|
|
||||||
void btCollisionWorld::debugDrawObject(const btTransform& worldTransform, const btCollisionShape* shape, const btVector3& color)
|
void btCollisionWorld::debugDrawObject(const btTransform& worldTransform, const btCollisionShape* shape, const btVector3& color)
|
||||||
{
|
{
|
||||||
@@ -995,12 +969,20 @@ void btCollisionWorld::debugDrawObject(const btTransform& worldTransform, const
|
|||||||
switch (shape->getShapeType())
|
switch (shape->getShapeType())
|
||||||
{
|
{
|
||||||
|
|
||||||
|
case BOX_SHAPE_PROXYTYPE:
|
||||||
|
{
|
||||||
|
const btBoxShape* boxShape = static_cast<const btBoxShape*>(shape);
|
||||||
|
btVector3 halfExtents = boxShape->getHalfExtentsWithMargin();
|
||||||
|
getDebugDrawer()->drawBox(-halfExtents,halfExtents,worldTransform,color);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case SPHERE_SHAPE_PROXYTYPE:
|
case SPHERE_SHAPE_PROXYTYPE:
|
||||||
{
|
{
|
||||||
const btSphereShape* sphereShape = static_cast<const btSphereShape*>(shape);
|
const btSphereShape* sphereShape = static_cast<const btSphereShape*>(shape);
|
||||||
btScalar radius = sphereShape->getMargin();//radius doesn't include the margin, so draw with margin
|
btScalar radius = sphereShape->getMargin();//radius doesn't include the margin, so draw with margin
|
||||||
|
|
||||||
debugDrawSphere(radius, worldTransform, color);
|
getDebugDrawer()->drawSphere(radius, worldTransform, color);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MULTI_SPHERE_SHAPE_PROXYTYPE:
|
case MULTI_SPHERE_SHAPE_PROXYTYPE:
|
||||||
@@ -1013,7 +995,7 @@ void btCollisionWorld::debugDrawObject(const btTransform& worldTransform, const
|
|||||||
for (int i = multiSphereShape->getSphereCount()-1; i>=0;i--)
|
for (int i = multiSphereShape->getSphereCount()-1; i>=0;i--)
|
||||||
{
|
{
|
||||||
childTransform.setOrigin(multiSphereShape->getSpherePosition(i));
|
childTransform.setOrigin(multiSphereShape->getSpherePosition(i));
|
||||||
debugDrawSphere(multiSphereShape->getSphereRadius(i), worldTransform*childTransform, color);
|
getDebugDrawer()->drawSphere(multiSphereShape->getSphereRadius(i), worldTransform*childTransform, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@@ -1039,13 +1021,13 @@ void btCollisionWorld::debugDrawObject(const btTransform& worldTransform, const
|
|||||||
|
|
||||||
btTransform childTransform = worldTransform;
|
btTransform childTransform = worldTransform;
|
||||||
childTransform.getOrigin() = worldTransform * capStart;
|
childTransform.getOrigin() = worldTransform * capStart;
|
||||||
debugDrawSphere(radius, childTransform, color);
|
getDebugDrawer()->drawSphere(radius, childTransform, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
btTransform childTransform = worldTransform;
|
btTransform childTransform = worldTransform;
|
||||||
childTransform.getOrigin() = worldTransform * capEnd;
|
childTransform.getOrigin() = worldTransform * capEnd;
|
||||||
debugDrawSphere(radius, childTransform, color);
|
getDebugDrawer()->drawSphere(radius, childTransform, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw some additional lines
|
// Draw some additional lines
|
||||||
@@ -1215,22 +1197,22 @@ void btCollisionWorld::debugDrawWorld()
|
|||||||
btCollisionObject* colObj = m_collisionObjects[i];
|
btCollisionObject* colObj = m_collisionObjects[i];
|
||||||
if (getDebugDrawer() && getDebugDrawer()->getDebugMode() & btIDebugDraw::DBG_DrawWireframe)
|
if (getDebugDrawer() && getDebugDrawer()->getDebugMode() & btIDebugDraw::DBG_DrawWireframe)
|
||||||
{
|
{
|
||||||
btVector3 color(btScalar(255.),btScalar(255.),btScalar(255.));
|
btVector3 color(btScalar(1.),btScalar(1.),btScalar(1.));
|
||||||
switch(colObj->getActivationState())
|
switch(colObj->getActivationState())
|
||||||
{
|
{
|
||||||
case ACTIVE_TAG:
|
case ACTIVE_TAG:
|
||||||
color = btVector3(btScalar(255.),btScalar(255.),btScalar(255.)); break;
|
color = btVector3(btScalar(1.),btScalar(1.),btScalar(1.)); break;
|
||||||
case ISLAND_SLEEPING:
|
case ISLAND_SLEEPING:
|
||||||
color = btVector3(btScalar(0.),btScalar(255.),btScalar(0.));break;
|
color = btVector3(btScalar(0.),btScalar(1.),btScalar(0.));break;
|
||||||
case WANTS_DEACTIVATION:
|
case WANTS_DEACTIVATION:
|
||||||
color = btVector3(btScalar(0.),btScalar(255.),btScalar(255.));break;
|
color = btVector3(btScalar(0.),btScalar(1.),btScalar(1.));break;
|
||||||
case DISABLE_DEACTIVATION:
|
case DISABLE_DEACTIVATION:
|
||||||
color = btVector3(btScalar(255.),btScalar(0.),btScalar(0.));break;
|
color = btVector3(btScalar(1.),btScalar(0.),btScalar(0.));break;
|
||||||
case DISABLE_SIMULATION:
|
case DISABLE_SIMULATION:
|
||||||
color = btVector3(btScalar(255.),btScalar(255.),btScalar(0.));break;
|
color = btVector3(btScalar(1.),btScalar(1.),btScalar(0.));break;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
color = btVector3(btScalar(255.),btScalar(0.),btScalar(0.));
|
color = btVector3(btScalar(1),btScalar(0.),btScalar(0.));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -154,8 +154,6 @@ public:
|
|||||||
|
|
||||||
virtual void debugDrawObject(const btTransform& worldTransform, const btCollisionShape* shape, const btVector3& color);
|
virtual void debugDrawObject(const btTransform& worldTransform, const btCollisionShape* shape, const btVector3& color);
|
||||||
|
|
||||||
void debugDrawSphere(btScalar radius, const btTransform& transform, const btVector3& color);
|
|
||||||
|
|
||||||
|
|
||||||
///LocalShapeInfo gives extra information for complex shapes
|
///LocalShapeInfo gives extra information for complex shapes
|
||||||
///Currently, only btTriangleMeshShape is available, so it just contains triangleIndex and subpart
|
///Currently, only btTriangleMeshShape is available, so it just contains triangleIndex and subpart
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ void btConvexTriangleCallback::processTriangle(btVector3* triangle,int partId, i
|
|||||||
///debug drawing of the overlapping triangles
|
///debug drawing of the overlapping triangles
|
||||||
if (m_dispatchInfoPtr && m_dispatchInfoPtr->m_debugDraw && (m_dispatchInfoPtr->m_debugDraw->getDebugMode() &btIDebugDraw::DBG_DrawWireframe ))
|
if (m_dispatchInfoPtr && m_dispatchInfoPtr->m_debugDraw && (m_dispatchInfoPtr->m_debugDraw->getDebugMode() &btIDebugDraw::DBG_DrawWireframe ))
|
||||||
{
|
{
|
||||||
btVector3 color(255,255,0);
|
btVector3 color(1,1,0);
|
||||||
btTransform& tr = ob->getWorldTransform();
|
btTransform& tr = ob->getWorldTransform();
|
||||||
m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[0]),tr(triangle[1]),color);
|
m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[0]),tr(triangle[1]),color);
|
||||||
m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[1]),tr(triangle[2]),color);
|
m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[1]),tr(triangle[2]),color);
|
||||||
|
|||||||
@@ -708,13 +708,13 @@ void btRaycastVehicle::debugDraw(btIDebugDraw* debugDrawer)
|
|||||||
|
|
||||||
for (int v=0;v<this->getNumWheels();v++)
|
for (int v=0;v<this->getNumWheels();v++)
|
||||||
{
|
{
|
||||||
btVector3 wheelColor(0,255,255);
|
btVector3 wheelColor(0,1,1);
|
||||||
if (getWheelInfo(v).m_raycastInfo.m_isInContact)
|
if (getWheelInfo(v).m_raycastInfo.m_isInContact)
|
||||||
{
|
{
|
||||||
wheelColor.setValue(0,0,255);
|
wheelColor.setValue(0,0,1);
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
wheelColor.setValue(255,0,255);
|
wheelColor.setValue(1,0,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
btVector3 wheelPosWS = getWheelInfo(v).m_worldTransform.getOrigin();
|
btVector3 wheelPosWS = getWheelInfo(v).m_worldTransform.getOrigin();
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ void btSoftBodyTriangleCallback::processTriangle(btVector3* triangle,int partId,
|
|||||||
///debug drawing of the overlapping triangles
|
///debug drawing of the overlapping triangles
|
||||||
if (m_dispatchInfoPtr && m_dispatchInfoPtr->m_debugDraw && m_dispatchInfoPtr->m_debugDraw->getDebugMode() &btIDebugDraw::DBG_DrawWireframe)
|
if (m_dispatchInfoPtr && m_dispatchInfoPtr->m_debugDraw && m_dispatchInfoPtr->m_debugDraw->getDebugMode() &btIDebugDraw::DBG_DrawWireframe)
|
||||||
{
|
{
|
||||||
btVector3 color(255,255,0);
|
btVector3 color(1,1,0);
|
||||||
btTransform& tr = ob->getWorldTransform();
|
btTransform& tr = ob->getWorldTransform();
|
||||||
m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[0]),tr(triangle[1]),color);
|
m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[0]),tr(triangle[1]),color);
|
||||||
m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[1]),tr(triangle[2]),color);
|
m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[1]),tr(triangle[2]),color);
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ subject to the following restrictions:
|
|||||||
///The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations.
|
///The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations.
|
||||||
///Typical use case: create a debug drawer object, and assign it to a btCollisionWorld or btDynamicsWorld using setDebugDrawer and call debugDrawWorld.
|
///Typical use case: create a debug drawer object, and assign it to a btCollisionWorld or btDynamicsWorld using setDebugDrawer and call debugDrawWorld.
|
||||||
///A class that implements the btIDebugDraw interface has to implement the drawLine method at a minimum.
|
///A class that implements the btIDebugDraw interface has to implement the drawLine method at a minimum.
|
||||||
|
///For color arguments the X,Y,Z components refer to Red, Green and Blue each in the range [0..1]
|
||||||
class btIDebugDraw
|
class btIDebugDraw
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -50,24 +51,49 @@ class btIDebugDraw
|
|||||||
|
|
||||||
virtual ~btIDebugDraw() {};
|
virtual ~btIDebugDraw() {};
|
||||||
|
|
||||||
|
virtual void drawLine(const btVector3& from,const btVector3& to,const btVector3& color)=0;
|
||||||
|
|
||||||
virtual void drawLine(const btVector3& from,const btVector3& to, const btVector3& fromColor, const btVector3& toColor)
|
virtual void drawLine(const btVector3& from,const btVector3& to, const btVector3& fromColor, const btVector3& toColor)
|
||||||
{
|
{
|
||||||
(void) fromColor; (void) toColor;
|
(void) toColor;
|
||||||
drawLine (from, to, fromColor);
|
drawLine (from, to, fromColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void drawBox (const btVector3& boxMin, const btVector3& boxMax, const btVector3& color, btScalar alpha)
|
void drawSphere(btScalar radius, const btTransform& transform, const btVector3& color)
|
||||||
{
|
{
|
||||||
(void) boxMin; (void) boxMax; (void) color; (void) alpha;
|
btVector3 start = transform.getOrigin();
|
||||||
|
|
||||||
|
const btVector3 xoffs = transform.getBasis() * btVector3(radius,0,0);
|
||||||
|
const btVector3 yoffs = transform.getBasis() * btVector3(0,radius,0);
|
||||||
|
const btVector3 zoffs = transform.getBasis() * btVector3(0,0,radius);
|
||||||
|
|
||||||
|
// XY
|
||||||
|
drawLine(start-xoffs, start+yoffs, color);
|
||||||
|
drawLine(start+yoffs, start+xoffs, color);
|
||||||
|
drawLine(start+xoffs, start-yoffs, color);
|
||||||
|
drawLine(start-yoffs, start-xoffs, color);
|
||||||
|
|
||||||
|
// XZ
|
||||||
|
drawLine(start-xoffs, start+zoffs, color);
|
||||||
|
drawLine(start+zoffs, start+xoffs, color);
|
||||||
|
drawLine(start+xoffs, start-zoffs, color);
|
||||||
|
drawLine(start-zoffs, start-xoffs, color);
|
||||||
|
|
||||||
|
// YZ
|
||||||
|
drawLine(start-yoffs, start+zoffs, color);
|
||||||
|
drawLine(start+zoffs, start+yoffs, color);
|
||||||
|
drawLine(start+yoffs, start-zoffs, color);
|
||||||
|
drawLine(start-zoffs, start-yoffs, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void drawSphere (const btVector3& p, btScalar radius, const btVector3& color)
|
virtual void drawSphere (const btVector3& p, btScalar radius, const btVector3& color)
|
||||||
{
|
{
|
||||||
(void) p; (void) radius; (void) color; (void) color;
|
btTransform tr;
|
||||||
|
tr.setIdentity();
|
||||||
|
tr.setOrigin(p);
|
||||||
|
drawSphere(radius,tr,color);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void drawLine(const btVector3& from,const btVector3& to,const btVector3& color)=0;
|
|
||||||
|
|
||||||
virtual void drawTriangle(const btVector3& v0,const btVector3& v1,const btVector3& v2,const btVector3& /*n0*/,const btVector3& /*n1*/,const btVector3& /*n2*/,const btVector3& color, btScalar alpha)
|
virtual void drawTriangle(const btVector3& v0,const btVector3& v1,const btVector3& v2,const btVector3& /*n0*/,const btVector3& /*n1*/,const btVector3& /*n2*/,const btVector3& color, btScalar alpha)
|
||||||
{
|
{
|
||||||
drawTriangle(v0,v1,v2,color,alpha);
|
drawTriangle(v0,v1,v2,color,alpha);
|
||||||
@@ -89,7 +115,7 @@ class btIDebugDraw
|
|||||||
|
|
||||||
virtual int getDebugMode() const = 0;
|
virtual int getDebugMode() const = 0;
|
||||||
|
|
||||||
inline void drawAabb(const btVector3& from,const btVector3& to,const btVector3& color)
|
virtual void drawAabb(const btVector3& from,const btVector3& to,const btVector3& color)
|
||||||
{
|
{
|
||||||
|
|
||||||
btVector3 halfExtents = (to-from)* 0.5f;
|
btVector3 halfExtents = (to-from)* 0.5f;
|
||||||
@@ -118,7 +144,7 @@ class btIDebugDraw
|
|||||||
edgecoord[i]*=-1.f;
|
edgecoord[i]*=-1.f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void drawTransform(const btTransform& transform, btScalar orthoLen)
|
virtual void drawTransform(const btTransform& transform, btScalar orthoLen)
|
||||||
{
|
{
|
||||||
btVector3 start = transform.getOrigin();
|
btVector3 start = transform.getOrigin();
|
||||||
drawLine(start, start+transform.getBasis() * btVector3(orthoLen, 0, 0), btVector3(0.7f,0,0));
|
drawLine(start, start+transform.getBasis() * btVector3(orthoLen, 0, 0), btVector3(0.7f,0,0));
|
||||||
@@ -126,7 +152,7 @@ class btIDebugDraw
|
|||||||
drawLine(start, start+transform.getBasis() * btVector3(0, 0, orthoLen), btVector3(0,0,0.7f));
|
drawLine(start, start+transform.getBasis() * btVector3(0, 0, orthoLen), btVector3(0,0,0.7f));
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawArc(const btVector3& center, const btVector3& normal, const btVector3& axis, btScalar radiusA, btScalar radiusB, btScalar minAngle, btScalar maxAngle,
|
virtual void drawArc(const btVector3& center, const btVector3& normal, const btVector3& axis, btScalar radiusA, btScalar radiusB, btScalar minAngle, btScalar maxAngle,
|
||||||
const btVector3& color, bool drawSect, btScalar stepDegrees = btScalar(10.f))
|
const btVector3& color, bool drawSect, btScalar stepDegrees = btScalar(10.f))
|
||||||
{
|
{
|
||||||
const btVector3& vx = axis;
|
const btVector3& vx = axis;
|
||||||
@@ -151,7 +177,7 @@ class btIDebugDraw
|
|||||||
drawLine(center, prev, color);
|
drawLine(center, prev, color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void drawSpherePatch(const btVector3& center, const btVector3& up, const btVector3& axis, btScalar radius,
|
virtual void drawSpherePatch(const btVector3& center, const btVector3& up, const btVector3& axis, btScalar radius,
|
||||||
btScalar minTh, btScalar maxTh, btScalar minPs, btScalar maxPs, const btVector3& color, btScalar stepDegrees = btScalar(10.f))
|
btScalar minTh, btScalar maxTh, btScalar minPs, btScalar maxPs, const btVector3& color, btScalar stepDegrees = btScalar(10.f))
|
||||||
{
|
{
|
||||||
btVector3 vA[74];
|
btVector3 vA[74];
|
||||||
@@ -253,7 +279,7 @@ class btIDebugDraw
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawBox(const btVector3& bbMin, const btVector3& bbMax, const btVector3& color)
|
virtual void drawBox(const btVector3& bbMin, const btVector3& bbMax, const btVector3& color)
|
||||||
{
|
{
|
||||||
drawLine(btVector3(bbMin[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMin[1], bbMin[2]), color);
|
drawLine(btVector3(bbMin[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMin[1], bbMin[2]), color);
|
||||||
drawLine(btVector3(bbMax[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMax[1], bbMin[2]), color);
|
drawLine(btVector3(bbMax[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMax[1], bbMin[2]), color);
|
||||||
@@ -268,7 +294,7 @@ class btIDebugDraw
|
|||||||
drawLine(btVector3(bbMax[0], bbMax[1], bbMax[2]), btVector3(bbMin[0], bbMax[1], bbMax[2]), color);
|
drawLine(btVector3(bbMax[0], bbMax[1], bbMax[2]), btVector3(bbMin[0], bbMax[1], bbMax[2]), color);
|
||||||
drawLine(btVector3(bbMin[0], bbMax[1], bbMax[2]), btVector3(bbMin[0], bbMin[1], bbMax[2]), color);
|
drawLine(btVector3(bbMin[0], bbMax[1], bbMax[2]), btVector3(bbMin[0], bbMin[1], bbMax[2]), color);
|
||||||
}
|
}
|
||||||
void drawBox(const btVector3& bbMin, const btVector3& bbMax, const btTransform& trans, const btVector3& color)
|
virtual void drawBox(const btVector3& bbMin, const btVector3& bbMax, const btTransform& trans, const btVector3& color)
|
||||||
{
|
{
|
||||||
drawLine(trans * btVector3(bbMin[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), color);
|
drawLine(trans * btVector3(bbMin[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), color);
|
||||||
drawLine(trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMax[1], bbMin[2]), color);
|
drawLine(trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMax[1], bbMin[2]), color);
|
||||||
|
|||||||
Reference in New Issue
Block a user