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 } }