本文整理汇总了C++中Human::getId方法的典型用法代码示例。如果您正苦于以下问题:C++ Human::getId方法的具体用法?C++ Human::getId怎么用?C++ Human::getId使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Human
的用法示例。
在下文中一共展示了Human::getId方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: humanJointStateCallBack
void ToasterHumanReader::humanJointStateCallBack(const toaster_msgs::HumanList::ConstPtr& msg) {
//std::cout << "[area_manager][DEBUG] new data for human received with time " << msg->humanList[0].meAgent.meEntity.time << std::endl;
Human * curHuman;
for (unsigned int i = 0; i < msg->humanList.size(); i++) {
// If this human is not assigned we have to allocate data.
if (lastConfig_.find(msg->humanList[i].meAgent.meEntity.id) == lastConfig_.end()) {
curHuman = new Human(msg->humanList[i].meAgent.meEntity.id);
} else
curHuman = lastConfig_[msg->humanList[i].meAgent.meEntity.id];
std::vector<double> humanOrientation;
bg::model::point<double, 3, bg::cs::cartesian> humanPosition;
Mobility curHumanMobility = FULL;
curHuman->setId(msg->humanList[i].meAgent.meEntity.id);
curHuman->setName(msg->humanList[i].meAgent.meEntity.name);
curHuman->setMobility(curHumanMobility);
curHuman->setTime(msg->humanList[i].meAgent.meEntity.time);
curHuman->busyHands_ = msg->humanList[i].meAgent.busyHands;
humanPosition.set<0>(msg->humanList[i].meAgent.meEntity.positionX);
humanPosition.set<1>(msg->humanList[i].meAgent.meEntity.positionY);
humanPosition.set<2>(msg->humanList[i].meAgent.meEntity.positionZ);
curHuman->setPosition(humanPosition);
humanOrientation.push_back(msg->humanList[i].meAgent.meEntity.orientationRoll);
humanOrientation.push_back(msg->humanList[i].meAgent.meEntity.orientationPitch);
humanOrientation.push_back(msg->humanList[i].meAgent.meEntity.orientationYaw);
curHuman->setOrientation(humanOrientation);
lastConfig_[curHuman->getId()] = curHuman;
//TODO: fullHuman
if (fullHuman_) {
Joint * curJnt;
for (unsigned int i_jnt = 0; i_jnt < msg->humanList[i].meAgent.skeletonNames.size(); i_jnt++) {
// If this joint is not assigned we have to allocate data.
if (lastConfig_[curHuman->getId()]->skeleton_[msg->humanList[i].meAgent.skeletonNames[i_jnt] ] == NULL) {
curJnt = new Joint(msg->humanList[i].meAgent.skeletonJoint[i_jnt].meEntity.id, msg->humanList[i].meAgent.meEntity.id);
} else
curJnt = lastConfig_[curHuman->getId()]->skeleton_[msg->humanList[i].meAgent.skeletonNames[i_jnt] ];
std::vector<double> jointOrientation;
bg::model::point<double, 3, bg::cs::cartesian> jointPosition;
curJnt->setName(msg->humanList[i].meAgent.skeletonNames[i_jnt]);
curJnt->setAgentId(curHuman->getId());
curJnt->setTime(msg->humanList[i].meAgent.skeletonJoint[i_jnt].meEntity.time);
jointPosition.set<0>(msg->humanList[i].meAgent.skeletonJoint[i_jnt].meEntity.positionX);
jointPosition.set<1>(msg->humanList[i].meAgent.skeletonJoint[i_jnt].meEntity.positionY);
jointPosition.set<2>(msg->humanList[i].meAgent.skeletonJoint[i_jnt].meEntity.positionZ);
curJnt->setPosition(jointPosition);
jointOrientation.push_back(msg->humanList[i].meAgent.skeletonJoint[i_jnt].meEntity.orientationRoll);
jointOrientation.push_back(msg->humanList[i].meAgent.skeletonJoint[i_jnt].meEntity.orientationPitch);
jointOrientation.push_back(msg->humanList[i].meAgent.skeletonJoint[i_jnt].meEntity.orientationYaw);
curJnt->setOrientation(jointOrientation);
lastConfig_[curHuman->getId()]->skeleton_[curJnt->getName()] = curJnt;
}
}
}
}
示例2: updatePositions
void WorldModel::updatePositions()
{
for (int i = 0; i < (int) ambulanceTeams.size(); i++)
{
Human *human = ambulanceTeams[i];
if (human->getMotionlessObject() == NULL || human->getMotionlessObject()->getId() != human->getPosition())
{
human->setMotionlessObject((MotionlessObject*) objects[human->getPosition()]);
LOG(Main, 1) << "update position of " << human->getId() << " : " << human->getMotionlessObject()->getId() << endl;
}
}
for (int i = 0; i < (int) humans.size(); i++)
{
Human *human = humans[i];
if (!human->isAmbulanceTeam())
{
bool flag = false;
for (int j = 0; j < (int) ambulanceTeams.size(); j++)
if (ambulanceTeams[j]->getId() == human->getPosition())
{
human->setMotionlessObject((MotionlessObject*) objects[ambulanceTeams[j]->getPosition()]);
LOG(Main, 1) << "update position of (loaded in ambulance) " << human->getId() << " : " << human->getMotionlessObject()->getId() << endl;
flag = true;
break;
}
if (human->getMotionlessObject() == NULL || (human->getMotionlessObject()->getId() != human->getPosition() && !flag))
{
human->setMotionlessObject((MotionlessObject*) objects[human->getPosition()]);
LOG(Main, 1) << "update position of " << human->getId() << " : " << human->getMotionlessObject()->getId() << endl;
}
}
if (human->getLastCycleUpdatedBySense() != world->getTime())
{
human->setX(human->getMotionlessObject()->getX());
human->setY(human->getMotionlessObject()->getY());
}
}
if (self->isPlatoon())
{
for (int i = 0; i < civilians.size(); i++)
{
if (((Platoon*) self)->getMotionlessObject()->motionlessIndex == civilians[i]->getMotionlessObject()->motionlessIndex && getTime() - civilians[i]->getLastCycleUpdated() > 1)
civilians[i]->isAvailable = false;
}
}
//set civilians to buildingBlocks
if (self->isPoliceForce())
{
for (int i = 0; i < buildingBlocks.size(); i++)
buildingBlocks[i]->civilians.clear();
for (int i = 0; i < civilians.size(); i++)
{
if (civilians[i]->getMotionlessObject()->isBuilding())
{
LOG(Main, 4) << "civ: " << civilians[i]->getId() << endl;
LOG(Main, 4) << "((Building*)civilians[i]->getMotionlessObject())->blockNum = " << ((Building*) civilians[i]->getMotionlessObject())->blockNum << endl;
buildingBlocks[((Building*) civilians[i]->getMotionlessObject())->blockNum]->civilians.push_back(civilians[i]);
}
}
}
if (self->isPlatoon())
((Platoon*) self)->getMotionlessObject()->iHaveBeenHere = true;
}
示例3: simpleDecision
bool AmbulanceTeamAgent::simpleDecision()
{
LOG(Main, 1) << "Simple Decision begins" << endl;
// for (int i = 0; i < neededHelpHumans.size(); i++)
// setValue(neededHelpHumans[i]);
sort(neededHelpHumans.begin(), neededHelpHumans.end(), humanComparator);
Human* myTarget;
set<int> busyAgents;
for (int i = 0; i < neededHelpHumans.size(); i++)
{
int neededAmbulances = getNumOfNeededAmbulances(neededHelpHumans[i]);
LOG(Main, 1) << "neededAmbulances for " << neededHelpHumans[i]->getId() << " is " << neededAmbulances << endl;
for (int j = 0; j < neededAmbulances; j++)
{
int minDist = MAX_INT;
AmbulanceTeam* at = NULL;
for (int k = 0; k < world->ambulanceTeams.size(); k++)
{
if (busyAgents.find(world->ambulanceTeams[k]->ambulanceTeamIndex) == busyAgents.end() && worldGraph->isReachable(world->ambulanceTeams[k]->getRepresentiveNodeIndex(), neededHelpHumans[i]->getRepresentiveNodeIndex(), GM_DEFAULT_NOT_BLOCKED))
{
int dist = worldGraph->getDistance(world->ambulanceTeams[k]->getRepresentiveNodeIndex(), neededHelpHumans[i]->getRepresentiveNodeIndex(), GM_DEFAULT_NOT_BLOCKED);
// LOG(Main, 1) << "dist " << world->ambulanceTeams[k]->getId() << " from civ is " << dist << endl;
if (dist < minDist)
{
// LOG(Main, 1) << "in if" << endl;
minDist = dist;
at = world->ambulanceTeams[k];
// LOG(Main, 1) << "at->getId " << at->getId() << endl;
}
}
}
if (at != NULL)
{
if (at->ambulanceTeamIndex == self()->ambulanceTeamIndex)
{
myTarget = neededHelpHumans[i];
break;
}
else
{
LOG(Main, 1) << "ambulance " << at->getId() << " goes to " << neededHelpHumans[i]->getId() << endl;
busyAgents.insert(at->ambulanceTeamIndex);
}
}
}
if (myTarget != NULL)
break;
}
if (myTarget != NULL)
{
LOG(Main, 1) << "my Target: " << myTarget->getId() << " its postion is " << myTarget->getMotionlessObject()->getId() << endl;
if (self()->getMotionlessObject() != myTarget->getMotionlessObject())
{
LOG(Main, 1) << "move to myTarget " << myTarget->getId() << endl;
command->moveToMotionless(myTarget->getMotionlessObject()->motionlessIndex, GM_DEFAULT_NOT_BLOCKED);
return true;
}
else if (myTarget->getBuriedness() > 0)
{
LOG(Main, 1) << "I am rescuing my target " << endl;
command->rescue(*myTarget);
return true;
}
else
{
if (myTarget->isCivilian())
{
int minId = self()->getId();
for (int i = 0; i < world->ambulanceTeams.size(); i++)
if (world->ambulanceTeams[i]->getMotionlessObject() == myTarget->getMotionlessObject() && world->ambulanceTeams[i]->getId() < minId)
minId = world->ambulanceTeams[i]->getId();
if (minId == self()->getId())
{
LOG(Main, 1) << "I am loading my target" << endl;
command->load(*myTarget);
return true;
}
else
{
myTarget->isAvailable = false;
}
}
}
}
return false;
}