Beispiel #1
0
    void OnDraggingStart(DragInfo dragInfo)
    {
        //currentDragIndex=dragInfo.index;
        Debug.Log("ondragging start");
        //if(currentDragIndex==-1){
        Ray        ray = Camera.main.ScreenPointToRay(dragInfo.pos);
        RaycastHit hit;

        //use raycast at the cursor position to detect the object
        if (Physics.Raycast(ray, out hit, Mathf.Infinity))
        {
            if (hit.collider.transform == dragObj1)
            {
                dragObj1.localScale *= 1.1f;
                Obj1ToCursor(dragInfo);
                currentDragIndex1 = dragInfo.index;
            }
            else if (hit.collider.transform == dragObj2)
            {
                dragObj2.localScale *= 1.1f;
                Obj2ToCursor(dragInfo);
                currentDragIndex2 = dragInfo.index;
            }
        }
        //}
    }
 private void OnDraggingEnd(DragInfo dragInfo)
 {
     if (isDraging && mCamera != null)
     {
         mStopWatch.Stop();
         Vector3 vector = GenerateMovedPercentage(mVector3SwipeMoved.x, mVector3SwipeMoved.y);
         OnSwipe(ActionType.FingerUp, dragInfo.delta.x, dragInfo.delta.y, vector.x, vector.y, mStopWatch.ElapsedMilliseconds);
         if (mNeedFlickCheck && dragInfo.isFlick)
         {
             if (Math.Abs(vector.x) < Math.Abs(vector.y))
             {
                 OnSwipeEventAction(ActionType.FingerUpWithVerticalFlick, dragInfo.delta.x, dragInfo.delta.y, vector.x, vector.y, mStopWatch.ElapsedMilliseconds);
             }
             else
             {
                 OnSwipeEventAction(ActionType.FingerUp, dragInfo.delta.x, dragInfo.delta.y, vector.x, vector.y, mStopWatch.ElapsedMilliseconds);
             }
         }
         else
         {
             OnSwipeEventAction(ActionType.FingerUp, dragInfo.delta.x, dragInfo.delta.y, vector.x, vector.y, mStopWatch.ElapsedMilliseconds);
         }
         if (dragInfo.index == mCurrentDragIndex)
         {
             mCurrentDragIndex = -1;
         }
         mVector3SwipeMoved.Set(0f, 0f, 0f);
     }
     isDraging = false;
 }
 private void OnDraggingStart(DragInfo dragInfo)
 {
     if (SingletonMonoBehaviour <UIShortCutMenu> .exist() && SingletonMonoBehaviour <UIShortCutMenu> .Instance.IsFocus)
     {
         return;
     }
     if (this.mCamera != null)
     {
         Ray        ray = this.mCamera.ScreenPointToRay(dragInfo.pos);
         RaycastHit raycastHit;
         if (Physics.Raycast(ray, ref raycastHit, float.PositiveInfinity))
         {
             if (!raycastHit.get_collider().get_gameObject().get_transform().Equals(base.get_transform()))
             {
                 return;
             }
             if (raycastHit.get_collider().get_transform() == this.mTransformCache)
             {
                 this.mVector3SwipeMoved.Set(0f, 0f, 0f);
                 this.mStopWatch.Reset();
                 this.mStopWatch.Start();
                 this.isDraging = true;
                 this.OnSwipeEventAction(UIDisplaySwipeEventRegion.ActionType.Start, dragInfo.delta.x, dragInfo.delta.y, 0f, 0f, 0f);
                 this.mLastSwipeStartWorldPosition.Set(dragInfo.pos.x, dragInfo.pos.y, 0f);
                 this.mCurrentDragIndex = dragInfo.index;
             }
         }
     }
 }
Beispiel #4
0
        public DragInfo ConstructorTest(object sender, MouseButtonEventArgs e)
        {
            DragInfo target = new DragInfo(sender, e);

            return(target);
            // TODO: add assertions to method DragInfoTest.ConstructorTest(Object, MouseButtonEventArgs)
        }
Beispiel #5
0
        static void Postfix(FreeRoamCamera __instance, DragInfo dragInfo)
        {
            if (!Main.enabled || !Main.freeCamActivated)
            {
                return;
            }

            try
            {
                var mDragDelayTimer  = Traverse.Create(__instance).Field("mDragDelayTimer").GetValue <float>();
                var dragInitialDelay = Traverse.Create(__instance).Field("dragInitialDelay").GetValue <float>();
                var dragModifier     = Traverse.Create(__instance).Field("dragModifier").GetValue <float>();

                if (Input.GetMouseButton(1) && mDragDelayTimer >= dragInitialDelay && !(UIManager.instance.UIObjectsAtMousePosition.Count > 0))
                {
                    var zoom      = Mathf.Lerp(__instance.cameraMaxZoom, __instance.cameraMinZoom, __instance.zoomNormalized);
                    var pos       = Vector3.zero;
                    var transform = __instance.transform;
                    var position  = transform.position;
                    var forward   = transform.forward;
                    forward.y = 0;
                    pos      += forward.normalized * (-dragInfo.delta.y * Time.unscaledDeltaTime) * dragModifier * Main.settings.GetMouseSpeed * zoom;
                    var right = transform.right;
                    right.y = 0;
                    pos    += right.normalized * (-dragInfo.delta.x * Time.unscaledDeltaTime) * dragModifier * Main.settings.GetMouseSpeed * zoom;
                    transform.parent.position += pos;
                }
            }
            catch (Exception e)
            {
                Main.logger.LogException(e);
            }
        }
