/** * Prepare a list of modified entities on this frame. * * @return List<SpriteEntity> */ private List<SpriteEntity> getModifiedEntities() { List<SpriteEntity> returned = new ArrayList<SpriteEntity>(); for (SpriteEntity entity : spriteEntities) { int id = entity.getId(); SpriteEntity backedUp = backupEntities.get(id); if (backedUp == null) { // If this entity hasn't been backed up, it's a new one ==> we // send it returned.add(entity); } else { // If this entity has been backed up, we must check whether it // has changed if (!backedUp.isSame(entity)) { returned.add(entity); } backupEntities.remove(id); } } // Send the entity which has been removed this frame for (SpriteEntity entity : backupEntities.values()) { entity.dying = true; entity.clientSpecific = false; // Send to all clients returned.add(entity); } backupEntities.clear(); return returned; }