diff --git a/ClassicalSharp/ClassicalSharp.csproj b/ClassicalSharp/ClassicalSharp.csproj
index 397a9e7bf..c1edecba7 100644
--- a/ClassicalSharp/ClassicalSharp.csproj
+++ b/ClassicalSharp/ClassicalSharp.csproj
@@ -190,7 +190,7 @@
{35FEE071-2DE6-48A1-9343-B5C1F202A12B}
OpenTK
-
+
{B4D984DF-85B8-4BBF-8C3B-5CEF905F40D9}
SharpDX
diff --git a/ClassicalSharp/Map/ChunkMeshBuilderTex2Col4.cs b/ClassicalSharp/Map/ChunkMeshBuilderTex2Col4.cs
index 3e8c8ba74..1b711153d 100644
--- a/ClassicalSharp/Map/ChunkMeshBuilderTex2Col4.cs
+++ b/ClassicalSharp/Map/ChunkMeshBuilderTex2Col4.cs
@@ -36,17 +36,27 @@ namespace ClassicalSharp {
public int vIndex, vCount;
public int iIndex, iCount;
- public DrawInfo1DPart() {
- vertices = new VertexPos3fTex2fCol4b[0];
- indices = new ushort[0];
- }
-
public void ExpandToCapacity() {
vCount = ( iCount / 6 ) * 4;
- if( vCount > vertices.Length ) {
+ if( vertices == null || vCount > vertices.Length ) {
vertices = new VertexPos3fTex2fCol4b[vCount];
indices = new ushort[iCount];
+ MakeIndices();
+ }
+ }
+
+ void MakeIndices() {
+ int element = 0;
+ for( int i = 0; i < iCount; ) {
+ indices[i++] = (ushort)( element + 0 );
+ indices[i++] = (ushort)( element + 1 );
+ indices[i++] = (ushort)( element + 2 );
+
+ indices[i++] = (ushort)( element + 2 );
+ indices[i++] = (ushort)( element + 3 );
+ indices[i++] = (ushort)( element + 0 );
+ element += 4;
}
}
@@ -132,7 +142,7 @@ namespace ClassicalSharp {
info.IndicesCount = part.iCount;
// Lazy initalize part arrays so we can save time in MapRenderer for chunks that only contain 1 or 2 part types.
- if( parts == null )
+ if( parts == null )
parts = new ChunkPartInfo[arraysCount];
parts[i] = info;
}
@@ -196,7 +206,6 @@ namespace ClassicalSharp {
DrawInfo1D info = drawInfoBuffer[drawInfoIndex];
DrawInfo1DPart part = isTranslucent ? info.Translucent : info.Solid;
- AddIndices( part );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X + count, Y + blockHeight, Z, rec.U2, rec.V1, col );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z, rec.U1, rec.V1, col );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z + 1, rec.U1, rec.V2, col );
@@ -215,7 +224,6 @@ namespace ClassicalSharp {
DrawInfo1D info = drawInfoBuffer[drawInfoIndex];
DrawInfo1DPart part = isTranslucent ? info.Translucent : info.Solid;
- AddIndices( part );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X + count, Y, Z + 1, rec.U2, rec.V2, col );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X, Y, Z + 1, rec.U1, rec.V2, col );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X, Y, Z, rec.U1, rec.V1, col );
@@ -237,7 +245,6 @@ namespace ClassicalSharp {
DrawInfo1D info = drawInfoBuffer[drawInfoIndex];
DrawInfo1DPart part = isTranslucent ? info.Translucent : info.Solid;
- AddIndices( part );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X + count, Y + blockHeight, Z + 1, rec.U2, rec.V1, col );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z + 1, rec.U1, rec.V1, col );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X, Y, Z + 1, rec.U1, rec.V2, col );
@@ -259,7 +266,6 @@ namespace ClassicalSharp {
DrawInfo1D info = drawInfoBuffer[drawInfoIndex];
DrawInfo1DPart part = isTranslucent ? info.Translucent : info.Solid;
- AddIndices( part );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X + count, Y, Z, rec.U1, rec.V2, col );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X, Y, Z, rec.U2, rec.V2, col );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z, rec.U2, rec.V1, col );
@@ -281,7 +287,6 @@ namespace ClassicalSharp {
DrawInfo1D info = drawInfoBuffer[drawInfoIndex];
DrawInfo1DPart part = isTranslucent ? info.Translucent : info.Solid;
- AddIndices( part );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z + count, rec.U2, rec.V1, col );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z, rec.U1, rec.V1, col );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X, Y, Z, rec.U1, rec.V2, col );
@@ -303,7 +308,6 @@ namespace ClassicalSharp {
DrawInfo1D info = drawInfoBuffer[drawInfoIndex];
DrawInfo1DPart part = isTranslucent ? info.Translucent : info.Solid;
- AddIndices( part );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X + 1, Y + blockHeight, Z, rec.U2, rec.V1, col );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X + 1, Y + blockHeight, Z + count, rec.U1, rec.V1, col );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X + 1, Y, Z + count, rec.U1, rec.V2, col );
@@ -321,7 +325,6 @@ namespace ClassicalSharp {
DrawInfo1DPart part = drawInfoBuffer[drawInfoIndex].Sprite;
// Draw stretched Z axis
- AddIndices( part );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X, Y, Z + 0.5f, rec.U2, rec.V2, col );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z + 0.5f, rec.U2, rec.V1, col );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X + count, Y + blockHeight, Z + 0.5f, rec.U1, rec.V1, col );
@@ -332,7 +335,6 @@ namespace ClassicalSharp {
int startX = X;
for( int i = 0; i < count; i++ ) {
- AddIndices( part );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X + 0.5f, Y, Z, rec.U1, rec.V2, col );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X + 0.5f, Y + blockHeight, Z, rec.U1, rec.V1, col );
part.vertices[part.vIndex++] = new VertexPos3fTex2fCol4b( X + 0.5f, Y + blockHeight, Z + 1, rec.U2, rec.V1, col );
@@ -341,16 +343,5 @@ namespace ClassicalSharp {
}
X = startX;
}
-
- void AddIndices( DrawInfo1DPart part ) {
- int element = part.vIndex;
- part.indices[part.iIndex++] = (ushort)( element + 0 );
- part.indices[part.iIndex++] = (ushort)( element + 1 );
- part.indices[part.iIndex++] = (ushort)( element + 2 );
-
- part.indices[part.iIndex++] = (ushort)( element + 2 );
- part.indices[part.iIndex++] = (ushort)( element + 3 );
- part.indices[part.iIndex++] = (ushort)( element + 0 );
- }
}
}
\ No newline at end of file