private void EvaluateVolume(float x, float mixtureRatio, ParameterTables table) { for (var i = 0; i < table.Volume.Tracks.Length; ++i) { var volume = table.Volume.Tracks[i]; var motorTrack = MotorTracks.FindByIndex(i); if (motorTrack == null) { continue; } motorTrack.Audio.Volume += (volume[x] * mixtureRatio) * Volume; } }
private void EvaluatePitch(float x, ParameterTables table) { for (var i = 0; i < table.Pitch.Tracks.Length; ++i) { var pitch = table.Pitch.Tracks[i]; var motorTrack = MotorTracks.FindByIndex(i); if (motorTrack == null) { continue; } motorTrack.Audio.Pitch = pitch[x]; } }
public void Update() { var absolutePosition = Math.Abs(Position); var mixtureRatio = Math.Max(Math.Min(DirectionMixtureRatio, 1.0f), 0.0f); MotorTracks.SetParameter(0.0f, 0.0f); EvaluatePitch(absolutePosition, mixtureRatio, PositiveDirectionParameters); EvaluateVolume(absolutePosition, mixtureRatio, PositiveDirectionParameters); EvaluatePitch(absolutePosition, 1.0f - mixtureRatio, NegativeDirectionParameters); EvaluateVolume(absolutePosition, 1.0f - mixtureRatio, NegativeDirectionParameters); MotorTracks.Update(); }
private void EvaluateVolume(float x, ParameterTables table) { for (var i = 0; i < table.Volume.Tracks.Length; ++i) { var volume = table.Volume.Tracks[i]; var motorTrack = MotorTracks.FindByIndex(i); if (motorTrack == null) { continue; } if (x == 0.0f) { motorTrack.Audio.Volume = 0.0f; continue; } motorTrack.Audio.Volume = volume[x]; } }