예제 #1
0
        private void InputControllerOnFingerDown(Vector3 fingerDownPos)
        {
            CurrentlyDraggedPickable = null;
            bool isDragStartedOnSelection = false;

            //try{ isDragStartedOnSelection = SelectedCollider != null && GetClosestColliderAtScreenPoint(fingerDownPos) == SelectedCollider && SelectedCollider.GetComponent<MobileTouchPickable>().checkMove;
            //    } catch { }
            try
            {
                isDragStartedOnSelection = SelectedCollider != null && GetClosestColliderAtScreenPoint(fingerDownPos) == SelectedCollider;
            }
            catch { }
            if (isDragStartedOnSelection == true)
            {
                MobileTouchPickable mobileTouchPickable = SelectedCollider.GetComponent <MobileTouchPickable>();
                if (mobileTouchPickable != null)
                {
                    mobileTouchCam.OnDragSceneObject(); //Lock camera movement.
                    CurrentlyDraggedPickable          = mobileTouchPickable;
                    currentlyDraggedTransformPosition = CurrentlyDraggedTransform.position;
                    DraggedTransformOffset            = Vector3.zero;
                    if (mobileTouchCam.Cam.orthographic == true && snapToGrid == false)
                    {
                        DraggedTransformOffset = CurrentlyDraggedTransform.position - ComputeDragPositionWorld(fingerDownPos);
                    }
                }
            }
        }
예제 #2
0
        private void RequestDragPickable(Component colliderComponent, Vector2 fingerDownPos, Vector3?intersectionPoint)
        {
            CurrentlyDraggedPickable = null;
            bool isDragStartedOnSelection = SelectedCollider != null && colliderComponent == SelectedCollider;

            if (isDragStartedOnSelection == true)
            {
                MobileTouchPickable mobileTouchPickable = SelectedCollider.GetComponent <MobileTouchPickable>();
                if (mobileTouchPickable != null)
                {
                    mobileTouchCam.OnDragSceneObject(); //Lock camera movement.
                    CurrentlyDraggedPickable          = mobileTouchPickable;
                    currentlyDraggedTransformPosition = CurrentlyDraggedTransform.position;

                    invokeMoveStartedOnDrag = true;
                    currentDragStartPos     = CurrentlyDraggedTransform.position;

                    draggedTransformOffset       = Vector3.zero;
                    draggedTransformHeightOffset = Vector3.zero;
                    draggedItemCustomOffset      = Vector3.zero;
                    if (intersectionPoint != null && intersectionPoint.HasValue == true)
                    {
                        //Find offset of item transform relative to ground.
                        Vector3 groundPosCenter     = Vector3.zero;
                        Ray     groundScanRayCenter = new Ray(CurrentlyDraggedTransform.position, -mobileTouchCam.RefPlane.normal);
                        bool    rayHitSuccess       = mobileTouchCam.RaycastGround(groundScanRayCenter, out groundPosCenter);
                        if (rayHitSuccess == true)
                        {
                            draggedTransformHeightOffset = CurrentlyDraggedTransform.position - groundPosCenter;
                        }
                        else
                        {
                            groundPosCenter = CurrentlyDraggedTransform.position;
                        }

                        draggedTransformOffset = groundPosCenter - intersectionPoint.Value;
                    }

                    itemInitialDragOffsetWorld = (ComputeDragPosition(fingerDownPos, SnapToGrid) - CurrentlyDraggedTransform.position);
                }
            }
        }