This commit is contained in:
Anuken
2018-12-26 13:22:31 -05:00
parent 22b7086bea
commit 8879593381
164 changed files with 1151 additions and 1426 deletions
@@ -1,23 +1,23 @@
package io.anuke.mindustry.graphics;
import io.anuke.arc.Core;
import io.anuke.arc.Events;
import io.anuke.arc.collection.Array;
import io.anuke.arc.util.IntSet;
import io.anuke.arc.util.Sort;
import io.anuke.arc.collection.IntSet;
import io.anuke.arc.collection.Sort;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.glutils.FrameBuffer;
import io.anuke.arc.math.Mathf;
import io.anuke.mindustry.content.blocks.Blocks;
import io.anuke.mindustry.game.EventType.TileChangeEvent;
import io.anuke.mindustry.game.EventType.WorldLoadGraphicsEvent;
import io.anuke.mindustry.game.EventType.WorldLoadEvent;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.arc.Core;
import io.anuke.arc.Events;
import io.anuke.arc.Graphics;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.Surface;
import io.anuke.arc.math.Mathf;
import static io.anuke.mindustry.Vars.*;
import static io.anuke.arc.core.Core.camera;
import static io.anuke.arc.Core.camera;
import static io.anuke.mindustry.Vars.tilesize;
import static io.anuke.mindustry.Vars.world;
public class BlockRenderer{
private final static int initialRequests = 32 * 32;
@@ -31,7 +31,7 @@ public class BlockRenderer{
private Layer lastLayer;
private int requestidx = 0;
private int iterateidx = 0;
private Surface shadows = Graphics.createSurface().setSize(2, 2);
private FrameBuffer shadows = new FrameBuffer(1, 1);
public BlockRenderer(){
floorRenderer = new FloorRenderer();
@@ -40,30 +40,28 @@ public class BlockRenderer{
requests.set(i, new BlockRequest());
}
Events.on(WorldLoadGraphicsEvent.class, event -> {
Events.on(WorldLoadEvent.class, event -> {
lastCamY = lastCamX = -99; //invalidate camera position so blocks get updated
});
Events.on(TileChangeEvent.class, event -> {
threads.runGraphics(() -> {
int avgx = Mathf.scl(camera.position.x, tilesize);
int avgy = Mathf.scl(camera.position.y, tilesize);
int rangex = (int) (camera.width / tilesize / 2) + 2;
int rangey = (int) (camera.height / tilesize / 2) + 2;
int avgx = (int)(camera.position.x / tilesize);
int avgy = (int)(camera.position. y/ tilesize);
int rangex = (int) (camera.width / tilesize / 2) + 2;
int rangey = (int) (camera.height / tilesize / 2) + 2;
if(Math.abs(avgx - event.tile.x) <= rangex && Math.abs(avgy - event.tile.y) <= rangey){
lastCamY = lastCamX = -99; //invalidate camera position so blocks get updated
}
});
if(Math.abs(avgx - event.tile.x) <= rangex && Math.abs(avgy - event.tile.y) <= rangey){
lastCamY = lastCamX = -99; //invalidate camera position so blocks get updated
}
});
}
public void drawShadows(){
Draw.color(0, 0, 0, 0.15f);
Draw.rect(shadows.texture(),
Core.camera.position.x - Core.camera.position.x % tilesize,
Core.camera.position.y - Core.camera.position.y % tilesize,
shadows.width(), -shadows.height());
Draw.rect().tex(shadows.getTexture()).center(
camera.position.x - camera.position.x % tilesize,
camera.position.y - camera.position.y % tilesize,
shadows.getWidth(), -shadows.getHeight());
Draw.color();
}
@@ -76,8 +74,8 @@ public class BlockRenderer{
iterateidx = 0;
lastLayer = null;
int avgx = Mathf.scl(camera.position.x, tilesize);
int avgy = Mathf.scl(camera.position.y, tilesize);
int avgx = (int)(camera.position.x / tilesize);
int avgy = (int)(camera.position.y / tilesize);
int rangex = (int) (camera.width / tilesize / 2) + 2;
int rangey = (int) (camera.height / tilesize / 2) + 2;
@@ -91,12 +89,16 @@ public class BlockRenderer{
teamChecks.clear();
requestidx = 0;
Graphics.end();
if(shadows.width() != shadowW || shadows.height() != shadowH){
shadows.setSize(shadowW, shadowH);
Draw.flush();
Core.graphics.batch().getProjection()
.setOrtho(Mathf.round(camera.position.x, tilesize)-shadowW/2f, Mathf.round(camera.position.y, tilesize)-shadowH/2f,
shadowW, shadowH);
if(shadows.getWidth() != shadowW || shadows.getHeight() != shadowH){
shadows.resize(shadowW, shadowH);
}
Core.batch.getProjectionMatrix().setToOrtho2D(Mathf.round(Core.camera.position.x, tilesize)-shadowW/2f, Mathf.round(Core.camera.position.y, tilesize)-shadowH/2f, shadowW, shadowH);
Graphics.surface(shadows);
shadows.begin();
int minx = Math.max(avgx - rangex - expandr, 0);
int miny = Math.max(avgy - rangey - expandr, 0);
@@ -136,10 +138,10 @@ public class BlockRenderer{
}
}
Graphics.surface();
Graphics.end();
Core.batch.setProjectionMatrix(camera.combined);
Graphics.begin();
shadows.end();
Draw.flush();
Draw.projection(camera.projection());
Sort.instance().sort(requests.items, 0, requestidx);
@@ -1,57 +1,13 @@
package io.anuke.mindustry.graphics;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.Core;
import io.anuke.arc.Graphics;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.Shader;
import static io.anuke.mindustry.Vars.renderer;
public enum CacheLayer{
water{
@Override
public void begin(){
beginShader();
}
@Override
public void end(){
endShader(Shaders.water);
}
},
lava{
@Override
public void begin(){
beginShader();
}
@Override
public void end(){
endShader(Shaders.lava);
}
},
oil{
@Override
public void begin(){
beginShader();
}
@Override
public void end(){
endShader(Shaders.oil);
}
},
space{
@Override
public void begin(){
beginShader();
}
@Override
public void end(){
endShader(Shaders.space);
}
},
normal;
@@ -64,25 +20,9 @@ public enum CacheLayer{
}
protected void beginShader(){
//renderer.getBlocks().endFloor();
renderer.effectSurface.getBuffer().begin();
Graphics.clear(Color.CLEAR);
//renderer.getBlocks().beginFloor();
}
public void endShader(Shader shader){
renderer.blocks.endFloor();
//renderer.effectSurface.getBuffer().end();
renderer.pixelSurface.getBuffer().begin();
Graphics.shader(shader);
Graphics.begin();
Draw.rect(renderer.effectSurface.texture(), Core.camera.position.x, Core.camera.position.y,
Core.camera.width , -Core.camera.height );
Graphics.end();
Graphics.shader();
renderer.blocks.beginFloor();
public void endShader(){
}
}
@@ -1,26 +1,23 @@
package io.anuke.mindustry.graphics;
import io.anuke.arc.Core;
import io.anuke.arc.Events;
import io.anuke.arc.Graphics;
import io.anuke.arc.collection.IntArray;
import io.anuke.arc.collection.IntSet;
import io.anuke.arc.collection.IntSet.IntSetIterator;
import io.anuke.arc.collection.ObjectSet;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.graphics.GL20;
import io.anuke.arc.graphics.OrthographicCamera;
import io.anuke.arc.util.IntArray;
import io.anuke.arc.util.IntSet;
import io.anuke.arc.util.IntSet.IntSetIterator;
import io.anuke.arc.collection.ObjectSet;
import io.anuke.mindustry.game.EventType.WorldLoadGraphicsEvent;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.g2d.Fill;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.util.Log;
import io.anuke.arc.util.Structs;
import io.anuke.arc.util.Time;
import io.anuke.mindustry.maps.Sector;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.Floor;
import io.anuke.arc.Events;
import io.anuke.arc.Graphics;
import io.anuke.arc.util.Time;
import io.anuke.arc.graphics.CacheBatch;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.Fill;
import io.anuke.arc.util.Log;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.util.Structs;
import java.util.Arrays;
@@ -1,23 +1,23 @@
package io.anuke.mindustry.graphics;
import io.anuke.arc.Core;
import io.anuke.arc.Events;
import io.anuke.arc.Graphics;
import io.anuke.arc.collection.Array;
import io.anuke.arc.entities.EntityDraw;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.graphics.GL20;
import io.anuke.arc.graphics.Pixmap.Format;
import io.anuke.arc.graphics.Texture;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.g2d.Fill;
import io.anuke.arc.graphics.g2d.TextureRegion;
import io.anuke.arc.graphics.glutils.FrameBuffer;
import io.anuke.arc.collection.Array;
import io.anuke.arc.util.Disposable;
import io.anuke.mindustry.entities.Unit;
import io.anuke.mindustry.game.EventType.TileChangeEvent;
import io.anuke.mindustry.game.EventType.WorldLoadGraphicsEvent;
import io.anuke.mindustry.game.EventType.WorldLoadEvent;
import io.anuke.mindustry.world.Tile;
import io.anuke.arc.Events;
import io.anuke.arc.Graphics;
import io.anuke.arc.entities.EntityDraw;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.Fill;
import java.nio.ByteBuffer;
@@ -33,7 +33,7 @@ public class FogRenderer implements Disposable{
private boolean dirty;
public FogRenderer(){
Events.on(WorldLoadGraphicsEvent.class, event -> {
Events.on(WorldLoadEvent.class, event -> {
dispose();
shadowPadding = -1;
@@ -43,7 +43,7 @@ public class FogRenderer implements Disposable{
//clear buffer to black
buffer.begin();
Graphics.clear(0, 0, 0, 1f);
Core.graphics.clear(0, 0, 0, 1f);
buffer.end();
for(int x = 0; x < world.width(); x++){
@@ -59,11 +59,11 @@ public class FogRenderer implements Disposable{
dirty = true;
});
Events.on(TileChangeEvent.class, event -> threads.runGraphics(() -> {
Events.on(TileChangeEvent.class, event -> {
if(event.tile.getTeam() == players[0].getTeam() && event.tile.block().synthetic() && event.tile.block().viewRange > 0){
changeQueue.add(event.tile);
}
}));
});
}
public void writeFog(){
@@ -146,11 +146,11 @@ public class FogRenderer implements Disposable{
Graphics.endClip();
region.setTexture(buffer.getColorBufferTexture());
region.setTexture(buffer.getTexture());
region.setRegion(u, v2, u2, v);
Core.batch.setProjectionMatrix(Core.camera.combined);
Graphics.shader(Shaders.fog);
Draw.shader(Shaders.fog);
renderer.pixelSurface.getBuffer().begin();
Graphics.begin();
@@ -158,7 +158,7 @@ public class FogRenderer implements Disposable{
Graphics.end();
renderer.pixelSurface.getBuffer().end();
Graphics.shader();
Draw.shader();
Graphics.setScreen();
Core.batch.draw(renderer.pixelSurface.texture(), 0, Core.graphics.getHeight(), Core.graphics.getWidth(), -Core.graphics.getHeight());
@@ -166,7 +166,7 @@ public class FogRenderer implements Disposable{
}
public Texture getTexture(){
return buffer.getColorBufferTexture();
return buffer.getTexture();
}
@Override
@@ -1,28 +1,16 @@
package io.anuke.mindustry.graphics;
public enum Layer{
/**
* Base block layer.
*/
/**Base block layer.*/
block,
/**
* for placement
*/
/**for placement*/
placement,
/**
* First overlay. Stuff like conveyor items.
*/
/**First overlay. Stuff like conveyor items.*/
overlay,
/**
* "High" blocks, like turrets.
*/
/**"High" blocks, like turrets.*/
turret,
/**
* Power lasers.
*/
/**Power lasers.*/
power,
/**
* Extra lasers, like healing turrets.
*/
/**Extra lasers, like healing turrets.*/
laser
}
@@ -1,40 +1,39 @@
package io.anuke.mindustry.graphics;
import io.anuke.arc.Core;
import io.anuke.arc.Events;
import io.anuke.arc.collection.Array;
import io.anuke.arc.graphics.Pixmap;
import io.anuke.arc.graphics.Pixmap.Format;
import io.anuke.arc.graphics.Pixmaps;
import io.anuke.arc.graphics.Texture;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.g2d.ScissorStack;
import io.anuke.arc.graphics.g2d.TextureRegion;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.math.geom.Rectangle;
import io.anuke.arc.collection.Array;
import io.anuke.arc.util.Disposable;
import io.anuke.mindustry.entities.Unit;
import io.anuke.mindustry.entities.Units;
import io.anuke.mindustry.game.EventType.TileChangeEvent;
import io.anuke.mindustry.game.EventType.WorldLoadGraphicsEvent;
import io.anuke.mindustry.game.EventType.WorldLoadEvent;
import io.anuke.mindustry.world.ColorMapper;
import io.anuke.mindustry.world.Tile;
import io.anuke.arc.Events;
import io.anuke.arc.Graphics;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.Pixmaps;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.util.ThreadArray;
import static io.anuke.mindustry.Vars.tilesize;
import static io.anuke.mindustry.Vars.world;
public class MinimapRenderer implements Disposable{
private static final int baseSize = 16;
private final Array<Unit> units = new ThreadArray<>();
private final Array<Unit> units = new Array<>();
private Pixmap pixmap;
private Texture texture;
private TextureRegion region;
private Rectangle rect = new Rectangle();
private Rectangle rect = new Rectangle(), scissor = new Rectangle();
private int zoom = 4;
public MinimapRenderer(){
Events.on(WorldLoadGraphicsEvent.class, event -> {
Events.on(WorldLoadEvent.class, event -> {
reset();
updateAll();
});
@@ -47,7 +46,7 @@ public class MinimapRenderer implements Disposable{
return texture;
}
public void zoomBy(int amount){
public void zoomBy(float amount){
zoom += amount;
zoom = Mathf.clamp(zoom, 1, Math.min(world.width(), world.height()) / baseSize / 2);
}
@@ -73,18 +72,19 @@ public class MinimapRenderer implements Disposable{
dx = Mathf.clamp(dx, sz, world.width() - sz);
dy = Mathf.clamp(dy, sz, world.height() - sz);
if(!ScissorStack.pushScissors(scissor.set(x, y, w, h))){
return;
}
rect.set((dx - sz) * tilesize, (dy - sz) * tilesize, sz * 2 * tilesize, sz * 2 * tilesize);
Graphics.beginClip(x, y, w, h);
for(Unit unit : units){
float rx = (unit.x - rect.x) / rect.width * w, ry = (unit.y - rect.y) / rect.width * h;
Draw.color(unit.getTeam().color);
Draw.crect(Draw.getBlankRegion(), x + rx, y + ry, w / (sz * 2), h / (sz * 2));
Draw.rect().tex(Core.atlas.white()).set(x + rx, y + ry, w / (sz * 2), h / (sz * 2));
}
Draw.color();
Graphics.endClip();
}
public TextureRegion getRegion(){
@@ -98,7 +98,7 @@ public class MinimapRenderer implements Disposable{
float invTexWidth = 1f / texture.getWidth();
float invTexHeight = 1f / texture.getHeight();
float x = dx - sz, y = world.height() - dy - sz, width = sz * 2, height = sz * 2;
region.setRegion(x * invTexWidth, y * invTexHeight, (x + width) * invTexWidth, (y + height) * invTexHeight);
region.set(x * invTexWidth, y * invTexHeight, (x + width) * invTexWidth, (y + height) * invTexHeight);
return region;
}
@@ -1,27 +1,19 @@
package io.anuke.mindustry.graphics;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.math.MathUtils;
import io.anuke.arc.math.geom.Rectangle;
import io.anuke.arc.math.Vector2;
import io.anuke.arc.collection.Array;
import io.anuke.mindustry.content.blocks.Blocks;
import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.input.InputHandler;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.meta.BlockBar;
import io.anuke.arc.Core;
import io.anuke.arc.Graphics;
import io.anuke.arc.Settings;
import io.anuke.arc.util.Time;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.Fill;
import io.anuke.arc.graphics.g2d.Lines;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.math.geom.Rectangle;
import io.anuke.arc.math.geom.Vector2;
import io.anuke.arc.util.Time;
import io.anuke.arc.util.Tmp;
import io.anuke.mindustry.content.blocks.Blocks;
import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.input.InputHandler;
import io.anuke.mindustry.world.Tile;
import static io.anuke.mindustry.Vars.*;
@@ -41,11 +33,12 @@ public class OverlayRenderer{
if(!input.isDrawing() || player.isDead()) continue;
Shaders.outline.color.set(Palette.accent);
Graphics.beginShaders(Shaders.outline);
//TODO draw outlined version
//Graphics.beginShaders(Shaders.outline);
input.drawOutlined();
Graphics.endShaders();
//Graphics.endShaders();
}
}
@@ -58,8 +51,7 @@ public class OverlayRenderer{
Tmp.v1.set(player.x, player.y).sub(Core.camera.position.x, Core.camera.position.y).setLength(indicatorLength);
Draw.color(player.getTeam().color);
Lines.stroke(2f);
Lines.stroke(2f, player.getTeam().color);
Lines.lineAngle(Core.camera.position.x + Tmp.v1.x, Core.camera.position.y + Tmp.v1.y, Tmp.v1.angle(), 4f);
Draw.reset();
}
@@ -107,76 +99,7 @@ public class OverlayRenderer{
if(tile != null && tile.block() != Blocks.air && tile.target().getTeam() == players[0].getTeam()){
Tile target = tile.target();
if(showBlockDebug && target.entity != null){
Draw.color(Color.RED);
Lines.crect(target.drawx(), target.drawy(), target.block().size * tilesize, target.block().size * tilesize);
Vector2 v = new Vector2();
Draw.tcolor(Color.YELLOW);
Draw.tscl(0.25f);
Array<Object> arr = target.block().getDebugInfo(target);
StringBuilder result = new StringBuilder();
for(int i = 0; i < arr.size / 2; i++){
result.append(arr.get(i * 2));
result.append(": ");
result.append(arr.get(i * 2 + 1));
result.append("\n");
}
Draw.textc(result.toString(), target.drawx(), target.drawy(), v);
Draw.color(0f, 0f, 0f, 0.5f);
Fill.rect(target.drawx(), target.drawy(), v.x, v.y);
Draw.textc(result.toString(), target.drawx(), target.drawy(), v);
Draw.tscl(1f);
Draw.reset();
}
Block block = target.block();
TileEntity entity = target.entity;
if(entity != null){
int[] values = {0, 0};
boolean[] doDraw = {false};
Runnable drawbars = () -> {
for(BlockBar bar : block.bars.list()){
float offset = Mathf.sign(bar.top) * (block.size / 2f * tilesize + 2f + (bar.top ? values[0] : values[1]));
float value = bar.value.get(target);
if(MathUtils.isEqual(value, -1f)) continue;
if(doDraw[0]){
drawBar(bar.type.color, target.drawx(), target.drawy() + offset, value);
}
if(bar.top)
values[0]++;
else
values[1]++;
}
};
drawbars.run();
if(values[0] > 0){
drawEncloser(target.drawx(), target.drawy() + block.size * tilesize / 2f + 2f, values[0]);
}
if(values[1] > 0){
drawEncloser(target.drawx(), target.drawy() - block.size * tilesize / 2f - 2f - values[1], values[1]);
}
doDraw[0] = true;
values[0] = 0;
values[1] = 1;
drawbars.run();
}
target.block().drawSelect(target);
}
}
@@ -198,32 +121,4 @@ public class OverlayRenderer{
}
}
}
void drawBar(Color color, float x, float y, float finion){
if(finion > 0.9f) finion = 1f; //fixes precision errors
finion = Mathf.clamp(finion);
if(finion > 0.001f) finion = Mathf.clamp(finion, 0.24f, 1f);
float len = 3;
float w = (int) (len * 2 * finion);
Draw.color(Color.BLACK);
Fill.crect(x - len, y, len * 2f, 1);
if(finion > 0){
Draw.color(color);
Fill.crect(x - len, y, Math.max(1, w), 1);
}
Draw.color();
}
void drawEncloser(float x, float y, float height){
float len = 4;
Draw.color(Palette.bar);
Fill.crect(x - len, y - 1, len * 2f, height + 2f);
Draw.color();
}
}
@@ -3,11 +3,9 @@ package io.anuke.mindustry.graphics;
import io.anuke.arc.Core;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.graphics.g2d.TextureRegion;
import io.anuke.arc.Core;
import io.anuke.arc.util.Time;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.Shader;
import io.anuke.arc.graphics.glutils.Shader;
import io.anuke.arc.scene.ui.layout.Unit;
import io.anuke.arc.util.Time;
import static io.anuke.mindustry.Vars.tilesize;
import static io.anuke.mindustry.Vars.world;
@@ -54,11 +52,11 @@ public class Shaders{
public void apply(){
time = time % 158;
shader.setUniformf("u_resolution", Core.graphics.getWidth(), Core.graphics.getHeight());
shader.setUniformi("u_time", (int)(time += Core.graphics.getDeltaTime() * 60f));
shader.setUniformf("u_uv", Draw.getBlankRegion().getU(), Draw.getBlankRegion().getV());
shader.setUniformf("u_scl", Unit.dp.scl(1f));
shader.setUniformf("u_uv2", Draw.getBlankRegion().getU2(), Draw.getBlankRegion().getV2());
setUniformf("u_resolution", Core.graphics.getWidth(), Core.graphics.getHeight());
setUniformi("u_time", (int)(time += Core.graphics.getDeltaTime() * 60f));
setUniformf("u_uv", Core.atlas.white().getU(), Core.atlas.white().getV());
setUniformf("u_scl", Unit.dp.scl(1f));
setUniformf("u_uv2", Core.atlas.white().getU2(), Core.atlas.white().getV2());
}
}
@@ -78,7 +76,7 @@ public class Shaders{
@Override
public void apply(){
super.apply();
shader.setUniformf("u_color", color);
setUniformf("u_color", color);
}
}
@@ -91,7 +89,7 @@ public class Shaders{
@Override
public void apply(){
super.apply();
shader.setUniformf("u_center", world.width() * tilesize / 2f, world.height() * tilesize / 2f);
setUniformf("u_center", world.width() * tilesize / 2f, world.height() * tilesize / 2f);
}
}
@@ -106,12 +104,12 @@ public class Shaders{
@Override
public void apply(){
shader.setUniformf("u_time", time);
shader.setUniformf("u_color", color);
shader.setUniformf("u_progress", progress);
shader.setUniformf("u_uv", region.getU(), region.getV());
shader.setUniformf("u_uv2", region.getU2(), region.getV2());
shader.setUniformf("u_texsize", region.getTexture().getWidth(), region.getTexture().getHeight());
setUniformf("u_time", time);
setUniformf("u_color", color);
setUniformf("u_progress", progress);
setUniformf("u_uv", region.getU(), region.getV());
setUniformf("u_uv2", region.getU2(), region.getV2());
setUniformf("u_texsize", region.getTexture().getWidth(), region.getTexture().getHeight());
}
}
@@ -124,8 +122,8 @@ public class Shaders{
@Override
public void apply(){
shader.setUniformf("u_color", color);
shader.setUniformf("u_texsize", region.getTexture().getWidth(), region.getTexture().getHeight());
setUniformf("u_color", color);
setUniformf("u_texsize", region.getTexture().getWidth(), region.getTexture().getHeight());
}
}
@@ -139,12 +137,12 @@ public class Shaders{
@Override
public void apply(){
shader.setUniformf("u_progress", progress);
shader.setUniformf("u_color", color);
shader.setUniformf("u_uv", region.getU(), region.getV());
shader.setUniformf("u_uv2", region.getU2(), region.getV2());
shader.setUniformf("u_time", Time.time());
shader.setUniformf("u_texsize", region.getTexture().getWidth(), region.getTexture().getHeight());
setUniformf("u_progress", progress);
setUniformf("u_color", color);
setUniformf("u_uv", region.getU(), region.getV());
setUniformf("u_uv2", region.getU2(), region.getV2());
setUniformf("u_time", Time.time());
setUniformf("u_texsize", region.getTexture().getWidth(), region.getTexture().getHeight());
}
}
@@ -157,10 +155,10 @@ public class Shaders{
@Override
public void apply(){
shader.setUniformf("u_color", color);
shader.setUniformf("u_uv", region.getU(), region.getV());
shader.setUniformf("u_uv2", region.getU2(), region.getV2());
shader.setUniformf("u_texsize", region.getTexture().getWidth(), region.getTexture().getHeight());
setUniformf("u_color", color);
setUniformf("u_uv", region.getU(), region.getV());
setUniformf("u_uv2", region.getU2(), region.getV2());
setUniformf("u_texsize", region.getTexture().getWidth(), region.getTexture().getHeight());
}
}
@@ -172,12 +170,12 @@ public class Shaders{
@Override
public void apply(){
shader.setUniformf("u_dp", Unit.dp.scl(1f));
shader.setUniformf("u_time", Time.time() / Unit.dp.scl(1f));
shader.setUniformf("u_offset",
setUniformf("u_dp", Unit.dp.scl(1f));
setUniformf("u_time", Time.time() / Unit.dp.scl(1f));
setUniformf("u_offset",
Core.camera.position.x - Core.camera.width / 2 ,
Core.camera.position.y - Core.camera.height / 2 );
shader.setUniformf("u_texsize", Core.camera.width ,
setUniformf("u_texsize", Core.camera.width ,
Core.camera.height );
}
}
@@ -190,12 +188,12 @@ public class Shaders{
@Override
public void apply(){
shader.setUniformf("camerapos",
setUniformf("camerapos",
Core.camera.position.x - Core.camera.width / 2 ,
Core.camera.position.y - Core.camera.height / 2 );
shader.setUniformf("screensize", Core.camera.width,
setUniformf("screensize", Core.camera.width,
Core.camera.height );
shader.setUniformf("time", Time.time());
setUniformf("time", Time.time());
}
}
}
@@ -1,16 +1,16 @@
package io.anuke.mindustry.graphics;
import io.anuke.arc.collection.FloatArray;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.math.Vector2;
import io.anuke.arc.util.FloatArray;
import io.anuke.arc.util.Time;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.Fill;
import io.anuke.arc.graphics.g2d.Fill;
import io.anuke.arc.graphics.g2d.Lines;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.util.Time;
/**
* Class that renders a colored trail.
* TODO remove / recode
*/
public class Trail{
private final static float maxJump = 15f;