Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
CircularRadialButton Class Reference
Inheritance diagram for CircularRadialButton:

Public Member Functions

void Init ()
 
void Toggle ()
 
void CloseIfOpen ()
 
UIButton AddOption (Sprite sprite, Action action=null)
 

Public Attributes

UIButton moldButton
 
float MainButtonMinSize = 0.5f
 
float MainButtonMaxSize = 1f
 
AnimationCurve MainButtonImageCurve
 
bool CloseChildOptionsOnClose
 
List< RectTransform > Options
 
float OptionsMinRadius = 75f
 
float OptionsMaxRadius = 120f
 
float OptionsMinSize = 0.1f
 
float OptionsMaxSize = 1f
 
float MinAngleDistanceBetweenOptions = 15f
 
float MaxAngleDistanceBetweenOptions = 35f
 
float StartAngleOffset
 
bool ShowAllOptionsAtOnce
 
float OpenTransitionTime = 0.5f
 
float CloseTransitionTime = 0.5f
 
AnimationCurve OpenCurve
 
AnimationCurve CloseCurve
 

Private Member Functions

void Update ()
 
void Animate ()
 

Private Attributes

float TransitionTime = 0.5f
 
AnimationCurve CurrentCurve
 
bool Open
 
float T
 

Detailed Description

Definition at line 5 of file CircularRadialButton.cs.

Member Function Documentation

◆ AddOption()

UIButton CircularRadialButton.AddOption ( Sprite  sprite,
Action  action = null 
)
inline

Definition at line 162 of file CircularRadialButton.cs.

163 {
164 UIButton uIButton = Util.Instantiate(moldButton, base.transform);
165 uIButton.SetActive(enable: true);
166 uIButton.icon.sprite = sprite;
167 RectTransform rectTransform = uIButton.Rect();
168 if (Options == null)
169 {
170 Options = new List<RectTransform>();
171 }
172 Options.Add(rectTransform);
173 _ = Options.Count;
174 uIButton.onClick.SetListener(action);
175 rectTransform.localPosition = new Vector3(0f, 0f, 0f);
176 return uIButton;
177 }
List< RectTransform > Options
Definition: Util.cs:10
static Transform Instantiate(string path, Component parent=null)
Definition: Util.cs:67

References moldButton, Options, and Util.

Referenced by LayerQuickMenu.OnInit().

◆ Animate()

void CircularRadialButton.Animate ( )
inlineprivate

Definition at line 129 of file CircularRadialButton.cs.

130 {
131 int count = Options.Count;
132 float num = TransitionTime / (float)count;
133 float time = T * 2f / TransitionTime;
135 float num3 = num2 * (float)(count - 1) / 2f + StartAngleOffset;
136 for (int i = 0; i < count; i++)
137 {
138 if (!(Options[i] == null))
139 {
140 float time2 = (T - num * (float)i) / num;
141 if (T >= num * (float)i && T < num * (float)(i + 1))
142 {
143 time2 = (T - num * (float)i) / num;
144 float num4 = OptionsMinSize + (OptionsMaxSize - OptionsMinSize) * CurrentCurve.Evaluate(time2);
145 Options[i].transform.localScale = new Vector3(num4, num4, num4);
146 }
147 if (ShowAllOptionsAtOnce || T >= num * (float)(i + 1))
148 {
149 time2 = T / num;
150 float num5 = OptionsMinSize + (OptionsMaxSize - OptionsMinSize) * CurrentCurve.Evaluate(time2);
151 Options[i].transform.localScale = new Vector3(num5, num5, num5);
152 }
153 float num6 = OptionsMinRadius + (OptionsMaxRadius - OptionsMinRadius) * CurrentCurve.Evaluate(time2);
154 float x = num6 * Mathf.Cos(MathF.PI / 180f * num3);
155 float y = num6 * Mathf.Sin(MathF.PI / 180f * num3);
156 Options[i].GetComponent<RectTransform>().anchoredPosition = new Vector2(x, y);
157 num3 -= num2;
158 }
159 }
160 }

References CurrentCurve, MaxAngleDistanceBetweenOptions, MinAngleDistanceBetweenOptions, Options, OptionsMaxRadius, OptionsMaxSize, OptionsMinRadius, OptionsMinSize, ShowAllOptionsAtOnce, StartAngleOffset, T, and TransitionTime.

Referenced by Init(), and Update().

◆ CloseIfOpen()

void CircularRadialButton.CloseIfOpen ( )
inline

Definition at line 108 of file CircularRadialButton.cs.

109 {
110 if (Open)
111 {
112 Toggle();
113 }
114 }

References Open, and Toggle().

Referenced by Toggle().

◆ Init()

void CircularRadialButton.Init ( )
inline

Definition at line 62 of file CircularRadialButton.cs.

63 {
64 moldButton.SetActive(enable: false);
69 StartAngleOffset = 90f;
70 if (Options.Count == 10)
71 {
72 StartAngleOffset = 108f;
73 }
74 Animate();
75 Toggle();
76 int num = 4;
77 for (int i = 0; i < Options.Count; i++)
78 {
79 num++;
80 if (num >= Options.Count)
81 {
82 num = 0;
83 }
84 Options[num].transform.SetAsFirstSibling();
85 }
86 }

