Space Plunder
Loading...
Searching...
No Matches
ASecurityCameraPawn Class Reference

Represents a security camera pawn in the game. More...

#include <SecurityCameraPawn.h>

Inheritance diagram for ASecurityCameraPawn:
ADefenseSystemPawn IPhysicsPickup AInteractablePawn IDefencePawnAnim ICharacterInterface IBaseInterface ISaveLoad

Public Member Functions

 ASecurityCameraPawn ()
 
void OnSnappedToObject (const bool bValue)
 
- Public Member Functions inherited from ADefenseSystemPawn
 ADefenseSystemPawn ()
 
virtual ETeamAttitude::Type GetTeamAttitudeTowards (const AActor &Other) const override
 
virtual void SetGenericTeamId (const FGenericTeamId &NewTeamID) override
 
virtual FGenericTeamId GetGenericTeamId () const override
 
virtual FRotator GetTargetRotation () const override
 
bool GetActive () const
 
void SetActive (const bool bValue)
 
void OnActivated (const bool bValue)
 
virtual void OnActivated_Implementation (const bool bValue)
 
- Public Member Functions inherited from AInteractablePawn
 AInteractablePawn ()
 
virtual void ReceiveStartFocus (AActor *Caller)
 
virtual void ReceiveEndFocus (AActor *Caller)
 
virtual void ReceiveOnInteract (AActor *Caller, const EInteractionType InteractionType)
 
virtual void ReceiveOnEndInteract (AActor *Caller)
 
virtual void ReceiveOnOverlap (AActor *Caller)
 
virtual void ReceiveOnEndOverlap (AActor *Caller)
 
virtual void ReceiveToggleSwitch (AActor *Caller, const bool bOn)
 
virtual void InteractionDataUpdated ()
 
virtual void SetupPlayerInputComponent (class UInputComponent *PlayerInputComponent) override
 
- Public Member Functions inherited from ICharacterInterface
virtual USkeletalMeshComponent * GetCharacterSecondaryMesh () const
 
virtual void StartThreatIndication (AActor *PawnThreat)
 
virtual void UpdateThreatIndication (const FVector &Location, const float DetectionAmount)
 
virtual void StopThreatIndication ()
 
- Public Member Functions inherited from IPhysicsPickup
virtual void SetInteracting (const bool bValue)=0
 
virtual bool GetCanBeSnapped (const int32 Size) const
 
virtual bool GetCanBeRotated () const
 
virtual bool GetUseAutoRotation () const
 

Protected Member Functions

virtual void BeginPlay () override
 
virtual void GetActorEyesViewPoint (FVector &OutLocation, FRotator &OutRotation) const override
 
virtual bool GetIsUpsideDown () const override
 
virtual void TargetSeen (APawn *Pawn) override
 
virtual void EnemySeen () override
 
virtual void LostAllTargets () override
 
virtual void RotateToTarget () override
 
void RotateCamera ()
 
virtual void OnDeath (AActor *OwningActor, EDeathType DeathType, AActor *DeathCauser, AController *DeathInstigator) override
 
virtual UPrimitiveComponent * GetGrabComponent () const override
 
virtual FPhysicsPickupData GetPhysicsPickupData () const override
 
virtual bool GetIsSnapped () const override
 
virtual void SetSnapped (const bool bValue) override
 
virtual TArray< UArrowComponent * > GetSnapComponents () override
 
- Protected Member Functions inherited from ADefenseSystemPawn
int32 GetTeamID () const
 
virtual ECharacterType GetCharacterType () const override
 
virtual EFactionType GetCharacterFaction () const override
 
virtual bool GetIsDead () const override
 
virtual void SetCharacterVehicleMode (const EVehicleMode Mode) override
 
void OnNewTargetSeen (APawn *Pawn)
 
void OnTargetSeen (APawn *Pawn)
 
void OnHostileSeen ()
 
void OnHostileSeenUpdate ()
 
void OnTargetLost ()
 
void OnLostAllTargets ()
 
void OnAlertChange (const float CurrentAlertLevel, const float MaxAlertLevel)
 
virtual bool GetIsCharacter () const override
 
virtual void PointDamageTaken (AActor *DamagedActor, float Damage, class AController *InstigatedBy, FVector HitLocation, class UPrimitiveComponent *HitComponent, FName BoneName, FVector ShotFromDirection, const class UDamageType *DamageType, AActor *DamageCauser)
 
