Changeset 4992 in orxonox.OLD for orxonox/trunk/src/lib/coord
- Timestamp:
- Aug 13, 2005, 10:02:40 AM (19 years ago)
- Location:
- orxonox/trunk/src/lib/coord
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
orxonox/trunk/src/lib/coord/p_node.cc
r4991 r4992 114 114 this->toPosition = NULL; 115 115 this->toDirection = NULL; 116 this->bias = 1.0; 116 117 } 117 118 … … 182 183 } 183 184 184 void PNode::setRelCoorSoft(const Vector& relCoordSoft) 185 /** 186 * sets a new relative position smoothely 187 * @param relCoordSoft the new Position to iterate to 188 * @param bias how fast to iterate to this position 189 */ 190 void PNode::setRelCoorSoft(const Vector& relCoordSoft, float bias) 185 191 { 186 192 if (likely(this->toPosition == NULL)) … … 188 194 189 195 *this->toPosition = relCoordSoft; 190 } 191 192 193 /** 194 * set relative coordinates 196 this->bias = bias; 197 } 198 199 200 /** 201 * set relative coordinates smoothely 195 202 * @param x x-relative coordinates to its parent 196 203 * @param y y-relative coordinates to its parent 197 204 * @param z z-relative coordinates to its parent 198 \see void PNode::setRelCoor (const Vector& relCoord)199 */ 200 void PNode::setRelCoorSoft (float x, float y, float z )201 { 202 this->setRelCoorSoft(Vector(x, y, z) );205 \see void PNode::setRelCoorSoft (const Vector&, float) 206 */ 207 void PNode::setRelCoorSoft (float x, float y, float z, float bias) 208 { 209 this->setRelCoorSoft(Vector(x, y, z), bias); 203 210 } 204 211 … … 295 302 * sets the Relative Direction of this node to its parent in a Smoothed way 296 303 * @param relDirSoft the direction to iterate to smoothely. 297 */ 298 void PNode::setRelDirSoft(const Quaternion& relDirSoft) 304 * @param bias how fast to iterate to the new Direction 305 */ 306 void PNode::setRelDirSoft(const Quaternion& relDirSoft, float bias) 299 307 { 300 308 if (likely(this->toDirection == NULL)) … … 302 310 303 311 *this->toDirection = relDirSoft; 312 this->bias = bias; 304 313 } 305 314 … … 312 321 * main difference is, that here you give a directional vector, that will be translated into a Quaternion 313 322 */ 314 void PNode::setRelDirSoft(float x, float y, float z )315 { 316 this->setRelDirSoft(Quaternion(Vector(x,y,z), Vector(0,1,0)) );323 void PNode::setRelDirSoft(float x, float y, float z, float bias) 324 { 325 this->setRelDirSoft(Quaternion(Vector(x,y,z), Vector(0,1,0)), bias); 317 326 } 318 327 … … 383 392 if( likely(pNode->parent != NULL)) 384 393 { 385 PRINTF( 3)("PNode::addChild() - reparenting node: removing it and adding it again\n");394 PRINTF(4)("PNode::addChild() - reparenting node: removing it and adding it again\n"); 386 395 pNode->parent->children->remove(pNode); 387 396 } … … 463 472 * @param parentNode the new Node to connect this node to. 464 473 */ 465 void PNode::softReparent(PNode* parentNode) 466 { 474 void PNode::softReparent(PNode* parentNode, float bias) 475 { 476 if (this->parent == parentNode) 477 return; 478 467 479 //this->setRelCoorSoft(this->getRelCoor()); 468 480 if (likely(this->toPosition == NULL)) … … 476 488 *this->toDirection = this->getRelDir(); 477 489 } 490 this->bias = bias; 478 491 479 492 … … 491 504 } 492 505 493 void PNode::softReparent(const char* parentName )506 void PNode::softReparent(const char* parentName, float bias) 494 507 { 495 508 PNode* parentNode = dynamic_cast<PNode*>(ClassList::getObject(parentName, CL_PARENT_NODE)); 496 509 if (parentNode != NULL) 497 this->softReparent(parentNode );510 this->softReparent(parentNode, bias); 498 511 } 499 512 … … 555 568 if (unlikely(this->toPosition != NULL)) 556 569 { 557 Vector moveVect = (*this->toPosition - this->getRelCoor()) *dt ;570 Vector moveVect = (*this->toPosition - this->getRelCoor()) *dt*bias; 558 571 559 572 if (likely(moveVect.len() >= .001)) … … 570 583 if (unlikely(this->toDirection != NULL)) 571 584 { 572 Quaternion rotQuat = (*this->toDirection - this->getRelDir()) *dt ;585 Quaternion rotQuat = (*this->toDirection - this->getRelDir()) *dt*bias; 573 586 574 587 // if (likely(rotQuat.len() >= .001)) -
orxonox/trunk/src/lib/coord/p_node.h
r4991 r4992 62 62 void setRelCoor (const Vector& relCoord); 63 63 void setRelCoor (float x, float y, float z); 64 void setRelCoorSoft(const Vector& relCoordSoft );65 void setRelCoorSoft(float x, float y, float z );64 void setRelCoorSoft(const Vector& relCoordSoft, float bias = 1.0); 65 void setRelCoorSoft(float x, float y, float z, float bias = 1.0); 66 66 /** @returns the relative position */ 67 67 inline const Vector& getRelCoor () const { return this->relCoordinate; }; … … 74 74 void setRelDir (const Quaternion& relDir); 75 75 void setRelDir (float x, float y, float z); 76 void setRelDirSoft(const Quaternion& relDirSoft );77 void setRelDirSoft(float x, float y, float z );76 void setRelDirSoft(const Quaternion& relDirSoft, float bias = 1.0); 77 void setRelDirSoft(float x, float y, float z, float bias = 1.0); 78 78 /** @returns the relative Direction */ 79 79 inline const Quaternion& getRelDir () const { return this->relDirection; }; … … 104 104 PNode* getParent () const { return this->parent; }; 105 105 106 void softReparent(PNode* parentNode );107 void softReparent(const char* parentName );106 void softReparent(PNode* parentNode, float bias = 1.0); 107 void softReparent(const char* parentName, float bias = 1.0); 108 108 109 109 void setParentMode (PARENT_MODE parentMode); … … 144 144 Vector* toPosition; //!< a position to which to iterate. (This is used in conjunction with softReparent.and set*CoorSoft) 145 145 Quaternion* toDirection; //!< a direction to which to iterate. (This is used in conjunction with softReparent and set*DirSoft) 146 float bias; //!< how fast to iterate to the given position (default is 1) 146 147 147 148 PNode* parent; //!< a pointer to the parent node
Note: See TracChangeset
for help on using the changeset viewer.