public Connect ( |
||
other | ||
tris | List |
|
materialIndex | int | |
flipTris | bool | |
lowres | bool | |
Результат | void |
public void Connect(RingLoop other, List <TreeTriangle> tris, int materialIndex, bool flipTris, bool lowres) { if (other.segments > this.segments) { other.Connect(this, tris, materialIndex, true, lowres); return; } if (lowres) { for (int i = 0; i < this.segments / 2; i++) { int num = 0 + i + other.vertOffset; int num2 = other.segments / 2 + i + other.vertOffset; int num3 = 0 + i + this.vertOffset; int num4 = this.segments / 2 + i + this.vertOffset; if (flipTris) { int num5 = num; num = num2; num2 = num5; num5 = num3; num3 = num4; num4 = num5; } tris.Add(new TreeTriangle(materialIndex, num, num2, num3, false, true, false)); tris.Add(new TreeTriangle(materialIndex, num2, num4, num3, false, true, false)); } } else { for (int j = 0; j < this.segments; j++) { int num6 = Mathf.Min((int)Mathf.Round((float)j / (float)this.segments * (float)other.segments), other.segments); int num7 = Mathf.Min((int)Mathf.Round((float)(j + 1) / (float)this.segments * (float)other.segments), other.segments); int num8 = Mathf.Min(j + 1, this.segments); int num9 = num6 + other.vertOffset; int num10 = j + this.vertOffset; int v = num7 + other.vertOffset; int num11 = j + this.vertOffset; int num12 = num8 + this.vertOffset; int v2 = num7 + other.vertOffset; if (flipTris) { int num13 = num10; num10 = num9; num9 = num13; num13 = num12; num12 = num11; num11 = num13; } tris.Add(new TreeTriangle(materialIndex, num9, num10, v, false, true, false)); tris.Add(new TreeTriangle(materialIndex, num11, num12, v2, false, true, false)); } } }
public void Connect(RingLoop other, List <TreeTriangle> tris, int materialIndex, bool flipTris, bool lowres) { if (other.segments > this.segments) { other.Connect(this, tris, materialIndex, true, lowres); } else if (lowres) { for (int i = 0; i < (this.segments / 2); i++) { int num2 = i + other.vertOffset; int num3 = ((other.segments / 2) + i) + other.vertOffset; int num4 = i + this.vertOffset; int num5 = ((this.segments / 2) + i) + this.vertOffset; if (flipTris) { int num6 = num2; num2 = num3; num3 = num6; num6 = num4; num4 = num5; num5 = num6; } tris.Add(new TreeTriangle(materialIndex, num2, num3, num4, false, true, false)); tris.Add(new TreeTriangle(materialIndex, num3, num5, num4, false, true, false)); } } else { for (int j = 0; j < this.segments; j++) { int num8 = Mathf.Min((int)Mathf.Round((((float)j) / ((float)this.segments)) * other.segments), other.segments); int num9 = Mathf.Min((int)Mathf.Round((((float)(j + 1)) / ((float)this.segments)) * other.segments), other.segments); int num10 = Mathf.Min(j + 1, this.segments); int num11 = num8 + other.vertOffset; int num12 = j + this.vertOffset; int num13 = num9 + other.vertOffset; int num14 = j + this.vertOffset; int num15 = num10 + this.vertOffset; int num16 = num9 + other.vertOffset; if (flipTris) { int num17 = num12; num12 = num11; num11 = num17; num17 = num15; num15 = num14; num14 = num17; } tris.Add(new TreeTriangle(materialIndex, num11, num12, num13, false, true, false)); tris.Add(new TreeTriangle(materialIndex, num14, num15, num16, false, true, false)); } } }
public void Connect(RingLoop other, List<TreeTriangle> tris, int materialIndex, bool flipTris, bool lowres) { if (other.segments > this.segments) { other.Connect(this, tris, materialIndex, true, lowres); } else if (lowres) { for (int i = 0; i < (this.segments / 2); i++) { int num2 = i + other.vertOffset; int num3 = ((other.segments / 2) + i) + other.vertOffset; int num4 = i + this.vertOffset; int num5 = ((this.segments / 2) + i) + this.vertOffset; if (flipTris) { int num6 = num2; num2 = num3; num3 = num6; num6 = num4; num4 = num5; num5 = num6; } tris.Add(new TreeTriangle(materialIndex, num2, num3, num4, false, true, false)); tris.Add(new TreeTriangle(materialIndex, num3, num5, num4, false, true, false)); } } else { for (int j = 0; j < this.segments; j++) { int num8 = Mathf.Min((int) Mathf.Round((((float) j) / ((float) this.segments)) * other.segments), other.segments); int num9 = Mathf.Min((int) Mathf.Round((((float) (j + 1)) / ((float) this.segments)) * other.segments), other.segments); int num10 = Mathf.Min(j + 1, this.segments); int num11 = num8 + other.vertOffset; int num12 = j + this.vertOffset; int num13 = num9 + other.vertOffset; int num14 = j + this.vertOffset; int num15 = num10 + this.vertOffset; int num16 = num9 + other.vertOffset; if (flipTris) { int num17 = num12; num12 = num11; num11 = num17; num17 = num15; num15 = num14; num14 = num17; } tris.Add(new TreeTriangle(materialIndex, num11, num12, num13, false, true, false)); tris.Add(new TreeTriangle(materialIndex, num14, num15, num16, false, true, false)); } } }
public void Connect(RingLoop other, List <TreeTriangle> tris, int materialIndex, bool flipTris, bool lowres) { // Must connect from higher to lower/equal res if (other.segments > segments) { other.Connect(this, tris, materialIndex, true, lowres); return; } if (lowres) { // // Lowres should always have an even number of vertices per ring-loop, and the same amount for each loop // for (int i = 0; i < (segments / 2); i++) { int a0 = 0 + i + other.vertOffset; int a1 = (other.segments / 2) + i + other.vertOffset; int b0 = 0 + i + vertOffset; int b1 = (segments / 2) + i + vertOffset; // reverse order, if needed if (flipTris) { int temp = a0; a0 = a1; a1 = temp; temp = b0; b0 = b1; b1 = temp; } // add to triangle list tris.Add(new TreeTriangle(materialIndex, a0, a1, b0, false, true, false)); tris.Add(new TreeTriangle(materialIndex, a1, b1, b0, false, true, false)); } } else { for (int i = 0; i < segments; i++) { // find matching vertices on the other ring loop int connect0 = Mathf.Min((int)Mathf.Round((i / (float)segments) * other.segments), other.segments); int connect1 = Mathf.Min((int)Mathf.Round(((i + 1) / (float)segments) * other.segments), other.segments); // next vertex on this ring loop int k = Mathf.Min(i + 1, segments); // first triangle for this segment int v0 = connect0 + other.vertOffset; int v1 = i + vertOffset; int v2 = connect1 + other.vertOffset; // second triangle for this segment int v3 = i + vertOffset; int v4 = k + vertOffset; int v5 = connect1 + other.vertOffset; // reverse order, if needed if (flipTris) { int temp = v1; v1 = v0; v0 = temp; temp = v4; v4 = v3; v3 = temp; } // add to triangle list tris.Add(new TreeTriangle(materialIndex, v0, v1, v2, false, true, false)); tris.Add(new TreeTriangle(materialIndex, v3, v4, v5, false, true, false)); } } }
public void Connect(RingLoop other, List<TreeTriangle> tris, int materialIndex, bool flipTris, bool lowres) { if (other.segments > this.segments) { other.Connect(this, tris, materialIndex, true, lowres); return; } if (lowres) { for (int i = 0; i < this.segments / 2; i++) { int num = 0 + i + other.vertOffset; int num2 = other.segments / 2 + i + other.vertOffset; int num3 = 0 + i + this.vertOffset; int num4 = this.segments / 2 + i + this.vertOffset; if (flipTris) { int num5 = num; num = num2; num2 = num5; num5 = num3; num3 = num4; num4 = num5; } tris.Add(new TreeTriangle(materialIndex, num, num2, num3, false, true, false)); tris.Add(new TreeTriangle(materialIndex, num2, num4, num3, false, true, false)); } } else { for (int j = 0; j < this.segments; j++) { int num6 = Mathf.Min((int)Mathf.Round((float)j / (float)this.segments * (float)other.segments), other.segments); int num7 = Mathf.Min((int)Mathf.Round((float)(j + 1) / (float)this.segments * (float)other.segments), other.segments); int num8 = Mathf.Min(j + 1, this.segments); int num9 = num6 + other.vertOffset; int num10 = j + this.vertOffset; int v = num7 + other.vertOffset; int num11 = j + this.vertOffset; int num12 = num8 + this.vertOffset; int v2 = num7 + other.vertOffset; if (flipTris) { int num13 = num10; num10 = num9; num9 = num13; num13 = num12; num12 = num11; num11 = num13; } tris.Add(new TreeTriangle(materialIndex, num9, num10, v, false, true, false)); tris.Add(new TreeTriangle(materialIndex, num11, num12, v2, false, true, false)); } } }