Пример #1
0
            private void DrawGridField()
            {
                EditorGUI.BeginChangeCheck();
                m_gridData = EditorGUILayout.ObjectField(m_gridData, typeof(GridData), false) as GridData;

                GUIContent addNewGridDataGUIContent = new GUIContent(EditorTextures.GetByName(EditorTextures.ADD_NEW_ICON),
                                                                     "Create new GridData with default settings");

                if (GUILayout.Button(addNewGridDataGUIContent, GUILayout.Height(BUTTON_HEIGHT)))
                {
                    m_gridData             = CreateNewGridData("New GridData");
                    Selection.activeObject = m_gridData;
                }

                GUIContent duplicateGridDataGUIContent = new GUIContent(EditorTextures.GetByName(EditorTextures.DUPLICATE_ICON),
                                                                        "Duplicate the currently selected GridData");

                if (GUILayout.Button(duplicateGridDataGUIContent, GUILayout.Height(BUTTON_HEIGHT)))
                {
                    string path     = AssetDatabase.GetAssetPath(m_gridData);
                    string copyPath = AssetDatabase.GenerateUniqueAssetPath(path.Replace(".asset", string.Empty) + " Copy.asset");
                    AssetDatabase.CopyAsset(path, copyPath);
                    AssetDatabase.SaveAssets();
                    AssetDatabase.Refresh();

                    m_gridData             = AssetDatabase.LoadAssetAtPath(copyPath, typeof(GridData)) as GridData;
                    Selection.activeObject = m_gridData;
                }

                if (EditorGUI.EndChangeCheck())
                {
                    SelectGridData(m_gridData);
                }
            }
Пример #2
0
            private void DrawHorizontalLayout()
            {
                EditorGUILayout.BeginHorizontal();
                {
                    if (GUILayout.Button(new GUIContent(EditorTextures.GetByName(EditorTextures.SETTINGS_ICON)), GUILayout.Width(UNIT_LABEL_WIDTH)))
                    {
                        Selection.activeObject = GridSettings.instance;
                    }

                    DrawBarItems();
                }
                EditorGUILayout.EndHorizontal();
            }
Пример #3
0
 private void DrawGridMoveButtons()
 {
     EditorGUI.BeginDisabledGroup(Selection.activeTransform == null);
     {
         if (GUILayout.Button(new GUIContent(EditorTextures.GetByName(EditorTextures.GRID_TO_SELECTION_POSITION_ICON),
                                             "Moves the entire grid to match the position of the active selected object "
                                             + KeybindingManager.instance.GetKeybindingDescription(MOVE_TO_SELECTED_KEYBINDING_ID)),
                              GUILayout.Height(BUTTON_HEIGHT)))
         {
             MoveGridToSelected();
         }
         if (GUILayout.Button(new GUIContent(EditorTextures.GetByName(EditorTextures.GRID_TO_SELECTION_ROTATION_ICON),
                                             "Rotates the entire grid to match the rotation of the active selected object "
                                             + KeybindingManager.instance.GetKeybindingDescription(ROTATE_TO_SELECTED_KEYBINDING_ID)),
                              GUILayout.Height(BUTTON_HEIGHT)))
         {
             RotateGridToSelected();
         }
     }
     EditorGUI.EndDisabledGroup();
 }
