finally all compiled:
Code: Select all
void myMeshBuilderCallback::ready(const SimpleRenderable *simpleRenderable, const VecVertex &vertices, const VecIndices &indices, size_t level, int inProcess)
{
OgreFramework::getSingletonPtr()->m_pLog->logMessage("-> myMeshBuilderCallback::ready");
// create the bullet shape and rigid body
SimpleRenderable *simpleRenderable2 = const_cast<SimpleRenderable*> (simpleRenderable);
OgreFramework::getSingletonPtr()->m_pLog->logMessage("-> myMeshBuilderCallback::ready 0");
OgreBulletCollisions::CollisionShape *terrainShape = (OgreBulletCollisions::CollisionShape *)new OgreBulletCollisions::StaticMeshToShapeConverter(simpleRenderable2, Ogre::Matrix4::IDENTITY);
OgreFramework::getSingletonPtr()->m_pLog->logMessage("-> myMeshBuilderCallback::ready 1");
OgreBulletDynamics::RigidBody *terrainBody = new OgreBulletDynamics::RigidBody(
"VolumeTerrain",
m_ptheApp->getBulletWorld()
);
OgreFramework::getSingletonPtr()->m_pLog->logMessage("-> myMeshBuilderCallback::ready 2");
Ogre::SceneNode *pTerrainNode = OgreFramework::getSingletonPtr()->m_pSceneMgr->getRootSceneNode()->createChildSceneNode();
const Ogre::Vector3 v3 = Ogre::Vector3::ZERO;
const Ogre::Quaternion q = Ogre::Quaternion::IDENTITY;
OgreFramework::getSingletonPtr()->m_pLog->logMessage("-> myMeshBuilderCallback::ready 3");
terrainBody->setStaticShape(pTerrainNode, terrainShape, 0.0f, 0.8f, v3, q);
terrainBody->setPosition(terrainBody->getWorldPosition());
OgreFramework::getSingletonPtr()->m_pLog->logMessage("-> myMeshBuilderCallback::ready 4");
// push the created objects to the deques
m_ptheApp->getBulletShapes().push_back(terrainShape);
m_ptheApp->getBulletBodies().push_back(terrainBody);
OgreFramework::getSingletonPtr()->m_pLog->logMessage("<- myMeshBuilderCallback::ready");
}
but i've got a runtime error :
i don't understand why the renderable object has
Ogre::RenderOperation.useIndexes = true
but
Ogre::RenderOperation.indexData = false (returned by Ogre::StringConverter::toString(op.indexData)=null in fact ?)
Code: Select all
StaticMeshToShapeConverter::StaticMeshToShapeConverter(Ogre::Renderable *rend,
const Ogre::Matrix4 &transform)
: VertexIndexToShape(transform),
mEntity(NULL),
mNode(NULL)
{
Ogre::LogManager::getSingleton().logMessage("-> StaticMeshToShapeConverter::StaticMeshToShapeConverter");
Ogre::RenderOperation op;
rend->getRenderOperation(op);
VertexIndexToShape::addStaticVertexData(op.vertexData);
if (op.useIndexes)
{
Ogre::LogManager::getSingleton().logMessage(Ogre::String("op.indexData ")+Ogre::StringConverter::toString(op.indexData));
Ogre::LogManager::getSingleton().logMessage("-> StaticMeshToShapeConverter::StaticMeshToShapeConverter 4");
VertexIndexToShape::addIndexData(op.indexData);
}
Ogre::LogManager::getSingleton().logMessage("<- StaticMeshToShapeConverter::StaticMeshToShapeConverter");
}