58 lines
1.8 KiB
C++
58 lines
1.8 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "UObject/ObjectMacros.h"
|
|
#include "UObject/WeakInterfacePtr.h"
|
|
#include "Kismet/BlueprintAsyncActionBase.h"
|
|
#include "Engine/CancellableAsyncAction.h"
|
|
#include "Engine/EngineTypes.h"
|
|
#include "Teams/LyraTeamAgentInterface.h"
|
|
|
|
#include "AsyncAction_ObserveTeam.generated.h"
|
|
|
|
class AGameStateBase;
|
|
class UGameInstance;
|
|
class AController;
|
|
class ALyraPlayerState;
|
|
|
|
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FTeamObservedAsyncDelegate, bool, bTeamSet, int32, TeamId);
|
|
|
|
/**
|
|
* Watches for team changes in the specified object
|
|
*/
|
|
UCLASS()
|
|
class UAsyncAction_ObserveTeam : public UCancellableAsyncAction
|
|
{
|
|
GENERATED_UCLASS_BODY()
|
|
|
|
public:
|
|
// Watches for team changes on the specified team agent
|
|
// - It will will fire once immediately to give the current team assignment
|
|
// - For anything that can ever belong to a team (implements ILyraTeamAgentInterface),
|
|
// it will also listen for team assignment changes in the future
|
|
UFUNCTION(BlueprintCallable, meta=(BlueprintInternalUseOnly="true", Keywords="Watch"))
|
|
static UAsyncAction_ObserveTeam* ObserveTeam(UObject* TeamAgent);
|
|
|
|
//~UBlueprintAsyncActionBase interface
|
|
virtual void Activate() override;
|
|
virtual void SetReadyToDestroy() override;
|
|
//~End of UBlueprintAsyncActionBase interface
|
|
|
|
public:
|
|
// Called when the team is set or changed
|
|
UPROPERTY(BlueprintAssignable)
|
|
FTeamObservedAsyncDelegate OnTeamChanged;
|
|
|
|
private:
|
|
// Watches for team changes on the specified team actor
|
|
static UAsyncAction_ObserveTeam* InternalObserveTeamChanges(TScriptInterface<ILyraTeamAgentInterface> TeamActor);
|
|
|
|
private:
|
|
UFUNCTION()
|
|
void OnWatchedAgentChangedTeam(UObject* TeamAgent, int32 OldTeam, int32 NewTeam);
|
|
|
|
TWeakInterfacePtr<ILyraTeamAgentInterface> TeamInterfacePtr;
|
|
};
|