void spawn_enemies (int num) { int i; for (i = 0; i < num; i++) { spawn_enemy (); } }
//------------------------------------------------------------------------------------- bool MainApplication::frameRenderingQueued(const Ogre::FrameEvent& evt) { if(mWindow->isClosed()) return false; if(mShutDown) return false; //Need to capture/update each device mKeyboard->capture(); mMouse->capture(); Ogre::Vector3 shotsSpeed(500, 0, 0); Ogre::Vector3 enemySpeed(-500, rand() % 10 - 5, 0); Ogre::Vector3 playerPosition = mSceneMgr -> getSceneNode("NinjaNode")->getPosition(); Ogre::Vector3 playerDirection = mSceneMgr -> getSceneNode("NinjaNode") -> getOrientation() * Ogre::Vector3(0,0,1); //Ogre::Vector3 direction = mSceneMgr -> getSceneNode("NinjaNode") ->_getDerivedOrientation() * Ogre::Vector3::NEGATIVE_UNIT_Z; if(playerCollision(playerPosition, playerDirection)) { mSceneMgr -> getSceneNode("NinjaNode") -> setPosition(Ogre::Vector3(0, 0, -500)); } mTrayMgr->frameRenderingQueued(evt); mSceneMgr -> getSceneNode("NinjaNode") -> translate(mDirection * evt.timeSinceLastFrame, Ogre::Node::TS_WORLD); if(shotCounter) { //Ogre::String number2 = Ogre::StringConverter::toString(shotCounter); for(int i = 0; i < shots.size(); i++) { Ogre::Vector3 shotPosition = mSceneMgr -> getSceneNode(shots[i])->getPosition(); Ogre::Vector3 shotDirection = mSceneMgr -> getSceneNode(shots[i]) -> getOrientation() * Ogre::Vector3(0,0,1); if(bulletCollision(shotPosition, shotDirection)) { mSceneMgr -> getSceneNode("NinjaNode") -> setPosition(Ogre::Vector3(0, 0, 0)); //mDistance = Ogre::Vector3::ZERO; //mShutDown = true; } mSceneMgr -> getSceneNode(shots[i]) -> translate(shotsSpeed * evt.timeSinceLastFrame, Ogre::Node::TS_WORLD); } } if(enemyCounter) { //Ogre::String number = Ogre::StringConverter::toString(enemyCounter); for(int i = 0; i < enemies.size(); i++) { mSceneMgr -> getSceneNode(enemies[i]) -> translate(enemySpeed * evt.timeSinceLastFrame, Ogre::Node::TS_WORLD); } } //enemytranslate mDistance = mSceneMgr-> getSceneNode("NinjaNode")->getPosition(); if(mDistance.x >= MAX_RIGHT) { mDirection.x = 0; mSceneMgr -> getSceneNode("NinjaNode") -> setPosition(Ogre::Vector3(MAX_RIGHT, mDistance.y, mDistance.z)); } if(mDistance.x <= MAX_LEFT) { mDirection.x = 0; mSceneMgr -> getSceneNode("NinjaNode") -> setPosition(Ogre::Vector3(MAX_LEFT, mDistance.y, mDistance.z)); } if(mDistance.y >= MAX_UP) { mDirection.y = 0; mSceneMgr -> getSceneNode("NinjaNode") -> setPosition(Ogre::Vector3(mDistance.x, MAX_UP, mDistance.z)); } if(mDistance.y <= MAX_DOWN) { mDirection.y = 0; mSceneMgr -> getSceneNode("NinjaNode") -> setPosition(Ogre::Vector3(mDistance.x, MAX_DOWN, mDistance.z)); } timer++; if(timer%20 == 0) { spawn_enemy(); } return true; }