void SpritePolygonPerformance::update(float dt) { dt = dt*0.3 + prevDt*0.7; prevDt = dt; elapsedTime += dt; int loops = (0.025-dt)*1000; if(dt < 0.025 && loops>0) { continuousHighDtTime = clampf(continuousHighDtTime-dt*2, 0.0, 1.0); waitingTime = clampf(waitingTime-dt, 0.0, 5.0); continuousLowDt++; } else { continuousHighDtTime+=dt; continuousLowDt = 0; } if (continuousLowDt >= 5 && loops > 0) { for(int i = 0; i < loops; i++) { if(_posX >= _rightX) { goRight = false; } else if(_posX <= _leftX) { goRight = true; } auto s = makeSprite(); addChild(s); s->setPosition(_posX, _posY); if(goRight) _posX++; else _posX--; incrementStats(); } updateLabel(); } //if we have 10 continuous low dt, then we will start to create more sprites else if(continuousHighDtTime >= .5 || waitingTime > 3.0){ // its now 1 seconds with high DT time, time to end ended = true; unscheduleUpdate(); perfLabel->setString("Test ended in " + Value(elapsedTime).asString() + " seconds\nNodes: " + Value(spriteCount).asString() + " Triangles: " + Value(triCount).asString() + "\nPixels: " + Value(pixelCount).asString() + " Vertices: " + Value(vertCount).asString()); _subtitleLabel->setString("Test ended"); } else{ waitingTime += dt; } }
Player::Player(const string& n) : sprite( NULL ), gdata( Gamedata::getInstance() ), keyPressed(false), worldWidth( gdata->getXmlInt("worldWidth") ), worldHeight( gdata->getXmlInt("worldHeight") ), initialVelocity( Vector2f(gdata->getXmlInt(n+"SpeedX"), gdata->getXmlInt(n+"SpeedY") ) ), width( gdata->getXmlInt(n+"Width") ), height( gdata->getXmlInt(n+"Height") ), damage( 0.0 ), cStrat( new PerPixelCollisionStrategy() ), item( NULL ), frames(), framesLeft(), name(n) { makeSprite(); }
int main(int argc, char **argv) { int i; glutInitWindowSize(600,300); glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE); for (i=1; i<argc; i++) { if(!strcmp("-noms", argv[i])) { glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); printf("forcing no multisampling\n"); } else if(!strcmp("-nomipmaps", argv[i])) { useMipmaps = 0; } else if(!strcmp("-nearest", argv[i])) { linearFiltering = 0; } } glutCreateWindow("sprite blast"); glewInit(); glutReshapeFunc(reshape); glutDisplayFunc(redraw); glutMouseFunc(mouse); glutMotionFunc(mouseMotion); glutVisibilityFunc(visible); glutKeyboardFunc(key); glutCreateMenu(menu); glutAddMenuEntry("Reset time", 0); glutAddMenuEntry("Constant", 1); glutAddMenuEntry("Linear", 2); glutAddMenuEntry("Quadratic", 3); glutAddMenuEntry("Blend on", 4); glutAddMenuEntry("Blend off", 5); glutAddMenuEntry("Threshold 1", 6); glutAddMenuEntry("Threshold 10", 7); glutAddMenuEntry("Point smooth on", 8); glutAddMenuEntry("Point smooth off", 9); glutAddMenuEntry("Point size 16", 10); glutAddMenuEntry("Point size 32", 11); glutAddMenuEntry("Point size 64", 12); glutAddMenuEntry("Toggle spin", 13); glutAddMenuEntry("200 points ", 14); glutAddMenuEntry("500 points ", 15); glutAddMenuEntry("1000 points ", 16); glutAddMenuEntry("2000 points ", 17); glutAddMenuEntry("Quit", 666); glutAttachMenu(GLUT_RIGHT_BUTTON); makePointList(); makeSprite(); glShadeModel(GL_FLAT); glEnable(GL_DEPTH_TEST); glEnable(GL_POINT_SMOOTH); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glPointSize(32.0); #ifdef GL_ARB_point_parameters glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, theQuad); #endif glutMainLoop(); return 0; /* ANSI C requires main to return int. */ }