bool CanStillSeePawn (APawn *Pawn) const
 
bool IsPawnAlive (APawn *Pawn) const
 
bool GetCurrentTarget (APawn *&Pawn) const
 
TArray< APawn * > & GetTargets ()
 
float GetDistanceToPawn (const APawn *Pawn) const
 
float GetTotalDistanceScoreToAllTargets () const
 
virtual FRotator GetRotationToTarget (const FVector &StartLocation)
 
virtual void NewTargetSeen (APawn *Pawn)
 
- Protected Member Functions inherited from AInteractablePawn
virtual bool SaveGame () override
 
virtual bool LoadGame () override
 
FVector GetCustomInteractionLocation () const
 
void LogDebugError (const FString &Message) const
 
void LogDebugError (const FString &Message, const int32 Value) const
 
void LogDebugError (const FString &Message, const float Value) const
 
void LogDebugWarning (const FString &Message) const
 
void LogDebugWarning (const FString &Message, const int32 Value) const
 
void LogDebugWarning (const FString &Message, const float Value) const
 
void LogDebugMessage (const FString &Message, const bool bWarning=false, const bool bError=false) const
 
void LogDebugMessage (const FString &Message, const int32 Value, const bool bWarning=false, const bool bError=false) const
 
void LogDebugMessage (const FString &Message, const float Value, const bool bWarning=false, const bool bError=false) const
 
void LogDebugMessage (const FString &Message, const bool bValue, const bool bWarning, const bool bError) const
 
void LogOnScreenMessage (const int32 Key, const FString &Message, FColor Color=FColor::Green) const
 
void SetCategoryName (const FLogCategoryBase &Category)
 

Protected Attributes

UStaticMeshComponent * BaseMeshComponent
 
UStaticMeshComponent * HeadMeshComponent
 
UCameraComponent * CameraComponent
 
USpotLightComponent * SpotLightComponent
 
USceneCaptureComponent2D * SceneCaptureComponent
 
USceneComponent * SnapTargets
 
FPhysicsPickupData PhysicsPickupData
 
bool bSnapped = false
 
float CameraRotateFrequency = 0.1f
 
float CameraRotateToTargetFrequency = 0.1f
 
float CameraMaxRotation = 90.0f
 
float CameraTargetRotationTolerance = 10.0f
 
float VisibilityPercentNeeded = 60.0f
 
float RotationOffset = -90.0f
 
- Protected Attributes inherited from ADefenseSystemPawn
FGenericTeamId TeamID
 
ECharacterType CharacterType = ECharacterType::Defence
 
EFactionType OwnerFaction = EFactionType::Alliance
 
FRotator StartRotation = FRotator::ZeroRotator
 
FRotator TargetRotation = FRotator::ZeroRotator
 
float AlertUpdateFrequency = 0.2f
 
float AlertLevelIncrease = 0.1f
 
float AlertLevelDecrease = 0.1f
 
float AlertLevelThreshold = 100.0f
 
float AlertLevel = 0.0f
 
bool bAlert = false
 
float VisibilityCheckFrequency = 2.0f
 
bool bInstantResetOnLostTarget = false
 
float LostTargetResetTime = 2.0f
 
bool bDead = false
 
bool bAutoActivate = true
 
UHealthComponentBase * HealthComponent
 
UAdvancedPawnSensingComponentPawnSensingComponent
 
- Protected Attributes inherited from AInteractablePawn
class UAudioReactionComponent * AudioReactionComponent
 
class UInteractableActorComponent * InteractableActorComponent
 
class UAIPerceptionStimuliSourceComponent * PerceptionStimuliComponent
 
bool bDebuggingMode = false
 

Private Member Functions

void RotateBackToStart ()
 

Private Attributes

bool bChangeDirection = false
 
float LerpAlpha = 0.0f
 
FRotator StartRelativeRotation = FRotator::ZeroRotator
 
FTimerHandle RotateTimerHandle
 
FTimerHandle RotateToTargetTimerHandle
 
FTimerHandle RotateBackToStartTimerHandle
 

Detailed Description

Represents a security camera pawn in the game.

The ASecurityCameraPawn class is a blueprintable actor class that represents a security camera pawn in the game. It inherits from AInteractablePawn and implements functionality for rotating the camera, detecting hostile targets, and more.

Constructor & Destructor Documentation

◆ ASecurityCameraPawn()

