Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 10314 in orxonox.OLD for trunk/src/world_entities/mount_point.cc


Ignore:
Timestamp:
Jan 24, 2007, 12:45:39 AM (17 years ago)
Author:
patrick
Message:

merged branche mount_point to trunk. this will add mount point abilities, bsp transparency fix and some other smaller stuff to this trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/world_entities/mount_point.cc

    r10147 r10314  
    1010
    1111   ### File Specific
    12    main-programmer: Patrick Boenzli patrick@orxonox.net
     12   main-programmer: Patrick Boenzli, patrick@orxonox.net
    1313   co-programmer:
    1414*/
     
    1919#include "util/loading/factory.h"
    2020#include "util/loading/load_param.h"
     21#include "util/loading/load_param_xml.h"
     22
    2123
    2224
     
    2729
    2830ObjectListDefinition(MountPoint);
    29 CREATE_FACTORY(MountPoint);
    3031
    3132
     
    3334 * construct
    3435 */
    35 MountPoint::MountPoint ()
    36 {
     36MountPoint::MountPoint (const Vector& up, const Vector& forward, const Vector& center, const std::string& name)
     37{
     38  PRINTF(5)("Created mount point %s\n", name.c_str());
     39
     40  this->_name = name;
     41  this->setAbsCoor( center);
     42  this->setAbsDir( Quaternion(forward, up));
     43
    3744  this->init();
    3845}
    3946
    40 
    41 /**
    42  * constructor
    43  * @param root the xml root element
    44  */
    45 MountPoint::MountPoint(const TiXmlElement* root)
    46 {
    47   this->init();
    48 
    49   if( root != NULL)
    50     this->loadParams(root);
    51 }
    5247
    5348
     
    7570 * @param root the XML-element to load the MD2Creature's properties from
    7671 */
    77 void MountPoint::loadParams(const TiXmlElement* root)
    78 {
    79   WorldEntity::loadParams(root);
     72void MountPoint::initMountPoint(const TiXmlElement* root)
     73{
     74  if( root == NULL)
     75  {
     76    PRINTF(1)("MountPoint - initialization failed, since I got no valid xml element\n");
     77    return;
     78  }
     79  // now get the first element
     80  const TiXmlElement* element = root->FirstChildElement("MountPoints");
     81  if( element == NULL)
     82  {
     83    PRINTF(1)("I am in section: %s, Object Information file is missing a proper 'MountPoints' section\n", root->Value());
     84//     element = root->FirstChildElement( );
     85//     PRINTF(0)("first child: %s\n", element->Value());
     86  }
     87  else
     88  {
     89    element = element->FirstChildElement();
     90    // parse the information for this mount point
     91
     92    PRINTF(4)("Loading WorldEntities\n");
     93    while( element != NULL)
     94    {
     95      std::string name = element->Value();
     96
     97      PRINTF(5)("checking %s against local %s\n", name.c_str(), this->_name.c_str());
     98      // check if we got the right mount point
     99      if( this->_name.find(name, 0) != std::string::npos)
     100      {
     101        PRINTF(5)("found mount point %s\n", this->_name.c_str());
     102        // load it
     103        this->loadParam(element);
     104      }
     105
     106      element = element->NextSiblingElement();
     107    }
     108  }
     109}
     110
     111
     112
     113/**
     114 * load the parameters from the xml section
     115 * @param root the root element of this xml branche
     116 */
     117void MountPoint::loadParam(const TiXmlElement* root)
     118{
     119  // first check for the description
     120  LoadParam(root, "Description", this, MountPoint, setDescription)
     121  .describe("Sets this mount point a description");
     122
     123  // now check for the orx class to create
     124  LoadParam(root, "OrxClass", this, MountPoint, setOrxClass)
     125  .describe("Sets the class this mount points should host");
     126
     127  LoadParamXML(root, "Details", this, MountPoint, loadDetails);
     128}
     129
     130
     131/**
     132 * load the parameters from the world entity
     133 * @param root the root element of this xml branche
     134 */
     135void MountPoint::loadDetails(const TiXmlElement* root)
     136{
     137  if( this->_mount != NULL)
     138  {
     139    PRINTF(0)("Got detail informations\n");
     140    this->_mount->loadParams( root);
     141  }
     142}
     143
     144
     145/**
     146 * setst the description (optional) via xml tag
     147 * @param description string containing the description
     148 */
     149void MountPoint::setDescription(const std::string& description)
     150{
     151  this->_description = description;
     152}
     153
     154
     155
     156/**
     157 * sets the class of this mount point
     158 * @param orxClass class
     159 */
     160void MountPoint::setOrxClass(const std::string& orxClass)
     161{
     162  // create the object for this mount point
     163  BaseObject* obj = Factory::fabricate(orxClass);
     164  // check if the object is created correctly
     165  if( obj != NULL)
     166  {
     167    if( obj->isA( WorldEntity::staticClassID()))
     168    {
     169      // cast down the object to WE
     170      this->_mount = dynamic_cast<WorldEntity*>(obj);
     171
     172      // now set the position, direction and reparent it to this node
     173      this->_mount->setAbsCoor( this->getAbsCoor());
     174      this->_mount->setAbsDir( this->getAbsDir());
     175      this->_mount->setParent( this);
     176
     177      this->_mount->toList( (OM_LIST)(this->getOMListNumber()+1));
     178    }
     179  }
     180  else
     181    PRINTF(1)("Couldn't create %s for this mount point (%s)\n", orxClass.c_str(), this->_name.c_str());
    80182}
    81183
     
    89191{
    90192
    91 
    92193}
    93194
     
    98199void MountPoint::draw() const
    99200{
    100 
    101201}
    102202
     
    108208void MountPoint::debugDraw() const
    109209{
    110 
     210  // invoke the underlying pnode debug draw
     211  this->debugDraw();
    111212}
    112213
Note: See TracChangeset for help on using the changeset viewer.