Beispiel #6
0
        void OnDraggingEnd(DragInfo dragInfo)
        {
            if (m_isHaveActiveElement && dragInfo.index == m_activeTapIndex)
            {
                if (m_isHaveActiveElement)
                {
                    ObjToDragPosition(dragInfo);
                }

                Vector2   direction     = Vector2.zero;
                LayerMask layerMask     = 1 << m_dragLayerID;
                Vector2   worlTouchdPos = Camera.main.ScreenToWorldPoint(dragInfo.pos);
                drgaDelegate.endDragingPos(worlTouchdPos);
                RaycastHit2D hit = Support.getHitForNearestObjectByZ(worlTouchdPos, layerMask, direction, m_activeElement);
                if (hit.collider != null)
                {
                    drgaDelegate.endDraging(hit.collider.gameObject, worlTouchdPos);
                }
                else
                {
                    drgaDelegate.endDraging(null, worlTouchdPos);
                }
                m_activeElement       = null;
                m_isHaveActiveElement = false;
            }
        }
 private void OnDraggingEnd(DragInfo dragInfo)
 {
     if (this.isDraging && this.mCamera != null)
     {
         this.mStopWatch.Stop();
         Vector3 vector = this.GenerateMovedPercentage(this.mVector3SwipeMoved.x, this.mVector3SwipeMoved.y);
         this.OnSwipe(UIDisplaySwipeEventRegion.ActionType.FingerUp, dragInfo.delta.x, dragInfo.delta.y, vector.x, vector.y, (float)this.mStopWatch.get_ElapsedMilliseconds());
         if (this.mNeedFlickCheck && dragInfo.isFlick)
         {
             if (Math.Abs(vector.x) < Math.Abs(vector.y))
             {
                 this.OnSwipeEventAction(UIDisplaySwipeEventRegion.ActionType.FingerUpWithVerticalFlick, dragInfo.delta.x, dragInfo.delta.y, vector.x, vector.y, (float)this.mStopWatch.get_ElapsedMilliseconds());
             }
             else
             {
                 this.OnSwipeEventAction(UIDisplaySwipeEventRegion.ActionType.FingerUp, dragInfo.delta.x, dragInfo.delta.y, vector.x, vector.y, (float)this.mStopWatch.get_ElapsedMilliseconds());
             }
         }
         else
         {
             this.OnSwipeEventAction(UIDisplaySwipeEventRegion.ActionType.FingerUp, dragInfo.delta.x, dragInfo.delta.y, vector.x, vector.y, (float)this.mStopWatch.get_ElapsedMilliseconds());
         }
         if (dragInfo.index == this.mCurrentDragIndex)
         {
             this.mCurrentDragIndex = -1;
         }
         this.mVector3SwipeMoved.Set(0f, 0f, 0f);
     }
     this.isDraging = false;
 }
 void onDraggingFinished(DragInfo dragInfo)
 {
     if (OnDraggingFinished != null)
     {
         OnDraggingFinished(dragInfo.pos, dragInfo.index);
     }
 }
Beispiel #9
0
 public static void DFDragging(DragInfo dragInfo)
 {
     if (IT_Gesture.onDualFDraggingE != null)
     {
         IT_Gesture.onDualFDraggingE(dragInfo);
     }
 }
 //dual finger drag event
 public static void DFDragging(DragInfo dragInfo)
 {
     if (onDualFDraggingE != null)
     {
         onDualFDraggingE(dragInfo);
     }
 }
 public static void DFDraggingEnd(DragInfo dragInfo)
 {
     if (onDualFDraggingEndE != null)
     {
         onDualFDraggingEndE(dragInfo.pos);
     }
 }
Beispiel #12
0
    //なぞり開始
    void OnDraggingStart(DragInfo dragInfo)
    {
        isNowAttackable = false;
        //タイル上
        var tilePosition = TileBase.GetArrayFromRay(dragInfo.pos);

        if (tilePosition == null)
        {
            return;
        }

        //キャラクターの上
        if (IntVect2D.IsEqual(tilePosition, character.positionArray) == false)
        {
            return;
        }
        BattleStage.Instance.ResetAllTileColor();

        nowTraceTiles = new List <IntVect2D>();
        nowTraceTiles.Add(tilePosition);
        BattleStage.Instance.ChangeColor(tilePosition, TileState.Skill);

        IT_Gesture.onDraggingE    += OnDragging;
        IT_Gesture.onDraggingEndE += OnDraggingEnd;
        isNowCharge = true;
        ActionSelect.Instance.DisableMoveAttackButton();
    }
Beispiel #13
0
    void OnDragging(DragInfo dragInfo)
    {
        //もうなぞれない
        if (nowTraceTiles.Count == moveRange)
        {
            return;
        }

        //タイル上
        var tilePosition = TileBase.GetArrayFromRay(dragInfo.pos);

        if (tilePosition == null)
        {
            return;
        }
        //まだ未通過
        if (IntVect2D.IsEqual(tilePosition, nowTraceTiles.LastOrDefault()))
        {
            return;
        }
        //まだ未完成
        if (moveRange == nowTraceTiles.Count)
        {
            return;
        }

        //次のタイル
        if (IntVect2D.IsNeighbor(tilePosition, nowTraceTiles.LastOrDefault()) == false)
        {
            return;
        }

        nowTraceTiles.Add(tilePosition);
        BattleStage.Instance.ChangeColor(tilePosition, TileState.Skill);
    }
