//------------------------------------------------------------------ private bool GUI_Enabled() { bool tileUpdateInProgress = (EasyTerrain.GetUpdateStatusPercentage() < 100) ? true : false; GUI.enabled = !tileUpdateInProgress && !Application.isPlaying && (serializedObject.FindProperty("player").objectReferenceValue != null); return(GUI.enabled); }
//------------------------------------------------------------------ void UpdateButtons() { EditorGUILayout.BeginVertical("Box"); { EditorGUILayout.Space(); SerializedProperty tileList = serializedObject.FindProperty("tileList"); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.BeginVertical(); { { //GUI_Enabled(); string buttonText = (tileList.arraySize == 0) ? "Create Terrain" : "Update Terrain"; if (deleteButtonEnabled) { buttonText = "Delete Terrain"; } bool tileUpdateInProgress = (EasyTerrain.GetUpdateStatusPercentage() < 100) ? true : false; if (tileUpdateInProgress) { buttonText = "Stop"; } if (GUILayout.Button(buttonText, GUILayout.Width(EditorGUIUtility.currentViewWidth - 100))) { if (!tileUpdateInProgress) { if (!deleteButtonEnabled) { script.GenerateTerrainTiles(); } else { script.DeleteTerrainTiles(); deleteButtonEnabled = false; } } else { script.StopUpdate(); } } GUI.enabled = true; } { string updateStatusPercentageString = "" + Mathf.Round(EasyTerrain.GetUpdateStatusPercentage()) + "%"; EditorGUILayout.LabelField("", GUILayout.Width(EditorGUIUtility.currentViewWidth - 100)); EditorGUI.ProgressBar(GUILayoutUtility.GetLastRect(), EasyTerrain.GetUpdateStatusPercentage() * 0.01f, updateStatusPercentageString); } } GUILayout.EndVertical(); EditorGUILayout.BeginVertical(); { { GUI_Enabled(); deleteButtonEnabled = GUILayout.Toggle(deleteButtonEnabled, "delete", GUILayout.Width(60)); GUI.enabled = true; } { string progressSecondsString = "(" + EasyTerrain.GetStopwatchElapsedSeconds().ToString("F") + " s)"; EditorGUILayout.LabelField(progressSecondsString, GUILayout.Width(60)); } } GUILayout.EndVertical(); } EditorGUILayout.EndHorizontal(); //TileList (); EditorGUILayout.Space(); } GUILayout.EndVertical(); }