Add the old Bullet 2.x obsolete demos, and CMake buildsystem files, and gradually move them to newer Bullet 3.x structure
Use statically linked freeglut, instead of dynamic glut for the obsolete Bullet 2.x demos Add the 'reset' method to b3GpuDynamicsWorld, and use it in the BasicGpuDemo (pretty slow in debug mode, use release mode) Don't crash in btCollisionWorld, if there is no collision dispatcher
This commit is contained in:
130
ObsoleteDemos/OpenGL/GLDebugDrawer.cpp
Normal file
130
ObsoleteDemos/OpenGL/GLDebugDrawer.cpp
Normal file
@@ -0,0 +1,130 @@
|
||||
|
||||
#include "GLDebugDrawer.h"
|
||||
#include "GLDebugFont.h"
|
||||
#include "GlutStuff.h"
|
||||
|
||||
|
||||
|
||||
#include <stdio.h> //printf debugging
|
||||
GLDebugDrawer::GLDebugDrawer()
|
||||
:m_debugMode(0)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
GLDebugDrawer::~GLDebugDrawer()
|
||||
{
|
||||
}
|
||||
|
||||
void GLDebugDrawer::drawLine(const btVector3& from,const btVector3& to,const btVector3& fromColor, const btVector3& toColor)
|
||||
{
|
||||
glBegin(GL_LINES);
|
||||
glColor3f(fromColor.getX(), fromColor.getY(), fromColor.getZ());
|
||||
glVertex3d(from.getX(), from.getY(), from.getZ());
|
||||
glColor3f(toColor.getX(), toColor.getY(), toColor.getZ());
|
||||
glVertex3d(to.getX(), to.getY(), to.getZ());
|
||||
glEnd();
|
||||
}
|
||||
|
||||
void GLDebugDrawer::drawLine(const btVector3& from,const btVector3& to,const btVector3& color)
|
||||
{
|
||||
drawLine(from,to,color,color);
|
||||
}
|
||||
|
||||
void GLDebugDrawer::drawSphere (const btVector3& p, btScalar radius, const btVector3& color)
|
||||
{
|
||||
glColor4f (color.getX(), color.getY(), color.getZ(), btScalar(1.0f));
|
||||
glPushMatrix ();
|
||||
glTranslatef (p.getX(), p.getY(), p.getZ());
|
||||
|
||||
int lats = 5;
|
||||
int longs = 5;
|
||||
|
||||
int i, j;
|
||||
for(i = 0; i <= lats; i++) {
|
||||
btScalar lat0 = SIMD_PI * (-btScalar(0.5) + (btScalar) (i - 1) / lats);
|
||||
btScalar z0 = radius*sin(lat0);
|
||||
btScalar zr0 = radius*cos(lat0);
|
||||
|
||||
btScalar lat1 = SIMD_PI * (-btScalar(0.5) + (btScalar) i / lats);
|
||||
btScalar z1 = radius*sin(lat1);
|
||||
btScalar zr1 = radius*cos(lat1);
|
||||
|
||||
glBegin(GL_QUAD_STRIP);
|
||||
for(j = 0; j <= longs; j++) {
|
||||
btScalar lng = 2 * SIMD_PI * (btScalar) (j - 1) / longs;
|
||||
btScalar x = cos(lng);
|
||||
btScalar y = sin(lng);
|
||||
|
||||
glNormal3f(x * zr0, y * zr0, z0);
|
||||
glVertex3f(x * zr0, y * zr0, z0);
|
||||
glNormal3f(x * zr1, y * zr1, z1);
|
||||
glVertex3f(x * zr1, y * zr1, z1);
|
||||
}
|
||||
glEnd();
|
||||
}
|
||||
|
||||
glPopMatrix();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void GLDebugDrawer::drawTriangle(const btVector3& a,const btVector3& b,const btVector3& c,const btVector3& color,btScalar alpha)
|
||||
{
|
||||
// if (m_debugMode > 0)
|
||||
{
|
||||
const btVector3 n=btCross(b-a,c-a).normalized();
|
||||
glBegin(GL_TRIANGLES);
|
||||
glColor4f(color.getX(), color.getY(), color.getZ(),alpha);
|
||||
glNormal3d(n.getX(),n.getY(),n.getZ());
|
||||
glVertex3d(a.getX(),a.getY(),a.getZ());
|
||||
glVertex3d(b.getX(),b.getY(),b.getZ());
|
||||
glVertex3d(c.getX(),c.getY(),c.getZ());
|
||||
glEnd();
|
||||
}
|
||||
}
|
||||
|
||||
void GLDebugDrawer::setDebugMode(int debugMode)
|
||||
{
|
||||
m_debugMode = debugMode;
|
||||
|
||||
}
|
||||
|
||||
void GLDebugDrawer::draw3dText(const btVector3& location,const char* textString)
|
||||
{
|
||||
glRasterPos3f(location.x(), location.y(), location.z());
|
||||
//BMF_DrawString(BMF_GetFont(BMF_kHelvetica10),textString);
|
||||
}
|
||||
|
||||
void GLDebugDrawer::reportErrorWarning(const char* warningString)
|
||||
{
|
||||
printf("%s\n",warningString);
|
||||
}
|
||||
|
||||
void GLDebugDrawer::drawContactPoint(const btVector3& pointOnB,const btVector3& normalOnB,btScalar distance,int lifeTime,const btVector3& color)
|
||||
{
|
||||
|
||||
{
|
||||
btVector3 to=pointOnB+normalOnB*1;//distance;
|
||||
const btVector3&from = pointOnB;
|
||||
glColor4f(color.getX(), color.getY(), color.getZ(),1.f);
|
||||
//glColor4f(0,0,0,1.f);
|
||||
glBegin(GL_LINES);
|
||||
glVertex3d(from.getX(), from.getY(), from.getZ());
|
||||
glVertex3d(to.getX(), to.getY(), to.getZ());
|
||||
glEnd();
|
||||
|
||||
|
||||
// glRasterPos3f(from.x(), from.y(), from.z());
|
||||
// char buf[12];
|
||||
// sprintf(buf," %d",lifeTime);
|
||||
//BMF_DrawString(BMF_GetFont(BMF_kHelvetica10),buf);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user