/* * ORXONOX - the hottest 3D action shooter ever to exist * * * License notice: * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * * Author: * Benjamin Knecht , (C) 2007 * Co-authors: * ... * */ // TODO: Change this to orxonox.h and include all necessary functions there #include "ExampleApplication.h" // TODO: Put creation of SceneNode and implementation of FrameListener into an extern file SceneNode *lightNode; class OrxFrameListener : public ExampleFrameListener { public: OrxFrameListener(RenderWindow* win, Camera* cam, SceneManager *sceneMgr) : ExampleFrameListener(win, cam, false, false) { } bool frameStarted(const FrameEvent &evt) { // add tutorial code here: // ... lightNode->translate(Vector3(0, -10 * evt.timeSinceLastFrame, 0)); return ExampleFrameListener::frameStarted(evt); } private: }; // TODO: Make Doxygen tags work and create scene AFTER loading in an extern file //! This is the application class of Orxonox /** Application class. The starting point of Orxonox. Loading of ressources should start in here. ... */ class Orxonox : public ExampleApplication { protected: public: Orxonox() { } ~Orxonox() { } protected: void createCamera(void) { // create camera mCamera = mSceneMgr->createCamera("PlayerCam"); mCamera->setNearClipDistance(5); mCamera->setPosition(Vector3(0,10,500)); mCamera->lookAt(Vector3(0,0,0)); } void createScene(void) { // add tutorial code here: // ... mSceneMgr->setAmbientLight( ColourValue( 0.3, 0.3, 0.3 ) ); //Entity* head = mSceneMgr->createEntity("head", "ogrehead.mesh"); //Entity* head2 = mSceneMgr->createEntity("head2", "ogrehead.mesh"); SceneNode *node = mSceneMgr->getRootSceneNode()->createChildSceneNode( "OgreHeadNode", Vector3( 0, 0, 0 ) ); //node->attachObject( head ); SceneNode *node2 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "OgreHeadNode2", Vector3( 50, 0, 0 ) ); //node2->attachObject( head2 ); //mSceneMgr->setSkyBox(true, "Examples/SpaceSkyBox"); Light *light = mSceneMgr->createLight("Light1"); light->setType(Light::LT_POINT); light->setPosition(Vector3(0, 100, 0)); light->setDiffuseColour(0.5, 0.5, 0.0); light->setSpecularColour(0.5, 0.5, 0.0); BillboardSet *bbs = mSceneMgr->createBillboardSet("bb", 1); bbs->createBillboard(Vector3::ZERO, ColourValue(1.0, 0.0, 0.0)); //bbs->setMaterialName("Examples/Flare"); lightNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("LightNode", Vector3(0, 100, 0)); lightNode->attachObject(bbs); lightNode->attachObject(light); light->setPosition(0.0, 0.0, 0.0); } void createFrameListener(void) { // create frame listener mFrameListener = new OrxFrameListener(mWindow, mCamera, mSceneMgr); mRoot->addFrameListener(mFrameListener); } }; #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 #define WIN32_LEAN_AND_MEAN #include "windows.h" INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT ) #else int main(int argc, char **argv) #endif { // Create application object Orxonox orxonox; try { orxonox.go(); } catch( Exception& e ) { #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 MessageBox( NULL, e.getFullDescription().c_str(), "An exception has occurred!", MB_OK | MB_ICONERROR | MB_TASKMODAL); #else fprintf(stderr, "An exception has occurred: %s\n", e.getFullDescription().c_str()); #endif } return 0; }