private ThrowCalculate CalculateThrowAndDistance() { var dist = 0.0f; Vector3 posEnd = Player.m_localPlayer.transform.InverseTransformPoint(VRPlayer.rightHand.transform.position); Vector3 posStart = Player.m_localPlayer.transform.InverseTransformPoint(VRPlayer.rightHand.transform.position); foreach (Vector3 snapshot in snapshots) { var curDist = Vector3.Distance(snapshot, posEnd); if (curDist > dist) { dist = curDist; posStart = snapshot; } } var throwSpeed = 1f; if (VHVRConfig.SpearThrowSpeedDynamic()) { var speedModifier = slowThrowModifier; if (dist > fastThrowMinDist) { speedModifier = fastThrowModifier; } else if (dist > mediumThrowMinDist) { speedModifier = mediumThrowModifier; } throwSpeed = Vector3.Distance(posEnd, posStart) * speedModifier; } return(new ThrowCalculate(posStart, posEnd, throwSpeed)); }