UnityEditor.PolygonEditor.TestPointMove C# (CSharp) Method

TestPointMove() public static method

public static TestPointMove ( int pathIndex, int pointIndex, Vector2 movePosition, bool &leftIntersect, bool &rightIntersect, bool loop ) : void
pathIndex int
pointIndex int
movePosition Vector2
leftIntersect bool
rightIntersect bool
loop bool
return void
        public static void TestPointMove(int pathIndex, int pointIndex, Vector2 movePosition, out bool leftIntersect, out bool rightIntersect, bool loop)
        {
            INTERNAL_CALL_TestPointMove(pathIndex, pointIndex, ref movePosition, out leftIntersect, out rightIntersect, loop);
        }
    }

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::TestPointMove