Пример #1
0
    // 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);
    }
Пример #2
0
 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);
     }
 }
Пример #5
0
    // 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);
    }
Пример #6
0
    // 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);
        }
    }
Пример #7
0
    // 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);
        }
    }
Пример #9
0
    // 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++;
        }
    }
Пример #10
0
 // 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;
     }
 }
Пример #11
0
 // 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);
     }
 }
Пример #12
0
    // 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));
    }