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(); }
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(); }