void World::draw(sf::RenderTarget& target) { target.clear(sf::Color::Black); b.drawOn(target); drawObstacles(target); drawPlayer(target); }
void NavMesh::dtDraw() { drawObstacles(); _debugDraw.depthMask(false); duDebugDrawNavMeshWithClosedList(&_debugDraw, *_navMesh, *_navMeshQuery, DU_DRAWNAVMESH_OFFMESHCONS | DU_DRAWNAVMESH_CLOSEDLIST/* | DU_DRAWNAVMESH_COLOR_TILES*/); drawAgents(); drawOffMeshConnections(); _debugDraw.depthMask(true); }
void RenderArea::paintEvent(QPaintEvent *) { QPainter painter(this); drawField(painter); drawStartPos(painter); drawEndPos(painter); drawObstacles(painter); drawNodes(painter); emit painting(); }
void display(void){ adjustCamera(); glClear(GL_COLOR_BUFFER_BIT); giveTexture(); glPushMatrix(); glTranslatef(demonX,demonY,0); giveTextureDemon(); glPopMatrix(); glPushMatrix(); { //translating to the left-bottom corner of our boundary if(jumped){ moveCannon(); } glTranslatef(cannonBaseX ,cannonBaseY,0); glColor3f(BLACK); drawObstacles(); //tranlating to the cannon's bottom glRotatef(rot_angle , 0 , 0 , 1); drawCannon(); drawPiston(); //draw Cannon Ball curBall->drawUnreleased(); } glPopMatrix(); displayScoreboard(); updateDemon(); //drawDemon(); manageTurtles(); //for every released ball... for(int i=0;i<balls.size();i++){ balls[i]->drawReleased(); //cout << balls[i]->ballX << " " << balls[i]->ballY << " " << balls[i]->ballVelX << " " << balls[i]->ballVelY << endl; if(balls[i]->stoped()){ removeBall(i); } } ballTurtle(); ballDemon(); turtleCannon(); glFlush(); glutSwapBuffers(); }
void Sample_TempObstacles::handleRender() { if (!m_geom || !m_geom->getMesh()) return; DebugDrawGL dd; const float texScale = 1.0f / (m_cellSize * 10.0f); // Draw mesh if (m_drawMode != DRAWMODE_NAVMESH_TRANS) { // Draw mesh duDebugDrawTriMeshSlope(&dd, m_geom->getMesh()->getVerts(), m_geom->getMesh()->getVertCount(), m_geom->getMesh()->getTris(), m_geom->getMesh()->getNormals(), m_geom->getMesh()->getTriCount(), m_agentMaxSlope, texScale); m_geom->drawOffMeshConnections(&dd); } if (m_tileCache && m_drawMode == DRAWMODE_CACHE_BOUNDS) drawTiles(&dd, m_tileCache); if (m_tileCache) drawObstacles(&dd, m_tileCache); glDepthMask(GL_FALSE); // Draw bounds const float* bmin = m_geom->getNavMeshBoundsMin(); const float* bmax = m_geom->getNavMeshBoundsMax(); duDebugDrawBoxWire(&dd, bmin[0],bmin[1],bmin[2], bmax[0],bmax[1],bmax[2], duRGBA(255,255,255,128), 1.0f); // Tiling grid. int gw = 0, gh = 0; rcCalcGridSize(bmin, bmax, m_cellSize, &gw, &gh); const int tw = (gw + (int)m_tileSize-1) / (int)m_tileSize; const int th = (gh + (int)m_tileSize-1) / (int)m_tileSize; const float s = m_tileSize*m_cellSize; duDebugDrawGridXZ(&dd, bmin[0],bmin[1],bmin[2], tw,th, s, duRGBA(0,0,0,64), 1.0f); if (m_navMesh && m_navQuery && (m_drawMode == DRAWMODE_NAVMESH || m_drawMode == DRAWMODE_NAVMESH_TRANS || m_drawMode == DRAWMODE_NAVMESH_BVTREE || m_drawMode == DRAWMODE_NAVMESH_NODES || m_drawMode == DRAWMODE_NAVMESH_PORTALS || m_drawMode == DRAWMODE_NAVMESH_INVIS)) { if (m_drawMode != DRAWMODE_NAVMESH_INVIS) duDebugDrawNavMeshWithClosedList(&dd, *m_navMesh, *m_navQuery, m_navMeshDrawFlags/*|DU_DRAWNAVMESH_COLOR_TILES*/); if (m_drawMode == DRAWMODE_NAVMESH_BVTREE) duDebugDrawNavMeshBVTree(&dd, *m_navMesh); if (m_drawMode == DRAWMODE_NAVMESH_PORTALS) duDebugDrawNavMeshPortals(&dd, *m_navMesh); if (m_drawMode == DRAWMODE_NAVMESH_NODES) duDebugDrawNavMeshNodes(&dd, *m_navQuery); duDebugDrawNavMeshPolysWithFlags(&dd, *m_navMesh, SAMPLE_POLYFLAGS_DISABLED, duRGBA(0,0,0,128)); } glDepthMask(GL_TRUE); m_geom->drawConvexVolumes(&dd); if (m_tool) m_tool->handleRender(); renderToolStates(); glDepthMask(GL_TRUE); }
void game_loop(void) { for (int x = 0; x < 16; x++) { //for each y value between 2 and 13 for (int y = 0; y < 16; y++) { randX = 6 + (rand() % (int)(12 - 6 + 1)); randY = 0 + (rand() % (int)(3 - 0 + 1)); //drawDungeonTile(randX, randY, x, y); floorArray [x] [y] [0] = randX; floorArray [x] [y] [1] = randY; } } player p1; //(speed, friction, sprint accel, max speed) //default: p1.setMovement(1.4, .4, 1.8, 4); p1.setMovement(1.4, .4, 1.8, 4); p1.setPosition(tileSize * 7, tileSize * 12); p1.setX(240); p1.setY(240); printf("%f, %f \n", p1.getX(), p1.getY()); al_start_timer(timer); while (!done) { ALLEGRO_EVENT event; al_wait_for_event(event_queue, &event); if (event.type == ALLEGRO_EVENT_TIMER) { if(key[keyW] && p1.getY() >= p1.getMaxSpeed() + 1) { p1.setDy( p1.getDy() - p1.getSpeed()); } if(key[keyS] && p1.getY() <= screenH - squareSize - (p1.getMaxSpeed() + 1)) { p1.setDy( p1.getDy() + p1.getSpeed()); } if(key[keyA] && p1.getX() >= (p1.getMaxSpeed() + 1)) { p1.setDx( p1.getDx() - p1.getSpeed()); } if(key[keyD] && p1.getX() <= screenW - squareSize - (p1.getMaxSpeed() + 1)) { p1.setDx( p1.getDx() + p1.getSpeed()); } if(key[keyShift] && (key[keyW] || key[keyA] ||key[keyS] ||key[keyD])) { p1.setDx(p1.getDx() * p1.getSprintAccel()); p1.setDy(p1.getDy() * p1.getSprintAccel()); } if (abs(p1.getDx()) > p1.getMaxSpeed()) { if(p1.getDx() < 0) { p1.setDx( -p1.getMaxSpeed()); } if(p1.getDx() > 0) { p1.setDx( p1.getMaxSpeed()); } } //max velocity Y if (abs(p1.getDy()) > p1.getMaxSpeed()) { if(p1.getDy() < 0) { p1.setDy(-p1.getMaxSpeed()); } if(p1.getDy() > 0) { p1.setDy( p1.getMaxSpeed() ); } } redraw = true; //update_logic(); //update player position p1.setX(p1.getX() + p1.getDx()); //X axis //detect and respond to collision with obstacles p1.setX(playerWallCollisionX(p1.getX(),p1.getDx(),p1.getY(),room111)); p1.setDx(p1.getDx() * p1.getFriction()); //Y axis p1.setY(p1.getY() + p1.getDy()); p1.setY(playerWallCollisionY(p1.getY(),p1.getDy(),p1.getX(),room111)); p1.setDy(p1.getDy() * p1.getFriction()); if (textCounter) { textCounter = textCounter + 1; if (textCounter == 60) { textCounter = 0; } } redraw = true; } //key pressed down else if (event.type == ALLEGRO_EVENT_KEY_DOWN) { switch (event.keyboard.keycode) { case ALLEGRO_KEY_ESCAPE: done = true; case ALLEGRO_KEY_W: key[keyW] = true; break; case ALLEGRO_KEY_A: key[keyA] = true; break; case ALLEGRO_KEY_S: key[keyS] = true; break; case ALLEGRO_KEY_D: key[keyD] = true; break; case ALLEGRO_KEY_LSHIFT: key[keyShift] = true; break; } } //key released else if (event.type == ALLEGRO_EVENT_KEY_UP) { switch (event.keyboard.keycode) { case ALLEGRO_KEY_W: key[keyW] = false; break; case ALLEGRO_KEY_A: key[keyA] = false; break; case ALLEGRO_KEY_S: key[keyS] = false; break; case ALLEGRO_KEY_D: key[keyD] = false; break; case ALLEGRO_KEY_LSHIFT: key[keyShift] = false; break; } } else if(event.type == ALLEGRO_EVENT_MOUSE_AXES || ALLEGRO_EVENT_MOUSE_ENTER_DISPLAY) { crosshair_x = event.mouse.x - crosshairSize/2; crosshair_y = event.mouse.y - crosshairSize/2; } if (redraw && al_is_event_queue_empty(event_queue)) { redraw = false; //Clear screen to green al_clear_to_color(al_map_rgb(0, 0, 0)); //update_graphics(); //graphics that will always be there drawDungeon(floorArray,room111); al_draw_bitmap(playerBitmap, p1.getX(), p1.getY(), 0); /* for (int i = 0; i < (sizeof(obstacles)/sizeof(*obstacles)); i++) { al_draw_bitmap(block, obstacles[i][0],obstacles[i][1],0); } */ drawObstacles(obstacles,sizeof(obstacles)/sizeof(*obstacles)); al_draw_bitmap(crosshair, crosshair_x, crosshair_y, 0); al_flip_display(); } } }