Crash on TreeCollisionSceneParser::parseScene

SFCBias

28-04-2010 20:48:55

I used this code to create a mesh from a bsp map
MeshPtr BspLevel::ConvertToMesh(const Quake3Level& q3lvl){
int idxStart, numVertex;
int obCount = 0;

SceneManager *sceneMgr = Root::getSingleton().getSceneManager("EI_BSPMANAGER");
ManualObject *_manualObject = sceneMgr->createManualObject("BspMesh_mo");
MeshPtr _mesh;

for (int u = 0; u < q3lvl.mNumFaces; u++) {
bsp_face_t* face = &q3lvl.mFaces[u];

if (face->type == BSP_FACETYPE_NORMAL)
{
_manualObject->begin("EmptyMaterial", RenderOperation::OT_TRIANGLE_LIST);

for(int j=face->vert_start; j<face->vert_start+face->vert_count; j++){
_manualObject->textureCoord(q3lvl.mVertices[j].texture[0], q3lvl.mVertices[j].texture[1]);
_manualObject->normal(q3lvl.mVertices[j].normal[0], q3lvl.mVertices[j].normal[1], q3lvl.mVertices[j].normal[2]);
_manualObject->position(q3lvl.mVertices[j].point[0], q3lvl.mVertices[j].point[1], q3lvl.mVertices[j].point[2]);
}
for(int j=face->elem_start; j<face->elem_start+face->elem_count; j++){
_manualObject->index(static_cast<unsigned short>(q3lvl.mElements[j]));
}
_manualObject->end();
}
}

_mesh->buildTangentVectors();
_mesh->buildEdgeList();
_mesh = _manualObject->convertToMesh("BspMesh", "General");

return _mesh;
}


It creates a mesh just fine but the problem is when i try to create the collision using this code
Entity *bspEntity = mSManager->createEntity("BspEntity", "BspMesh");

SceneNode *bspNode = mSManager->createSceneNode("BspNode");
//bspNode->setPosition(Vector3::ZERO);
bspEntity->setVisible(0);
bspNode->attachObject(bspEntity);

OgreNewt::CollisionPrimitives::TreeCollisionSceneParser* bspParser = new OgreNewt::CollisionPrimitives::TreeCollisionSceneParser(mWorld);
OgreNewt::CollisionPtr bspParserPtr = OgreNewt::CollisionPtr(bspParser);
bspParser->parseScene( bspNode, -1, true );
OgreNewt::Body *bspBody = new OgreNewt::Body(mWorld, bspParserPtr);
bspBody->attachNode(bspNode);

Ogre::AxisAlignedBox box = bspParser->getAABB(Quaternion::IDENTITY, Vector3(0,0,0));
mWorld->setWorldSize(box);


It crashes, i debugged the program and stepped through each function and the problem is coming from TreeCollisionSceneParser::_parseNode where it creates the Quaternion and 2 Vector3's. Im not sure why but i can't seem to make any sense of it so i'm hoping someone here can