示例#1
0
SkillsNode::SkillsNode(const sf::Texture& desativado, const sf::Texture& ativado, const sf::Texture& desenho, const sf::Texture& desc, int aprimoramento):
    simbolo()
{
    simbolo[0].setTexture(desativado);
    simbolo[1].setTexture(ativado);
    simbolo[2].setTexture(desenho);

    this->Dir = NULL;
    this->Esq = NULL;
    this->status = false;
    this->setOriginCenter();

    SpriteNode *aux = new SpriteNode(desc);

    aux->setPosition(200.f,155.f);
    this->insereFilho(aux);

    this->desc = false;

    this->aprimoramento = aprimoramento;
}
示例#2
0
void Box2dTest::Step(Settings* settings)
{
	float32 timeStep = settings->hz > 0.0f ? 1.0f / settings->hz : float32(0.0f);

	uint32 flags = 0;
	int collidedCount=0;

	m_world->SetWarmStarting(settings->enableWarmStarting > 0);
	m_world->SetContinuousPhysics(settings->enableContinuous > 0);
	m_world->SetSubStepping(settings->enableSubStepping > 0);

	m_world->Step(timeStep, settings->velocityIterations, settings->positionIterations);
 
	m_world->ClearForces();


	irr::core::array<int> toRemove;	
	mCacheData.clear();
	
	
	for (irr::u32 i = 0; i < mGameObjects.size(); i++)
	{	
		GameObject& gameObject = mGameObjects[i];
		
		if(gameObject.mBody!=NULL)
		{	
			{								
				
				float32 bpx=gameObject.mBody->GetPosition().x;
				float32 bpy=gameObject.mBody->GetPosition().y;
				
				if (bpy < -6.0 && gameObject.mBody->GetLinearVelocity().y <0) 
				{					
					gameObject.mUserData->m_setForRemoval=true;
					gameObject.mUserData->m_withCollision=false;
					
				}
				if (bpy > 6.0  && gameObject.mBody->GetLinearVelocity().y> 0) 
				{
					gameObject.mUserData->m_setForRemoval=true;
					gameObject.mUserData->m_withCollision=false;
						
				}


			

				video::SColorf  clrint(1.0,1.0,1.0,1.0);
				video::SColor  clri;
				
				vector3df scale(1.0f,1.0f,1.0f);

				
				if(gameObject.mUserData->m_emitSound >0)
					gameObject.mUserData->m_emitSound--;

				gameObject.mUserData->m_collideCount=0;
				gameObject.mUserData->m_setContactPointer = false;

					
				if(gameObject.mUserData->m_shapeType< FIGUREDEF_COUNT && gameObject.mUserData->m_setForRemoval ) 
				{
					
					if(gameObject.mUserData->m_withCollision)
					{	
						BodyCacheData cacheData;
						cacheData.cachedShapeType = gameObject.mUserData->m_shapeType;
						cacheData.cachedAngle = gameObject.mBody->GetAngle();
						cacheData.cachedAngulcarVelocity = gameObject.mBody->GetAngularVelocity();
						cacheData.cachedCenter = gameObject.mBody->GetWorldCenter();
						cacheData.cachedLinearVelocity= gameObject.mBody->GetLinearVelocity();
						cacheData.cachedWithCollision = gameObject.mUserData->m_withCollision;						
						m_world->DestroyBody(gameObject.mBody);
						gameObject.mBody=NULL;					
						
						toRemove.push_back(gameObject.mNodeId);										
						mCacheData.push_back(cacheData);
						collidedCount++;
					
					}	
					else
					{
						//objects that go outside the limits
						if(gameObject.mUserData->m_withCollision== false)
						{
							m_world->DestroyBody(gameObject.mBody);
							gameObject.mBody=NULL;											
							toRemove.push_back(gameObject.mNodeId);					
						}

					}
				}	
			}
		}									 	
		
		gameObject.mUserData->m_setForRemoval = false;        	
	}

	//delete collided objects
	for (irr::u32 j = 0; j < toRemove.size(); j++)
	{
		int nodeId = toRemove[j];
		
		for (irr::u32 i = 0; i < mGameObjects.size(); i++)
		{	
			if (mGameObjects[i].mNodeId == nodeId)
			{
				if(mGameObjects[i].mUserData)
				{
					delete mGameObjects[i].mUserData;
				}
				mGameObjects.erase(i);
				break;
			}
		}
	}

	
	player.addToScore(mCacheData.size());

	bool clearWebItem = false;

	SpriteNode* collideBodyNode = (SpriteNode*) mSmgr->getSceneNodeFromId(mPaddle->mNodeId);	

	if(mPaddle->mBody)
	{		
		mPaddle->mBody->SetTransform(b2Vec2(mIacoPoint.x, mPaddle->mBody->GetPosition().y),0);
	
		if(collideBodyNode)
				collideBodyNode->setPosition(
					irr::core::vector3df(
						mPaddle->mBody->GetPosition().x,
						mPaddle->mBody->GetPosition().y,
						0.0f)
						);
	}
	
	frameCount++;
	mCollideExternal=0;
    mMouseUp=false;

}