Files
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

63 lines
1.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "UObject/ObjectMacros.h"
#include "GenericTeamAgentInterface.h"
#include "Perception/AISense.h"
#include "AISense_Team.generated.h"
class UAISense_Team;
USTRUCT()
struct FAITeamStimulusEvent
{
GENERATED_USTRUCT_BODY()
typedef UAISense_Team FSenseClass;
FVector LastKnowLocation;
private:
FVector BroadcastLocation;
public:
float RangeSq;
float InformationAge;
FGenericTeamId TeamIdentifier;
float Strength;
private:
UPROPERTY()
TObjectPtr<AActor> Broadcaster;
public:
UPROPERTY()
TObjectPtr<AActor> Enemy;
FAITeamStimulusEvent() : Broadcaster(nullptr), Enemy(nullptr) {}
AIMODULE_API FAITeamStimulusEvent(AActor* InBroadcaster, AActor* InEnemy, const FVector& InLastKnowLocation, float EventRange, float PassedInfoAge = 0.f, float InStrength = 1.f);
inline void CacheBroadcastLocation()
{
BroadcastLocation = Broadcaster ? Broadcaster->GetActorLocation() : FAISystem::InvalidLocation;
}
inline const FVector& GetBroadcastLocation() const
{
return BroadcastLocation;
}
};
UCLASS(ClassGroup=AI, MinimalAPI)
class UAISense_Team : public UAISense
{
GENERATED_UCLASS_BODY()
UPROPERTY()
TArray<FAITeamStimulusEvent> RegisteredEvents;
public:
AIMODULE_API void RegisterEvent(const FAITeamStimulusEvent& Event);
protected:
AIMODULE_API virtual float Update() override;
};