Create Entities, Rules and Animations buffers

This commit is contained in:
2021-03-22 10:37:15 +01:00
parent 5ac7370d7a
commit b2e57f5e3e
2 changed files with 35 additions and 7 deletions

View File

@@ -11,6 +11,7 @@ import lombok.NonNull;
import org.joml.Vector2fc;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
public abstract class BaseLayer implements Layer, Updatable {
@@ -23,6 +24,8 @@ public abstract class BaseLayer implements Layer, Updatable {
protected final Queue<Animation> animations = new LinkedList<>();
private final List<Animation> animationsToAdd = new LinkedList<>();
public BaseLayer(@NonNull GameMap map) {
this.map = map;
this.stepSize = map.getStepSize();
@@ -30,9 +33,7 @@ public abstract class BaseLayer implements Layer, Updatable {
@Override
public void pushAnimation(Animation animation) {
animation.setStepSize(stepSize.x(), stepSize.y());
animations.add(animation);
animation.onAdd(this);
animationsToAdd.add(animation);
}
@Override
@@ -42,6 +43,16 @@ public abstract class BaseLayer implements Layer, Updatable {
@Override
public void update(float dt) {
if(!animationsToAdd.isEmpty()) {
for(var animation : animationsToAdd) {
animation.setStepSize(stepSize.x(), stepSize.y());
animations.add(animation);
animation.onAdd(this);
}
animationsToAdd.clear();
}
for (var iterator = animations.iterator(); iterator.hasNext(); ) {
var animation = iterator.next();
animation.update(dt);

View File

@@ -32,6 +32,8 @@ public class DefaultObjectLayer extends BaseLayer implements ObjectLayer {
private final List<Rule> rules = new ArrayList<>();
private final List<Entity> entitiesToAdd = new LinkedList<>();
private final List<Rule> rulesToAdd = new LinkedList<>();
private final List<Entity> entitiesToRemove = new LinkedList<>();
private final List<Rule> rulesToRemove = new LinkedList<>();
@@ -48,7 +50,7 @@ public class DefaultObjectLayer extends BaseLayer implements ObjectLayer {
@Override
public void registerRule(Rule rule) {
rules.add(rule);
rulesToAdd.add(rule);
}
@Override
@@ -63,9 +65,7 @@ public class DefaultObjectLayer extends BaseLayer implements ObjectLayer {
@Override
public void addEntity(Entity entity) {
entity.onAdd(this);
entity.setStepSize(stepSize.x(), stepSize.y());
entities.add(entity);
entitiesToAdd.add(entity);
}
@Override
@@ -144,6 +144,23 @@ public class DefaultObjectLayer extends BaseLayer implements ObjectLayer {
}
}
// Insert entities requested to be added
if(!entitiesToAdd.isEmpty()) {
for (var entity : entitiesToAdd) {
entity.onAdd(this);
entity.setStepSize(stepSize.x(), stepSize.y());
entities.add(entity);
}
entitiesToAdd.clear();
}
// Insert rules requested to be added
if(!rulesToAdd.isEmpty()) {
rules.addAll(rulesToAdd);
rulesToAdd.clear();
}
// Remove entities requested to be removed
if (!entitiesToRemove.isEmpty()) {
for (var entity : entitiesToRemove) {