Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jun 4, 2008, 8:54:43 PM (17 years ago)
Author:
rgrieder
Message:

merged input branch back to trunk

Location:
code/trunk/src/orxonox
Files:
15 edited
4 copied

Legend:

Unmodified
Added
Removed
  • code/trunk/src/orxonox/CMakeLists.txt

    r1505 r1535  
    33  Main.cc
    44  Orxonox.cc
     5  Settings.cc
    56
    67  console/InGameConsole.cc
     
    2930  objects/SpaceShip.cc
    3031  objects/SpaceShipAI.cc
     32  objects/Tickable.cc
    3133  objects/WorldEntity.cc
    3234
  • code/trunk/src/orxonox/GraphicsEngine.cc

    r1511 r1535  
    2121 *
    2222 *   Author:
    23  *      Benjamin Knecht <beni_at_orxonox.net>, (C) 2007
     23 *      Reto Grieder
    2424 *   Co-authors:
    25  *      Reto Grieder
     25 *      Benjamin Knecht <beni_at_orxonox.net>, (C) 2007, Felix Schulthess
    2626 *
    2727 */
     
    3535#include "GraphicsEngine.h"
    3636
     37#include <OgreConfigFile.h>
     38#include <OgreException.h>
     39#include <OgreLogManager.h>
    3740#include <OgreRoot.h>
    38 #include <OgreException.h>
    39 #include <OgreConfigFile.h>
    40 #include <OgreLogManager.h>
     41#include <OgreSceneManager.h>
    4142#include <OgreTextureManager.h>
    42 #include "core/InputManager.h"
     43#include <OgreViewport.h>
     44
    4345#include "core/CoreIncludes.h"
    4446#include "core/ConfigValueIncludes.h"
    4547#include "core/Debug.h"
    4648#include "core/CommandExecutor.h"
    47 #include "core/TclBind.h"
     49#include "core/ConsoleCommand.h"
     50#include "core/input/InputManager.h"
     51
    4852#include "console/InGameConsole.h"
    49 
    50 #include "core/ConsoleCommand.h"
    51 #include <OgreSceneManager.h>
    52 #include <OgreCompositorManager.h>
    53 #include <OgreViewport.h>
     53#include "Settings.h"
     54
    5455
    5556namespace orxonox {
     
    7071    root_(0),
    7172    scene_(0),
    72     renderWindow_(0),
    73     //configPath_(""),
    74     dataPath_(""),
    75     ogreLogfile_("")
     73    renderWindow_(0)
    7674  {
    7775    RegisterObject(GraphicsEngine);
     
    8381  void GraphicsEngine::setConfigValues()
    8482  {
    85     SetConfigValue(dataPath_, "../../Media/").description("relative path to media data");
    86     SetConfigValue(ogreLogfile_, "ogre.log").description("Logfile for messages from Ogre. Use \"\" to suppress log file creation.");
     83    SetConfigValue(resourceFile_,    "resources.cfg").description("Location of the resources file in the data path.");
     84    SetConfigValue(ogreConfigFile_,  "ogre.cfg").description("Location of the Ogre config file");
     85    SetConfigValue(ogrePluginsFile_, "plugins.cfg").description("Location of the Ogre plugins file");
     86    SetConfigValue(ogreLogFile_,     "ogre.log").description("Logfile for messages from Ogre. \
     87                                                             Use \"\" to suppress log file creation.");
    8788    SetConfigValue(ogreLogLevelTrivial_ , 5).description("Corresponding orxonox debug level for ogre Trivial");
    8889    SetConfigValue(ogreLogLevelNormal_  , 4).description("Corresponding orxonox debug level for ogre Normal");
    8990    SetConfigValue(ogreLogLevelCritical_, 2).description("Corresponding orxonox debug level for ogre Critical");
    90 
    91     TclBind::getInstance().setDataPath(this->dataPath_);
    9291  }
    9392
     
    126125    @brief Creates the Ogre Root object and sets up the ogre log.
    127126  */
    128   bool GraphicsEngine::setup(std::string& dataPath)
     127  bool GraphicsEngine::setup()
    129128  {
    130129    CCOUT(3) << "Setting up..." << std::endl;
    131130    // temporary overwrite of dataPath, change ini file for permanent change
    132     if (dataPath != "")
    133       dataPath_ = dataPath;
    134     if (dataPath_ == "")
    135       return false;
    136     if (dataPath_[dataPath_.size() - 1] != '/')
    137       dataPath_ += "/";
    138 
    139     //TODO: Check if file exists (maybe not here)
    140 #if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC && defined(_DEBUG)
    141     std::string plugin_filename = "plugins_d.cfg";
    142 #else
    143     std::string plugin_filename = "plugins.cfg";
    144 #endif
    145131
    146132// TODO: LogManager doesn't work on specific systems. The why is unknown yet.
     
    154140    // create our own log that we can listen to
    155141    Ogre::Log *myLog;
    156     if (this->ogreLogfile_ == "")
     142    if (this->ogreLogFile_ == "")
    157143      myLog = logger->createLog("ogre.log", true, false, true);
    158144    else
    159       myLog = logger->createLog(this->ogreLogfile_, true, false, false);
     145      myLog = logger->createLog(this->ogreLogFile_, true, false, false);
    160146    CCOUT(4) << "Ogre Log created" << std::endl;
    161147
     
    167153    CCOUT(4) << "Creating Ogre Root..." << std::endl;
    168154
    169     root_ = new Ogre::Root(plugin_filename, "ogre.cfg", this->ogreLogfile_);
     155    if (ogrePluginsFile_ == "")
     156    {
     157      COUT(1) << "Error: Ogre plugins file set to \"\". Cannot load." << std::endl;
     158      return false;
     159    }
     160    if (ogreConfigFile_ == "")
     161    {
     162      COUT(1) << "Error: Ogre config file set to \"\". Cannot load." << std::endl;
     163      return false;
     164    }
     165    if (ogreLogFile_ == "")
     166    {
     167      COUT(1) << "Error: Ogre log file set to \"\". Cannot load." << std::endl;
     168      return false;
     169    }
     170
     171    try
     172    {
     173      root_ = new Ogre::Root(ogrePluginsFile_, ogreConfigFile_, ogreLogFile_);
     174    }
     175    catch (Ogre::Exception ex)
     176    {
     177      COUT(2) << "Error: There was an exception when creating Ogre Root." << std::endl;
     178      return false;
     179    }
     180
     181    if (!root_->getInstalledPlugins().size())
     182    {
     183      COUT(1) << "Error: No plugins declared. Cannot load Ogre." << std::endl;
     184      COUT(0) << "Is the plugins file correctly declared?" << std::endl;
     185      return false;
     186    }
    170187
    171188#if 0
     
    180197
    181198    // specify where Ogre has to look for resources. This call doesn't parse anything yet!
    182     declareRessourceLocations();
     199    if (!declareRessourceLocations())
     200      return false;
    183201
    184202    CCOUT(3) << "Set up done." << std::endl;
     
    186204  }
    187205
    188   void GraphicsEngine::declareRessourceLocations()
     206  bool GraphicsEngine::declareRessourceLocations()
    189207  {
    190208    CCOUT(4) << "Declaring Resources" << std::endl;
    191209    //TODO: Specify layout of data file and maybe use xml-loader
    192210    //TODO: Work with ressource groups (should be generated by a special loader)
     211
     212    if (resourceFile_ == "")
     213    {
     214      COUT(1) << "Error: Resource file set to \"\". Cannot load." << std::endl;
     215      return false;
     216    }
     217
    193218    // Load resource paths from data file using configfile ressource type
    194219    Ogre::ConfigFile cf;
    195     cf.load(dataPath_ + "resources.cfg");
     220    try
     221    {
     222      cf.load(Settings::getDataPath() + resourceFile_);
     223    }
     224    catch (Ogre::Exception ex)
     225    {
     226      COUT(1) << "Error: Could not load resources.cfg in path " << Settings::getDataPath() << std::endl;
     227      COUT(0) << "Have you forgotten to set the data path in orxnox.ini?" << std::endl;
     228      return false;
     229    }
    196230
    197231    // Go through all sections & settings in the file
     
    201235    while (seci.hasMoreElements())
    202236    {
    203       secName = seci.peekNextKey();
    204       Ogre::ConfigFile::SettingsMultiMap *settings = seci.getNext();
    205       Ogre::ConfigFile::SettingsMultiMap::iterator i;
    206       for (i = settings->begin(); i != settings->end(); ++i)
     237      try
    207238      {
    208         typeName = i->first; // for instance "FileSystem" or "Zip"
    209         archName = i->second; // name (and location) of archive
    210 
    211         Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
    212                                            std::string(dataPath_ + archName),
    213                                            typeName, secName);
     239        secName = seci.peekNextKey();
     240        Ogre::ConfigFile::SettingsMultiMap *settings = seci.getNext();
     241        Ogre::ConfigFile::SettingsMultiMap::iterator i;
     242        for (i = settings->begin(); i != settings->end(); ++i)
     243        {
     244          typeName = i->first; // for instance "FileSystem" or "Zip"
     245          archName = i->second; // name (and location) of archive
     246
     247          Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
     248              std::string(Settings::getDataPath() + archName), typeName, secName);
     249        }
    214250      }
    215     }
     251      catch (Ogre::Exception ex)
     252      {
     253        COUT(2) << "Exception while reading resources.cfg. Proceeding.." << ex.getDescription() << std::endl;
     254      }
     255    }
     256    return true;
    216257  }
    217258
     
    223264
    224265    CCOUT(4) << "Creating render window" << std::endl;
    225     this->renderWindow_ = root_->initialise(true, "OrxonoxV2");
     266    try
     267    {
     268      this->renderWindow_ = root_->initialise(true, "OrxonoxV2");
     269    }
     270    catch (Ogre::Exception ex)
     271    {
     272      COUT(2) << "Error: There was an exception when initialising Ogre Root." << std::endl;
     273      return false;
     274    }
     275
    226276    if (!root_->isInitialised())
    227277    {
    228       CCOUT(2) << "Error: Creating Ogre root object failed" << std::endl;
     278      CCOUT(2) << "Error: Initialising Ogre root object failed." << std::endl;
    229279      return false;
    230280    }
  • code/trunk/src/orxonox/GraphicsEngine.h

    r1511 r1535  
    2121 *
    2222 *   Author:
    23  *      Benjamin Knecht <beni_at_orxonox.net>, (C) 2007
     23 *      Reto Grieder
    2424 *   Co-authors:
    25  *      Reto Grieder
     25 *      Benjamin Knecht <beni_at_orxonox.net>, (C) 2007, Felix Schulthess
    2626 *
    2727 */
     
    5656        public:
    5757            void setConfigValues();
    58             bool setup(std::string& dataPath);
    59             void declareRessourceLocations();
     58            bool setup();
     59            bool declareRessourceLocations();
    6060            bool loadRenderer();
    6161            bool initialiseResources();
     
    6565
    6666            Ogre::SceneManager* getSceneManager() { return scene_; }
    67             std::string& getDataPath() { return dataPath_; }
    6867
    6968            // several window properties
     
    9594                             bool, const std::string&);
    9695
    97             Ogre::Root*         root_;        //!< Ogre's root
    98             Ogre::SceneManager* scene_;       //!< scene manager of the game
    99             Ogre::RenderWindow* renderWindow_;//!< the current render window
    100             //bool               bOverwritePath_; //!< overwrites path
    101             //std::string         configPath_;  //!< path to config file
    102             std::string         dataPath_;    //!< path to data file
    103             std::string         ogreLogfile_; //!< log file name for Ogre log messages
    104             int ogreLogLevelTrivial_;         //!< Corresponding Orxonx debug level for LL_TRIVIAL
    105             int ogreLogLevelNormal_;          //!< Corresponding Orxonx debug level for LL_NORMAL
    106             int ogreLogLevelCritical_;        //!< Corresponding Orxonx debug level for LL_CRITICAL
     96            Ogre::Root*         root_;              //!< Ogre's root
     97            Ogre::SceneManager* scene_;             //!< scene manager of the game
     98            Ogre::RenderWindow* renderWindow_;      //!< the current render window
     99            std::string         resourceFile_;      //!< resources file name
     100            std::string         ogreConfigFile_;    //!< ogre config file name
     101            std::string         ogrePluginsFile_;   //!< ogre plugins file name
     102            std::string         ogreLogFile_;      //!< log file name for Ogre log messages
     103            int ogreLogLevelTrivial_;               //!< Corresponding Orxonx debug level for LL_TRIVIAL
     104            int ogreLogLevelNormal_;                //!< Corresponding Orxonx debug level for LL_NORMAL
     105            int ogreLogLevelCritical_;              //!< Corresponding Orxonx debug level for LL_CRITICAL
    107106    };
    108107}
  • code/trunk/src/orxonox/Main.cc

    r1505 r1535  
    8282    res = orx->init(argc, argv, macBundlePath());
    8383#else
    84     res = orx->init(argc, argv, "");
     84    res = orx->init(argc, argv);
    8585#endif
    8686
  • code/trunk/src/orxonox/Orxonox.cc

    r1534 r1535  
    2121 *
    2222 *   Author:
     23 *      Reto Grieder
     24 *   Co-authors:
    2325 *      Benjamin Knecht <beni_at_orxonox.net>, (C) 2007
    24  *   Co-authors:
    25  *      ...
    2626 *
    2727 */
     
    5757#include "core/Debug.h"
    5858#include "core/Loader.h"
    59 #include "core/Tickable.h"
    60 #include "core/InputManager.h"
     59#include "core/input/InputManager.h"
    6160#include "core/TclBind.h"
     61#include "core/Core.h"
    6262
    6363// audio
     
    7070// objects and tools
    7171#include "hud/HUD.h"
    72 #include <Ogre.h>
     72#include "objects/Tickable.h"
    7373
    7474#include "GraphicsEngine.h"
     75#include "Settings.h"
    7576
    7677// FIXME: is this really file scope?
    7778// globals for the server or client
    78 network::Client *client_g;
    79 network::Server *server_g;
     79network::Client *client_g = 0;
     80network::Server *server_g = 0;
    8081
    8182namespace orxonox
     
    166167   * @param path path to config (in home dir or something)
    167168   */
    168   bool Orxonox::init(int argc, char **argv, std::string path)
    169   {
    170     //TODO: find config file (assuming executable directory)
    171     //TODO: read config file
    172     //TODO: give config file to Ogre
     169  bool Orxonox::init(int argc, char **argv)
     170  {
     171#ifdef _DEBUG
     172    ConfigFileManager::getSingleton()->setFile(CFT_Settings, "orxonox_d.ini");
     173#else
     174    ConfigFileManager::getSingleton()->setFile(CFT_Settings, "orxonox.ini");
     175#endif
     176    Factory::createClassHierarchy();
     177
    173178    std::string mode;
    174     std::string dataPath;
     179    std::string tempDataPath;
    175180
    176181    ArgReader ar(argc, argv);
    177     ar.checkArgument("mode", mode, false);
    178     ar.checkArgument("data", dataPath, false);
    179     ar.checkArgument("ip", serverIp_, false);
    180     ar.checkArgument("port", serverPort_, false);
     182    ar.checkArgument("mode", &mode, false);
     183    ar.checkArgument("data", &tempDataPath, false);
     184    ar.checkArgument("ip",   &serverIp_, false);
     185    ar.checkArgument("port", &serverPort_, false);
    181186    if(ar.errorHandling())
     187    {
     188      COUT(1) << "Error while parsing command line arguments" << std::endl;
     189      COUT(1) << ar.getErrorString();
     190      COUT(0) << "Usage:" << std::endl << "orxonox [mode client|server|dedicated|standalone] "
     191        << "[--data PATH] [--ip IP] [--port PORT]" << std::endl;
    182192      return false;
     193    }
    183194
    184195    if (mode == "client")
     
    190201    else
    191202    {
    192       mode = "standalone";
     203      if (mode == "")
     204        mode = "standalone";
     205      if (mode != "standalone")
     206      {
     207        COUT(2) << "Warning: mode \"" << mode << "\" doesn't exist. "
     208          << "Defaulting to standalone" << std::endl;
     209        mode = "standalone";
     210      }
    193211      mode_ = STANDALONE;
    194212    }
    195213    COUT(3) << "Orxonox: Mode is " << mode << "." << std::endl;
     214
     215    if (tempDataPath != "")
     216    {
     217      if (tempDataPath[tempDataPath.size() - 1] != '/')
     218        tempDataPath += "/";
     219      Settings::tsetDataPath(tempDataPath);
     220    }
     221
     222    // initialise TCL
     223    TclBind::getInstance().setDataPath(Settings::getDataPath());
    196224
    197225    //if (mode_ == DEDICATED)
     
    202230    // procedure until the GUI is identical
    203231
    204     ConfigFileManager::getSingleton()->setFile(CFT_Settings, "orxonox.ini");
    205     Factory::createClassHierarchy();
    206 
    207232    ogre_ = &GraphicsEngine::getSingleton();
    208     if (!ogre_->setup(path))       // creates ogre root and other essentials
     233    if (!ogre_->setup())       // creates ogre root and other essentials
    209234      return false;
    210235
     
    421446      }
    422447
     448      // tick the core
     449      Core::tick((float)evt.timeSinceLastFrame);
    423450      // Call those objects that need the real time
    424451      for (Iterator<TickableReal> it = ObjectList<TickableReal>::start(); it; ++it)
     
    427454      for (Iterator<Tickable> it = ObjectList<Tickable>::start(); it; ++it)
    428455        it->tick((float)evt.timeSinceLastFrame * this->timefactor_);
     456      //AudioManager::tick();
     457      if (client_g)
     458        client_g->tick((float)evt.timeSinceLastFrame);
     459      if (server_g)
     460        server_g->tick((float)evt.timeSinceLastFrame);
    429461
    430462      // don't forget to call _fireFrameStarted in ogre to make sure
  • code/trunk/src/orxonox/Orxonox.h

    r1505 r1535  
    2121 *
    2222 *   Author:
    23  *      ...
     23 *      Reto Grieder
    2424 *   Co-authors:
    25  *      ...
     25 *      Benjamin Knecht <beni_at_orxonox.net>, (C) 2007
    2626 *
    2727 */
     
    5858  {
    5959    public:
    60       bool init(int argc, char **argv, std::string path);
     60      bool init(int argc, char **argv);
    6161      bool start();
    6262
  • code/trunk/src/orxonox/OrxonoxStableHeaders.h

    r1505 r1535  
    104104#include "core/Debug.h"
    105105//#include "core/Executor.h"
    106 #include "core/Tickable.h"
    107106//#include "core/XMLPort.h"
    108107
     
    111110#include "OrxonoxPrereqs.h"
    112111#include "tools/Timer.h"
     112#include "objects/Tickable.h"
    113113#include "objects/Model.h"
    114114#include "objects/WorldEntity.h"
  • code/trunk/src/orxonox/console/InGameConsole.cc

    r1505 r1535  
    4242#include "core/ConfigValueIncludes.h"
    4343#include "core/ConsoleCommand.h"
    44 #include "core/InputManager.h"
     44#include "core/input/InputManager.h"
    4545#include "util/Math.h"
    4646#include "GraphicsEngine.h"
  • code/trunk/src/orxonox/console/InGameConsole.h

    r1505 r1535  
    3636#include <OgreTextAreaOverlayElement.h>
    3737
    38 #include "core/Tickable.h"
    3938#include "core/Shell.h"
     39#include "objects/Tickable.h"
    4040
    4141
  • code/trunk/src/orxonox/hud/HUD.h

    r1505 r1535  
    3636#include <OgreTextAreaOverlayElement.h>
    3737#include <OgreSceneNode.h>
    38 #include "core/Tickable.h"
     38#include "objects/Tickable.h"
    3939#include "util/Math.h"
    4040
    4141namespace orxonox
    4242{
    43     class _OrxonoxExport HUD : public Tickable
     43    class _OrxonoxExport HUD : public TickableReal
    4444    {
    4545      private:
  • code/trunk/src/orxonox/hud/RadarOverlayElement.cc

    r1505 r1535  
    3535
    3636#include "GraphicsEngine.h"
    37 #include "core/Tickable.h"
    3837#include "core/ConsoleCommand.h"
     38#include "objects/Tickable.h"
    3939#include "objects/SpaceShip.h"
    4040#include "RadarObject.h"
  • code/trunk/src/orxonox/objects/SpaceShip.cc

    r1534 r1535  
    4242#include "core/Debug.h"
    4343#include "GraphicsEngine.h"
    44 #include "core/InputManager.h"
     44#include "core/input/InputManager.h"
    4545#include "particle/ParticleInterface.h"
    4646#include "Projectile.h"
  • code/trunk/src/orxonox/objects/SpaceShip.h

    r1534 r1535  
    3434
    3535#include "util/Math.h"
    36 #include "core/InputInterfaces.h"
    3736#include "Camera.h"
    3837#include "Model.h"
    39 #include "../tools/BillboardSet.h"
     38#include "tools/BillboardSet.h"
    4039
    4140namespace orxonox
  • code/trunk/src/orxonox/objects/WorldEntity.h

    r1505 r1535  
    3939#include "network/Synchronisable.h"
    4040#include "core/BaseObject.h"
    41 #include "core/Tickable.h"
     41#include "Tickable.h"
    4242#include "../tools/Mesh.h"
    4343
  • code/trunk/src/orxonox/tools/Timer.h

    r1505 r1535  
    6262
    6363#include "OrxonoxPrereqs.h"
    64 #include "core/CorePrereqs.h"
    65 #include "core/Tickable.h"
     64#include "objects/Tickable.h"
    6665
    6766namespace orxonox
Note: See TracChangeset for help on using the changeset viewer.