Files
UnrealEngineUWP/Engine/Source/Developer/GameplayDebugger/Classes/GameplayDebuggingComponent.h

275 lines
7.2 KiB
C
Raw Normal View History

// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
/**
* GameplayDebuggingComponent is used to replicate debug data from server to client(s).
*/
#pragma once
#include "Components/PrimitiveComponent.h"
#include "GameplayDebuggingTypes.h"
#include "EnvironmentQuery/EQSQueryResultSourceInterface.h"
#include "EnvironmentQuery/EnvQueryDebugHelpers.h"
#include "GameplayDebuggingComponent.generated.h"
#define WITH_EQS 1
struct FDebugContext;
//struct FEnvQueryInstance;
UENUM()
namespace EDebugComponentMessage
{
enum Type
{
EnableExtendedView,
DisableExtendedView,
ActivateReplication,
DeactivateReplilcation,
ActivateDataView,
DeactivateDataView,
SetMultipleDataViews,
};
}
DECLARE_MULTICAST_DELEGATE_TwoParams(FOnDebuggingTargetChanged, class AActor* /*Owner of debugging component*/, bool /*is being debugged now*/);
UCLASS(config=Engine)
class GAMEPLAYDEBUGGER_API UGameplayDebuggingComponent : public UPrimitiveComponent, public IEQSQueryResultSourceInterface
{
GENERATED_UCLASS_BODY()
friend class AGameplayDebuggingHUDComponent;
struct FPathCorridorPolygons
{
TArray<FVector> Points;
FColor Color;
};
UPROPERTY(globalconfig)
FString DebugComponentClassName;
UPROPERTY(Replicated)
int32 ShowExtendedInformatiomCounter;
UPROPERTY(Replicated)
TArray<int32> ReplicateViewDataCounters;
UPROPERTY(Replicated)
FString ControllerName;
UPROPERTY(Replicated)
FString PawnName;
UPROPERTY(Replicated)
FString PawnClass;
UPROPERTY(Replicated)
FString DebugIcon;
UPROPERTY(Replicated)
FString MovementBaseInfo;
UPROPERTY(Replicated)
FString MovementModeInfo;
UPROPERTY(Replicated)
FString PathFollowingInfo;
UPROPERTY(Replicated)
FString CurrentAITask;
UPROPERTY(Replicated)
FString CurrentAIState;
UPROPERTY(Replicated)
FString CurrentAIAssets;
UPROPERTY(Replicated)
FString NavDataInfo;
UPROPERTY(Replicated)
FString AbilityInfo;
UPROPERTY(Replicated)
FString MontageInfo;
UPROPERTY(Replicated)
FString BrainComponentName;
Merging using UE4-Fortnite-To-UE4 from CL 2261973 Includes the following engine-level changes (among others; biggest change is enabling world assets by default): CL 2252857 added dynamic allocations for path finding, removed hardcoded limit of 128 polys in path corridor CL 2256142 Added support for native arrays in JSON object converter. - Permissive in treating arrays of size 1 and scalars as equivalent - Excess elements in JSON are ignored. Serialization succeeds but a warning is logged CL 2256073 Fixed a bug in ARecastNavMesh::BatchRaycast resulting in NaN hit locations CL 2253797 #UE4 More aggressively setting RF_Public and RF_Standalone flags on maps and ensuring world names match package names. This is necessary because umaps are currently being managed outside of the content browser and it is causing a few issues. Also, packages containing maps now synthesize asset data when the package contains absolutely no asset data (probably because the UWorld in it was not RF_Public at the time it was saved due to a previous bug). CL 2258142 #UE4 Added a GC during map load that reclaims memory allocated during load/init. This is needed to finish the load on low-memory devices in games that allocate more memory after load. CL 2247003 Added homing to ProjectileMovementComponent - Homing requires both a bool and a target component to be set, the strength is determined by a customizable variable - Both homing and gravity are now applied in the new virtual function "CalculateAcceleration" CL 2247249 Moved the homing modification to acceleration occur in a separate function specifically for homing CL 2257043 - Guard net dormancy calls against executing on clients, based on thread with DaveR and JohnP; This particular case was the result of an intentionally client-authoritative actor calling the dormancy functions via inheritance CL 2245629 #UE4 - fixed json TryGetNumber to round negatives appropriately CL 2255312 #UE4 Enabling World Assets by default. CL 2260956 Analytics ET now loads HTTP at StartupModule so the module will be available during ShutdownModule to flush events CL 2245571 GenericTeamAgentInterface can now retrieve attitude of an agent towards a given actor #UE4 - Made PerceptionSystem's sight sense take advantage of that CL 2246897 Fixed perception listeners not being removed from the PerceptionSystem on Owner's end play #UE4 - addresses TTP#343392 CL 2260634 added more debug data for NaN in crowd simulation CL 2248387 Added possibility to debug multiple EQS queries with GameplayDebugger. #ue4 Fixed network replication from bandwidth point of view for data in GameplayDebugger. #ue4 CL 2253281 Added additional information to the visual logger for UBTCompositeNode::DoDecoratorsAllowExecution - We now keep track of whether a decorator allows execution, in addition to the existing log for not allowing execution CL 2255310 #UE4 The world browser module now listens to WorldAdded/WorldDestroyed events instead of WorldInit/WorldCleanup events. Worlds can be initialized without being the editor world and this handles that case. CL 2258256 #UE4 Replacing the SOpenLevelDialog with a new generic SAssetDialog. This dialog will be used as a generic Open or Save As dialog for assets. [CL 2266822 by Billy Bramer in Main branch]
2014-08-21 20:30:51 -04:00
UPROPERTY(Replicated)
FString BrainComponentString;
UPROPERTY(ReplicatedUsing = OnRep_UpdateBlackboard)
TArray<uint8> BlackboardRepData;
FString BlackboardString;
/** Begin path replication data */
UPROPERTY(Replicated)
TArray<FVector> PathPoints;
UPROPERTY(ReplicatedUsing = OnRep_PathCorridorData)
TArray<uint8> PathCorridorData;
TArray<FPathCorridorPolygons> PathCorridorPolygons;
/** End path replication data*/
UPROPERTY(ReplicatedUsing = OnRep_UpdateNavmesh)
TArray<uint8> NavmeshRepData;
/** Begin EQS replication data */
UPROPERTY(ReplicatedUsing = OnRep_UpdateEQS)
TArray<uint8> EQSRepData;
/** local EQS debug data, decoded from EQSRepData blob */
#if USE_EQS_DEBUGGER || ENABLE_VISUAL_LOG
Merging using UE4-Fortnite-To-UE4 from CL 2261973 Includes the following engine-level changes (among others; biggest change is enabling world assets by default): CL 2252857 added dynamic allocations for path finding, removed hardcoded limit of 128 polys in path corridor CL 2256142 Added support for native arrays in JSON object converter. - Permissive in treating arrays of size 1 and scalars as equivalent - Excess elements in JSON are ignored. Serialization succeeds but a warning is logged CL 2256073 Fixed a bug in ARecastNavMesh::BatchRaycast resulting in NaN hit locations CL 2253797 #UE4 More aggressively setting RF_Public and RF_Standalone flags on maps and ensuring world names match package names. This is necessary because umaps are currently being managed outside of the content browser and it is causing a few issues. Also, packages containing maps now synthesize asset data when the package contains absolutely no asset data (probably because the UWorld in it was not RF_Public at the time it was saved due to a previous bug). CL 2258142 #UE4 Added a GC during map load that reclaims memory allocated during load/init. This is needed to finish the load on low-memory devices in games that allocate more memory after load. CL 2247003 Added homing to ProjectileMovementComponent - Homing requires both a bool and a target component to be set, the strength is determined by a customizable variable - Both homing and gravity are now applied in the new virtual function "CalculateAcceleration" CL 2247249 Moved the homing modification to acceleration occur in a separate function specifically for homing CL 2257043 - Guard net dormancy calls against executing on clients, based on thread with DaveR and JohnP; This particular case was the result of an intentionally client-authoritative actor calling the dormancy functions via inheritance CL 2245629 #UE4 - fixed json TryGetNumber to round negatives appropriately CL 2255312 #UE4 Enabling World Assets by default. CL 2260956 Analytics ET now loads HTTP at StartupModule so the module will be available during ShutdownModule to flush events CL 2245571 GenericTeamAgentInterface can now retrieve attitude of an agent towards a given actor #UE4 - Made PerceptionSystem's sight sense take advantage of that CL 2246897 Fixed perception listeners not being removed from the PerceptionSystem on Owner's end play #UE4 - addresses TTP#343392 CL 2260634 added more debug data for NaN in crowd simulation CL 2248387 Added possibility to debug multiple EQS queries with GameplayDebugger. #ue4 Fixed network replication from bandwidth point of view for data in GameplayDebugger. #ue4 CL 2253281 Added additional information to the visual logger for UBTCompositeNode::DoDecoratorsAllowExecution - We now keep track of whether a decorator allows execution, in addition to the existing log for not allowing execution CL 2255310 #UE4 The world browser module now listens to WorldAdded/WorldDestroyed events instead of WorldInit/WorldCleanup events. Worlds can be initialized without being the editor world and this handles that case. CL 2258256 #UE4 Replacing the SOpenLevelDialog with a new generic SAssetDialog. This dialog will be used as a generic Open or Save As dialog for assets. [CL 2266822 by Billy Bramer in Main branch]
2014-08-21 20:30:51 -04:00
TArray<EQSDebug::FQueryData> EQSLocalData;
#endif
/** End EQS replication data */
UPROPERTY(Replicated)
FVector SensingComponentLocation;
UPROPERTY(Replicated)
int32 NextPathPointIndex;
UPROPERTY(Replicated)
uint32 bIsUsingPathFollowing : 1;
UPROPERTY(Replicated)
uint32 bIsUsingCharacter : 1;
UPROPERTY(Replicated)
uint32 bIsUsingBehaviorTree : 1;
UPROPERTY(Replicated)
uint32 bIsUsingAbilities : 1;
uint32 bDrawEQSLabels:1;
uint32 bDrawEQSFailedItems : 1;
Merging using UE4-Fortnite-To-UE4 from CL 2261973 Includes the following engine-level changes (among others; biggest change is enabling world assets by default): CL 2252857 added dynamic allocations for path finding, removed hardcoded limit of 128 polys in path corridor CL 2256142 Added support for native arrays in JSON object converter. - Permissive in treating arrays of size 1 and scalars as equivalent - Excess elements in JSON are ignored. Serialization succeeds but a warning is logged CL 2256073 Fixed a bug in ARecastNavMesh::BatchRaycast resulting in NaN hit locations CL 2253797 #UE4 More aggressively setting RF_Public and RF_Standalone flags on maps and ensuring world names match package names. This is necessary because umaps are currently being managed outside of the content browser and it is causing a few issues. Also, packages containing maps now synthesize asset data when the package contains absolutely no asset data (probably because the UWorld in it was not RF_Public at the time it was saved due to a previous bug). CL 2258142 #UE4 Added a GC during map load that reclaims memory allocated during load/init. This is needed to finish the load on low-memory devices in games that allocate more memory after load. CL 2247003 Added homing to ProjectileMovementComponent - Homing requires both a bool and a target component to be set, the strength is determined by a customizable variable - Both homing and gravity are now applied in the new virtual function "CalculateAcceleration" CL 2247249 Moved the homing modification to acceleration occur in a separate function specifically for homing CL 2257043 - Guard net dormancy calls against executing on clients, based on thread with DaveR and JohnP; This particular case was the result of an intentionally client-authoritative actor calling the dormancy functions via inheritance CL 2245629 #UE4 - fixed json TryGetNumber to round negatives appropriately CL 2255312 #UE4 Enabling World Assets by default. CL 2260956 Analytics ET now loads HTTP at StartupModule so the module will be available during ShutdownModule to flush events CL 2245571 GenericTeamAgentInterface can now retrieve attitude of an agent towards a given actor #UE4 - Made PerceptionSystem's sight sense take advantage of that CL 2246897 Fixed perception listeners not being removed from the PerceptionSystem on Owner's end play #UE4 - addresses TTP#343392 CL 2260634 added more debug data for NaN in crowd simulation CL 2248387 Added possibility to debug multiple EQS queries with GameplayDebugger. #ue4 Fixed network replication from bandwidth point of view for data in GameplayDebugger. #ue4 CL 2253281 Added additional information to the visual logger for UBTCompositeNode::DoDecoratorsAllowExecution - We now keep track of whether a decorator allows execution, in addition to the existing log for not allowing execution CL 2255310 #UE4 The world browser module now listens to WorldAdded/WorldDestroyed events instead of WorldInit/WorldCleanup events. Worlds can be initialized without being the editor world and this handles that case. CL 2258256 #UE4 Replacing the SOpenLevelDialog with a new generic SAssetDialog. This dialog will be used as a generic Open or Save As dialog for assets. [CL 2266822 by Billy Bramer in Main branch]
2014-08-21 20:30:51 -04:00
UFUNCTION()
void OnChangeEQSQuery();
UFUNCTION()
virtual void OnRep_UpdateEQS();
Merging using UE4-Fortnite-To-UE4 from CL 2261973 Includes the following engine-level changes (among others; biggest change is enabling world assets by default): CL 2252857 added dynamic allocations for path finding, removed hardcoded limit of 128 polys in path corridor CL 2256142 Added support for native arrays in JSON object converter. - Permissive in treating arrays of size 1 and scalars as equivalent - Excess elements in JSON are ignored. Serialization succeeds but a warning is logged CL 2256073 Fixed a bug in ARecastNavMesh::BatchRaycast resulting in NaN hit locations CL 2253797 #UE4 More aggressively setting RF_Public and RF_Standalone flags on maps and ensuring world names match package names. This is necessary because umaps are currently being managed outside of the content browser and it is causing a few issues. Also, packages containing maps now synthesize asset data when the package contains absolutely no asset data (probably because the UWorld in it was not RF_Public at the time it was saved due to a previous bug). CL 2258142 #UE4 Added a GC during map load that reclaims memory allocated during load/init. This is needed to finish the load on low-memory devices in games that allocate more memory after load. CL 2247003 Added homing to ProjectileMovementComponent - Homing requires both a bool and a target component to be set, the strength is determined by a customizable variable - Both homing and gravity are now applied in the new virtual function "CalculateAcceleration" CL 2247249 Moved the homing modification to acceleration occur in a separate function specifically for homing CL 2257043 - Guard net dormancy calls against executing on clients, based on thread with DaveR and JohnP; This particular case was the result of an intentionally client-authoritative actor calling the dormancy functions via inheritance CL 2245629 #UE4 - fixed json TryGetNumber to round negatives appropriately CL 2255312 #UE4 Enabling World Assets by default. CL 2260956 Analytics ET now loads HTTP at StartupModule so the module will be available during ShutdownModule to flush events CL 2245571 GenericTeamAgentInterface can now retrieve attitude of an agent towards a given actor #UE4 - Made PerceptionSystem's sight sense take advantage of that CL 2246897 Fixed perception listeners not being removed from the PerceptionSystem on Owner's end play #UE4 - addresses TTP#343392 CL 2260634 added more debug data for NaN in crowd simulation CL 2248387 Added possibility to debug multiple EQS queries with GameplayDebugger. #ue4 Fixed network replication from bandwidth point of view for data in GameplayDebugger. #ue4 CL 2253281 Added additional information to the visual logger for UBTCompositeNode::DoDecoratorsAllowExecution - We now keep track of whether a decorator allows execution, in addition to the existing log for not allowing execution CL 2255310 #UE4 The world browser module now listens to WorldAdded/WorldDestroyed events instead of WorldInit/WorldCleanup events. Worlds can be initialized without being the editor world and this handles that case. CL 2258256 #UE4 Replacing the SOpenLevelDialog with a new generic SAssetDialog. This dialog will be used as a generic Open or Save As dialog for assets. [CL 2266822 by Billy Bramer in Main branch]
2014-08-21 20:30:51 -04:00
UFUNCTION()
virtual void OnRep_UpdateBlackboard();
virtual bool GetComponentClassCanReplicate() const override{ return true; }
UFUNCTION()
virtual void OnRep_UpdateNavmesh();
UFUNCTION(exec)
void ServerReplicateData(uint32 InMessage, uint32 DataView);
UFUNCTION(reliable, server, WithValidation)
void ServerCollectNavmeshData(FVector_NetQuantize10 TargetLocation);
UFUNCTION(reliable, server, WithValidation)
void ServerDiscardNavmeshData();
void PrepareNavMeshData(struct FNavMeshSceneProxyData*) const;
UFUNCTION()
virtual void OnRep_PathCorridorData();
virtual void Activate(bool bReset=false) override;
virtual void Deactivate() override;
virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction) override;
virtual void EnableDebugDraw(bool bEnable, bool InFocusedComponent = false);
Merging using UE4-Fortnite-To-UE4 from CL 2261973 Includes the following engine-level changes (among others; biggest change is enabling world assets by default): CL 2252857 added dynamic allocations for path finding, removed hardcoded limit of 128 polys in path corridor CL 2256142 Added support for native arrays in JSON object converter. - Permissive in treating arrays of size 1 and scalars as equivalent - Excess elements in JSON are ignored. Serialization succeeds but a warning is logged CL 2256073 Fixed a bug in ARecastNavMesh::BatchRaycast resulting in NaN hit locations CL 2253797 #UE4 More aggressively setting RF_Public and RF_Standalone flags on maps and ensuring world names match package names. This is necessary because umaps are currently being managed outside of the content browser and it is causing a few issues. Also, packages containing maps now synthesize asset data when the package contains absolutely no asset data (probably because the UWorld in it was not RF_Public at the time it was saved due to a previous bug). CL 2258142 #UE4 Added a GC during map load that reclaims memory allocated during load/init. This is needed to finish the load on low-memory devices in games that allocate more memory after load. CL 2247003 Added homing to ProjectileMovementComponent - Homing requires both a bool and a target component to be set, the strength is determined by a customizable variable - Both homing and gravity are now applied in the new virtual function "CalculateAcceleration" CL 2247249 Moved the homing modification to acceleration occur in a separate function specifically for homing CL 2257043 - Guard net dormancy calls against executing on clients, based on thread with DaveR and JohnP; This particular case was the result of an intentionally client-authoritative actor calling the dormancy functions via inheritance CL 2245629 #UE4 - fixed json TryGetNumber to round negatives appropriately CL 2255312 #UE4 Enabling World Assets by default. CL 2260956 Analytics ET now loads HTTP at StartupModule so the module will be available during ShutdownModule to flush events CL 2245571 GenericTeamAgentInterface can now retrieve attitude of an agent towards a given actor #UE4 - Made PerceptionSystem's sight sense take advantage of that CL 2246897 Fixed perception listeners not being removed from the PerceptionSystem on Owner's end play #UE4 - addresses TTP#343392 CL 2260634 added more debug data for NaN in crowd simulation CL 2248387 Added possibility to debug multiple EQS queries with GameplayDebugger. #ue4 Fixed network replication from bandwidth point of view for data in GameplayDebugger. #ue4 CL 2253281 Added additional information to the visual logger for UBTCompositeNode::DoDecoratorsAllowExecution - We now keep track of whether a decorator allows execution, in addition to the existing log for not allowing execution CL 2255310 #UE4 The world browser module now listens to WorldAdded/WorldDestroyed events instead of WorldInit/WorldCleanup events. Worlds can be initialized without being the editor world and this handles that case. CL 2258256 #UE4 Replacing the SOpenLevelDialog with a new generic SAssetDialog. This dialog will be used as a generic Open or Save As dialog for assets. [CL 2266822 by Billy Bramer in Main branch]
2014-08-21 20:30:51 -04:00
bool ShouldReplicateData(EAIDebugDrawDataView::Type InView) const { return ReplicateViewDataCounters[InView] > 0 /*true*/; }
virtual void CollectDataToReplicate(bool bCollectExtendedData);
//=============================================================================
// controller related stuff
//=============================================================================
UPROPERTY(Replicated)
AActor* TargetActor;
UFUNCTION(Reliable, Client, WithValidation)
void ClientEnableTargetSelection(bool bEnable);
void SetActorToDebug(AActor* Actor);
FORCEINLINE AActor* GetSelectedActor() const
{
return TargetActor && TargetActor->IsPendingKill() == false ? TargetActor : nullptr;
}
void SetEQSIndex(int32 Index) { CurrentEQSIndex = Index; }
int32 GetEQSIndex() { return CurrentEQSIndex; }
//=============================================================================
// EQS debugging
//=============================================================================
uint32 bEnableClientEQSSceneProxy : 1;
void EnableClientEQSSceneProxy(bool bEnable) { bEnableClientEQSSceneProxy = bEnable; MarkRenderStateDirty(); }
bool IsClientEQSSceneProxyEnabled() { return bEnableClientEQSSceneProxy; }
// IEQSQueryResultSourceInterface start
virtual const struct FEnvQueryResult* GetQueryResult() const override;
virtual const struct FEnvQueryInstance* GetQueryInstance() const override;
virtual bool GetShouldDebugDrawLabels() const override { return bDrawEQSLabels; }
virtual bool GetShouldDrawFailedItems() const override{ return bDrawEQSFailedItems; }
// IEQSQueryResultSourceInterface end
protected:
virtual void CollectEQSData();
public:
//=============================================================================
// Rendering
//=============================================================================
virtual FPrimitiveSceneProxy* CreateSceneProxy() override;
virtual FBoxSphereBounds CalcBounds(const FTransform &LocalToWorld) const override;
virtual void CreateRenderState_Concurrent() override;
virtual void DestroyRenderState_Concurrent() override;
protected:
void SelectTargetToDebug();
//APlayerController* PlayerOwner;
Merging Dev->Main CL#2294650 using UE4-Fortnite-To-UE4 CL#2272587 Added "BlueprintReadWrite" to bNoneIsAllowedValue in FBlackboardKeySelector to avoid breaking any usage of it in blueprints through Break node which people were already using. That matches the usage for AllowedTypes, which is conceptually a related idea and was already set to BlueprintReadWrite. CL#2272599 Fixed crash when AI were killed in the same frame they were spawning into the world. CL#2274068 behavior tree search can be reverted, task will be aborted AFTER finding a valid replacement fix for move action crashing on pawn's death CL#2274177 fixed behavior tree's search range when there are mutliple restart requests in the same frame CL#2274359 Fixes RotateToFaceBBEntry not working correctly when focusing on an actor - the GetFocalPoint call to AIController had different behavior if you called it with a priority vs. without - with a priority we would just look at the Priorities and return the position, but that position was never being updated for Actors - without a priority we would go through all the priorities, check for an Actor, and if it existed we would return its location - while I could have just modified the RotateToFaceBBEntry call to just call GetFocusActor for the appropriate focus priority, this seems like the better fix) - solution was to make the GetFocalPoint with a focus priority work exactly like the one without the focus priority. while I would have liked to reduce the copy/paste code between the functions it didn't seem like a good idea. Also fixed Precision not considering vectors that were in the same direction (>= vs just > with the angle threshold value) CL#2274719 Fix crash related to AnimCameraActor. TTP #344968 CRASH: TAKER: If the world owner leaves the game in the middle of a Taker Soul sucking another player, the Client will crash. CL#2274988 #UE4 Proper handling of saving level assets that were created without a valid non-read only path. TTP#344899 CL#2275045 #UE4: Include "IHttpBase.h" in IHttpResponse.h since it's using a base class from there (they're truly dependent). Would be nice if this file just had the enum though. CL#2275152 TTP# 336668 Moved the input check for VOIP from the child widgets into the base SFortHUDLayer to capture that event on different screens. Removed code duplication. CL#2275528 Fixed StaticMeshComponent destruction blocking on the rendering thread instead of using the UObject async destruction interface CL#2275960 fixed behavior tree search being discarded after merge with non discardable request decorator observers will be added even after failed search CL#2276294 Added support to EQS "Dot" test for 2D dot-product AND taking absolute value of dot-product (for biasing for lateral over forward/back). They are separate options which can be used together or separately. CL#2277344 fixed BT decorator indices for abort range preview in editor CL#2277473 NavCollision settings of static mesh will persist through reimport ttp# 344853 CL#2277509 fixed multiple nodes connected to special pins in behavior tree editor CL#2278042 Fixes EQS not returning the best item when the last EQS test is a filter. - To do this, on the last test if we know it's just a filter and eventually we will use the first item that passes the test, then we sort prior to filtering. Made the filter and score test types display "Filter Only" & "Score Only" CL#2278111 Improved EQS Dot test "Description Title" to display "Absolute" and " 2D" as appropriate. CL#2278115 Added "Random" EQS test, which can be used for adding a random value to items. Potentially needed for hunting EQS query Phil is working on, and should be useful for other cases as well. CL#2278286 Fixes crash when trying to use the VisLog due to a spelling correction made in CL 2276628. CL#2281762 Moved VLOG in Vlog Redirect function to avoid ensure - Ensure was caused because we were trying to log to a redirect when the redirect hadn't be set yet CL#2282248 Fixed EQS "Random" test to work with ANY query item type, not just VectorBase item types. CL#2282639 Enhanced debug information data for single item in EQS Debugger (GameplayDebugger feature) #ue4 - Fixed few compilation issues with disabled USE_EQS_DEBUGGER flag - Fixed crash in EQSRenderingComponent - Fixed EQS debug data for sorted EQS itesm (it's slower way to sort items but only with active USE_EQS_DEBUGGER flag) CL#2282678 fixed crash on reimporting static mesh without NavCollision data ttp# 345454 CL#2282919 Renamed BTTask_MoveDirectlyToward.bForceMoveToLocation to more clear bDisablePathUpdateOnGoalLocationChange #UE4 - also fixed a bug in FortBTTask_GameMoveDirectlyToward that was misusing that variable. This addressed TTP#343489 CL#2282927 Fixed paths rendering while using GameplayDebugger (client/server too) #Fortnite CL#2283374 Fixes crowd following AIs (ie. regular husks) trying to rotate in the direction of their CrowdAgentMoveDirection while falling or not moving (Fixes ttp 344776) CL#2283475 Comment/code refactor that occurred but wasn't saved prior to check in of CL 2283374 CL#2283644 #UE4 Fix various issues seen when changing graphics settings with r.detailmode causes all components to reregister Fix it so particle system components track if they were active when unregistering, reactivate on next register if true Fix it so character movement components don't throw away timestamp data on unregister, this broke networking entirely Fix it so single anim skeletal meshes restore state accross reinitializations CL#2283688 Make bPendingKillPending no longer a UProperty so it won't be serialized. Fixes TTPs 342221, 342634 CL#2283879 #UE4 Fix it so the scalability settings are correctly written to the user config file when saving settings, and are properly reset to in memory values when reset. Has been broken since they got refactored. CL#2284368 fixed crash on using blueprint-based EQS contexts in PIE CL#2284405 HotSpots auto expire #UE4 Also, Fortnite-specific: - made FortAIHotSpotManager the owner of hotspots spawning process - added support for having multiple hotspots assigned to one BuildingSMActor, one per approach vector CL#2285167 Fixed Fortnite client to match FriendsService API change for pending invites CL#2285650 #UE4: Allow JsonObjectConverter to convert Strings to FDateTime fields using ISO-8601 CL#2286127 fixed pathfinding eqs test CL#2286208 fixed EQS tests reverting to Score Only settings after reopening editor ttp# 345719 CL#2286296 Game Invites work in Fortnite again Fixed game to match a backend API change CL#2286378 Removing TickAnim from InitAnim as that seems unnecessary and should avoid if we can. CL#2286408 - TTP#345476 Slate: Fixed MenuPlacement_AboveAnchor not being respected. CL#2286777 Fixed bug in GameplayDebuggingComponent which would cause debug display of EQS queries sharing the same name never to update after the initial query of a certain name is made. (In Fortnite, Goal Manager queries all have the same name, and the data would never update. In fact, even choosing a second actor would not clear out the data from the earlier actor, because they weren't updating data when the Timestamp updated.) CL#2289211 Fix for TTP #345752 "CRASH: DEDICATED SERVER: ToggleAILogging with a gate active causes a server crash" CL#2289279 LatentActionManager: value from iterator (over ObjectToActionListMap) was invalidated, when ObjectToActionListMap was changed. Unique Ptr should be used instead of SharedPtr, but UniquePtr is currently not compatible with TMap. CL#2289897 Fixes flying AIs (like the Taker) trying to move their feet to their destination, causing them to float higher than they should be. CL#2290041 Fix a number of properties in the Action_Move hierarchy that aren't exposed and therefore aren't duplicated when we duplicate Pawn Actions. CL#2290210 #UE4 Fix it so UEngine::ShutdownWorldNetDriver shuts down all net drivers associated with a world and not just a primary one. Fixes a crash when transferring maps with an active beacon net driver. Also fix issue where UEngine::ShutdownAllNetDrivers would miss some net drivers due to indexes being removed - Duplicating actions occurs as part of adding a Pawn Action Sequence comprised of multiple Pawn Actions. The bug causes undesired behavior because the properties that were set on the initial Pawn Action are not carried over to the duplicate. - We will continue to use the feet location as the origin of the Actor for determining requested velocity with walking AIs, but use the Actor's location as the origin for non-walking AIs CL#2290255 #UE4 Fix to previous netdriver checkin, only kill world net drivers if the world is actively set, idle net drivers are fine and needed for beacons to work properly CL#2290585 Fixed some PawnActions' bool properties not being marked as UPROPERTIES #UE4 It was resulting in copied actions loosing parts of its configuration. Also: - added a parameter to PawnAction_Move to controll "finish on overlap" path following behavior CL#2290675 Extended GameplayDebugger view in Simulation. I added a way to switch debug views, to have all functionality from PIE. #ue4 CL#2290778 fixed invalid nav nodes in paths after offseting CL#2290784 moved pathfollowing's reachability test out of FollowPathSegment function (it's supposed to handle only velocity calculations), agent will always use feet location for moving on path segment CL#2292104 Fixes for GameplayDebugger, it mostly fixes activation in different configurations (PIE, standalone, client-server, etc.). CL#2292198 Fixed issues related to NavMesh rendering and EQS query switching for GameplayDebugger. #ue4 CL#2292766 Fixed crash if touch event without valid MovieStreamer CL#2292967 GameplayDebuggingComponent now tries to pick the correct nav-mesh for the selected actor, rather than always displaying the default nav-mesh. NOTE: If you switch from one actor to another with nav-agent properties that are associated with different nav-meshes, it may continue to display the original nav-mesh for a while until it needs to update the position where the nav-mesh should display. CL#2293116 #UE4 #HTTP: Make LibCurl reuse connections by default on windows/android to mirror the change in CL# 2025870. Also added [Networking]UseLibCurl as an option to have LibCurl get used in addition to command line. CL#2293217 Added suffix override to allow StagingInfo instances without platform in the staging path This is to handle where platform is already in each build product instead of as a root dir, eg. \\WindowsClient instead of \\Windows\\WindowsClient CL#2293263 #UE4: Make JsonObjectConverter skip null values in arrays and structs (this is consistent with skipping missing keys) CL#2293534 fixed parent node usage in navigation octree (navmesh stays unchanged after deleting an actor) CL#2293536 fixed updating parent chain in navoctree after removing last attached node CL#2293543 changed navigation octree parent map to use weak object pointers (merged from main) CL#2293952 Changes/improvements to curl http module: - Properly get bUseCurl from a configuration file. - Do less work when creating requests (checking commandline settings moved to CurlHttpManager). - Do not init/shutdown unless actually used. CL#2294062 Added virtual function OnCharacterStuckInGeometry for Characters that get stuck in geometry to CharacterMovementComponent - Allows subclasses to define behavior when this occurs - Comment states that this only will be called when the character is walking [CL 2305577 by Bob Tellez in Main branch]
2014-09-22 10:33:39 -04:00
#if WITH_RECAST
ARecastNavMesh* GetNavData();
#endif
protected:
virtual void CollectPathData();
virtual void CollectBasicData();
virtual void CollectBehaviorTreeData();
virtual void CollectBasicMovementData(APawn* MyPawn);
virtual void CollectBasicPathData(APawn* MyPawn);
virtual void CollectBasicBehaviorData(APawn* MyPawn);
virtual void CollectBasicAbilityData(APawn* MyPawn);
virtual void CollectBasicAnimationData(APawn* MyPawn);
FNavPathWeakPtr CurrentPath;
float LastStoredPathTimeStamp;
uint32 bEnabledTargetSelection : 1;
#if WITH_EDITOR
uint32 bWasSelectedInEditor : 1;
#endif
float NextTargrtSelectionTime;
/** navmesh data passed to rendering component */
FBox NavMeshBounds;
TWeakObjectPtr<APlayerController> PlayerOwner;
Merging using UE4-Fortnite-To-UE4 from CL 2261973 Includes the following engine-level changes (among others; biggest change is enabling world assets by default): CL 2252857 added dynamic allocations for path finding, removed hardcoded limit of 128 polys in path corridor CL 2256142 Added support for native arrays in JSON object converter. - Permissive in treating arrays of size 1 and scalars as equivalent - Excess elements in JSON are ignored. Serialization succeeds but a warning is logged CL 2256073 Fixed a bug in ARecastNavMesh::BatchRaycast resulting in NaN hit locations CL 2253797 #UE4 More aggressively setting RF_Public and RF_Standalone flags on maps and ensuring world names match package names. This is necessary because umaps are currently being managed outside of the content browser and it is causing a few issues. Also, packages containing maps now synthesize asset data when the package contains absolutely no asset data (probably because the UWorld in it was not RF_Public at the time it was saved due to a previous bug). CL 2258142 #UE4 Added a GC during map load that reclaims memory allocated during load/init. This is needed to finish the load on low-memory devices in games that allocate more memory after load. CL 2247003 Added homing to ProjectileMovementComponent - Homing requires both a bool and a target component to be set, the strength is determined by a customizable variable - Both homing and gravity are now applied in the new virtual function "CalculateAcceleration" CL 2247249 Moved the homing modification to acceleration occur in a separate function specifically for homing CL 2257043 - Guard net dormancy calls against executing on clients, based on thread with DaveR and JohnP; This particular case was the result of an intentionally client-authoritative actor calling the dormancy functions via inheritance CL 2245629 #UE4 - fixed json TryGetNumber to round negatives appropriately CL 2255312 #UE4 Enabling World Assets by default. CL 2260956 Analytics ET now loads HTTP at StartupModule so the module will be available during ShutdownModule to flush events CL 2245571 GenericTeamAgentInterface can now retrieve attitude of an agent towards a given actor #UE4 - Made PerceptionSystem's sight sense take advantage of that CL 2246897 Fixed perception listeners not being removed from the PerceptionSystem on Owner's end play #UE4 - addresses TTP#343392 CL 2260634 added more debug data for NaN in crowd simulation CL 2248387 Added possibility to debug multiple EQS queries with GameplayDebugger. #ue4 Fixed network replication from bandwidth point of view for data in GameplayDebugger. #ue4 CL 2253281 Added additional information to the visual logger for UBTCompositeNode::DoDecoratorsAllowExecution - We now keep track of whether a decorator allows execution, in addition to the existing log for not allowing execution CL 2255310 #UE4 The world browser module now listens to WorldAdded/WorldDestroyed events instead of WorldInit/WorldCleanup events. Worlds can be initialized without being the editor world and this handles that case. CL 2258256 #UE4 Replacing the SOpenLevelDialog with a new generic SAssetDialog. This dialog will be used as a generic Open or Save As dialog for assets. [CL 2266822 by Billy Bramer in Main branch]
2014-08-21 20:30:51 -04:00
int32 CurrentEQSIndex;
TSharedPtr<FEnvQueryInstance> CachedQueryInstance;
public:
static FName DefaultComponentName;
static FOnDebuggingTargetChanged OnDebuggingTargetChangedDelegate;
};