Add support for z-index parameters in Entity which determines the Entity rendering order
This commit is contained in:
@@ -31,4 +31,8 @@ public interface Entity extends Movable, Renderable, Updatable {
|
||||
void setBlocking(boolean blocking);
|
||||
|
||||
void changeEntitySet(String entitySetUid);
|
||||
|
||||
int getZIndex();
|
||||
|
||||
void setZIndex(int zIndex);
|
||||
}
|
||||
|
||||
@@ -219,6 +219,16 @@ public abstract class EntityDelegate implements Entity {
|
||||
entity.changeEntitySet(entitySetUid);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getZIndex() {
|
||||
return entity.getZIndex();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setZIndex(int zIndex) {
|
||||
entity.setZIndex(zIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(float dt) {
|
||||
entity.update(dt);
|
||||
|
||||
@@ -27,6 +27,10 @@ public class DefaultEntity extends MovableSprite implements Entity {
|
||||
private final Vector2f entityScale = new Vector2f(1, 1);
|
||||
private Vector2fc entitySetSize;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private int zIndex = 0;
|
||||
|
||||
private int animationSpeed = 100;
|
||||
|
||||
@Getter
|
||||
|
||||
@@ -20,6 +20,9 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Queue;
|
||||
|
||||
import static java.lang.Float.compare;
|
||||
import static java.lang.Integer.compare;
|
||||
|
||||
public class DefaultObjectLayer extends BaseLayer implements ObjectLayer {
|
||||
|
||||
@Getter
|
||||
@@ -190,6 +193,7 @@ public class DefaultObjectLayer extends BaseLayer implements ObjectLayer {
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user