How to integrate NxOgre 0.9 with my Gamestate class?

Felipe

18-08-2007 19:41:52

my playstate class:

#include "PlayState.h"
#include "PauseState.h"
#include "MainMenuState.h"
#include <OgreEntity.h>
#include <OgreFrameListener.h>
#include <OgreEntity.h>
#include <OgreMeshManager.h>

using namespace Ogre;

namespace JogoCabanagem
{

PlayState* PlayState::mPlayState;

void PlayState::enter( void )
{
mRoot = Root::getSingletonPtr();
//mOverlayMgr = OverlayManager::getSingletonPtr();
mSceneMgr = mRoot->getSceneManager( "TerrainSceneManager" );
mCamera = mSceneMgr->createCamera( "Camera" );
mCamera->setNearClipDistance( 1 );
//mCamera->setFarClipDistance( 1000 );
mCamera->setFarClipDistance(0);
mViewport = mRoot->getAutoCreatedWindow()->addViewport( mCamera );

mSceneMgr->setAmbientLight( ColourValue( 1, 1, 1 ) );
Ogre::Entity *ent1 = mSceneMgr->createEntity( "Robot", "robot.mesh" );
Ogre::SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode" );
node1->attachObject( ent1 );

mSceneMgr->setSkyBox(true, "Examples/CloudyNoonSkyBox");


transVector = Vector3::ZERO;
avanca = false;
recua = false;
esquerda = false;
direita = false;
mMove = 10;
}

void PlayState::exit( void ) {
//mIntroOverlay->hide();
mSceneMgr->clearScene();
mSceneMgr->destroyAllCameras();
mRoot->getAutoCreatedWindow()->removeAllViewports();
}

void PlayState::pause( void ) {
// mIntroOverlay->hide();
}

void PlayState::resume( void ) {
//mIntroOverlay->show();
}

void PlayState::update( unsigned long lTimeElapsed ) {
// atualiza o jogo

if (avanca)
{
transVector.z = -mMove; // Move camera para frente
mCamera->moveRelative(transVector);
}
if( recua )
{
transVector.z = mMove; // Move camera para tras
mCamera->moveRelative(transVector);
}
if( esquerda )
{
transVector.x = -mMove; // Move camera para esquerda
mCamera->moveRelative(transVector);

}
if( direita )
{
transVector.x = mMove; // Move camera para direita
mCamera->moveRelative(transVector);
}
}

void PlayState::keyPressed( const OIS::KeyEvent &e )
{
if( e.key == OIS::KC_W )
{
avanca=true;
}
if( e.key == OIS::KC_S )
{
recua=true;
}
if( e.key == OIS::KC_A )
{
esquerda=true;
}
if( e.key == OIS::KC_D )
{
direita=true;
}
}

void PlayState::keyReleased( const OIS::KeyEvent &e ) {

transVector = Vector3::ZERO;
if( e.key == OIS::KC_ESCAPE )
{
//this->requestShutdown();
//this->popState();
this->changeState(MainMenuState::getSingletonPtr());
//this->changeState(PauseState::getSingletonPtr());
}
if( e.key == OIS::KC_W )
{
avanca=false;
}
if( e.key == OIS::KC_S )
{
recua=false;
}
if( e.key == OIS::KC_A )
{
esquerda=false;
}
if( e.key == OIS::KC_D )
{
direita=false;
}

}

void PlayState::mouseMoved( const OIS::MouseEvent &e ) {

mRotX = Degree(-e.state.X.rel * 0.13);
mRotY = Degree(-e.state.Y.rel * 0.13);
mCamera->yaw(mRotX);
mCamera->pitch(mRotY);
}

void PlayState::mousePressed( const OIS::MouseEvent &e, OIS::MouseButtonID id ) {

}

void PlayState::mouseReleased( const OIS::MouseEvent &e, OIS::MouseButtonID id ) {

}
bool PlayState::frameStarted(const Ogre::FrameEvent &evt){
return true;
}


PlayState* PlayState::getSingletonPtr( void ) {
if( !mPlayState ) {
mPlayState = new PlayState();
}

return mPlayState;
}
}

DaCracker

18-08-2007 21:10:12

Just initialize the World object after you've set up the Ogre engine
and you'll be ready to use NxOgre :)