private static void CalculateResultChain(List <FP> poly1Coeff, List <YuPengClipper.Edge> poly1Simplicies, List <FP> poly2Coeff, List <YuPengClipper.Edge> poly2Simplicies, PolyClipType clipType, out List <YuPengClipper.Edge> resultSimplices) { resultSimplices = new List <YuPengClipper.Edge>(); for (int i = 0; i < poly1Simplicies.Count; i++) { FP x = 0; bool flag = poly2Simplicies.Contains(poly1Simplicies[i]); if (flag) { x = 1f; } else { bool flag2 = poly2Simplicies.Contains(-poly1Simplicies[i]) && clipType == PolyClipType.Union; if (flag2) { x = 1f; } else { for (int j = 0; j < poly2Simplicies.Count; j++) { bool flag3 = !poly2Simplicies.Contains(-poly1Simplicies[i]); if (flag3) { x += YuPengClipper.CalculateBeta(poly1Simplicies[i].GetCenter(), poly2Simplicies[j], poly2Coeff[j]); } } } } bool flag4 = clipType == PolyClipType.Intersect; if (flag4) { bool flag5 = x == 1f; if (flag5) { resultSimplices.Add(poly1Simplicies[i]); } } else { bool flag6 = x == 0f; if (flag6) { resultSimplices.Add(poly1Simplicies[i]); } } } for (int k = 0; k < poly2Simplicies.Count; k++) { FP x2 = 0f; bool flag7 = !resultSimplices.Contains(poly2Simplicies[k]) && !resultSimplices.Contains(-poly2Simplicies[k]); if (flag7) { bool flag8 = poly1Simplicies.Contains(-poly2Simplicies[k]) && clipType == PolyClipType.Union; if (flag8) { x2 = 1f; } else { x2 = 0f; for (int l = 0; l < poly1Simplicies.Count; l++) { bool flag9 = !poly1Simplicies.Contains(poly2Simplicies[k]) && !poly1Simplicies.Contains(-poly2Simplicies[k]); if (flag9) { x2 += YuPengClipper.CalculateBeta(poly2Simplicies[k].GetCenter(), poly1Simplicies[l], poly1Coeff[l]); } } bool flag10 = clipType == PolyClipType.Intersect || clipType == PolyClipType.Difference; if (flag10) { bool flag11 = x2 == 1f; if (flag11) { resultSimplices.Add(-poly2Simplicies[k]); } } else { bool flag12 = x2 == 0f; if (flag12) { resultSimplices.Add(poly2Simplicies[k]); } } } } } }