1 change: 1 addition & 0 deletions repositories.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// Add any additional repositiroes for your dependencies here

repositories {
mavenLocal()
}
7 changes: 6 additions & 1 deletion src/main/java/codechicken/lib/asm/RedirectorTransformer.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,12 @@ public class RedirectorTransformer implements IClassTransformer, Opcodes {
"hasBrightness",
"brightness",
"side",
"lc"
"lc",
"normalAttrib",
"colourAttrib",
"lightCoordAttrib",
"sideAttrib",
"lightingAttrib"

);
Collections.addAll(redirectedSimpleMethods, "reset", "pullLightmap", "pushLightmap", "setDynamic", "draw");
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/codechicken/lib/lighting/LightModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@ public int apply(int colour, Vector3 normal) {
public boolean load(CCRenderState state) {
if (!state.computeLighting) return false;

state.pipeline.addDependency(CCRenderState.normalAttrib);
state.pipeline.addDependency(CCRenderState.colourAttrib);
state.pipeline.addDependency(CCRenderState.normalAttrib());
state.pipeline.addDependency(CCRenderState.colourAttrib());
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public int brightness(int side) {

@Override
public boolean load(CCRenderState state) {
state.pipeline.addDependency(CCRenderState.sideAttrib);
state.pipeline.addDependency(CCRenderState.sideAttrib());
return true;
}

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/codechicken/lib/lighting/PlanarLightModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ public PlanarLightModel(int[] colours) {
public boolean load(CCRenderState state) {
if (!state.computeLighting) return false;

state.pipeline.addDependency(CCRenderState.sideAttrib);
state.pipeline.addDependency(CCRenderState.colourAttrib);
state.pipeline.addDependency(CCRenderState.sideAttrib());
state.pipeline.addDependency(CCRenderState.colourAttrib());
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public int sample(int side) {

@Override
public boolean load(CCRenderState state) {
state.pipeline.addDependency(CCRenderState.sideAttrib);
state.pipeline.addDependency(CCRenderState.sideAttrib());
return true;
}

Expand Down
12 changes: 6 additions & 6 deletions src/main/java/codechicken/lib/render/BlockRenderer.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ public Vertex5[] getVertices() {

@Override
public <T> T getAttributes(CCRenderState.VertexAttribute<T> attr) {
return attr == CCRenderState.lightCoordAttrib && lcComputed ? (T) lightCoords : null;
return attr == CCRenderState.lightCoordAttrib() && lcComputed ? (T) lightCoords : null;
}

@Override
public boolean hasAttribute(CCRenderState.VertexAttribute<?> attr) {
return attr == CCRenderState.sideAttrib || attr == CCRenderState.lightCoordAttrib && lcComputed;
return attr == CCRenderState.sideAttrib() || attr == CCRenderState.lightCoordAttrib() && lcComputed;
}

@Override
Expand Down Expand Up @@ -136,12 +136,12 @@ public Vertex5[] getVertices() {

@Override
public <T> T getAttributes(VertexAttribute<T> attr) {
return attr == CCRenderState.lightCoordAttrib ? (T) lightCoords : null;
return attr == CCRenderState.lightCoordAttrib() ? (T) lightCoords : null;
}

@Override
public boolean hasAttribute(VertexAttribute<?> attr) {
return attr == CCRenderState.sideAttrib || attr == CCRenderState.lightCoordAttrib;
return attr == CCRenderState.sideAttrib() || attr == CCRenderState.lightCoordAttrib();
}

@Override
Expand All @@ -164,7 +164,7 @@ public static void renderFullBlock(int sideMask) {

/**
* Renders faces of a block-like model based on a sideMask. Eg for side 2, verts 8-11 will be rendered
*
*
* @param sideMask A mask of faces not to render
*/
// public static void renderFaces(int sideMask) {
Expand All @@ -184,7 +184,7 @@ public static void renderFaces(int sideMask) {

/**
* Renders faces of a cuboid with texture coordinates mapped to match a standard minecraft block
*
*
* @param bounds The bounding cuboid to render
* @param sideMask A mask of faces not to render
*/
Expand Down
44 changes: 22 additions & 22 deletions src/main/java/codechicken/lib/render/CCModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ protected CCModel(int vertexMode) {
}

public Vector3[] normals() {
return getAttributes(CCRenderState.normalAttrib);
return getAttributes(CCRenderState.normalAttrib());
}

@Override
Expand Down Expand Up @@ -102,7 +102,7 @@ public <T> T getOrAllocate(CCRenderState.VertexAttribute<T> attrib) {

/**
* Each pixel corresponds to one unit of position when generating the model
*
*
* @param i Vertex index to start generating at
* @param x1 The minX bound of the box
* @param y1 The minY bound of the box
Expand Down Expand Up @@ -195,7 +195,7 @@ public CCModel generateBox(int i, double x1, double y1, double z1, double w, dou

/**
* Generates a box, uv mapped to be the same as a minecraft block with the same bounds
*
*
* @param i The vertex index to start generating at
* @param bounds The bounds of the block, 0 to 1
* @return The generated model. When rendering an icon will need to be supplied for the UV transformation.
Expand All @@ -222,7 +222,7 @@ public CCModel generateBlock(int i, double x1, double y1, double z1, double x2,

/**
* Generates a box, uv mapped to be the same as a minecraft block with the same bounds
*
*
* @param i The vertex index to start generating at
* @param x1 minX
* @param y1 minY
Expand Down Expand Up @@ -311,7 +311,7 @@ public CCModel computeNormals() {

/**
* Computes the normals of all faces in the model. Uses the cross product of the vectors along 2 sides of the face
*
*
* @param start The first vertex to generate normals for
* @param length The number of vertices to generate normals for. Note this must be a multiple of 3 for triangles or
* 4 for quads
Expand All @@ -321,7 +321,7 @@ public CCModel computeNormals(int start, int length) {
if (length % vp != 0 || start % vp != 0)
throw new IllegalArgumentException("Cannot generate normals across polygons");

Vector3[] normals = getOrAllocate(CCRenderState.normalAttrib);
Vector3[] normals = getOrAllocate(CCRenderState.normalAttrib());
for (int k = 0; k < length; k += vp) {
int i = k + start;
Vector3 diff1 = verts[i + 1].vec.copy().subtract(verts[i].vec);
Expand All @@ -336,41 +336,41 @@ public CCModel computeNormals(int start, int length) {
/**
* Computes lighting using the normals add a light model If the model is rotated, the lighting will no longer be
* valid
*
*
* @return The model
*/
public CCModel computeLighting(LightModel light) {
Vector3[] normals = normals();
int[] colours = getAttributes(CCRenderState.lightingAttrib);
int[] colours = getAttributes(CCRenderState.lightingAttrib());
if (colours == null) {
colours = getOrAllocate(CCRenderState.lightingAttrib);
colours = getOrAllocate(CCRenderState.lightingAttrib());
Arrays.fill(colours, -1);
}
for (int k = 0; k < verts.length; k++) colours[k] = light.apply(colours[k], normals[k]);
return this;
}

public CCModel setColour(int c) {
int[] colours = getOrAllocate(CCRenderState.colourAttrib);
int[] colours = getOrAllocate(CCRenderState.colourAttrib());
Arrays.fill(colours, c);
return this;
}

/**
* Computes the minecraft lighting coordinates for use with a LightMatrix
*
*
* @return The model
*/
public CCModel computeLightCoords() {
LC[] lcs = getOrAllocate(CCRenderState.lightCoordAttrib);
LC[] lcs = getOrAllocate(CCRenderState.lightCoordAttrib());
Vector3[] normals = normals();
for (int i = 0; i < verts.length; i++) lcs[i] = new LC().compute(verts[i].vec, normals[i]);
return this;
}

/**
* Averages all normals at the same position to produce a smooth lighting effect.
*
*
* @return The model
*/
public CCModel smoothNormals() {
Expand Down Expand Up @@ -461,7 +461,7 @@ public void render(CCRenderState.IVertexOperation... ops) {

/**
* Renders vertices start through start+length-1 of the model
*
*
* @param start The first vertex index to render
* @param end The vertex index to render until
* @param ops Operations to apply
Expand Down Expand Up @@ -520,7 +520,7 @@ public static void assertMatch(Matcher m, String s) {

/**
* Parses vertices, texture coords, normals and polygons from a WaveFront Obj file
*
*
* @param input An input stream to a obj file
* @param vertexMode The vertex mode to create the model for (GL_TRIANGLES or GL_QUADS)
* @param coordSystem The cooridnate system transformation to apply
Expand Down Expand Up @@ -624,7 +624,7 @@ public static void quadulate(List<int[]> polys, int[][] polyVerts) {

/**
* Parses vertices, texture coords, normals and polygons from a WaveFront Obj file
*
*
* @param res The resource for the obj file
* @return A map of group names to models
*/
Expand All @@ -634,7 +634,7 @@ public static Map<String, CCModel> parseObjModels(ResourceLocation res) {

/**
* Parses vertices, texture coords, normals and polygons from a WaveFront Obj file
*
*
* @param res The resource for the obj file
* @param coordSystem The cooridnate system transformation to apply
* @return A map of group names to models
Expand All @@ -652,7 +652,7 @@ public static Map<String, CCModel> parseObjModels(ResourceLocation res, Transfor

/**
* Parses vertices, texture coords, normals and polygons from a WaveFront Obj file
*
*
* @param res The resource for the obj file
* @param vertexMode The vertex mode to create the model for (GL_TRIANGLES or GL_QUADS)
* @param coordSystem The cooridnate system transformation to apply
Expand All @@ -678,7 +678,7 @@ public static CCModel createModel(List<Vector3> verts, List<Vector3> uvs, List<V

boolean hasNormals = polys.get(0)[2] > 0;
CCModel model = CCModel.newModel(vertexMode, polys.size());
if (hasNormals) model.getOrAllocate(CCRenderState.normalAttrib);
if (hasNormals) model.getOrAllocate(CCRenderState.normalAttrib());

for (int i = 0; i < polys.size(); i++) {
int[] ai = polys.get(i);
Expand Down Expand Up @@ -807,7 +807,7 @@ public static void copy(CCModel src, int srcpos, CCModel dst, int destpos, int l

/**
* Generate models rotated to the other 5 sides of the block
*
*
* @param models An array of 6 models
* @param side The side of this model
* @param point The rotation point
Expand All @@ -822,7 +822,7 @@ public static void generateSidedModels(CCModel[] models, int side, Vector3 point

/**
* Generate models rotated to the other 3 horizontal of the block
*
*
* @param models An array of 4 models
* @param side The side of this model
* @param point The rotation point
Expand All @@ -841,7 +841,7 @@ public CCModel backfacedCopy() {

/**
* Generates copies of faces with clockwise vertices
*
*
* @return The model
*/
public static CCModel generateBackface(CCModel src, int srcpos, CCModel dst, int destpos, int length) {
Expand Down
30 changes: 25 additions & 5 deletions src/main/java/codechicken/lib/render/CCRenderState.java
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,27 @@ default void prepareVertex() {
}
}

public static VertexAttribute<Vector3[]> normalAttrib = new VertexAttribute<>() {
public static VertexAttribute<Vector3[]> normalAttrib() {
return instances.get().normalAttrib;
}

public static VertexAttribute<int[]> colourAttrib() {
return instances.get().colourAttrib;
}

public static VertexAttribute<LC[]> lightCoordAttrib() {
return instances.get().lightCoordAttrib;
}

public static VertexAttribute<int[]> sideAttrib() {
return instances.get().sideAttrib;
}

public static VertexAttribute<int[]> lightingAttrib() {
return instances.get().lightingAttrib;
}

public VertexAttribute<Vector3[]> normalAttrib = new VertexAttribute<>() {

private Vector3[] normalRef;

Expand Down Expand Up @@ -197,7 +217,7 @@ public void operate(CCRenderState state) {
else state.setNormalInstance(Rotation.axes[state.side]);
}
};
public static VertexAttribute<int[]> colourAttrib = new VertexAttribute<>() {
public VertexAttribute<int[]> colourAttrib = new VertexAttribute<>() {

private int[] colourRef;

Expand All @@ -219,7 +239,7 @@ public void operate(CCRenderState state) {
else state.setColourInstance(state.baseColour);
}
};
public static VertexAttribute<int[]> lightingAttrib = new VertexAttribute<>() {
public VertexAttribute<int[]> lightingAttrib = new VertexAttribute<>() {

private int[] colourRef;

Expand All @@ -245,7 +265,7 @@ public void operate(CCRenderState state) {
state.setColourInstance(ColourRGBA.multiply(state.colour, colourRef[state.vertexIndex]));
}
};
public static VertexAttribute<int[]> sideAttrib = new VertexAttribute<>() {
public VertexAttribute<int[]> sideAttrib = new VertexAttribute<>() {

private int[] sideRef;

Expand All @@ -272,7 +292,7 @@ public void operate(CCRenderState state) {
/**
* Uses the position of the lightmatrix to compute LC if not provided
*/
public static VertexAttribute<LC[]> lightCoordAttrib = new VertexAttribute<>() {
public VertexAttribute<LC[]> lightCoordAttrib = new VertexAttribute<>() {

private LC[] lcRef;
private final Vector3 vec = new Vector3(); // for computation
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/codechicken/lib/vec/Transformation.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ public abstract class Transformation extends ITransformation<Vector3, Transforma

/**
* Applies this transformation to a normal (doesn't translate)
*
*
* @param normal The normal to transform
*/
public abstract void applyN(Vector3 normal);

/**
* Applies this transformation to a matrix as a multiplication on the right hand side.
*
*
* @param mat The matrix to combine this transformation with
*/
public abstract void apply(Matrix4 mat);
Expand All @@ -39,14 +39,14 @@ public TransformationList with(Transformation t) {

@Override
public boolean load(CCRenderState state) {
state.pipeline.addRequirement(CCRenderState.normalAttrib.operationID());
state.pipeline.addRequirement(CCRenderState.normalAttrib().operationID());
return !isRedundant();
}

@Override
public void operate(CCRenderState state) {
apply(state.vert.vec);
if (CCRenderState.normalAttrib.active) applyN(state.normal);
if (CCRenderState.normalAttrib().active) applyN(state.normal);
}

@Override
Expand Down