本文整理汇总了C++中WorldObject::GetType方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldObject::GetType方法的具体用法?C++ WorldObject::GetType怎么用?C++ WorldObject::GetType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorldObject
的用法示例。
在下文中一共展示了WorldObject::GetType方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: HandleInteractionRequest
void PacketHandlers::HandleInteractionRequest(Session* sess, SmartPacket& packet)
{
uint64_t guid = packet.ReadUInt64();
WorldObject* obj = sObjectAccessor->FindWorldObject(guid);
if (!obj)
return;
// TODO: distance check
if (obj->GetType() == OTYPE_CREATURE)
obj->ToCreature()->Interact(sess->GetPlayer());
}
示例2: HandleDialogueDecision
void PacketHandlers::HandleDialogueDecision(Session* sess, SmartPacket& packet)
{
uint64_t guid = packet.ReadUInt64();
uint32_t decision = packet.ReadUInt32();
WorldObject* obj = sObjectAccessor->FindWorldObject(guid);
// if the object is not found, or is not creature, send dialogue close packet
if (!obj || obj->GetType() != OTYPE_CREATURE)
{
SmartPacket pkt(SP_DIALOGUE_CLOSE);
sess->SendPacket(pkt);
return;
}
obj->ToCreature()->DialogueDecision(sess->GetPlayer(), decision);
}
示例3: _Update
void AreaEffect::_Update()
{
// Notes for the new post refactor way to update
// Everything in vectors. Create a new temp vector composed of the old frames "overlapping" items.
// Go through all items detected by ghost proxy and attempt to remove them from the temporary vector.
// If it successfully removes, add it to the current overlapping vector. If it fails add to the added vector.
// Once one iteration of this is done, all the remaining items in the temp vector are placed in the removed vector.
if ( !AddedActors.empty() )
this->AddedActors.clear();
if ( !RemovedActors.empty() )
this->RemovedActors.clear();
btSoftRigidDynamicsWorld* PhysWorld = Entresol::GetSingletonPtr()->GetPhysicsManager()->_GetPhysicsWorldPointer();
std::list<ActorBase*>::iterator it = OverlappingActors.begin();
// Make a bool vector to keep track of which actors to keep when updating.
std::vector<bool> Tracker;
Tracker.resize(OverlappingActors.size());
std::vector<bool>::iterator bit;
for ( bit = Tracker.begin() ; bit != Tracker.end() ; bit++ )
{
(*bit) = false;
}
btManifoldArray manifoldArray;
btBroadphasePairArray& pairArray = Ghost->getOverlappingPairCache()->getOverlappingPairArray();
int numPairs = pairArray.size();
for (int i=0;i<numPairs;i++)
{
manifoldArray.clear();
const btBroadphasePair& pair = pairArray[i];
btBroadphasePair* collisionPair = PhysWorld->getPairCache()->findPair(pair.m_pProxy0,pair.m_pProxy1);
if (!collisionPair)
continue;
if (collisionPair->m_algorithm)
collisionPair->m_algorithm->getAllContactManifolds(manifoldArray);
for (int j=0;j<manifoldArray.size();j++)
{
btPersistentManifold* manifold = manifoldArray[j];
for (int p=0;p<manifold->getNumContacts();p++)
{
//const btManifoldPoint& pt = manifold->getContactPoint(p);
//if(pt.m_distance1 > 0)
// continue;
btCollisionObject* ColObj = manifold->getBody0() != Ghost ? (btCollisionObject*)(manifold->getBody0()) : (btCollisionObject*)(manifold->getBody1());
WorldObject* WO = static_cast<WorldObject*>(ColObj->getUserPointer());
ActorBase* Actor = NULL;
if( Mezzanine::WSO_TerrainFirst > WO->GetType() )
Actor = static_cast<ActorBase*>( WO );
else
continue;
// Check list for the actor in the pair.
for( it = this->OverlappingActors.begin(), bit = Tracker.begin() ; it != this->OverlappingActors.end() ; it++, bit++ )
{
if ( Actor == (*it) )
{
(*bit) = true;
break;
}
}
if ( it == this->OverlappingActors.end() )
{
this->AddActorToList(Actor);
Tracker.push_back(true);
}
}
}
}
// Verify they are the same size. Then remove items from the list as necessary.
if ( OverlappingActors.size() == Tracker.size() )
{
std::list<ActorBase*>::iterator sit = OverlappingActors.begin();
for ( bit = Tracker.begin() ; bit != Tracker.end() ; )
{
if ( (*bit) == false )
{
bit = Tracker.erase(bit);
ActorBase* Act = (*sit);
RemovedActors.push_back(Act);
sit = OverlappingActors.erase(sit);
}else{
sit++;
bit++;
}
}
}// */
}