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); } }
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(); }
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(); }
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(); } }