public void Update(float swOffset, float swRadius, Kn5RenderableCar.SteeringWheelParams swParams) { var steerMatrix = Matrix.Translation(0, 0, swOffset) * Matrix.RotationZ(swParams.RotationDegress.ToRadians()) * swParams.OriginalLocalMatrix * swParams.ParentMatrix; SetOnSteeringWheel(steerMatrix, swRadius); /*return; * * if (_side < 0) { * MoveHand(Vector3.TransformCoordinate(new Vector3(0, 0, -0.8f), steerMatrix), Vector3.UnitY, Vector3.UnitY); * return; * } * * var angle = ((swParams.RotationDegress + 180f) % 360 + 360) % 360 - 180f; * * // vertical offset of point on the wheel after rotation * * if (angle > 150f) { * var verticalOffset = Vector3.TransformNormal(Vector3.UnitX, steerMatrix); * steerMatrix = Matrix.Translation(0, 0, swOffset) * Matrix.RotationZ(150f.ToRadians()) * swParams.OriginalLocalMatrix * swParams.ParentMatrix; * * SetOnSteeringWheel(steerMatrix, swRadius); * SetSwitchingSmooth(steerMatrix, (angle - 150f) / 30f); * } else if (angle < -90f) { * var verticalOffset = Vector3.TransformNormal(Vector3.UnitX, steerMatrix); * SetSwitching(steerMatrix, swRadius, verticalOffset); * } else { * SetOnSteeringWheel(steerMatrix, swRadius); * } * * _ds = $"{angle:F1}°";*/ }
public void Update(float offset, Kn5RenderableCar.SteeringWheelParams steeringWheelParams) { UPinit(); _la.Update(_swOffset, _swRadius, steeringWheelParams); _ra.Update(_swOffset, _swRadius, steeringWheelParams); _dbg0.LocalMatrix = Matrix.Translation(_ra.GetThumbsPos()); _dbg1.LocalMatrix = Matrix.Translation(_la._targetPoint); //_dbg.LocalMatrix = Matrix.Translation(targetPoint); }