Beispiel #14
0
        void OnDragging(DragInfo dragInfo)
        {
            //もうなぞれない
            if (nowTraceTiles.Count == selectAttackParameter.moveRange)
            {
                return;
            }

            //タイル上
            var tilePosition = BBattleStage.Instance.GetTilePositionFromScreenPosition(dragInfo.pos);

            if (tilePosition == null)
            {
                return;
            }
            //まだ未通過
            if (IntVect2D.IsEqual(tilePosition, nowTraceTiles.LastOrDefault()))
            {
                return;
            }
            //まだ未完成
            if (selectAttackParameter.moveRange == nowTraceTiles.Count)
            {
                return;
            }

            //次のタイル
            if (IntVect2D.IsNeighbor(tilePosition, nowTraceTiles.LastOrDefault()) == false)
            {
                return;
            }

            nowTraceTiles.Add(tilePosition);
            BBattleStage.Instance.ChangeColor(tilePosition, TileState.Skill);
        }
 public override void OnDragEnd(DragInfo drag)
 {
     if (Time.time - lastShootTime >= player.SHOOT_COOLDOWN)
     {
         Shoot((Camera.main.ScreenToWorldPoint(drag.end) - transform.position).normalized);
     }
 }
Beispiel #16
0
 public static void DFDraggingEnd(DragInfo dragInfo)
 {
     if (IT_Gesture.onDualFDraggingEndE != null)
     {
         IT_Gesture.onDualFDraggingEndE(dragInfo.pos);
     }
 }
Beispiel #17
0
    void DraggingHandler(DragInfo dragInfo)
    {
        if (debug) Debug.Log("====DraggingHandler====\n|| fingercount: " + dragInfo.fingerCount +
                                        " || index: " + dragInfo.index +
                                        " || isFlick: " + dragInfo.isFlick +
                                        " || pos: " + dragInfo.pos );

        if (dragInfo.pos.x / Screen.width <= 0.3)
        {
            yTouchLeft = dragInfo.pos.y / Screen.height;
            Debug.Log("Left: " + yTouchLeft );
        }

        if (dragInfo.pos.x / Screen.width >= 0.7)
        {
            yTouchRight = dragInfo.pos.y / Screen.height;
            Debug.Log("Right: " + yTouchRight );
        }

        speedModifier = (yTouchLeft >= yTouchRight) ? yTouchLeft : yTouchRight;

        directionModifier = yTouchLeft - yTouchRight;
        Debug.Log("Direction: " + directionModifier );

        Debug.Log("speedModifier: " + speedModifier );

        Vector3 pos = Megaman.transform.localPosition;
        pos.x = megamanInitialX + directionModifier*-1;
        float offsettedSpeedModifier = speedModifier - 0.5f;
        pos.z = megamanInitialZ + offsettedSpeedModifier;
        Megaman.transform.localPosition = pos;
        //Debug.Log("orbit.XModifier: "+orbit.XModifier);
    }
Beispiel #18
0
        public static void BeginDrag(DragSource source)
        {
            if (source.IsDraggable() == DraggableResult.Accept)
            {
                AcceptBeginDrag();
            }
            else
            {
                DeniedBeginDrag();
            }

            void AcceptBeginDrag()
            {
                var dragInfo = new DragInfo
                {
                    Source         = source,
                    OriginPosition = source.transform.position
                };

                dragingObjects.Add(source.gameObject, dragInfo);
            }

            void DeniedBeginDrag()
            {
                source.CancelDragging();
            }
        }
 public void DragStart(DragInfo info)
 {
     _popupWin = FindTopWindow(info.Source as FrameworkElement);
     _startPos = info.PointOnScreen;
     _popupWin.ViewModel.ControlModel.IsControlPanelVisible = false;
     _popupWin.Visibility = Visibility.Collapsed;
 }
Beispiel #20
0
 void DraggingStartHandler(DragInfo dragInfo)
 {
     if (debug) Debug.Log("====DraggingStartHandler====\n|| fingercount: " + dragInfo.fingerCount +
                          " || index: " + dragInfo.index +
                          " || isFlick: " + dragInfo.isFlick +
                          " || pos: " + dragInfo.pos );
 }
Beispiel #21
0
        public void DragStart(DragInfo info)
        {
            if (info.SourceItem == null)
            {
                info.Cancelled = true;
                return;
            }
            RadListBox rlb = info.Source as RadListBox;

            if (rlb != null)
            {
                //设置拖拽窗口视觉效果。
                IEnumerable <RadListBoxItem> items = rlb.FindVisualChildren <RadListBoxItem>();
                foreach (RadListBoxItem item in items)
                {
                    if (item.DataContext.Equals(rlb.SelectedItem))
                    {
                        rlb.SetValue(DragDropVisual.VisualProperty, item);
                        break;
                    }
                }
                SearchNodeHistoryViewModel searchVM = rlb.DataContext as SearchNodeHistoryViewModel;
                if (searchVM == null || searchVM.SelectedVideo == null)
                {//如果没有选中项,或者选中项不是视频节点,取消拖拽。
                    info.Cancelled = true;
                }
            }
        }