ASecurityCameraPawn::ASecurityCameraPawn ( )
13{
14 BaseMeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Base Mesh"));
15 RootComponent = BaseMeshComponent;
16 HeadMeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Head Mesh"));
17 HeadMeshComponent->SetupAttachment(BaseMeshComponent);
18
19 CameraComponent = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera"));
20 CameraComponent->SetupAttachment(HeadMeshComponent);
21 SpotLightComponent = CreateDefaultSubobject<USpotLightComponent>(TEXT("SpotLight"));
22 SpotLightComponent->SetupAttachment(CameraComponent);
23
24 SceneCaptureComponent = CreateDefaultSubobject<USceneCaptureComponent2D>(TEXT("Scene Capture"));
25 SceneCaptureComponent->SetupAttachment(CameraComponent);
26
27 SnapTargets = CreateDefaultSubobject<USceneComponent>(TEXT("Snap Targets"));
28 SnapTargets->SetupAttachment(BaseMeshComponent);
29
31 bAutoActivate = false;
32}
bool bAutoActivate
Definition DefenseSystemPawn.h:124
FPhysicsPickupData PhysicsPickupData
Definition SecurityCameraPawn.h:72
USceneCaptureComponent2D * SceneCaptureComponent
Definition SecurityCameraPawn.h:45
UStaticMeshComponent * BaseMeshComponent
Definition SecurityCameraPawn.h:37
USceneComponent * SnapTargets
Definition SecurityCameraPawn.h:47
UCameraComponent * CameraComponent
Definition SecurityCameraPawn.h:41
USpotLightComponent * SpotLightComponent
Definition SecurityCameraPawn.h:43
UStaticMeshComponent * HeadMeshComponent
Definition SecurityCameraPawn.h:39
bool bSnappable
Definition InteractionData.h:81

Member Function Documentation

◆ BeginPlay()

void ASecurityCameraPawn::BeginPlay ( )
overrideprotectedvirtual

Reimplemented from ADefenseSystemPawn.

36{
37 Super::BeginPlay();
38 if(GetWorld() != nullptr)
39 {
40 GetWorld()->GetTimerManager().SetTimer(RotateTimerHandle, this, &ASecurityCameraPawn::RotateCamera, CameraRotateFrequency, true);
41 }
42 if(HeadMeshComponent != nullptr)
43 {
44 StartRotation = HeadMeshComponent->GetComponentRotation();
45 StartRelativeRotation = HeadMeshComponent->GetRelativeRotation();
46 }
47 if(BaseMeshComponent == nullptr) {return;}
48 BaseMeshComponent->SetSimulatePhysics(!bSnapped);
49}
FRotator StartRotation
Definition DefenseSystemPawn.h:87
void RotateCamera()
Definition SecurityCameraPawn.cpp:67
FTimerHandle RotateTimerHandle
Definition SecurityCameraPawn.h:104
FRotator StartRelativeRotation
Definition SecurityCameraPawn.h:102
bool bSnapped
Definition SecurityCameraPawn.h:74
float CameraRotateFrequency
Definition SecurityCameraPawn.h:77

◆ EnemySeen()

void ASecurityCameraPawn::EnemySeen ( )
overrideprotectedvirtual

Reimplemented from ADefenseSystemPawn.

118{
119 Super::EnemySeen();
120 GetWorld()->GetTimerManager().ClearTimer(RotateTimerHandle);
121 if(GetWorld()->GetTimerManager().IsTimerActive(RotateToTargetTimerHandle) == false)
122 {
123 GetWorld()->GetTimerManager().SetTimer(RotateToTargetTimerHandle, this, &ASecurityCameraPawn::RotateToTarget, CameraRotateFrequency, true);
124 }
125}
virtual void RotateToTarget() override
Definition SecurityCameraPawn.cpp:128
FTimerHandle RotateToTargetTimerHandle
Definition SecurityCameraPawn.h:105

◆ GetActorEyesViewPoint()

void ASecurityCameraPawn::GetActorEyesViewPoint ( FVector & OutLocation,
FRotator & OutRotation ) const
overrideprotectedvirtual

Reimplemented from ADefenseSystemPawn.

52{
53 if(CameraComponent != nullptr)
54 {
55 OutLocation = CameraComponent->GetComponentLocation();
56 OutRotation = CameraComponent->GetComponentRotation();
57 return;
58 }
59 Super::GetActorEyesViewPoint(OutLocation, OutRotation);
60}

◆ GetGrabComponent()

