private static dfClippingUtil.ClipTriangle[] initClipBuffer(int size) { dfClippingUtil.ClipTriangle[] clipTriangleArray = new dfClippingUtil.ClipTriangle[size]; for (int i = 0; i < size; i++) { clipTriangleArray[i].corner = new Vector3[3]; clipTriangleArray[i].uv = new Vector2[3]; clipTriangleArray[i].color = new Color32[3]; } return(clipTriangleArray); }
public void CopyTo(dfClippingUtil.ClipTriangle target) { Array.Copy(this.corner, target.corner, 3); Array.Copy(this.uv, target.uv, 3); Array.Copy(this.color, target.color, 3); }
private static int clipToPlane(Plane plane, dfClippingUtil.ClipTriangle triangle, dfClippingUtil.ClipTriangle[] dest, int destIndex) { Vector3[] vector3Array = triangle.corner; int num = 0; int num1 = 0; Vector3 vector3 = plane.normal; float single = plane.distance; for (int i = 0; i < 3; i++) { if (Vector3.Dot(vector3, vector3Array[i]) + single <= 0f) { num1 = i; } else { int num2 = num; num = num2 + 1; dfClippingUtil.inside[num2] = i; } } if (num == 3) { triangle.CopyTo(dest[destIndex]); return(1); } if (num == 0) { return(0); } if (num == 1) { int num3 = dfClippingUtil.inside[0]; int num4 = (num3 + 1) % 3; int num5 = (num3 + 2) % 3; Vector3 vector31 = vector3Array[num3]; Vector3 vector32 = vector3Array[num4]; Vector3 vector33 = vector3Array[num5]; Vector2 vector2 = triangle.uv[num3]; Vector2 vector21 = triangle.uv[num4]; Vector2 vector22 = triangle.uv[num5]; Color32 color32 = triangle.color[num3]; Color32 color321 = triangle.color[num4]; Color32 color322 = triangle.color[num5]; float single1 = 0f; Vector3 vector34 = vector32 - vector31; Ray ray = new Ray(vector31, vector34.normalized); plane.Raycast(ray, out single1); float single2 = single1 / vector34.magnitude; Vector3 vector35 = ray.origin + (ray.direction * single1); Vector2 vector23 = Vector2.Lerp(vector2, vector21, single2); Color color = Color.Lerp(color32, color321, single2); vector34 = vector33 - vector31; ray = new Ray(vector31, vector34.normalized); plane.Raycast(ray, out single1); single2 = single1 / vector34.magnitude; Vector3 vector36 = ray.origin + (ray.direction * single1); Vector2 vector24 = Vector2.Lerp(vector2, vector22, single2); Color color1 = Color.Lerp(color32, color322, single2); dest[destIndex].corner[0] = vector31; dest[destIndex].corner[1] = vector35; dest[destIndex].corner[2] = vector36; dest[destIndex].uv[0] = vector2; dest[destIndex].uv[1] = vector23; dest[destIndex].uv[2] = vector24; dest[destIndex].color[0] = color32; dest[destIndex].color[1] = color; dest[destIndex].color[2] = color1; return(1); } int num6 = num1; int num7 = (num6 + 1) % 3; int num8 = (num6 + 2) % 3; Vector3 vector37 = vector3Array[num6]; Vector3 vector38 = vector3Array[num7]; Vector3 vector39 = vector3Array[num8]; Vector2 vector25 = triangle.uv[num6]; Vector2 vector26 = triangle.uv[num7]; Vector2 vector27 = triangle.uv[num8]; Color32 color323 = triangle.color[num6]; Color32 color324 = triangle.color[num7]; Color32 color325 = triangle.color[num8]; Vector3 vector310 = vector38 - vector37; Ray ray1 = new Ray(vector37, vector310.normalized); float single3 = 0f; plane.Raycast(ray1, out single3); float single4 = single3 / vector310.magnitude; Vector3 vector311 = ray1.origin + (ray1.direction * single3); Vector2 vector28 = Vector2.Lerp(vector25, vector26, single4); Color color2 = Color.Lerp(color323, color324, single4); vector310 = vector39 - vector37; ray1 = new Ray(vector37, vector310.normalized); plane.Raycast(ray1, out single3); single4 = single3 / vector310.magnitude; Vector3 vector312 = ray1.origin + (ray1.direction * single3); Vector2 vector29 = Vector2.Lerp(vector25, vector27, single4); Color color3 = Color.Lerp(color323, color325, single4); dest[destIndex].corner[0] = vector311; dest[destIndex].corner[1] = vector38; dest[destIndex].corner[2] = vector312; dest[destIndex].uv[0] = vector28; dest[destIndex].uv[1] = vector26; dest[destIndex].uv[2] = vector29; dest[destIndex].color[0] = color2; dest[destIndex].color[1] = color324; dest[destIndex].color[2] = color3; destIndex++; dest[destIndex].corner[0] = vector312; dest[destIndex].corner[1] = vector38; dest[destIndex].corner[2] = vector39; dest[destIndex].uv[0] = vector29; dest[destIndex].uv[1] = vector26; dest[destIndex].uv[2] = vector27; dest[destIndex].color[0] = color3; dest[destIndex].color[1] = color324; dest[destIndex].color[2] = color325; return(2); }
private static dfClippingUtil.ClipTriangle[] initClipBuffer(int size) { dfClippingUtil.ClipTriangle[] clipTriangleArray = new dfClippingUtil.ClipTriangle[size]; for (int i = 0; i < size; i++) { clipTriangleArray[i].corner = new Vector3[3]; clipTriangleArray[i].uv = new Vector2[3]; clipTriangleArray[i].color = new Color32[3]; } return clipTriangleArray; }