add basic billboard draw methods
This commit is contained in:
parent
608cbf376d
commit
a3f0cf068f
|
@ -1,5 +1,7 @@
|
||||||
package com.blarg.gdx.graphics;
|
package com.blarg.gdx.graphics;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.graphics.Color;
|
||||||
|
import com.badlogic.gdx.graphics.Texture;
|
||||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||||
import com.badlogic.gdx.graphics.g3d.decals.Decal;
|
import com.badlogic.gdx.graphics.g3d.decals.Decal;
|
||||||
import com.badlogic.gdx.graphics.g3d.decals.DecalBatch;
|
import com.badlogic.gdx.graphics.g3d.decals.DecalBatch;
|
||||||
|
@ -40,11 +42,35 @@ public class BillboardSpriteBatch {
|
||||||
pointer = 0;
|
pointer = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void draw(Texture texture, float x, float y, float z, float width, float height) {
|
||||||
|
draw(texture, x, y, z, width, height, Color.WHITE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void draw(Texture texture, float x, float y, float z, float width, float height, Color tint) {
|
||||||
|
Decal sprite = nextUsable();
|
||||||
|
TextureRegion textureRegion = sprite.getTextureRegion();
|
||||||
|
textureRegion.setRegion(texture);
|
||||||
|
sprite.setTextureRegion(textureRegion);
|
||||||
|
sprite.setWidth(width);
|
||||||
|
sprite.setHeight(height);
|
||||||
|
sprite.setPosition(x, y, z);
|
||||||
|
sprite.setColor(tint);
|
||||||
|
}
|
||||||
|
|
||||||
public void flush() {
|
public void flush() {
|
||||||
if (!hasBegun)
|
if (!hasBegun)
|
||||||
throw new IllegalStateException("Cannot call outside of a begin/end block.");
|
throw new IllegalStateException("Cannot call outside of a begin/end block.");
|
||||||
|
|
||||||
// TODO: render decals with DecalBatch
|
for (int i = 0; i < pointer; ++i) {
|
||||||
|
Decal sprite = sprites.items[i];
|
||||||
|
decalBatch.add(sprite);
|
||||||
|
}
|
||||||
|
decalBatch.flush();
|
||||||
|
|
||||||
|
// don't want to hang on to Texture object references
|
||||||
|
// TODO: is this overkill? does this really make a big difference?
|
||||||
|
for (int i = 0; i < pointer; ++i)
|
||||||
|
sprites.items[i].getTextureRegion().setTexture(null);
|
||||||
|
|
||||||
pointer = 0;
|
pointer = 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue