Пример #1
0
    // Delete the closest node to proximity of 1.0f on click
    void DeleteNode()
    {
        Event        current = Event.current;
        WaypointNode dNode   = null;

        if (!current.alt)
        {
            Ray        mRay = HandleUtility.GUIPointToWorldRay(current.mousePosition);
            RaycastHit rHit;

            if (Physics.Raycast(mRay, out rHit, Mathf.Infinity))
            {
                dNode = currentWaypoints.GetClosestNode(rHit.point, 1.0f);
            }

            if (dNode != null)
            {
                Handles.DrawWireDisc(dNode.Position, Vector3.up, 0.5f);
            }


            if (current.type == EventType.mouseDown && dNode != null)
            {
                foreach (WaypointLink p in dNode.NeighborNodes)
                {
                    WaypointNode node = (WaypointNode)currentWaypoints.GetClosestNode(p.from);
                    node.RemoveLink(p);
                    node = (WaypointNode)currentWaypoints.GetClosestNode(p.to);
                    node.RemoveLink(p);
                }
                currentWaypoints.WaypointList.Remove(dNode);
                dNode = null;
            }
        }
    }