void createScene(void)
{
// setup GUI system
mGUIRenderer = new CEGUI::OgreCEGUIRenderer(mWindow, Ogre::RENDER_QUEUE_OVERLAY, false, 3000, mSceneMgr);
mGUISystem = new CEGUI::System(mGUIRenderer);
// load scheme and set up defaults
CEGUI::SchemeManager::getSingleton().loadScheme((CEGUI::utf8*)"TaharezLookSkin.scheme");
mGUISystem->setDefaultMouseCursor((CEGUI::utf8*)"TaharezLook", (CEGUI::utf8*)"MouseArrow");
mSceneMgr->setAmbientLight(ColourValue(0.5, 0.5, 0.5));
Entity* test = mSceneMgr->createEntity("corridor", "c:\\v2.mesh");
SceneNode* testNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
testNode->attachObject(test);
}
-------
bool frameStarted(const FrameEvent &evt)
{
// Process the base frame listener code. Since we are going to be
// manipulating the translate vector, we need this to happen first.
if ( !ExampleFrameListener::frameStarted( evt ) )
return false;
// Setup the scene query
Vector3 camPos = mCamera->getPosition( );
Ray cameraRay( Vector3(camPos.x, 5000.0f, camPos.z), Vector3::NEGATIVE_UNIT_Y );
mRaySceneQuery->setRay( cameraRay );
// Perform the scene query
RaySceneQueryResult &result = mRaySceneQuery->execute();
RaySceneQueryResult::iterator itr = result.begin( );
// Get the results, set the camera height
if ( itr != result.end() && itr->worldFragment )
{
Real terrainHeight = itr->worldFragment->singleIntersection.y;
if ((terrainHeight + 10.0f) > camPos.y)
mCamera->setPosition( camPos.x, terrainHeight + 10.0f, camPos.z );
}
return true;
}