@@ -295,14 +295,14 @@ static void ReadArgonautsTimeArray(const TArray<unsigned> &SourceArray, int Firs
295
295
296
296
#if TRANSFORMERS
297
297
298
- void UAnimSequence::DecodeTrans3Anims (CAnimSequence *Dst, UAnimSet *Owner) const
298
+ bool UAnimSequence::DecodeTrans3Anims (CAnimSequence *Dst, UAnimSet *Owner) const
299
299
{
300
300
guard (UAnimSequence::DecodeTrans3Anims);
301
301
302
302
if (CompressedByteStream.Num () == 0 )
303
303
{
304
304
// This situation is true for some sequences
305
- return ;
305
+ return false ;
306
306
}
307
307
308
308
// read some counts first
@@ -525,6 +525,7 @@ void UAnimSequence::DecodeTrans3Anims(CAnimSequence *Dst, UAnimSet *Owner) const
525
525
DBG (" - %s\n " , *Owner->TrackBoneNames [Bone]);
526
526
}
527
527
528
+ return true ;
528
529
unguard;
529
530
}
530
531
@@ -710,12 +711,20 @@ void UAnimSet::ConvertAnims()
710
711
if (ArGame == GAME_Transformers && Seq->Trans3Data .Num ())
711
712
{
712
713
CAnimSequence *Dst = new CAnimSequence (Seq);
713
- AnimSet->Sequences .Add (Dst);
714
714
Dst->Name = Seq->SequenceName ;
715
715
Dst->NumFrames = Seq->NumFrames ;
716
716
Dst->Rate = Seq->NumFrames / Seq->SequenceLength * Seq->RateScale ;
717
717
Dst->bAdditive = Seq->bIsAdditive ;
718
- Seq->DecodeTrans3Anims (Dst, this );
718
+
719
+ if (Seq->DecodeTrans3Anims (Dst, this ))
720
+ {
721
+ AnimSet->Sequences .Add (Dst);
722
+ }
723
+ else
724
+ {
725
+ // Failed to decode, drop the track
726
+ delete Dst;
727
+ }
719
728
continue ;
720
729
}
721
730
#endif // TRANSFORMERS
0 commit comments