本文整理汇总了C++中PhysicsComponent::getParent方法的典型用法代码示例。如果您正苦于以下问题:C++ PhysicsComponent::getParent方法的具体用法?C++ PhysicsComponent::getParent怎么用?C++ PhysicsComponent::getParent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PhysicsComponent
的用法示例。
在下文中一共展示了PhysicsComponent::getParent方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: checkOverlappingObjects
void GhostComponent::checkOverlappingObjects()
{
int max = ghostObject->getNumOverlappingObjects();
std::set<std::string> currentlyCollidingObjects;
for (int i = 0; i < max; i++) {
btCollisionObject* collidee = ghostObject->getOverlappingObject(i);
PhysicsComponent* component = static_cast<PhysicsComponent*> (collidee->getUserPointer());
std::string colliderName = component->getParent()->getName();
currentlyCollidingObjects.insert(colliderName);
std::set<std::string>::iterator colliderIterator = lastKnownColliders.begin();
bool previouslyCollided = false;
for (; colliderIterator != lastKnownColliders.end(); colliderIterator++) {
if (colliderName == *colliderIterator) {
previouslyCollided = true;
}
}
Event* e;
if (!previouslyCollided) {
e = new Event(Event::COLLISION_ENTER);
} else {
e = new Event(Event::COLLISION);
}
e->entity = component->getParent();
this->parent->receiveEvent(e);
//delete e;
}
int setDeltas = lastKnownColliders.size() - currentlyCollidingObjects.size();
if (setDeltas > 0) {
// handling exit collisions
std::vector<std::string>::iterator it;
std::vector<std::string> delta(setDeltas);
it = std::set_difference(lastKnownColliders.begin(),
lastKnownColliders.end(),
currentlyCollidingObjects.begin(),
currentlyCollidingObjects.end(),
delta.begin());
for (; it != delta.end(); it++) {
Entity* exitCollision = ENGINE->getEntity(*it);
Event* exitEvent = new Event(Event::COLLISION_EXIT);
exitEvent->entity = exitCollision;
parent->receiveEvent(exitEvent);
delete exitEvent;
}
//@todo delete events after sending them. Right now they all remain on the heap
}
lastKnownColliders = currentlyCollidingObjects;
}