protected override void UpdateMeshFunc() { bool flag = this.Width != 0f && this.Length != 0f && this.Height != 0f; if (flag) { this.mMesh.name = "Pyramid"; Vector3[] array = new Vector3[8 + this.HeightSegments * 2 * 4]; Vector2[] array2 = new Vector2[array.Length]; int[] array3 = new int[18 + (this.HeightSegments - 1) * 6 * 4]; float num = this.Width * 0.5f; float num2 = this.Length * 0.5f; float num3 = this.Height / (float)this.HeightSegments; int num4 = 0; int num5 = 0; array[0] = new Vector3(-num, 0f, -num2); array[1] = new Vector3(-num, 0f, num2); array[2] = new Vector3(num, 0f, num2); array[3] = new Vector3(num, 0f, -num2); array2[0] = new Vector2(0f, 0f); array2[1] = new Vector2(1f, 0f); array2[2] = new Vector2(1f, 1f); array2[3] = new Vector2(0f, 1f); array3[0] = 3; array3[1] = 2; array3[2] = 1; array3[3] = 1; array3[4] = 0; array3[5] = 3; num5 += 6; array[4] = new Vector3(0f, this.Height, 0f); array[5] = new Vector3(0f, this.Height, 0f); array[6] = new Vector3(0f, this.Height, 0f); array[7] = new Vector3(0f, this.Height, 0f); array2[4] = new Vector2(0.5f, 1f); array2[5] = new Vector2(0.5f, 1f); array2[6] = new Vector2(0.5f, 1f); array2[7] = new Vector2(0.5f, 1f); num4 += 8; int num6 = num4; for (int i = 0; i < this.HeightSegments; i++) { float num7 = MathU.scale((float)i, 0f, (float)this.HeightSegments, num, 0f); float y = num3 * (float)i; float z = MathU.scale((float)i, 0f, (float)this.HeightSegments, num2, 0f); array[num4] = new Vector3(-num7, y, z); array[num4 + 1] = new Vector3(num7, y, z); array2[num4] = new Vector2(1f - (float)i / (float)this.HeightSegments * 0.5f, (float)i / (float)this.HeightSegments); array2[num4 + 1] = new Vector2((float)i / (float)this.HeightSegments * 0.5f, (float)i / (float)this.HeightSegments); num4 += 2; } for (int i = 0; i < this.HeightSegments - 1; i++) { array3[num5] = num6 + 2; array3[num5 + 1] = num6; array3[num5 + 2] = num6 + 1; array3[num5 + 3] = num6 + 3; array3[num5 + 4] = num6 + 2; array3[num5 + 5] = num6 + 1; num5 += 6; num6 += 2; } array3[num5] = num4 - 2; array3[num5 + 1] = num4 - 1; array3[num5 + 2] = 4; num5 += 3; num6 = num4; for (int i = 0; i < this.HeightSegments; i++) { float num8 = MathU.scale((float)i, 0f, (float)this.HeightSegments, num, 0f); float y2 = num3 * (float)i; float z2 = MathU.scale((float)i, 0f, (float)this.HeightSegments, -num2, 0f); array[num4] = new Vector3(-num8, y2, z2); array[num4 + 1] = new Vector3(num8, y2, z2); array2[num4] = new Vector2((float)i / (float)this.HeightSegments * 0.5f, (float)i / (float)this.HeightSegments); array2[num4 + 1] = new Vector2(1f - (float)i / (float)this.HeightSegments * 0.5f, (float)i / (float)this.HeightSegments); num4 += 2; } for (int i = 0; i < this.HeightSegments - 1; i++) { array3[num5] = num6 + 3; array3[num5 + 1] = num6 + 1; array3[num5 + 2] = num6; array3[num5 + 3] = num6; array3[num5 + 4] = num6 + 2; array3[num5 + 5] = num6 + 3; num5 += 6; num6 += 2; } array3[num5] = num4 - 1; array3[num5 + 1] = num4 - 2; array3[num5 + 2] = 5; num5 += 3; num6 = num4; for (int i = 0; i < this.HeightSegments; i++) { float x = MathU.scale((float)i, 0f, (float)this.HeightSegments, num, 0f); float y3 = num3 * (float)i; float num9 = MathU.scale((float)i, 0f, (float)this.HeightSegments, num2, 0f); array[num4] = new Vector3(x, y3, -num9); array[num4 + 1] = new Vector3(x, y3, num9); array2[num4] = new Vector2((float)i / (float)this.HeightSegments * 0.5f, (float)i / (float)this.HeightSegments); array2[num4 + 1] = new Vector2(1f - (float)i / (float)this.HeightSegments * 0.5f, (float)i / (float)this.HeightSegments); num4 += 2; } for (int i = 0; i < this.HeightSegments - 1; i++) { array3[num5] = num6; array3[num5 + 1] = num6 + 2; array3[num5 + 2] = num6 + 3; array3[num5 + 3] = num6 + 3; array3[num5 + 4] = num6 + 1; array3[num5 + 5] = num6; num5 += 6; num6 += 2; } array3[num5] = num4 - 1; array3[num5 + 1] = num4 - 2; array3[num5 + 2] = 6; num5 += 3; num6 = num4; for (int i = 0; i < this.HeightSegments; i++) { float x2 = MathU.scale((float)i, 0f, (float)this.HeightSegments, -num, 0f); float y4 = num3 * (float)i; float num10 = MathU.scale((float)i, 0f, (float)this.HeightSegments, num2, 0f); array[num4] = new Vector3(x2, y4, -num10); array[num4 + 1] = new Vector3(x2, y4, num10); array2[num4] = new Vector2(1f - (float)i / (float)this.HeightSegments * 0.5f, (float)i / (float)this.HeightSegments); array2[num4 + 1] = new Vector2((float)i / (float)this.HeightSegments * 0.5f, (float)i / (float)this.HeightSegments); num4 += 2; } for (int i = 0; i < this.HeightSegments - 1; i++) { array3[num5] = num6 + 1; array3[num5 + 1] = num6 + 3; array3[num5 + 2] = num6 + 2; array3[num5 + 3] = num6 + 2; array3[num5 + 4] = num6; array3[num5 + 5] = num6 + 1; num5 += 6; num6 += 2; } array3[num5] = num4 - 2; array3[num5 + 1] = num4 - 1; array3[num5 + 2] = 7; this.mMesh.vertices = array; this.mMesh.uv = array2; this.mMesh.triangles = array3; this.mMesh.RecalculateNormals(); this.mMesh.RecalculateBounds(); } }
protected override void UpdateMeshFunc() { bool flag = this.Radius != 0f && this.Height != 0f; if (flag) { this.mMesh.name = "Capsule"; int num = this.Rings + 1; float num2 = this.Height * 0.5f; float num3 = this.Height - this.Radius * 2f; float num4 = num3 * 0.5f; float num5 = (this.Height - num3) * 0.5f; int num6 = this.HeightSegments + 1; float num7 = num3 / (float)this.HeightSegments; this.Sides++; int num8 = this.Rings * 2 + 1; Vector3[] array = new Vector3[(num8 + 1) * this.Sides + num6 * this.Sides]; Vector2[] array2 = new Vector2[array.Length]; Vector3[] array3 = new Vector3[array.Length]; int[] array4 = new int[this.Rings * 2 * (this.Sides - 1) * 6 + this.HeightSegments * (this.Sides - 1) * 6]; float num9 = 1f / (float)(num8 - 1); float num10 = 1f / (float)(this.Sides - 1); int num11 = 0; int num12 = 0; int num13 = num11; for (int i = 0; i < num6; i++) { for (int j = 0; j < this.Sides; j++) { float f = (float)j / (float)(this.Sides - 1) * 6.28318548f; float num14 = -num4 + num7 * (float)i; float num15 = Mathf.Cos(f); float num16 = Mathf.Sin(f); array[num11] = new Vector3(this.Radius * num15, num14, this.Radius * num16); array3[num11] = new Vector3(num15, 0f, num16); array2[num11] = new Vector2((float)j * num10, MathU.scale(num14, -(num4 + num5), num4 + num5, 0f, 1f)); num11++; } } for (int i = 0; i < num6 - 1; i++) { for (int j = 0; j < this.Sides - 1; j++) { int num17 = num13 + i * this.Sides + j; int num18 = num13 + i * this.Sides + (j + 1); int num19 = num13 + (i + 1) * this.Sides + (j + 1); int num20 = num13 + (i + 1) * this.Sides + j; array4[num12] = num17; array4[num12 + 1] = num19; array4[num12 + 2] = num18; array4[num12 + 3] = num19; array4[num12 + 4] = num17; array4[num12 + 5] = num20; num12 += 6; } } this.Sides--; this.mMesh.vertices = array; this.mMesh.uv = array2; this.mMesh.triangles = array4; this.mMesh.normals = array3; this.mMesh.RecalculateBounds(); } }