Android Open Source - droidengine2d Camera






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
 *//from ww  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.cameras;

import com.miviclin.droidengine2d.util.math.Matrix4;
import com.miviclin.droidengine2d.util.math.Vector2;
import com.miviclin.droidengine2d.util.math.Vector3;

/**
 * Base class for cameras.<br>
 * Contains the view and projection matrices.
 * 
 * @author Miguel Vicente Linares
 * 
 */
public abstract class Camera {

  private final Vector2 viewportDimensions = new Vector2(1.0f, 1.0f);
  private final Matrix4 viewMatrix = new Matrix4();
  private final Matrix4 projectionMatrix = new Matrix4();
  private final Vector3 eye = new Vector3(0.0f, 0.0f, 5.0f);
  private final Vector3 center = new Vector3(0.0f, 0.0f, 0.0f);
  private final Vector3 up = new Vector3(0.0f, 1.0f, 0.0f);

  private float near = 1.0f;
  private float far = 10.0f;

  /**
   * Constructor.
   */
  public Camera() {
    super();
  }

  /**
   * Translates de eye vector.<br>
   * Changes will not be visible untill {@link #update()} is called.
   * 
   * @param x Value, in pixels, that will be added to the current X.
   * @param y Value, in pixels, that will be added to the current Y.
   * @param z Value, in pixels, that will be added to the current Z.
   */
  public void translate(float x, float y, float z) {
    eye.add(x, y, z);
  }

  /**
   * Returns the width of the viewport in pixels.
   * 
   * @return the width of the viewport in pixels
   */
  public final float getViewportWidth() {
    return viewportDimensions.getX();
  }

  /**
   * Sets the width of the viewport.<br>
   * Changes will not be visible untill {@link #update()} is called.
   * 
   * @param viewportWidth New width, in pixels.
   */
  public final void setViewportWidth(float viewportWidth) {
    if (viewportWidth <= 0) {
      throw new IllegalArgumentException("The viewport width must be greater than 0");
    }
    this.viewportDimensions.setX(viewportWidth);
  }

  /**
   * Returns the height of the viewport in pixels.
   * 
   * @return the height of the viewport in pixels
   */
  public final float getViewportHeight() {
    return viewportDimensions.getY();
  }

  /**
   * Sets the height of the viewport.<br>
   * Changes will not be visible untill {@link #update()} is called.
   * 
   * @param viewportHeight New height, in pixels.
   */
  public final void setViewportHeight(float viewportHeight) {
    if (viewportHeight <= 0) {
      throw new IllegalArgumentException("The viewport height must be greater than 0");
    }
    this.viewportDimensions.setY(viewportHeight);
  }

  /**
   * Sets the dimensions of the viewport.<br>
   * Changes will not be visible untill {@link #update()} is called.
   * 
   * @param viewportWidth New width, in pixels.
   * @param viewportHeight New height, in pixels.
   */
  public final void setViewportDimensions(float viewportWidth, float viewportHeight) {
    if (viewportWidth <= 0) {
      throw new IllegalArgumentException("The viewport width must be greater than 0");
    }
    if (viewportHeight <= 0) {
      throw new IllegalArgumentException("The viewport height must be greater than 0");
    }
    this.viewportDimensions.setX(viewportWidth);
    this.viewportDimensions.setY(viewportHeight);
  }

  /**
   * Returns the view matrix.
   * 
   * @return View matrix.
   */
  public Matrix4 getViewMatrix() {
    return viewMatrix;
  }

  /**
   * Returns the projection matrix.
   * 
   * @return Projection matrix.
   */
  public Matrix4 getProjectionMatrix() {
    return projectionMatrix;
  }

  /**
   * Returns the eye vector (camera position).
   * 
   * @return Vector3
   */
  public Vector3 getEye() {
    return eye;
  }

  /**
   * Returns the center vector (where the camera is looking at).
   * 
   * @return Vector3
   */
  public Vector3 getCenter() {
    return center;
  }

  /**
   * Returns the up vector (the up vector of the camera).
   * 
   * @return Vector3
   */
  public Vector3 getUp() {
    return up;
  }

  /**
   * Returns the distance from the camera to the front of the viewing volume.
   * 
   * @return near
   */
  public final float getNear() {
    return near;
  }

  /**
   * Sets the distance from the camera to the front of the viewing volume.<br>
   * Changes will not be visible untill {@link #update()} is called.
   * 
   * @param near New near value.
   */
  public final void setNear(float near) {
    this.near = near;
  }

  /**
   * Returns the distance from the camera to the back of the viewing volume.
   * 
   * @return far
   */
  public final float getFar() {
    return far;
  }

  /**
   * Sets the distance from the camera to the back of the viewing volume.<br>
   * Changes will not be visible untill {@link #update()} is called.
   * 
   * @param far New far value.
   */
  public final void setFar(float far) {
    this.far = far;
  }

  /**
   * Updates the view and projection matrices with the current camera configuration.
   */
  public abstract void update();

}




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