From 575ec570500e2100a016ea47a1bee355de7dd36a Mon Sep 17 00:00:00 2001 From: Chicken Bones Date: Mon, 12 Aug 2013 13:30:54 +1000 Subject: [PATCH] Added apply methods to some common Vector containers Added ColourMultiplier vertex modifier. --- codechicken/lib/render/CCModel.java | 10 +++++- codechicken/lib/render/ColourMultiplier.java | 34 ++++++++++++++++++++ codechicken/lib/render/UVScale.java | 5 +++ codechicken/lib/render/Vertex5.java | 13 ++++++++ 4 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 codechicken/lib/render/ColourMultiplier.java diff --git a/codechicken/lib/render/CCModel.java b/codechicken/lib/render/CCModel.java index 076f4ed..a65fa96 100644 --- a/codechicken/lib/render/CCModel.java +++ b/codechicken/lib/render/CCModel.java @@ -325,7 +325,7 @@ public class CCModel public CCModel apply(Transformation t) { for(int k = 0; k < verts.length; k++) - t.apply(verts[k].vec); + verts[k].apply(t); if(normals != null) for(int k = 0; k < normals.length; k++) @@ -333,6 +333,14 @@ public class CCModel return this; } + + public CCModel apply(IUVTransformation uvt) + { + for(int k = 0; k < verts.length; k++) + verts[k].apply(uvt); + + return this; + } public void render() { diff --git a/codechicken/lib/render/ColourMultiplier.java b/codechicken/lib/render/ColourMultiplier.java new file mode 100644 index 0000000..d672ff3 --- /dev/null +++ b/codechicken/lib/render/ColourMultiplier.java @@ -0,0 +1,34 @@ +package codechicken.lib.render; + +import net.minecraft.client.renderer.Tessellator; +import codechicken.lib.colour.Colour; +import codechicken.lib.colour.ColourRGBA; +import codechicken.lib.vec.Vector3; + +public class ColourMultiplier implements IVertexModifier +{ + public Colour colour; + + public ColourMultiplier(Colour colour) + { + this.colour = colour; + } + + public ColourMultiplier(int colour) + { + this(new ColourRGBA(colour)); + } + + @Override + public void applyModifiers(CCModel m, Tessellator tess, Vector3 vec, UV uv, Vector3 normal, int i) + { + if(CCRenderState.useModelColours() && m != null && m.colours != null) + CCRenderState.vertexColour(new ColourRGBA(m.colours[i]).multiply(colour).rgba()); + } + + @Override + public boolean needsNormals() + { + return false; + } +} diff --git a/codechicken/lib/render/UVScale.java b/codechicken/lib/render/UVScale.java index 4c948c4..3abdce0 100644 --- a/codechicken/lib/render/UVScale.java +++ b/codechicken/lib/render/UVScale.java @@ -11,6 +11,11 @@ public class UVScale implements IUVTransformation sv = scalev; } + public UVScale(double d) + { + this(d, d); + } + @Override public void transform(UV uv) { diff --git a/codechicken/lib/render/Vertex5.java b/codechicken/lib/render/Vertex5.java index 1edfe5b..4c6780b 100644 --- a/codechicken/lib/render/Vertex5.java +++ b/codechicken/lib/render/Vertex5.java @@ -4,6 +4,7 @@ import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; +import codechicken.lib.vec.Transformation; import codechicken.lib.vec.Vector3; public class Vertex5 @@ -54,4 +55,16 @@ public class Vertex5 MathContext cont = new MathContext(4, RoundingMode.HALF_UP); return "Vertex: ("+new BigDecimal(vec.x, cont)+", "+new BigDecimal(vec.y, cont)+", "+new BigDecimal(vec.z, cont)+") ("+new BigDecimal(uv.u, cont)+", "+new BigDecimal(uv.v, cont)+")"; } + + public Vertex5 apply(Transformation t) + { + vec.apply(t); + return this; + } + + public Vertex5 apply(IUVTransformation t) + { + uv.apply(t); + return this; + } }