コード例 #1
0
        /// <summary>
        /// HoldCanceled event fires an message event upwards on the focus object for "HoldCanceled"
        /// and calls OnHoldCanceled for InteractibleObjects
        /// </summary>
        /// <param name="focuser"></param>
        /// <param name="ray"></param>
        private void HoldCanceledEvent(AFocuser focuser, Ray ray)
        {
            if (focuser != null)
            {
                GameObject           focusObject = focuser.PrimeFocus;
                InteractionEventArgs eventArgs   = new InteractionEventArgs(focuser, Vector3.zero, true, ray);

                if (focusObject != null)
                {
                    focusObject.SendMessage("HoldCanceled", eventArgs, SendMessageOptions.DontRequireReceiver);
                    SendEvent(OnHoldCanceled, focusObject, eventArgs);
                    ReleaseFocus(focuser);
                }


                if (focuser.UIInteractibleFocus != null)
                {
                    PointerEventData eventData = focuser.GetPointerData();
                    FocusManager.Instance.ExecuteUIFocusEvent(focuser.UIInteractibleFocus, eventData, ExecuteEvents.pointerUpHandler);
                    eventData.selectedObject = null;

                    eventData.pointerPress     = null;
                    eventData.eligibleForClick = false;
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Navigation Canceled event fires an message event upwards on the focus object for "NavigationCanceled"
        /// and calls OnNavigationCanceled for InteractibleObjects
        /// </summary>
        /// <param name="focuser"></param>
        /// <param name="relativePosition"></param>
        /// <param name="ray"></param>
        private void NavigationCanceledEvent(AFocuser focuser, Vector3 relativePosition, Ray ray)
        {
            IsNavigating = false;

            if (focuser != null)
            {
                GameObject           focusObject = focuser.PrimeFocus;
                InteractionEventArgs eventArgs   = new InteractionEventArgs(focuser, relativePosition, true, ray);

                if (focusObject != null)
                {
                    focusObject.SendMessage("NavigationCanceled", eventArgs, SendMessageOptions.DontRequireReceiver);
                    SendEvent(OnNavigationCanceled, focusObject, eventArgs);
                    ReleaseFocus(focuser);
                }

                if (focuser.UIInteractibleFocus != null)
                {
                    PointerEventData pointerEventData = focuser.GetPointerData();

                    FocusManager.Instance.ExecuteUIFocusEvent(focuser.UIInteractibleFocus, focuser.GetPointerData(), ExecuteEvents.endDragHandler);
                    pointerEventData.pointerDrag = null;

                    FocusManager.Instance.ExecuteUIFocusEvent(focuser.UIInteractibleFocus, focuser.GetPointerData(), ExecuteEvents.pointerUpHandler);
                    pointerEventData.selectedObject = null;
                }
            }
        }
コード例 #3
0
        /// <summary>
        /// Navigation Updated event fires an message event upwards on the focus object for "NavigationUpdated"
        /// and calls OnNavigationUpdated for InteractibleObjects
        /// </summary>
        /// <param name="focuser"></param>
        /// <param name="relativePosition"></param>
        /// <param name="ray"></param>
        private void NavigationUpdatedEvent(AFocuser focuser, Vector3 relativePosition, Ray ray)
        {
            IsNavigating = true;

            if (focuser != null)
            {
                GameObject           focusObject = focuser.PrimeFocus;
                InteractionEventArgs eventArgs   = new InteractionEventArgs(focuser, relativePosition, true, ray);

                if (focusObject != null)
                {
                    focusObject.SendMessage("NavigationUpdated", eventArgs, SendMessageOptions.DontRequireReceiver);
                    SendEvent(OnNavigationUpdated, focusObject, eventArgs);
                }

                WorldGraphicsRaycaster.RayEventData pointerEventData = focuser.GetPointerData() as WorldGraphicsRaycaster.RayEventData;
                if (pointerEventData.pointerDrag != null)
                {
                    pointerEventData.delta = relativePosition;
                    Vector2 curPos = pointerEventData.position;

                    pointerEventData.CurrentAddition += relativePosition * pointerEventData.ScaleMultiplier;
                    Vector3 offsetpos = pointerEventData.InitialDragHandPos + pointerEventData.CurrentAddition;

                    pointerEventData.position = Camera.main.WorldToScreenPoint(offsetpos);
                    FocusManager.Instance.ExecuteUIFocusEvent(pointerEventData.pointerDrag, pointerEventData, ExecuteEvents.dragHandler);

                    pointerEventData.position = curPos;
                }
            }
        }
コード例 #4
0
        /// <summary>
        /// Navigation Started event fires an message event upwards on the focus object for "NavigationStarted"
        /// and calls OnNavigationStarted for InteractibleObjects
        /// </summary>
        /// <param name="focuser"></param>
        /// <param name="relativePosition"></param>
        /// <param name="ray"></param>
        private void NavigationStartedEvent(AFocuser focuser, Vector3 relativePosition, Ray ray)
        {
            IsNavigating = true;

            if (focuser != null)
            {
                GameObject           focusObject = focuser.PrimeFocus;
                InteractionEventArgs eventArgs   = new InteractionEventArgs(focuser, relativePosition, true, ray);

                if (focusObject != null)
                {
                    focusObject.SendMessage("NavigationStarted", eventArgs, SendMessageOptions.DontRequireReceiver);
                    SendEvent(OnNavigationStarted, focusObject, eventArgs);
                    CheckLockFocus(focuser);
                }

                if (focuser.UIInteractibleFocus != null)
                {
                    WorldGraphicsRaycaster.RayEventData eventData = focuser.GetPointerData() as WorldGraphicsRaycaster.RayEventData;

                    FocusManager.Instance.ExecuteUIFocusEvent(focuser.UIInteractibleFocus, eventData, ExecuteEvents.pointerDownHandler);
                    eventData.pointerPress   = focuser.UIInteractibleFocus;
                    eventData.selectedObject = focuser.UIInteractibleFocus;

                    eventData.dragging         = true;
                    eventData.eligibleForClick = false;
                    eventData.pointerDrag      = focuser.UIInteractibleFocus;

                    Vector2 curPos = eventData.position;
                    eventData.InitialDragHandPos = eventData.pointerPressRaycast.worldPosition + (Camera.main.transform.forward * eventData.pointerPressRaycast.distance);
                    eventData.position           = Camera.main.WorldToScreenPoint(eventData.InitialDragHandPos);

                    FocusManager.Instance.ExecuteUIFocusEvent(focuser.UIInteractibleFocus, eventData, ExecuteEvents.beginDragHandler);

                    eventData.position        = curPos;
                    eventData.CurrentAddition = Vector2.zero;
                }
            }
        }
コード例 #5
0
        /// <summary>
        /// ManipulationCanceled event fires an message event upwards on the focus object for "ManipulationCanceled"
        /// and calls OnManipulationCanceled for InteractibleObjects
        /// </summary>
        /// <param name="focuser"></param>
        /// <param name="position"></param>
        /// <param name="ray"></param>
        private void ManipulationCanceledEvent(AFocuser focuser, Vector3 position, Ray ray)
        {
            IsManipulating = false;

            if (focuser != null)
            {
                GameObject           focusObject = focuser.PrimeFocus;
                InteractionEventArgs eventArgs   = new InteractionEventArgs(focuser, position, false, ray);

                if (focusObject != null)
                {
                    focusObject.SendMessageUpwards("ManipulationCanceled", eventArgs, SendMessageOptions.DontRequireReceiver);
                    SendEvent(OnManipulationCanceled, focusObject, eventArgs);
                    ReleaseFocus(focuser);
                }

                if (focuser.UIInteractibleFocus != null)
                {
                    PointerEventData eventData = focuser.GetPointerData();
                    FocusManager.Instance.ExecuteUIFocusEvent(focuser.UIInteractibleFocus, focuser.GetPointerData(), ExecuteEvents.pointerUpHandler);
                    eventData.selectedObject = null;
                }
            }
        }
コード例 #6
0
        /// <summary>
        /// ManipulationUpdated event fires an message event upwards on the focus object for "ManipulationUpdated"
        /// and calls OnManipulationUpdated for InteractibleObjects
        /// </summary>
        /// <param name="focuser"></param>
        /// <param name="position"></param>
        /// <param name="ray"></param>
        private void ManipulationUpdatedEvent(AFocuser focuser, Vector3 position, Ray ray)
        {
            IsManipulating = true;

            if (focuser != null)
            {
                GameObject           focusObject = focuser.PrimeFocus;
                InteractionEventArgs eventArgs   = new InteractionEventArgs(focuser, position, false, ray);

                if (focusObject != null)
                {
                    focusObject.SendMessageUpwards("ManipulationUpdated", eventArgs, SendMessageOptions.DontRequireReceiver);
                    SendEvent(OnManipulationUpdated, focusObject, eventArgs);
                }

                FocusManager.Instance.ExecuteUIFocusEvent(focuser.UIInteractibleFocus, focuser.GetPointerData(), ExecuteEvents.moveHandler);
            }
        }