예제 #1
0
 public void Add(XRInputName inputName)
 {
     if (!_inputNames.Contains(inputName))
     {
         _inputNames.Add(inputName);
     }
 }
예제 #2
0
        private void OnButtonUp(XRInputName inputName)
        {
            //button up may get fired when this interactor is disabled
            //so which buttons are held, and have been released
            //must be checked so UnButtonUp does not get called twice
            XRButtonDatum datum = GetButtonDatum(inputName);

            if (_heldButtons.Contains(datum))
            {
                _heldButtons.Remove(datum);
                ButtonHeldCount--;

                if (null != datum.PressCollider)
                {
                    SendButtonUpEvents(datum.PressCollider, datum);
                    datum.ButtonUp();
                }

                if (ButtonHeldCount == 0)
                {
                    _events.LastButtonUp.Invoke(datum);
                }

                _events.ButtonUp.Invoke(datum);
            }
        }
        private bool ContainsEnum(XRInputName inputName)
        {
            for (int i = 0; i < _list.serializedProperty.arraySize; ++i)
            {
                if (_list.serializedProperty.GetArrayElementAtIndex(i).enumValue <XRInputName>() == inputName)
                {
                    return(true);
                }
            }

            return(false);
        }
예제 #4
0
        private void OnButtonHold(XRInputName inputName)
        {
            XRButtonDatum datum = GetButtonDatum(inputName);

            if (null != datum.PressCollider)
            {
                datum.ButtonHold();
                SendButtonHoldEvents(datum.PressCollider, datum);
            }

            _events.ButtonHold.Invoke(datum);
        }
예제 #5
0
 private void EnableButtonUp(XRInputName inputName)
 {
     _enableButtonCount--;
     if (_enableButtonCount == 0)
     {
         enabled = false;
         if (_soloCondition == SoloCondition.InteractorEnabled)
         {
             _parentUserController.SetSoloState(true, this);
         }
     }
 }
예제 #6
0
        private void EnableButtonDown(XRInputName inputName)
        {
            _enableButtonCount++;
            if (_enableButtonCount == 1)
            {
                enabled = true;
//                Process(); //should a buttonDown event also be sent on same frame that interactor is enabled?
                if (_soloCondition == SoloCondition.InteractorEnabled)
                {
                    _parentUserController.SetSoloState(false, this);
                }
            }
        }
예제 #7
0
        public XRButtonDatum(XRUserController parentUserController, XRPhysicsInteractor parentInteractor, XRInputName inputName)
        {
            ParentUserController = parentUserController;
            ParentInteractor     = parentInteractor;
            InputName            = inputName;

            _pressLocalTransform = new GameObject("PressLocalTransform").transform;
            _pressLocalTransform.gameObject.hideFlags = HideFlags.HideAndDontSave;
            _pressLocalTransform.SetParent(parentInteractor.transform);

            _pressLocalHitTransform = new GameObject("PressLocalHitTransform").transform;
            _pressLocalHitTransform.gameObject.hideFlags = HideFlags.HideAndDontSave;
            _pressLocalHitTransform.SetParent(parentInteractor.transform);
        }
예제 #8
0
        public IXRInputProcessor GetInput(XRInputName inputName)
        {
            IXRInputProcessor inputProcessor;

            _inputProcessors.TryGetValue(inputName, out inputProcessor);
            if (null != inputProcessor)
            {
                return(inputProcessor);
            }
            else
            {
                Debug.LogWarning(inputName + " not found on " + name);
                return(null);
            }
        }
예제 #9
0
        private void OnButtonDown(XRInputName inputName)
        {
            ButtonHeldCount++;
            XRButtonDatum datum = GetButtonDatum(inputName);

            _heldButtons.Add(datum);

            if (CanInteractWithCurrentGameObject())
            {
                datum.ButtonDown(CurrentCollider, CurrentHitRay);
                SendButtonDownEvents(CurrentCollider, datum);
            }

            if (ButtonHeldCount == 1)
            {
                _events.FirstButtonDown.Invoke(datum);
            }

            _events.ButtonDown.Invoke(datum);
        }
예제 #10
0
 public XRButtonDatum GetButtonDatum(XRInputName inputName)
 {
     return(ButtonDatums.GetValue((int)inputName));
 }
예제 #11
0
 protected void Reset()
 {
     _forwardButtonEvents  = 0 << -1;
     _interactionLayerMask = LayerMask.GetMask("Default");
 }
예제 #12
0
 public bool Contains(XRInputName inputName)
 {
     return(_inputNames.Contains(inputName));
 }
 public bool RecievesInput(XRInputName inputName)
 {
     return((_recieverConfiguration.InputNames & inputName) == inputName);
 }