Fix bugs in animation queue handling, and add animation timeouts

This commit is contained in:
2025-07-02 16:01:18 -04:00
parent c0307b970b
commit fd453e6b30
9 changed files with 251 additions and 106 deletions

View File

@@ -197,7 +197,7 @@ public:
// Convert an AnimQueue to an FString.
//
static FString DebugString(std::string_view s);
// static FString DebugString(std::string_view s);
};
////////////////////////////////////////////////
@@ -230,7 +230,7 @@ public:
// Convert an AnimStep to an FString.
//
static FString DebugString(bool injectidle, bool persistentonly, uint64 hash, std::string_view body);
static FString DebugString(bool finished, uint64 hash, std::string_view body);
};
////////////////////////////////////////////////
@@ -251,7 +251,7 @@ public:
// store the hashes, not the steps. The First element
// of the queue is the oldest item.
//
TDeque<FlxAnimationStep> AQ;
TArray<FlxAnimationStep> AQ;
// True if something has recently changed.
//
@@ -319,6 +319,18 @@ public:
//
void SkipToEnd();
// Return the first unfinished animation.
//
const FlxAnimationStep *FirstUnfinished() const;
// Return the last finished animation.
//
const FlxAnimationStep *LastFinished() const;
// Return the first animation with the specified hash.
//
const FlxAnimationStep *FindAnimation(uint64 hash) const;
// Clear the 'Changed' flag.
//
void ClearChanged() { Changed = false; }
@@ -331,4 +343,8 @@ public:
// The changed flag can only be set to false by 'ClearChanged,' above.
//
bool IsChanged() const { return Changed; }
// Return a debug string for the entire animation tracker.
//
FString DebugString() const;
};