示例#1
0
    public override void OnInspectorGUI()
    {
        AIwayPointNetwork network = (AIwayPointNetwork)target;

        network.DisplayMode = (PathDisplayMode)EditorGUILayout.EnumPopup("displaymode", network.DisplayMode);
        if (network.DisplayMode == PathDisplayMode.Paths)
        {
            network.UIStart = EditorGUILayout.IntSlider("waypoint start", network.UIStart, 0, network.waypoints.Count - 1);
            network.UIEnd   = EditorGUILayout.IntSlider("waypoint EnD", network.UIEnd, 0, network.waypoints.Count - 1);
        }
        DrawDefaultInspector();
    }
示例#2
0
    void OnSceneGUI()
    {
        AIwayPointNetwork network = (AIwayPointNetwork)target;
        GUIStyle          style   = new GUIStyle();

        style.normal.textColor = Color.white;

        for (int i = 0; i < network.waypoints.Count; i++)
        {
            if (network.waypoints[i] != null)
            {
                Handles.Label(network.waypoints[i].position, "waypoint: " + i.ToString(), style);
            }
        }

        if (network.DisplayMode == PathDisplayMode.Connections)
        {
            Vector3[] linePoints = new Vector3[network.waypoints.Count + 1];
            for (int i = 0; i <= network.waypoints.Count; i++)
            {
                int index = i != network.waypoints.Count ? i : 0;
                if (network.waypoints[index] != null)
                {
                    linePoints[i] = network.waypoints[index].position;
                }
                else
                {
                    linePoints[i] = new Vector3(Mathf.Infinity, Mathf.Infinity, Mathf.Infinity);
                }
            }
            Handles.color = Color.cyan;
            Handles.DrawPolyLine(linePoints);
        }
        else
        if (network.DisplayMode == PathDisplayMode.Paths)
        {
            NavMeshPath path = new NavMeshPath();
            Vector3     from = network.waypoints[network.UIStart].position;
            Vector3     to   = network.waypoints[network.UIEnd].position;

            NavMesh.CalculatePath(from, to, NavMesh.AllAreas, path);
            Handles.color = Color.green;
            Handles.DrawPolyLine(path.corners);
        }
    }