void UMovieSceneParameterSection::Eval( float Position,
	TArray<FScalarParameterNameAndValue>& OutScalarValues,
	TArray<FVectorParameterNameAndValue>& OutVectorValues,
	TArray<FColorParameterNameAndValue>& OutColorValues ) const
{
	for ( const FScalarParameterNameAndCurve& ScalarParameterNameAndCurve : ScalarParameterNamesAndCurves )
	{
		OutScalarValues.Add( FScalarParameterNameAndValue( ScalarParameterNameAndCurve.ParameterName, ScalarParameterNameAndCurve.ParameterCurve.Eval( Position ) ) );
	}
	for ( const FVectorParameterNameAndCurves& VectorParameterNameAndCurves : VectorParameterNamesAndCurves )
	{
		OutVectorValues.Add( FVectorParameterNameAndValue( VectorParameterNameAndCurves.ParameterName, FVector(
			VectorParameterNameAndCurves.XCurve.Eval( Position ),
			VectorParameterNameAndCurves.YCurve.Eval( Position ),
			VectorParameterNameAndCurves.ZCurve.Eval( Position ) ) ) );
	}
	for ( const FColorParameterNameAndCurves& ColorParameterNameAndCurves : ColorParameterNamesAndCurves )
	{
		OutColorValues.Add( FColorParameterNameAndValue( ColorParameterNameAndCurves.ParameterName, FLinearColor(
			ColorParameterNameAndCurves.RedCurve.Eval( Position ),
			ColorParameterNameAndCurves.GreenCurve.Eval( Position ),
			ColorParameterNameAndCurves.BlueCurve.Eval( Position ),
			ColorParameterNameAndCurves.AlphaCurve.Eval( Position ) ) ) );
	}
}
void UMovieSceneMaterialTrack::Eval( float Position, TArray<FScalarParameterNameAndValue>& OutScalarValues, TArray<FVectorParameterNameAndValue>& OutVectorValues ) const
{
	for ( UMovieSceneSection* Section : Sections )
	{
		UMovieSceneMaterialParameterSection* MaterialParameterSection = Cast<UMovieSceneMaterialParameterSection>( Section );
		if ( MaterialParameterSection != nullptr )
		{
			for ( const FScalarParameterNameAndCurve& ScalarParameterNameAndCurve : *MaterialParameterSection->GetScalarParameterNamesAndCurves() )
			{
				OutScalarValues.Add( FScalarParameterNameAndValue( ScalarParameterNameAndCurve.ParameterName, ScalarParameterNameAndCurve.ParameterCurve.Eval( Position ) ) );
			}
			for ( const FVectorParameterNameAndCurves& VectorParameterNameAndCurves : *MaterialParameterSection->GetVectorParameterNamesAndCurves() )
			{
				OutVectorValues.Add( FVectorParameterNameAndValue( VectorParameterNameAndCurves.ParameterName, FLinearColor(
					VectorParameterNameAndCurves.RedCurve.Eval( Position ),
					VectorParameterNameAndCurves.GreenCurve.Eval( Position ),
					VectorParameterNameAndCurves.BlueCurve.Eval( Position ),
					VectorParameterNameAndCurves.AlphaCurve.Eval( Position ) ) ) );
			}
		}
	}
}