Ejemplo n.º 1
0
    /// <summary>
    /// Center the panel on the specified target.
    /// </summary>

//  void CenterOn (Transform target, Vector3 panelCenter)
//  {
//      if (target != null && mScrollView != null && mScrollView.panel != null)
//      {
//          Transform panelTrans = mScrollView.panel.cachedTransform;
//          mCenteredObject = target.gameObject;
//
//          // Figure out the difference between the chosen child and the panel's center in local coordinates
//          Vector3 cp = panelTrans.InverseTransformPoint(target.position);
//          Vector3 cc = panelTrans.InverseTransformPoint(panelCenter);
//          Vector3 localOffset = cp - cc;
//
//          // Offset shouldn't occur if blocked
//          if (!mScrollView.canMoveHorizontally) localOffset.x = 0f;
//          if (!mScrollView.canMoveVertically) localOffset.y = 0f;
//          localOffset.z = 0f;
//
//          // Spring the panel to this calculated position
// #if UNITY_EDITOR
//          if (!Application.isPlaying)
//          {
//              panelTrans.localPosition = panelTrans.localPosition - localOffset;
//
//              Vector4 co = mScrollView.panel.clipOffset;
//              co.x += localOffset.x;
//              co.y += localOffset.y;
//              mScrollView.panel.clipOffset = co;
//          }
//          else
// #endif
//          {
//                 SpringPanelMoveBy.Begin(mScrollView.panel.cachedGameObject, -localOffset, springStrength).onFinished = onFinished;
//              //SpringPanel.Begin(mScrollView.panel.cachedGameObject,panelTrans.localPosition - localOffset, springStrength).onFinished = onFinished;
//          }
//      }
//      else mCenteredObject = null;
//
//      // Notify the listener
//      if (onCenter != null) onCenter(mCenteredObject);
//  }

    /// <summary>
    /// Center the panel on the specified target.
    /// </summary>

//  public void CenterOn (Transform target)
//  {
//      if (mScrollView != null && mScrollView.panel != null)
//      {
//          Vector3[] corners = mScrollView.panel.worldCorners;
//          Vector3 panelCenter = (corners[2] + corners[0]) * 0.5f;
//          CenterOn(target, panelCenter);
//      }
//  }

    private void CenterOn()
    {
        if (mScrollView.movement == UIScrollViewSimple.Movement.Horizontal)
        {
            var pos = mScrollView.transform.localPosition;

            var offset   = pos.x;
            var grid     = mScrollView.thisGrid;
            var cellSize = grid.cellWidth;
            var relative = new Vector3();
            if (offset < 0)
            {
                if (offset > -cellSize / 2.0f)
                {
                    relative = new Vector3(-offset, 0, 0);
                    SpringPanelMoveBy.Begin(mScrollView.panel.gameObject, relative, 13f, onFinished).strength = springStrength;
                }
                else
                {
                    relative = new Vector3(-grid.cellWidth - offset, 0, 0);
                    SpringPanelMoveBy.Begin(mScrollView.panel.gameObject, relative, 13f, onFinished).strength = springStrength;
                }
            }
            else
            {
                relative = new Vector3(-offset, 0, 0);
                SpringPanelMoveBy.Begin(mScrollView.panel.gameObject, relative, 13f, onFinished).strength = springStrength;
            }
        }
        else
        {
        }
    }
Ejemplo n.º 2
0
    /// <summary>
    /// Advance toward the target position.
    /// </summary>

    protected virtual void AdvanceTowardsPosition()
    {
        float delta = RealTime.deltaTime;

        bool    trigger = false;
        Vector3 before  = mTrans.localPosition;
        Vector3 after   = NGUIMath.SpringLerp(before, before + target, strength, delta);
        Vector3 offset  = after - before;

        target = target - offset;
        //bool isLast = false;
        if (target.sqrMagnitude < 0.01f)
        {
            after   = target;
            enabled = false;
            trigger = true;
            //isLast = true;
        }
        UIScrollViewSimple tempScrollViewSimple = mTrans.GetComponent <UIScrollViewSimple>();

        if (tempScrollViewSimple != null)
        {
            tempScrollViewSimple.MoveRelative(offset, true);
            //if (isLast)
            //{
            //    if (tempScrollViewSimple.centerOnChild != null)
            //    {
            //        tempScrollViewSimple.centerOnChild.Recenter();
            //    }
            //}
        }
        else
        {
            mTrans.localPosition = after;
            Vector2 cr = mPanel.clipOffset;
            cr.x -= offset.x;
            cr.y -= offset.y;
            mPanel.clipOffset = cr;
        }

        if (mDrag != null)
        {
            mDrag.UpdateScrollbars(false);
        }
        if (tempScrollViewSimple != null)
        {
            tempScrollViewSimple.UpdateScrollbars(false);
        }

        if (trigger && onFinished != null)
        {
            current = this;
            onFinished();
            current = null;
        }
    }
Ejemplo n.º 3
0
    /// <summary>
    /// Start the tweening process.
    /// </summary>

    static public SpringPanelMoveBy Begin(GameObject go, Vector3 pos, float strength, SpringPanel.OnFinished act = null)
    {
        SpringPanelMoveBy sp = go.GetComponent <SpringPanelMoveBy>();

        if (sp == null)
        {
            sp = go.AddComponent <SpringPanelMoveBy>();
        }
        sp.target     = pos;
        sp.strength   = strength;
        sp.onFinished = act;
        sp.enabled    = true;
        return(sp);
    }