@Override protected void processEntity(Entity entity, float deltaTime) { PositionComponent position = positionMapper.get(entity); OutOfBoundsComponent outOfBounds = outOfBoundsMapper.get(entity); if (position.x > viewport.getWorldWidth() / 2 || position.x < -viewport.getWorldWidth() / 2 || position.y > viewport.getWorldHeight() / 2 || position.y < -viewport.getWorldHeight() / 2) { if (outOfBounds.action == AdequateAction.RESPAWN) { position.x = MathUtils.random(-viewport.getWorldWidth() / 2, viewport.getWorldWidth() / 2); position.y = MathUtils.random(-viewport.getWorldHeight() / 2, viewport.getWorldHeight() / 2); } else if (outOfBounds.action == AdequateAction.ALERT) { lightsManager.ambientLight = 0.1f; } else if (outOfBounds.action == AdequateAction.DISPOSE) { BodyComponent body = bodyMapper.get(entity); if (body != null) bodyGenerator.destroyBody(entity); engine.removeEntity(entity); } } }