#include "World.h" #include "Ogre.h" #include "OgreMath.h" #include "OgreSceneManager.h" #include "OgreSceneNode.h" #include "OgreVector3.h" #include "OgreSphere.h" #include "MovingObject.h" #include "InputHandler.h" using namespace Ogre; World::World(Ogre::SceneManager *sceneManager, InputHandler *ih) : mSceneManager(sceneManager), mInputHandler(ih) { mSceneManager->setAmbientLight(ColourValue(1,1,1)); Setup(); } void World::Setup() { mObj1 = new MovingObject(mSceneManager, "MyCube.mesh", NULL); mObj2 = new MovingObject(mSceneManager, "MyCube.mesh", mObj1); mObj3 = new MovingObject(mSceneManager, "MyCube.mesh", mObj2); mCrossHair = new MovingObject(mSceneManager, "Crosshair.mesh", NULL); mCrossHair->setScale(Ogre::Vector3(0.5F,1,1)); mObj2->setPosition(Ogre::Vector3(20, 0, 0)); mObj3->setPosition(Ogre::Vector3(0, 20, 0)); mCrossHair->setPosition(Ogre::Vector3(0,-20,0)); mCrossHair->yaw(Ogre::Radian(Ogre::Math::PI / 2)); } void World::UpdateCrosshairFromKeyboard(float time) { if (mInputHandler->IsKeyDown(OIS::KC_LEFT)) { mCrossHair->translate(time * Ogre::Vector3(-10, 0,0)); } if (mInputHandler->IsKeyDown(OIS::KC_RIGHT)) { mCrossHair->translate(time * Ogre::Vector3(10, 0,0)); } if (mInputHandler->IsKeyDown(OIS::KC_UP)) { mCrossHair->translate(time * Ogre::Vector3(0,10,0)); } if (mInputHandler->IsKeyDown(OIS::KC_DOWN)) { mCrossHair->translate(time * Ogre::Vector3(0, -10,0)); } if (mInputHandler->IsKeyDown(OIS::KC_A)) { mCrossHair->translate(time * Ogre::Vector3(0, 0, 10)); } if (mInputHandler->IsKeyDown(OIS::KC_S)) { mCrossHair->translate(time * Ogre::Vector3(0, 0,-10)); } if (mInputHandler->IsKeyDown(OIS::KC_Q)) { mCrossHair->roll(Ogre::Radian(0.5f * time)); } if (mInputHandler->IsKeyDown(OIS::KC_W)) { mCrossHair->pitch(Ogre::Radian(0.5f * time)); } if (mInputHandler->IsKeyDown(OIS::KC_E)) { mCrossHair->yaw(Ogre::Radian(0.5f * time)); } } void World::Think(float time) { mObj1->yaw(Ogre::Radian(0.5f * time)); mObj2->pitch(Ogre::Radian(0.6f * time)); mObj3->roll(Ogre::Radian(0.5f * time)); UpdateCrosshairFromKeyboard(time); if (mInputHandler->IsKeyDown(OIS::KC_1)) { mObj1->setPositionFromWorldPosition(mCrossHair->getPosition()); mObj1->setOrentationFromWorldOrientation(mCrossHair->getOrientation()); } if (mInputHandler->IsKeyDown(OIS::KC_2)) { mObj2->setPositionFromWorldPosition(mCrossHair->getPosition()); mObj2->setOrentationFromWorldOrientation(mCrossHair->getOrientation()); } if (mInputHandler->IsKeyDown(OIS::KC_3)) { mObj3->setPositionFromWorldPosition(mCrossHair->getPosition()); mObj3->setOrentationFromWorldOrientation(mCrossHair->getOrientation()); } }