示例#1
0
        void ResetTool()
        {
            Grid.ForceGrid = false;
            if (!freedrawGenerator)
            {
                freedrawGenerator = ScriptableObject.CreateInstance <FreeDrawGenerator>();
                freedrawGenerator.snapFunction    = CSGBrushEditorManager.SnapPointToGrid;
                freedrawGenerator.raySnapFunction = CSGBrushEditorManager.SnapPointToRay;
                freedrawGenerator.shapeCancelled  = OnShapeCancelledEvent;
                freedrawGenerator.shapeCommitted  = OnShapeCommittedEvent;
            }
            if (!cylinderGenerator)
            {
                cylinderGenerator = ScriptableObject.CreateInstance <CylinderGenerator>();
                cylinderGenerator.snapFunction    = CSGBrushEditorManager.SnapPointToGrid;
                cylinderGenerator.raySnapFunction = CSGBrushEditorManager.SnapPointToRay;
                cylinderGenerator.shapeCancelled  = OnShapeCancelledEvent;
                cylinderGenerator.shapeCommitted  = OnShapeCommittedEvent;
            }
            if (!boxGenerator)
            {
                boxGenerator = ScriptableObject.CreateInstance <BoxGenerator>();
                boxGenerator.snapFunction    = CSGBrushEditorManager.SnapPointToGrid;
                boxGenerator.raySnapFunction = CSGBrushEditorManager.SnapPointToRay;
                boxGenerator.shapeCancelled  = OnShapeCancelledEvent;
                boxGenerator.shapeCommitted  = OnShapeCommittedEvent;
            }
            if (!sphereGenerator)
            {
                sphereGenerator = ScriptableObject.CreateInstance <SphereGenerator>();
                sphereGenerator.snapFunction    = CSGBrushEditorManager.SnapPointToGrid;
                sphereGenerator.raySnapFunction = CSGBrushEditorManager.SnapPointToRay;
                sphereGenerator.shapeCancelled  = OnShapeCancelledEvent;
                sphereGenerator.shapeCommitted  = OnShapeCommittedEvent;
            }

            var generator = InternalCurrentGenerator;

            if (generator != null)
            {
                var obj = generator as ScriptableObject;
                if (obj)
                {
                    generator.Init();
                }
            }
        }
示例#2
0
        static void FreeDrawSettingsGUI(FreeDrawGenerator generator, bool isSceneGUI)
        {
            var distanceUnit = RealtimeCSG.CSGSettings.DistanceUnit;
            var nextUnit     = Units.CycleToNextUnit(distanceUnit);
            var unitText     = Units.GetUnitGUIContent(distanceUnit);

            GUILayout.BeginVertical(GUIStyleUtility.ContentEmpty);
            {
                {
                    GUILayout.BeginHorizontal(GUIStyleUtility.ContentEmpty);
                    {
                        GUILayout.Label(HeightContent, width65);
                        var height = generator.HaveHeight ? generator.Height : GeometryUtility.CleanLength(generator.DefaultHeight);
                        EditorGUI.BeginChangeCheck();
                        {
                            height = Units.DistanceUnitToUnity(distanceUnit, EditorGUILayout.DoubleField(Units.UnityToDistanceUnit(distanceUnit, height)));
                        }
                        if (EditorGUI.EndChangeCheck())
                        {
                            if (generator.HaveHeight)
                            {
                                generator.Height = height;
                            }
                            else
                            {
                                generator.DefaultHeight = height;
                            }
                        }
                        if (GUILayout.Button(unitText, EditorStyles.miniLabel, width20))
                        {
                            distanceUnit = nextUnit;
                            RealtimeCSG.CSGSettings.DistanceUnit = distanceUnit;
                            RealtimeCSG.CSGSettings.UpdateSnapSettings();
                            RealtimeCSG.CSGSettings.Save();
                            SceneView.RepaintAll();
                        }
                    }
                    GUILayout.EndHorizontal();
                    TooltipUtility.SetToolTip(HeightTooltip);
                }
#if DEMO
                EditorGUI.BeginDisabledGroup(true);
#endif
                {
                    GUILayout.BeginHorizontal(GUIStyleUtility.ContentEmpty);
                    {
                        GUILayout.Label(CurveSidesContent, width65);
                        var subdivisions = generator.CurveSides;
                        EditorGUI.BeginChangeCheck();
                        {
                            subdivisions = (uint)Mathf.Clamp(EditorGUILayout.IntField((int)subdivisions), 0, 32);
                        }
                        if (EditorGUI.EndChangeCheck() && generator.CurveSides != subdivisions)
                        {
                            generator.CurveSides = subdivisions;
                        }
                    }
                    GUILayout.EndHorizontal();
                    TooltipUtility.SetToolTip(CurveSidesTooltip);
                }
                {
                    GUILayout.BeginHorizontal(GUIStyleUtility.ContentEmpty);
                    {
                        EditorGUI.BeginDisabledGroup(!generator.HaveSelectedEdgesOrVertices);
                        {
                            var tangentState = generator.SelectedTangentState;
                            EditorGUI.BeginChangeCheck();
                            {
                                GUILayout.Label(EdgeTypeContent, width65);
                                EditorGUI.showMixedValue = !tangentState.HasValue;
                                tangentState             = (HandleConstraints)EditorGUILayout.EnumPopup(tangentState.HasValue ? tangentState.Value : HandleConstraints.Straight);
                                EditorGUI.showMixedValue = false;
                            }
                            if (EditorGUI.EndChangeCheck())
                            {
                                generator.SelectedTangentState = tangentState;
                            }
                        }
                        EditorGUI.EndDisabledGroup();
                    }
                    GUILayout.EndHorizontal();
                    TooltipUtility.SetToolTip(EdgeTypeTooltip);
                }
                EditorGUILayout.Space();
#if DEMO
                EditorGUI.EndDisabledGroup();
#endif

                EditorGUI.BeginDisabledGroup(!generator.HaveSelectedEdges);
                {
                    if (GUILayout.Button(SplitSelectedContent))
                    {
                        generator.SplitSelectedEdge();
                    }
                    TooltipUtility.SetToolTip(SplitSelectedTooltip);
                }
                EditorGUI.EndDisabledGroup();

                /*
                 * GUILayout.BeginHorizontal(GUIStyleUtility.ContentEmpty);
                 * {
                 *      if (isSceneGUI)
                 *              GUILayout.Label(AlphaContent, width75);
                 *      else
                 *              EditorGUILayout.PrefixLabel(AlphaContent);
                 *      var alpha = generator.Alpha;
                 *      EditorGUI.BeginChangeCheck();
                 *      {
                 *              alpha = EditorGUILayout.Slider(alpha, -1.0f, 3.0f);
                 *      }
                 *      if (EditorGUI.EndChangeCheck() && generator.Alpha != alpha)
                 *      {
                 *              generator.Alpha = alpha;
                 *      }
                 * }
                 * GUILayout.EndHorizontal();
                 */
            }
            GUILayout.EndVertical();
        }
