Beispiel #1
0
void FillAVIIndexInfo::InitFrom( const std::string& filename )
{
   std::ifstream f( filename.c_str(), std::ios::in|std::ios::binary );
   assert( f );
   Stream stream( &f );
   InitFrom( stream );
}
Beispiel #2
0
void FBlendedCurve::Override(const FBlendedCurve& CurveToOverrideFrom)
{
	InitFrom(CurveToOverrideFrom);
	Elements = CurveToOverrideFrom.Elements;

	ValidateCurve(this);
}
Beispiel #3
0
//@Todo curve flags won't transfer over - it only overwritees
void FBlendedCurve::Blend(const FBlendedCurve& A, const FBlendedCurve& B, float Alpha)
{
	check(A.Num()==B.Num());
	if(FMath::Abs(Alpha) <= ZERO_ANIMWEIGHT_THRESH)
	{
		// if blend is all the way for child1, then just copy its bone atoms
		Override(A);
	}
	else if(FMath::Abs(Alpha - 1.0f) <= ZERO_ANIMWEIGHT_THRESH)
	{
		// if blend is all the way for child2, then just copy its bone atoms
		Override(B);
	}
	else
	{
		InitFrom(A);
		for(int32 CurveId=0; CurveId<A.Elements.Num(); ++CurveId)
		{
			Elements[CurveId].Value = FMath::Lerp(A.Elements[CurveId].Value, B.Elements[CurveId].Value, Alpha); 
			Elements[CurveId].Flags |= (A.Elements[CurveId].Flags | B.Elements[CurveId].Flags);
		}
	}

	ValidateCurve(this);
}
Beispiel #4
0
void FBlendedCurve::Override(const FBlendedCurve& CurveToOverrideFrom, float Weight)
{
	InitFrom(CurveToOverrideFrom);

	if ( FMath::IsNearlyEqual(Weight, 1.f) )
	{
		Override(CurveToOverrideFrom);
	}
	else
	{
		for(int32 CurveId=0; CurveId<CurveToOverrideFrom.Elements.Num(); ++CurveId)
		{
			Elements[CurveId].Value = CurveToOverrideFrom.Elements[CurveId].Value * Weight;
			Elements[CurveId].Flags |= CurveToOverrideFrom.Elements[CurveId].Flags;
		}
	}

	ValidateCurve(this);
}
Beispiel #5
0
FBlendedCurve::FBlendedCurve(const class UAnimInstance* AnimInstance)
{
	check(AnimInstance);
	InitFrom(AnimInstance->CurrentSkeleton);
}