示例#1
0
  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();
  }