Beispiel #22
0
        public void Dragging(DragInfo info)
        {
            VideoPanelItem vpi = info.Source as VideoPanelItem;

            if (info.Effects == DragDropEffects.None)
            {
                if (!IsCursorInWindow(info) && vpi.ViewModel != null && vpi.ViewModel.IsInEditStatus)
                {
                    Mouse.SetCursor(Cursors.Hand);
                    info.Handled = true;
                }
            }
            else
            {
                Mouse.SetCursor(Cursors.SizeAll);
                info.Handled = true;
            }

            if (vpi != null)
            {
                if (info.Effects.HasFlag(DragDropEffects.Copy))
                {
                    updateOpacity(vpi, 1);
                }
                else
                {
                    updateOpacity(vpi, 0);
                }
            }
        }
Beispiel #23
0
    void OnDraggingStart(DragInfo dragInfo)
    {
        //currentDragIndex=dragInfo.index;

        //if(currentDragIndex==-1){
        Ray        ray = Camera.main.ScreenPointToRay(dragInfo.pos);
        RaycastHit hit;

        //use raycast at the cursor position to detect the object
        if (Physics.Raycast(ray, out hit, Mathf.Infinity))
        {
            //if the drag started on dragObj1
            if (hit.collider.transform == dragObj1)
            {
                //change the scale of dragObj1, give the user some visual feedback
                dragObj1.localScale *= 1.1f;
                //latch dragObj1 to the cursor, based on the index
                Obj1ToCursor(dragInfo);
                currentDragIndex1 = dragInfo.index;
            }
            //if the drag started on dragObj2
            else if (hit.collider.transform == dragObj2)
            {
                //change the scale of dragObj2, give the user some visual feedback
                dragObj2.localScale *= 1.1f;
                //latch dragObj2 to the cursor, based on the index
                Obj2ToCursor(dragInfo);
                currentDragIndex2 = dragInfo.index;
            }
        }
        //}
    }
 void onDragging(DragInfo dragInfo)
 {
     if (OnDragging != null)
     {
         OnDragging(dragInfo.pos, dragInfo.index);
     }
 }
Beispiel #25
0
    void OnDragging(DragInfo dragInfo)
    {
        //タイル上
        var targetPosition = TileBase.GetArrayFromRay(dragInfo.pos);

        if (targetPosition == null)
        {
            return;
        }
        //まだ未通過
        if (IntVect2D.IsEqual(targetPosition, nowTraceTiles.LastOrDefault()))
        {
            return;
        }
        //まだ未完成
        if (skillTiles.Count == nowTraceTiles.Count)
        {
            return;
        }

        //次のタイル
        if (IntVect2D.IsEqual(targetPosition, IntVect2D.Add(skillTiles[nowTraceTiles.Count], nowTraceTiles[0])) == false)
        {
            FailAciton();
            return;
        }

        nowTraceTiles.Add(targetPosition);
        BattleStage.Instance.ChangeColor(targetPosition, TileState.Skill);
    }
Beispiel #26
0
        private double ApplyMouseDrag(Point mpos, DragInfo info, DiagramItemBlock diagramItem)
        {
            var delta = (mpos - info.DragStartPosition) / _scaleFactor;

            diagramItem.X = info.ItemStartPosition.X + delta.X;
            diagramItem.Y = info.ItemStartPosition.Y + delta.Y;
            return(delta.LengthSquared);
        }
Beispiel #27
0
    /// <summary>
    /// ドラック中
    /// </summary>
    void OnDragging(DragInfo dragInfo)
    {
        Debug.Log("長押し中");
        onDragging.Invoke();

        // ドラックのフレーム数をカウント
        dragFrame++;
    }
Beispiel #28
0
        void OnDraggingEnd(DragInfo drag)
        {
            pointer.enabled = false;

            IT_Gesture.onMouse1E -= OnTouch;

            IT_Gesture.onDraggingEndE -= OnDraggingEnd;
        }
Beispiel #29
0
 public static void DualFingerDragging(DragInfo dragInfo)
 {
     //Debug.Log("DualFingerDrag "+dir);
     if (onDualFDraggingE != null)
     {
         onDualFDraggingE(dragInfo);
     }
 }
        //スワイプによる移動操作検知
        void OnChargeForMove(DragInfo dragInfo)
        {
            //自分キャラ
            if (BCharacterManager.Instance.GetCharacterOnTile(dragInfo.pos) != this.character) return;

            //キャラクター移動用
            IT_Gesture.onDraggingEndE += OnDragMove;
        }
Beispiel #31
0
    public void OnEndDrag(PointerEventData eventData)
    {
        Vector3 worldPosition = eventData.pointerCurrentRaycast.worldPosition;

        MoveObjectToPosition(info.target, worldPosition + info.offset);

        info = new DragInfo();
    }
Beispiel #32
0
 //Dual Finger dragging
 public static void Dragging(DragInfo dragInfo)
 {
     //Debug.Log("dragging "+dir);
     if (onDraggingE != null)
     {
         onDraggingE(dragInfo);
     }
 }
        void OnDraggingEnd(DragInfo drag)
        {
            pointer.enabled = false;

            IT_Gesture.onMouse1E -= OnTouch;

            IT_Gesture.onDraggingEndE -= OnDraggingEnd;
        }
