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 ); }
void FBlendedCurve::Override(const FBlendedCurve& CurveToOverrideFrom) { InitFrom(CurveToOverrideFrom); Elements = CurveToOverrideFrom.Elements; ValidateCurve(this); }
//@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); }
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); }
FBlendedCurve::FBlendedCurve(const class UAnimInstance* AnimInstance) { check(AnimInstance); InitFrom(AnimInstance->CurrentSkeleton); }