/// <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; }
/// <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(); } }