URDF import demo: add COLLADA .dae file support add FiniteElementMethod demo, extracted from the OpenTissue library (under the zlib license) don't crash if loading an invalid STL file add comparison with Assimp for COLLADA file loading (disabled by default, to avoid library dependency) Gwen: disable some flags that make the build incompatible
110 lines
2.5 KiB
C++
110 lines
2.5 KiB
C++
#ifndef MY_DEBUG_DRAWER_H
|
|
#define MY_DEBUG_DRAWER_H
|
|
|
|
#include "LinearMath/btIDebugDraw.h"
|
|
#include "LinearMath/btAlignedObjectArray.h"
|
|
#include "OpenGLWindow/CommonGraphicsApp.h"
|
|
|
|
#define BT_LINE_BATCH_SIZE 512
|
|
|
|
struct MyDebugVec3
|
|
{
|
|
MyDebugVec3(const btVector3& org)
|
|
:x(org.x()),
|
|
y(org.y()),
|
|
z(org.z())
|
|
{
|
|
}
|
|
|
|
float x;
|
|
float y;
|
|
float z;
|
|
};
|
|
class MyDebugDrawer : public btIDebugDraw
|
|
{
|
|
CommonGraphicsApp* m_glApp;
|
|
int m_debugMode;
|
|
|
|
btAlignedObjectArray<MyDebugVec3> m_linePoints;
|
|
btAlignedObjectArray<unsigned int> m_lineIndices;
|
|
btVector3 m_currentLineColor;
|
|
|
|
public:
|
|
|
|
MyDebugDrawer(CommonGraphicsApp* app)
|
|
: m_glApp(app)
|
|
,m_debugMode(btIDebugDraw::DBG_DrawWireframe|btIDebugDraw::DBG_DrawAabb),
|
|
m_currentLineColor(-1,-1,-1)
|
|
{
|
|
|
|
}
|
|
virtual void drawLine(const btVector3& from1,const btVector3& to1,const btVector3& color1)
|
|
{
|
|
//float from[4] = {from1[0],from1[1],from1[2],from1[3]};
|
|
//float to[4] = {to1[0],to1[1],to1[2],to1[3]};
|
|
//float color[4] = {color1[0],color1[1],color1[2],color1[3]};
|
|
//m_glApp->m_instancingRenderer->drawLine(from,to,color);
|
|
if (m_currentLineColor!=color1 || m_linePoints.size() >= BT_LINE_BATCH_SIZE)
|
|
{
|
|
flushLines();
|
|
m_currentLineColor = color1;
|
|
}
|
|
MyDebugVec3 from(from1);
|
|
MyDebugVec3 to(to1);
|
|
|
|
m_linePoints.push_back(from);
|
|
m_linePoints.push_back(to);
|
|
|
|
m_lineIndices.push_back(m_lineIndices.size());
|
|
m_lineIndices.push_back(m_lineIndices.size());
|
|
|
|
}
|
|
|
|
virtual void drawContactPoint(const btVector3& PointOnB,const btVector3& normalOnB,btScalar distance,int lifeTime,const btVector3& color)
|
|
{
|
|
drawLine(PointOnB,PointOnB+normalOnB,color);
|
|
}
|
|
|
|
|
|
virtual void reportErrorWarning(const char* warningString)
|
|
{
|
|
}
|
|
|
|
virtual void draw3dText(const btVector3& location,const char* textString)
|
|
{
|
|
}
|
|
|
|
virtual void setDebugMode(int debugMode)
|
|
{
|
|
m_debugMode = debugMode;
|
|
}
|
|
|
|
virtual int getDebugMode() const
|
|
{
|
|
return m_debugMode;
|
|
}
|
|
|
|
virtual void flushLines()
|
|
{
|
|
int sz = m_linePoints.size();
|
|
if (sz)
|
|
{
|
|
float debugColor[4];
|
|
debugColor[0] = m_currentLineColor.x();
|
|
debugColor[1] = m_currentLineColor.y();
|
|
debugColor[2] = m_currentLineColor.z();
|
|
debugColor[3] = 1.f;
|
|
m_glApp->m_renderer->drawLines(&m_linePoints[0].x,debugColor,
|
|
m_linePoints.size(),sizeof(MyDebugVec3),
|
|
&m_lineIndices[0],
|
|
m_lineIndices.size(),
|
|
1);
|
|
m_linePoints.clear();
|
|
m_lineIndices.clear();
|
|
}
|
|
}
|
|
|
|
};
|
|
|
|
#endif //MY_DEBUG_DRAWER_H
|