OgreViewer Class Reference

#include <ogreviewer.h>

Inheritance diagram for OgreViewer:

Inheritance graph
[legend]
Collaboration diagram for OgreViewer:

Collaboration graph
[legend]

List of all members.


Detailed Description

Definition at line 11 of file ogreviewer.h.


Public Member Functions

 OgreViewer ()
virtual ~OgreViewer ()

Protected Member Functions

virtual void createScene (void)
 Create the default scenario for showing the model.
virtual void createFrameListener (void)
bool frameStarted (const FrameEvent &evt)
 Checks for exit commands, animates the head, and other endeavours.

Private Member Functions

void setFps (Real avgFps)

Private Attributes

CameraListenercamListener
Real rotSpeed
bool rolling
bool yawing
bool pitching
Real toggle

Constructor & Destructor Documentation

OgreViewer::OgreViewer (  ) 

Definition at line 6 of file ogreviewer.cpp.

References pitching, rolling, rotSpeed, toggle, and yawing.

00007 {
00008   rotSpeed = 15;
00009   rolling  = false;
00010   yawing   = true;
00011   pitching = false;
00012   toggle   = 0;
00013 }

OgreViewer::~OgreViewer (  )  [virtual]

Definition at line 15 of file ogreviewer.cpp.

References camListener.

00016 {
00017   if(camListener) delete camListener;
00018 }


Member Function Documentation

void OgreViewer::createScene ( void   )  [protected, virtual]

Create the default scenario for showing the model.

This will create a default scenario, containing:

  • 3 spotlights (much like a stage, RGB spotlights)
  • One default plane with the center at 0,0,0 and size of 1500x1500
  • Setup and create the default node camera
  • A SkyBox (used in another game...)
  • The mesh (for now it's still the mesh named "example.mesh", but we will make this dinamically)
  • Load an information Overlay

Implements OgreStartup.

Definition at line 30 of file ogreviewer.cpp.

References OgreStartup::mSceneMgr.

00031 {
00032   LogManager::getSingleton().logMessage("***Loading Scene***");
00033   LogManager::getSingleton().logMessage("Setting ambient light and shadows");
00034   mSceneMgr->setAmbientLight(ColourValue(0.2, 0.2, 0.2));
00035   mSceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_ADDITIVE);
00036   Light *l = mSceneMgr->createLight("SpotLight1");
00037   l->setType(Light::LT_SPOTLIGHT);
00038   l->setDiffuseColour( ColourValue(1.0, 0.5, 0.5) );
00039   l->setSpecularColour( ColourValue(1.0, 0.5, 0.5) );
00040   l->setPosition( Vector3(-100, 200, 0) );
00041   l->setDirection( Vector3(1, -1, 0) );
00042   l->setSpotlightRange(Degree(15), Degree(45), 1);
00043   l->setVisible(true);
00044 
00045   l = mSceneMgr->createLight("SpotLight2");
00046   l->setType(Light::LT_SPOTLIGHT);
00047   l->setDiffuseColour( ColourValue(0.5, 1.0, 0.5) );
00048   l->setSpecularColour( ColourValue(0.5, 1.0, 0.5) );
00049   l->setPosition( Vector3(100, 200, 0) );
00050   l->setDirection( Vector3(-1, -1, 0) );
00051   l->setSpotlightRange(Degree(15), Degree(45), 1);
00052   l->setVisible(true);
00053 
00054   l = mSceneMgr->createLight("SpotLight3");
00055   l->setType(Light::LT_SPOTLIGHT);
00056   l->setDiffuseColour( ColourValue(0.5, 0.5, 1.0) );
00057   l->setSpecularColour( ColourValue(0.5, 0.5, 1.0) );
00058   l->setPosition( Vector3(0, 200, -100) );
00059   l->setDirection( Vector3(0, -1, 1) );
00060   l->setSpotlightRange(Degree(15), Degree(45), 1);
00061   l->setVisible(true);
00062 
00063   // Creating the plane
00064   LogManager::getSingleton().logMessage("Creating a \"ground\" plane");
00065   Plane plane(Vector3::UNIT_Y, 0);
00066   MeshManager::getSingleton().createPlane("ground", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, plane,
00067                                             1500, 1500, 20, 20, true, 1, 5, 5, Vector3::UNIT_Z);
00068   Entity *ent = mSceneMgr->createEntity("GroundEnt","ground");
00069   mSceneMgr->getRootSceneNode()->createChildSceneNode("GroundNode")->attachObject(ent);
00070   ent->setMaterialName("Ground");
00071   ent->setCastShadows(false);
00072 
00073   //Setting up the default node camera
00074   LogManager::getSingleton().logMessage("Setting default camera position");
00075   mSceneMgr->getSceneNode("CameraNode")->translate( Vector3(0,20,-500) );
00076   mSceneMgr->getSceneNode("CameraNode")->yaw(Degree(180), Node::TS_LOCAL);
00077   mSceneMgr->getSceneNode("CameraNode")->pitch( Degree(15), Node::TS_LOCAL );
00078 
00079   // Loading the skybox
00080   LogManager::getSingleton().logMessage("Creating a skybox");
00081   mSceneMgr->setSkyBox(true,"SkyBox",5000);
00082 
00083   // Load the mesh
00084   LogManager::getSingleton().logMessage("Loading example mesh");
00085   ent = mSceneMgr->createEntity("ExampleEnt","example.mesh");
00086   ent->setCastShadows(true);
00087   mSceneMgr->getRootSceneNode()->createChildSceneNode("ExampleNode")->attachObject(ent);
00088   mSceneMgr->getSceneNode("ExampleNode")->translate(0, 50, 0);
00089   mSceneMgr->getSceneNode("ExampleNode")->yaw(Degree(180), Node::TS_LOCAL);
00090 
00091   // Load the information Overlay
00092   LogManager::getSingleton().logMessage("Loading the information Overlay");
00093   OverlayManager& omgr = OverlayManager::getSingleton();
00094   Overlay *mLoadOverlay = (Overlay*)omgr.getByName("Overlays/Info");
00095   mLoadOverlay->show();
00096 }

