123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- using System;
- using UnityEngine;
- [ExecuteInEditMode]
- [AddComponentMenu("NGUI/Interaction/NGUI Scroll Bar")]
- public class UIScrollBar : UISlider
- {
- [Obsolete("Use 'value' instead")]
- public float scrollValue
- {
- get
- {
- return base.value;
- }
- set
- {
- base.value = value;
- }
- }
- public float barSize
- {
- get
- {
- return this.mSize;
- }
- set
- {
- float num = Mathf.Clamp01(value);
- if (this.mEnableFixSize)
- {
- float num2;
- if (base.isHorizontal)
- {
- num2 = this.mFG.localSize.x;
- }
- else
- {
- num2 = this.mFG.localSize.y;
- }
- num = this.mFixSizePixcel / num2;
- }
- if (this.mSize != num)
- {
- this.mSize = num;
- this.mIsDirty = true;
- if (NGUITools.GetActive(this))
- {
- if (UIProgressBar.current == null && this.onChange != null)
- {
- UIProgressBar.current = this;
- EventDelegate.Execute(this.onChange);
- UIProgressBar.current = null;
- }
- this.ForceUpdate();
- }
- }
- }
- }
- protected override void Upgrade()
- {
- if (this.mDir != UIScrollBar.Direction.Upgraded)
- {
- this.mValue = this.mScroll;
- if (this.mDir == UIScrollBar.Direction.Horizontal)
- {
- this.mFill = ((!this.mInverted) ? UIProgressBar.FillDirection.LeftToRight : UIProgressBar.FillDirection.RightToLeft);
- }
- else
- {
- this.mFill = ((!this.mInverted) ? UIProgressBar.FillDirection.TopToBottom : UIProgressBar.FillDirection.BottomToTop);
- }
- this.mDir = UIScrollBar.Direction.Upgraded;
- }
- }
- protected override void OnStart()
- {
- base.OnStart();
- if (this.mFG != null && this.mFG.gameObject != base.gameObject)
- {
- if (!(this.mFG.GetComponent<Collider>() != null) && !(this.mFG.GetComponent<Collider2D>() != null))
- {
- return;
- }
- UIEventListener uieventListener = UIEventListener.Get(this.mFG.gameObject);
- UIEventListener uieventListener2 = uieventListener;
- uieventListener2.onPress = (UIEventListener.BoolDelegate)Delegate.Combine(uieventListener2.onPress, new UIEventListener.BoolDelegate(base.OnPressForeground));
- UIEventListener uieventListener3 = uieventListener;
- uieventListener3.onDrag = (UIEventListener.VectorDelegate)Delegate.Combine(uieventListener3.onDrag, new UIEventListener.VectorDelegate(base.OnDragForeground));
- this.mFG.autoResizeBoxCollider = true;
- }
- }
- protected override float LocalToValue(Vector2 localPos)
- {
- if (!(this.mFG != null))
- {
- return base.LocalToValue(localPos);
- }
- float num = Mathf.Clamp01(this.mSize) * 0.5f;
- float num2 = num;
- float num3 = 1f - num;
- Vector3[] localCorners = this.mFG.localCorners;
- if (base.isHorizontal)
- {
- num2 = Mathf.Lerp(localCorners[0].x, localCorners[2].x, num2);
- num3 = Mathf.Lerp(localCorners[0].x, localCorners[2].x, num3);
- float num4 = num3 - num2;
- if (num4 == 0f)
- {
- return base.value;
- }
- return (!base.isInverted) ? ((localPos.x - num2) / num4) : ((num3 - localPos.x) / num4);
- }
- else
- {
- num2 = Mathf.Lerp(localCorners[0].y, localCorners[1].y, num2);
- num3 = Mathf.Lerp(localCorners[3].y, localCorners[2].y, num3);
- float num5 = num3 - num2;
- if (num5 == 0f)
- {
- return base.value;
- }
- return (!base.isInverted) ? ((localPos.y - num2) / num5) : ((num3 - localPos.y) / num5);
- }
- }
- public override void ForceUpdate()
- {
- if (this.mFG != null)
- {
- this.mIsDirty = false;
- float num = Mathf.Clamp01(this.mSize) * 0.5f;
- float num2 = Mathf.Lerp(num, 1f - num, base.value);
- float num3 = num2 - num;
- float num4 = num2 + num;
- if (base.isHorizontal)
- {
- this.mFG.drawRegion = ((!base.isInverted) ? new Vector4(num3, 0f, num4, 1f) : new Vector4(1f - num4, 0f, 1f - num3, 1f));
- }
- else
- {
- this.mFG.drawRegion = ((!base.isInverted) ? new Vector4(0f, num3, 1f, num4) : new Vector4(0f, 1f - num4, 1f, 1f - num3));
- }
- if (this.thumb != null)
- {
- Vector4 drawingDimensions = this.mFG.drawingDimensions;
- Vector3 position = new Vector3(Mathf.Lerp(drawingDimensions.x, drawingDimensions.z, 0.5f), Mathf.Lerp(drawingDimensions.y, drawingDimensions.w, 0.5f));
- base.SetThumbPosition(this.mFG.cachedTransform.TransformPoint(position));
- }
- }
- else
- {
- base.ForceUpdate();
- }
- }
- [HideInInspector]
- [SerializeField]
- protected float mSize = 1f;
- [HideInInspector]
- [SerializeField]
- private float mScroll;
- [HideInInspector]
- [SerializeField]
- private UIScrollBar.Direction mDir = UIScrollBar.Direction.Upgraded;
- public bool mEnableFixSize;
- public float mFixSizePixcel = 0.1f;
- private enum Direction
- {
- Horizontal,
- Vertical,
- Upgraded
- }
- }
|