protected void renderWorldEntities() { Values<Entity> values = worldEntities.values(); while (values.hasNext()) { Entity entity = values.next(); TextureComponent texture = entity.getComponent(TextureComponent.class); TransformComponent transform = entity.getComponent(TransformComponent.class); if (isInFustrum(texture, transform)) { sortedEntities.add(entity); } } values = spineAnimatedEntities.values(); while (values.hasNext()) { sortedEntities.add(values.next()); } sortedEntities.sort(sorter); batch.setProjectionMatrix(camera.combined); for (Entity entity : sortedEntities) { if (entity.hasComponent(TextureComponent.class)) { TextureComponent texture = entity.getComponent(TextureComponent.class); TransformComponent transform = entity.getComponent(TransformComponent.class); float scale = transform.scale * Env.pixelsToMetres; float width = texture.region.getRegionWidth(); float height = texture.region.getRegionHeight(); float originX = width * 0.5f; float originY = height * 0.5f; batch.draw( texture.region, transform.position.x - originX, transform.position.y - originY, originX, originY, width, height, scale, scale, MathUtils.radiansToDegrees * transform.angle); } else { SpineComponent animation = entity.getComponent(SpineComponent.class); skeletonRenderer.draw(batch, animation.skeleton); } } sortedEntities.clear(); }