Files
2026-06-04 11:42:34 +02:00

163 lines
5.2 KiB
C#

using System;
namespace UnityEngine.Experimental.UIElements
{
// Token: 0x02000326 RID: 806
internal class IMScroller : IMElement
{
// Token: 0x060032B8 RID: 12984 RVA: 0x0004D01C File Offset: 0x0004B21C
public IMScroller()
{
this.m_NextScrollStepTime = DateTime.Now;
this.m_Slider = new IMSlider();
this.m_LeftButton = new IMRepeatButton();
this.m_RightButton = new IMRepeatButton();
}
// Token: 0x17000B82 RID: 2946
// (get) Token: 0x060032B9 RID: 12985 RVA: 0x0004D05C File Offset: 0x0004B25C
// (set) Token: 0x060032BA RID: 12986 RVA: 0x0004D078 File Offset: 0x0004B278
public float value { get; private set; }
// Token: 0x060032BB RID: 12987 RVA: 0x0004D084 File Offset: 0x0004B284
public void SetProperties(Rect pos, float val, float size, float leftValue, float rightValue, GUIStyle slider, GUIStyle thumb, GUIStyle leftButton, GUIStyle rightButton, bool horiz)
{
base.position = pos;
this.m_PageSize = size;
this.m_LeftValue = leftValue;
this.m_RightValue = rightValue;
this.value = val;
Rect rect;
Rect rect2;
Rect rect3;
this.GetRects(horiz, base.position, leftButton, rightButton, out rect, out rect2, out rect3);
this.m_Slider.SetProperties(rect, this.value, size, leftValue, rightValue, slider, thumb, horiz);
this.m_LeftButton.position = rect2;
this.m_LeftButton.style = leftButton;
this.m_RightButton.position = rect3;
this.m_RightButton.style = rightButton;
}
// Token: 0x060032BC RID: 12988 RVA: 0x0004D120 File Offset: 0x0004B320
public override void OnReuse()
{
base.OnReuse();
this.m_Slider.OnReuse();
this.m_LeftButton.OnReuse();
this.m_RightButton.OnReuse();
}
// Token: 0x060032BD RID: 12989 RVA: 0x0004D14C File Offset: 0x0004B34C
public override bool OnGUI(Event evt)
{
bool flag = this.m_Slider.OnGUI(evt);
this.value = this.m_Slider.value;
bool flag2 = evt.type == EventType.MouseUp;
flag |= this.m_LeftButton.OnGUI(evt);
if (this.m_LeftButton.isPressed && this.OnScrollerButton(evt))
{
this.value -= 10f * ((this.m_LeftValue >= this.m_RightValue) ? (-1f) : 1f);
}
flag |= this.m_RightButton.OnGUI(evt);
if (this.m_RightButton.isPressed && this.OnScrollerButton(evt))
{
this.value += 10f * ((this.m_LeftValue >= this.m_RightValue) ? (-1f) : 1f);
}
if (flag2 && evt.type == EventType.Used)
{
IMScroller.s_ScrollControlId = 0;
}
if (this.m_LeftValue < this.m_RightValue)
{
this.value = Mathf.Clamp(this.value, this.m_LeftValue, this.m_RightValue - this.m_PageSize);
}
else
{
this.value = Mathf.Clamp(this.value, this.m_RightValue, this.m_LeftValue - this.m_PageSize);
}
if (flag)
{
evt.Use();
}
this.m_Slider.value = this.value;
return flag;
}
// Token: 0x060032BE RID: 12990 RVA: 0x0004D2E4 File Offset: 0x0004B4E4
protected override int DoGenerateControlID()
{
this.m_Slider.GenerateControlID();
this.m_LeftButton.GenerateControlID();
this.m_RightButton.GenerateControlID();
return GUIUtility.GetControlID("IMScroller".GetHashCode(), base.focusType, base.position);
}
// Token: 0x060032BF RID: 12991 RVA: 0x0004D338 File Offset: 0x0004B538
private void GetRects(bool horiz, Rect pos, GUIStyle leftButton, GUIStyle rightButton, out Rect sliderRect, out Rect minRect, out Rect maxRect)
{
if (horiz)
{
sliderRect = new Rect(pos.x + leftButton.fixedWidth, pos.y, pos.width - leftButton.fixedWidth - rightButton.fixedWidth, pos.height);
minRect = new Rect(pos.x, pos.y, leftButton.fixedWidth, pos.height);
maxRect = new Rect(pos.xMax - rightButton.fixedWidth, pos.y, rightButton.fixedWidth, pos.height);
}
else
{
sliderRect = new Rect(pos.x, pos.y + leftButton.fixedHeight, pos.width, pos.height - leftButton.fixedHeight - rightButton.fixedHeight);
minRect = new Rect(pos.x, pos.y, pos.width, leftButton.fixedHeight);
maxRect = new Rect(pos.x, pos.yMax - rightButton.fixedHeight, pos.width, rightButton.fixedHeight);
}
}
// Token: 0x060032C0 RID: 12992 RVA: 0x0004D464 File Offset: 0x0004B664
private bool OnScrollerButton(Event evt)
{
bool flag = IMScroller.s_ScrollControlId != this.m_Slider.id;
IMScroller.s_ScrollControlId = this.m_Slider.id;
bool flag2 = false;
if (flag)
{
flag2 = true;
this.m_NextScrollStepTime = DateTime.Now.AddMilliseconds(250.0);
}
else if (DateTime.Now >= this.m_NextScrollStepTime)
{
flag2 = true;
this.m_NextScrollStepTime = DateTime.Now.AddMilliseconds(30.0);
}
if (evt.type == EventType.Repaint)
{
GUI.InternalRepaintEditorWindow();
}
return flag2;
}
// Token: 0x04000A4B RID: 2635
private const float ScrollStepSize = 10f;
// Token: 0x04000A4C RID: 2636
private readonly IMSlider m_Slider;
// Token: 0x04000A4D RID: 2637
private readonly IMRepeatButton m_LeftButton;
// Token: 0x04000A4E RID: 2638
private readonly IMRepeatButton m_RightButton;
// Token: 0x04000A4F RID: 2639
private float m_PageSize;
// Token: 0x04000A50 RID: 2640
private float m_LeftValue;
// Token: 0x04000A51 RID: 2641
private float m_RightValue;
// Token: 0x04000A52 RID: 2642
public DateTime m_NextScrollStepTime = DateTime.Now;
// Token: 0x04000A53 RID: 2643
private static int s_ScrollControlId = 0;
}
}