Setting up a new sequence I get an endless loop here:
SequenceLength == 0.0f
bAllowLooping = false
void UAnimSequenceBase::GetAnimNotifies(const float& StartTime, const float& DeltaTime, const bool bAllowLooping, TArray<const FAnimNotifyEvent *> & OutActiveNotifies) const
{
// Early out if we have no notifies
if( (Notifies.Num() == 0) || (DeltaTime == 0.f) )
{
return;
}
bool const bPlayingBackwards = (DeltaTime < 0.f);
float PreviousPosition = StartTime;
float CurrentPosition = StartTime;
float DesiredDeltaMove = DeltaTime;
do
{
// Disable looping here. Advance to desired position, or beginning / end of animation
const ETypeAdvanceAnim AdvanceType = FAnimationRuntime::AdvanceTime(false, DesiredDeltaMove, CurrentPosition, SequenceLength);
// Verify position assumptions
check( bPlayingBackwards ? (CurrentPosition <= PreviousPosition) : (CurrentPosition >= PreviousPosition));
GetAnimNotifiesFromDeltaPositions(PreviousPosition, CurrentPosition, OutActiveNotifies);
// If we've hit the end of the animation, and we're allowed to loop, keep going.
if( (AdvanceType == ETAA_Finished) && bAllowLooping )
{
And I mean “Endless LOOP”
Hey -
Can you check the values of AdvanceType and bAllowLooping during the endless loop? If you run the project in debug mode through Visual Studios and then use Ctrl+Alt+Pause/Break while inside the loop it will act as though a breakpoint was hit and you can then step through the code. This will allow you to check the value of the variables during runtime.
Cheers
I’m not sure how I came to create this crash but I suspect it came from accidentally pulling a zero length sequence into a montage - but my attempts to recreate are failing. Unfortunately I had a fever much of last week and my memory is not great but I suspect that actually AllowLooping was true, the AdvanceType was finished, the sequnce length was zero and it got stuck.
In attempting to recreate I hit another critical error in the same code:
[2015.04.14-16.37.06:728][761]LogWindows: === Critical error: ===
Assertion failed: bPlayingBackwards ? (CurrentPosition <= PreviousPosition) : (CurrentPosition >= PreviousPosition) [File:D:\BuildFarm\buildmachine_++depot+UE4-Releases+4.7\Engine\Source\Runtime\Engine\Private\Animation\AnimSequenceBase.cpp] [Line: 596]
This is triggered by adding a notify to a new (empty) animation sequence and is different to the original loop.
Repro on second issue:
- Go to asset manager
- Create new asset
- Animation assets → Animation Sequence
- Right click on notifies and add particle notify
- Crash (for me, 2/2)
Hey -
I was able to reproduce the crash when adding the particle notify to the Animation Sequence. This bug has been reported (UE-13800) for further investigation. Let me know if you get any additional information about the first issue or are able to reproduce it.
Cheers
For what it’s worth the engineer owning that code could probably spot an endless loop with the info in this thread.