bt4.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #include "include/bt4.h"
  2. bt4::bt4(void)
  3. {
  4. }
  5. //----------------------------------------------------------------------------------
  6. bt4::~bt4(void)
  7. {
  8. }
  9. //----------------------------------------------------------------------------------
  10. void bt4::createScene(void)
  11. {
  12. mSceneMgr->setAmbientLight(Ogre::ColourValue(0.25, 0.25, 0.25));
  13. Ogre::Entity* ninjaEntity = mSceneMgr->createEntity("Ninja", "ninja.mesh");
  14. Ogre::SceneNode* node = mSceneMgr->getRootSceneNode()->createChildSceneNode("NinjaNode");
  15. node->attachObject(ninjaEntity);
  16. Ogre::Light* pointLight = mSceneMgr->createLight("pointLight");
  17. pointLight->setType(Ogre::Light::LT_POINT);
  18. pointLight->setPosition(Ogre::Vector3(250, 150, 250));
  19. pointLight->setDiffuseColour(Ogre::ColourValue::White);
  20. pointLight->setSpecularColour(Ogre::ColourValue::White);
  21. }
  22. //----------------------------------------------------------------------------------
  23. bool bt4::processUnbufferedInput(const Ogre::FrameEvent& evt)
  24. {
  25. static bool mMouseDown = false; // If a mouse button is depressed
  26. static Ogre::Real mToggle = 0.0; // The time left until next toggle
  27. static Ogre::Real mRotate = 0.13; // The rotate constant
  28. static Ogre::Real mMove = 250; // The movement constant
  29. bool currMouse = mMouse->getMouseState().buttonDown(OIS::MB_Left);
  30. if (currMouse && !mMouseDown)
  31. {
  32. Ogre::Light* light = mSceneMgr->getLight("pointLight");
  33. light->setVisible(!light->isVisible());
  34. }
  35. mMouseDown = currMouse;
  36. Ogre::Vector3 transVector = Ogre::Vector3::ZERO;
  37. if (mKeyboard->isKeyDown( OIS::KC_I )) //forward
  38. {
  39. transVector.z -= mMove;
  40. }
  41. if (mKeyboard->isKeyDown( OIS::KC_K )) //forward
  42. {
  43. transVector.z += mMove;
  44. }
  45. if (mKeyboard->isKeyDown( OIS::KC_J)) // Left - Yaw or strafe
  46. {
  47. if (mKeyboard->isKeyDown( OIS::KC_LSHIFT ))
  48. {
  49. mSceneMgr->getSceneNode("NinjaNode")->yaw(Ogre::Degree(mRotate * 5)); //yaw left
  50. }
  51. else
  52. {
  53. transVector.x -= mMove; // strafe left
  54. }
  55. }
  56. if (mKeyboard->isKeyDown( OIS::KC_L)) // Right - Yaw or strafe
  57. {
  58. if (mKeyboard->isKeyDown( OIS::KC_LSHIFT ))
  59. {
  60. mSceneMgr->getSceneNode("NinjaNode")->yaw(Ogre::Degree(-mRotate * 5)); //yaw right
  61. }
  62. else
  63. {
  64. transVector.x += mMove; // strafe right
  65. }
  66. }
  67. if (mKeyboard->isKeyDown(OIS::KC_U)) //up
  68. {
  69. transVector.y += mMove;
  70. }
  71. if (mKeyboard->isKeyDown(OIS::KC_O)) //down
  72. {
  73. transVector.y -= mMove;
  74. }
  75. mSceneMgr->getSceneNode("NinjaNode")->translate(mSceneMgr->getSceneNode("NinjaNode")
  76. ->getOrientation() * transVector * evt.timeSinceLastFrame, Ogre::Node::TS_WORLD);
  77. return true;
  78. }
  79. //----------------------------------------------------------------------------------
  80. bool bt4::frameRenderingQueued(const Ogre::FrameEvent& evt)
  81. {
  82. bool ret = Base::frameRenderingQueued(evt);
  83. if (!processUnbufferedInput(evt)) return false;
  84. return ret;
  85. }
  86. //----------------------------------------------------------------------------------