Android Open Source - droidengine2d Geometry






From Project

Back to project page droidengine2d.

License

The source code is released under:

Apache License

If you think the Android project droidengine2d listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*   Copyright 2013-2014 Miguel Vicente Linares
 *// w w  w  . ja  v a2s . c  o m
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package com.miviclin.droidengine2d.graphics.mesh;

import java.util.ArrayList;

import com.miviclin.droidengine2d.graphics.Color;
import com.miviclin.droidengine2d.util.math.Vector2;
import com.miviclin.droidengine2d.util.math.Vector3;

/**
 * This class defines the Geometry of a mesh of vertices.
 * 
 * @author Miguel Vicente Linares
 * 
 */
public class Geometry {

  private ArrayList<Vector3> vertices;
  private ArrayList<Short> indices;
  private ArrayList<Color> colors;
  private ArrayList<Vector2> texturesUV;

  /**
   * Creates a new Geometry.
   * 
   * @param numVertices Number of vertices.
   * @param numIndices Number of indices (the indices are used to render the vertices in the specified order).
   * @param usesColors true if the geometry stores colors, false otherwise.
   * @param usesTexturesUV true if the geometry stores texture coordinates, false otherwise.
   */
  public Geometry(int numVertices, int numIndices, boolean usesColors, boolean usesTexturesUV) {
    this.vertices = new ArrayList<Vector3>(numVertices);
    this.indices = new ArrayList<Short>(numIndices);
    this.colors = (usesColors) ? new ArrayList<Color>(numVertices) : null;
    this.texturesUV = (usesTexturesUV) ? new ArrayList<Vector2>(numVertices) : null;
  }

  /**
   * Adds a vertex position to this Geometry.
   * 
   * @param position Vertex position.
   */
  public void addVertex(Vector3 position) {
    vertices.add(position);
  }

  /**
   * Returns the vertex position located at the specified index of the array of vertices.
   * 
   * @param index Index.
   * @return Vertex position
   */
  public Vector3 getVertex(int index) {
    return vertices.get(index);
  }

  /**
   * Returns the number of vertices of this Geometry.
   * 
   * @return Number of vertices
   */
  public int getNumVertices() {
    return vertices.size();
  }

  /**
   * Adds an index to this Geometry.
   * 
   * @param index Index.
   */
  public void addIndex(short index) {
    indices.add(index);
  }

  /**
   * Returns the index located at the specified index of the array of indices.
   * 
   * @param index Index (of the array of indices) where the index we want to get is located.
   * @return Index
   */
  public short getIndex(int index) {
    return indices.get(index);
  }

  /**
   * Returns the number of indices of this Geometry.
   * 
   * @return Number of indices
   */
  public int getNumIndices() {
    return indices.size();
  }

  /**
   * Adds a Color to this Geometry. The color will be associated to the vertex position located at the same index.
   * 
   * @param color Color.
   */
  public void addColor(Color color) {
    colors.add(color);
  }

  /**
   * Returns the Color located at the specified index of the array of colors.
   * 
   * @param index Index.
   * @return Color or null if this Geometry does not contain color information.
   */
  public Color getColor(int index) {
    if (colors == null) {
      return null;
    }
    return colors.get(index);
  }

  /**
   * Returns the number of colors of this Geometry. If this Geometry uses colors, there should be one color per
   * defined vertex.
   * 
   * @return Number of colors, or -1 if this Geometry does not use colors.
   */
  public int getNumColors() {
    if (colors == null) {
      return -1;
    }
    return colors.size();
  }

  /**
   * Adds a pair of texture UV coordinates to this Geometry. The pair of texture UV coordinates will be associated to
   * the vertex position located at the same index.
   * 
   * @param textureUV Texture UV coordinates.
   */
  public void addTextureUV(Vector2 textureUV) {
    texturesUV.add(textureUV);
  }

  /**
   * Returns the texture UV coordinates located at the specified index of the array of texture UV coordinates.
   * 
   * @param index Index.
   * @return Texture UV coordinates or null if this Geometry does not contain texture information.
   */
  public Vector2 getTextureUV(int index) {
    if (texturesUV == null) {
      return null;
    }
    return texturesUV.get(index);
  }

  /**
   * Returns the number of texture UV coordinates of this Geometry. If this Geometry uses texture UV coordinates,
   * there should be one texture UV coordinate pair per defined vertex.
   * 
   * @return Number of texture UV coordinates, or -1 if this Geometry does not use texture UV coordinates.
   */
  public int getNumTexturesUV() {
    if (texturesUV == null) {
      return -1;
    }
    return texturesUV.size();
  }

}




Java Source Code List

