// Check whether given two line intersects bool LinesIntersect(customLine line1, customLine line2) { return((Mathf.Max(line1.StartPoint.x, line1.EndPoint.x) >= Mathf.Min(line2.StartPoint.x, line2.EndPoint.x)) && (Mathf.Max(line2.StartPoint.x, line2.EndPoint.x) >= Mathf.Min(line1.StartPoint.x, line1.EndPoint.x)) && (Mathf.Max(line1.StartPoint.y, line1.EndPoint.y) >= Mathf.Min(line2.StartPoint.y, line2.EndPoint.y)) && (Mathf.Max(line2.StartPoint.y, line2.EndPoint.y) >= Mathf.Min(line1.StartPoint.y, line1.EndPoint.y))); }
bool Collides() { if (pointsList.Count < 3) { return(false); } int TotalLines = pointsList.Count - 1; customLine [] lines = new customLine [TotalLines]; // Fill lines array with past lines for (int i = 0; i < TotalLines; i++) { lines [i].StartPoint = pointsList [i]; lines [i].EndPoint = pointsList [i + 1]; } // Check the currentLine against every past line for (int i = 0; i < TotalLines - 2; i++) { customLine currentLine; currentLine.StartPoint = pointsList [pointsList.Count - 2]; currentLine.EndPoint = pointsList [pointsList.Count - 1]; if (LinesIntersect(lines [i], currentLine)) { return(true); } } return(false); }