Ejemplo n.º 1
0
void ETHDestructionListener::SayGoodbye(b2Joint* joint)
{
    ETHEntity *jointOwner = static_cast<ETHEntity*>(joint->GetUserData());

    // Set joint pointer to NULL for safety
    jointOwner->AddRef();
    ETHPhysicsEntityControllerPtr ownerController = boost::dynamic_pointer_cast<ETHPhysicsEntityController>(jointOwner->GetController());
    assert(ownerController);
    ownerController->KillJoint(joint);
    jointOwner->Release();
}
Ejemplo n.º 2
0
void ETHScriptWrapper::ResolveEntityJoints(ETHEntity* pEntity)
{
	ETHPhysicsEntityControllerPtr controller = boost::dynamic_pointer_cast<ETHPhysicsEntityController>(pEntity->GetController());
	if (controller)
	{
		ETHBucketManager& bucketManager = m_pScene->GetBucketManager();
		const Vector2& currentBucket = pEntity->GetCurrentBucket(bucketManager);
		ETHEntityArray entitiesAround;
		bucketManager.GetEntitiesAroundBucket(currentBucket, entitiesAround);
		controller->ResolveJoints(entitiesAround, *pEntity->GetProperties(), m_pScene->GetSimulator());
	}
}
Ejemplo n.º 3
0
void ETHPhysicsSimulator::ResolveJoints(ETHEntityArray& entities)
{
	const unsigned int numEntities = entities.size();
	for (unsigned int t = 0; t < numEntities; t++)
	{
		ETHPhysicsEntityControllerPtr controller = boost::dynamic_pointer_cast<ETHPhysicsEntityController>(entities[t]->GetController());
		if (controller)
		{
			controller->ResolveJoints(entities, *entities[t]->GetProperties(), *this);
		}
	}
}