mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-13 00:37:52 +00:00
Fixes Attributes.transform affecting only 1 vertex.
This commit is contained in:
1 parent
90829a3164
commit
d71384bc33
1 file changed
+14
-10
@@ -120,17 +120,21 @@ public class Attributes
|
||||
throw new IllegalArgumentException("can only transform float position");
|
||||
}
|
||||
int[] data = Arrays.copyOf(quad.getVertexData(), quad.getVertexData().length);
|
||||
float[] pos = new float[] { 0f, 0f, 0f, 1f };
|
||||
for (int i = 0; i < Math.min(4, e.getElementCount()); i++)
|
||||
int shift = data.length / 4;
|
||||
for(int v = 0; v < 4; v++)
|
||||
{
|
||||
pos[i] = Float.intBitsToFloat(data[e.getOffset() / 4 + i]);
|
||||
}
|
||||
Vector4f vec = new Vector4f(pos);
|
||||
transform.getMatrix().transform(vec);
|
||||
vec.get(pos);
|
||||
for (int i = 0; i < Math.min(4, e.getElementCount()); i++)
|
||||
{
|
||||
data[e.getOffset() / 4 + i] = Float.floatToRawIntBits(pos[i]);
|
||||
float[] pos = new float[] { 0f, 0f, 0f, 1f };
|
||||
for (int i = 0; i < Math.min(4, e.getElementCount()); i++)
|
||||
{
|
||||
pos[i] = Float.intBitsToFloat(data[shift * v + e.getOffset() / 4 + i]);
|
||||
}
|
||||
Vector4f vec = new Vector4f(pos);
|
||||
transform.getMatrix().transform(vec);
|
||||
vec.get(pos);
|
||||
for (int i = 0; i < Math.min(4, e.getElementCount()); i++)
|
||||
{
|
||||
data[shift * v + e.getOffset() / 4 + i] = Float.floatToRawIntBits(pos[i]);
|
||||
}
|
||||
}
|
||||
return new BakedQuad(data, quad.getTintIndex(), quad.getFace());
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user