About UGameFrameworkComponentManager and the state chain order

Hello.

I am facing an issue that I can’t figure out and it seems to me to be a bug but i’m not sure.

I’m using the IGameFrameworkInitStateInterface on a Component and make it follow the chain of states : Spawned, DataAvailable, DataInitialized and GameplayReady (I’m using the Lyra project exemple for my game).

So in CheckDefaultInitialization, I execute this code:

static const TArray<FGameplayTag> StateChain = { MyGameGameplayTags::InitState_Spawned, MyGameGameplayTags::InitState_DataAvailable, MyGameGameplayTags::InitState_DataInitialized, MyGameGameplayTags::InitState_GameplayReady };

ContinueInitStateChain(StateChain);

And then my Component finally end to the final state (GameplayReady).

But here, when I call the function HasFeatureReachedInitState which “Returns true if feature has reached query state or later”, the function returns true only for the last State and would normaly returns true for all states if I well understand the function description. Here’s my code for testing this :

bool hasReachedSpawned = Manager->HasFeatureReachedInitState(Pawn, MyGameComponent::ActorFeatureName, MyGameGameplayTags::InitState_Spawned);
bool hasReachedDataAvailable = Manager->HasFeatureReachedInitState(Pawn, MyGameComponent::ActorFeatureName, MyGameGameplayTags::InitState_DataAvailable);
bool hasReachedDataInitialized = Manager->HasFeatureReachedInitState(Pawn, MyGameComponent::ActorFeatureName, MyGameGameplayTags::InitState_DataInitialized);
bool hasReachedGameready = Manager->HasFeatureReachedInitState(Pawn, MyGameComponent::ActorFeatureName, MyGameGameplayTags::InitState_GameplayReady);

And here’s the result when I log the result:

LogMyGame: Display: hasReachedSpawned ? 0
LogMyGame: Display: hasReachedDataAvailable  ? 0
LogMyGame: Display: hasReachedDataInitialized  ? 0
LogMyGame: Display: hasReachedGameready  ? 1

It looks like a bug for me but maybe (and probably) I’m missing a point.