void OgreViewer::createFrameListener ( void   )  [protected, virtual]

Implements OgreStartup.

Definition at line 98 of file ogreviewer.cpp.

References camListener, OgreStartup::mCamera, OgreStartup::mKeyboard, OgreStartup::mMouse, OgreStartup::mRoot, and OgreStartup::mSceneMgr.

00099 {
00100   camListener = new CameraListener(mSceneMgr, mCamera, mKeyboard, mMouse);
00101 
00102   mRoot->addFrameListener(this);
00103   mRoot->addFrameListener(camListener);
00104 }

bool OgreViewer::frameStarted ( const FrameEvent &  evt  )  [protected]

Checks for exit commands, animates the head, and other endeavours.

Here we must:

  • Check if the user pressed the ESC key, and then quit the program
  • Check for various status of the node "animation", (1: yaw, 2: roll, 3: pitch)
  • Animate the head
  • Update information stats on the Overlay PS: This happens before every frame

Definition at line 115 of file ogreviewer.cpp.

References OgreStartup::mKeyboard, OgreStartup::mSceneMgr, OgreStartup::mWindow, pitching, rolling, rotSpeed, setFps(), toggle, and yawing.

00116 {
00117   mKeyboard->capture();
00118 
00119   toggle -= evt.timeSinceLastFrame;
00120 
00121   if(mKeyboard->isKeyDown(OIS::KC_ESCAPE)) return false;
00122   if(mKeyboard->isKeyDown(OIS::KC_1) && toggle <= 0){ yawing == false ? yawing = true : yawing = false;       toggle = 0.5; }
00123   if(mKeyboard->isKeyDown(OIS::KC_2) && toggle <= 0){ rolling == false ? rolling = true : rolling = false;    toggle = 0.5; }
00124   if(mKeyboard->isKeyDown(OIS::KC_3) && toggle <= 0){ pitching == false ? pitching = true : pitching = false; toggle = 0.5; }
00125 
00126   const RenderTarget::FrameStats &stats = mWindow->getStatistics();
00127   setFps(stats.avgFPS);
00128 
00129   // Rotate the ExampleNode
00130   if(yawing)
00131     mSceneMgr->getSceneNode("ExampleNode")->yaw( Degree(rotSpeed) * evt.timeSinceLastFrame, Node::TS_LOCAL);
00132   if(rolling)
00133     mSceneMgr->getSceneNode("ExampleNode")->roll( Degree(rotSpeed) * evt.timeSinceLastFrame, Node::TS_LOCAL);
00134   if(pitching)
00135     mSceneMgr->getSceneNode("ExampleNode")->pitch( Degree(rotSpeed) * evt.timeSinceLastFrame, Node::TS_LOCAL);
00136   return true;
00137 }

Here is the call graph for this function:

void OgreViewer::setFps ( Real  avgFps  )  [private]

Definition at line 139 of file ogreviewer.cpp.

Referenced by frameStarted().

00140 {
00141   OverlayManager *ovm = OverlayManager::getSingletonPtr();
00142   OverlayElement *pTxt = static_cast<OverlayElement*>(ovm->getOverlayElement("FPS"));
00143   pTxt->setCaption(String("FPS:")+StringConverter::toString(avgFps));
00144 }

Here is the caller graph for this function:


Member Data Documentation

Definition at line 21 of file ogreviewer.h.

Referenced by createFrameListener(), and ~OgreViewer().

Real OgreViewer::rotSpeed [private]

Definition at line 22 of file ogreviewer.h.

Referenced by frameStarted(), and OgreViewer().

bool OgreViewer::rolling [private]

Definition at line 23 of file ogreviewer.h.

Referenced by frameStarted(), and OgreViewer().

bool OgreViewer::yawing [private]

Definition at line 24 of file ogreviewer.h.

Referenced by frameStarted(), and OgreViewer().

bool OgreViewer::pitching [private]

Definition at line 25 of file ogreviewer.h.

Referenced by frameStarted(), and OgreViewer().

Real OgreViewer::toggle [private]

Definition at line 26 of file ogreviewer.h.

Referenced by frameStarted(), and OgreViewer().


The documentation for this class was generated from the following files:

Generated on Thu Feb 5 08:48:34 2009 for OgreViewer by  doxygen 1.5.6