Beispiel #34
0
 void OnDraggingEnd(DragInfo dragInfo)
 {
     CheckTraceComplete();
     //nowTraceTiles = new List<IntVect2D>();
     IT_Gesture.onDraggingE    -= OnDragging;
     isNowCharge                = false;
     IT_Gesture.onDraggingEndE -= OnDraggingEnd;
 }
Beispiel #35
0
    void OnDrag(DragInfo info)
    {
        if (vertical) scrollDelta = info.delta.y;
        else scrollDelta = info.delta.x;

        MoveChildren(scrollDelta*scrollSpeed);

        scrollDelta /= Mathf.Abs(scrollDelta);
    }
 //called when one finger drag are detected
 void OnDragging(DragInfo dragInfo)
 {
     //apply the DPI scaling
     dragInfo.delta/=IT_Gesture.GetDPIFactor();
     //vertical movement is corresponded to rotation in x-axis
     this.orbitSpeedX=-dragInfo.delta.y* this.rotXSpeedModifier;
     //horizontal movement is corresponded to rotation in y-axis
     this.orbitSpeedY=dragInfo.delta.x* this.rotYSpeedModifier;
 }
Beispiel #37
0
        //移動開始
        void OnDraggingStart(DragInfo drag)
        {
            //タッチ位置取得
            pointer.enabled = true;
            DragPosition = drag.pos;
            IT_Gesture.onMouse1E += OnTouch;

            IT_Gesture.onDraggingEndE += OnDraggingEnd;
        }
Beispiel #38
0
        //移動開始
        void OnDraggingStart(DragInfo drag)
        {
            //タッチ位置取得

            dragPosition = drag.pos;
            IT_Gesture.onMouse1E += OnTouch;

            IT_Gesture.onDraggingEndE += OnDraggingEnd;
        }
Beispiel #39
0
 void HandleGestureonDraggingStartE(DragInfo dragInfo)
 {
     if (!isDragging) return;
     Transform puck = PickObject (dragInfo.pos);
     if (puck) {
         lastPuck = puck;
         baseHeight = puck.position.y;
         puck.renderer.material.color = Color.green;
     }
 }
Beispiel #40
0
 void HandleDragging(DragInfo dragInfo)
 {
     if (!isDragging) return;
     if (lastPuck) {
         DisplayText ("Dragging puck to: " + dragInfo.pos);
         Vector3 worldPos = GetWorldPos (dragInfo.pos);
         lastPuck.transform.position = worldPos;
     } else {
         DisplayText ("Dragging to: " + dragInfo.pos);
     }
 }
Beispiel #41
0
 //called when one finger drag are detected
 void OnDragging(DragInfo dragInfo)
 {
     //if the drag is perform using mouse2, use it as a two finger drag
     if(dragInfo.isMouse && dragInfo.index==1) OnMFDragging(dragInfo);
     //else perform normal orbiting
     else{
         //vertical movement is corresponded to rotation in x-axis
         orbitSpeedX=-dragInfo.delta.y*rotXSpeedModifier;
         //horizontal movement is corresponded to rotation in y-axis
         orbitSpeedY=dragInfo.delta.x*rotYSpeedModifier;
     }
 }
Beispiel #42
0
    //assign dragObj2 to the dragInfo position, and display the appropriate tooltip
    void Obj2ToCursor(DragInfo dragInfo)
    {
        Vector3 p=Camera.main.ScreenToWorldPoint(new Vector3(dragInfo.pos.x, dragInfo.pos.y, 30));
        dragObj2.position=p;

        if(dragInfo.isMouse){
            dragTextMesh2.text="Dragging with mouse"+(dragInfo.index+1);
        }
        else{
            dragTextMesh2.text="Dragging with finger"+(dragInfo.index+1);
        }
    }
Beispiel #43
0
    IEnumerator MouseRoutine(int index)
    {
        mouseIndex.Add(index);

        bool dragStarted=false;

        Vector2 startPos=Input.mousePosition;
        Vector2 lastPos=startPos;

        float timeStart=Mathf.Infinity;

        while(mouseIndex.Contains(index)){

            Vector2 curPos=Input.mousePosition;

            if(!dragStarted){
                if(Vector3.Distance(curPos, startPos)>minDragDistance){
                    dragStarted=true;
                    Vector2 delta=curPos-startPos;
                    DragInfo dragInfo=new DragInfo(curPos, delta, 1, index, true);
                    IT_Gesture.DraggingStart(dragInfo);

                    timeStart=Time.realtimeSinceStartup;
                }
            }
            else{
                if(curPos!=lastPos){
                    Vector2 delta=curPos-lastPos;
                    DragInfo dragInfo=new DragInfo(curPos, delta, 1, index, true);
                    IT_Gesture.Dragging(dragInfo);
                }
                else if(fireOnDraggingWhenNotMoving){
                    DragInfo dragInfo=new DragInfo(curPos, Vector2.zero, 1, index, true);
                    IT_Gesture.Dragging(dragInfo);
                }
            }

            lastPos=curPos;

            yield return null;
        }

        if(dragStarted){
            bool isFlick=false;
            if(Time.realtimeSinceStartup-timeStart<0.5f) isFlick=true;

            Vector2 delta=lastPos-startPos;
            DragInfo dragInfo=new DragInfo(lastPos, delta, 1, index, isFlick, true);

            IT_Gesture.DraggingEnd(dragInfo);
        }
    }
