/** * Draws a window with cloth tools: */ void DrawUIWindow(int windowID) { //------------------------------- // Visualization options //------------------------------- GUILayout.BeginHorizontal(); backfaces = GUILayout.Toggle(backfaces,"backfaces"); GUILayout.EndHorizontal(); GUILayout.Box("",separatorLine); //------------------------------- // Tools //------------------------------- bool customMenu = (CustomUIName() != null); GUILayout.BeginHorizontal(); if (GUILayout.Toggle(tool == EditionTool.SELECT,"Select",GUI.skin.FindStyle("ButtonLeft")) && tool != EditionTool.SELECT){ tool = EditionTool.SELECT; ForceWindowRelayout(); } if (GUILayout.Toggle(tool == EditionTool.SELECTBRUSH,"Brush",GUI.skin.FindStyle("ButtonMid")) && tool != EditionTool.SELECTBRUSH){ tool = EditionTool.SELECTBRUSH; ForceWindowRelayout(); } if (GUILayout.Toggle(tool == EditionTool.PAINT,"Paint",customMenu? GUI.skin.FindStyle("ButtonMid"):GUI.skin.FindStyle("ButtonRight")) && tool != EditionTool.PAINT){ tool = EditionTool.PAINT; ForceWindowRelayout(); } if (customMenu){ if (GUILayout.Toggle(tool == EditionTool.CUSTOM,CustomUIName(),GUI.skin.FindStyle("ButtonRight")) && tool != EditionTool.CUSTOM){ tool = EditionTool.CUSTOM; ForceWindowRelayout(); } } GUILayout.EndHorizontal(); EditorGUI.BeginChangeCheck(); currentProperty = (ParticleProperty) EditorGUILayout.EnumPopup(currentProperty,GUI.skin.FindStyle("DropDown")); if (EditorGUI.EndChangeCheck()){ ParticlePropertyChanged(); } switch(tool){ case EditionTool.SELECT: DrawSelectionToolUI(); break; case EditionTool.SELECTBRUSH: GUILayout.BeginHorizontal(); GUILayout.Label("Radius"); brushRadius = EditorGUILayout.Slider(brushRadius,5,200); GUILayout.EndHorizontal(); DrawSelectionToolUI(); break; case EditionTool.PAINT: DrawPaintToolUI(); break; case EditionTool.CUSTOM: DrawCustomUI(); break; } //------------------------------- //Playback functions //------------------------------- GUILayout.Box("",separatorLine); GUILayout.BeginHorizontal(); GUI.enabled = !EditorApplication.isPlaying; if (GUILayout.Button(EditorGUIUtility.Load("RewindButton.psd") as Texture2D,GUILayout.MaxHeight(24),GUILayout.Width(42))){ actor.ResetActor(); if (actor.InSolver) actor.RemoveFromSolver(null); accumulatedTime = 0; } if (GUILayout.Button(EditorGUIUtility.Load("StopButton.psd") as Texture2D,GUILayout.MaxHeight(24),GUILayout.Width(42))){ isPlaying = false; } if (GUILayout.Button(EditorGUIUtility.Load("PlayButton.psd") as Texture2D,GUILayout.MaxHeight(24),GUILayout.Width(42))){ if (!actor.InSolver) actor.AddToSolver(null); lastFrameTime = Time.realtimeSinceStartup; isPlaying = true; } if (GUILayout.Button(EditorGUIUtility.Load("StepButton.psd") as Texture2D,GUILayout.MaxHeight(24),GUILayout.Width(42))){ isPlaying = false; if (!actor.InSolver) actor.AddToSolver(null); if (actor.InSolver){ actor.solver.AccumulateSimulationTime(Time.fixedDeltaTime); actor.solver.SimulateStep(Time.fixedDeltaTime); actor.solver.EndFrame(Time.fixedDeltaTime); } } GUI.enabled = true; GUILayout.EndHorizontal(); }
/** * Draws a window with cloth tools: */ void DrawUIWindow(int windowID) { //------------------------------- // Visualization options //------------------------------- GUILayout.BeginHorizontal(); backfaces = GUILayout.Toggle(backfaces, "backfaces"); GUILayout.EndHorizontal(); GUILayout.Box("", separatorLine); //------------------------------- // Tools //------------------------------- bool customMenu = (CustomUIName() != null); GUILayout.BeginHorizontal(); if (GUILayout.Toggle(tool == EditionTool.SELECT, "Select", GUI.skin.FindStyle("ButtonLeft")) && tool != EditionTool.SELECT) { tool = EditionTool.SELECT; ForceWindowRelayout(); } if (GUILayout.Toggle(tool == EditionTool.SELECTBRUSH, "Brush", GUI.skin.FindStyle("ButtonMid")) && tool != EditionTool.SELECTBRUSH) { tool = EditionTool.SELECTBRUSH; ForceWindowRelayout(); } if (GUILayout.Toggle(tool == EditionTool.PAINT, "Paint", customMenu? GUI.skin.FindStyle("ButtonMid"):GUI.skin.FindStyle("ButtonRight")) && tool != EditionTool.PAINT) { tool = EditionTool.PAINT; ForceWindowRelayout(); } if (customMenu) { if (GUILayout.Toggle(tool == EditionTool.CUSTOM, CustomUIName(), GUI.skin.FindStyle("ButtonRight")) && tool != EditionTool.CUSTOM) { tool = EditionTool.CUSTOM; ForceWindowRelayout(); } } GUILayout.EndHorizontal(); EditorGUI.BeginChangeCheck(); currentProperty = (ParticleProperty)EditorGUILayout.EnumPopup(currentProperty, GUI.skin.FindStyle("DropDown")); if (EditorGUI.EndChangeCheck()) { ParticlePropertyChanged(); } switch (tool) { case EditionTool.SELECT: DrawSelectionToolUI(); break; case EditionTool.SELECTBRUSH: GUILayout.BeginHorizontal(); GUILayout.Label("Radius"); brushRadius = EditorGUILayout.Slider(brushRadius, 5, 200); GUILayout.EndHorizontal(); DrawSelectionToolUI(); break; case EditionTool.PAINT: DrawPaintToolUI(); break; case EditionTool.CUSTOM: DrawCustomUI(); break; } //------------------------------- //Playback functions //------------------------------- GUILayout.Box("", separatorLine); GUILayout.BeginHorizontal(); GUI.enabled = !EditorApplication.isPlaying; if (GUILayout.Button(EditorGUIUtility.Load("RewindButton.psd") as Texture2D, GUILayout.MaxHeight(24), GUILayout.Width(42))) { actor.ResetActor(); if (actor.InSolver) { actor.RemoveFromSolver(null); } accumulatedTime = 0; } if (GUILayout.Button(EditorGUIUtility.Load("StopButton.psd") as Texture2D, GUILayout.MaxHeight(24), GUILayout.Width(42))) { isPlaying = false; } if (GUILayout.Button(EditorGUIUtility.Load("PlayButton.psd") as Texture2D, GUILayout.MaxHeight(24), GUILayout.Width(42))) { if (!actor.InSolver) { actor.AddToSolver(null); } lastFrameTime = Time.realtimeSinceStartup; isPlaying = true; } if (GUILayout.Button(EditorGUIUtility.Load("StepButton.psd") as Texture2D, GUILayout.MaxHeight(24), GUILayout.Width(42))) { isPlaying = false; if (!actor.InSolver) { actor.AddToSolver(null); } if (actor.InSolver) { actor.solver.AccumulateSimulationTime(Time.fixedDeltaTime); actor.solver.SimulateStep(Time.fixedDeltaTime); actor.solver.EndFrame(Time.fixedDeltaTime); } } GUI.enabled = true; GUILayout.EndHorizontal(); }