Пример #4
0
            public void DrawProperties()
            {
                if ((m_axis == Axis.X && !GridSettings.instance.showXAxisOptions) ||
                    (m_axis == Axis.Y && !GridSettings.instance.showYAxisOptions) ||
                    (m_axis == Axis.Z && !GridSettings.instance.showZAxisOptions))
                {
                    return;
                }

                AxisProperties axisProperties = m_gridData.GetAxisProperties(m_axis);

                EditorGUI.BeginChangeCheck();

                Color originalBGColor = GUI.backgroundColor;

                GUI.backgroundColor = GetAxisColor(m_axis);

                GUIStyle style = new GUIStyle(GUI.skin.box);

                style.normal.background = EditorTextures.GetByName(EditorTextures.BORDER_TEX_NAME);
                style.border            = new RectOffset(5, 5, 5, 5);

                if (GridSettings.instance.gridWindowLayout == LayoutDirection.Vertical)
                {
                    EditorGUILayout.BeginVertical(style);
                }
                else
                {
                    EditorGUILayout.BeginHorizontal(style);
                }
                {
                    GUI.backgroundColor = originalBGColor;

                    m_isFoldoutOpen = EditorGUILayout.Foldout(m_isFoldoutOpen, m_axis + " Axis");

                    if (m_isFoldoutOpen)
                    {
                        // VISIBLE
                        axisProperties.isVisibleInEditor =
                            EditorGUIExtensions.IconToggle(EditorTextures.GetTexturePath(EditorTextures.HIDDEN_ICON),
                                                           EditorTextures.GetTexturePath(EditorTextures.VISIBLE_ICON),
                                                           axisProperties.isVisibleInEditor,
                                                           "Hide the " + m_axis + " grid plane",
                                                           "Show the " + m_axis + " grid plane");

                        // SNAP
                        axisProperties.isSnapEnabled =
                            EditorGUIExtensions.IconToggle(EditorTextures.GetTexturePath(EditorTextures.POSITION_SNAP_DISABLED_ICON),
                                                           EditorTextures.GetTexturePath(EditorTextures.POSITION_SNAP_ENABLED_ICON),
                                                           axisProperties.isSnapEnabled,
                                                           "Disable snapping along the " + m_axis + " axis",
                                                           "Enable snapping along the " + m_axis + " axis");

                        string unitAbbrev = UnitUtil.Abbreviation(GridSettings.instance.measurementUnit);

                        EditorGUILayout.BeginVertical();
                        {
                            // CELL SIZE
                            EditorGUIExtensions.DrawIconPrefixedField(EditorTextures.GetTexturePath(EditorTextures.CELL_SIZE_ICON),
                                                                      "Size of cells along the " + m_axis + " axis",
                                                                      delegate
                            {
                                axisProperties.cellSize = (float)EditorUnitUtil.DrawConvertedSizeField(axisProperties.cellSize,
                                                                                                       Unit.Meter, GridSettings.instance.measurementUnit, GridWindow.MIN_FIELD_WIDTH);
                                axisProperties.cellSize = Mathf.Max(axisProperties.cellSize, MIN_SIZE);

                                EditorGUILayout.LabelField(unitAbbrev, GUILayout.Width(GridWindow.UNIT_LABEL_WIDTH));
                            });

                            // GRID OFFSET
                            EditorGUIExtensions.DrawIconPrefixedField(EditorTextures.GetTexturePath(EditorTextures.GRID_OFFSET_ICON),
                                                                      "Offset of the entire grid along the " + m_axis + " axis",
                                                                      delegate
                            {
                                axisProperties.offset = (float)EditorUnitUtil.DrawConvertedSizeField(axisProperties.offset, Unit.Meter,
                                                                                                     GridSettings.instance.measurementUnit, GridWindow.MIN_FIELD_WIDTH);

                                EditorGUILayout.LabelField(unitAbbrev, GUILayout.Width(GridWindow.UNIT_LABEL_WIDTH));
                            });
                        }
                        EditorGUILayout.EndVertical();

                        // ROTATION
                        EditorGUIExtensions.DrawIconPrefixedField(EditorTextures.GetTexturePath(EditorTextures.ROTATION_SNAP_ANGLE_ICON),
                                                                  "Rotation of the grid around the " + m_axis + " axis",
                                                                  delegate
                        {
                            axisProperties.rotation = EditorGUILayout.FloatField(axisProperties.rotation,
                                                                                 GUILayout.MinWidth(GridWindow.MIN_FIELD_WIDTH));
                            axisProperties.rotation = Util.Wrap(axisProperties.rotation, MIN_AXIS_ROTATION, MAX_AXIS_ROTATION);

                            // degree symbol
                            EditorGUILayout.LabelField(('\u00B0').ToString(), GUILayout.Width(GridWindow.UNIT_LABEL_WIDTH));
                        });
                    }

                    GUI.backgroundColor = GetAxisColor(m_axis);
                }
                if (GridSettings.instance.gridWindowLayout == LayoutDirection.Vertical)
                {
                    EditorGUILayout.EndVertical();
                }
                else
                {
                    EditorGUILayout.EndHorizontal();
                }

                GUI.backgroundColor = originalBGColor;

                if (EditorGUI.EndChangeCheck())
                {
                    EditorUtility.SetDirty(m_gridData);
                    SavePrefs();
                }
            }