summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2015-11-05 16:03:36 +0100
committerJérémy Zurcher <jeremy@asynk.ch>2015-11-05 16:03:36 +0100
commitabc7023afe882398c8c1a5d15db683331f677816 (patch)
treea9d48849298ad306b0c104edbcab4743727ce88c
parent9a6973ae02917f19aafff43d87bf91d5c54c5994 (diff)
downloadRustAndDust-abc7023afe882398c8c1a5d15db683331f677816.zip
RustAndDust-abc7023afe882398c8c1a5d15db683331f677816.tar.gz
UnitDock: add glScissors
-rw-r--r--core/src/ch/asynk/rustanddust/game/hud/UnitDock.java16
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);
}
}