// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Stats/Stats.h" #include "UObject/Object.h" #include "AITestsCommon.h" #include "Tickable.h" #include "MockAI.generated.h" class UAIPerceptionComponent; class UBlackboardComponent; class UBrainComponent; class UMockAI; struct FTestTickHelper : FTickableGameObject { TWeakObjectPtr Owner; FTestTickHelper() : Owner(nullptr) {} virtual void Tick(float DeltaTime) override; virtual bool IsTickable() const override { return Owner.IsValid(); } virtual bool IsTickableInEditor() const override { return true; } virtual TStatId GetStatId() const override; }; UCLASS() class UMockAI : public UObject { GENERATED_UCLASS_BODY() virtual ~UMockAI() override; FTestTickHelper TickHelper; UPROPERTY() TObjectPtr Actor = nullptr; UPROPERTY() TObjectPtr BBComp = nullptr; UPROPERTY() TObjectPtr BrainComp = nullptr; UPROPERTY() TObjectPtr PerceptionComp = nullptr; template void UseBrainComponent() { BrainComp = NewObject(Actor); } void UseBlackboardComponent(); void UsePerceptionComponent(); void SetEnableTicking(bool bShouldTick); virtual void TickMe(float DeltaTime); };