void UMovieSceneParameterSection::AddVectorParameterKey( FName InParameterName, float InTime, FVector InValue )
{
	FVectorParameterNameAndCurves* ExistingCurves = nullptr;
	for ( FVectorParameterNameAndCurves& VectorParameterNameAndCurve : VectorParameterNamesAndCurves )
	{
		if ( VectorParameterNameAndCurve.ParameterName == InParameterName )
		{
			ExistingCurves = &VectorParameterNameAndCurve;
			break;
		}
	}
	if ( ExistingCurves == nullptr )
	{
		int32 NewIndex = VectorParameterNamesAndCurves.Add( FVectorParameterNameAndCurves( InParameterName ) );
		VectorParameterNamesAndCurves[NewIndex].Index = VectorParameterNamesAndCurves.Num() + VectorParameterNamesAndCurves.Num() - 1;
		ExistingCurves = &VectorParameterNamesAndCurves[NewIndex];
	}
	ExistingCurves->XCurve.AddKey( InTime, InValue.X );
	ExistingCurves->YCurve.AddKey( InTime, InValue.Y );
	ExistingCurves->ZCurve.AddKey( InTime, InValue.Z );
}
void UMovieSceneMaterialParameterSection::AddVectorParameterKey( FName InParameterName, float InTime, FLinearColor InValue )
{
	FVectorParameterNameAndCurves* ExistingCurves = nullptr;
	for ( FVectorParameterNameAndCurves& VectorParameterNameAndCurve : VectorParameterNamesAndCurves )
	{
		if ( VectorParameterNameAndCurve.ParameterName == InParameterName )
		{
			ExistingCurves = &VectorParameterNameAndCurve;
			break;
		}
	}
	if ( ExistingCurves == nullptr )
	{
		int32 NewIndex = VectorParameterNamesAndCurves.Add( FVectorParameterNameAndCurves( InParameterName ) );
		VectorParameterNamesAndCurves[NewIndex].Index = VectorParameterNamesAndCurves.Num() + VectorParameterNamesAndCurves.Num() - 1;
		ExistingCurves = &VectorParameterNamesAndCurves[NewIndex];
	}
	ExistingCurves->RedCurve.AddKey( InTime, InValue.R );
	ExistingCurves->GreenCurve.AddKey( InTime, InValue.G );
	ExistingCurves->BlueCurve.AddKey( InTime, InValue.B );
	ExistingCurves->AlphaCurve.AddKey( InTime, InValue.A );
}