Esempio n. 1
0
    public void BackPosition(DragBackEffect effect)
    {
        DragBackEffect cache = backEffect;

        backEffect = effect;
        BackPosition();
        backEffect = cache;
    }
Esempio n. 2
0
 private void BackOnTopCallback()
 {
     _backEffect = UGUIDrag.DragBackEffect.Immediately;
     BackPositionAction();
     _backEffect  = _markDragBackEffect;
     this.enabled = true;
     _backDuring  = _markDragBackDuring;
     OnTweenOver();
 }
Esempio n. 3
0
 public void BackPosition(UGUIDrag.DragBackEffect backEffect = UGUIDrag.DragBackEffect.None)
 {
     if (_isBackKeepTop)
     {
         BackOnTop(backEffect);
     }
     else
     {
         DragBackEffect mark = _backEffect;
         _backEffect = backEffect;
         BackPositionAction();
         _backEffect = mark;
     }
 }
Esempio n. 4
0
    public void OnBeginDrag(PointerEventData eventData)
    {
        if (!this.enabled || _isDown)
        {
            return;
        }

        if (null != DragValidCheckEvent)
        {
            if (!DragValidCheckEvent(eventData))
            {
                _canDrag = false;
                return;
            }
        }
        if (null != OnPrevBeginDragAction)
        {
            OnPrevBeginDragAction.Invoke(this, eventData);
        }

        _dragMoveDamp = 0.3f;
        _isDown       = true;
        _canDrag      = true;
        _tool.DOKill();

        _isDragging = true;
        GetComponent <Graphic>().raycastTarget = false;
        _toolCachePosition = _tool.localPosition;
        _toolCacheScale    = _tool.localScale;
        _toolCacheRotation = _tool.localEulerAngles;
        _toolCacheIndex    = _tool.GetSiblingIndex();

        if (Math.Abs(_dragChangeScale) > float.Epsilon)
        {
            _tool.DOScale(_toolCacheScale * _dragChangeScale, 0.4f);
        }
        if (Math.Abs(_dragChangeRotate) > float.Epsilon)
        {
            _tool.DOLocalRotate(_toolCacheRotation + new Vector3(0f, 0f, _dragChangeRotate), 0.4f, RotateMode.Fast);
        }

        _tool.position += new Vector3(0, 0, _dragOffsetZ);
        _worldPos       = _tool.position;
        Vector3 touchDownMousePos;

        RectTransformUtility.ScreenPointToWorldPointInRectangle(_tool, eventData.position, _raycastCamera, out touchDownMousePos);
        _touchDownTargetOffset = _worldPos - touchDownMousePos;
        if (_isDragOriginPoint)
        {
            _worldPos += _touchDownTargetOffset * 0.01f;
        }

        _prevParent = _tool.parent;

        if (_draggingParent)
        {
            _tool.SetParent(_draggingParent);
        }

        if (true == _isBackKeepTop && false == _hasStartBackKeepTop)
        {
            _hasStartBackKeepTop = true;
            _backEffect          = UGUIDrag.DragBackEffect.Keep;
            _markDragBackPos     = _tool.position;
            _markDragBackScale   = _tool.localScale;
        }

        SetToolState(true);
        SetBoxState(true);

        if (null != _tipBeforeDrag)
        {
            Destroy(_tipBeforeDrag);
        }
        if (null != _tipDragging)
        {
            _tipDragging.SetActive(true);
        }

        PlaySoundStartDrag();

        if (_dragEffectType == DRAG_EFFECT_TYPE.ON_DRAG)
        {
            SetDragEffectPlay(true);
        }

        if (null != OnBeginDragAction)
        {
            OnBeginDragAction.Invoke(this, eventData);
        }
    }