protected override void OnPostSolve() { base.OnPostSolve(); // Material already replaced in OnGraspBegin if (_contactMode != ContactMode.GRASPED) { if (_recievedVelocityUpdate) { //If we recieved a velocity update, gravity must always be disabled because the //velocity update accounts for gravity. if (_rigidbody.useGravity) { _rigidbody.useGravity = false; } } else { //If we did not recieve a velocity update, we set the rigidbody's gravity status //to match whatever the user has set. if (_rigidbody.useGravity != _useGravity) { _rigidbody.useGravity = _useGravity; } //Only apply if non-zero to prevent waking up the body if (_accumulatedLinearAcceleration != Vector3.zero) { _rigidbody.AddForce(_accumulatedLinearAcceleration, ForceMode.Acceleration); } if (_accumulatedAngularAcceleration != Vector3.zero) { _rigidbody.AddTorque(_accumulatedAngularAcceleration, ForceMode.Acceleration); } } if (_recievedVelocityUpdate || _minHandDistance <= 0.0f) { // Shapes in the contact graph of a hand do not bounce. _materialReplacer.ReplaceMaterials(); } else { // Shapes in the contact graph of a hand do not bounce. _materialReplacer.RevertMaterials(); } } //Reset so we can accumulate for the next frame _accumulatedLinearAcceleration = Vector3.zero; _accumulatedAngularAcceleration = Vector3.zero; _minHandDistance = float.MaxValue; _notifiedOfTeleport = false; }
protected override void OnPostSolve() { base.OnPostSolve(); // Material already replaced in OnGraspBegin if (_contactMode != ContactMode.GRASPED) { if (_recievedVelocityUpdate) { //If we recieved a velocity update, gravity must always be disabled because the //velocity update accounts for gravity. if (_rigidbody.useGravity) { _rigidbody.useGravity = false; } } else { //If we did not recieve a velocity update, we set the rigidbody's gravity status //to match whatever the user has set. if (_rigidbody.useGravity != _useGravity) { _rigidbody.useGravity = _useGravity; } } if (_recievedVelocityUpdate || _minHandDistance <= 0.0f) { // Shapes in the contact graph of a hand do not bounce. _materialReplacer.ReplaceMaterials(); } else { // Shapes in the contact graph of a hand do not bounce. _materialReplacer.RevertMaterials(); } } _minHandDistance = float.MaxValue; _notifiedOfTeleport = false; }