private void OnCollisionExit(Collision collision) { if (collision.collider.gameObject.layer == InteractionManager.instance.contactBoneLayer) { return; } colliderCount--; if (colliderCount == 0) { emission = particle.emission; emission.rateOverTime = 0; if (HasSoundSource() && enableSlideSound) { interactionSound.SlideSource.volume = 0; } // ensure we don't have any remaining grabbing controller overrides if (leftIsGrabbedToken != null) { leftIsGrabbedToken.Remove(); grabbedLeftPreviousFrame = false; leftIsGrabbedToken = null; } if (rightIsGrabbedToken != null) { rightIsGrabbedToken.Remove(); grabbedRightPreviousFrame = false; rightIsGrabbedToken = null; } } }
public LensToken ActivateContext(InputContext inputContext) { LensToken token = currentInputContext.AddLens(new Lens <InputContext>(context => { return(inputContext); })); return(token); }
private void OnCollisionStay(Collision collision) { if (!enabled) { return; } if (collision.collider.gameObject.layer == InteractionManager.instance.contactBoneLayer) { return; } if (collision.collider.gameObject.tag == "NoSlideParticles") { return; } float particleTValue = Mathf.InverseLerp(0.1f, maxMagnitude, rigidBody.velocity.magnitude); if (HasSoundSource()) { float soundTValue = Mathf.InverseLerp(0, maxSoundMagnitude, rigidBody.velocity.magnitude); interactionSound.SlideSource.volume = slideSoundVolume.Evaluate(soundTValue); } emission.rateOverTime = Mathf.Lerp(0, maxEmissionRate, particleTValue); particle.transform.position = collision.contacts[0].point; bool grabbedByLeft = false; bool grabbedByRight = false; // do grab feedback if (interactionBehaviour.graspingControllers.Count > 0) { // grabbing vibration feedback float leftGrabDistance = 0; float rightGrabDistance = 0; InteractionController leftGrabbingController; InteractionController rightGrabbingController; float hapticTValue = MathSupplement.Coserp(0, 1, Mathf.InverseLerp(minHapticMagnitude, maxHapticMagnitude, rigidBody.velocity.magnitude)); GetGrabbingControllers(out grabbedByLeft, out grabbedByRight, out leftGrabbingController, out rightGrabbingController); if (leftGrabbingController) { leftGrabDistance = interactionBehaviour.GetHoverDistance(leftGrabbingController.GetGraspPoint()); HandFeedback.LeftHand.Amplitude = 1 - Mathf.InverseLerp(0, maxHapticDist, leftGrabDistance); HandFeedback.LeftHand.Frequency = Mathf.Lerp(0, 320, hapticTValue); } if (rightGrabbingController) { rightGrabDistance = interactionBehaviour.GetHoverDistance(rightGrabbingController.GetGraspPoint()); HandFeedback.RightHand.Amplitude = 1 - Mathf.InverseLerp(0, maxHapticDist, rightGrabDistance); HandFeedback.RightHand.Frequency = Mathf.Lerp(0, 320, hapticTValue); } } if (grabbedByLeft != grabbedLeftPreviousFrame) { // state change if (grabbedByLeft) { leftIsGrabbedToken = HandFeedback.LeftHand.OverridePenetrationHaptics.AddLens(new Lens <bool>(0, (grabbed) => true)); } else { leftIsGrabbedToken.Remove(); leftIsGrabbedToken = null; } } if (grabbedByRight != grabbedRightPreviousFrame) { // state change if (grabbedByRight) { rightIsGrabbedToken = HandFeedback.RightHand.OverridePenetrationHaptics.AddLens(new Lens <bool>(0, (grabbed) => true)); } else { rightIsGrabbedToken.Remove(); rightIsGrabbedToken = null; } } // save our state grabbedLeftPreviousFrame = grabbedByLeft; grabbedRightPreviousFrame = grabbedByRight; }
public void SetPaused(){ t = Game.isPaused.AddLens(new Lens<bool>(0,(paused) => true)); }
public void SetPaused() { t = Game.isPaused.AddLens(new Lens <bool>(0, (paused) => true)); }