TC_LayerGUI.cs 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using UnityEngine;
  2. using UnityEditor;
  3. using System.Collections;
  4. namespace TerrainComposer2
  5. {
  6. // Layer
  7. static public class TC_LayerGUI
  8. {
  9. // public float barX;
  10. static public void Draw(TC_Layer layer, ref Vector2 startOffset, float activeMulti, bool drawMethod, bool isFirst, bool isLast)
  11. {
  12. TC_GlobalSettings g = TC_Settings.instance.global;
  13. bool isCulled = false;
  14. TC_LayerGroupGUI.DrawLayerOrLayerGroup(layer, ref startOffset, g.colLayer, ref isCulled, activeMulti, drawMethod, isFirst, isLast);
  15. if (!layer.active) activeMulti *= 0.75f;
  16. // DropDownMenu(rect, layer);
  17. bool hideSelectNodes = false;
  18. if (layer.outputId != TC.heightOutput)
  19. {
  20. if (layer.selectItemGroup.totalActive <= 1) hideSelectNodes = true;
  21. }
  22. TC_NodeGroupGUI.Draw(layer.maskNodeGroup, ref startOffset, g.colMaskNodeGroup, g.colMaskNode, g.colLayer, activeMulti, layer.nodeFoldout, false, false, false);
  23. if (!hideSelectNodes) TC_NodeGroupGUI.Draw(layer.selectNodeGroup, ref startOffset, g.colSelectNodeGroup, g.colSelectNode, g.colLayer, activeMulti, layer.nodeFoldout, false, layer.outputId != TC.heightOutput, hideSelectNodes);
  24. if (layer.selectItemGroup != null && layer.outputId != TC.heightOutput)
  25. TC_SelectItemGroupGUI.Draw(layer.selectItemGroup, ref startOffset, TC_Settings.instance.global.colSelectItemGroup, TC_Settings.instance.global.colSelectItem, g.colLayer, activeMulti);
  26. }
  27. static public void DropDownMenu(Rect rect, TC_Layer layer)
  28. {
  29. if (TD.ClickRect(rect) != 1) return;
  30. GenericMenu menu = new GenericMenu();
  31. // menu.AddItem(new GUIContent("Add Layer"), false, LeftClickMenu, "Add Layer");
  32. string instanceID = layer.GetInstanceID().ToString();
  33. if (layer.maskNodeGroup.itemList.Count == 0)
  34. {
  35. menu.AddItem(new GUIContent("Add Mask"), false, LeftClickMenu, instanceID + ":Add Mask");
  36. menu.AddSeparator("");
  37. }
  38. menu.AddItem(new GUIContent("Add Layer"), false, LeftClickMenu, instanceID + ":Add Layer");
  39. menu.AddItem(new GUIContent("Duplicate Layer"), false, LeftClickMenu, instanceID + ":Duplicate Layer");
  40. if (layer.level > 1)
  41. {
  42. menu.AddSeparator("");
  43. menu.AddItem(new GUIContent("Add Layer Group"), false, LeftClickMenu, instanceID + ":Add LayerGroup");
  44. }
  45. menu.AddSeparator("");
  46. menu.AddItem(new GUIContent("Erase Layer"), false, LeftClickMenu, instanceID + ":Erase Layer");
  47. menu.ShowAsContext();
  48. }
  49. static public void LeftClickMenu(object obj)
  50. {
  51. int instanceID;
  52. string command = TD.ObjectToCommandAndInstanceID(obj, out instanceID);
  53. TC_Layer layer = EditorUtility.InstanceIDToObject(instanceID) as TC_Layer;
  54. if (layer != null)
  55. {
  56. if (command == "Add Mask") layer.maskNodeGroup.Add<TC_Node>("", false, false, true);
  57. else if (command == "Add Layer") layer.Add<TC_Layer>("", true, false, true);
  58. else if (command == "Duplicate Layer") layer.Duplicate(layer.t.parent);
  59. else if (command == "Add LayerGroup") layer.Add<TC_LayerGroup>("", true, false, true);
  60. else if (command == "Erase Layer")
  61. {
  62. layer.DestroyMe(true);
  63. }
  64. }
  65. }
  66. }
  67. }