예제 #1
0
 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);
     }
 }
예제 #2
0
        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]);
            }
        }