RenderableRectangle.java :  » Graphics-3D-2D-OpenGL » alingrad2d » alingrad » engine » graphics » primitives » Android Open Source

Android Open Source » Graphics 3D 2D OpenGL » alingrad2d 
alingrad2d » alingrad » engine » graphics » primitives » RenderableRectangle.java
package alingrad.engine.graphics.primitives;

import javax.microedition.khronos.opengles.GL10;

import alingrad.engine.collisions.CollisionMaskData;
import alingrad.engine.graphics.RenderablePrimitive;
import alingrad.engine.util.GLColor;

public class RenderableRectangle extends RenderablePrimitive {

  public final float mWidth;
  public final float mHeight;
  private CollisionMaskData mCollisionMaskData;

  public RenderableRectangle(final float width, final float height) {
    super(false);
    mWidth = width;
    mHeight = height;
    final float halfWidth = width / 2;
    final float halfHeight = height / 2;
    mCollisionMaskData = new CollisionMaskData((int)-halfWidth, (int)-halfHeight, (int)width, (int)height);
    mVertices = new float[12]; {
      mVertices[0] = -halfWidth;
      mVertices[1] = halfHeight;
      mVertices[2] = 0f;
      mVertices[3] = -halfWidth;
      mVertices[4] = -halfHeight;
      mVertices[5] = 0f;
      mVertices[6] = halfWidth;
      mVertices[7] = -halfHeight;
      mVertices[8] = 0f;
      mVertices[9] = halfWidth;
      mVertices[10] = halfHeight;
      mVertices[11] = 0f;
    }
    mIndices = new short[6]; {
      mIndices[0] = 0;
      mIndices[1] = 1;
      mIndices[2] = 2;
      mIndices[3] = 0;
      mIndices[4] = 2;
      mIndices[5] = 3;
    }
    createBuffers();
  }

  public RenderableRectangle(final float left, final float bottom, final float width, final float height) {
    super(true);
    mWidth = width;
    mHeight = height;
    mX = left;
    mY = bottom;
    final float halfWidth = width / 2;
    final float halfHeight = height / 2;
    mCollisionMaskData = new CollisionMaskData((int)-halfWidth, (int)-halfHeight, (int)width, (int)height);
    mVertices = new float[12]; {
      mVertices[0] = -halfWidth;
      mVertices[1] = halfHeight;
      mVertices[2] = 0f;
      mVertices[3] = -halfWidth;
      mVertices[4] = -halfHeight;
      mVertices[5] = 0f;
      mVertices[6] = halfWidth;
      mVertices[7] = -halfHeight;
      mVertices[8] = 0f;
      mVertices[9] = halfWidth;
      mVertices[10] = halfHeight;
      mVertices[11] = 0f;
    }
    mIndices = new short[6]; {
      mIndices[0] = 0;
      mIndices[1] = 1;
      mIndices[2] = 2;
      mIndices[3] = 0;
      mIndices[4] = 2;
      mIndices[5] = 3;
    }
    createBuffers();
  }

  @Override
  public void draw(GL10 gl, final float x, final float y, final float rotation, final float scaleX,
      final float scaleY, final GLColor color) {
    gl.glPushMatrix(); {
      gl.glDisable(GL10.GL_TEXTURE_2D);
      gl.glColor4f(color.mRed, color.mGreen, color.mBlue, color.mAlpha);
      if (mIgnoreTransformations) {
        gl.glTranslatef(mX, mY, 0f);
      } else {
        gl.glTranslatef(x, y, 0);
        gl.glRotatef(rotation, 0, 0, 1);
        gl.glScalef(scaleX, scaleY, 1f);
      }
      gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
      gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVertexBuffer);
      gl.glDrawElements(GL10.GL_TRIANGLES, mIndices.length, GL10.GL_UNSIGNED_SHORT, mIndexBuffer);
      gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
      gl.glEnable(GL10.GL_TEXTURE_2D);
    }gl.glPopMatrix();
  }

  @Override
  public CollisionMaskData getData() {
    return mCollisionMaskData;
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.