UPrimitiveComponent * ASecurityCameraPawn::GetGrabComponent ( ) const
overrideprotectedvirtual

Implements IPhysicsPickup.

263{
264 return BaseMeshComponent;
265}

◆ GetIsSnapped()

virtual bool ASecurityCameraPawn::GetIsSnapped ( ) const
inlineoverrideprotectedvirtual

Implements IPhysicsPickup.

65{return bSnapped;};

◆ GetIsUpsideDown()

bool ASecurityCameraPawn::GetIsUpsideDown ( ) const
overrideprotectedvirtual

Reimplemented from ADefenseSystemPawn.

63{
64 return Super::GetIsUpsideDown();
65}

◆ GetPhysicsPickupData()

virtual FPhysicsPickupData ASecurityCameraPawn::GetPhysicsPickupData ( ) const
inlineoverrideprotectedvirtual

Implements IPhysicsPickup.

64{return PhysicsPickupData;};

◆ GetSnapComponents()

TArray< UArrowComponent * > ASecurityCameraPawn::GetSnapComponents ( )
overrideprotectedvirtual

Implements IPhysicsPickup.

159{
160 TArray<USceneComponent*> Components;
161 SnapTargets->GetChildrenComponents(false, Components);
162 TArray<UArrowComponent*> ArrowComponents;
163 for(const auto Component : Components)
164 {
165 UArrowComponent* Arrow = Cast<UArrowComponent>(Component);
166 if(Arrow != nullptr)
167 {
168 ArrowComponents.Add(Arrow);
169 }
170 }
171 return ArrowComponents;
172}

◆ LostAllTargets()

void ASecurityCameraPawn::LostAllTargets ( )
overrideprotectedvirtual

Reimplemented from ADefenseSystemPawn.

176{
177 Super::LostAllTargets();
178 LerpAlpha = 1.0f;
179 if(GetWorld() != nullptr)
180 {
181 GetWorld()->GetTimerManager().ClearTimer(RotateToTargetTimerHandle);
182 GetWorld()->GetTimerManager().SetTimer(RotateBackToStartTimerHandle, this, &ASecurityCameraPawn::RotateBackToStart, CameraRotateFrequency, true);
183 }
184}
FTimerHandle RotateBackToStartTimerHandle
Definition SecurityCameraPawn.h:107
void RotateBackToStart()
Definition SecurityCameraPawn.cpp:186
float LerpAlpha
Definition SecurityCameraPawn.h:100

◆ OnDeath()

void ASecurityCameraPawn::OnDeath ( AActor * OwningActor,
EDeathType DeathType,
AActor * DeathCauser,
AController * DeathInstigator )
overrideprotectedvirtual

Reimplemented from ADefenseSystemPawn.

242{
243 Super::OnDeath(OwningActor, DeathType, DeathCauser, DeathInstigator);
244 if(HeadMeshComponent != nullptr)
245 {
246 HeadMeshComponent->SetSimulatePhysics(true);
247 }
248 if(CameraComponent != nullptr)
249 {
250 CameraComponent->DestroyComponent();
251 }
252 if(SpotLightComponent != nullptr)
253 {
254 SpotLightComponent->DestroyComponent();
255 }
256 if(GetWorld() != nullptr)
257 {
258 GetWorld()->GetTimerManager().ClearTimer(RotateTimerHandle);
259 }
260}

◆ OnSnappedToObject()

void ASecurityCameraPawn::OnSnappedToObject ( const bool bValue)

◆ RotateBackToStart()

void ASecurityCameraPawn::RotateBackToStart ( )
private
187{
188 if(GetActive() == false || GetIsDead()){return;}
189 // HeadMeshComponent->SetWorldRotation(FRotator(0.0f, StartRotation.Yaw, 0.0f));
190 GetWorld()->GetTimerManager().ClearTimer(RotateBackToStartTimerHandle);
191 GetWorld()->GetTimerManager().SetTimer(RotateTimerHandle, this, &ASecurityCameraPawn::RotateCamera, CameraRotateFrequency, true);
192
193 // if(bDebuggingMode){UE_LOG(LogAIToolKit, Warning, TEXT("Rotate Back Alpha: %f"), LerpAlpha);}
194 // const float LerpValue = UKismetMathLibrary::Lerp(StartRotation.Yaw, HeadMeshComponent->GetComponentRotation().Yaw, LerpAlpha);
195 // LerpAlpha = FMath::Max(0.0f, LerpAlpha - CameraRotateFrequency);
196 // HeadMeshComponent->SetWorldRotation(FRotator(0.0f, LerpValue, 0.0f));
197 // if(LerpAlpha <= 0.0f)
198 // {
199 // GetWorld()->GetTimerManager().ClearTimer(RotateBackToStartTimerHandle);
200 // GetWorld()->GetTimerManager().SetTimer(RotateTimerHandle, this, &ASecurityCameraPawn::RotateCamera, CameraRotateFrequency, true);
201 // }
202 //@TODO Once done, start Rotate
203}
virtual bool GetIsDead() const override
Definition DefenseSystemPawn.h:75
bool GetActive() const
Definition DefenseSystemPawn.h:44

