OpenBve.CsvRwRouteParser.GetBrightness C# (CSharp) Method

GetBrightness() private static method

Sets the brightness value for the specified track position
private static GetBrightness ( RouteData &Data, double TrackPosition ) : double
Data RouteData The route data (Accessed via 'ref') which we wish to query the brightnes value from
TrackPosition double The track position to get the brightness value for
return double
		private static double GetBrightness(ref RouteData Data, double TrackPosition)
		{
			double tmin = double.PositiveInfinity;
			double tmax = double.NegativeInfinity;
			double bmin = 1.0, bmax = 1.0;
			for (int i = 0; i < Data.Blocks.Length; i++)
			{
				for (int j = 0; j < Data.Blocks[i].Brightness.Length; j++)
				{
					if (Data.Blocks[i].Brightness[j].TrackPosition <= TrackPosition)
					{
						tmin = Data.Blocks[i].Brightness[j].TrackPosition;
						bmin = (double)Data.Blocks[i].Brightness[j].Value;
					}
				}
			}
			for (int i = Data.Blocks.Length - 1; i >= 0; i--)
			{
				for (int j = Data.Blocks[i].Brightness.Length - 1; j >= 0; j--)
				{
					if (Data.Blocks[i].Brightness[j].TrackPosition >= TrackPosition)
					{
						tmax = Data.Blocks[i].Brightness[j].TrackPosition;
						bmax = (double)Data.Blocks[i].Brightness[j].Value;
					}
				}
			}
			if (tmin == double.PositiveInfinity & tmax == double.NegativeInfinity)
			{
				return 1.0;
			}
			else if (tmin == double.PositiveInfinity)
			{
				return (bmax - 1.0) * TrackPosition / tmax + 1.0;
			}
			else if (tmax == double.NegativeInfinity)
			{
				return bmin;
			}
			else if (tmin == tmax)
			{
				return 0.5 * (bmin + bmax);
			}
			else
			{
				double n = (TrackPosition - tmin) / (tmax - tmin);
				return (1.0 - n) * bmin + n * bmax;
			}
		}