espresso3d.engine.world.sector.particle
Class E3DSprite

java.lang.Object
  extended byespresso3d.engine.base.E3DEngineItem
      extended byespresso3d.engine.renderer.base.E3DRenderable
          extended byespresso3d.engine.renderer.base.E3DBlendedRenderable
              extended byespresso3d.engine.renderer.base.E3DBlendedAnimatedTextureRenderable
                  extended byespresso3d.engine.world.sector.base.E3DPortalEnabledBlendedAnimatedTextureRenderable
                      extended byespresso3d.engine.world.sector.particle.E3DSprite
All Implemented Interfaces:
E3DCollisionDetectableObject, E3DPortalEnabledItem
Direct Known Subclasses:
E3DBillboardSprite

public abstract class E3DSprite
extends E3DPortalEnabledBlendedAnimatedTextureRenderable
implements E3DCollisionDetectableObject

Author:
Curt A sprite is a texture mapped quad. TODO: Alpha blending & masking is currently not supported, but will be. Collision detection for particles is based on its bounding quad.

Field Summary
 
Fields inherited from class espresso3d.engine.renderer.base.E3DBlendedRenderable
BLENDMODE_BLEND, BLENDMODE_SOLID
 
Fields inherited from class espresso3d.engine.renderer.base.E3DRenderable
RENDERMODE_SOLID, RENDERMODE_TEXTURED, RENDERMODE_WIREFRAME
 
Constructor Summary
E3DSprite(E3DEngine engine, E3DVector3F position, double size, E3DAnimatedTextureFrame[] animatedTextureFrames, int animationLoops)
           
E3DSprite(E3DEngine engine, E3DVector3F position, double size, E3DAnimatedTextureFrame[] animatedTextureFrames, int animationLoops, int blendMode)
           
E3DSprite(E3DEngine engine, E3DVector3F position, double size, java.lang.String textureName)
           
E3DSprite(E3DEngine engine, E3DVector3F position, double size, java.lang.String textureName, int blendMode)
           
E3DSprite(E3DEngine engine, E3DVector3F position, E3DVector3F forward, E3DVector3F up, double size, E3DAnimatedTextureFrame[] animatedTextureFrames, int animationLoops)
           
E3DSprite(E3DEngine engine, E3DVector3F position, E3DVector3F forward, E3DVector3F up, double size, E3DAnimatedTextureFrame[] animatedTextureFrames, int animationLoops, int blendMode)
           
E3DSprite(E3DEngine engine, E3DVector3F position, E3DVector3F forward, E3DVector3F up, double size, java.lang.String textureName)
          Create a sprite Defaults rendering blendMode to BLENDMODE_BLEND
E3DSprite(E3DEngine engine, E3DVector3F position, E3DVector3F forward, E3DVector3F up, double size, java.lang.String textureName, int blendMode)
           
 
Method Summary
 E3DBoundingObject getBoundingObject()
          Return the bounding object or null for bounding collision tests
 E3DVector3F getForward()
           
 E3DVector3F getPosition()
          Used to get the position of t he object
 E3DQuad getQuad()
           
 double getSize()
           
 java.util.ArrayList getTriangleList()
          Must return an ArrayList of E3DTriangles that make up the geometry of the object.
 java.util.ArrayList getUniqueVertexList()
          This will ideally only return unique vertices that the object has.
 E3DVector3F getUp()
           
abstract  void onCollisionActor(E3DCollision collision)
          This is called when another actor collides with this object
abstract  void onCollisionSprite(E3DCollision collision)
          This is called when a sprite collides with this object
 void renderAtPosition(E3DVector3F position)
           
 void rotate(double angle, E3DVector3F upVec)
          Rotate the sprite around upVec angle amount
 void scale(double scaleAmt)
           
 void setPosition(E3DVector3F position)
           
 void setQuad(E3DQuad quad)
           
 void setRenderMode(int renderMode)
          If a sprite's rendermode is set, so is the the rendermode for the quad it contains
 void translate(E3DVector3F translationAmt)
           
 boolean update(E3DActor lookAtActor, double lastFrameTimeSeconds)
          Called by the engine after each frame to update the sprites animation (if necessary)
 
Methods inherited from class espresso3d.engine.world.sector.base.E3DPortalEnabledBlendedAnimatedTextureRenderable
checkSectorChangeDuringMovement, getSector, setSector
 
Methods inherited from class espresso3d.engine.renderer.base.E3DBlendedAnimatedTextureRenderable
getAnimatedTexture, getRenderableOptionsKey, setAnimatedTexture
 
Methods inherited from class espresso3d.engine.renderer.base.E3DBlendedRenderable
getBlendMode, initCorrectGeometryRenderer, setBlendMode
 
Methods inherited from class espresso3d.engine.renderer.base.E3DRenderable
getRenderMode, render
 
