private void DrawCorner(Vector3 v1, Vector3 v2, Vector3 v3, float radius) { FilletPanel.CornerInfo cornerInfo = m_instance.GetCorner(v1, v2, v3, radius); if (cornerInfo.Valid) { Handles.color = Color.cyan; Handles.DrawWireArc( cornerInfo.Center, cornerInfo.Normal, cornerInfo.From, cornerInfo.Angle, cornerInfo.Radius); // normal determines the direction of fill } else { Handles.color = Color.red; Handles.DrawWireDisc(cornerInfo.Center, cornerInfo.Normal, cornerInfo.Radius); } }
private void DrawCornerSamples(Vector3 v1, Vector3 v2, Vector3 v3, float radius) { Vector3[] cornerVerts = new Vector3[filletSegmentsProperty.intValue]; FilletPanel.CornerInfo cornerInfo = m_instance.GetCorner(v1, v2, v3, radius); float angleIncrement = cornerInfo.Angle / (cornerVerts.Length - 1); for (int i = 0; i < cornerVerts.Length; i++) { cornerVerts[i] = cornerInfo.Center + (Quaternion.AngleAxis(angleIncrement * i, cornerInfo.Normal) * cornerInfo.From) * cornerInfo.Radius; } Handles.color = Color.yellow; for (int i = 0; i < cornerVerts.Length - 1; i++) { Handles.DrawLine(cornerVerts[i], cornerVerts[i + 1]); } }