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;
}
}
#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;
}
}