Beispiel #44
0
    //called when one finger drag are detected
    void OnDragging(DragInfo dragInfo)
    {
        Debug.Log("drag "+dragInfo.delta);
        if(dragInfo.type!=2){
            //vertical movement is corresponded to rotation in x-axis
            orbitSpeedX=-dragInfo.delta.y*rotXSpeedModifier;
            //horizontal movement is corresponded to rotation in y-axis
            orbitSpeedY=dragInfo.delta.x*rotYSpeedModifier;
        }

        //if the drag is perform using mouse2, use it as a two finger drag
        if(dragInfo.type==2) OnDFDragging(dragInfo);
    }
Beispiel #45
0
 //called when one finger drag are detected
 void OnDragging(DragInfo dragInfo)
 {
     //if the drag is perform using mouse2, use it as a two finger drag
     if(dragInfo.isMouse && dragInfo.index==1) this.OnMFDragging(dragInfo);
     //else perform normal orbiting
     else{
         //apply the DPI scaling
         dragInfo.delta/=IT_Gesture.GetDPIFactor();
         //vertical movement is corresponded to rotation in x-axis
         this.orbitSpeedX=-dragInfo.delta.y* this.rotXSpeedModifier;
         //horizontal movement is corresponded to rotation in y-axis
         this.orbitSpeedY=dragInfo.delta.x* this.rotYSpeedModifier;
     }
 }
 public static Directions ConvertDragToDirection(DragInfo drag)
 {
     Vector2 normalized = (drag.pos - dragStart).normalized;
     if (normalized.x > 0 && Math.Abs(normalized.y) < normalized.x)
         return Directions.Right;
     if (normalized.y > 0 && Math.Abs(normalized.x) < normalized.y)
         return Directions.Up;
     if (normalized.x < 0 && Math.Abs(normalized.y) > normalized.x)
         return Directions.Left;
     if (normalized.y < 0 && Math.Abs(normalized.x) > normalized.y)
         return Directions.Down;
     Debug.Log("Converting Drag to Directions Failed");
     return Directions.None;
 }
Beispiel #47
0
    //called when a dual finger or a right mouse drag is detected
    void OnMFDragging(DragInfo dragInfo)
    {
        //make a new direction, pointing horizontally at the direction of the camera y-rotation
        Quaternion direction=Quaternion.Euler(0, transform.parent.rotation.eulerAngles.y, 0);

        //calculate forward movement based on vertical input
        Vector3 moveDirZ=transform.parent.InverseTransformDirection(direction*Vector3.forward*-dragInfo.delta.y);
        //calculate sideway movement base on horizontal input
        Vector3 moveDirX=transform.parent.InverseTransformDirection(direction*Vector3.right*-dragInfo.delta.x);

        //move the cmera
        transform.parent.Translate(moveDirZ * panSpeedModifier * Time.deltaTime);
        transform.parent.Translate(moveDirX * panSpeedModifier * Time.deltaTime);
    }
Beispiel #48
0
        public virtual void StartDrag(DragInfo dragInfo)
        {
            int itemCount = dragInfo.SourceItems.Cast<object>().Count();

            if (itemCount == 1)
            {
                dragInfo.Data = dragInfo.SourceItems.Cast<object>().First();
            }
            else if (itemCount > 1)
            {
                dragInfo.Data = TypeUtilities.CreateDynamicallyTypedList(dragInfo.SourceItems);
            }

            dragInfo.Effects = (dragInfo.Data != null) ? 
                DragDropEffects.Copy | DragDropEffects.Move : 
                DragDropEffects.None;
        }
Beispiel #49
0
    //assign dragObj1 to the dragInfo position, and display the appropriate tooltip
    void Obj1ToCursor(DragInfo dragInfo)
    {
        //~ LayerMask layer=~(1<<dragObj1.gameObject.layer);
        //~ Ray ray = Camera.main.ScreenPointToRay (dragInfo.pos);
        //~ RaycastHit hit;
        //~ if (Physics.Raycast (ray, out hit, Mathf.Infinity, layer)) {
            //~ dragObj1.position=hit.point;
        //~ }

        Vector3 p=Camera.main.ScreenToWorldPoint(new Vector3(dragInfo.pos.x, dragInfo.pos.y, 30));
        this.dragObj1.position=p+ this.dragOffset1;

        if(dragInfo.isMouse){
            this.dragTextMesh1.text="Dragging with mouse"+(dragInfo.index+1);
        }
        else{
            this.dragTextMesh1.text="Dragging with finger"+(dragInfo.index+1);
        }
    }
Beispiel #50
0
    IEnumerator MouseRoutine(int index)
    {
        mouseIndex.Add(index);

        bool dragStarted=false;

        Vector2 startPos=Input.mousePosition;
        Vector2 lastPos=startPos;

        while(mouseIndex.Contains(index)){

            Vector2 curPos=Input.mousePosition;

            if(!dragStarted){
                if(Vector3.Distance(curPos, startPos)>minDragDistance){
                    dragStarted=true;
                    Vector2 delta=curPos-startPos;
                    DragInfo dragInfo=new DragInfo(curPos, delta, 1, index, true);
                    Gesture.DraggingStart(dragInfo);
                }
            }
            else{
                if(curPos!=lastPos){
                    Vector2 delta=curPos-lastPos;
                    DragInfo dragInfo=new DragInfo(curPos, delta, 1, index, true);
                    Gesture.Dragging(dragInfo);
                }
            }

            lastPos=curPos;

            yield return null;
        }

        if(dragStarted){
            Vector2 delta=lastPos-startPos;
            DragInfo dragInfo=new DragInfo(lastPos, delta, 1, index, true);
            Gesture.DraggingEnd(dragInfo);
        }
    }
