Android Open Source - DolphinOES Texture Drawer






From Project

Back to project page DolphinOES.

License

The source code is released under:

Apache License

If you think the Android project DolphinOES 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 2015 See AUTHORS file.//from w  w  w  . ja v  a 2  s.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.sidereal.dolphinoes.behaviors.renderer.texture;

import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2;
import com.sidereal.dolphinoes.architecture.DolphinOES;
import com.sidereal.dolphinoes.behaviors.renderer.Drawer;
import com.sidereal.dolphinoes.behaviors.renderer.DrawerBuilder;
import com.sidereal.dolphinoes.behaviors.renderer.Renderer;

/** Draws a texture at the specified location. Uses {@link TextureBuilder} for
 * building. For more complex single-image operations, use {@link SpriteDrawer}.
 * 
 * 
 * @author Claudiu Bele. */
public class TextureDrawer extends Drawer
{
  // region fields

  /** Filepath to the current texture found in {@link #texture}. */
  private String filePath;

  /** {@link Texture} to draw. Set in */
  private Texture texture;

  /** Rectangle designating the area in which the texture is drawn. Set in
   * {@link #updateBoundingRectangle()} which is called in
   * {@link #setOffsetPosition(Vector2)} or {@link #setSize(Vector2)}. */
  private Rectangle boundingRectangle;

  /** The offset position. Set to (0,0) by default in
   * {@link TextureBuilder#TextureBuilder(String)}. Signifies the bottom-left
   * corner of the image. */
  private Vector2 offsetPosition;

  /** Size of the texture. Set to the texture's width by default in
   * {@link TextureDrawer#TextureDrawer(Renderer, String, String)}. */
  private Vector2 size;

  // endregion fields

  // region constructors

  /** Creates a new instance of {@link TextureDrawer}, with the only Mandatory
   * parameter being the texture file path.
   * 
   * @param renderer
   *            passed from {@link Renderer#addDrawer(String, DrawerBuilder)}.
   * @param name
   *            passed from {@link Renderer#addDrawer(String, DrawerBuilder)}
   * @param filePath
   *            Path to the texture. */
  public TextureDrawer(Renderer renderer, String name, String filePath)
  {

    super(renderer, name, false);

    boundingRectangle = new Rectangle();
    setTexture(filePath);

  }

  // endregion constructors

  // region methods

  private void updateBoundingRectangle()
  {

    if (offsetPosition == null)
      return;
    if (size == null)
      return;

    boundingRectangle.set(renderer.object.pos.getX()
        + offsetPosition.x, renderer.object.pos.getY()
        + offsetPosition.y, size.x, size.y);
  }

  public void setOffsetPosition(Vector2 offsetPosition)
  {

    if (offsetPosition == null)
      throw new NullPointerException(
          "Passed null Vector2 parameter to TextureDrawer.setOffsetPosition(Vector2)");
    this.offsetPosition = offsetPosition;
  }

  public void setSize(Vector2 size)
  {

    if (size == null)
      this.size = new Vector2(texture.getWidth(), texture.getHeight());
    else
      this.size = size;
  }

  public void setTexture(String filepath)
  {

    if (filepath == null)
      throw new NullPointerException(
          "Passed null String parameter to TextureDrawer.setTexture(String)");
    
    if(filepath.equals(this.filePath)) return;
    
    // asset is not loaded
    if (!DolphinOES.assets.contains(filepath))
    {
      DolphinOES.assets.load(filepath, Texture.class);
      DolphinOES.assets.finishLoading();
      texture = DolphinOES.assets.get(filepath, Texture.class);
    }
    // asset is loaded
    else
    {
      Texture targetTexture = DolphinOES.assets.get(
          filepath, Texture.class);
      if (!targetTexture.equals(texture))
      {
        texture = targetTexture;
      }
    }
    
    this.filePath = filepath;
  }

  @Override
  protected void dispose()
  {

  }

  @Override
  protected void draw(float delta)
  {

    float targetX = renderer.object.pos.getX() + offsetPosition.x;
    float targetY = renderer.object.pos.getY() + offsetPosition.y;
    renderer.object.gameBatch.spriteBatch.draw(texture, targetX, targetY,
        size.x, size.y);
    
  }

  @Override
  protected boolean isOutOfBounds()
  {

    updateBoundingRectangle();

    return renderer.object.gameBatch.renderingArea
        .overlaps(boundingRectangle) == false;
  }

  // endregion
}




Java Source Code List

