5#include "CoreMinimal.h"
8#include "GameFramework/GameState.h"
9#include "Net/UnrealNetwork.h"
10#include "Components/ActorComponent.h"
12#include "GenericOctree.h"
14#include "WeakInterfacePtr.h"
16#include "ProjectXGameState.generated.h"
18#define INVALID_TEAM 255
24class UProjectXPlayerState;
66 GENERATED_USTRUCT_BODY()
70 float EndTime = INDEX_NONE;
78 GENERATED_USTRUCT_BODY()
82 int16 Tickets = INDEX_NONE;
88 GENERATED_USTRUCT_BODY()
91 UPROPERTY(BlueprintReadWrite, EditInstanceOnly, Category =
"Score Info")
93 UPROPERTY(BlueprintReadWrite, EditInstanceOnly, Category = "Score Info")
100 TWeakObjectPtr<AActor> Targetable =
nullptr;
105 BoxSphereBounds = FBoxSphereBounds(FVector(0.0f, 0.0f, 0.0f), FVector(1.0f, 1.0f, 1.0f), 1.0f);
126 FVector_NetQuantize ExpectedTargetLocation = FVector::ZeroVector;
128 FVector_NetQuantize SpawnLocation = FVector::ZeroVector;
149DECLARE_DYNAMIC_MULTICAST_DELEGATE_FiveParams(FKillFeedSignature, class
AProjectXPlayerState*, Killer, class
AProjectXPlayerState*, Killed, int32, Data, TSubclassOf<class
UProjectXDamageType>, DamageType,
bool, bWasHeadshot);
159 GENERATED_UCLASS_BODY()
164 static void RegisterTargetableActor(AActor*
const Targetable);
165 static void DeRegisterTargetableActor(AActor*
const Targetable);
169 TArray<T*> GetTargetableActorsInRadius(
const FVector& Location,
const float Radius,
bool bMustBeAlive =
false);
171 UFUNCTION(BlueprintPure, Category = GameState)
173 UFUNCTION(BlueprintPure, Category = GameState)
174 FORCEINLINE int32 GetWinningTeam()
const {
return WinningTeam; }
175 UFUNCTION(BlueprintPure, Category = GameState)
176 FORCEINLINE USquadComponent* GetSquadComponent()
const {
return SquadComponent; }
177 UFUNCTION(BlueprintPure, Category = GameState)
178 FORCEINLINE
float GetMatchStartTime()
const {
return MatchStartTime; }
179 UFUNCTION(BlueprintPure, Category = GameState)
180 FORCEINLINE
float GetTimeUntilMatchStart()
const {
return FMath::Clamp(MatchStartTime - GetServerWorldTimeSeconds(), 0.0f, BIG_NUMBER); }
181 UFUNCTION(BlueprintPure, Category = GameState)
182 FORCEINLINE
float GetMatchElapsedTime()
const {
return GetServerWorldTimeSeconds() - MatchStartTime; }
183 UFUNCTION(BlueprintPure, Category = GameState)
184 FORCEINLINE
float GetMatchTimeRemaining()
const {
return GetMatchLength() - GetMatchElapsedTime(); };
185 UFUNCTION(BlueprintPure, Category = GameState)
186 FORCEINLINE
float GetMaxPlayers()
const {
return MaxPlayers; };
187 UFUNCTION(BlueprintPure, Category = GameState)
188 FORCEINLINE TSubclassOf<
APickupReviveBeacon> GetReviveBeaconGlobalOverride()
const {
return GlobalReviveBeaconOverride; }
190 UFUNCTION(BlueprintPure, Category = GameState)
191 float GetMatchLength()
const;
193 UFUNCTION(BlueprintPure, Category = GameState)
194 float GetMatchEndTime()
const;
196 UFUNCTION(BlueprintPure, Category = GameState)
197 float GetMatchEndTimestamp()
const {
return MatchEndTimestamp; }
198 UFUNCTION(BlueprintPure, Category = GameState)
199 float GetPostGameLength()
const;
200 UFUNCTION(BlueprintPure, Category = GameState)
202 UFUNCTION(BlueprintPure, Category = GameState)
203 bool IsInWarmUp()
const;
204 UFUNCTION(BlueprintPure,Category = GameState)
205 FORCEINLINE
bool CanShowDeployScreen()
const {
return bShowDeployScreen;}
206 UFUNCTION(BlueprintPure, Category =
"Game Mode")
207 virtual int32 GetTicketCount(uint8 Team) const;
208 UFUNCTION(BlueprintPure, Category = "Game Mode")
209 virtual int32 GetStartingTicketCount(uint8 Team) const;
212 UFUNCTION(BlueprintPure, Category =
"GameMode")
213 virtual
float GetRedeployRespawnDelay() const;
214 UFUNCTION(BlueprintPure, Category = "GameMode")
215 virtual
float GetReviveDuration() const;
216 void RegisterSpawnTargetForScoring(AActor* const Target);
217 void DeRegisterSpawnTargetForScoring(AActor* const Target);
219 UFUNCTION(BlueprintCallable, Category = "GameMode")
220 bool CanSpawnInPV()
const {
return bCanSpawnInPV; }
222 virtual float ModifyDamage(AActor* Target,
float Damage,
struct FDamageEvent
const& DamageEvent, AController* EventInstigator, AActor* DamageCauser);
225 void UpdateTeamTickets(uint8 Team, int32 Amount = 1,
bool bOverride =
false);
226 int32 GetTeamTickets(uint8 Team);
228 virtual void OnRep_MatchState()
override;
229 virtual void HandleMatchWarmupEnded();
230 virtual void HandleMatchHasEnded()
override;
231 virtual TSubclassOf<AActor> CheckForActorReplacement(TSubclassOf<AActor> Actor);
233 UFUNCTION(BlueprintCallable, Category =
"GameState")
234 virtual
bool IsMatchInProgress() const override;
235 virtual
float GetPlayerRespawnDelay(class AController* Controller) const override;
236 bool GetShouldOpenMapOnPlayerStart()
const {
return bShouldOpenMapOnPlayerStart; }
239 UFUNCTION(BlueprintCallable, Category = GameState)
240 const TArray<TSubclassOf<AProjectXCharacter>>& GetPlayerClassList()
const;
242 virtual int32 GetTeam(
const AActor* Target)
const;
243 virtual bool IsSquadMate(
const AActor* Target,
const AActor* EventInstigator)
const;
244 virtual bool IsAlly(
const AActor* Target,
const AActor* EventInstigator)
const;
245 virtual bool IsEnemy(
const AActor* Target,
const AActor* EventInstigator)
const;
246 virtual bool IsNeutral(
const AActor* Target)
const;
248 virtual void AddPlayerState(APlayerState* PlayerState)
override;
249 virtual void RemovePlayerState(APlayerState* PlayerState)
override;
251 void SetWinningTeam(int32 Team);
253 virtual void EndPlay(
const EEndPlayReason::Type EndPlayReason)
override;
254 virtual void Tick(
float DeltaSeconds)
override;
255 virtual void BeginPlay()
override;
256 virtual void BroadcastTimer(
const float TimerDuration,
const uint8 Type);
257 virtual void StopTimer();
258 UFUNCTION(BlueprintCallable, meta = (WorldContext =
"WorldContextObject"))
259 static
void BroadcastTimerStatic(const UObject* const WorldContextObject, const
float TimerDuration, const uint8 Type);
260 UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"))
261 static
void StopBroadcastedTimerStatic(const UObject* const WorldContextObject);
264 virtual
void GetActorColour(const AActor* Target, const FName& ColourName, const AActor* EventInstigator, FLinearColor& LinearColor) const;
265 virtual FText GetTeamName(const AActor* Target) const;
266 virtual FText GetTeamNameByTeam(const int32 Team) const;
268 UFUNCTION(BlueprintImplementableEvent)
270 UFUNCTION(BlueprintNativeEvent, Category = GameState)
273 UFUNCTION(BlueprintCallable)
274 const FLinearColor& GetAllyColour(const FName& ColourName = NAME_None) const;
275 UFUNCTION(BlueprintCallable)
276 const FLinearColor& GetEnemyColour(const FName& ColourName = NAME_None) const;
277 const FLinearColor& GetNeutralColour() const;
278 UFUNCTION(BlueprintPure, Category = GameState, meta = (WorldContext = "WorldContextObject"))
279 static const FText& GetGameTypeTextStatic(UObject* const WorldContextObject,
EGameType InGameType);
280 UFUNCTION(BlueprintCallable, Category= GameState)
283 virtual
void GetPlayersOnTeam(const uint8 Team, TArray<APlayerState*>& Players) const;
284 virtual uint8 GetNumPlayersOnTeam(const uint8 Team) const;
285 UFUNCTION(BlueprintCallable, Category = GameState)
286 virtual
void GetTeamScores(TArray<
FTeamScoreInfo>& OutTeamScores) const;
287 UFUNCTION(BlueprintCallable)
288 int32 GetNumberOfTeams()
const {
return TeamTicketList.Num(); }
289 virtual void OnTeamScoreChanged();
292 void RemovePickupFromWorldList(int32 InID);
295 const int32 GetNewPickupID();
297 virtual const FText GetTimerText();
302 void OnRep_WelcomeMessage();
304 void OnRep_TeamTicketList();
306 void OnRep_GenericTimer();
308 UPROPERTY(BlueprintAssignable)
309 FWinningTeamSignature OnWinningTeamSetEvent;
310 UPROPERTY(BlueprintAssignable)
311 FServerBroadcastMarkedLocationSignature OnServerBroadcastMarkedLocationRecieved;
312 UPROPERTY(BlueprintAssignable)
313 FServerBroadcastMarkedLocationSignature OnServerBroadcastMarkedLocationRemoved;
314 UPROPERTY(BlueprintAssignable, Category = GameState)
315 FKilledAlertSignature OnKilled;
316 UPROPERTY(BlueprintAssignable, Category = GameState)
317 FMatchStartSignature OnMatchStarted;
318 UPROPERTY(BlueprintAssignable, Category = GameState)
319 FPlayerStateAddedSignature OnPlayerStateAdded;
320 UPROPERTY(BlueprintAssignable, Category = GameState)
321 FPlayerStateRemovedSignature OnPlayerStateRemoved;
322 UPROPERTY(BlueprintAssignable, Category = GameState)
323 FMatchStateChangedSignature OnMatchStateChanged;
324 UPROPERTY(BlueprintAssignable, Category = GameState)
325 FKillFeedSignature OnKillFeedUpdate;
326 UPROPERTY(BlueprintAssignable)
327 FTeamScoreChangedSignature OnTeamScoresChanged;
328 UPROPERTY(BlueprintAssignable)
329 FTeamTicketChangedSignature OnTeamTicketsChanged;
330 UPROPERTY(BlueprintAssignable)
331 FPlayerUltimatingSignature OnUltimateEvent;
332 UPROPERTY(BlueprintAssignable)
333 FTrackableActorAddedSignature OnTrackableActorAdded;
334 UPROPERTY(BlueprintAssignable)
335 FWelcomeMessageChangedSignature OnWelcomeMessageChanged;
336 UPROPERTY(BlueprintAssignable)
337 FOnBotSpawnSignature OnBotSpawned;
338 UPROPERTY(BlueprintAssignable)
339 FOnBotKilledSignature OnBotKilled;
340 UPROPERTY(BlueprintAssignable)
341 FTimerStartSignature OnTimerStart;
344 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
347 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
348 float RespawnDelayOverride = -1.f;
350 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
351 float RedeployRespawnDelayOverride = -1.f;
353 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
354 bool bShouldOpenMapOnPlayerStart = true;
356 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
357 bool bAllowExplosiveDamageOnSelf = true;
359 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
360 bool bUseSpectatorCamOnDeath = false;
362 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
363 float FriendlyFirePercent = 0.f;
365 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
366 bool bDisableBulletMagnetism = false;
368 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
369 float UltimateDamageMultiplier = 1.0f;
371 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
372 float ExplosiveDamageMultiplier = 1.0f;
374 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
375 float HeadshotDamageMultiplier = 1.0f;
377 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
378 float WeaponDamageMultiplier = 1.0f;
380 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
381 float AbilityCooldownMultiplier = 1.0f;
383 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
384 float HookshotDistanceMultiplier = 1.0f;
386 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
387 float HookshotSpeedMultiplier = 1.0f;
388 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
390 float UltimateChargeRateMultiplier = 1.0f;
392 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
393 float GrenadeCountModifier = 0.0f;
395 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
396 int32 DashChargeModifier = 0;
398 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
399 bool bIsAmmoLimited = false;
401 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
402 float AltitudeLimitMultiplier = 1.0f;
404 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
405 float WeaponSpreadMultiplier = 1.0f;
407 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
408 float GravityMultiplier = 1.0f;
410 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
411 float GroundSpeedMultiplier = 1.0f;
413 UPROPERTY(Replicated, GlobalConfig, EditDefaultsOnly)
414 bool bCanSpawnInCombat = false;
417 UPROPERTY(EditDefaultsOnly)
418 bool bShowDeployScreen = true;
420 UPROPERTY(EditDefaultsOnly)
421 bool bUseLandingScreen = false;
422 UPROPERTY(EditDefaultsOnly)
423 bool bCanSpawnInPV = true;
425 UPROPERTY(GlobalConfig, EditDefaultsOnly)
429 float ExpMultiplier = 1.0f;
435 class USquadComponent* SquadComponent = NULL;
437 void OnRep_WinningTeam();
442 int32 WorldPickupID = 0;
447 UPROPERTY(ReplicatedUsing = OnRep_TeamTicketList)
449 UPROPERTY(ReplicatedUsing = OnRep_GenericTimer)
454 FString MatchStart = "VO_MatchStart";
455 FString VictoryVO = "VO_Victory";
456 FString DefeatVO = "VO_Failure";
457 FString FiveMinutesLeft = "VO_5MinsLeft";
458 FString OneMinutesLeft = "VO_1MinLeft";
459 FString TenSecondsLeft = "VO_10SecondsLeft";
463 UPROPERTY(Replicated)
464 float MatchStartTime = 0.0f;
465 UPROPERTY(Replicated)
466 float MatchLength = 5.0f;
467 UPROPERTY(Replicated)
468 float MatchEndTimestamp = -1.f;
469 UPROPERTY(Replicated)
471 UPROPERTY(Replicated)
472 TArray<int32> StartingTicketCount;
473 UPROPERTY(ReplicatedUsing = OnRep_WinningTeam)
474 int32 WinningTeam = -1;
475 UPROPERTY(BlueprintReadOnly, ReplicatedUsing = OnRep_WelcomeMessage, meta=(AllowPrivateAccess = "true"))
476 FString WelcomeMessage = "";
480 FTimerHandle TickTimeHandle;
482 void WakeDelayedActors();
487 UFUNCTION(BlueprintPure, Category = GameState, meta = (DisplayName = "Has Match Started", ScriptName = "HasMatchStarted", WorldContext = "WorldContextObject", CallableWithoutWorldContext))
488 static
bool HasMatchStartedStatic(const UObject* WorldContextObject);
489 UFUNCTION(BlueprintPure, Category = GameState, meta = (DisplayName = "Get Match Length", ScriptName = "GetMatchLength", WorldContext = "WorldContextObject", CallableWithoutWorldContext))
490 static
float GetMatchLengthStatic(const UObject* WorldContextObject);
491 UFUNCTION(BlueprintPure, Category = GameState, meta = (DisplayName = "Get Match Elapsed Time", ScriptName = "GetMatchElapsedTime", WorldContext = "WorldContextObject", CallableWithoutWorldContext))
492 static
float GetMatchElapsedTimeStatic(const UObject* WorldContextObject);
493 UFUNCTION(BlueprintPure, Category = GameState, meta = (DisplayName = "Get Server World Time Seconds", ScriptName = "GetServerWorldTimeSeconds", WorldContext = "WorldContextObject", CallableWithoutWorldContext))
494 static
float GetServerWorldTimeSecondsStatic(const UObject* WorldContextObject);
495 UFUNCTION(BlueprintCallable, meta=(DisplayName="Get Game State", ScriptName="GetGameState", WorldContext = "WorldContextObject", CallableWithoutWorldContext))
496 static AGameStateBase* GetGameStateNoAutoWorldContext(const UObject* WorldContextObject);
497 UFUNCTION(BlueprintPure, Category = GameState, meta = (WorldContext = "WorldContextObject", CallableWithoutWorldContext))
498 static
bool IsAlly(const UObject* WorldContextObject, const AActor* Target, const AActor* EventInstigator);
499 UFUNCTION(BlueprintPure, Category = GameState, meta = (WorldContext = "WorldContextObject", CallableWithoutWorldContext))
500 static
bool IsSquadMate(const UObject* WorldContextObject, const AActor* Target, const AActor* EventInstigator);
501 UFUNCTION(BlueprintPure, Category = GameState, meta = (WorldContext = "WorldContextObject", CallableWithoutWorldContext))
502 static
bool IsNeutral(const UObject* WorldContextObject, const AActor* Target);
503 UFUNCTION(BlueprintPure, Category = GameState, meta = (WorldContext = "WorldContextObject", CallableWithoutWorldContext))
504 static
bool IsEnemy(const UObject* WorldContextObject, const AActor* Target, const AActor* EventInstigator);
505 UFUNCTION(BlueprintPure, Category = GameState, meta = (WorldContext = "WorldContextObject", CallableWithoutWorldContext))
506 static
bool IsAllyByTeam(const UObject* WorldContextObject, const int32 Team, const AActor* EventInstigator);
507 UFUNCTION(BlueprintPure, Category = GameState, meta = (WorldContext = "WorldContextObject", CallableWithoutWorldContext))
508 static
bool IsNeutralByTeam(const int32 Team);
509 UFUNCTION(BlueprintPure, Category = GameState, meta = (AutoCreateRefTerm = "ColourName"))
511 static
void GetTargetColour(const AActor* Target, const FName& ColourName, const AActor* EventInstigator, FLinearColor& LinearColor);
512 UFUNCTION(BlueprintPure, Category = GameState, meta = (AutoCreateRefTerm = "ColourName"))
514 static
void GetTargetColourByTeam(const int32 Team, const FName& ColourName, const AActor* EventInstigator, FLinearColor& LinearColor);
515 UFUNCTION(BlueprintPure, Category = GameState, meta = (DisplayName = "Get Team", ScriptName = "GetTeamStatic"))
516 static int32 GetTeamStatic(const AActor* Target);
517 UFUNCTION(BlueprintPure, Category = GameState, meta = (DisplayName = "Get Team Name", ScriptName = "GetTeamNameStatic"))
518 static FText GetTeamNameStatic(const AActor* Target);
519 UFUNCTION(BlueprintPure, Category = GameState, meta = (DisplayName = "Get Team Name By Team", ScriptName = "GetTeamNameByTeam", WorldContext = "WorldContextObject", CallableWithoutWorldContext))
520 static FText GetTeamNameByTeamStatic(const UObject* WorldContextObject, const int32 Team);
521 UFUNCTION(BlueprintPure, Category = "Player Class", meta = (DisplayName = "Get Class List", ScriptName = "GetWeaponList"))
523 static FBoxSphereBounds GetActorBoxSphereBounds(const AActor* const Actor);
525 void UpdateGameTimer();
526 void SetWelcomeMessage(const FString& NewWelcomeMessage);
531 enum { MaxElementsPerLeaf = 16 };
532 enum { MinInclusiveElementsPerNode = 7 };
533 enum { MaxNodeDepth = 12 };
582 const FBoxCenterAndExtent Query = FBoxCenterAndExtent(Location, FVector(Radius));
587 TArray<T*> TargetableActors;
588 for (FTargetableOctree::TConstElementBoxIterator<> OctreeIt(*
Octree, Query); OctreeIt.HasPendingElements(); OctreeIt.Advance())
590 if (!OctreeIt.GetCurrentElement().Targetable.IsValid() || OctreeIt.GetCurrentElement().Targetable->GetWorld() != GetWorld())
597 IHealthInterface*
const HealthInterface = Cast<IHealthInterface>(OctreeIt.GetCurrentElement().Targetable);
598 if(HealthInterface && HealthInterface->
IsDead())
604 if (T* ClassFilteredActor = Cast<T>(OctreeIt.GetCurrentElement().Targetable.Get()))
606 TargetableActors.Emplace(ClassFilteredActor);
610 return MoveTemp(TargetableActors);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FServerBroadcastMarkedLocationSignature, AActor *, MarkedActor, TSubclassOf< UActorComponent >, MarkerToPlace)
EDifficultyLevel
Definition: ProjectXGameState.h:54
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FKilledAlertSignature, AController *, Controller)
DECLARE_DYNAMIC_MULTICAST_DELEGATE_FiveParams(FKillFeedSignature, class AProjectXPlayerState *, Killer, class AProjectXPlayerState *, Killed, int32, Data, TSubclassOf< class UProjectXDamageType >, DamageType, bool, bWasHeadshot)
TOctree< struct FTargetableOctreeElement, struct FTargetableOctreeSemantics > FTargetableOctree
Definition: ProjectXGameState.h:136
EMatchResult
Definition: ProjectXGameState.h:31
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FMatchStartSignature)
EGameType
Definition: ProjectXGameState.h:40
Definition: PickupReviveBeacon.h:48
Definition: PostGameScreen.h:28
Definition: ProjectXCharacter.h:128
Definition: ProjectXGameMode.h:115
Definition: ProjectXGameState.h:158
static TMap< uint32, FTargetOctreeElementInfo > TargetableOctreeElements
Definition: ProjectXGameState.h:163
bool UsesLandingScreen() const
Definition: ProjectXGameState.h:237
TArray< FLevelActorState > StateChangedActors
Definition: ProjectXGameState.h:299
TArray< TWeakInterfacePtr< ISpawnTargetInterface > > GetSpawnTargetsRegisteredForScoring() const
Definition: ProjectXGameState.h:166
TArray< T * > GetTargetableActorsInRadius(const FVector &Location, const float Radius, bool bMustBeAlive=false)
Definition: ProjectXGameState.h:575
static FTargetableOctree * Octree
Definition: ProjectXGameState.h:162
Definition: ProjectXPlayerState.h:238
Definition: HealthInterface.h:28
virtual bool IsDead() const
Definition: HealthInterface.cpp:87
Definition: SpawnTargetInterface.h:18
Definition: ProjectXDamageType.h:62
Definition: VehicleRespawnManager.h:24
Definition: ProjectXGameState.h:65
Definition: ProjectXGameState.h:110
FVector CachedLocation
Definition: ProjectXGameState.h:116
FOctreeElementId Id
Definition: ProjectXGameState.h:115
FTargetOctreeElementInfo(FOctreeElementId InId, const FVector &Location)
Definition: ProjectXGameState.h:112
FTargetOctreeElementInfo()
Definition: ProjectXGameState.h:98
FBoxSphereBounds BoxSphereBounds
Definition: ProjectXGameState.h:101
FTargetableOctreeElement()
Definition: ProjectXGameState.h:103
TWeakObjectPtr< AActor > Targetable
Definition: ProjectXGameState.h:100
Definition: ProjectXGameState.h:530
static FORCEINLINE FBoxSphereBounds GetBoundingBox(const FTargetableOctreeElement &Element)
Definition: ProjectXGameState.h:537
static FORCEINLINE void ApplyOffset(FTargetableOctreeElement &Element, FVector Offset)
Definition: ProjectXGameState.h:568
static FORCEINLINE_DEBUGGABLE void SetElementId(const FTargetableOctreeElement &Element, FOctreeElementId Id)
Definition: ProjectXGameState.h:552
TInlineAllocator< MaxElementsPerLeaf > ElementAllocator
Definition: ProjectXGameState.h:535
static FORCEINLINE bool AreElementsEqual(const FTargetableOctreeElement &A, const FTargetableOctreeElement &B)
Definition: ProjectXGameState.h:542
Definition: ProjectXGameState.h:87
Definition: ProjectXGameState.h:77
Definition: ProjectXGameState.h:121