- Timestamp:
- Oct 27, 2008, 10:56:51 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/objecthierarchy/src/orxonox/gamestates/GSDedicated.cc
r2010 r2023 30 30 #include "GSDedicated.h" 31 31 32 #include <OgreRoot.h>33 #include <OgreSceneManager.h>34 #include "core/ConsoleCommand.h"35 32 #include "core/CommandLine.h" 36 #include "core/Loader.h"37 #include "core/XMLFile.h"38 33 #include "core/Core.h" 39 34 #include "network/Server.h" 40 #include "objects/Tickable.h"41 #include "Settings.h"42 #include "GraphicsEngine.h"43 35 44 36 namespace orxonox … … 46 38 GSDedicated::GSDedicated() 47 39 : GameState<GSRoot>("dedicated") 48 , timeFactor_(0)49 40 , server_(0) 50 , sceneManager_(0)51 , startFile_(0)52 41 { 53 42 } … … 61 50 Core::setHasServer(true); 62 51 63 // create Ogre SceneManager for the level 64 this->sceneManager_ = Ogre::Root::getSingleton().createSceneManager(Ogre::ST_GENERIC, "LevelSceneManager"); 65 COUT(4) << "Created SceneManager: " << sceneManager_->getName() << std::endl; 52 this->server_ = new network::Server(CommandLine::getValue("port")); 53 COUT(0) << "Loading scene in server mode" << std::endl; 66 54 67 // temporary hack 68 GraphicsEngine::getInstance().setLevelSceneManager(this->sceneManager_); 69 70 // reset game speed to normal 71 timeFactor_ = 1.0f; 72 73 this->server_ = new network::Server(CommandLine::getValue("port")); 74 75 // call the loader 76 COUT(0) << "Loading level..." << std::endl; 77 startFile_ = new XMLFile(Settings::getDataPath() + "levels/sample.oxw"); 78 Loader::open(startFile_); 55 GSLevel::enter(0); 79 56 80 57 server_->open(); 81 82 // add console commands83 FunctorMember01<GSDedicated, float>* functor = createFunctor(&GSDedicated::setTimeFactor);84 functor->setObject(this);85 CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(functor, "setTimeFactor")).accessLevel(AccessLevel::Offline).defaultValue(0, 1.0);;86 58 } 87 59 88 60 void GSDedicated::leave() 89 61 { 90 // TODO: Remove and destroy console command 91 92 Loader::unload(startFile_); 93 delete this->startFile_; 62 GSLevel::leave(); 94 63 95 64 this->server_->close(); 96 65 delete this->server_; 97 98 Ogre::Root::getSingleton().destroySceneManager(this->sceneManager_);99 66 100 67 Core::setHasServer(false); … … 103 70 void GSDedicated::ticked(const Clock& time) 104 71 { 105 // Call the scene objects 106 for (ObjectList<Tickable>::iterator it = ObjectList<Tickable>::begin(); it; ++it) 107 it->tick(time.getDeltaTime() * this->timeFactor_); 108 72 GSLevel::ticked(time); 109 73 server_->tick(time.getDeltaTime()); 110 74 this->tickChild(time); 111 75 } 112 113 /**114 @brief115 Changes the speed of Orxonox116 */117 void GSDedicated::setTimeFactor(float factor)118 {119 this->timeFactor_ = factor;120 }121 76 }
Note: See TracChangeset
for help on using the changeset viewer.