com.sidereal.dolphinoes.architecture.AbstractEvent.java
com.sidereal.dolphinoes.architecture.DebugHandler.java
com.sidereal.dolphinoes.architecture.DolphinOES.java
com.sidereal.dolphinoes.architecture.GameBatch.java
com.sidereal.dolphinoes.architecture.GameBehavior.java
com.sidereal.dolphinoes.architecture.GameObject.java
com.sidereal.dolphinoes.architecture.GameScene.java
com.sidereal.dolphinoes.architecture.Module.java
com.sidereal.dolphinoes.architecture.core.Assets.java
com.sidereal.dolphinoes.architecture.core.Configurable.java
com.sidereal.dolphinoes.architecture.core.Debug.java
com.sidereal.dolphinoes.architecture.core.DolphinOESConfiguration.java
com.sidereal.dolphinoes.architecture.core.GameData.java
com.sidereal.dolphinoes.architecture.core.MouseMovedEvent.java
com.sidereal.dolphinoes.architecture.core.Time.java
com.sidereal.dolphinoes.architecture.core.assetload.AssetLoadHandler.java
com.sidereal.dolphinoes.architecture.core.assetload.AssetLoader.java
com.sidereal.dolphinoes.architecture.core.assetload.ClassFileHandleResolver.java
com.sidereal.dolphinoes.architecture.core.assetload.LoadingPercentage.java
com.sidereal.dolphinoes.architecture.core.input.ActionData.java
com.sidereal.dolphinoes.architecture.core.input.ActionEventWrapper.java
com.sidereal.dolphinoes.architecture.core.input.ActionEvent.java
com.sidereal.dolphinoes.architecture.core.input.Input.java
com.sidereal.dolphinoes.architecture.core.input.KeyTypedEvent.java
com.sidereal.dolphinoes.architecture.core.input.ScrollEvent.java
com.sidereal.dolphinoes.architecture.core.input.TouchData.java
com.sidereal.dolphinoes.architecture.core.input.TouchEventWrapper.java
com.sidereal.dolphinoes.architecture.core.input.TouchEvent.java
com.sidereal.dolphinoes.architecture.pos.Position.java
com.sidereal.dolphinoes.architecture.pos.Positions.java
com.sidereal.dolphinoes.backend.ConcreteGametester.java
com.sidereal.dolphinoes.backend.GameTester.java
com.sidereal.dolphinoes.backend.SceneGameTester.java
com.sidereal.dolphinoes.behaviors.audio.AudioListener.java
com.sidereal.dolphinoes.behaviors.audio.AudioPlayer.java
com.sidereal.dolphinoes.behaviors.events.EventTimer.java
com.sidereal.dolphinoes.behaviors.events.RecurringEvent.java
com.sidereal.dolphinoes.behaviors.input.Clickable.java
com.sidereal.dolphinoes.behaviors.particlesystem.ParticleEmitter.java
com.sidereal.dolphinoes.behaviors.particlesystem.ParticleHandler.java
com.sidereal.dolphinoes.behaviors.particlesystem.ParticleSpriteLayout.java
com.sidereal.dolphinoes.behaviors.particlesystem.ParticleSpriteObject.java
com.sidereal.dolphinoes.behaviors.pathfinding.PathfindingHandler.java
com.sidereal.dolphinoes.behaviors.pathfinding.PathfindingMap.java
com.sidereal.dolphinoes.behaviors.pathfinding.PathfindingNode.java
com.sidereal.dolphinoes.behaviors.pathfinding.PathfindingRoute.java
com.sidereal.dolphinoes.behaviors.renderer.DrawerBuilder.java
com.sidereal.dolphinoes.behaviors.renderer.Drawer.java
com.sidereal.dolphinoes.behaviors.renderer.Renderer.java
com.sidereal.dolphinoes.behaviors.renderer.ninepatch.NinepatchBuilder.java
com.sidereal.dolphinoes.behaviors.renderer.ninepatch.NinepatchDrawer.java
com.sidereal.dolphinoes.behaviors.renderer.scml.SCMLBuilder.java
com.sidereal.dolphinoes.behaviors.renderer.scml.SCMLDrawer.java
com.sidereal.dolphinoes.behaviors.renderer.sprite.SpriteBuilder.java
com.sidereal.dolphinoes.behaviors.renderer.sprite.SpriteDrawer.java
com.sidereal.dolphinoes.behaviors.renderer.spritesequence.SpriteSequenceBuilder.java
com.sidereal.dolphinoes.behaviors.renderer.spritesequence.SpriteSequenceDrawer.java
com.sidereal.dolphinoes.behaviors.renderer.spritesequence.SpriteSequencePreference.java
com.sidereal.dolphinoes.behaviors.renderer.texture.TextureBuilder.java
com.sidereal.dolphinoes.behaviors.renderer.texture.TextureDrawer.java
com.sidereal.dolphinoes.behaviors.renderer.tilemap.TileMapBuilder.java
com.sidereal.dolphinoes.behaviors.renderer.tilemap.TileMapDrawer.java
com.sidereal.dolphinoes.behaviors.triggers.Activatable.java
com.sidereal.dolphinoes.behaviors.triggers.Collider.java
com.sidereal.dolphinoes.behaviors.triggers.Hoverable.java
com.sidereal.dolphinoes.ui.MessageBubble.java
com.sidereal.dolphinoes.ui.TextBuilder.java
com.sidereal.dolphinoes.util.BooleanWrapper.java
com.sidereal.dolphinoes.util.DolphinOESException.java
com.sidereal.dolphinoes.util.FloatWrapper.java
com.sidereal.dolphinoes.util.IntWrapper.java
com.sidereal.dolphinoes.util.Utility.java