References Animate(), CloseCurve, CloseTransitionTime, CurrentCurve, MaxAngleDistanceBetweenOptions, moldButton, Open, OpenCurve, OpenTransitionTime, Options, StartAngleOffset, T, Toggle(), and TransitionTime.

◆ Toggle()

void CircularRadialButton.Toggle ( )
inline

Definition at line 88 of file CircularRadialButton.cs.

89 {
90 if (T < TransitionTime)
91 {
92 return;
93 }
94 Open = !Open;
97 T = 0f;
99 {
100 CircularRadialButton[] componentsInChildren = GetComponentsInChildren<CircularRadialButton>();
101 for (int i = 0; i < componentsInChildren.Length; i++)
102 {
103 componentsInChildren[i].CloseIfOpen();
104 }
105 }
106 }

References CloseChildOptionsOnClose, CloseCurve, CloseIfOpen(), CloseTransitionTime, CurrentCurve, Open, OpenCurve, OpenTransitionTime, T, and TransitionTime.

Referenced by CloseIfOpen(), and Init().

◆ Update()

void CircularRadialButton.Update ( )
inlineprivate

Definition at line 116 of file CircularRadialButton.cs.

117 {
118 if (!(T >= TransitionTime))
119 {
120 T += Time.deltaTime;
121 if (T > TransitionTime)
122 {
124 }
125 Animate();
126 }
127 }

References Animate(), T, and TransitionTime.

Member Data Documentation

◆ CloseChildOptionsOnClose

bool CircularRadialButton.CloseChildOptionsOnClose

Definition at line 15 of file CircularRadialButton.cs.

Referenced by Toggle().

◆ CloseCurve

AnimationCurve CircularRadialButton.CloseCurve

Definition at line 54 of file CircularRadialButton.cs.

Referenced by Init(), and Toggle().

◆ CloseTransitionTime

float CircularRadialButton.CloseTransitionTime = 0.5f

Definition at line 46 of file CircularRadialButton.cs.

Referenced by Init(), and Toggle().

◆ CurrentCurve

AnimationCurve CircularRadialButton.CurrentCurve
private

Definition at line 56 of file CircularRadialButton.cs.

Referenced by Animate(), Init(), and Toggle().

◆ MainButtonImageCurve

AnimationCurve CircularRadialButton.MainButtonImageCurve

Definition at line 13 of file CircularRadialButton.cs.

◆ MainButtonMaxSize

float CircularRadialButton.MainButtonMaxSize = 1f

Definition at line 11 of file CircularRadialButton.cs.

◆ MainButtonMinSize

float CircularRadialButton.MainButtonMinSize = 0.5f

Definition at line 9 of file CircularRadialButton.cs.

◆ MaxAngleDistanceBetweenOptions

float CircularRadialButton.MaxAngleDistanceBetweenOptions = 35f

Definition at line 34 of file CircularRadialButton.cs.

Referenced by Animate(), and Init().

◆ MinAngleDistanceBetweenOptions

float CircularRadialButton.MinAngleDistanceBetweenOptions = 15f

Definition at line 31 of file CircularRadialButton.cs.

Referenced by Animate().

◆ moldButton

UIButton CircularRadialButton.moldButton

Definition at line 7 of file CircularRadialButton.cs.

Referenced by AddOption(), and Init().

◆ Open

bool CircularRadialButton.Open
private

Definition at line 58 of file CircularRadialButton.cs.

Referenced by CloseIfOpen(), Init(), and Toggle().

◆ OpenCurve

AnimationCurve CircularRadialButton.OpenCurve

Definition at line 51 of file CircularRadialButton.cs.

Referenced by Init(), and Toggle().

◆ OpenTransitionTime

float CircularRadialButton.OpenTransitionTime = 0.5f

Definition at line 43 of file CircularRadialButton.cs.

Referenced by Init(), and Toggle().

◆ Options

List<RectTransform> CircularRadialButton.Options

Definition at line 18 of file CircularRadialButton.cs.

Referenced by AddOption(), Animate(), and Init().

◆ OptionsMaxRadius

float CircularRadialButton.OptionsMaxRadius = 120f

Definition at line 22 of file CircularRadialButton.cs.

Referenced by Animate().

◆ OptionsMaxSize

float CircularRadialButton.OptionsMaxSize = 1f

Definition at line 28 of file CircularRadialButton.cs.

Referenced by Animate().

◆ OptionsMinRadius

float CircularRadialButton.OptionsMinRadius = 75f

Definition at line 20 of file CircularRadialButton.cs.

Referenced by Animate().

◆ OptionsMinSize

float CircularRadialButton.OptionsMinSize = 0.1f

Definition at line 25 of file CircularRadialButton.cs.

Referenced by Animate().

◆ ShowAllOptionsAtOnce

bool CircularRadialButton.ShowAllOptionsAtOnce

Definition at line 40 of file CircularRadialButton.cs.

Referenced by Animate().

◆ StartAngleOffset

float CircularRadialButton.StartAngleOffset

Definition at line 37 of file CircularRadialButton.cs.

Referenced by Animate(), and Init().

◆ T

float CircularRadialButton.T
private

Definition at line 60 of file CircularRadialButton.cs.

Referenced by Animate(), Init(), Toggle(), and Update().

◆ TransitionTime

float CircularRadialButton.TransitionTime = 0.5f
private

Definition at line 48 of file CircularRadialButton.cs.

Referenced by Animate(), Init(), Toggle(), and Update().


The documentation for this class was generated from the following file: