本文整理汇总了C++中Human::getPosition方法的典型用法代码示例。如果您正苦于以下问题:C++ Human::getPosition方法的具体用法?C++ Human::getPosition怎么用?C++ Human::getPosition使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Human
的用法示例。
在下文中一共展示了Human::getPosition方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
void CartWheel3D::runStep(double dt) {
_nTime += dt;
DynamicArray<ContactPoint>* contactPoints = _world->getContactForces();
DynamicArray<Vector3d> humanPositions;
for (HumanItr itr = _humans.begin(); itr != _humans.end(); itr++) {
Human* human = (*itr).second;
SimBiController* c = human->getController();
if (NULL != c) {
c->performPreTasks(dt, contactPoints);
// Save the current position
humanPositions.push_back(human->getPosition());
BehaviourController* b = human->getBehaviour();
if (NULL != b) {
if (b->shouldAbort()) {
}
}
}
}
_world->advanceInTime(dt);
bool isHumansWorking = false;
bool isObjsWorking = false;
contactPoints = _world->getContactForces();
for (HumanItr itr = _humans.begin(); itr != _humans.end(); itr++) {
Human* human = (*itr).second;
SimBiController* c = human->getController();
if (NULL != c) {
c->performPostTasks(dt, contactPoints);
// Save the current position
humanPositions.push_back(human->getPosition());
BehaviourController* b = human->getBehaviour();
if (NULL != b) {
if (b->shouldAbort()) {
}
}
}
if(_behaviorsManager->runStep(human->getName().c_str(), _nTime)) {
// printf("nTime: %f\n", _nTime);
isHumansWorking = true;
}
}
for(int i=0; i<_objects.size(); i++) {
if(_behaviorsManager->runStep(_objects[i].c_str(), _nTime)) {
isObjsWorking = true;
}
}
if(!isHumansWorking && !isObjsWorking) {
_behaviorsManager->setBehaviorsDone(true);
}
}
示例2: update
void Zombie::update(const std::vector<std::string>& levelData,
std::vector<Human*>& humans,
std::vector<Zombie*>& zombies,
float deltaTime) {
Human* closestHuman = getNearestHuman(humans);
if (closestHuman != nullptr) {
_direction = glm::normalize(closestHuman->getPosition() - _position);
_position += _direction * _speed * deltaTime;
}
collideWithLevel(levelData);
}
示例3: update
void Zombie::update(const std::vector<std::string>& levelData,
std::vector<Human*>& humans,
std::vector<Zombie*>& zombies) {
// Find the closest human
Human* closestHuman = getNearestHuman(humans);
// If we found a human, move towards him
if (closestHuman != nullptr) {
// Get the direction vector twoards the player
glm::vec2 direction = glm::normalize(closestHuman->getPosition() - _position);
_position += direction * _speed;
}
// Do collision
collideWithLevel(levelData);
}
示例4: 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;
}