com.miviclin.droidengine2d.AbstractGame.java
com.miviclin.droidengine2d.EngineActivity.java
com.miviclin.droidengine2d.EngineLock.java
com.miviclin.droidengine2d.Engine.java
com.miviclin.droidengine2d.GameThread.java
com.miviclin.droidengine2d.Game.java
com.miviclin.droidengine2d.audio.MusicPlayer.java
com.miviclin.droidengine2d.audio.SoundManager.java
com.miviclin.droidengine2d.gamestate.GameStateAdapter.java
com.miviclin.droidengine2d.gamestate.GameStateManager.java
com.miviclin.droidengine2d.gamestate.GameStateNotRegisteredException.java
com.miviclin.droidengine2d.gamestate.GameState.java
com.miviclin.droidengine2d.gamestate.OnGameStateChangeListener.java
com.miviclin.droidengine2d.graphics.Color.java
com.miviclin.droidengine2d.graphics.DefaultRenderer.java
com.miviclin.droidengine2d.graphics.EngineRenderer.java
com.miviclin.droidengine2d.graphics.GLDebugger.java
com.miviclin.droidengine2d.graphics.GLRenderer.java
com.miviclin.droidengine2d.graphics.GLView.java
com.miviclin.droidengine2d.graphics.Graphics.java
com.miviclin.droidengine2d.graphics.animation.AnimationFrame.java
com.miviclin.droidengine2d.graphics.animation.AnimationStateAdapter.java
com.miviclin.droidengine2d.graphics.animation.AnimationStateListener.java
com.miviclin.droidengine2d.graphics.animation.Animation.java
com.miviclin.droidengine2d.graphics.cameras.Camera.java
com.miviclin.droidengine2d.graphics.cameras.OrthographicCamera.java
com.miviclin.droidengine2d.graphics.material.BlendingOptions.java
com.miviclin.droidengine2d.graphics.material.ColorMaterial.java
com.miviclin.droidengine2d.graphics.material.Material.java
com.miviclin.droidengine2d.graphics.material.TextureColorMaterial.java
com.miviclin.droidengine2d.graphics.material.TextureHsvMaterial.java
com.miviclin.droidengine2d.graphics.material.TextureMaterial.java
com.miviclin.droidengine2d.graphics.material.TransparentTextureMaterial.java
com.miviclin.droidengine2d.graphics.material.UnsupportedMaterialException.java
com.miviclin.droidengine2d.graphics.mesh.ColorMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.Geometry.java
com.miviclin.droidengine2d.graphics.mesh.GraphicsBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.RectangleBatchGeometry.java
com.miviclin.droidengine2d.graphics.mesh.RectangleBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.TextureColorMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.TextureHsvMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.TextureMaterialBatchRendererBase.java
com.miviclin.droidengine2d.graphics.mesh.TextureMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.TransparentTextureMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.shader.ShaderProgramException.java
com.miviclin.droidengine2d.graphics.shader.ShaderProgram.java
com.miviclin.droidengine2d.graphics.shader.ShaderVars.java
com.miviclin.droidengine2d.graphics.text.BitmapFont.java
com.miviclin.droidengine2d.graphics.text.FontChar.java
com.miviclin.droidengine2d.graphics.text.Font.java
com.miviclin.droidengine2d.graphics.text.UndefinedCharacterException.java
com.miviclin.droidengine2d.graphics.texture.TextureAtlas.java
com.miviclin.droidengine2d.graphics.texture.TextureManager.java
com.miviclin.droidengine2d.graphics.texture.TexturePackerAtlas.java
com.miviclin.droidengine2d.graphics.texture.TextureRegion.java
com.miviclin.droidengine2d.graphics.texture.Texture.java
com.miviclin.droidengine2d.input.DefaultKeyEventProcessor.java
com.miviclin.droidengine2d.input.GameInputManager.java
com.miviclin.droidengine2d.input.GameStateInputManager.java
com.miviclin.droidengine2d.input.KeyEventInfo.java
com.miviclin.droidengine2d.input.KeyEventProcessor.java
com.miviclin.droidengine2d.input.KeyProcessor.java
com.miviclin.droidengine2d.input.MotionEventProcessor.java
com.miviclin.droidengine2d.input.TouchProcessor.java
com.miviclin.droidengine2d.input.sensor.AccelerometerValuesListener.java
com.miviclin.droidengine2d.input.sensor.Accelerometer.java
com.miviclin.droidengine2d.input.sensor.SensorUtilities.java
com.miviclin.droidengine2d.resources.AssetsLoader.java
com.miviclin.droidengine2d.util.ActivityUtilities.java
com.miviclin.droidengine2d.util.MutexLock.java
com.miviclin.droidengine2d.util.PrimitiveTypeSize.java
com.miviclin.droidengine2d.util.TransformUtilities.java
com.miviclin.droidengine2d.util.Transform.java
com.miviclin.droidengine2d.util.math.Matrix4.java
com.miviclin.droidengine2d.util.math.MatrixFix.java
com.miviclin.droidengine2d.util.math.Vector2.java
com.miviclin.droidengine2d.util.math.Vector3.java
com.miviclin.droidengine2d.util.time.TimeConstants.java
com.miviclin.droidengine2d.util.time.TimeCounter.java