/**
         	* 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();
        }
Ejemplo n.º 2
0
        /**
         * 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();
        }