// Token: 0x06004E02 RID: 19970 RVA: 0x001377D8 File Offset: 0x001359D8 public bool ConstrainTargetToBounds(Transform target, ref global::AABBox targetBounds, bool immediate) { Vector3 vector = this.CalculateConstrainOffset(targetBounds.min, targetBounds.max); if (vector.magnitude > 0f) { if (immediate) { target.localPosition += vector; targetBounds.center += vector; global::SpringPosition component = target.GetComponent <global::SpringPosition>(); if (component != null) { component.enabled = false; } } else { global::SpringPosition springPosition = global::SpringPosition.Begin(target.gameObject, target.localPosition + vector, 13f); springPosition.ignoreTimeScale = true; springPosition.worldSpace = false; } return(true); } return(false); }
public static BoxCollider AddWidgetCollider(GameObject go) { if (go != null) { Collider component = go.GetComponent <Collider>(); BoxCollider boxCollider = component as BoxCollider; if (boxCollider == null) { if (component != null) { if (Application.isPlaying) { Object.Destroy(component); } else { Object.DestroyImmediate(component); } } boxCollider = go.AddComponent <BoxCollider>(); } int num = global::NGUITools.CalculateNextDepth(go); global::AABBox aabbox = global::NGUIMath.CalculateRelativeWidgetBounds(go.transform); boxCollider.isTrigger = true; boxCollider.center = aabbox.center + Vector3.back * ((float)num * 0.25f); boxCollider.size = new Vector3(aabbox.size.x, aabbox.size.y, 0f); return(boxCollider); } return(null); }
// Token: 0x060049E6 RID: 18918 RVA: 0x0011BFEC File Offset: 0x0011A1EC private void CenterOnPos(Vector2 localPos) { if (this.mBG == null || this.mFG == null) { return; } global::AABBox aabbox = global::NGUIMath.CalculateRelativeInnerBounds(this.cachedTransform, this.mBG); global::AABBox aabbox2 = global::NGUIMath.CalculateRelativeInnerBounds(this.cachedTransform, this.mFG); if (this.mDir == global::UIScrollBar.Direction.Horizontal) { float num = aabbox.size.x - aabbox2.size.x; float num2 = num * 0.5f; float num3 = aabbox.center.x - num2; float num4 = (num <= 0f) ? 0f : ((localPos.x - num3) / num); this.scrollValue = ((!this.mInverted) ? num4 : (1f - num4)); } else { float num5 = aabbox.size.y - aabbox2.size.y; float num6 = num5 * 0.5f; float num7 = aabbox.center.y - num6; float num8 = (num5 <= 0f) ? 0f : (1f - (localPos.y - num7) / num5); this.scrollValue = ((!this.mInverted) ? num8 : (1f - num8)); } }
// Token: 0x060049EA RID: 18922 RVA: 0x0011C1FC File Offset: 0x0011A3FC private void OnPressForeground(GameObject go, bool isPressed) { if (isPressed) { this.mCam = global::UICamera.currentCamera; global::AABBox aabbox = global::NGUIMath.CalculateAbsoluteWidgetBounds(this.mFG.cachedTransform); this.mScreenPos = this.mCam.WorldToScreenPoint(aabbox.center); } }
// Token: 0x06004A59 RID: 19033 RVA: 0x0011EF0C File Offset: 0x0011D10C public static global::AABBox CalculateAbsoluteWidgetBounds(Transform trans) { global::AABBox result; using (global::NGUIMath.WidgetList widgetsInChildren = global::NGUIMath.GetWidgetsInChildren(trans)) { if (widgetsInChildren.empty) { result = default(global::AABBox); } else { global::AABBox aabbox = default(global::AABBox); bool flag = true; foreach (global::UIWidget uiwidget in widgetsInChildren) { Vector2 vector; Vector2 vector2; uiwidget.GetPivotOffsetAndRelativeSize(out vector, out vector2); Vector3 vector3; vector3.x = (vector.x + 0.5f) * vector2.x; vector3.y = (vector.y - 0.5f) * vector2.y; Vector3 vector4; vector4.x = vector3.x + vector2.x * 0.5f; vector4.y = vector3.y + vector2.y * 0.5f; vector3.x -= vector2.x * 0.5f; vector3.y -= vector2.y * 0.5f; vector3.z = 0f; vector4.z = 0f; global::AABBox aabbox2 = new global::AABBox(ref vector3, ref vector4); Matrix4x4 localToWorldMatrix = uiwidget.cachedTransform.localToWorldMatrix; global::AABBox aabbox3; aabbox2.TransformedAABB3x4(ref localToWorldMatrix, out aabbox3); if (flag) { aabbox = aabbox3; flag = false; } else { aabbox.Encapsulate(ref aabbox3); } } if (flag) { result = new global::AABBox(trans.position); } else { result = aabbox; } } } return(result); }
// Token: 0x06004996 RID: 18838 RVA: 0x00119C20 File Offset: 0x00117E20 public void SetDragAmount(float x, float y, bool updateScrollbars) { this.DisableSpring(); global::AABBox bounds = this.bounds; if (bounds.min.x == bounds.max.x || bounds.min.y == bounds.max.x) { return; } Vector4 clipRange = this.mPanel.clipRange; float num = clipRange.z * 0.5f; float num2 = clipRange.w * 0.5f; float num3 = bounds.min.x + num; float num4 = bounds.max.x - num; float num5 = bounds.min.y + num2; float num6 = bounds.max.y - num2; if (this.mPanel.clipping == global::UIDrawCall.Clipping.SoftClip) { num3 -= this.mPanel.clipSoftness.x; num4 += this.mPanel.clipSoftness.x; num5 -= this.mPanel.clipSoftness.y; num6 += this.mPanel.clipSoftness.y; } float num7 = Mathf.Lerp(num3, num4, x); float num8 = Mathf.Lerp(num6, num5, y); if (!updateScrollbars) { Vector3 localPosition = this.mTrans.localPosition; if (this.scale.x != 0f) { localPosition.x += clipRange.x - num7; } if (this.scale.y != 0f) { localPosition.y += clipRange.y - num8; } this.mTrans.localPosition = localPosition; } clipRange.x = num7; clipRange.y = num8; this.mPanel.clipRange = clipRange; if (updateScrollbars) { this.UpdateScrollbars(false); } }
// Token: 0x06004A5D RID: 19037 RVA: 0x0011F354 File Offset: 0x0011D554 public static global::AABBox CalculateRelativeInnerBounds(Transform root, global::UISlicedSprite sprite) { Transform cachedTransform = sprite.cachedTransform; Matrix4x4 matrix4x = root.worldToLocalMatrix * cachedTransform.localToWorldMatrix; Vector2 vector; Vector2 vector2; sprite.GetPivotOffsetAndRelativeSize(out vector, out vector2); float num = (vector.x + 0.5f) * vector2.x; float num2 = (vector.y - 0.5f) * vector2.y; vector2 *= 0.5f; Vector3 localScale = cachedTransform.localScale; float x = localScale.x; float y = localScale.y; Vector4 border = sprite.border; if (x != 0f) { border.x /= x; border.z /= x; } if (y != 0f) { border.y /= y; border.w /= y; } Vector3 vector3; vector3.x = num - vector2.x + border.x; Vector3 vector4; vector4.x = num + vector2.x - border.z; vector3.y = num2 - vector2.y + border.y; vector4.y = num2 + vector2.y - border.w; vector3.z = (vector4.z = 0f); global::AABBox aabbox = new global::AABBox(ref vector3, ref vector4); global::AABBox result; aabbox.TransformedAABB3x4(ref matrix4x, out result); return(result); }
// Token: 0x06002A50 RID: 10832 RVA: 0x0009D33C File Offset: 0x0009B53C public void RepositionAtCursor() { Vector3 vector = global::UICamera.lastMousePosition; Ray ray = this.uiCamera.ScreenPointToRay(vector); float num = 0f; if (this.planeTest.Raycast(ray, ref num)) { base.transform.position = ray.GetPoint(num); global::AABBox aabbox = global::NGUIMath.CalculateRelativeWidgetBounds(base.transform); float num2 = base.transform.localPosition.x + aabbox.size.x - (float)Screen.width; if (num2 > 0f) { base.transform.SetLocalPositionX(base.transform.localPosition.x - num2); } float num3 = base.transform.localPosition.y + aabbox.size.y - (float)Screen.height; if (num3 > 0f) { base.transform.SetLocalPositionY(base.transform.localPosition.y - num3); } base.transform.localPosition = new Vector3(base.transform.localPosition.x, base.transform.localPosition.y, -180f); } }
// Token: 0x06004A06 RID: 18950 RVA: 0x0011CF1C File Offset: 0x0011B11C private void RepositionVariableSize(List <Transform> children) { float num = 0f; float num2 = 0f; int num3 = (this.columns <= 0) ? 1 : (children.Count / this.columns + 1); int num4 = (this.columns <= 0) ? children.Count : this.columns; global::AABBox[,] array = new global::AABBox[num3, num4]; global::AABBox[] array2 = new global::AABBox[num4]; global::AABBox[] array3 = new global::AABBox[num3]; int num5 = 0; int num6 = 0; int i = 0; int count = children.Count; while (i < count) { Transform transform = children[i]; global::AABBox aabbox = global::NGUIMath.CalculateRelativeWidgetBounds(transform); Vector3 localScale = transform.localScale; aabbox.SetMinMax(Vector3.Scale(aabbox.min, localScale), Vector3.Scale(aabbox.max, localScale)); array[num6, num5] = aabbox; array2[num5].Encapsulate(aabbox); array3[num6].Encapsulate(aabbox); if (++num5 >= this.columns && this.columns > 0) { num5 = 0; num6++; } i++; } num5 = 0; num6 = 0; int j = 0; int count2 = children.Count; while (j < count2) { Transform transform2 = children[j]; global::AABBox aabbox2 = array[num6, num5]; global::AABBox aabbox3 = array2[num5]; global::AABBox aabbox4 = array3[num6]; Vector3 localPosition = transform2.localPosition; Vector3 min = aabbox2.min; Vector3 max = aabbox2.max; Vector3 vector = aabbox2.size * 0.5f; Vector3 center = aabbox2.center; Vector3 min2 = aabbox4.min; Vector3 max2 = aabbox4.max; Vector3 min3 = aabbox3.min; localPosition.x = num + vector.x - center.x; localPosition.x += min.x - min3.x + this.padding.x; if (this.direction == global::UITable.Direction.Down) { localPosition.y = -num2 - vector.y - center.y; localPosition.y += (max.y - min.y - max2.y + min2.y) * 0.5f - this.padding.y; } else { localPosition.y = num2 + vector.y - center.y; localPosition.y += (max.y - min.y - max2.y + min2.y) * 0.5f - this.padding.y; } num += min3.x - min3.x + this.padding.x * 2f; transform2.localPosition = localPosition; if (++num5 >= this.columns && this.columns > 0) { num5 = 0; num6++; num = 0f; num2 += vector.y * 2f + this.padding.y * 2f; } j++; } }
// Token: 0x06004995 RID: 18837 RVA: 0x0011992C File Offset: 0x00117B2C public void UpdateScrollbars(bool recalculateBounds) { if (this.mPanel == null) { return; } if (this.horizontalScrollBar != null || this.verticalScrollBar != null) { if (recalculateBounds) { this.mCalculatedBounds = false; this._panelMayNeedBoundCalculation = false; this.mShouldMove = this.shouldMove; } if (this.horizontalScrollBar != null) { global::AABBox bounds = this.bounds; Vector3 size = bounds.size; if (size.x > 0f) { Vector4 clipRange = this.mPanel.clipRange; float num = clipRange.z * 0.5f; float num2 = clipRange.x - num - bounds.min.x; float num3 = bounds.max.x - num - clipRange.x; if (this.mPanel.clipping == global::UIDrawCall.Clipping.SoftClip) { num2 += this.mPanel.clipSoftness.x; num3 -= this.mPanel.clipSoftness.x; } num2 = Mathf.Clamp01(num2 / size.x); num3 = Mathf.Clamp01(num3 / size.x); float num4 = num2 + num3; this.mIgnoreCallbacks = true; this.horizontalScrollBar.barSize = 1f - num4; this.horizontalScrollBar.scrollValue = ((num4 <= 0.001f) ? 0f : (num2 / num4)); this.mIgnoreCallbacks = false; } } if (this.verticalScrollBar != null) { global::AABBox bounds2 = this.bounds; Vector3 size2 = bounds2.size; if (size2.y > 0f) { Vector4 clipRange2 = this.mPanel.clipRange; float num5 = clipRange2.w * 0.5f; float num6 = clipRange2.y - num5 - bounds2.min.y; float num7 = bounds2.max.y - num5 - clipRange2.y; if (this.mPanel.clipping == global::UIDrawCall.Clipping.SoftClip) { num6 += this.mPanel.clipSoftness.y; num7 -= this.mPanel.clipSoftness.y; } num6 = Mathf.Clamp01(num6 / size2.y); num7 = Mathf.Clamp01(num7 / size2.y); float num8 = num6 + num7; this.mIgnoreCallbacks = true; this.verticalScrollBar.barSize = 1f - num8; this.verticalScrollBar.scrollValue = ((num8 <= 0.001f) ? 0f : (1f - num6 / num8)); this.mIgnoreCallbacks = false; } } } else if (recalculateBounds) { this.mCalculatedBounds = false; this._panelMayNeedBoundCalculation = false; } }
// Token: 0x060049CF RID: 18895 RVA: 0x0011B478 File Offset: 0x00119678 private void OnClick() { if (this.mChild == null && this.atlas != null && this.font != null && this.items.Count > 1) { this.mLabelList.Clear(); this.handleEvents = true; if (this.mPanel == null) { this.mPanel = global::UIPanel.Find(base.transform, true); } Transform transform = base.transform; global::AABBox aabbox = global::NGUIMath.CalculateRelativeWidgetBounds(transform.parent, transform); this.mChild = new GameObject("Drop-down List"); this.mChild.layer = base.gameObject.layer; Transform transform2 = this.mChild.transform; transform2.parent = transform.parent; transform2.localPosition = aabbox.min; transform2.localRotation = Quaternion.identity; transform2.localScale = Vector3.one; this.mBackground = global::NGUITools.AddSprite(this.mChild, this.atlas, this.backgroundSprite); this.mBackground.pivot = global::UIWidget.Pivot.TopLeft; this.mBackground.depth = global::NGUITools.CalculateNextDepth(this.mPanel.gameObject); this.mBackground.color = this.backgroundColor; Vector4 border = this.mBackground.border; this.mBgBorder = border.y; this.mBackground.cachedTransform.localPosition = new Vector3(0f, border.y, 0f); this.mHighlight = global::NGUITools.AddSprite(this.mChild, this.atlas, this.highlightSprite); this.mHighlight.pivot = global::UIWidget.Pivot.TopLeft; this.mHighlight.color = this.highlightColor; global::UIAtlas.Sprite sprite = this.mHighlight.sprite; float num = sprite.inner.yMin - sprite.outer.yMin; float num2 = (float)this.font.size * this.textScale; float num3 = 0f; float num4 = -this.padding.y; List <global::UILabel> list = new List <global::UILabel>(); int i = 0; int count = this.items.Count; while (i < count) { string text = this.items[i]; global::UILabel uilabel = global::NGUITools.AddWidget <global::UILabel>(this.mChild); uilabel.pivot = global::UIWidget.Pivot.TopLeft; uilabel.font = this.font; uilabel.text = ((!this.isLocalized || !(global::Localization.instance != null)) ? text : global::Localization.instance.Get(text)); uilabel.color = this.textColor; uilabel.cachedTransform.localPosition = new Vector3(border.x, num4, 0f); uilabel.MakePixelPerfect(); if (this.textScale != 1f) { Vector3 localScale = uilabel.cachedTransform.localScale; uilabel.cachedTransform.localScale = localScale * this.textScale; } list.Add(uilabel); num4 -= num2; num4 -= this.padding.y; num3 = Mathf.Max(num3, uilabel.relativeSize.x * num2); global::UIEventListener uieventListener = global::UIEventListener.Get(uilabel.gameObject); uieventListener.onHover = new global::UIEventListener.BoolDelegate(this.OnItemHover); uieventListener.onPress = new global::UIEventListener.BoolDelegate(this.OnItemPress); uieventListener.parameter = text; if (this.mSelectedItem == text) { this.Highlight(uilabel, true); } this.mLabelList.Add(uilabel); i++; } num3 = Mathf.Max(num3, aabbox.size.x - border.x * 2f); Vector3 center; center..ctor(num3 * 0.5f / num2, -0.5f, 0f); Vector3 size; size..ctor(num3 / num2, (num2 + this.padding.y) / num2, 1f); int j = 0; int count2 = list.Count; while (j < count2) { global::UILabel uilabel2 = list[j]; global::UIHotSpot uihotSpot = global::NGUITools.AddWidgetHotSpot(uilabel2.gameObject); center.z = uihotSpot.center.z; uihotSpot.center = center; uihotSpot.size = size; j++; } num3 += border.x * 2f; num4 -= border.y; this.mBackground.cachedTransform.localScale = new Vector3(num3, -num4 + border.y, 1f); this.mHighlight.cachedTransform.localScale = new Vector3(num3 - border.x * 2f + (sprite.inner.xMin - sprite.outer.xMin) * 2f, num2 + num * 2f, 1f); bool flag = this.position == global::UIPopupList.Position.Above; if (this.position == global::UIPopupList.Position.Auto) { global::UICamera uicamera = global::UICamera.FindCameraForLayer(base.gameObject.layer); if (uicamera != null) { flag = (uicamera.cachedCamera.WorldToViewportPoint(transform.position).y < 0.5f); } } if (this.isAnimated) { float bottom = num4 + num2; this.Animate(this.mHighlight, flag, bottom); int k = 0; int count3 = list.Count; while (k < count3) { this.Animate(list[k], flag, bottom); k++; } this.AnimateColor(this.mBackground); this.AnimateScale(this.mBackground, flag, bottom); } if (flag) { transform2.localPosition = new Vector3(aabbox.min.x, aabbox.max.y - num4 - border.y, aabbox.min.z); } } else { this.OnSelect(false); } }
// Token: 0x06004E03 RID: 19971 RVA: 0x0013788C File Offset: 0x00135A8C public bool ConstrainTargetToBounds(Transform target, bool immediate) { global::AABBox aabbox = global::NGUIMath.CalculateRelativeWidgetBounds(this.cachedTransform, target); return(this.ConstrainTargetToBounds(target, ref aabbox, immediate)); }