Exemplo n.º 1
0
void JellyActor::addSpringForce(JellyActor *pActor, bool pUpDown)
{
	b2Vec2 lUp(0.0f, 1.0f);
	b2Vec2 lDown(0.0f, -1.0f);

	if( !pUpDown )
		qSwap(lUp,lDown);

	float32 lDesiredDist = (pUpDown)?0.0f:4.0f;

	b2Body *lBody2 = pActor->getBody();

	b2Vec2 lPA = mBody->GetWorldPoint(lUp);
	b2Vec2 lPB = lBody2->GetWorldPoint(lDown);

	b2Vec2 lDiff = lPB - lPA;
	b2Vec2 lVA = mBody->GetLinearVelocity() - b2Cross(mBody->GetWorldVector(lUp), mBody->GetAngularVelocity());
	b2Vec2 lVB = lBody2->GetLinearVelocity() - b2Cross(lBody2->GetWorldVector(lDown), lBody2->GetAngularVelocity());
	b2Vec2 lVdiff = lVB-lVA;
	float32 lDx = lDiff.Normalize();
	float32 lVrel = lVdiff.x*lDiff.x + lVdiff.y*lDiff.y;
	float32 lForceMag = -500*(lDx-lDesiredDist)-10.0f*lVrel;
	lDiff *= lForceMag;
	lBody2->ApplyForce(lDiff, mBody->GetWorldPoint(lUp));
	lDiff *= -1.0f;
	mBody->ApplyForce(lDiff,lBody2->GetWorldPoint(lDown));
	mBody->WakeUp();
	lBody2->WakeUp();
}
Exemplo n.º 2
0
void Button::createTexture(void) {
   Kernel *kernel = Kernel::getInstance();

   if ((_cTexture = kernel->getWidgetTexture(BUTTON)) != NULL) return;

   ColorRGBA colorBotao1(250, 250, 250, 255);
   ColorRGBA colorBotao2(210, 210, 210, 255);

   ColorRGBA colorOver(220, 220, 220, 100);
   ColorRGBA colorClick(colorOver[0] - 100, colorOver[1] - 100, colorOver[2] - 100, colorOver[3]);

   // create texture object
   _cTexture = new ComponentTexture(8, 16);
   kernel->setWidgetTexture(BUTTON, _cTexture);

   _cTexture->setTextureEnvMode(GL_MODULATE);

   // left up
   MatrixTemplate<ColorRGBA> lUp(3, 3, ColorRGBA(0,0,0,0));
   Texture2D::drawPoint(lUp, Point(0,1), ColorRGBA(144,144,144,230));
   Texture2D::drawPoint(lUp, Point(1,1), ColorRGBA(144,144,144,230));
   Texture2D::drawPoint(lUp, Point(1,0), ColorRGBA(144,144,144,230));

   Texture2D::drawPoint(lUp, Point(1,2), ColorRGBA(202,202,202,200));
   Texture2D::drawPoint(lUp, Point(2,2), ColorRGBA(240,240,240,240));
   Texture2D::drawPoint(lUp, Point(2,1), ColorRGBA(202,202,202,200));

   _cTexture->addTexture(Point(0,0), lUp);

   // right up
   MatrixTemplate<ColorRGBA> rUp(3, 3, ColorRGBA(0,0,0,0));
   Texture2D::drawPoint(rUp, Point(1, 1), ColorRGBA(144,144,144,230));
   Texture2D::drawPoint(rUp, Point(1, 0), ColorRGBA(144,144,144,230));
   Texture2D::drawPoint(rUp, Point(2, 1), ColorRGBA(144,144,144,230));

   Texture2D::drawPoint(rUp, Point(1, 2), ColorRGBA(202,202,202,200));
   Texture2D::drawPoint(rUp, Point(0, 2), ColorRGBA(240,240,240,240));
   Texture2D::drawPoint(rUp, Point(0, 1), ColorRGBA(202,202,202,200));

   _cTexture->addTexture(Point(0,3), rUp);

   // left down
   MatrixTemplate<ColorRGBA> lDown(3, 3, ColorRGBA(0,0,0,0));
   Texture2D::drawPoint(lDown, Point(0,1), ColorRGBA(144,144,144,230));
   Texture2D::drawPoint(lDown, Point(1,1), ColorRGBA(144,144,144,230));
   Texture2D::drawPoint(lDown, Point(1,2), ColorRGBA(144,144,144,230));

   Texture2D::drawPoint(lDown, Point(1,0), ColorRGBA(202,202,202,200));
   Texture2D::drawPoint(lDown, Point(2,0), ColorRGBA(240,240,240,240));
   Texture2D::drawPoint(lDown, Point(2,1), ColorRGBA(202,202,202,200));

   _cTexture->addTexture(Point(0,6), lDown);

   // right down
   MatrixTemplate<ColorRGBA> rDown(3, 3, ColorRGBA(0,0,0,0));
   Texture2D::drawPoint(rDown, Point(1,2), ColorRGBA(144,144,144,230));
   Texture2D::drawPoint(rDown, Point(2,1), ColorRGBA(144,144,144,230));
   Texture2D::drawPoint(rDown, Point(1,1), ColorRGBA(144,144,144,230));

   Texture2D::drawPoint(rDown, Point(1,0), ColorRGBA(202,202,202,200));
   Texture2D::drawPoint(rDown, Point(0,0), ColorRGBA(240,240,240,240));
   Texture2D::drawPoint(rDown, Point(0,1), ColorRGBA(202,202,202,200));

   _cTexture->addTexture(Point(0,9), rDown);

   // normal middle
   MatrixTemplate<ColorRGBA> nMiddle(1, 16, ColorRGBA(0,0,0,0));
   for (int i = 0, j = 15; i < 8; i++, j--) {
      Texture2D::drawPoint(nMiddle, Point(0,i), colorBotao1 - i * 2);
      Texture2D::drawPoint(nMiddle, Point(0,j), colorBotao2 - i * 2);
   }
   _cTexture->addTexture(Point(3,0), nMiddle);

   // over middle
   MatrixTemplate<ColorRGBA> oMiddle(1, 1, ColorRGBA(0,0,0,0));
   Texture2D::drawPoint(oMiddle, Point(0,0), colorOver);

   _cTexture->addTexture(Point(4,0), oMiddle);

   // click middle
   MatrixTemplate<ColorRGBA> cMiddle(1, 1, ColorRGBA(0,0,0,0));
   Texture2D::drawPoint(cMiddle, Point(0,0), colorClick);

   _cTexture->addTexture(Point(5,0), cMiddle);

   // up line
   MatrixTemplate<ColorRGBA> uLine(1, 2, ColorRGBA(0,0,0,0));
   Texture2D::drawPoint(uLine, Point(0,0), ColorRGBA(112,112,112,255));
   Texture2D::drawPoint(uLine, Point(0,1), ColorRGBA(255,255,255,255));

   _cTexture->addTexture(Point(6,0), uLine);

   // down line
   MatrixTemplate<ColorRGBA> dLine(1, 2, ColorRGBA(0,0,0,0));
   Texture2D::drawPoint(dLine, Point(0,0), ColorRGBA(255,255,255,255));
   Texture2D::drawPoint(dLine, Point(0,1), ColorRGBA(112,112,112,255));

   _cTexture->addTexture(Point(7,0), dLine);

   // left line
   MatrixTemplate<ColorRGBA> lLine(2, 1, ColorRGBA(0,0,0,0));
   Texture2D::drawPoint(lLine, Point(0,0), ColorRGBA(112,112,112,255));
   Texture2D::drawPoint(lLine, Point(1,0), ColorRGBA(255,255,255,255));

   _cTexture->addTexture(Point(6,2), lLine);

   // right line
   MatrixTemplate<ColorRGBA> rLine(2, 1, ColorRGBA(0,0,0,0));
   Texture2D::drawPoint(rLine, Point(1,0), ColorRGBA(112,112,112,255));
   Texture2D::drawPoint(rLine, Point(0,0), ColorRGBA(255,255,255,255));

   _cTexture->addTexture(Point(6,3), rLine);

   // generate texture
   _cTexture->createTexture();
}