From 2f0b02ad90706d111c8e7d1d111054e166b5be4c Mon Sep 17 00:00:00 2001 From: gered Date: Sun, 17 Nov 2013 17:49:52 -0500 Subject: [PATCH] fix sorter so it works correctly even when the camera is reassigned --- .../AlphaTestCameraGroupStrategy.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/com/blarg/gdx/graphics/AlphaTestCameraGroupStrategy.java b/src/com/blarg/gdx/graphics/AlphaTestCameraGroupStrategy.java index ff89540..d22e26e 100644 --- a/src/com/blarg/gdx/graphics/AlphaTestCameraGroupStrategy.java +++ b/src/com/blarg/gdx/graphics/AlphaTestCameraGroupStrategy.java @@ -1,7 +1,5 @@ package com.blarg.gdx.graphics; -import java.util.Comparator; - import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Camera; import com.badlogic.gdx.graphics.GL10; @@ -14,6 +12,8 @@ import com.badlogic.gdx.utils.Disposable; import com.badlogic.gdx.utils.ObjectMap; import com.badlogic.gdx.utils.Pool; +import java.util.Comparator; + /** *

* Note:
@@ -91,24 +91,30 @@ public class AlphaTestCameraGroupStrategy implements GroupStrategy, Disposable { private final Comparator cameraSorter; public AlphaTestCameraGroupStrategy (final Camera camera) { - this(camera, new Comparator() { + if (!Gdx.graphics.isGL20Available()) + throw new UnsupportedOperationException("AlphaTestCameraGroupStrategy requires shader support."); + + this.camera = camera; + createDefaultShader(); + + final AlphaTestCameraGroupStrategy that = this; + this.cameraSorter = new Comparator() { @Override public int compare (Decal o1, Decal o2) { - float dist1 = camera.position.dst(o1.getPosition()); - float dist2 = camera.position.dst(o2.getPosition()); + float dist1 = that.camera.position.dst(o1.getPosition()); + float dist2 = that.camera.position.dst(o2.getPosition()); return (int)Math.signum(dist2 - dist1); } - }); + }; } - public AlphaTestCameraGroupStrategy(Camera camera, Comparator sorter) { + public AlphaTestCameraGroupStrategy (Camera camera, Comparator sorter) { if (!Gdx.graphics.isGL20Available()) throw new UnsupportedOperationException("AlphaTestCameraGroupStrategy requires shader support."); this.camera = camera; this.cameraSorter = sorter; createDefaultShader(); - } public void setCamera (Camera camera) {