Beispiel #51
0
        public DropInfo(object sender, DragEventArgs e, DragInfo dragInfo, string dataFormat)
        {
            Data = (e.Data.GetDataPresent(dataFormat)) ? e.Data.GetData(dataFormat) : e.Data;
            DragInfo = dragInfo;

            VisualTarget = sender as UIElement;

            if (sender is ItemsControl)
            {
                ItemsControl itemsControl = (ItemsControl)sender;
                UIElement item = itemsControl.GetItemContainerAt(e.GetPosition(itemsControl));

                VisualTargetOrientation = itemsControl.GetItemsPanelOrientation();

                if (item != null)
                {
                    ItemsControl itemParent = ItemsControl.ItemsControlFromItemContainer(item);

                    InsertIndex = itemParent.ItemContainerGenerator.IndexFromContainer(item);
                    TargetCollection = itemParent.ItemsSource ?? itemParent.Items;
                    TargetItem = itemParent.ItemContainerGenerator.ItemFromContainer(item);
                    VisualTargetItem = item;

                    if (VisualTargetOrientation == Orientation.Vertical)
                    {
                        if (e.GetPosition(item).Y > item.RenderSize.Height / 2) InsertIndex++;
                    }
                    else
                    {
                        if (e.GetPosition(item).X > item.RenderSize.Width / 2) InsertIndex++;
                    }
                }
                else
                {
                    TargetCollection = itemsControl.ItemsSource ?? itemsControl.Items;
                    InsertIndex = itemsControl.Items.Count;
                }
            }
        }
Beispiel #52
0
    void OnDraggingEnd(DragInfo dragInfo)
    {
        //drop the dragObj being drag by this particular cursor
        if(dragInfo.index==currentDragIndex1){
            currentDragIndex1=-1;
            dragObj1.localScale*=10f/11f;

            Vector3 p=Camera.main.ScreenToWorldPoint(new Vector3(dragInfo.pos.x, dragInfo.pos.y, 30));
            dragObj1.position=p;
            dragTextMesh1.text="DragMe";
        }
        else if(dragInfo.index==currentDragIndex2){
            currentDragIndex2=-1;
            dragObj2.localScale*=10f/11f;

            Vector3 p=Camera.main.ScreenToWorldPoint(new Vector3(dragInfo.pos.x, dragInfo.pos.y, 30));
            dragObj2.position=p;
            dragTextMesh2.text="DragMe";
        }
    }
Beispiel #53
0
 //triggered on a single-finger/mouse dragging event is on-going
 void OnDragging(DragInfo dragInfo)
 {
     //if the dragInfo index matches dragIndex1, call function to position dragObj1 accordingly
     if(dragInfo.index==currentDragIndex1){
         Obj1ToCursor(dragInfo);
     }
     //if the dragInfo index matches dragIndex2, call function to position dragObj2 accordingly
     else if(dragInfo.index==currentDragIndex2){
         Obj2ToCursor(dragInfo);
     }
 }
	IEnumerator TouchRoutine(int index){
		fingerIndex.Add(index);
		
		bool dragStarted=false;
		
		Vector2 startPos=Gesture.GetTouch(index).position;
		Vector2 lastPos=startPos;
		
		float timeStart=Mathf.Infinity;
		
		while((enableMultiDrag && Input.touchCount>0) || (!enableMultiDrag && Input.touchCount==1)){
			
			Touch touch=Gesture.GetTouch(index);
			if(touch.position==Vector2.zero) break;
			
			Vector2 curPos=touch.position;
			
			if(touch.phase==TouchPhase.Moved){
				if(!dragStarted){
					if(Vector3.Distance(curPos, startPos)>minDragDistance){
						dragStarted=true;
						Vector2 delta=curPos-startPos;
						DragInfo dragInfo=new DragInfo(curPos, delta, 1, index, false);
						Gesture.DraggingStart(dragInfo);
						
						timeStart=Time.realtimeSinceStartup;
					}
				}
				else{
					if(curPos!=lastPos){
						Vector2 delta=curPos-lastPos;
						DragInfo dragInfo=new DragInfo(curPos, delta, 1, index, false);
						Gesture.Dragging(dragInfo);
					}
				}
				
				lastPos=curPos;
				
			}
			else if(dragStarted && fireOnDraggingWhenNotMoving){
				DragInfo dragInfo=new DragInfo(curPos, Vector2.zero, 1, index, false);
				Gesture.Dragging(dragInfo);
			}
			
			yield return null;
		}
		
		if(dragStarted){
			bool isFlick=false;
			if(Time.realtimeSinceStartup-timeStart<0.5f) isFlick=true;
			
			Vector2 delta=lastPos-startPos;
			DragInfo dragInfo=new DragInfo(lastPos, delta, 1, index, isFlick, false);
			Gesture.DraggingEnd(dragInfo);
		}
		
		fingerIndex.Remove(index);
	}
