public static bool OnShowGUI(GeneratorLinearStairs generator, bool isSceneGUI)
 {
     CSG_GUIStyleUtility.InitStyles();
     OnGUIContents(generator, isSceneGUI);
     return(true);
 }
        void ResetTool()
        {
            RealtimeCSG.CSGGrid.ForceGrid = false;
            if (!freedrawGenerator)
            {
                freedrawGenerator = ScriptableObject.CreateInstance <GeneratorFreeDraw>();
                freedrawGenerator.snapFunction    = EditModeManager.SnapPointToGrid;
                freedrawGenerator.raySnapFunction = EditModeManager.SnapPointToRay;
                freedrawGenerator.shapeCancelled  = OnShapeCancelledEvent;
                freedrawGenerator.shapeCommitted  = OnShapeCommittedEvent;
            }
            if (!cylinderGenerator)
            {
                cylinderGenerator = ScriptableObject.CreateInstance <GeneratorCylinder>();
                cylinderGenerator.snapFunction    = EditModeManager.SnapPointToGrid;
                cylinderGenerator.raySnapFunction = EditModeManager.SnapPointToRay;
                cylinderGenerator.shapeCancelled  = OnShapeCancelledEvent;
                cylinderGenerator.shapeCommitted  = OnShapeCommittedEvent;
            }
            if (!boxGenerator)
            {
                boxGenerator = ScriptableObject.CreateInstance <GeneratorBox>();
                boxGenerator.snapFunction    = EditModeManager.SnapPointToGrid;
                boxGenerator.raySnapFunction = EditModeManager.SnapPointToRay;
                boxGenerator.shapeCancelled  = OnShapeCancelledEvent;
                boxGenerator.shapeCommitted  = OnShapeCommittedEvent;
            }
            if (!sphereGenerator)
            {
                sphereGenerator = ScriptableObject.CreateInstance <GeneratorSphere>();
                sphereGenerator.snapFunction    = EditModeManager.SnapPointToGrid;
                sphereGenerator.raySnapFunction = EditModeManager.SnapPointToRay;
                sphereGenerator.shapeCancelled  = OnShapeCancelledEvent;
                sphereGenerator.shapeCommitted  = OnShapeCommittedEvent;
            }
            if (!linearStairsGenerator)
            {
                linearStairsGenerator = ScriptableObject.CreateInstance <GeneratorLinearStairs>();
                linearStairsGenerator.snapFunction    = EditModeManager.SnapPointToGrid;
                linearStairsGenerator.raySnapFunction = EditModeManager.SnapPointToRay;
                linearStairsGenerator.shapeCancelled  = OnShapeCancelledEvent;
                linearStairsGenerator.shapeCommitted  = OnShapeCommittedEvent;
            }
            if (!spiralStairsGenerator)
            {
                spiralStairsGenerator = ScriptableObject.CreateInstance <GeneratorSpiralStairs>();
                spiralStairsGenerator.snapFunction    = EditModeManager.SnapPointToGrid;
                spiralStairsGenerator.raySnapFunction = EditModeManager.SnapPointToRay;
                spiralStairsGenerator.shapeCancelled  = OnShapeCancelledEvent;
                spiralStairsGenerator.shapeCommitted  = OnShapeCommittedEvent;
            }

            var generator = InternalCurrentGenerator;

            if (generator != null)
            {
                var obj = generator as ScriptableObject;
                if (obj)
                {
                    generator.Init();
                }
            }
        }
        static void OnGUIContents(GeneratorLinearStairs generator, bool isSceneGUI)
        {
            GUILayout.BeginVertical(CSG_GUIStyleUtility.ContentEmpty);
            {
                EditorGUI.BeginChangeCheck();
                var totalSteps = Mathf.Max(IntValueSettings(generator.TotalSteps, TotalStepsContent, TotalStepsTooltip, isSceneGUI), 1);
                if (EditorGUI.EndChangeCheck())
                {
                    generator.TotalSteps = totalSteps;
                }

                EditorGUI.BeginChangeCheck();
                var stepDepth = Mathf.Max(FloatUnitsSettings(generator.StepDepth, StepDepthContent, StepDepthTooltip, isSceneGUI), GeneratorLinearStairsSettings.kMinStepDepth);
                if (EditorGUI.EndChangeCheck())
                {
                    generator.StepDepth = stepDepth;
                }

                EditorGUI.BeginChangeCheck();
                var stepHeight = Mathf.Max(FloatUnitsSettings(generator.StepHeight, StepHeightContent, StepHeightTooltip, isSceneGUI), GeneratorLinearStairsSettings.kMinStepHeight);
                if (EditorGUI.EndChangeCheck())
                {
                    generator.StepHeight = stepHeight;
                }

                GUILayout.Space(4);

                EditorGUI.BeginChangeCheck();
                var stairsWidth = Mathf.Max(FloatUnitsSettings(generator.StairsWidth, StairsWidthContent, StairsWidthTooltip, isSceneGUI), 0.01f);
                if (EditorGUI.EndChangeCheck())
                {
                    generator.StairsWidth = stairsWidth;
                }

                EditorGUI.BeginChangeCheck();
                var stairsHeight = Mathf.Max(FloatUnitsSettings(generator.StairsHeight, StairsHeightContent, StairsHeightTooltip, isSceneGUI), 0.01f);
                if (EditorGUI.EndChangeCheck())
                {
                    generator.StairsHeight = stairsHeight;
                }

                EditorGUI.BeginChangeCheck();
                var stairsDepth = Mathf.Max(FloatUnitsSettings(generator.StairsDepth, StairsDepthContent, StairsDepthTooltip, isSceneGUI), 0.01f);
                if (EditorGUI.EndChangeCheck())
                {
                    generator.StairsDepth = stairsDepth;
                }

                GUILayout.Space(4);

                EditorGUI.BeginChangeCheck();
                var extraDepth = Mathf.Max(FloatUnitsSettings(generator.ExtraDepth, ExtraDepthContent, ExtraDepthTooltip, isSceneGUI), 0);
                if (EditorGUI.EndChangeCheck())
                {
                    generator.ExtraDepth = extraDepth;
                }

                EditorGUI.BeginChangeCheck();
                var extraHeight = Mathf.Max(FloatUnitsSettings(generator.ExtraHeight, ExtraHeightContent, ExtraHeightTooltip, isSceneGUI), 0);
                if (EditorGUI.EndChangeCheck())
                {
                    generator.ExtraHeight = extraHeight;
                }

                EditorGUI.BeginChangeCheck();
                var bottom = EnumValueSettings(generator.StairsBottom, StairsBottomContent, StairsBottomTooltip, isSceneGUI);
                if (EditorGUI.EndChangeCheck())
                {
                    generator.StairsBottom = bottom;
                }
            }
            GUILayout.EndVertical();
        }