Пример #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);
                    }
                }
            }
        }
        private void RequestDragPickable(Component colliderComponent, Vector2 fingerDownPos, Vector3 intersectionPoint)
        {
            if (requireLongTapForMove == true && isSelectedViaLongTap == false)
            {
                return;
            }

            CurrentlyDraggedPickable = null;
            bool isDragStartedOnSelection = colliderComponent != null && SelectedColliders.Contains(colliderComponent);

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

                    invokeMoveStartedOnDrag = true;
                    currentDragStartPos     = CurrentlyDraggedTransform.position;
                    selectionPositionOffsets.Clear();
                    foreach (Component selectionComponent in SelectedColliders)
                    {
                        selectionPositionOffsets.Add(selectionComponent, currentDragStartPos - selectionComponent.transform.position);
                    }

                    draggedTransformOffset       = Vector3.zero;
                    draggedTransformHeightOffset = Vector3.zero;
                    draggedItemCustomOffset      = Vector3.zero;

                    //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;
                    itemInitialDragOffsetWorld = (ComputeDragPosition(fingerDownPos, SnapToGrid) - CurrentlyDraggedTransform.position);
                }
            }
        }
Пример #3
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);
                }
            }
        }