示例#3
0
 public static bool OnShowGUI(FreeDrawGenerator generator, bool isSceneGUI)
 {
     GUIStyleUtility.InitStyles();
     OnGUIContents(generator, isSceneGUI);
     return(true);
 }
示例#4
0
        static void OnGUIContents(FreeDrawGenerator generator, bool isSceneGUI)
        {
            //GUILayout.BeginVertical(GUIStyleUtility.ContentEmpty);
            //{
//				bool enabled = generator.HaveBrushes;
            GUILayout.BeginHorizontal(GUIStyleUtility.ContentEmpty);
            {
                /*
                 * EditorGUI.BeginDisabledGroup(!enabled);
                 * {
                 *      GUILayout.BeginHorizontal(GUIStyleUtility.ContentEmpty);
                 *      {
                 *              GUILayout.BeginVertical(isSceneGUI ? GUI.skin.box : GUIStyle.none);
                 *              {
                 *                      bool mixedValues = !enabled;
                 *                      CSGOperationType operation = generator.CurrentCSGOperationType;
                 *                      EditorGUI.BeginChangeCheck();
                 *                      operation = GUIStyleUtility.ChooseOperation(operation, mixedValues);
                 *                      if (EditorGUI.EndChangeCheck())
                 *                      {
                 *                              generator.CurrentCSGOperationType = operation;
                 *                      }
                 *              }
                 *              GUILayout.EndVertical();
                 *      }
                 *      GUILayout.EndHorizontal();
                 * }
                 * EditorGUI.EndDisabledGroup();
                 */
                if (isSceneGUI)
                {
                    FreeDrawSettingsGUI(generator, isSceneGUI);
                }
            }
            GUILayout.EndHorizontal();

            if (!isSceneGUI)
            {
                GUILayout.Space(5);

                FreeDrawSettingsGUI(generator, isSceneGUI);

                //GUILayout.Space(10);
            }                     /*else
                                   * {
                                   *    GUILayout.Space(10);
                                   * }*/
                                  /*
                                   * EditorGUI.BeginDisabledGroup(!generator.CanCommit);
                                   * {
                                   *      GUILayout.BeginHorizontal(GUIStyleUtility.ContentEmpty);
                                   *      {
                                   *              if (GUILayout.Button(CommitContent)) { generator.DoCommit(); }
                                   *              TooltipUtility.SetToolTip(CommitTooltip);
                                   *              if (GUILayout.Button(CancelContent)) { generator.DoCancel(); }
                                   *              TooltipUtility.SetToolTip(CancelTooltip);
                                   *      }
                                   *      GUILayout.EndHorizontal();
                                   * }
                                   * EditorGUI.EndDisabledGroup();
                                   */
            //}
            //GUILayout.EndVertical();
        }