Files
UnrealEngine/Engine/Source/Developer/AITestSuite/Classes/MockAI.h
2025-05-18 13:04:45 +08:00

63 lines
1.3 KiB
C++

// 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<class UMockAI> 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<AActor> Actor = nullptr;
UPROPERTY()
TObjectPtr<UBlackboardComponent> BBComp = nullptr;
UPROPERTY()
TObjectPtr<UBrainComponent> BrainComp = nullptr;
UPROPERTY()
TObjectPtr<UAIPerceptionComponent> PerceptionComp = nullptr;
template<typename TBrainClass>
void UseBrainComponent()
{
BrainComp = NewObject<TBrainClass>(Actor);
}
void UseBlackboardComponent();
void UsePerceptionComponent();
void SetEnableTicking(bool bShouldTick);
virtual void TickMe(float DeltaTime);
};