Browse Source

Better color computation.

NathanSweet 11 years ago
parent
commit
89b29177ba

+ 6 - 9
spine-libgdx/src/com/esotericsoftware/spine/attachments/MeshAttachment.java

@@ -69,17 +69,14 @@ public class MeshAttachment extends Attachment {
 		Skeleton skeleton = slot.getSkeleton();
 		Color skeletonColor = skeleton.getColor();
 		Color slotColor = slot.getColor();
-		Color regionColor = color;
-		float r = skeletonColor.r * slotColor.r * regionColor.r;
-		float g = skeletonColor.g * slotColor.g * regionColor.g;
-		float b = skeletonColor.b * slotColor.b * regionColor.b;
-		float a = skeletonColor.a * slotColor.a * regionColor.a * 255;
+		Color meshColor = color;
+		float a = skeletonColor.a * slotColor.a * meshColor.a * 255;
 		float multiplier = premultipliedAlpha ? a : 255;
 		float color = NumberUtils.intToFloatColor( //
-			((int)(a) << 24) //
-				| ((int)(b * multiplier) << 16) //
-				| ((int)(g * multiplier) << 8) //
-				| ((int)(r * multiplier)));
+			((int)a << 24) //
+				| ((int)(skeletonColor.b * slotColor.b * meshColor.b * multiplier) << 16) //
+				| ((int)(skeletonColor.g * slotColor.g * meshColor.g * multiplier) << 8) //
+				| (int)(skeletonColor.r * slotColor.r * meshColor.r * multiplier));
 
 		float[] worldVertices = this.worldVertices;
 		FloatArray verticesArray = slot.getAttachmentVertices();

+ 4 - 7
spine-libgdx/src/com/esotericsoftware/spine/attachments/RegionAttachment.java

@@ -149,16 +149,13 @@ public class RegionAttachment extends Attachment {
 		Color skeletonColor = skeleton.getColor();
 		Color slotColor = slot.getColor();
 		Color regionColor = color;
-		float r = skeletonColor.r * slotColor.r * regionColor.r;
-		float g = skeletonColor.g * slotColor.g * regionColor.g;
-		float b = skeletonColor.b * slotColor.b * regionColor.b;
 		float a = skeletonColor.a * slotColor.a * regionColor.a * 255;
 		float multiplier = premultipliedAlpha ? a : 255;
 		float color = NumberUtils.intToFloatColor( //
-			((int)(a) << 24) //
-				| ((int)(b * multiplier) << 16) //
-				| ((int)(g * multiplier) << 8) //
-				| ((int)(r * multiplier)));
+			((int)a << 24) //
+				| ((int)(skeletonColor.b * slotColor.b * regionColor.b * multiplier) << 16) //
+				| ((int)(skeletonColor.g * slotColor.g * regionColor.g * multiplier) << 8) //
+				| (int)(skeletonColor.r * slotColor.r * regionColor.r * multiplier));
 
 		float[] vertices = this.vertices;
 		float[] offset = this.offset;