Пример #1
0
        private void ImportantButtons()
        {
            //properties

            EditorGUI.BeginChangeCheck();
            bool someBool = EditorGUILayout.Foldout(drawBuilder.boolValue, drawBuilderContent);

            if (EditorGUI.EndChangeCheck())
            {
                drawBuilder.boolValue = someBool;
            }



            if (drawBuilder.boolValue)
            {
                float rightOffset      = 30;
                float singleLineHeight = EditorGUIUtility.singleLineHeight;

                EditorGUILayout.PropertyField(targetProperties, targetPropertiesContent);

                //sellected chunks
                #region sellector
                Rect buildAreaRect = GUILayoutUtility.GetRect(Screen.width - rightOffset, singleLineHeight * 3);

                Rect baLeftRect  = new Rect(buildAreaRect.x, buildAreaRect.y + singleLineHeight, buildAreaRect.width * 0.5f, buildAreaRect.height - singleLineHeight);
                Rect baRightRect = new Rect(buildAreaRect.x + (buildAreaRect.width * 0.5f), buildAreaRect.y + singleLineHeight, buildAreaRect.width * 0.5f, buildAreaRect.height - singleLineHeight);

                GUI.Box(buildAreaRect, buildAreaString);
                //GUI.Box(baLeftRect, string.Empty);
                //GUI.Box(baRightRect, string.Empty);

                AreaPointer areaPointer = settings.areaPointer;

                float tLabelSize = 40;
                float tRemainSize = Mathf.Max(baRightRect.width - tLabelSize, 0);
                int   pStartX, pStartZ, pSizeX, pSizeZ;
                Rect  rectStartLablel = new Rect(baRightRect.x, baRightRect.y, tLabelSize, singleLineHeight);
                Rect  rectStartX      = new Rect(baRightRect.x + tLabelSize, baRightRect.y, tRemainSize * 0.5f, singleLineHeight);
                Rect  rectStartZ      = new Rect(baRightRect.x + tLabelSize + (tRemainSize * 0.5f), baRightRect.y, tRemainSize * 0.5f, singleLineHeight);

                Rect rectSizeLablel = new Rect(baRightRect.x, baRightRect.y + singleLineHeight, tLabelSize, singleLineHeight);
                Rect rectSizeX      = new Rect(baRightRect.x + tLabelSize, baRightRect.y + singleLineHeight, tRemainSize * 0.5f, singleLineHeight);
                Rect rectSizeZ      = new Rect(baRightRect.x + tLabelSize + (tRemainSize * 0.5f), baRightRect.y + singleLineHeight, tRemainSize * 0.5f, singleLineHeight);

                EditorGUIUtility.labelWidth = tLabelSize;
                EditorGUI.LabelField(rectStartLablel, "Start");
                EditorGUI.LabelField(rectSizeLablel, "Size");

                EditorGUIUtility.labelWidth = 15;
                EditorGUI.BeginChangeCheck();
                pStartX = EditorGUI.IntField(rectStartX, startXContent, areaPointer.roundStartX);
                pStartZ = EditorGUI.IntField(rectStartZ, startZContent, areaPointer.roundStartZ);
                pSizeX  = EditorGUI.IntField(rectSizeX, sizeXContent, areaPointer.roundSizeX);
                pSizeZ  = EditorGUI.IntField(rectSizeZ, sizeZContent, areaPointer.roundSizeZ);
                if (EditorGUI.EndChangeCheck())
                {
                    settings.areaPointer = new AreaPointer(pStartX, pStartZ, pStartX + pSizeX, pStartZ + pSizeZ, settings.areaPointer.y);
                }
                EditorGUIUtility.labelWidth = LABEL_WIDTH;

                if (sellectorMove)
                {
                    GUI.Box(new Rect(baLeftRect.x, baLeftRect.y, baLeftRect.width, singleLineHeight), "Move");
                }
                else
                {
                    if (GUI.Button(new Rect(baLeftRect.x, baLeftRect.y, baLeftRect.width, singleLineHeight), "Move"))
                    {
                        sellectorMove = true;
                    }
                }

                if (GUI.Button(new Rect(baLeftRect.x, baLeftRect.y + singleLineHeight, baLeftRect.width, singleLineHeight), "Reset"))
                {
                    settingsDrawer.ResetAreaPointer();
                }


                #endregion

                GUILayout.Space(5);

                //control buttons
                #region control buttons
                Rect things = GUILayoutUtility.GetRect(Screen.width - rightOffset, singleLineHeight * 4);

                Rect left  = new Rect(things.x, things.y, things.width * 0.5f, things.height);
                Rect right = new Rect(things.x + (things.width * 0.5f), things.y, things.width * 0.5f, things.height);

                GUI.Box(left, leftBoxContent);
                GUI.Box(right, rightBoxContent);

                #region navmesh building
                Rect rectBuild = new Rect(left.x, left.y + singleLineHeight, left.width, singleLineHeight);

                if (GUI.Button(rectBuild, buildContent))
                {
                    if (settings.targetProperties != null)
                    {
                        PathFinder.QueueGraph(
                            settings.areaPointer.roundStartX,
                            settings.areaPointer.roundStartZ,
                            settings.targetProperties,
                            settings.areaPointer.roundSizeX,
                            settings.areaPointer.roundSizeZ);
                    }
                    else
                    {
                        Debug.LogWarning(forgotToAddPropertiesWarning);
                    }
                }


                GUIContent targetRemoveContent = settings.removeAndRebuild ? removeAndRebuildContent : removeContent;

                Rect rectRemove       = new Rect(left.x, left.y + (singleLineHeight * 2), left.width - singleLineHeight, singleLineHeight);
                Rect rectRemoveToggle = new Rect(left.x + (left.width - singleLineHeight), left.y + (singleLineHeight * 2), singleLineHeight, singleLineHeight);

                if (GUI.Button(rectRemove, targetRemoveContent))
                {
                    if (settings.targetProperties != null)
                    {
                        PathFinder.RemoveGraph(
                            settings.areaPointer.roundStartX,
                            settings.areaPointer.roundStartZ,
                            settings.targetProperties,
                            settings.areaPointer.roundSizeX,
                            settings.areaPointer.roundSizeZ,
                            settings.removeAndRebuild);
                    }
                    else
                    {
                        Debug.LogWarning(forgotToAddPropertiesWarning);
                    }
                }

                EditorGUI.BeginChangeCheck();
                someBool = GUI.Toggle(rectRemoveToggle, settings.removeAndRebuild, rebuildToggleContent);
                if (EditorGUI.EndChangeCheck())
                {
                    settings.removeAndRebuild = someBool;
                }

                Rect rectClear = new Rect(left.x, left.y + (singleLineHeight * 3), left.width, singleLineHeight);

                if (GUI.Button(rectClear, clearContent))
                {
                    PathFinder.ClearAllWork();
                    Debuger_K.ClearChunksDebug();
                }
                #endregion

                if (GUI.Button(new Rect(right.x, right.y + singleLineHeight, right.width, singleLineHeight), saveContent))
                {
                    PathFinder.SaveCurrentSceneData();
                }
                if (GUI.Button(new Rect(right.x, right.y + (singleLineHeight * 2), right.width, singleLineHeight), loadContent))
                {
                    PathFinder.LoadCurrentSceneData();
                }
                if (GUI.Button(new Rect(right.x, right.y + (singleLineHeight * 3), right.width, singleLineHeight), deleteContent))
                {
                    PathFinder.ClearCurrenSceneData();
                }
                #endregion
            }
        }