public bool OnGUI() { bool delete; GUIHelper.FoldoutBar(ref _foldout, _overlayData.asset.overlayName, out move, out delete); if (!_foldout) { return(false); } Delete = delete; GUIHelper.BeginHorizontalPadded(10, Color.white); GUILayout.BeginVertical(); bool changed = OnColorGUI(); GUILayout.BeginHorizontal(); foreach (var texture in _textures) { changed |= texture.OnGUI(); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); GUIHelper.EndVerticalPadded(10); return(changed); }
public bool OnGUI(UMAData.UMARecipe _recipe) { GUILayout.BeginHorizontal(EditorStyles.toolbarButton); GUILayout.Space(10); _foldout = EditorGUILayout.Foldout(_foldout, "Shared Colors"); GUILayout.EndHorizontal(); if (_foldout) { bool changed = false; GUIHelper.BeginVerticalPadded(10, new Color(0.75f, 0.875f, 1f)); EditorGUILayout.BeginHorizontal(); if (_recipe.sharedColors == null) { _recipe.sharedColors = new OverlayColorData[0]; } if (_recipe.sharedColors.Length == 0) { selectedChannelCount = EditorGUILayout.IntPopup("Channels", selectedChannelCount, names, channels); } else { selectedChannelCount = _recipe.sharedColors [0].channelMask.Length; } if (GUILayout.Button("Add Shared Color")) { List <OverlayColorData> sharedColors = new List <OverlayColorData> (); sharedColors.AddRange(_recipe.sharedColors); sharedColors.Add(new OverlayColorData(selectedChannelCount)); _recipe.sharedColors = sharedColors.ToArray(); changed = true; } if (GUILayout.Button("Save Collection")) { changed = true; } EditorGUILayout.EndHorizontal(); if (_ColorFoldouts.Length != _recipe.sharedColors.Length) { Array.Resize <bool> (ref _ColorFoldouts, _recipe.sharedColors.Length); } for (int i = 0; i < _recipe.sharedColors.Length; i++) { bool del = false; OverlayColorData ocd = _recipe.sharedColors [i]; GUIHelper.FoldoutBar(ref _ColorFoldouts [i], i + ": " + ocd.name, out del); if (del) { List <OverlayColorData> temp = new List <OverlayColorData> (); temp.AddRange(_recipe.sharedColors); temp.RemoveAt(i); _recipe.sharedColors = temp.ToArray(); // TODO: search the overlays and adjust the shared colors break; } if (_ColorFoldouts [i]) { if (ocd.name == null) { ocd.name = ""; } string NewName = EditorGUILayout.TextField("Name", ocd.name); if (NewName != ocd.name) { ocd.name = NewName; //changed = true; } Color NewChannelMask = EditorGUILayout.ColorField("Color Multiplier", ocd.channelMask [0]); if (ocd.channelMask [0] != NewChannelMask) { ocd.channelMask [0] = NewChannelMask; changed = true; } Color NewChannelAdditiveMask = EditorGUILayout.ColorField("Color Additive", ocd.channelAdditiveMask [0]); if (ocd.channelAdditiveMask [0] != NewChannelAdditiveMask) { ocd.channelAdditiveMask [0] = NewChannelAdditiveMask; changed = true; } for (int j = 1; j < ocd.channelMask.Length; j++) { NewChannelMask = EditorGUILayout.ColorField("Texture " + j + "multiplier", ocd.channelMask [j]); if (ocd.channelMask [j] != NewChannelMask) { ocd.channelMask [j] = NewChannelMask; changed = true; } NewChannelAdditiveMask = EditorGUILayout.ColorField("Texture " + j + " additive", ocd.channelAdditiveMask [j]); if (ocd.channelAdditiveMask [j] != NewChannelAdditiveMask) { ocd.channelAdditiveMask [j] = NewChannelAdditiveMask; changed = true; } } } } GUIHelper.EndVerticalPadded(10); return(changed); } return(false); }
public bool OnGUI(ref bool _dnaDirty, ref bool _textureDirty, ref bool _meshDirty) { bool delete; GUIHelper.FoldoutBar(ref _foldout, _name, out delete); if (!_foldout) { return(false); } Delete = delete; bool changed = false; GUIHelper.BeginVerticalPadded(10, new Color(0.75f, 0.875f, 1f)); if (sharedOverlays) { EditorGUILayout.LabelField("Shared Overlays"); } else { var added = (OverlayDataAsset)EditorGUILayout.ObjectField("Add Overlay", null, typeof(OverlayDataAsset), false); if (added != null) { var newOverlay = new OverlayData(added); _overlayEditors.Add(new OverlayEditor(_recipe, _slotData, newOverlay)); _overlayData.Add(newOverlay); _dnaDirty = true; _textureDirty = true; _meshDirty = true; changed = true; } var addedSlot = (SlotDataAsset)EditorGUILayout.ObjectField("Add Slot", null, typeof(SlotDataAsset), false); if (addedSlot != null) { var newSlot = new SlotData(addedSlot); newSlot.SetOverlayList(_slotData.GetOverlayList()); _recipe.MergeSlot(newSlot, false); _dnaDirty = true; _textureDirty = true; _meshDirty = true; changed = true; } for (int i = 0; i < _overlayEditors.Count; i++) { var overlayEditor = _overlayEditors[i]; if (overlayEditor.OnGUI()) { _textureDirty = true; changed = true; } if (overlayEditor.Delete) { _overlayEditors.RemoveAt(i); _overlayData.RemoveAt(i); _textureDirty = true; changed = true; i--; } } for (int i = 0; i < _overlayEditors.Count; i++) { var overlayEditor = _overlayEditors[i]; if (overlayEditor.move > 0 && i + 1 < _overlayEditors.Count) { _overlayEditors[i] = _overlayEditors[i + 1]; _overlayEditors[i + 1] = overlayEditor; var overlayData = _overlayData[i]; _overlayData[i] = _overlayData[i + 1]; _overlayData[i + 1] = overlayData; overlayEditor.move = 0; _textureDirty = true; changed = true; continue; } if (overlayEditor.move < 0 && i > 0) { _overlayEditors[i] = _overlayEditors[i - 1]; _overlayEditors[i - 1] = overlayEditor; var overlayData = _overlayData[i]; _overlayData[i] = _overlayData[i - 1]; _overlayData[i - 1] = overlayData; overlayEditor.move = 0; _textureDirty = true; changed = true; continue; } } } GUIHelper.EndVerticalPadded(10); return(changed); }
public bool OnGUI(ref bool _dnaDirty, ref bool _textureDirty, ref bool _meshDirty) { bool delete; GUIHelper.FoldoutBar(ref _foldout, _name, out delete); if (!_foldout) { return(false); } Delete = delete; bool changed = false; GUIHelper.BeginVerticalPadded(10, new Color(0.75f, 0.875f, 1f)); var added = (OverlayData)EditorGUILayout.ObjectField("Add Overlay", null, typeof(OverlayData), false); if (added != null) { _overlayEditors.Add(new OverlayEditor(_slotData, added)); _overlayData.Add(added); _dnaDirty = true; _textureDirty = true; _meshDirty = true; changed = true; } for (int i = 0; i < _overlayEditors.Count; i++) { var overlayEditor = _overlayEditors [i]; if (overlayEditor.OnGUI()) { _textureDirty = true; changed = true; } if (overlayEditor.Delete) { _overlayEditors.RemoveAt(i); _overlayData.RemoveAt(i); _textureDirty = true; changed = true; i--; } } for (int i = 0; i < _overlayEditors.Count; i++) { var overlayEditor = _overlayEditors[i]; if (overlayEditor.move > 0) { _overlayEditors.MoveElementUpAt(i); _overlayData.MoveElementUpAt(i); overlayEditor.move = 0; _textureDirty = true; changed = true; continue; } if (overlayEditor.move < 0 && i + 1 > 0) { _overlayEditors.MoveElementDownAt(i); _overlayData.MoveElementDownAt(i); overlayEditor.move = 0; _textureDirty = true; changed = true; continue; } } GUIHelper.EndVerticalPadded(10); return(changed); }