Ah yes, sorry about this, my code is indeed wrong.
I don’t think your fix is exactly correct though? The goal is that if a tag query is empty, it should always pass (so that you can use this condition with only one tag query on either previous or next rig, not always both)
So I think it’s maybe this?
`bool UGameplayTagTransitionCondition::OnTransitionMatches(const FCameraRigTransitionConditionMatchParams& Params) const
{
bool bPreviousMatches = true;
if (!PreviousGameplayTagQuery.IsEmpty())
{
bPreviousMatches = false;
if (Params.FromCameraRig)
{
FGameplayTagContainer TagContainer;
Params.FromCameraRig->GetOwnedGameplayTags(TagContainer);
if (TagContainer.MatchesQuery(PreviousGameplayTagQuery))
{
bPreviousMatches = true;
}
}
}
bool bNextMatches = true;
if (!NextGameplayTagQuery.IsEmpty())
{
bNextMatches = false;
if (Params.ToCameraRig)
{
FGameplayTagContainer TagContainer;
Params.ToCameraRig->GetOwnedGameplayTags(TagContainer);
if (TagContainer.MatchesQuery(NextGameplayTagQuery))
{
bNextMatches = true;
}
}
}
return bPreviousMatches && bNextMatches;
}`