void OpenGLGuiHelper::autogenerateGraphicsObjects(btDiscreteDynamicsWorld* rbWorld) { //sort the collision objects based on collision shape, the gfx library requires instances that re-use a shape to be added after eachother btAlignedObjectArray<btCollisionObject*> sortedObjects; sortedObjects.reserve(rbWorld->getNumCollisionObjects()); for (int i=0; i<rbWorld->getNumCollisionObjects(); i++) { btCollisionObject* colObj = rbWorld->getCollisionObjectArray()[i]; sortedObjects.push_back(colObj); } sortedObjects.quickSort(shapePointerCompareFunc); for (int i=0; i<sortedObjects.size(); i++) { btCollisionObject* colObj = sortedObjects[i]; //btRigidBody* body = btRigidBody::upcast(colObj); //does this also work for btMultiBody/btMultiBodyLinkCollider? createCollisionShapeGraphicsObject(colObj->getCollisionShape()); int colorIndex = colObj->getBroadphaseHandle()->getUid() & 3; btVector3 color= sColors[colorIndex]; createCollisionObjectGraphicsObject(colObj,color); } }
virtual void autogenerateGraphicsObjects(btDiscreteDynamicsWorld* rbWorld) { for (int i=0;i<rbWorld->getNumCollisionObjects();i++) { btCollisionObject* colObj = rbWorld->getCollisionObjectArray()[i]; //btRigidBody* body = btRigidBody::upcast(colObj); //does this also work for btMultiBody/btMultiBodyLinkCollider? createCollisionShapeGraphicsObject(colObj->getCollisionShape()); int colorIndex = colObj->getBroadphaseHandle()->getUid() & 3; btVector3 color= sMyColors[colorIndex]; createCollisionObjectGraphicsObject(colObj,color); } }
virtual void createRigidBodyGraphicsObject(btRigidBody* body, const btVector3& color) { createCollisionObjectGraphicsObject(body,color); }
void OpenGLGuiHelper::createRigidBodyGraphicsObject(btRigidBody* body, const btVector3& color) { createCollisionObjectGraphicsObject(body,color); }