diff --git a/Source/Runtime/Private/ExtendableGameStateBase.cpp b/Source/Runtime/Private/ExtendableGameStateBase.cpp index 38457d2..5ae530f 100644 --- a/Source/Runtime/Private/ExtendableGameStateBase.cpp +++ b/Source/Runtime/Private/ExtendableGameStateBase.cpp @@ -28,19 +28,19 @@ void AExtendableGameStateBase::BeginPlay() { Super::BeginPlay(); - for(UGameStateSubsystem* Subsystem : GetSubsystemArray()) + SubsystemCollection.ForEachSubsystem([this](UGameStateSubsystem* Subsystem) { AddReplicatedSubObject(Subsystem); Subsystem->BeginPlay(); - } + }, UGameStateSubsystem::StaticClass()); } void AExtendableGameStateBase::EndPlay(const EEndPlayReason::Type EndPlayReason) { - for(UGameStateSubsystem* Subsystem : GetSubsystemArray()) + SubsystemCollection.ForEachSubsystem([this](UGameStateSubsystem* Subsystem) { RemoveReplicatedSubObject(Subsystem); - } + }, UGameStateSubsystem::StaticClass()); SubsystemCollection.Deinitialize(); diff --git a/Source/Runtime/Public/ExtendableGameStateBase.h b/Source/Runtime/Public/ExtendableGameStateBase.h index 4ea03b2..e783af0 100644 --- a/Source/Runtime/Public/ExtendableGameStateBase.h +++ b/Source/Runtime/Public/ExtendableGameStateBase.h @@ -57,17 +57,6 @@ class GAMESTATESUBSYSTEM_API AExtendableGameStateBase : public AGameStateBase return nullptr; } - /** - * Get all Subsystem of specified type, this is only necessary for interfaces that can have multiple implementations instanced at a time. - * - * Do not hold onto this Array reference unless you are sure the lifetime is less than that of AExtendableGameStateBase - */ - template - const TArray& GetSubsystemArray() const - { - return SubsystemCollection.GetSubsystemArray(TSubsystemClass::StaticClass()); - } - private: FObjectSubsystemCollection SubsystemCollection;