Пример #1
0
    void start_(HoloToolkit.Unity.InputModule.BaseInputEventData eventData)
    {
        if (currentInputSource != null)
        {
            Debug.Log("barance err?");
        }
        currentInputSource   = eventData.InputSource;
        currentInputSourceId = eventData.SourceId;

        var rigidBody = this.GetComponent <Rigidbody>();

        if (rigidBody)
        {
            rigidBody.useGravity = false;
        }
        lastPosition_ = this.transform.position;
        diffPosition_ = new Vector3();
        InputManager.Instance.PushModalInputHandler(gameObject);

        Debug.Log(string.Format("start_ {0} : {1}", eventData.selectedObject.name, eventData.SourceId));

        PickTool.SetActive(true);
    }
Пример #2
0
 private void AttachInputSourcePointer(BaseInputEventData eventData)
 {
     AttachInputSourcePointer(eventData.InputSource, eventData.SourceId);
 }
Пример #3
0
 private bool SupportsPointingRay(BaseInputEventData eventData)
 {
     return(SupportsPointingRay(eventData.InputSource, eventData.SourceId));
 }
        private void HandleEvent <T>(BaseInputEventData eventData, ExecuteEvents.EventFunction <T> eventHandler)
            where T : IEventSystemHandler
        {
            if (disabledRefCount > 0)
            {
                return;
            }

            // Send the event to global listeners
            for (int i = 0; i < globalListeners.Count; i++)
            {
                // Global listeners should only get events on themselves, as opposed to their hierarchy
                ExecuteEvents.Execute(globalListeners[i], eventData, eventHandler);
            }

            // Handle a multiple of modal inputs
            if (MultiModalInputDictionary.Count > 0 && MultiModalInputDictionary.ContainsKey(eventData.SourceId))
            {
                GameObject modalInput = MultiModalInputDictionary[eventData.SourceId];
                if (eventData.InputSource != null && modalInput != null)
                {
                    if (ExecuteEvents.ExecuteHierarchy(modalInput, eventData, eventHandler))
                    {
                        return;
                    }
                }
            }

            /*
             * // Handle only one modal input if one exists
             * if (modalInputStack.Count > 0)
             * {
             *  GameObject modalInput = modalInputStack.Peek();
             *
             *  if (eventData.InputSource != null && modalInput != null)
             *  {
             *      if (ExecuteEvents.ExecuteHierarchy(modalInput, eventData, eventHandler))
             *      {
             *          return;
             *      }
             *  }
             *
             *  // If there is a focused object in the hierarchy of the modal handler, start the event
             *  // bubble there
             *  GameObject focusedObject = GazeManager.Instance.HitObject;
             *  if (focusedObject != null && focusedObject.transform.IsChildOf(modalInput.transform))
             *  {
             *
             *      if (ExecuteEvents.ExecuteHierarchy(focusedObject, eventData, eventHandler))
             *      {
             *          return;
             *      }
             *  }
             *  // Otherwise, just invoke the event on the modal handler itself
             *  else
             *  {
             *      if (ExecuteEvents.ExecuteHierarchy(modalInput, eventData, eventHandler))
             *      {
             *          return;
             *      }
             *  }
             * }
             */

            // If event was not handled by modal, pass it on to the current focused object
            if (GazeManager.Instance.HitObject != null)
            {
                bool eventHandled = ExecuteEvents.ExecuteHierarchy(GazeManager.Instance.HitObject, eventData, eventHandler);
                if (eventHandled)
                {
                    return;
                }
            }

            // If event was not handled by the focused object, pass it on to any fallback handlers
            if (fallbackInputStack.Count > 0)
            {
                GameObject fallbackInput = fallbackInputStack.Peek();
                ExecuteEvents.ExecuteHierarchy(fallbackInput, eventData, eventHandler);
            }
        }