void drawEntities(void) { int i; Entity *e, **candidates; candidates = getAllEntsWithin(battle.camera.x, battle.camera.y, SCREEN_WIDTH, SCREEN_HEIGHT, NULL); /* counting entities to draw */ for (i = 0, e = candidates[i] ; e != NULL ; e = candidates[++i]) {}; qsort(candidates, i, sizeof(Entity*), drawComparator); for (i = 0, e = candidates[i] ; e != NULL ; e = candidates[++i]) { self = e; if (e->draw) { e->draw(); } else { drawEntity(e); } drawHealthBar(e); drawTargetRects(e); drawRope(e); } }
//draw! void twoNailBalls::draw() { glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); glEnable(GL_DEPTH_TEST); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); //BIND NAIL SHADER glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_CUBE_MAP, textures_->value("cube_map_1")); shader_programs_->value(NAIL_SHADER)->bind(); shader_programs_->value(NAIL_SHADER)->setUniformValue("CubeMap",GL_TEXTURE0); shader_programs_->value(NAIL_SHADER)->setUniformValue("eyept",m_engine->camera_.eye.x, m_engine->camera_.eye.y, m_engine->camera_.eye.z); //******* DO STUFF glPushMatrix(); glTranslatef(p1.x,p1.y,p1.z); drawNailBall(); glPopMatrix(); glPushMatrix(); glTranslatef(p2.x,p2.y,p2.z); drawNailBall(); glPopMatrix(); //**************** //RELEASE NAIL SHADER shader_programs_->value(NAIL_SHADER)->release(); //***** BIND ROPE SHADER shader_programs_->value(ROPE_SHADER)->bind(); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D,textures_->value(ROPE_OCC)); shader_programs_->value(ROPE_SHADER)->setUniformValue("colormap",0); glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D,textures_->value(ROPE_NORM)); shader_programs_->value(ROPE_SHADER)->setUniformValue("normalmap",1); shader_programs_->value(ROPE_SHADER)->setUniformValue("sag",(GLfloat)(0.5 + 0.01*(m_framesElapsed%100))); shader_programs_->value(ROPE_SHADER)->setUniformValue("eyept",m_engine->camera_.eye.x, m_engine->camera_.eye.y, m_engine->camera_.eye.z); drawRope(*myrope,true); shader_programs_->value(ROPE_SHADER)->release(); }
bool ElasticRope::init(){ initStyle(1); //left point draw; leftOutCircle = FixationPoint::create(); leftOutCircle->setColor(_circleColorR,_circleColorG,_circleColorB,_circleColorA); leftOutCircle->setRadius(_circleOutRadius); leftOutCircle->setPosition(_leftPoint.x,_leftPoint.y); leftBetweenCircle = FixationPoint::create(); leftBetweenCircle->setColor(_circleBetweenColorR,_circleBetweenColorG,_circleBetweenColorB,_circleBetweenColorA); leftBetweenCircle->setRadius(_circleBetweenRadius); leftBetweenCircle->setPosition(_leftPoint.x,_leftPoint.y); leftInCircle = FixationPoint::create(); leftInCircle->setColor(_circleColorR,_circleColorG,_circleColorB,_circleColorA); leftInCircle->setRadius(_circleInRadius); leftInCircle->setPosition(_leftPoint.x,_leftPoint.y); //right point draw; rightOutCircle = FixationPoint::create(); rightOutCircle->setColor(_circleColorR,_circleColorG,_circleColorB,_circleColorA); rightOutCircle->setRadius(_circleOutRadius); rightOutCircle->setPosition(_rightPoint.x,_rightPoint.y); rightBetweenCircle = FixationPoint::create(); rightBetweenCircle->setColor(_circleBetweenColorR,_circleBetweenColorG,_circleBetweenColorB,_circleBetweenColorA); rightBetweenCircle->setRadius(_circleBetweenRadius); rightBetweenCircle->setPosition(_rightPoint.x,_rightPoint.y); rightInCircle = FixationPoint::create(); rightInCircle->setColor(_circleColorR,_circleColorG,_circleColorB,_circleColorA); rightInCircle->setRadius(_circleInRadius); rightInCircle->setPosition(_rightPoint.x,_rightPoint.y); // auto leftRopePoint = Sprite::create("ropepoint1.png"); // leftRopePoint->setPosition(_leftPoint.x,_leftPoint.y); // leftRopePoint->setScale(0.1f); // addChild(leftRopePoint); // auto rightRopePoint = Sprite::create("ropepoint1.png"); // rightRopePoint->setPosition(_rightPoint.x,_rightPoint.y); // rightRopePoint->setScale(0.1f); // addChild(rightRopePoint); drawRope(); //show draw //draw curve rope; _curveRope = CurveRope::create(); _curveRope->setPeak(Vec2(Director::getInstance()->getVisibleSize().width/2,400)); _curveRope->setFixationPoint(_leftPoint, _rightPoint); _curveRope->setCurvature(70); addChild(rightOutCircle); addChild(leftOutCircle); addChild(_curveRope); addChild(leftBetweenCircle); addChild(leftInCircle); addChild(rightBetweenCircle); addChild(rightInCircle); addChild(_graphics); scheduleUpdate(); return true; }
//draw! void PolarAnimated::draw(){ glMatrixMode(GL_MODELVIEW); m_framecount++; double framecount = m_framecount * .3; glPushMatrix(); glRotated(framecount / 3,0,-1,0); double scale = (60 - framecount) / 20; scale = MAX(scale, .2); glScaled(scale, scale, scale); glPushMatrix(); glTranslatef(0,-1.0,0); glScalef(100,1,50); //shader stuff glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D,textures_->value(CRACK_COLOR)); shader_programs_->value(CRACK_SHADER)->setUniformValue("colormap",0); glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D,textures_->value(CRACK_NORM)); shader_programs_->value(CRACK_SHADER)->setUniformValue("normalmap",1); shader_programs_->value(CRACK_SHADER)->bind(); shader_programs_->value(CRACK_SHADER)->setUniformValue("eyept",m_engine->camera_.eye.x, m_engine->camera_.eye.y, m_engine->camera_.eye.z); //glEnable(GL_TEXTURE_2D); //glBindTexture(GL_TEXTURE_2D,textures_->value(CRACK_COLOR)); //end shader stuff ground->draw(); shader_programs_->value(CRACK_SHADER)->release(); glPopMatrix(); glPushMatrix(); glScaled(.1,.1,.1); glRotated(90,1,0,0); // glPushMatrix(); // glTranslated(0,0,2); // gluDisk(m_quadric,0,100,4,4); // gluDisk(m_quadric,0,400,30,30); // glPopMatrix(); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_CUBE_MAP, textures_->value("cube_map_1")); shader_programs_->value(NAIL_SHADER)->bind(); shader_programs_->value(NAIL_SHADER)->setUniformValue("CubeMap",GL_TEXTURE0); shader_programs_->value(NAIL_SHADER)->setUniformValue("eyept",m_engine->camera_.eye.x, m_engine->camera_.eye.y, m_engine->camera_.eye.z); for(int i = 0; i < m_shapes->length(); i++){ Shapes s = m_shapes->at(i); glPushMatrix(); glTranslated(s.t.x,s.t.y,0); glRotated(s.r.angle, s.r.x,s.r.y,s.r.z); //glTranslated(s.t.x,s.t.y,5 * sin(m_framecount / 20 + s.polt)); //glTranslated(s.t.x,s.t.y,(40 - s.polr) * sin(m_framecount / 20 - s.polr / 15) / (m_framecount / 20 - s.polr / 15)); //gluCylinder(m_quadric,.25,0,10,10,10); double temp = framecount / 15 - s.polr / 10 - 3; temp = MAX(temp, .1); glTranslated(0,0,10 * sin(temp) / (temp * temp * temp * temp)); glRotated(-90,1,0,0); glScaled(5,5,5); if (s.shape){ glCallList(models_->value(BRAD_MODEL).idx); } else { glScaled(1,2,1); glCallList(models_->value(NAIL_MODEL).idx); } glPopMatrix(); } for (int i = 0; i < m_shapes_ring->length(); i++){ Shapes s = m_shapes_ring->at(i); glPushMatrix(); glTranslated(s.t.x,s.t.y,0); glRotated(-90,1,0,0); glScaled(5,5,5); glScaled(1,2,1); glCallList(models_->value(NAIL_MODEL).idx); glPopMatrix(); } shader_programs_->value(NAIL_SHADER)->release(); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D,textures_->value(ROPE_OCC)); shader_programs_->value(ROPE_SHADER)->setUniformValue("colormap",0); glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D,textures_->value(ROPE_NORM)); shader_programs_->value(ROPE_SHADER)->setUniformValue("normalmap",1); //shader_programs_->value(ROPE_SHADER)->setUniformValue("sag",(GLfloat)(0.5 + 0.01*(m_framesElapsed%100))); shader_programs_->value(ROPE_SHADER)->setUniformValue("eyept",m_engine->camera_.eye.x, m_engine->camera_.eye.y, m_engine->camera_.eye.z); shader_programs_->value(ROPE_SHADER)->bind(); float wtf=25; for (int i = 0; i < m_ropes->length(); i++){ glPushMatrix(); glScaled(wtf,wtf,wtf); rope r = m_ropes->at(i); //glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); drawRope(r,true); glPopMatrix(); } shader_programs_->value(ROPE_SHADER)->release(); glPopMatrix(); glPopMatrix(); }