A game about forced loneliness, made by TACStudios
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}