예제 #1
0
        /// <summary>
        /// Event to get fired when hand leaves the scene
        /// </summary>
        public override void OnInvalid()
        {
            switch (_palmState.CurrentState)
            {
            case PalmState.Idle:
                // Do nothing
                break;

            case PalmState.Hovering:
                HoverEnd();
                _handObjectReferences.AcceptStateTransitionForObject(_cachedNearestGameObject, PalmState.Hovering, PalmState.Idle);
                MoveStateMachine(PalmStateCommand.HoverLeave);
                break;

            case PalmState.Grabbing:
                GrabEnd();
                MoveStateMachine(PalmStateCommand.Release);
                HoverEnd();
                MoveStateMachine(PalmStateCommand.HoverLeave);
                _handObjectReferences.AcceptStateTransitionForObject(_cachedNearestGameObject, PalmState.Grabbing, PalmState.Idle);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            _wasGrabbing  = false;
            _isNearObject = false;
            _previousNearObjects.Clear();
            _nearObjects.Clear();
            _grabbedInteractionBehaviours.Clear();
            _cachedNearestGameObject = null;
        }
예제 #2
0
        /// <summary>
        /// Event to get fired when hand leaves the scene
        /// </summary>
        public override void OnInvalid()
        {
            switch (_palmState.CurrentState)
            {
            case PalmState.Idle:
                // Do nothing
                break;

            case PalmState.Hovering:
                HoverEnd();
                _handObjectReferences.AcceptStateTransitionForObject(_cachedNearestGameObject, PalmState.Hovering, PalmState.Idle);
                break;

            case PalmState.Grabbing:
                GrabEnd();
                HoverEnd();
                _handObjectReferences.AcceptStateTransitionForObject(_cachedNearestGameObject, PalmState.Grabbing, PalmState.Idle);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }