Changeset 10368 in orxonox.OLD for trunk/src/util/track
- Timestamp:
- Jan 25, 2007, 2:18:07 PM (18 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:ignore
-
old new 10 10 autom4te.cache 11 11 aclocal.m4 12 tags 13 test.bmp 14 config.sub 15 config.guess 16 OrxonoxPlayability.kdevses 17 OrxonoxPlayability.kdevelop.pcs
-
- Property svn:ignore
-
trunk/src/util/track/track_manager.cc
r10320 r10368 26 26 #include "t_animation.h" 27 27 28 #include <string.h> 29 28 30 29 31 #include "parser/tinyxml/tinyxml.h" … … 32 34 #include <stdarg.h> 33 35 36 ObjectListDefinition(TrackElement); 34 37 35 38 … … 39 42 TrackElement::TrackElement() 40 43 { 41 this->setClassID(CL_TRACK_ELEMENT, "TrackElement"); 44 this->registerObject(this, TrackElement::_objectList); 45 42 46 43 47 this->isFresh = true; … … 126 130 { 127 131 // return if Found. 128 if (this->getName() && !strcmp(this->getName(), trackName))129 return this;132 // if (this->getName() && !strcmp(this->getName(), trackName)) 133 // return this; 130 134 // search all children 131 135 if (this->childCount > 0) … … 217 221 void TrackElement::debug() const 218 222 { 219 PRINT(0)("--== TrackElement:%i ==--", this->ID);220 if(this->getName())221 PRINT(0)("--++Name: %s++--", this->getName());222 if(this->isFresh)223 PRINT(0)(" -- has not jet eddited in any way --\n");224 PRINT(0)("\n TimeTable: startingTime=%f; endTime=%f; duration=%f; jumpTime=%f\n", this->startingTime, this->endTime, this->duration, this->jumpTime);225 PRINT(0)(" consists of %d Points\n", this->nodeCount);226 if (this->childCount == 0)227 PRINT(0)(" has no child\n");228 else if (this->childCount == 1)229 PRINT(0)(" has 1 child: =%d=\n", this->getChild(0)->ID);230 else if (this->childCount > 1)231 {232 PRINT(0)(" has %d children: ", this->childCount);233 //TrackElement* enumElem = this->children->enumerate();234 tIterator<TrackElement>* iterator = this->children->getIterator();235 TrackElement* enumElem = iterator->firstElement();236 while (enumElem)237 {238 PRINT(0)("=%d= ", enumElem->ID);239 enumElem = iterator->nextElement();240 }241 delete iterator;242 PRINT(0)("\n");243 }244 245 if(this->isHotPoint)246 PRINT(0)(" is a special Point:\n");247 if(this->isSavePoint)248 PRINT(0)(" is a SavePoint\n");249 if(this->isFork)250 {251 PRINT(0)(" is A Fork with with %d children.\n", this->childCount);252 }253 if(this->isJoined)254 PRINT(0)(" is Joined at the End\n");255 256 if(!this->backLoopCheck()) /* this should not happen */257 PRINT(2)(" THERE IS A BACKLOOP TO THIS ELEMENT\n");223 // PRINT(0)("--== TrackElement:%i ==--", this->ID); 224 // if(this->getName()) 225 // PRINT(0)("--++Name: %s++--", this->getName()); 226 // if(this->isFresh) 227 // PRINT(0)(" -- has not jet eddited in any way --\n"); 228 // PRINT(0)("\n TimeTable: startingTime=%f; endTime=%f; duration=%f; jumpTime=%f\n", this->startingTime, this->endTime, this->duration, this->jumpTime); 229 // PRINT(0)(" consists of %d Points\n", this->nodeCount); 230 // if (this->childCount == 0) 231 // PRINT(0)(" has no child\n"); 232 // else if (this->childCount == 1) 233 // PRINT(0)(" has 1 child: =%d=\n", this->getChild(0)->ID); 234 // else if (this->childCount > 1) 235 // { 236 // PRINT(0)(" has %d children: ", this->childCount); 237 // //TrackElement* enumElem = this->children->enumerate(); 238 // tIterator<TrackElement>* iterator = this->children->getIterator(); 239 // TrackElement* enumElem = iterator->firstElement(); 240 // while (enumElem) 241 // { 242 // PRINT(0)("=%d= ", enumElem->ID); 243 // enumElem = iterator->nextElement(); 244 // } 245 // delete iterator; 246 // PRINT(0)("\n"); 247 // } 248 // 249 // if(this->isHotPoint) 250 // PRINT(0)(" is a special Point:\n"); 251 // if(this->isSavePoint) 252 // PRINT(0)(" is a SavePoint\n"); 253 // if(this->isFork) 254 // { 255 // PRINT(0)(" is A Fork with with %d children.\n", this->childCount); 256 // } 257 // if(this->isJoined) 258 // PRINT(0)(" is Joined at the End\n"); 259 // 260 // if(!this->backLoopCheck()) /* this should not happen */ 261 // PRINT(2)(" THERE IS A BACKLOOP TO THIS ELEMENT\n"); 258 262 } 259 263 … … 358 362 TrackManager::TrackManager() 359 363 { 360 this->setClassID(CL_TRACK_MANAGER, "TrackManager");361 this->setName("TrackManager");362 363 364 TrackManager::singletonRef = this; // do this because otherwise the TrackNode cannot get The instance of the TrackManager 364 365 … … 395 396 void TrackManager::loadParams(const TiXmlElement* root) 396 397 { 397 double x, y, z, d;398 399 LOAD_PARAM_START_CYCLE(root, element);400 {401 402 LoadParam_CYCLE(element, "WorkOn", this, TrackManager, workOnS)403 .describe("Selects a TrackElement (by name) to work on");404 405 LoadParam_CYCLE(element, "Point", this, TrackManager, addPoint)406 .describe("Adds a new Point to the currently selected TrackElement");407 408 LoadParam_CYCLE(element, "Duration", this, TrackManager, setDuration)409 .describe("Sets the Duration of the currently selected TrackElement");410 411 LoadParam_CYCLE(element, "HotPoint", this, TrackManager, addHotPoint)412 .describe("Sets a new Point that acts as a hot point. meaning, the curve will flow through this Point");413 414 LoadParam_CYCLE(element, "SavePoint", this, TrackManager, setSavePointS)415 .describe("Sets the current selected Point to a Savepoint, meaning that the curve will be ended and a new one starts, and that one starts again from this point on");416 417 LoadParam_CYCLE(element, "Fork", this, TrackManager, forkS)418 .describe("Forks the Path into multiple forked Path names seperated by ','");419 420 LoadParam_CYCLE(element, "Join", this, TrackManager, joinS)421 .describe("Joins multiple joining Path names seperated by ','");398 // double x, y, z, d; 399 // 400 // LOAD_PARAM_START_CYCLE(root, element); 401 // { 402 // 403 // LoadParam_CYCLE(element, "WorkOn", this, TrackManager, workOnS) 404 // .describe("Selects a TrackElement (by name) to work on"); 405 // 406 // LoadParam_CYCLE(element, "Point", this, TrackManager, addPoint) 407 // .describe("Adds a new Point to the currently selected TrackElement"); 408 // 409 // LoadParam_CYCLE(element, "Duration", this, TrackManager, setDuration) 410 // .describe("Sets the Duration of the currently selected TrackElement"); 411 // 412 // LoadParam_CYCLE(element, "HotPoint", this, TrackManager, addHotPoint) 413 // .describe("Sets a new Point that acts as a hot point. meaning, the curve will flow through this Point"); 414 // 415 // LoadParam_CYCLE(element, "SavePoint", this, TrackManager, setSavePointS) 416 // .describe("Sets the current selected Point to a Savepoint, meaning that the curve will be ended and a new one starts, and that one starts again from this point on"); 417 // 418 // LoadParam_CYCLE(element, "Fork", this, TrackManager, forkS) 419 // .describe("Forks the Path into multiple forked Path names seperated by ','"); 420 // 421 // LoadParam_CYCLE(element, "Join", this, TrackManager, joinS) 422 // .describe("Joins multiple joining Path names seperated by ','"); 422 423 423 424 /* … … 445 446 } 446 447 */ 447 } 448 LOAD_PARAM_END_CYCLE(element); 448 449 // } 450 // LOAD_PARAM_END_CYCLE(element); 449 451 } 450 452 … … 477 479 void TrackManager::initChildren(unsigned int childCount, TrackElement* trackElem) 478 480 { 479 if (!trackElem)480 trackElem = this->currentTrackElem;481 482 trackElem->childCount = childCount;483 trackElem->mainJoin = true; // this tells join, that this one is the Main Join, if it tries to join multiple Tracks484 trackElem->children = new tList<TrackElement>();485 for (int i = 0; i < childCount; i++)486 {487 // create a new Element488 TrackElement* newElem = new TrackElement();489 // setting up the new ID490 newElem->ID = ++trackElemCount;491 // setting up the Time492 newElem->startingTime = trackElem->endTime + trackElem->jumpTime;493 // adds the conection Point494 this->addPointV(trackElem->curve->getNode(trackElem->curve->getNodeCount()),495 newElem);496 // add the new child to the childList.497 trackElem->children->add(newElem);498 }499 500 // setting the Name of the new TrackElement to the name of the last one + _childI501 502 if (trackElem->getName())503 {504 for (int i = 0; i < trackElem->childCount; i++)505 {506 char* childName = new char[strlen(trackElem->getName())+10];507 sprintf(childName, "%s_child%d", trackElem->getName(), i);508 trackElem->getChild(i)->setName(childName);509 }510 }511 // select the first Child to work on.512 this->currentTrackElem = trackElem->getChild(0);481 // if (!trackElem) 482 // trackElem = this->currentTrackElem; 483 // 484 // trackElem->childCount = childCount; 485 // trackElem->mainJoin = true; // this tells join, that this one is the Main Join, if it tries to join multiple Tracks 486 // trackElem->children = new tList<TrackElement>(); 487 // for (int i = 0; i < childCount; i++) 488 // { 489 // // create a new Element 490 // TrackElement* newElem = new TrackElement(); 491 // // setting up the new ID 492 // newElem->ID = ++trackElemCount; 493 // // setting up the Time 494 // newElem->startingTime = trackElem->endTime + trackElem->jumpTime; 495 // // adds the conection Point 496 // this->addPointV(trackElem->curve->getNode(trackElem->curve->getNodeCount()), 497 // newElem); 498 // // add the new child to the childList. 499 // trackElem->children->add(newElem); 500 // } 501 // 502 // // setting the Name of the new TrackElement to the name of the last one + _childI 503 // 504 // if (trackElem->getName()) 505 // { 506 // for (int i = 0; i < trackElem->childCount; i++) 507 // { 508 // char* childName = new char[strlen(trackElem->getName())+10]; 509 // sprintf(childName, "%s_child%d", trackElem->getName(), i); 510 // trackElem->getChild(i)->setName(childName); 511 // } 512 // } 513 // // select the first Child to work on. 514 // this->currentTrackElem = trackElem->getChild(0); 513 515 } 514 516 … … 659 661 void TrackManager::setSavePointS(const std::string& nextElementName) 660 662 { 661 this->setSavePoint(NULL);662 if (strcmp(nextElementName, ""))663 this->firstTrackElem->findByID(this->trackElemCount)->setName(nextElementName);663 // this->setSavePoint(NULL); 664 // if (strcmp(nextElementName, "")) 665 // this->firstTrackElem->findByID(this->trackElemCount)->setName(nextElementName); 664 666 } 665 667 … … 736 738 void TrackManager::forkS(const std::string& forkString) 737 739 { 738 SubString strings(forkString, ',');739 740 int* trackIDs = new int[strings.getCount()];741 this->forkV(strings.getCount(), trackIDs, NULL);742 743 for(int i = 0; i < strings.getCount(); i++)744 {745 this->firstTrackElem->findByID(trackIDs[i])->setName(strings.getString(i));746 }747 delete []trackIDs;740 // SubString strings(forkString, ','); 741 // 742 // int* trackIDs = new int[strings.getCount()]; 743 // this->forkV(strings.getCount(), trackIDs, NULL); 744 // 745 // for(int i = 0; i < strings.getCount(); i++) 746 // { 747 // this->firstTrackElem->findByID(trackIDs[i])->setName(strings.getString(i)); 748 // } 749 // delete []trackIDs; 748 750 } 749 751 … … 877 879 void TrackManager::joinS(const std::string& joinString) 878 880 { 879 SubString strings(joinString, ',');880 881 int* trackIDs = new int[strings.getCount()];882 this->joinV(strings.getCount(), trackIDs);883 884 for(unsigned int i = 0; i < strings.getCount(); i++)885 {886 TrackElement* tmpElem = this->firstTrackElem->findByName(strings.getString(i).c_str());887 if (tmpElem != NULL)888 trackIDs[i] = tmpElem->ID;889 else890 {891 PRINTF(1)("Trying to join a Track, of which the name does not exist: %s\n", strings.getString(i).c_str());892 trackIDs[i] = -1;893 }894 }895 this->joinV(strings.getCount(), trackIDs);896 delete []trackIDs;881 // SubString strings(joinString, ','); 882 // 883 // int* trackIDs = new int[strings.getCount()]; 884 // this->joinV(strings.getCount(), trackIDs); 885 // 886 // for(unsigned int i = 0; i < strings.getCount(); i++) 887 // { 888 // TrackElement* tmpElem = this->firstTrackElem->findByName(strings.getString(i).c_str()); 889 // if (tmpElem != NULL) 890 // trackIDs[i] = tmpElem->ID; 891 // else 892 // { 893 // PRINTF(1)("Trying to join a Track, of which the name does not exist: %s\n", strings.getString(i).c_str()); 894 // trackIDs[i] = -1; 895 // } 896 // } 897 // this->joinV(strings.getCount(), trackIDs); 898 // delete []trackIDs; 897 899 } 898 900 … … 1073 1075 void TrackManager::tick(float dt) 1074 1076 { 1075 PRINTF(4)("CurrentTrackID: %d, LocalTime is: %f, timestep is: %f\n", this->currentTrackElem->ID, this->localTime, dt);1076 if (this->localTime <= this->firstTrackElem->duration)1077 this->jumpTo(this->localTime);1078 if (this->localTime <= this->maxTime)1079 this->localTime += dt;1080 if (this->localTime > this->currentTrackElem->endTime1081 && this->currentTrackElem->children)1082 {1083 if (this->currentTrackElem->jumpTime != 0.0)1084 this->jumpTo(this->localTime + this->currentTrackElem->jumpTime);1085 // jump to the next TrackElement and also set the history of the new Element to the old one.1086 TrackElement* tmpHistoryElem = this->currentTrackElem;1087 this->currentTrackElem = this->currentTrackElem->getChild(this->choosePath(this->currentTrackElem));1088 this->currentTrackElem->history = tmpHistoryElem;1089 if (this->currentTrackElem->getName())1090 {1091 this->trackText->setText(this->currentTrackElem->getName());1092 this->textAnimation->replay();1093 }1094 }1095 if (this->bindSlave)1096 {1097 Vector tmp = this->calcPos();1098 Quaternion quat = Quaternion(this->calcDir(), Vector(this->currentTrackElem->curve->calcAcc((localTime-this->currentTrackElem->startingTime)/this->currentTrackElem->duration).x,1,this->currentTrackElem->curve->calcAcc((localTime-this->currentTrackElem->startingTime)/this->currentTrackElem->duration).z));1099 1100 Vector v(0.0, 1.0, 0.0);1101 Quaternion q(-PI/2, v);1102 quat = quat * q;1103 1104 this->bindSlave->setAbsCoor(tmp);1105 this->bindSlave->setAbsDir(quat);1106 }1077 // PRINTF(4)("CurrentTrackID: %d, LocalTime is: %f, timestep is: %f\n", this->currentTrackElem->ID, this->localTime, dt); 1078 // if (this->localTime <= this->firstTrackElem->duration) 1079 // this->jumpTo(this->localTime); 1080 // if (this->localTime <= this->maxTime) 1081 // this->localTime += dt; 1082 // if (this->localTime > this->currentTrackElem->endTime 1083 // && this->currentTrackElem->children) 1084 // { 1085 // if (this->currentTrackElem->jumpTime != 0.0) 1086 // this->jumpTo(this->localTime + this->currentTrackElem->jumpTime); 1087 // // jump to the next TrackElement and also set the history of the new Element to the old one. 1088 // TrackElement* tmpHistoryElem = this->currentTrackElem; 1089 // this->currentTrackElem = this->currentTrackElem->getChild(this->choosePath(this->currentTrackElem)); 1090 // this->currentTrackElem->history = tmpHistoryElem; 1091 // if (this->currentTrackElem->getName()) 1092 // { 1093 // this->trackText->setText(this->currentTrackElem->getName()); 1094 // this->textAnimation->replay(); 1095 // } 1096 // } 1097 // if (this->bindSlave) 1098 // { 1099 // Vector tmp = this->calcPos(); 1100 // Quaternion quat = Quaternion(this->calcDir(), Vector(this->currentTrackElem->curve->calcAcc((localTime-this->currentTrackElem->startingTime)/this->currentTrackElem->duration).x,1,this->currentTrackElem->curve->calcAcc((localTime-this->currentTrackElem->startingTime)/this->currentTrackElem->duration).z)); 1101 // 1102 // Vector v(0.0, 1.0, 0.0); 1103 // Quaternion q(-PI/2, v); 1104 // quat = quat * q; 1105 // 1106 // this->bindSlave->setAbsCoor(tmp); 1107 // this->bindSlave->setAbsDir(quat); 1108 // } 1107 1109 } 1108 1110 … … 1116 1118 void TrackManager::jumpTo(float time) 1117 1119 { 1118 if (time == 0)1119 {1120 this->currentTrackElem = this->firstTrackElem;1121 if (this->currentTrackElem->getName())1122 {1123 this->trackText->setText(this->currentTrackElem->getName());1124 this->textAnimation->play();1125 }1126 }1127 this->localTime = time;1120 // if (time == 0) 1121 // { 1122 // this->currentTrackElem = this->firstTrackElem; 1123 // if (this->currentTrackElem->getName()) 1124 // { 1125 // this->trackText->setText(this->currentTrackElem->getName()); 1126 // this->textAnimation->play(); 1127 // } 1128 // } 1129 // this->localTime = time; 1128 1130 } 1129 1131 -
trunk/src/util/track/track_manager.h
r7221 r10368 41 41 class TrackElement : public BaseObject 42 42 { 43 ObjectListDeclaration(TrackElement); 44 43 45 public: 44 46 TrackElement(); … … 131 133 \li TrackElement: A Part of A whole Track 132 134 */ 133 class TrackManager : public BaseObject135 class TrackManager 134 136 { 135 137 public: -
trunk/src/util/track/track_node.cc
r9869 r10368 17 17 18 18 19 #include "track _node.h"19 #include "track/track_node.h" 20 20 21 #include "track _manager.h"21 #include "track/track_manager.h" 22 22 23 23 24 ObjectListDefinition(TracNode); 24 ObjectListDefinition(TrackNode); 25 25 26 /** 26 27 * standard constructor … … 28 29 TrackNode::TrackNode () 29 30 { 30 this->registerObject(this, TracNode::_objectList); 31 this->setName("TrackNode"); 31 this->registerObject(this, TrackNode::_objectList); 32 32 33 33 PNode::getNullParent()->addChild(this); -
trunk/src/util/track/track_node.h
r9869 r10368 14 14 #include "p_node.h" 15 15 16 16 17 /* FORWARD DECLARATION */ 17 18 class TrackManager; … … 20 21 class TrackNode : public PNode 21 22 { 22 ObjectListDeclarat rion(TracNode);23 ObjectListDeclaration(TrackNode); 23 24 public: 24 25 TrackNode ();
Note: See TracChangeset
for help on using the changeset viewer.