Esempio n. 1
0
    void OnGUI()
    {
        if (SimGUIUtil.hideGUI || mGroup.mesh == null)
        {
            return;
        }

        LabelRegion labels = SimGUIUtil.labels;

        labels.Clear();

        if (mPathCount == 0)
        {
            labels.Last = "No path.";
            SimGUIUtil.OnGUI();
            return;
        }

        GUILayout.BeginArea(SimGUIUtil.contextControlZone, GUI.skin.box);

        if (GUILayout.Button("Optimize Topology"))
        {
            mCorridor.OptimizePathTopology(true);
        }

        GUI.enabled = (mPathEnd.polyRef != 0);
        if (GUILayout.Button("Replan Path"))
        {
            FindPath();
        }

        GUI.enabled = true;

        mPath.OnGUI();
        if (mPath.HandleResize())
        {
            HandlePathBufferResize();
        }

        mCornerPolys.OnGUI();
        if (mCornerPolys.HandleResize())
        {
            mCorridor.ResizeCornerBuffer(mCornerPolys.MaxElementCount);
        }

        GUILayout.Label("Optimiation Range");

        GUILayout.BeginHorizontal();

        optimizationRange = (int)GUILayout.HorizontalSlider(optimizationRange, 1, 30);

        GUILayout.Label(optimizationRange.ToString());

        GUILayout.EndHorizontal();

        GUILayout.EndArea();

        const int LabelCount = 2;
        int       slotIndex  = labels.SlotCount - LabelCount;

        string msg = mCorridor.Corners.cornerCount + " of " + (mCorridor.Corners.MaxCorners - 1);

        labels.Set(slotIndex++, "Detected Corners", msg);

        msg = mPathCount + " of " + mCorridor.MaxPathSize;
        labels.Set(slotIndex++, "Corridor Polygons", msg);

        SimGUIUtil.OnGUI();
    }