and added a update method to entity for ex the sound entity to update its position in the world. Added loging support to whit MultiPrintStream.java
119 lines
No EOL
2.9 KiB
Java
119 lines
No EOL
2.9 KiB
Java
package ei.engine.scene;
|
|
|
|
import java.io.IOException;
|
|
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
import ei.engine.texture.Texture;
|
|
import ei.engine.texture.TextureLoader;
|
|
|
|
/**
|
|
* Implementation of sprite that uses an OpenGL quad and a texture
|
|
* to render a given image to the screen.
|
|
*
|
|
* @author Kevin Glass
|
|
* @author Brian Matzon
|
|
* @author Ziver Koc
|
|
*/
|
|
public class Sprite extends Entity {
|
|
/** The texture that stores the image for this sprite */
|
|
private Texture texture;
|
|
|
|
/**
|
|
* Create a new empty sprite
|
|
*
|
|
* @param window The window in which the sprite will be displayed
|
|
* @param ref A reference to the image on which this sprite should be based
|
|
*/
|
|
public Sprite(String name) {
|
|
super(name);
|
|
texture = null;
|
|
}
|
|
|
|
/**
|
|
* Create a new sprite from a specified texture.
|
|
*
|
|
* @param name The name of the sprite
|
|
* @param texture The texture to use
|
|
*/
|
|
public Sprite(String name, Texture texture) {
|
|
super(name);
|
|
this.texture = texture;
|
|
}
|
|
|
|
/**
|
|
* Create a new sprite from a specified image.
|
|
*
|
|
* @param name The name of the sprite
|
|
* @param ref A reference to the image on which this sprite should be based
|
|
*/
|
|
public Sprite(String name, String ref) {
|
|
super(name);
|
|
try {
|
|
this.texture = TextureLoader.getTextureLoaderInstance().getTexture(ref);
|
|
|
|
} catch (IOException e) {
|
|
// a tad abrupt, but our purposes if you can't find a
|
|
// sprite's image you might as well give up.
|
|
System.err.println("Unable to load texture: "+ref);
|
|
System.exit(0);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get the width of this sprite in pixels
|
|
*
|
|
* @return The width of this sprite in pixels
|
|
*/
|
|
public int getWidth() {
|
|
if(texture == null){
|
|
return 0;
|
|
}
|
|
return texture.getImageWidth();
|
|
}
|
|
|
|
/**
|
|
* Get the height of this sprite in pixels
|
|
*
|
|
* @return The height of this sprite in pixels
|
|
*/
|
|
public int getHeight() {
|
|
if(texture == null){
|
|
return 0;
|
|
}
|
|
return texture.getImageHeight();
|
|
}
|
|
|
|
/**
|
|
* Draw the sprite
|
|
*/
|
|
public void render() {
|
|
// store the current model matrix
|
|
GL11.glPushMatrix();
|
|
|
|
// bind to the appropriate texture for this sprite
|
|
texture.bind();
|
|
|
|
// translate to the right location and prepare to draw
|
|
GL11.glTranslatef((int)getLocation().getX(), (int)getLocation().getY(), 0);
|
|
GL11.glColor3f(1,1,1);
|
|
|
|
// draw a quad textured to match the sprite
|
|
GL11.glBegin(GL11.GL_QUADS);
|
|
{
|
|
GL11.glTexCoord2f(0, 0);
|
|
GL11.glVertex2f(0, 0);
|
|
GL11.glTexCoord2f(0, texture.getHeight());
|
|
GL11.glVertex2f(0, texture.getImageHeight());
|
|
GL11.glTexCoord2f(texture.getWidth(), texture.getHeight());
|
|
GL11.glVertex2f(texture.getImageWidth(),texture.getImageHeight());
|
|
GL11.glTexCoord2f(texture.getWidth(), 0);
|
|
GL11.glVertex2f(texture.getImageWidth(),0);
|
|
}
|
|
GL11.glEnd();
|
|
|
|
// restore the model view matrix to prevent contamination
|
|
GL11.glPopMatrix();
|
|
}
|
|
|
|
} |