private void IncludeExternalVelocities(ref Vector3 linearVelocity, ref Vector3 angularVelocity) { Vector3 extraLinearVelocity, extraAngularVelocity; (extraLinearVelocity, extraAngularVelocity) = ThrowInputDevice.GetExternalVelocities(); float addedExternalSpeed = extraLinearVelocity.magnitude * _externalVelocityInfluence; linearVelocity += linearVelocity.normalized * addedExternalSpeed; float addedExternalAngularSpeed = extraAngularVelocity.magnitude * _externalVelocityInfluence; angularVelocity += angularVelocity.normalized * addedExternalAngularSpeed; }
protected virtual void LateUpdate() { if (_updateLatency > 0.0f && _lastUpdateTime > 0.0f && (Time.time - _lastUpdateTime) < _updateLatency) { return; } Pose referencePose; if (!ThrowInputDevice.IsInputValid || !ThrowInputDevice.IsHighConfidence || !ThrowInputDevice.GetRootPose(out referencePose)) { return; } _lastUpdateTime = Time.time; referencePose = new Pose( _referenceOffset + referencePose.position, referencePose.rotation); CalculateLatestVelocitiesAndUpdateBuffer(Time.deltaTime, referencePose); }