Methods inherited from class espresso3d.engine.base.E3DEngineItem
getEngine, setEngine
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface espresso3d.engine.collision.base.E3DCollisionDetectableObject
getEngine, getSector, isCollideable
 

Constructor Detail

E3DSprite

public E3DSprite(E3DEngine engine,
                 E3DVector3F position,
                 double size,
                 java.lang.String textureName)

E3DSprite

public E3DSprite(E3DEngine engine,
                 E3DVector3F position,
                 double size,
                 E3DAnimatedTextureFrame[] animatedTextureFrames,
                 int animationLoops)

E3DSprite

public E3DSprite(E3DEngine engine,
                 E3DVector3F position,
                 double size,
                 java.lang.String textureName,
                 int blendMode)

E3DSprite

public E3DSprite(E3DEngine engine,
                 E3DVector3F position,
                 double size,
                 E3DAnimatedTextureFrame[] animatedTextureFrames,
                 int animationLoops,
                 int blendMode)

E3DSprite

public E3DSprite(E3DEngine engine,
                 E3DVector3F position,
                 E3DVector3F forward,
                 E3DVector3F up,
                 double size,
                 java.lang.String textureName)
Create a sprite Defaults rendering blendMode to BLENDMODE_BLEND

Parameters:
engine -
position -
forward -
up -
size -
textureName -

E3DSprite

public E3DSprite(E3DEngine engine,
                 E3DVector3F position,
                 E3DVector3F forward,
                 E3DVector3F up,
                 double size,
                 E3DAnimatedTextureFrame[] animatedTextureFrames,
                 int animationLoops)

E3DSprite

public E3DSprite(E3DEngine engine,
                 E3DVector3F position,
                 E3DVector3F forward,
                 E3DVector3F up,
                 double size,
                 java.lang.String textureName,
                 int blendMode)

E3DSprite

public E3DSprite(E3DEngine engine,
                 E3DVector3F position,
                 E3DVector3F forward,
                 E3DVector3F up,
                 double size,
                 E3DAnimatedTextureFrame[] animatedTextureFrames,
                 int animationLoops,
                 int blendMode)
Method Detail

onCollisionActor

public abstract void onCollisionActor(E3DCollision collision)
Description copied from interface: E3DCollisionDetectableObject
This is called when another actor collides with this object

Specified by:
onCollisionActor in interface E3DCollisionDetectableObject
Parameters:
collision -

onCollisionSprite

public abstract void onCollisionSprite(E3DCollision collision)
Description copied from interface: E3DCollisionDetectableObject
This is called when a sprite collides with this object

Specified by:
onCollisionSprite in interface E3DCollisionDetectableObject
Parameters:
collision -

renderAtPosition

public void renderAtPosition(E3DVector3F position)
Specified by:
renderAtPosition in class E3DBlendedAnimatedTextureRenderable

getForward

public E3DVector3F getForward()

getPosition

public E3DVector3F getPosition()
Description copied from interface: E3DCollisionDetectableObject
Used to get the position of t he object

Specified by:
getPosition in interface E3DCollisionDetectableObject
Returns:

setPosition

public void setPosition(E3DVector3F position)

scale

public void scale(double scaleAmt)

translate

public void translate(E3DVector3F translationAmt)

rotate

public void rotate(double angle,
                   E3DVector3F upVec)
Rotate the sprite around upVec angle amount

Parameters:
angle - Radian angle
upVec - Normalised up vector to use as the rotation axis

getSize

public double getSize()

getUp

public E3DVector3F getUp()

getQuad

public E3DQuad getQuad()

setQuad

public void setQuad(E3DQuad quad)

getTriangleList

public java.util.ArrayList getTriangleList()
Description copied from interface: E3DCollisionDetectableObject
Must return an ArrayList of E3DTriangles that make up the geometry of the object. This is used for direct triangle collisions

Specified by:
getTriangleList in interface E3DCollisionDetectableObject
Returns:

getUniqueVertexList

public java.util.ArrayList getUniqueVertexList()
Description copied from interface: E3DCollisionDetectableObject
This will ideally only return unique vertices that the object has.

Specified by:
getUniqueVertexList in interface E3DCollisionDetectableObject
Returns:

getBoundingObject

public E3DBoundingObject getBoundingObject()
Description copied from interface: E3DCollisionDetectableObject
Return the bounding object or null for bounding collision tests

Specified by:
getBoundingObject in interface E3DCollisionDetectableObject
Returns:

setRenderMode

public void setRenderMode(int renderMode)
If a sprite's rendermode is set, so is the the rendermode for the quad it contains

Overrides:
setRenderMode in class E3DRenderable
Parameters:
renderMode -

update

public boolean update(E3DActor lookAtActor,
                      double lastFrameTimeSeconds)
Called by the engine after each frame to update the sprites animation (if necessary)

Returns:
Returns false if the sprite should be removed from the engine lookAtActor is ignored and only used for classes that extend this