Changeset 10314 in orxonox.OLD for trunk/src/world_entities/mount_point.cc
- Timestamp:
- Jan 24, 2007, 12:45:39 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/world_entities/mount_point.cc
r10147 r10314 10 10 11 11 ### File Specific 12 main-programmer: Patrick Boenzli patrick@orxonox.net12 main-programmer: Patrick Boenzli, patrick@orxonox.net 13 13 co-programmer: 14 14 */ … … 19 19 #include "util/loading/factory.h" 20 20 #include "util/loading/load_param.h" 21 #include "util/loading/load_param_xml.h" 22 21 23 22 24 … … 27 29 28 30 ObjectListDefinition(MountPoint); 29 CREATE_FACTORY(MountPoint);30 31 31 32 … … 33 34 * construct 34 35 */ 35 MountPoint::MountPoint () 36 { 36 MountPoint::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 37 44 this->init(); 38 45 } 39 46 40 41 /**42 * constructor43 * @param root the xml root element44 */45 MountPoint::MountPoint(const TiXmlElement* root)46 {47 this->init();48 49 if( root != NULL)50 this->loadParams(root);51 }52 47 53 48 … … 75 70 * @param root the XML-element to load the MD2Creature's properties from 76 71 */ 77 void MountPoint::loadParams(const TiXmlElement* root) 78 { 79 WorldEntity::loadParams(root); 72 void 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 */ 117 void 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 */ 135 void 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 */ 149 void 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 */ 160 void 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()); 80 182 } 81 183 … … 89 191 { 90 192 91 92 193 } 93 194 … … 98 199 void MountPoint::draw() const 99 200 { 100 101 201 } 102 202 … … 108 208 void MountPoint::debugDraw() const 109 209 { 110 210 // invoke the underlying pnode debug draw 211 this->debugDraw(); 111 212 } 112 213
Note: See TracChangeset
for help on using the changeset viewer.