A game about forced loneliness, made by TACStudios
at master 94 lines 2.5 kB view raw
1using System; 2using System.Linq; 3using System.Collections.Generic; 4using UnityEngine; 5using UnityEditor.ShaderGraph.Internal; 6 7namespace UnityEditor.ShaderGraph 8{ 9 [Serializable] 10 class ShaderDropdown : ShaderInput 11 { 12 public ShaderDropdown() 13 { 14 this.displayName = "Dropdown"; 15 // Add sensible default entries for Enum type 16 m_Entries = new List<DropdownEntry>(); 17 m_Entries.Add(new DropdownEntry(1, "A")); 18 m_Entries.Add(new DropdownEntry(2, "B")); 19 } 20 21 [SerializeField] 22 private List<DropdownEntry> m_Entries; 23 24 public List<DropdownEntry> entries 25 { 26 get => m_Entries; 27 set => m_Entries = value; 28 } 29 30 internal override bool isCustomSlotAllowed { get => false; } 31 public override bool allowedInMainGraph { get => false; } 32 33 [SerializeField] 34 private int m_Value; 35 36 private int GetClampedValue(int value) 37 { 38 return count > 0 ? Mathf.Clamp(value, 0, count - 1) : 0; 39 } 40 41 public int value 42 { 43 get => GetClampedValue(m_Value); 44 set => m_Value = GetClampedValue(value); 45 } 46 47 public string entryName 48 { 49 get => entries[value].displayName; 50 } 51 52 public int entryId 53 { 54 get => entries[value].id; 55 } 56 57 public bool ContainsEntry(string entryName) 58 { 59 return entries.Any(x => x.displayName.Equals(entryName)); 60 } 61 62 public int IndexOfName(string entryName) 63 { 64 return entries.FindIndex((DropdownEntry entry) => entry.displayName.Equals(entryName)); 65 } 66 67 public int IndexOfId(int entryId) 68 { 69 return entries.FindIndex((DropdownEntry entry) => entry.id.Equals(entryId)); 70 } 71 72 public int count 73 { 74 get { return m_Entries.Count; } 75 } 76 77 internal override bool isExposable => true; 78 internal override bool isRenamable => true; 79 80 internal override ConcreteSlotValueType concreteShaderValueType => ConcreteSlotValueType.Vector1; 81 82 internal override ShaderInput Copy() 83 { 84 return new ShaderDropdown() 85 { 86 displayName = displayName, 87 value = value, 88 entries = entries, 89 }; 90 } 91 92 public override int latestVersion => 0; 93 } 94}