// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "GameFeatureAction.h" #include "GameFeaturesSubsystem.h" #include "GameFeatureAction_WorldActionBase.generated.h" class UGameInstance; struct FWorldContext; /** * Base class for GameFeatureActions that wish to do something world specific. */ UCLASS(Abstract) class UGameFeatureAction_WorldActionBase : public UGameFeatureAction { GENERATED_BODY() public: //~ Begin UGameFeatureAction interface virtual void OnGameFeatureActivating(FGameFeatureActivatingContext& Context) override; virtual void OnGameFeatureDeactivating(FGameFeatureDeactivatingContext& Context) override; //~ End UGameFeatureAction interface private: void HandleGameInstanceStart(UGameInstance* GameInstance, FGameFeatureStateChangeContext ChangeContext); /** Override with the action-specific logic */ virtual void AddToWorld(const FWorldContext& WorldContext, const FGameFeatureStateChangeContext& ChangeContext) PURE_VIRTUAL(UGameFeatureAction_WorldActionBase::AddToWorld,); private: TMap GameInstanceStartHandles; };