Beispiel #55
0
    void OnDraggingStart(DragInfo dragInfo)
    {
        //currentDragIndex=dragInfo.index;

        //if(currentDragIndex==-1){
            Ray ray = Camera.main.ScreenPointToRay(dragInfo.pos);
            RaycastHit hit;
            //use raycast at the cursor position to detect the object
            if(Physics.Raycast(ray, out hit, Mathf.Infinity)){
                //if the drag started on dragObj1
                if(hit.collider.transform==dragObj1){
                    //change the scale of dragObj1, give the user some visual feedback
                    dragObj1.localScale*=1.1f;
                    //latch dragObj1 to the cursor, based on the index
                    Obj1ToCursor(dragInfo);
                    currentDragIndex1=dragInfo.index;
                }
                //if the drag started on dragObj2
                else if(hit.collider.transform==dragObj2){
                    //change the scale of dragObj2, give the user some visual feedback
                    dragObj2.localScale*=1.1f;
                    //latch dragObj2 to the cursor, based on the index
                    Obj2ToCursor(dragInfo);
                    currentDragIndex2=dragInfo.index;
                }
            }
        //}
    }
	IEnumerator MultiDragRoutine(int count){
		if(count<=1) yield break;
		
		bool dragStarted=false;
		
		Vector2 startPos=Vector2.zero;
		for(int i=0; i<Input.touchCount; i++){
			startPos+=Input.touches[i].position;
		}
		startPos/=Input.touchCount;
		Vector2 lastPos=startPos;
		
		float timeStart=Mathf.Infinity;
		
		#if UNITY_ANDROID
		Vector2[] lastPoss=new Vector2[count];
		for(int i=0; i<count; i++){
			lastPoss[i]=Input.touches[i].position;
		}
		#endif
		
		while(Input.touchCount==count){
			Vector2 curPos=Vector2.zero;
			Vector2[] allPos=new Vector2[count];
			bool moving=true;
			for(int i=0; i<count; i++){
				Touch touch=Input.touches[i];
				curPos+=touch.position;
				allPos[i]=touch.position;
				if(touch.phase!=TouchPhase.Moved) moving=false;
			}
			curPos/=count;
			
			bool sync=true;
			if(moving){
				for(int i=0; i<count-1; i++){
					#if UNITY_ANDROID
					Vector2 v1=(Input.touches[i].position+lastPoss[i]).normalized;
					Vector2 v2=(Input.touches[i+1].position+lastPoss[i+1]).normalized;
					#else
					Vector2 v1=Input.touches[i].deltaPosition.normalized;
					Vector2 v2=Input.touches[i+1].deltaPosition.normalized;
					#endif
					if(Vector2.Dot(v1, v2)<0.85f) sync=false;
				}
			}
			
			if(moving && sync){
				if(!dragStarted){
					if(Vector2.Distance(curPos, startPos)>minDragDistance){
						dragStarted=true;
						Vector2 delta=curPos-startPos;
						DragInfo dragInfo=new DragInfo(curPos, delta, count);
						Gesture.DraggingStart(dragInfo);
						
						timeStart=Time.realtimeSinceStartup;
					}
				}
				else{
					if(curPos!=lastPos){
						Vector2 delta=curPos-lastPos;
						DragInfo dragInfo=new DragInfo(curPos, delta, count);
						Gesture.Dragging(dragInfo);
					}
				}
			}
			else if(dragStarted && fireOnDraggingWhenNotMoving){
				DragInfo dragInfo=new DragInfo(curPos, Vector2.zero, count);
				Gesture.Dragging(dragInfo);
			}
			
			lastPos=curPos;
			#if UNITY_ANDROID
			for(int i=0; i<count; i++){
				lastPoss[i]=Input.touches[i].position;
			}
			#endif
			
			yield return null;
		}
		
		if(dragStarted){
			bool isFlick=false;
			if(Time.realtimeSinceStartup-timeStart<0.5f) isFlick=true;
			
			Vector2 delta=lastPos-startPos;
			DragInfo dragInfo=new DragInfo(lastPos, delta, count, isFlick);
			Gesture.DraggingEnd(dragInfo);
		}
		
	}
Beispiel #57
0
 //dual finger drag event
 public static void DFDragging(DragInfo dragInfo)
 {
     if(onDualFDraggingE!=null) onDualFDraggingE(dragInfo);
 }
Beispiel #58
0
 //*****************************************************************************//
 //dragging
 public static void DraggingStart(DragInfo dragInfo)
 {
     if(dragInfo.fingerCount>1){
         if(onMFDraggingStartE!=null) onMFDraggingStartE(dragInfo);
     }
     else{
         if(onDraggingStartE!=null) onDraggingStartE(dragInfo);
     }
 }
Beispiel #59
0
 public static void DraggingEnd(DragInfo dragInfo)
 {
     if(dragInfo.fingerCount>1){
         if(dragInfo.fingerCount==2) DFDraggingEnd(dragInfo); //obsolete function call
         if(onMFDraggingEndE!=null) onMFDraggingEndE(dragInfo);
     }
     else{
         if(onDraggingEndE!=null) onDraggingEndE(dragInfo);
     }
 }
Beispiel #60
0
 public static void DFDraggingEnd(DragInfo dragInfo)
 {
     if(onDualFDraggingEndE!=null) onDualFDraggingEndE(dragInfo.pos);
 }