UnityEditor.PolygonEditor.InsertPoint C# (CSharp) Method

InsertPoint() public static method

public static InsertPoint ( int pathIndex, int pointIndex, Vector2 value ) : void
pathIndex int
pointIndex int
value Vector2
return void
        public static void InsertPoint(int pathIndex, int pointIndex, Vector2 value)
        {
            INTERNAL_CALL_InsertPoint(pathIndex, pointIndex, ref value);
        }

Usage Example

 public void OnSceneGUI()
 {
     if ((this.m_ActiveCollider != null) && !Tools.viewToolActive)
     {
         float   num;
         Vector2 offset  = this.m_ActiveCollider.offset;
         Event   current = Event.current;
         this.m_DeleteMode = current.command || current.control;
         Transform transform = this.m_ActiveCollider.transform;
         GUIUtility.keyboardControl         = 0;
         HandleUtility.s_CustomPickDistance = 50f;
         Plane plane = new Plane(-transform.forward, Vector3.zero);
         Ray   ray   = HandleUtility.GUIPointToWorldRay(current.mousePosition);
         plane.Raycast(ray, out num);
         Vector3 point   = ray.GetPoint(num);
         Vector2 vector3 = transform.InverseTransformPoint(point);
         if ((current.type == EventType.MouseMove) || this.m_FirstOnSceneGUIAfterReset)
         {
             int   num2;
             int   num3;
             int   num4;
             float num5;
             if (PolygonEditor.GetNearestPoint(vector3 - offset, out num2, out num3, out num5))
             {
                 this.m_SelectedPath     = num2;
                 this.m_SelectedVertex   = num3;
                 this.m_SelectedDistance = num5;
             }
             else
             {
                 this.m_SelectedPath = -1;
             }
             if (PolygonEditor.GetNearestEdge(vector3 - offset, out num2, out num3, out num4, out num5, this.m_LoopingCollider))
             {
                 this.m_SelectedEdgePath     = num2;
                 this.m_SelectedEdgeVertex0  = num3;
                 this.m_SelectedEdgeVertex1  = num4;
                 this.m_SelectedEdgeDistance = num5;
             }
             else
             {
                 this.m_SelectedEdgePath = -1;
             }
             if (current.type == EventType.MouseMove)
             {
                 current.Use();
             }
         }
         else if (current.type == EventType.MouseUp)
         {
             this.m_LeftIntersect  = false;
             this.m_RightIntersect = false;
         }
         bool flag  = false;
         bool flag2 = false;
         if ((this.m_SelectedPath != -1) && (this.m_SelectedEdgePath != -1))
         {
             Vector2 vector4;
             PolygonEditor.GetPoint(this.m_SelectedPath, this.m_SelectedVertex, out vector4);
             vector4 += offset;
             float num6 = HandleUtility.GetHandleSize(transform.TransformPoint((Vector3)vector4)) * 0.2f;
             flag2 = this.m_SelectedEdgeDistance < (this.m_SelectedDistance - num6);
             flag  = !flag2;
         }
         else if (this.m_SelectedPath != -1)
         {
             flag = true;
         }
         else if (this.m_SelectedEdgePath != -1)
         {
             flag2 = true;
         }
         if (this.m_DeleteMode && flag2)
         {
             flag2 = false;
             flag  = true;
         }
         bool flag3 = false;
         if (flag2 && !this.m_DeleteMode)
         {
             Vector2 vector6;
             Vector2 vector7;
             PolygonEditor.GetPoint(this.m_SelectedEdgePath, this.m_SelectedEdgeVertex0, out vector6);
             PolygonEditor.GetPoint(this.m_SelectedEdgePath, this.m_SelectedEdgeVertex1, out vector7);
             vector6 += offset;
             vector7 += offset;
             Vector3 start = transform.TransformPoint((Vector3)vector6);
             Vector3 end   = transform.TransformPoint((Vector3)vector7);
             start.z       = end.z = 0f;
             Handles.color = Color.green;
             Vector3[] points = new Vector3[] { start, end };
             Handles.DrawAAPolyLine((float)4f, points);
             Handles.color = Color.white;
             Vector2 vector10 = this.GetNearestPointOnEdge(transform.TransformPoint((Vector3)vector3), start, end);
             EditorGUI.BeginChangeCheck();
             float handleSize = HandleUtility.GetHandleSize((Vector3)vector10) * 0.04f;
             Handles.color = Color.green;
             vector10      = Handles.Slider2D((Vector3)vector10, new Vector3(0f, 0f, 1f), new Vector3(1f, 0f, 0f), new Vector3(0f, 1f, 0f), handleSize, new Handles.DrawCapFunction(Handles.DotCap), Vector3.zero);
             Handles.color = Color.white;
             if (EditorGUI.EndChangeCheck())
             {
                 PolygonEditor.InsertPoint(this.m_SelectedEdgePath, this.m_SelectedEdgeVertex1, ((Vector2)((vector6 + vector7) / 2f)) - offset);
                 this.m_SelectedPath     = this.m_SelectedEdgePath;
                 this.m_SelectedVertex   = this.m_SelectedEdgeVertex1;
                 this.m_SelectedDistance = 0f;
                 flag  = true;
                 flag3 = true;
             }
         }
         if (flag)
         {
             Vector2 vector11;
             PolygonEditor.GetPoint(this.m_SelectedPath, this.m_SelectedVertex, out vector11);
             vector11 += offset;
             Vector3 world = transform.TransformPoint((Vector3)vector11);
             world.z = 0f;
             Vector2 a    = HandleUtility.WorldToGUIPoint(world);
             float   num8 = HandleUtility.GetHandleSize(world) * 0.04f;
             if (((this.m_DeleteMode && (current.type == EventType.MouseDown)) && (Vector2.Distance(a, Event.current.mousePosition) < 50f)) || this.DeleteCommandEvent(current))
             {
                 if ((current.type != EventType.ValidateCommand) && (PolygonEditor.GetPointCount(this.m_SelectedPath) > this.m_MinPathPoints))
                 {
                     PolygonEditor.RemovePoint(this.m_SelectedPath, this.m_SelectedVertex);
                     this.Reset();
                     flag3 = true;
                 }
                 current.Use();
             }
             EditorGUI.BeginChangeCheck();
             Handles.color = !this.m_DeleteMode ? Color.green : Color.red;
             Vector3 position = Handles.Slider2D(world, new Vector3(0f, 0f, 1f), new Vector3(1f, 0f, 0f), new Vector3(0f, 1f, 0f), num8, new Handles.DrawCapFunction(Handles.DotCap), Vector3.zero);
             Handles.color = Color.white;
             if (EditorGUI.EndChangeCheck() && !this.m_DeleteMode)
             {
                 vector11 = transform.InverseTransformPoint(position) - offset;
                 PolygonEditor.TestPointMove(this.m_SelectedPath, this.m_SelectedVertex, vector11, out this.m_LeftIntersect, out this.m_RightIntersect, this.m_LoopingCollider);
                 PolygonEditor.SetPoint(this.m_SelectedPath, this.m_SelectedVertex, vector11);
                 flag3 = true;
             }
             if (!flag3)
             {
                 this.DrawEdgesForSelectedPoint(position, transform, this.m_LeftIntersect, this.m_RightIntersect, this.m_LoopingCollider);
             }
         }
         if (flag3)
         {
             Undo.RecordObject(this.m_ActiveCollider, "Edit Collider");
             PolygonEditor.ApplyEditing(this.m_ActiveCollider);
         }
         if (this.DeleteCommandEvent(current))
         {
             Event.current.Use();
         }
         this.m_FirstOnSceneGUIAfterReset = false;
     }
 }
All Usage Examples Of UnityEditor.PolygonEditor::InsertPoint