-
Notifications
You must be signed in to change notification settings - Fork 878
Expand file tree
/
Copy pathVFXStringFieldProvider.cs
More file actions
84 lines (72 loc) · 2.15 KB
/
Copy pathVFXStringFieldProvider.cs
File metadata and controls
84 lines (72 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using UnityEngine;
using UnityEngine.UIElements;
using UnityEditor.UIElements;
using System;
using UnityEditor.VFX.UI;
namespace UnityEditor.VFX.UIElements
{
class VFXStringFieldProvider : ValueControl<string>
{
Label m_DropDownButton;
Func<string[]> m_fnStringProvider;
public Func<string[]> stringProvider
{
get { return m_fnStringProvider; }
}
void CreateButton()
{
m_DropDownButton = new Label();
m_DropDownButton.AddToClassList("PopupButton");
m_DropDownButton.AddManipulator(new DownClickable(OnClick));
}
void OnClick()
{
var menu = new GenericMenu();
var allString = m_fnStringProvider();
foreach (var val in allString)
{
menu.AddItem(new GUIContent(val), val == m_Value, ChangeValue, val);
}
menu.DropDown(m_DropDownButton.worldBound);
}
void ChangeValue(object val)
{
SetValue((string)val);
if (OnValueChanged != null)
{
OnValueChanged();
}
}
public VFXStringFieldProvider(string label, Func<string[]> stringProvider) : base(label)
{
m_fnStringProvider = stringProvider;
CreateButton();
style.flexDirection = FlexDirection.Row;
Add(m_DropDownButton);
}
public VFXStringFieldProvider(Label existingLabel, Func<string[]> stringProvider) : base(existingLabel)
{
m_fnStringProvider = stringProvider;
CreateButton();
Add(m_DropDownButton);
}
bool m_Indeterminate;
public bool indeterminate
{
get
{
return m_Indeterminate;
}
set
{
m_Indeterminate = value;
ValueToGUI(true);
}
}
protected override void ValueToGUI(bool force)
{
m_DropDownButton.SetEnabled(indeterminate);
m_DropDownButton.text = indeterminate ? "_" : m_Value;
}
}
}