Better color computation.

This commit is contained in:
NathanSweet 2014-02-13 12:25:38 +01:00
parent e578531489
commit 89b29177ba
2 changed files with 10 additions and 16 deletions

View File

@ -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();

View File

@ -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;