Added Graphics.begin/endClip()

This commit is contained in:
Anuken
2018-11-02 09:19:51 -04:00
parent 8bf68aa020
commit 9f77c0c9b7
5 changed files with 7 additions and 35 deletions

View File

@@ -25,7 +25,7 @@ allprojects {
appName = 'Mindustry' appName = 'Mindustry'
gdxVersion = '1.9.8' gdxVersion = '1.9.8'
roboVMVersion = '2.3.0' roboVMVersion = '2.3.0'
uCoreVersion = 'dec41336067c013f04f0e17db3b06e24d3c11f6a' uCoreVersion = '6f251d1f32bb7a8ff5dfaa28525af57536ad549f'
getVersionString = { getVersionString = {
String buildVersion = getBuildVersion() String buildVersion = getBuildVersion()

View File

@@ -9,7 +9,6 @@ import com.badlogic.gdx.math.Bresenham2;
import com.badlogic.gdx.math.GridPoint2; import com.badlogic.gdx.math.GridPoint2;
import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.scenes.scene2d.utils.ScissorStack;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import io.anuke.mindustry.editor.DrawOperation.TileOperation; import io.anuke.mindustry.editor.DrawOperation.TileOperation;
import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.graphics.Palette;
@@ -270,8 +269,7 @@ public class MapView extends Element implements GestureListener{
image.setImageSize(editor.getMap().width(), editor.getMap().height()); image.setImageSize(editor.getMap().width(), editor.getMap().height());
batch.flush(); Graphics.beginClip(x, y, width, height);
boolean pop = ScissorStack.pushScissors(rect.set(x, y, width, height));
Draw.color(Color.LIGHT_GRAY); Draw.color(Color.LIGHT_GRAY);
Lines.stroke(-2f); Lines.stroke(-2f);
@@ -327,9 +325,7 @@ public class MapView extends Element implements GestureListener{
} }
} }
batch.flush(); Graphics.endClip();
if(pop) ScissorStack.popScissors();
Draw.color(Palette.accent); Draw.color(Palette.accent);
Lines.stroke(Unit.dp.scl(3f)); Lines.stroke(Unit.dp.scl(3f));

View File

@@ -20,7 +20,6 @@ import io.anuke.ucore.core.Graphics;
import io.anuke.ucore.entities.EntityDraw; import io.anuke.ucore.entities.EntityDraw;
import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.graphics.Fill; import io.anuke.ucore.graphics.Fill;
import io.anuke.ucore.scene.utils.ScissorStack;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
@@ -140,9 +139,7 @@ public class FogRenderer implements Disposable{
buffer.begin(); buffer.begin();
boolean pop = ScissorStack.pushScissors(rect.set((padding-shadowPadding), (padding-shadowPadding), Graphics.beginClip((padding-shadowPadding), (padding-shadowPadding), (world.width() + shadowPadding*2), (world.height() + shadowPadding*2));
(world.width() + shadowPadding*2) ,
(world.height() + shadowPadding*2)));
Graphics.begin(); Graphics.begin();
EntityDraw.setClip(false); EntityDraw.setClip(false);
@@ -172,7 +169,7 @@ public class FogRenderer implements Disposable{
Graphics.end(); Graphics.end();
buffer.end(); buffer.end();
if(pop) ScissorStack.popScissors(); Graphics.endClip();
region.setTexture(buffer.getColorBufferTexture()); region.setTexture(buffer.getColorBufferTexture());
region.setRegion(u, v2, u2, v); region.setRegion(u, v2, u2, v);

View File

@@ -1,7 +1,6 @@
package io.anuke.mindustry.graphics; package io.anuke.mindustry.graphics;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Pixmap.Format; import com.badlogic.gdx.graphics.Pixmap.Format;
import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture;
@@ -20,7 +19,6 @@ import io.anuke.ucore.core.Events;
import io.anuke.ucore.core.Graphics; import io.anuke.ucore.core.Graphics;
import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.graphics.Pixmaps; import io.anuke.ucore.graphics.Pixmaps;
import io.anuke.ucore.scene.utils.ScissorStack;
import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Mathf;
import io.anuke.ucore.util.ThreadArray; import io.anuke.ucore.util.ThreadArray;
@@ -34,8 +32,6 @@ public class MinimapRenderer implements Disposable{
private Texture texture; private Texture texture;
private TextureRegion region; private TextureRegion region;
private Rectangle rect = new Rectangle(); private Rectangle rect = new Rectangle();
private Rectangle clipRect = new Rectangle();
private Color tmpColor = new Color();
private int zoom = 4; private int zoom = 4;
public MinimapRenderer(){ public MinimapRenderer(){
@@ -80,9 +76,7 @@ public class MinimapRenderer implements Disposable{
synchronized(units){ synchronized(units){
rect.set((dx - sz) * tilesize, (dy - sz) * tilesize, sz * 2 * tilesize, sz * 2 * tilesize); rect.set((dx - sz) * tilesize, (dy - sz) * tilesize, sz * 2 * tilesize, sz * 2 * tilesize);
Graphics.flush(); Graphics.beginClip(x, y, w, h);
boolean clip = ScissorStack.pushScissors(clipRect.set(x, y, w, h));
for(Unit unit : units){ for(Unit unit : units){
float rx = (unit.x - rect.x) / rect.width * w, ry = (unit.y - rect.y) / rect.width * h; float rx = (unit.x - rect.x) / rect.width * w, ry = (unit.y - rect.y) / rect.width * h;
@@ -92,8 +86,7 @@ public class MinimapRenderer implements Disposable{
Draw.color(); Draw.color();
Graphics.flush(); Graphics.endClip();
if(clip) ScissorStack.popScissors();
} }
} }

View File

@@ -1,26 +1,22 @@
package io.anuke.mindustry.ui.dialogs; package io.anuke.mindustry.ui.dialogs;
import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector2;
import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.maps.Sector; import io.anuke.mindustry.maps.Sector;
import io.anuke.ucore.core.Graphics; import io.anuke.ucore.core.Graphics;
import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.graphics.Fill; import io.anuke.ucore.graphics.Fill;
import io.anuke.ucore.graphics.Lines;
import io.anuke.ucore.scene.Element; import io.anuke.ucore.scene.Element;
import io.anuke.ucore.scene.event.InputEvent; import io.anuke.ucore.scene.event.InputEvent;
import io.anuke.ucore.scene.event.InputListener; import io.anuke.ucore.scene.event.InputListener;
import io.anuke.ucore.scene.ui.layout.Unit; import io.anuke.ucore.scene.ui.layout.Unit;
import io.anuke.ucore.scene.utils.Cursors; import io.anuke.ucore.scene.utils.Cursors;
import io.anuke.ucore.scene.utils.ScissorStack;
import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Mathf;
import static io.anuke.mindustry.Vars.world; import static io.anuke.mindustry.Vars.world;
public class SectorsDialog extends FloatingDialog{ public class SectorsDialog extends FloatingDialog{
private Rectangle clip = new Rectangle();
private Sector selected; private Sector selected;
public SectorsDialog(){ public SectorsDialog(){
@@ -121,9 +117,6 @@ public class SectorsDialog extends FloatingDialog{
int shownSectorsX = (int)(width/padSectorSize); int shownSectorsX = (int)(width/padSectorSize);
int shownSectorsY = (int)(height/padSectorSize); int shownSectorsY = (int)(height/padSectorSize);
clip.setSize(width, height).setCenter(x + width/2f, y + height/2f);
Graphics.flush();
boolean clipped = ScissorStack.pushScissors(clip);
int offsetX = (int)(panX / padSectorSize); int offsetX = (int)(panX / padSectorSize);
int offsetY = (int)(panY / padSectorSize); int offsetY = (int)(panY / padSectorSize);
@@ -169,14 +162,7 @@ public class SectorsDialog extends FloatingDialog{
} }
} }
Draw.color(Color.GRAY);
Lines.stroke(Unit.dp.scl(4f));
//Lines.crect(x + width/2f, y + height/2f, width, height);
Draw.reset(); Draw.reset();
Graphics.flush();
if(clipped) ScissorStack.popScissors();
clicked = false; clicked = false;
} }