Connect() public method

public Connect ( RingLoop other, List tris, int materialIndex, bool flipTris, bool lowres ) : void
other RingLoop
tris List
materialIndex int
flipTris bool
lowres bool
return void
コード例 #1
0
 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));
         }
     }
 }
コード例 #2
0
ファイル: RingLoop.cs プロジェクト: twenty0ne/UnityDecompiled
 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));
         }
     }
 }
コード例 #3
0
ファイル: RingLoop.cs プロジェクト: CarlosHBC/UnityDecompiled
 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));
         }
     }
 }
コード例 #4
0
ファイル: RingLoop.cs プロジェクト: HelloWindows/AccountBook
        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));
                }
            }
        }
コード例 #5
0
ファイル: RingLoop.cs プロジェクト: guozanhua/UnityDecompiled
		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));
				}
			}
		}