Avoid using ShapeRenderer
This commit is contained in:
Submodule hyperlap2d-runtime-libgdx updated: e2ac88b47c...b481ffdcd2
@@ -80,7 +80,7 @@ public class HyperLap2DScreenMediator extends Mediator<HyperLap2DScreen> {
|
||||
facade = HyperLap2DFacade.getInstance();
|
||||
sandboxMediator = facade.retrieveMediator(SandboxMediator.NAME);
|
||||
engine = sandboxMediator.getViewComponent().getEngine();
|
||||
SandboxBackUI sandboxBackUI = new SandboxBackUI(engine.getSystem(HyperLap2dRenderer.class).batch);
|
||||
SandboxBackUI sandboxBackUI = new SandboxBackUI(engine.getSystem(HyperLap2dRenderer.class).getBatch());
|
||||
getViewComponent().setBackUI(sandboxBackUI);
|
||||
getViewComponent().disableDrawingBgLogo();
|
||||
break;
|
||||
|
||||
@@ -1,12 +1,8 @@
|
||||
package games.rednblack.editor.view.ui;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.Input;
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.graphics.GL20;
|
||||
import com.badlogic.gdx.graphics.OrthographicCamera;
|
||||
import com.badlogic.gdx.graphics.g2d.Batch;
|
||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
|
||||
import com.badlogic.gdx.math.Circle;
|
||||
import com.badlogic.gdx.math.Rectangle;
|
||||
import com.badlogic.gdx.math.Vector2;
|
||||
@@ -19,6 +15,8 @@ import com.kotcrab.vis.ui.widget.VisLabel;
|
||||
import games.rednblack.editor.HyperLap2DFacade;
|
||||
import games.rednblack.editor.utils.Guide;
|
||||
import games.rednblack.editor.view.stage.Sandbox;
|
||||
import games.rednblack.editor.view.ui.widget.actors.basic.WhitePixel;
|
||||
import space.earlygrey.shapedrawer.ShapeDrawer;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
@@ -47,7 +45,7 @@ public class RulersUI extends Actor {
|
||||
//Allows the ChangeRulerXPositionCommand to change the guide's position from the function UpdateGuideManully
|
||||
private static Guide editableDraggingGuide = null;
|
||||
|
||||
private final ShapeRenderer shapeRenderer;
|
||||
private ShapeDrawer shapeDrawer;
|
||||
|
||||
private final Rectangle horizontalRect, verticalRect;
|
||||
|
||||
@@ -78,8 +76,6 @@ public class RulersUI extends Actor {
|
||||
private final HashMap<Integer, String> labelTextCache = new HashMap<>();
|
||||
|
||||
public RulersUI() {
|
||||
shapeRenderer = new ShapeRenderer();
|
||||
|
||||
horizontalRect = new Rectangle();
|
||||
verticalRect = new Rectangle();
|
||||
|
||||
@@ -102,7 +98,7 @@ public class RulersUI extends Actor {
|
||||
|
||||
Circle touchCircle = tmpCircle;
|
||||
touchCircle.radius = 5;
|
||||
touchCircle.setPosition(x - getStage().getWidth() / 2f, y - getStage().getHeight() / 2f);
|
||||
touchCircle.setPosition(x, y);
|
||||
|
||||
isTouchingDownRuler = false;
|
||||
if (verticalRect.contains(touchCircle.x, touchCircle.y)) {
|
||||
@@ -137,7 +133,7 @@ public class RulersUI extends Actor {
|
||||
|
||||
//Changes the dragging guide's position to the world position
|
||||
if (draggingGuide != null) {
|
||||
Vector2 worldCoords = hereToWorld(tmp.set(x - getStage().getWidth() / 2f, y - getStage().getHeight() / 2f));
|
||||
Vector2 worldCoords = hereToWorld(tmp.set(x, y));
|
||||
if (draggingGuide.isVertical) {
|
||||
draggingGuide.pos = worldCoords.x;
|
||||
if (!isShowingPixels)
|
||||
@@ -161,8 +157,8 @@ public class RulersUI extends Actor {
|
||||
}
|
||||
|
||||
if (draggingGuide != null) {
|
||||
if ((draggingGuide.isVertical && x - getStage().getWidth() / 2f < verticalRect.x + verticalRect.getWidth()) ||
|
||||
(!draggingGuide.isVertical && y - getStage().getHeight() / 2f > horizontalRect.y)) {
|
||||
if ((draggingGuide.isVertical && x < verticalRect.x + verticalRect.getWidth()) ||
|
||||
(!draggingGuide.isVertical && y > horizontalRect.y)) {
|
||||
guides.removeValue(draggingGuide, true);
|
||||
} else {
|
||||
if (button == Input.Buttons.RIGHT) {
|
||||
@@ -190,8 +186,8 @@ public class RulersUI extends Actor {
|
||||
|
||||
super.act(delta);
|
||||
|
||||
horizontalRect.set(-getStage().getWidth() / 2f + leftOffset, getStage().getHeight() / 2f - rulerBoxSize - topOffset, getStage().getWidth() - leftOffset, rulerBoxSize);
|
||||
verticalRect.set(-getStage().getWidth() / 2f + leftOffset, -getStage().getHeight() / 2f, rulerBoxSize, getStage().getHeight() - topOffset);
|
||||
horizontalRect.set(leftOffset, getStage().getHeight() - rulerBoxSize - topOffset, getStage().getWidth() - leftOffset, rulerBoxSize);
|
||||
verticalRect.set(leftOffset, 0, rulerBoxSize, getStage().getHeight() - topOffset);
|
||||
|
||||
//calculating sizes
|
||||
viewMeasurableWidth = Sandbox.getInstance().getViewport().getWorldWidth() * Sandbox.getInstance().getCamera().zoom;
|
||||
@@ -223,15 +219,11 @@ public class RulersUI extends Actor {
|
||||
|
||||
private Vector2 worldToHere(Vector2 tmp) {
|
||||
tmp = Sandbox.getInstance().worldToScreen(tmp);
|
||||
tmp.x -= getStage().getWidth() / 2f;
|
||||
tmp.y -= getStage().getHeight() / 2f;
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
private Vector2 hereToWorld(Vector2 tmp) {
|
||||
tmp.x += getStage().getWidth() / 2f;
|
||||
tmp.y += getStage().getHeight() / 2f;
|
||||
tmp = Sandbox.getInstance().screenToWorld(tmp);
|
||||
|
||||
return tmp;
|
||||
@@ -239,15 +231,15 @@ public class RulersUI extends Actor {
|
||||
|
||||
@Override
|
||||
public void draw(Batch batch, float parentAlpha) {
|
||||
batch.end();
|
||||
|
||||
OrthographicCamera uiCamera = (OrthographicCamera) getStage().getCamera();
|
||||
|
||||
Gdx.gl.glLineWidth(1.0f);
|
||||
Gdx.gl.glEnable(GL20.GL_BLEND);
|
||||
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
shapeRenderer.setProjectionMatrix(uiCamera.projection);
|
||||
if (shapeDrawer == null) {
|
||||
shapeDrawer = new ShapeDrawer(batch, WhitePixel.sharedInstance.textureRegion){
|
||||
/* OPTIONAL: Ensuring a certain smoothness. */
|
||||
@Override
|
||||
protected int estimateSidesRequired(float radiusX, float radiusY) {
|
||||
return 200;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
drawShapes(parentAlpha);
|
||||
@@ -255,10 +247,6 @@ public class RulersUI extends Actor {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
Gdx.gl.glDisable(GL20.GL_BLEND);
|
||||
batch.begin();
|
||||
batch.setColor(Color.WHITE);
|
||||
|
||||
try {
|
||||
drawBatch(batch, parentAlpha);
|
||||
} catch (Exception e) {
|
||||
@@ -272,29 +260,23 @@ public class RulersUI extends Actor {
|
||||
}
|
||||
|
||||
public void drawBg(float parentAlpha) {
|
||||
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
|
||||
|
||||
tmpColor.set(BG_COLOR);
|
||||
tmpColor.a *= parentAlpha;
|
||||
|
||||
shapeRenderer.setColor(tmpColor);
|
||||
shapeRenderer.rect(horizontalRect.x, horizontalRect.y, horizontalRect.width, horizontalRect.height);
|
||||
shapeRenderer.rect(verticalRect.x, verticalRect.y, verticalRect.width, verticalRect.height);
|
||||
|
||||
shapeRenderer.end();
|
||||
shapeDrawer.setColor(tmpColor);
|
||||
shapeDrawer.filledRectangle(horizontalRect.x, horizontalRect.y, horizontalRect.width, horizontalRect.height);
|
||||
shapeDrawer.filledRectangle(verticalRect.x, verticalRect.y, verticalRect.width, verticalRect.height);
|
||||
}
|
||||
|
||||
public void drawLines(float parentAlpha) {
|
||||
shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
|
||||
|
||||
tmpColor.set(LINE_COLOR);
|
||||
tmpColor.a *= parentAlpha;
|
||||
|
||||
shapeRenderer.setColor(tmpColor);
|
||||
shapeDrawer.setColor(tmpColor);
|
||||
|
||||
// Static Lines for Aesthetics
|
||||
shapeRenderer.line(horizontalRect.x + rulerBoxSize, horizontalRect.y, horizontalRect.x + horizontalRect.width, horizontalRect.y);
|
||||
shapeRenderer.line(verticalRect.x + verticalRect.width + 1, verticalRect.y, verticalRect.x + verticalRect.width + 1, verticalRect.y + verticalRect.height - rulerBoxSize);
|
||||
shapeDrawer.line(horizontalRect.x + rulerBoxSize, horizontalRect.y, horizontalRect.x + horizontalRect.width, horizontalRect.y, 1f);
|
||||
shapeDrawer.line(verticalRect.x + verticalRect.width + 1, verticalRect.y, verticalRect.x + verticalRect.width + 1, verticalRect.y + verticalRect.height - rulerBoxSize, 1f);
|
||||
|
||||
//Functional lines to show grid
|
||||
Vector2 startPoint = tmp1.set(horizontalRect.x + rulerBoxSize, verticalRect.y);
|
||||
@@ -304,8 +286,6 @@ public class RulersUI extends Actor {
|
||||
Vector2 worldStartPointCpy = tmp2.set(worldStartPoint);
|
||||
Vector2 gridCurrPoint = worldToHere(worldStartPoint);
|
||||
|
||||
labels.clear();
|
||||
|
||||
String postFix = "";
|
||||
if (isShowingPixels) {
|
||||
postFix = "px";
|
||||
@@ -316,13 +296,14 @@ public class RulersUI extends Actor {
|
||||
float gridSize = gridMeasuringSize * gridMeasureToDisplayScale;
|
||||
int iterator = 0;
|
||||
while (gridCurrPoint.x < horizontalRect.x + horizontalRect.getWidth()) {
|
||||
shapeRenderer.line(gridCurrPoint.x, horizontalRect.y, gridCurrPoint.x, horizontalRect.y + rulerBoxSize);
|
||||
shapeRenderer.line(gridCurrPoint.x + gridSize / 2, horizontalRect.y, gridCurrPoint.x + gridSize / 2, horizontalRect.y + rulerBoxSize / 2f);
|
||||
shapeDrawer.line(gridCurrPoint.x, horizontalRect.y, gridCurrPoint.x, horizontalRect.y + rulerBoxSize, 1f);
|
||||
shapeDrawer.line(gridCurrPoint.x + gridSize / 2, horizontalRect.y, gridCurrPoint.x + gridSize / 2, horizontalRect.y + rulerBoxSize / 2f, 1f);
|
||||
|
||||
VisLabel label = Pools.obtain(VisLabel.class);
|
||||
label.setPosition(getStage().getWidth() / 2f + gridCurrPoint.x + 2, getStage().getHeight() / 2f + horizontalRect.y + 7);
|
||||
label.setPosition(gridCurrPoint.x + 2, horizontalRect.y + 7);
|
||||
label.setColor(TEXT_COLOR);
|
||||
label.setText((int) Math.abs(worldStartPointCpy.x + iterator * gridMeasuringSize) + postFix);
|
||||
label.setWrap(false);
|
||||
labels.add(label);
|
||||
|
||||
gridCurrPoint.x += gridSize;
|
||||
@@ -330,8 +311,8 @@ public class RulersUI extends Actor {
|
||||
}
|
||||
iterator = 0;
|
||||
while (gridCurrPoint.y < verticalRect.y + verticalRect.getHeight()) {
|
||||
shapeRenderer.line(verticalRect.x + verticalRect.getWidth(), gridCurrPoint.y, verticalRect.x + verticalRect.getWidth() - rulerBoxSize, gridCurrPoint.y);
|
||||
shapeRenderer.line(verticalRect.x + verticalRect.getWidth(), gridCurrPoint.y + gridSize / 2, verticalRect.x + verticalRect.getWidth() - rulerBoxSize / 2f, gridCurrPoint.y + gridSize / 2);
|
||||
shapeDrawer.line(verticalRect.x + verticalRect.getWidth(), gridCurrPoint.y, verticalRect.x + verticalRect.getWidth() - rulerBoxSize, gridCurrPoint.y, 1f);
|
||||
shapeDrawer.line(verticalRect.x + verticalRect.getWidth(), gridCurrPoint.y + gridSize / 2, verticalRect.x + verticalRect.getWidth() - rulerBoxSize / 2f, gridCurrPoint.y + gridSize / 2, 1f);
|
||||
|
||||
VisLabel label = Pools.obtain(VisLabel.class);
|
||||
label.setColor(TEXT_COLOR);
|
||||
@@ -345,37 +326,38 @@ public class RulersUI extends Actor {
|
||||
|
||||
label.setText(lblText);
|
||||
label.setWrap(true);
|
||||
label.setPosition(getStage().getWidth() / 2f + verticalRect.x + 3, getStage().getHeight() / 2f + gridCurrPoint.y - label.getPrefHeight() / 2);
|
||||
label.setPosition(verticalRect.x + 3, gridCurrPoint.y - label.getPrefHeight() / 2);
|
||||
labels.add(label);
|
||||
|
||||
gridCurrPoint.y += gridSize;
|
||||
iterator++;
|
||||
}
|
||||
|
||||
drawGuides();
|
||||
|
||||
shapeRenderer.end();
|
||||
drawGuides(parentAlpha);
|
||||
}
|
||||
|
||||
public void drawGuides() {
|
||||
public void drawGuides(float parentAlpha) {
|
||||
for (int i = 0; i < guides.size; i++) {
|
||||
Guide guide = guides.get(i);
|
||||
|
||||
if (mouseOverGuide == guide) {
|
||||
shapeRenderer.setColor(OVER_GUIDE_COLOR);
|
||||
tmpColor.set(OVER_GUIDE_COLOR);
|
||||
} else {
|
||||
shapeRenderer.setColor(GUIDE_COLOR);
|
||||
tmpColor.set(GUIDE_COLOR);
|
||||
}
|
||||
|
||||
tmpColor.a *= parentAlpha;
|
||||
shapeDrawer.setColor(tmpColor);
|
||||
|
||||
if (guide.isVertical) {
|
||||
Vector2 localCoords = worldToHere(tmp1.set(guide.pos, 0));
|
||||
if (localCoords.x > verticalRect.x + verticalRect.width) {
|
||||
shapeRenderer.line(localCoords.x, -getStage().getHeight() / 2f, localCoords.x, horizontalRect.y);
|
||||
shapeDrawer.line(localCoords.x, 0, localCoords.x, horizontalRect.y, 1f);
|
||||
}
|
||||
} else {
|
||||
Vector2 localCoords = worldToHere(tmp1.set(0, guide.pos));
|
||||
if (localCoords.y < horizontalRect.y) {
|
||||
shapeRenderer.line(verticalRect.x + verticalRect.getWidth(), localCoords.y, getStage().getWidth(), localCoords.y);
|
||||
shapeDrawer.line(verticalRect.x + verticalRect.getWidth(), localCoords.y, getStage().getWidth(), localCoords.y, 1f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -386,6 +368,7 @@ public class RulersUI extends Actor {
|
||||
labels.get(i).draw(batch, parentAlpha);
|
||||
Pools.free(labels.get(i));
|
||||
}
|
||||
labels.clear();
|
||||
|
||||
if (draggingGuide != null) {
|
||||
float pos = draggingGuide.pos;
|
||||
@@ -427,7 +410,7 @@ public class RulersUI extends Actor {
|
||||
|
||||
@Override
|
||||
public Actor hit(float x, float y, boolean touchable) {
|
||||
if (verticalRect.contains(x - getStage().getWidth() / 2f, y - getStage().getHeight() / 2f) || horizontalRect.contains(x - getStage().getWidth() / 2f, y - getStage().getHeight() / 2f)) {
|
||||
if (verticalRect.contains(x, y) || horizontalRect.contains(x, y)) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -440,7 +423,7 @@ public class RulersUI extends Actor {
|
||||
}
|
||||
|
||||
public Guide guideCollision(float x, float y) {
|
||||
Vector2 point = tmp1.set(x - getStage().getWidth() / 2f, y - getStage().getHeight() / 2f);
|
||||
Vector2 point = tmp1.set(x, y);
|
||||
point = hereToWorld(point);
|
||||
|
||||
Circle touchCircle = tmpCircle;
|
||||
|
||||
@@ -154,8 +154,7 @@ public class AtlasesPackDialog extends H2DDialog {
|
||||
opTable.add().width(80);
|
||||
currentSelectedPackLabel = new VisLabel("Select Pack", Align.center);
|
||||
opTable.add(currentSelectedPackLabel).uniformX().growX().row();
|
||||
NinePatchDrawable bg = new NinePatchDrawable((NinePatchDrawable) VisUI.getSkin().getDrawable("sticky-note"));
|
||||
bg.getPatch().setColor(Color.DARK_GRAY);
|
||||
NinePatchDrawable bg = ((NinePatchDrawable) VisUI.getSkin().getDrawable("sticky-note")).tint(Color.DARK_GRAY);
|
||||
mainPackList.getMainTable().background(bg);
|
||||
opTable.add(mainPackList.getMainTable()).uniformX().grow();
|
||||
opTable.add(opButtonsContainer).growY();
|
||||
|
||||
@@ -18,138 +18,128 @@
|
||||
|
||||
package games.rednblack.editor.view.ui.widget.actors;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.graphics.GL20;
|
||||
import com.badlogic.gdx.graphics.OrthographicCamera;
|
||||
import com.badlogic.gdx.graphics.g2d.Batch;
|
||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
|
||||
import com.badlogic.gdx.math.Vector2;
|
||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Label;
|
||||
import com.badlogic.gdx.utils.Array;
|
||||
import com.kotcrab.vis.ui.widget.VisLabel;
|
||||
import games.rednblack.editor.view.stage.Sandbox;
|
||||
import space.earlygrey.shapedrawer.ShapeDrawer;
|
||||
|
||||
public class GridView extends Actor {
|
||||
|
||||
private Array<Segment> lines = new Array<>();
|
||||
private ShapeRenderer shapeRenderer;
|
||||
private final Array<Segment> lines = new Array<>();
|
||||
private final ShapeDrawer shapeDrawer;
|
||||
|
||||
private Label zeroLabel;
|
||||
private final Label zeroLabel;
|
||||
|
||||
private int pixelsPerWU = 1;
|
||||
private int pixelsPerWU = 1;
|
||||
|
||||
private int gridSize;
|
||||
int gridLinesCount;
|
||||
private int gridSize;
|
||||
int gridLinesCount;
|
||||
|
||||
private final Color tmpColor = new Color();
|
||||
private final Color tmpColor = new Color();
|
||||
|
||||
public GridView() {
|
||||
gridSize = 50;
|
||||
gridLinesCount = 40;
|
||||
public GridView(ShapeDrawer shapeDrawer) {
|
||||
this.shapeDrawer = shapeDrawer;
|
||||
gridSize = 50;
|
||||
gridLinesCount = 40;
|
||||
|
||||
pixelsPerWU = Sandbox.getInstance().getPixelPerWU();
|
||||
shapeRenderer = new ShapeRenderer();
|
||||
pixelsPerWU = Sandbox.getInstance().getPixelPerWU();
|
||||
|
||||
for(int i = 0; i <gridLinesCount; i++) {
|
||||
Segment tmp = new Segment(i*gridSize-(gridLinesCount/2-1)*gridSize, -(gridLinesCount/2-1)*gridSize, i*gridSize-(gridLinesCount/2-1)*gridSize, gridSize*gridLinesCount-(gridLinesCount/2-1)*gridSize);
|
||||
lines.add(tmp);
|
||||
}
|
||||
|
||||
for(int i = 0; i <gridLinesCount; i++) {
|
||||
Segment tmp = new Segment(-(gridLinesCount/2-1)*gridSize, i*gridSize-(gridLinesCount/2-1)*gridSize, gridSize*gridLinesCount-(gridLinesCount/2-1)*gridSize, i*gridSize-(gridLinesCount/2-1)*gridSize);
|
||||
lines.add(tmp);
|
||||
}
|
||||
|
||||
this.setWidth(gridSize * gridLinesCount);
|
||||
this.setHeight(gridSize * gridLinesCount);
|
||||
for (int i = 0; i < gridLinesCount; i++) {
|
||||
Segment tmp = new Segment(i * gridSize - (gridLinesCount / 2f - 1) * gridSize,
|
||||
-(gridLinesCount / 2f - 1) * gridSize, i * gridSize - (gridLinesCount / 2f - 1) * gridSize,
|
||||
gridSize * gridLinesCount - (gridLinesCount / 2f - 1) * gridSize);
|
||||
lines.add(tmp);
|
||||
}
|
||||
|
||||
zeroLabel = new VisLabel("0.0");
|
||||
zeroLabel.setColor(new Color(1, 1, 1, 0.4f));
|
||||
}
|
||||
for (int i = 0; i < gridLinesCount; i++) {
|
||||
Segment tmp = new Segment(-(gridLinesCount / 2f - 1) * gridSize,
|
||||
i * gridSize - (gridLinesCount / 2f - 1) * gridSize,
|
||||
gridSize * gridLinesCount - (gridLinesCount / 2f - 1) * gridSize,
|
||||
i * gridSize - (gridLinesCount / 2f - 1) * gridSize);
|
||||
lines.add(tmp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(Batch batch, float parentAlpha) {
|
||||
batch.end();
|
||||
this.setWidth(gridSize * gridLinesCount);
|
||||
this.setHeight(gridSize * gridLinesCount);
|
||||
|
||||
OrthographicCamera uiCamera = (OrthographicCamera) Sandbox.getInstance().getUIStage().getCamera();
|
||||
zeroLabel = new VisLabel("0.0");
|
||||
zeroLabel.setColor(new Color(1, 1, 1, 0.4f));
|
||||
}
|
||||
|
||||
Gdx.gl.glLineWidth(1.0f);
|
||||
Gdx.gl.glEnable(GL20.GL_BLEND);
|
||||
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
|
||||
@Override
|
||||
public void draw(Batch batch, float parentAlpha) {
|
||||
OrthographicCamera uiCamera = (OrthographicCamera) Sandbox.getInstance().getUIStage().getCamera();
|
||||
batch.setProjectionMatrix(uiCamera.projection);
|
||||
|
||||
shapeRenderer.setProjectionMatrix(uiCamera.projection);
|
||||
drawLines();
|
||||
|
||||
drawLines();
|
||||
OrthographicCamera runtimeCamera = Sandbox.getInstance().getCamera();
|
||||
zeroLabel.draw(batch, parentAlpha);
|
||||
zeroLabel.setX(-(runtimeCamera.position.x * pixelsPerWU) / runtimeCamera.zoom - 5 - zeroLabel.getWidth());
|
||||
zeroLabel.setY(-(runtimeCamera.position.y * pixelsPerWU) / runtimeCamera.zoom - zeroLabel.getHeight());
|
||||
}
|
||||
|
||||
Gdx.gl.glDisable(GL20.GL_BLEND);
|
||||
batch.begin();
|
||||
batch.setColor(Color.WHITE);
|
||||
private void drawLines() {
|
||||
OrthographicCamera runtimeCamera = Sandbox.getInstance().getCamera();
|
||||
float offsetX = (runtimeCamera.position.x * pixelsPerWU) / runtimeCamera.zoom % gridSize;
|
||||
float offsetY = (runtimeCamera.position.y * pixelsPerWU) / runtimeCamera.zoom % gridSize;
|
||||
|
||||
for (int i = 0; i < lines.size; i++) {
|
||||
shapeDrawer.setColor(getLineColor(i));
|
||||
shapeDrawer.line(lines.get(i).start.x - offsetX,
|
||||
lines.get(i).start.y - offsetY,
|
||||
lines.get(i).end.x - offsetX,
|
||||
lines.get(i).end.y - offsetY,
|
||||
1.0f);
|
||||
}
|
||||
}
|
||||
|
||||
OrthographicCamera runtimeCamera = Sandbox.getInstance().getCamera();
|
||||
batch.setProjectionMatrix(uiCamera.projection);
|
||||
zeroLabel.draw(batch, parentAlpha);
|
||||
zeroLabel.setX(-(runtimeCamera.position.x*pixelsPerWU)/runtimeCamera.zoom - 5 - zeroLabel.getWidth());
|
||||
zeroLabel.setY(-(runtimeCamera.position.y*pixelsPerWU)/runtimeCamera.zoom - zeroLabel.getHeight());
|
||||
}
|
||||
private Color getLineColor(int i) {
|
||||
OrthographicCamera runtimeCamera = Sandbox.getInstance().getCamera();
|
||||
|
||||
private void drawLines() {
|
||||
shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
|
||||
float offsetTmp = ((runtimeCamera.position.x * pixelsPerWU) / runtimeCamera.zoom) / gridSize;
|
||||
if (i >= gridLinesCount) {
|
||||
i -= gridLinesCount;
|
||||
offsetTmp = ((runtimeCamera.position.y * pixelsPerWU) / runtimeCamera.zoom) / gridSize;
|
||||
}
|
||||
|
||||
OrthographicCamera runtimeCamera = Sandbox.getInstance().getCamera();
|
||||
float offsetX = (runtimeCamera.position.x*pixelsPerWU)/runtimeCamera.zoom % gridSize;
|
||||
float offsetY = (runtimeCamera.position.y*pixelsPerWU)/runtimeCamera.zoom % gridSize;
|
||||
// offset
|
||||
int offset = 0;
|
||||
if (offsetTmp > 0) offset = (int) Math.floor(offsetTmp);
|
||||
if (offsetTmp < 0) offset = (int) -Math.floor(-offsetTmp);
|
||||
i += offset;
|
||||
|
||||
for(int i = 0; i < lines.size; i++) {
|
||||
shapeRenderer.setColor(getLineColor(i));
|
||||
shapeRenderer.line(lines.get(i).start.x - offsetX, lines.get(i).start.y-offsetY, lines.get(i).end.x-offsetX, lines.get(i).end.y-offsetY);
|
||||
}
|
||||
Color color = tmpColor.set(Color.WHITE);
|
||||
|
||||
shapeRenderer.end();
|
||||
}
|
||||
|
||||
private Color getLineColor(int i) {
|
||||
OrthographicCamera runtimeCamera = Sandbox.getInstance().getCamera();
|
||||
if ((gridLinesCount / 2 - i - 1) % 4 == 0) {
|
||||
color.a = 0.1f;
|
||||
} else if ((gridLinesCount / 2 - i - 1) % 2 == 0) {
|
||||
color.a = 0.05f;
|
||||
} else {
|
||||
color.a = 0.02f;
|
||||
}
|
||||
|
||||
float offsetTmp = ((runtimeCamera.position.x*pixelsPerWU)/runtimeCamera.zoom) / gridSize;
|
||||
if(i >= gridLinesCount) {
|
||||
i-= gridLinesCount;
|
||||
offsetTmp = ((runtimeCamera.position.y*pixelsPerWU)/runtimeCamera.zoom) / gridSize;
|
||||
}
|
||||
return color;
|
||||
}
|
||||
|
||||
// offset
|
||||
int offset = 0;
|
||||
if(offsetTmp > 0) offset = (int) Math.floor(offsetTmp);
|
||||
if(offsetTmp < 0) offset = (int) -Math.floor(-offsetTmp);
|
||||
i += offset;
|
||||
public static class Segment {
|
||||
public Vector2 start;
|
||||
public Vector2 end;
|
||||
|
||||
Color color = tmpColor.set(Color.WHITE);
|
||||
public Segment(float startX, float startY, float endX, float endY) {
|
||||
start = new Vector2(startX, startY);
|
||||
end = new Vector2(endX, endY);
|
||||
}
|
||||
|
||||
if((gridLinesCount/2 - i - 1) % 4 == 0) {
|
||||
color.a = 0.1f;
|
||||
} else if((gridLinesCount/2 - i - 1) % 2 == 0) {
|
||||
color.a = 0.05f;
|
||||
} else {
|
||||
color.a = 0.02f;
|
||||
}
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
public class Segment {
|
||||
public Vector2 start;
|
||||
public Vector2 end;
|
||||
|
||||
public Segment(float startX, float startY, float endX, float endY) {
|
||||
start = new Vector2(startX, startY);
|
||||
end = new Vector2(endX, endY);
|
||||
}
|
||||
|
||||
public Segment(Vector2 start, Vector2 end) {
|
||||
this.start = start;
|
||||
this.end = end;
|
||||
}
|
||||
}
|
||||
public Segment(Vector2 start, Vector2 end) {
|
||||
this.start = start;
|
||||
this.end = end;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
package games.rednblack.editor.view.ui.widget.actors;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.graphics.GL20;
|
||||
import com.badlogic.gdx.graphics.g2d.Batch;
|
||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
|
||||
import com.badlogic.gdx.math.Vector2;
|
||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Window;
|
||||
import games.rednblack.editor.view.ui.widget.actors.basic.WhitePixel;
|
||||
import space.earlygrey.shapedrawer.ShapeDrawer;
|
||||
|
||||
public class StaticGrid extends Actor {
|
||||
|
||||
@@ -14,44 +13,40 @@ public class StaticGrid extends Actor {
|
||||
|
||||
private final Vector2 tmp = new Vector2();
|
||||
|
||||
private ShapeRenderer shapeRenderer;
|
||||
private ShapeDrawer shapeDrawer;
|
||||
|
||||
public StaticGrid(Window window) {
|
||||
this.window = window;
|
||||
shapeRenderer = new ShapeRenderer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw (Batch batch, float parentAlpha) {
|
||||
super.draw(batch, parentAlpha);
|
||||
batch.end();
|
||||
if (shapeDrawer == null) {
|
||||
shapeDrawer = new ShapeDrawer(batch, WhitePixel.sharedInstance.textureRegion){
|
||||
/* OPTIONAL: Ensuring a certain smoothness. */
|
||||
@Override
|
||||
protected int estimateSidesRequired(float radiusX, float radiusY) {
|
||||
return 200;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Gdx.gl.glEnable(GL20.GL_BLEND);
|
||||
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
shapeRenderer.setProjectionMatrix(batch.getProjectionMatrix());
|
||||
|
||||
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
|
||||
drawGrid(window.getX(), window.getY(), window.getWidth(), window.getHeight(), parentAlpha);
|
||||
shapeRenderer.end();
|
||||
|
||||
Gdx.gl.glDisable(GL20.GL_BLEND);
|
||||
batch.begin();
|
||||
}
|
||||
|
||||
private void drawGrid (float x, float y, float windowWidth, float windowHeight, float parentAlpha) {
|
||||
tmp.set(x + windowWidth / 2, y + windowHeight / 2);
|
||||
tmp.set(windowWidth / 2, windowHeight / 2);
|
||||
|
||||
int lineCount = (int)(windowWidth / 28f);
|
||||
|
||||
for (int i = -lineCount / 2 - 1; i < lineCount / 2 + 1; i++) {
|
||||
float spacing = windowWidth / lineCount;
|
||||
shapeRenderer.setColor(0.2f, 0.2f, 0.2f, parentAlpha);
|
||||
shapeDrawer.setColor(0.2f, 0.2f, 0.2f, parentAlpha);
|
||||
|
||||
float posX = tmp.x - i * spacing - tmp.x % spacing;
|
||||
float posY = tmp.y + i * spacing - tmp.y % spacing;
|
||||
shapeRenderer.rectLine(posX, tmp.y - windowHeight/2f, posX, tmp.y + windowHeight/2f, 2f); // vertical
|
||||
shapeRenderer.rectLine(tmp.x - windowWidth/2f, posY, tmp.x + windowWidth/2f, posY, 2f); // horizontal
|
||||
shapeDrawer.line(posX, tmp.y - windowHeight/2f, posX, tmp.y + windowHeight/2f, 2f); // vertical
|
||||
shapeDrawer.line(tmp.x - windowWidth/2f, posY, tmp.x + windowWidth/2f, posY, 2f); // horizontal
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,20 +25,21 @@ import com.badlogic.gdx.utils.Array;
|
||||
import games.rednblack.editor.HyperLap2DFacade;
|
||||
import games.rednblack.editor.proxy.ResourceManager;
|
||||
import games.rednblack.editor.view.ui.widget.actors.GridView;
|
||||
import space.earlygrey.shapedrawer.ShapeDrawer;
|
||||
|
||||
/**
|
||||
* Created by azakhary on 6/10/2015.
|
||||
*/
|
||||
public class SandboxBackUI {
|
||||
|
||||
private Array<Actor> actors = new Array<>();
|
||||
|
||||
private Batch batch;
|
||||
private final Array<Actor> actors = new Array<>();
|
||||
private final Batch batch;
|
||||
|
||||
public SandboxBackUI(Batch batch) {
|
||||
this.batch = batch;
|
||||
ShapeDrawer shapeDrawer = new ShapeDrawer(batch, WhitePixel.sharedInstance.textureRegion);
|
||||
|
||||
GridView gridView = new GridView();
|
||||
GridView gridView = new GridView(shapeDrawer);
|
||||
addActor(gridView);
|
||||
}
|
||||
|
||||
@@ -50,7 +51,7 @@ public class SandboxBackUI {
|
||||
ResourceManager resourceManager = HyperLap2DFacade.getInstance().retrieveProxy(ResourceManager.NAME);
|
||||
batch.begin();
|
||||
for (Actor actor : actors) {
|
||||
actor.setScale(1f/resourceManager.getProjectVO().pixelToWorld);
|
||||
actor.setScale(1f / resourceManager.getProjectVO().pixelToWorld);
|
||||
actor.act(delta);
|
||||
actor.draw(batch, 1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user