◆ RotateCamera()

void ASecurityCameraPawn::RotateCamera ( )
protected
68{
69 if(GetActive() == false || GetIsDead()){return;}
70 if(HeadMeshComponent == nullptr)
71 {
72 if(bDebuggingMode){UE_LOG(LogAIToolKit, Error, TEXT("Head Mesh null in Security Camera"));}
73 GetWorld()->GetTimerManager().ClearTimer(RotateTimerHandle);
74 return;
75 }
76 const float DirectionYaw = bChangeDirection ? -1.0f : 1.0f;
77 HeadMeshComponent->AddRelativeRotation(FRotator(0.0f,DirectionYaw,0.0f));
78 //- Check if rotation has reached or exceeded the maximum rotation angle
79 if ((bChangeDirection && (HeadMeshComponent->GetRelativeRotation().Yaw - StartRelativeRotation.Yaw) <= -CameraMaxRotation) ||
80 (!bChangeDirection && (HeadMeshComponent->GetRelativeRotation().Yaw - StartRelativeRotation.Yaw) >= CameraMaxRotation))
81 {
83 }
84 // if(CurrentTarget == nullptr && CameraViewCollision != nullptr)
85 // {
86 // TArray<AActor*> OverlappingActors;
87 // CameraViewCollision->GetOverlappingActors(OverlappingActors, APawn::StaticClass());
88 // if(OverlappingActors.IsEmpty()){return;}
89 // for(const auto& OverlapActor : OverlappingActors)
90 // {
91 // ICharacterInterface* CharacterOverlapped = Cast<ICharacterInterface>(OverlapActor);
92 // if(CharacterOverlapped == nullptr){continue;}
93 // if(CharacterOverlapped->GetIsDead()){continue;}
94 // const ETeamAttitude::Type Attitude = GetTeamAttitudeTowards(*OverlapActor);
95 // if(Attitude != ETeamAttitude::Hostile){continue;}
96 //
97 // const float VisibilityScore = GetVisibilityScore(OverlapActor);
98 // if(VisibilityScore > VisibilityPercentNeeded)
99 // {
100 // CurrentTarget = OverlapActor;
101 // CurrentCharacterTarget = CharacterOverlapped;
102 // GainedTarget();
103 // }
104 //
105 // }
106 // }
107}
bool bDebuggingMode
Definition InteractablePawn.h:69
bool bChangeDirection
Definition SecurityCameraPawn.h:98
float CameraMaxRotation
Definition SecurityCameraPawn.h:82

◆ RotateToTarget()

void ASecurityCameraPawn::RotateToTarget ( )
overrideprotectedvirtual

Reimplemented from ADefenseSystemPawn.

129{
130 if(GetActive() == false || GetIsDead()){return;}
131 Super::RotateToTarget();
132 APawn* TargetPawn;
133 if(GetCurrentTarget(TargetPawn) == false || TargetPawn == nullptr || HeadMeshComponent == nullptr){return;}
134
135 const FRotator NewRotation = GetRotationToTarget(GetActorLocation());
136 float DesiredYaw = NewRotation.Yaw;
137 const float MinYaw = UKismetMathLibrary::NormalizeAxis(StartRotation.Yaw - CameraMaxRotation);
138 const float MaxYaw = UKismetMathLibrary::NormalizeAxis(StartRotation.Yaw + CameraMaxRotation);
139
140 DesiredYaw = UKismetMathLibrary::NormalizeAxis(DesiredYaw);
141 // Clamp the normalized desired yaw
142 DesiredYaw = FMath::ClampAngle(DesiredYaw, MinYaw, MaxYaw);
143 // const float LerpValue = UKismetMathLibrary::Lerp(HeadMeshComponent->GetComponentRotation().Yaw, DesiredYaw, LerpAlpha);
144 HeadMeshComponent->SetRelativeRotation(FRotator(0.0f, DesiredYaw + RotationOffset - GetActorRotation().Yaw, 0.0f));
145 // LerpAlpha = FMath::Min(1.0f, LerpAlpha + CameraRotateToTargetFrequency);
146 // UE_LOG(LogTemp, Warning, TEXT("Lerp Alpha: %f"), LerpAlpha);
147}
virtual FRotator GetRotationToTarget(const FVector &StartLocation)
Definition DefenseSystemPawn.cpp:392
bool GetCurrentTarget(APawn *&Pawn) const
Definition DefenseSystemPawn.cpp:361
float RotationOffset
Definition SecurityCameraPawn.h:90

