SHARE
TWEET

SpriteShootout - Mapped optimized

a guest Jul 24th, 2011 159 Never
  1. protected void animate(
  2.         final Sprite sprite,
  3.         final SpriteRender spriteRender,
  4.         final int ballSize, final int ballIndex, final int batchSize, final int delta
  5. ) {
  6.         final float ballRadius = ballSize * 0.5f;
  7.         final float boundW = SCREEN_WIDTH - ballRadius;
  8.         final float boundH = SCREEN_HEIGHT - ballRadius;
  9.  
  10.         final Sprite[] sprites = sprite.asArray();
  11.         final SpriteRender[] spritesRender = spriteRender.asArray();
  12.         for ( int b = ballIndex, r = 0, len = (ballIndex + batchSize); b < len; b++, r++ ) {
  13.                 float dx = sprites[b].dx;
  14.                 float x = sprites[b].x;
  15.  
  16.                 x += dx * delta;
  17.                 if ( x < ballRadius ) {
  18.                         x = ballRadius;
  19.                         dx = -dx;
  20.                 } else if ( x > boundW ) {
  21.                         x = boundW;
  22.                         dx = -dx;
  23.                 }
  24.  
  25.                 sprites[b].dx = dx;
  26.                 sprites[b].x = x;
  27.                 spritesRender[r].x = x;
  28.  
  29.                 float dy = sprites[b].dy;
  30.                 float y = sprites[b].y;
  31.  
  32.                 y += dy * delta;
  33.                 if ( y < ballRadius ) {
  34.                         y = ballRadius;
  35.                         dy = -dy;
  36.                 } else if ( y > boundH ) {
  37.                         y = boundH;
  38.                         dy = -dy;
  39.                 }
  40.  
  41.                 sprites[b].dy = dy;
  42.                 sprites[b].y = y;
  43.                 spritesRender[r].y = y;
  44.         }
  45.  
  46. }
RAW Paste Data
Top