Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Oct 27, 2008, 10:56:51 PM (16 years ago)
Author:
rgrieder
Message:
  • Added support for dedicated server. Could not network test it yet, client still segfaults me.
  • Also kicked GraphicsEngine::levelSceneManager_, there are only the statistic methods left.
  • GSDedicated also derives from GSLevel, but GSLevel is not anymore a real GameState.
  • CameraHandler and LevelManager get created in GSLevel now.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/objecthierarchy/src/orxonox/gamestates/GSDedicated.cc

    r2010 r2023  
    3030#include "GSDedicated.h"
    3131
    32 #include <OgreRoot.h>
    33 #include <OgreSceneManager.h>
    34 #include "core/ConsoleCommand.h"
    3532#include "core/CommandLine.h"
    36 #include "core/Loader.h"
    37 #include "core/XMLFile.h"
    3833#include "core/Core.h"
    3934#include "network/Server.h"
    40 #include "objects/Tickable.h"
    41 #include "Settings.h"
    42 #include "GraphicsEngine.h"
    4335
    4436namespace orxonox
     
    4638    GSDedicated::GSDedicated()
    4739        : GameState<GSRoot>("dedicated")
    48         , timeFactor_(0)
    4940        , server_(0)
    50         , sceneManager_(0)
    51         , startFile_(0)
    5241    {
    5342    }
     
    6150        Core::setHasServer(true);
    6251
    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;
    6654
    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);
    7956
    8057        server_->open();
    81 
    82         // add console commands
    83         FunctorMember01<GSDedicated, float>* functor = createFunctor(&GSDedicated::setTimeFactor);
    84         functor->setObject(this);
    85         CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(functor, "setTimeFactor")).accessLevel(AccessLevel::Offline).defaultValue(0, 1.0);;
    8658    }
    8759
    8860    void GSDedicated::leave()
    8961    {
    90         // TODO: Remove and destroy console command
    91 
    92         Loader::unload(startFile_);
    93         delete this->startFile_;
     62        GSLevel::leave();
    9463
    9564        this->server_->close();
    9665        delete this->server_;
    97 
    98         Ogre::Root::getSingleton().destroySceneManager(this->sceneManager_);
    9966
    10067        Core::setHasServer(false);
     
    10370    void GSDedicated::ticked(const Clock& time)
    10471    {
    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);
    10973        server_->tick(time.getDeltaTime());
    11074        this->tickChild(time);
    11175    }
    112 
    113     /**
    114     @brief
    115         Changes the speed of Orxonox
    116     */
    117     void GSDedicated::setTimeFactor(float factor)
    118     {
    119         this->timeFactor_ = factor;
    120     }
    12176}
Note: See TracChangeset for help on using the changeset viewer.