◆ SetSnapped()

void ASecurityCameraPawn::SetSnapped ( const bool bValue)
overrideprotectedvirtual

Implements IPhysicsPickup.

150{
151 bSnapped = bValue;
152 if(BaseMeshComponent == nullptr) {return;}
153 BaseMeshComponent->SetSimulatePhysics(!bSnapped);
154 SetActive(bValue);
156}
void SetActive(const bool bValue)
Definition DefenseSystemPawn.cpp:92
void OnSnappedToObject(const bool bValue)

◆ TargetSeen()

void ASecurityCameraPawn::TargetSeen ( APawn * Pawn)
overrideprotectedvirtual

Only Fires when Someone is Hostile, Alive, and a Character

Reimplemented from ADefenseSystemPawn.

111{
112 Super::TargetSeen(Pawn);
113 GetWorld()->GetTimerManager().ClearTimer(RotateTimerHandle);
114 GetWorld()->GetTimerManager().SetTimer(RotateToTargetTimerHandle, this, &ASecurityCameraPawn::RotateToTarget, CameraRotateFrequency, true);
115}

Member Data Documentation

◆ BaseMeshComponent

UStaticMeshComponent* ASecurityCameraPawn::BaseMeshComponent
protected

◆ bChangeDirection

bool ASecurityCameraPawn::bChangeDirection = false
private

◆ bSnapped

bool ASecurityCameraPawn::bSnapped = false
protected

◆ CameraComponent

UCameraComponent* ASecurityCameraPawn::CameraComponent
protected

◆ CameraMaxRotation

float ASecurityCameraPawn::CameraMaxRotation = 90.0f
protected

◆ CameraRotateFrequency

float ASecurityCameraPawn::CameraRotateFrequency = 0.1f
protected

◆ CameraRotateToTargetFrequency

float ASecurityCameraPawn::CameraRotateToTargetFrequency = 0.1f
protected

◆ CameraTargetRotationTolerance

float ASecurityCameraPawn::CameraTargetRotationTolerance = 10.0f
protected

How close to the target rotation before it's counted as a goal

◆ HeadMeshComponent

UStaticMeshComponent* ASecurityCameraPawn::HeadMeshComponent
protected

◆ LerpAlpha

float ASecurityCameraPawn::LerpAlpha = 0.0f
private

◆ PhysicsPickupData

FPhysicsPickupData ASecurityCameraPawn::PhysicsPickupData
protected

◆ RotateBackToStartTimerHandle

FTimerHandle ASecurityCameraPawn::RotateBackToStartTimerHandle
private

◆ RotateTimerHandle

FTimerHandle ASecurityCameraPawn::RotateTimerHandle
private

◆ RotateToTargetTimerHandle

FTimerHandle ASecurityCameraPawn::RotateToTargetTimerHandle
private

◆ RotationOffset

float ASecurityCameraPawn::RotationOffset = -90.0f
protected

◆ SceneCaptureComponent

USceneCaptureComponent2D* ASecurityCameraPawn::SceneCaptureComponent
protected

◆ SnapTargets

USceneComponent* ASecurityCameraPawn::SnapTargets
protected

◆ SpotLightComponent

USpotLightComponent* ASecurityCameraPawn::SpotLightComponent
protected

◆ StartRelativeRotation

FRotator ASecurityCameraPawn::StartRelativeRotation = FRotator::ZeroRotator
private

◆ VisibilityPercentNeeded

float ASecurityCameraPawn::VisibilityPercentNeeded = 60.0f
protected

How Much of the player is needed to be visible to keep tracking


The documentation for this class was generated from the following files: