Add support for z-index parameters in Entity which determines the Entity rendering order

This commit is contained in:
2021-03-26 22:53:55 +01:00
parent 345d82d3a1
commit 140cfcacae
4 changed files with 23 additions and 1 deletions

View File

@@ -31,4 +31,8 @@ public interface Entity extends Movable, Renderable, Updatable {
void setBlocking(boolean blocking); void setBlocking(boolean blocking);
void changeEntitySet(String entitySetUid); void changeEntitySet(String entitySetUid);
int getZIndex();
void setZIndex(int zIndex);
} }

View File

@@ -219,6 +219,16 @@ public abstract class EntityDelegate implements Entity {
entity.changeEntitySet(entitySetUid); entity.changeEntitySet(entitySetUid);
} }
@Override
public int getZIndex() {
return entity.getZIndex();
}
@Override
public void setZIndex(int zIndex) {
entity.setZIndex(zIndex);
}
@Override @Override
public void update(float dt) { public void update(float dt) {
entity.update(dt); entity.update(dt);

View File

@@ -27,6 +27,10 @@ public class DefaultEntity extends MovableSprite implements Entity {
private final Vector2f entityScale = new Vector2f(1, 1); private final Vector2f entityScale = new Vector2f(1, 1);
private Vector2fc entitySetSize; private Vector2fc entitySetSize;
@Getter
@Setter
private int zIndex = 0;
private int animationSpeed = 100; private int animationSpeed = 100;
@Getter @Getter

View File

@@ -20,6 +20,9 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Queue; import java.util.Queue;
import static java.lang.Float.compare;
import static java.lang.Integer.compare;
public class DefaultObjectLayer extends BaseLayer implements ObjectLayer { public class DefaultObjectLayer extends BaseLayer implements ObjectLayer {
@Getter @Getter
@@ -190,6 +193,7 @@ public class DefaultObjectLayer extends BaseLayer implements ObjectLayer {
} }
private int compareObjects(Entity a, Entity b) { private int compareObjects(Entity a, Entity b) {
return Float.compare(a.getPosition().y(), b.getPosition().y()); var z = compare(a.getZIndex(), b.getZIndex());
return z == 0 ? compare(a.getPosition().y(), b.getPosition().y()) : z;
} }
} }