diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2015-11-05 16:03:36 +0100 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2015-11-05 16:03:36 +0100 |
commit | abc7023afe882398c8c1a5d15db683331f677816 (patch) | |
tree | a9d48849298ad306b0c104edbcab4743727ce88c | |
parent | 9a6973ae02917f19aafff43d87bf91d5c54c5994 (diff) | |
download | RustAndDust-abc7023afe882398c8c1a5d15db683331f677816.zip RustAndDust-abc7023afe882398c8c1a5d15db683331f677816.tar.gz |
UnitDock: add glScissors
-rw-r--r-- | core/src/ch/asynk/rustanddust/game/hud/UnitDock.java | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/core/src/ch/asynk/rustanddust/game/hud/UnitDock.java b/core/src/ch/asynk/rustanddust/game/hud/UnitDock.java index 11895ba..e101ff7 100644 --- a/core/src/ch/asynk/rustanddust/game/hud/UnitDock.java +++ b/core/src/ch/asynk/rustanddust/game/hud/UnitDock.java @@ -1,5 +1,7 @@ package ch.asynk.rustanddust.game.hud; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.g2d.Batch; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.g2d.Sprite; @@ -20,6 +22,7 @@ public class UnitDock extends Bg implements Animation { private static final float SCALE = 0.4f; private static final float STEP = 5f; + private static final float SCISSORS_BOTTOM = 50f; private final Ctrl ctrl; private int n; @@ -36,6 +39,7 @@ public class UnitDock extends Bg implements Animation private Matrix4 saved; private Matrix4 transform; private Rectangle scaledRect; + private Rectangle scissors; public UnitDock(Ctrl ctrl, TextureRegion region, TextureRegion selected, float padding) { @@ -47,6 +51,7 @@ public class UnitDock extends Bg implements Animation this.saved = new Matrix4(); this.transform = new Matrix4(); this.scaledRect = new Rectangle(); + this.scissors = new Rectangle(); this.selected = new Sprite(selected); this.visible = false; this.dx = 0f; @@ -69,6 +74,7 @@ public class UnitDock extends Bg implements Animation point.set((rect.x + rect.width), (rect.y + rect.height), 0).mul(transform); scaledRect.width = point.x - scaledRect.x; scaledRect.height = point.y - scaledRect.y; + scissors.set(0, SCISSORS_BOTTOM, Gdx.graphics.getWidth(), (y - SCISSORS_BOTTOM)); } public void setPosition(Position position, float y) @@ -81,6 +87,7 @@ public class UnitDock extends Bg implements Animation this.mvtDone = true; this.visible = false; this.dx = 0f; + scissors.set(0, SCISSORS_BOTTOM, Gdx.graphics.getWidth(), (y - SCISSORS_BOTTOM)); } @Override @@ -199,6 +206,10 @@ public class UnitDock extends Bg implements Animation saved.set(batch.getTransformMatrix()); batch.setTransformMatrix(transform); + // batch.flush(); + Gdx.gl.glEnable(GL20.GL_SCISSOR_TEST); + Gdx.gl.glScissor((int)scissors.x, (int)scissors.y, (int)scissors.width, (int)scissors.height); + super.draw(batch); for (Unit unit : units) { unit.draw(batch); @@ -209,6 +220,9 @@ public class UnitDock extends Bg implements Animation } batch.setTransformMatrix(saved); + + Gdx.gl.glDisable(GL20.GL_SCISSOR_TEST); + // batch.flush(); } @Override @@ -222,5 +236,7 @@ public class UnitDock extends Bg implements Animation shapes.rect(rect.x, rect.y, rect.width, rect.height); shapes.setTransformMatrix(saved); + + shapes.rect(scissors.x, scissors.y, scissors.width, scissors.height); } } |