Files

312 lines
11 KiB
C++
Raw Permalink Normal View History

// Copyright Epic Games, Inc. All Rights Reserved.
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3967517) #rb none #lockdown Nick.Penwarden #rnx ============================ MAJOR FEATURES & CHANGES ============================ Change 3804281 by Fred.Kimberley Improve contrast on watches in blueprints. Change 3804322 by Fred.Kimberley First pass at adding a watch window for blueprint debugging. Change 3804737 by mason.seay Added some Descriptions to tests that didn't have any, and fixed some typos Change 3806103 by mason.seay Moved and Renamed Timers test map and content appropriately Change 3806164 by Fred.Kimberley Add missing property types to GetDebugInfoInternal. #jira UE-53355 Change 3806617 by Dan.Oconnor Function Terminator (and derived types) now use FMemberReference instead of a UClass/FName pair. This fixes various bugs when resolving the UFunction referenced by the function terminator #jira UE-31754, UE-42431, UE-53315, UE-53172 Change 3808541 by Fred.Kimberley Add support for redirecting user defined enums. This is in response to the following UDN thread: https://udn.unrealengine.com/questions/404141/is-is-possible-to-create-a-redirector-from-a-bluep.html Change 3808565 by mason.seay Added a few more struct tests Change 3809840 by mason.seay Renamed CharacterMovement.umap to CharacterCollision. Fixed up content to reflect this change. Change 3809847 by mason.seay Added Object Timer tests. Fixed up existing timer test to remove delay dependency Change 3811704 by Ben.Zeigler Fix issue where identical enum redirects registered to different initial names would throw an incorrect error, it's fine if the value change maps are identical Change 3811946 by Ben.Zeigler #jira UE-53511 Fix it so it is possible to set a user defined struct value back to it's default. The UDS hack in PropertyValueToString is no longer needed, but this could affect some other user struct editor operations Change 3812061 by Dan.Oconnor Stepping over or in to nodes that are expanded at compile time (e.g. event nodes, spawn actor nodes) no longer requires multiple 'steps' #jira UE-52854 Change 3812259 by Dan.Oconnor Fix asset broken by removal of an unkown enum #jira UE-51419 Change 3812904 by Ben.Zeigler Make ResolveRedirects on StreamableManager public as it can be used to validate things Change 3812958 by Ben.Zeigler #jira UE-52977 Fix crashes when binding blueprint editor commands to keys and using from invalid contexts Change 3812975 by Mieszko.Zielinski Added contraptions to catch a rare eidtor-time EQS crash #UE4 #jira UE-53468 Change 3818530 by Phillip.Kavan Fix incorrect access to nested instanced subobjects in nativized Blueprint ctor codegen. Change summary: - Modified FEmitDefaultValueHelper::HandleInstancedSubobject() to properly reference the outer and check ptr validity when creating/obtaining nested default subobjects. - Modified FEmitDefaultValueHelper::HandleClassSubobject() to better guard against code generation based on an invalid local variable name. #jira UE-52167 Change 3819733 by Mieszko.Zielinski Marked UAISenseConfig_Blueprint and UAISense_Blueprint as hidedropdown #UE4 #jira UE-15089 Change 3821776 by Marc.Audy Remove redundent code in SpawnActorFromClass that already exists in ConstructObjectFromClass parent class Change 3823851 by mason.seay Moved and renamed blueprints used for Object Reference testing Change 3824165 by Phillip.Kavan Ensure that subobject class types are constructed prior to accessing a subobject CDO in a nativized Blueprint class's generated ctor at runtime. Change summary: - Modified FFakeImportTableHelper to tag subobject class types as a preload dependency of the outer converted Blueprint class type and not of the CDO. #jira UE-53111 Change 3830309 by mason.seay Created Literal Gameplay Tag Container test Change 3830562 by Phillip.Kavan Blueprint nativization bug fixes (reviewed/taken from PR). Change summary: - Modified FSafeContextScopedEmitter::ValidationChain() to ensure that generated code calls the global IsValid() utility function on objects. - Modified FBlueprintCompilerCppBackend::EmitCreateArrayStatement() to generate a proper cast on MakeArray node inputs for enum class types. - Modified FBlueprintCompilerCppBackend::EnimCallStatementInner() to more correctly identify an interface function call site. - Modified FEmitHelper::GenerateAutomaticCast() to properly handle automatic casts of enum arrays. - (Modified from PR source) Added new FComponentDataUtils statics to consolidate custom init code generation for converted special-case component types (e.g. BodyInstance). Ties native component DSOs to the same pre/post as converted non-native component templates around the OuterGenerate() loop. - Modified FExposeOnSpawnValidator::IsSupported() to include CPT_SoftObjectReference property types. - Modified UBlueprintGeneratedClass::CheckAndApplyComponentTemplateOverrides() to no longer break out of the loop before finding additional ICH override record matches. #4202 #jira UE-52188 Change 3830579 by Fred.Kimberley Add support for turning off multiple watches at once in the watch window. #jira UE-53852 Change 3836047 by Zak.Middleton #ue4 - Dev test maps for overlaps perf tests. Change 3836768 by Phillip.Kavan Fix for a build failure that could occur with Blueprint nativization enabled and EDL disabled. This was a regression introduced in 4.18. Change summary: - Modified FEmitDefaultValueHelper::AddStaticFunctionsForDependencies() to emit the correct signature for constructing FBlueprintDependencyData elements when the EDL boot time optimization is disabled. #jira UE-53908 Change 3838085 by mason.seay Functional tests around basic blueprint functions Change 3840489 by Ben.Zeigler #jira UE-31662 Fix regression with renaming parent inherited function. It was not correctly searching the parent's skeleton class during the child's recompile so it was erroneously detecting the parent function as missing Change 3840648 by mason.seay Updated Descriptions on tests Change 3842914 by Ben.Zeigler Improve comments around stremable handle cancel/release Change 3850413 by Ben.Zeigler Fix asset registry memory reporting, track some newer fields and correctly report the state size instead of static size twice Copy of CL #3849610 Change 3850426 by Ben.Zeigler Reduce asset registry memory in cooked build by stripping out searchable names and empty dependency nodes by default Add option to strip dependency data for asset data with no tags, this was always true before but isn't necessarily safe Copy of CL #3850389 Change 3853449 by Phillip.Kavan Fix a scoping issue for local instanced subobject references in nativized Blueprint C++ code. Also, don't emit redundant assignment statements for instanced subobject reference properties. Change summary: - Consolidated FComponentDataUtils into FDefaultSubobjectData and extended FNonativeComponentData from it in order to handle both native & non-native DSO initialization codegen through a more common interface. - Exposed FEmitDefaultValueHelper::HandleInstancedSubobject() as a public API and added a 'SubobjectData' parameter to allow initialization codegen to be deferred until after all default subobjects have been mapped to local variables within the current scope. - Modified FEmitDefaultValueHelper::GenerateConstructor() to first map all default subobjects to local variables and then emit any delta initialization code for property values. - Modified FEmitDefaultValueHelper::HandleSpecialTypes() to return an empty string for an instanced reference to a default subobject. This allows us to avoid emitting initialization statements to unnecessarily reassign instances back to the same property. - Modified FEmitDefaultValueHelper::InnerGenerate() to better handle instanced references to default subobjects, ensuring that we don't emit unnecessary assignment statements and array initialization code to the converted class constructor in C++. - Fixed a few typos. #jira UE-53960 Change 3853465 by Phillip.Kavan Fix plugin module C++ source template to conform to recent public include path changes. Change 3857599 by Marc.Audy PR #4438: UE-54281: Make None a valid default value to select (Contributed by projectgheist) #jira UE-54281 #jira UE-54399 Change 3863259 by Zak.Middleton #ue4 - Save bandwidth for replicated characters by only replicating 4 byte timestamp value to clients if it's actually needed for Linear smoothing. Added option to always replicate the timestamp ("bNetworkAlwaysReplicateTransformUpdateTimestamp", default off), in case users still want this timestamp for some reason, or if smoothing mode changes dynamically and the server won't know. #jira UE-46293 Change 3863491 by Zak.Middleton #ue4 - Reduce network RPC overhead for players that are not moving. Added ClientNetSendMoveDeltaTimeStationary (default 12Hz) to supplement existing ClientNetSendMoveDeltaTime and ClientNetSendMoveDeltaTimeThrottled. UCharacterMovementComponent::GetClientNetSendDeltaTime() now uses this time if Acceleration and Velocity are zero, and the control rotation matches the last ack'd control rotation from the server. Also fixed up code default for ClientNetSendMoveDeltaTime to match default INI value. #jira UE-21264 Change 3865325 by Zak.Middleton #ue4 - Fix static analysis warning about possible null PC pointer. #jira none Change 3869828 by Ben.Zeigler #jira UE-54786 Fix it so -cookonthefly cooperates with -iterate by writing out a development asset registry Change 3869969 by mason.seay Character Movement Functional Tests Change 3870099 by Mason.Seay Submitted asset deletes Change 3870105 by mason.seay Removed link to anim blueprint to fix errors Change 3870238 by mason.seay Test map for Async Loading in a Loop Change 3870479 by Ben.Zeigler Add code to check CoreRedirects for SoftObjectPaths when saving or resolving in the editor. This is a bit slow so we don't want to do it on load We don't have any good way to know the type of a path so I check both Object and Class redirectors, which will also pickup Module renames Change 3875224 by mason.seay Functional tests for Event BeginPlay execution order Change 3875409 by mason.seay Optimized and fixed up character movement tests (because a potential bug in FunctionalTestActor is always passing a test when it can fail) Change 3878947 by Mieszko.Zielinski CIS fixes #UE4 Change 3879000 by Mieszko.Zielinski More CIS fixes #UE4 Change 3879139 by Mieszko.Zielinski Even moar CIS fixes #UE4 Change 3879742 by mason.seay Added animation to Nativization Widget asset Change 3880198 by Zak.Middleton #ue4 - CanCrouchInCurrentState() returns false when character capsule is simulating physics. #jira UE-54875 github #4479 Change 3880266 by Zak.Middleton #ue4 - Optimize UpdateCharacterStateBeforeMovement() to do cheaper tests earlier (avoid CanCrouchInCurrentState() unless necessary, now that it tests IsSimulatingPhysics() which is not trivial). #jira UE-54875 Change 3881546 by Mieszko.Zielinski *.Build.cs files clean up - removed redundant dependencies from NavigationSystem and AIModule #UE4 Change 3881547 by Mieszko.Zielinski Removed a bunch of DEPRECATED functions from the new NavigationSystem module #UE4 Removed all deprecates prior 4.15 (picked this one because I do know some licencees are still using it). Change 3881742 by mason.seay Additional crouch test to cover UE-54875 Change 3881794 by Mieszko.Zielinski Fixed a bug in FVisualLoggerHelpers::GetCategories resulting in losing verbosity information #UE4 Change 3884503 by Mieszko.Zielinski Fixed TopDown code template to make it compile after navsys refactor #UE4 #jira UE-55039 Change 3884507 by Mieszko.Zielinski Switched ensures in UNavigationSystemV1:SimpleMoveToX to error-level logs #UE4 It's an error rather than a warning because the functions no longer do anything. Making it work would require a cyclic dependency between NavigationSystem and AIModule. #jira UE-55033 Change 3884594 by Mieszko.Zielinski Added a const FNavigationSystem::GetCurrent version #UE4 lack of it was causing KiteDemo to not compile. Change 3884602 by Mieszko.Zielinski Mac editor compilation fix #UE4 Change 3884615 by Mieszko.Zielinski Fixed FAIDataProviderValue::GetRawValuePtr not being accessible from outside of AIModule #UE4 Change 3885254 by Mieszko.Zielinski Guessfix for UE-55030 #UE4 The name of NavigationSystem module was put in wrong in the IMPLEMENT_MODULE macro #jira 55030 Change 3885286 by Mieszko.Zielinski Changed how NavigationSystem module includes DerivedDataCache module #UE4 #jira UE-55035 Change 3885492 by mason.seay Minor tweaks to animation Change 3885773 by mason.seay Resaving assets to clear out warning Change 3886433 by Mieszko.Zielinski Fixed TP_TopDownBP's player controller BP to not use deprecated nav functions #UE4 #jira UE-55108 Change 3886783 by Mieszko.Zielinski Removed silly inclusion of NavigationSystemTypes.h from NavigationSystemTypes.h #UE4 Change 3887019 by Mieszko.Zielinski Fixed accessing unchecked pointer in ANavigationData::OnNavAreaAdded #UE4 Change 3891031 by Mieszko.Zielinski Fixed missing includes in NavigationSystem.cpp #UE4 Change 3891037 by Mieszko.Zielinski ContentEample's navigation fix #UE4 #jira UE-55109 Change 3891044 by Mieszko.Zielinski PR #4456: Fix bug in UAISense_Sight::OnListenerForgetsActor (Contributed by maxtunel) #UE4 Change 3891598 by mason.seay Resaving assets to clear out "empty engine version" spam Change 3891612 by mason.seay Fixed deprecated Set Text warnings Change 3893334 by Mieszko.Zielinski Fixed a bug in navmesh generation resulting in not removing layers that ended up empty after rebuilding #UE4 #jira UE-55041 Change 3893394 by Mieszko.Zielinski Fixed navmesh debug drawing to properly display octree elements with "per instance transforms" (like instanced SMs) #UE4 Also, added a more detailed debug drawing of navoctree contents (optional, but on by default). Change 3893395 by Mieszko.Zielinski Added a bit of code to navigation system's initialization that checks the enegine ini for sections refering to the moved navigation classes, and complain about it #UE4 The message is printed as an error-level log line and it says what should the offending section be renamed to. Change 3895563 by Dan.Oconnor Mirror 3895535 Append history from previous branches in source control history view #jira none Change 3896930 by Mieszko.Zielinski Added an option to tick navigation system while the game is paused #UE4 Controlled via NavigationSystemV1.bTickWhilePaused, ini- and ProjectSettings-configurable. #jira UE-39275 Change 3897554 by Mieszko.Zielinski Unified how NavMeshRenderingComponent draws navmesh and octree collision's polys #UE4 Change 3897556 by Mieszko.Zielinski Fixed what kind of nav tile bounds we're sending to nav-colliding elements when calling 'per-instance transform' delegate #UE4 #jira UE-45261 Change 3898064 by Mieszko.Zielinski Made SM Editor display AI-navigation-related whenever bHasNavigationData is set to true #UE4 #jira UE-50436 Change 3899004 by Mieszko.Zielinski Fixed UEnvQueryItemType_Actor::GetItemLocation and UEnvQueryItemType_Actor::GetItemRotation to return FAISystem::InvalidLocation and FAISystem::InvalidRotation respectively instead of '0' when hosted Actor ptr is null #UE4 Note for programmers: this changes the default behavior of this edge case. You might want to go through your code and check if you're comparing UEnvQueryItemType_Actor::GetItem*'s results to 0. Change 3901733 by Mieszko.Zielinski Made FEnvQueryInstance::PrepareContext implementations returning vectors and rotators ignore InvalidLocation and InvalidRotation (respectively) #UE4 Change 3901925 by Ben.Zeigler #jira UE-55395 Fix issue where the cooker could load asset registry caches made in -game that do not have dependency data, leading to broken cooks Change 3902166 by Marc.Audy Make ULevel::GetWorld final Change 3902749 by Ben.Zeigler Fix it so pressing refresh button in asset audit window actually refreshes the asset management database Change 3902763 by Ben.Zeigler #jira UE-55407 Fix it so editor tutorials are not cooked unless referenced, by correctly marking soft object paths imported from editor project settings as editor-only Change 3905578 by Phillip.Kavan The UX to add a new parameter on a Blueprint delegate is now at parity with Blueprint functions. #4392 #jira UE-53779 Change 3905848 by Phillip.Kavan First pass of the experimental Blueprint graph bookmarks feature. #jira UE-10052 Change 3906025 by Phillip.Kavan CIS fix. Change 3906195 by Phillip.Kavan Add missing icon file. Change 3906356 by Phillip.Kavan Moved Blueprint bookmarks enable flag into EditorExperimentalSettings for consistency with other options. Change 3910628 by Ben.Zeigler Partial fix for UE-55363, this allows references to ObjectRedirectors to be switched from parent class to a child class on load as this should always be safe This does not actually fix UE-55363 because that case is changing from UMaterial to UMaterialInstanceConstant, and those are siblings instead of parent/child Change 3912470 by Ben.Zeigler #jira UE-55586 Fix issue with saving redirected soft object paths where the export sort could accidentally cause the parent CDO to get modified between name tagging and writing exports, which is unsafe because due to delta serialization it would try to write names that were not previously tagged Change 3913045 by Marc.Audy Fix issues where recursion in to child actors wasn't being handled correctly Change 3913398 by Fred.Kimberley Fixes a misspelled name for one of the classes in the ability system. PR #4430: Fixed spelling of FGameplayAbilityInputBinds. (Contributed by IntegralLee) #github #jira UE-54327 Change 3918016 by Fred.Kimberley Ensure AllocGameplayEffectContext is being used in all cases where FGameplayeEffectContext is being created. #jira UE-52668 PR #4250: Only create FGameplayEffectContext via AbilitySystemGlobals::.AllocGameplayEffectContext (Contributed by slonopotamus) #github Change 3924653 by Mieszko.Zielinski Fixed LoadEngineClass local to UnrealEngine.cpp to check class redirects before falling back to default class instance #UE4 #jira UE-55378 Change 3925614 by Phillip.Kavan Fix ForEachEnum node to skip over hidden enum values in new placements by default. Change summary: - Added FKismetNodeHelperLibrary::ShouldHideEnumeratorIndex() as an internal-only Blueprint node support API. - Modified FForExpandNodeHelper::AllocateDefaultPins() to add a "Skip Hidden" input pin (advanced). Pin default value is false. - Added a UK2Node_ForEachElementInEnum::PostPlacedNewNode() override to set the default value of the "Skip Hidden" input pin to 'true' for all new node placements. - Modified UK2Node_ForEachElementInEnum::ExpandNode() to include additional expansion logic based on the "Skip Hidden" input pin. For new placements (i.e. when the pin defaults to 'true'), an intermediate branch node will now be inserted into the compiled execution sequence to test for "hidden" metadata on the value before executing the loop body. If the input pin is linked, another intermediate branch will be inserted into the execution sequence prior to the "hidden" metadata test. All existing placements of the node will remain as-is after compilation (i.e. no additional intermediate branch nodes will be included in the expansion). #jira UE-34563 Change 3925649 by Marc.Audy Fix up issue post merge from Main with navigation system refactor Change 3926293 by Phillip.Kavan Temp fix to unblock CIS. #jira UE-34563 Change 3926523 by Marc.Audy Ensure that a renamed Actor is in the correct Actors array #jira UE-46718 Change 3928732 by Fred.Kimberley Unshelved from pending changelist '3793298': #jira UE-53136 PR #4287: virtual additions for AttributeSet extendability (Contributed by TWIDan) #github Change 3928780 by Marc.Audy PR #4309: The display names of the functions. (Contributed by SertacOgan) #jira UE-53334 Change 3929730 by Joseph.Wysosky Submitting test assets for the new Blueprint Structure test cases Change 3931919 by Joseph.Wysosky Deleting BasicStructure asset to rest MemberVariables back to default settings Change 3931922 by Joseph.Wysosky Adding BasicStructure test asset back with default members Change 3932083 by Phillip.Kavan Fix Compositing plugin source files to conform to updated relative include path specifications. - Encountered while testing Blueprint nativization of assets with dependencies on Composure/LensDistortion APIs. Change 3932196 by Dan.Oconnor Resetting a property to default now uses the same codepath as assigning the value from the slate control #jira UE-55909 Change 3932408 by Lukasz.Furman fixed behavior tree services attached to task nodes being sometimes recognized as root level #jira nope Change 3932808 by Marc.Audy PR #4083: Change to UK2Node_BaseAsyncTask to have pin tooltips on latent nodes (Contributed by dwrpayne) #jira UE-50871 Change 3934101 by Phillip.Kavan Revise ForEachEnum node expansion logic to exclude hidden values at compile time. Change summary: - Removed UKismetNodeHelperLibrary::ShouldHideEnumeratorIndex() (no longer in use). - Modified UK2Node_ForEachElementInEnum::ExpandNode() to include an enum switch node in the expansion, which will exclude hidden values when constructed. The additional expansion will occur if the enum type contains at least one hidden value. #jira UE-34563 Change 3934106 by Phillip.Kavan Mirrored 4.19 fixes to allow for EngineTest iteration w/ nativization enabled. Change summary: - Mirrored CLs 3876918, 3878968, 3883257, 3885566, 3912161 and 3920519. Change 3934116 by Phillip.Kavan UBT: Explicitly define the DEPRECATED_FORGAME macro only for non-engine modules. Change summary: - Modified UEBuildModule.SetupPrivateCompileEnvironment() to check the 'bTreatAsEngineModule' flag from the rules assembly rather than testing the module's build type. Change 3934382 by Phillip.Kavan Avoid inclusion of monolothic engine header files in nativized Blueprint codegen. Change 3936387 by Mieszko.Zielinski Added a flag to NavModifierComponent to control whether agent's height is being used while expadning modifier's bounds during navmesh generation #UE4 Change 3936905 by Ben.Marsh Disable IncludeTool warning for DEPRECATED_FORGAME macro; we expect this to be different for game modules. Change 3940537 by Marc.Audy Don't allow maps, sets, or arrays with an actor inner type in user defined structs to select an actor from the currently open level as default value. #jira UE-55938 Change 3940901 by Marc.Audy Properly name CVar global to reflect what it is for Change 3943043 by Marc.Audy Fix world context functions not being able to be used in CheatManager derived blueprints #jira UE-55787 Change 3943075 by Mieszko.Zielinski Moved path-following related delegats' interface from NavigationSystemBase over to a new IPathFollowingManagerInterface #UE4 Change 3943089 by Mieszko.Zielinski Fixed how WorldSettings.NavigationSystemConfig gets created #UE4 Made it so that there's always a NavigationSystemConfig instance present, but added a 'Null' config - this was required due to issues with creation/serialization of instanced subobjects. The change required adding copying constructors to FNavAgentProperties and FNavDataConfig. Also, fixed FNavAgentProperties.IsEquivalent to be symetrical. Change 3943225 by Marc.Audy Fix spelling of Implements Change 3950813 by Marc.Audy Include owner in attachment mismatch ensure #jira UE-56148 Change 3950996 by Marc.Audy Fix cases where bit packed properties used the entire byte not just the bit when interacting with boolean arrays #jira UE-55482 Change 3952086 by Marc.Audy PR #4483: Add Missing Radial Damage Multicast Delegate (Contributed by error454) #jira UE-54974 Change 3952720 by Marc.Audy PR #4575: Check if *Pawn* is a null Pointer (Contributed by dani9bma) #jira UE-56248 Change 3952804 by Richard.Hinckley Changes to BP API export commandlet to support better plugin exporting. Contributed by Harry Wang of Google. Change 3952962 by Marc.Audy UHT now validates that ExpandEnumAsExecs references a valid parameter to the function. #jira UE-49610 Change 3952977 by Phillip.Kavan Fix EDL cycle at load time in nativized cooked builds when a circular dependency exists between converted and unconverted assets. Change summary: - Added FGatherConvertedClassDependencies::MarkUnconvertedClassAsNecessary(). - Modified FFindAssetsToInclude::MaybeIncludeObjectAsDependency() to mark unconverted BPGCs (e.g. DOBPs) as necessary for conversion when the potential for a circular dependency exists so that we generate stub wrappers rather than depend on them directly. - Fixed a few typos in existing API names. #jira UE-48233 Change 3953658 by Marc.Audy (4.19.1) Fix inserting a reroute node causing connections to break on a GetClassDefaults node #jira UE-56270 Change 3954727 by Marc.Audy Add friendly name to custom version mismatch message Change 3954906 by Marc.Audy (4.19.1) Fix crash when undoing changes related to reroute nodes connected to a GetClassDefaults node #jira UE-56313 Change 3954997 by Marc.Audy Ensure and return null if GetOuter<WithinClass> is called on a CDO for uclasses declared as within another so we don't get a UPackage c-style cast to the expected outer type Change 3955091 by Marc.Audy Do not register subcomponents that are not auto register #jira UE-52878 Change 3955943 by Marc.Audy Make AbilitySystemComponent pass parameters by const& instead of ref as no state is being changed Change 3956185 by Zak.Middleton #ue4 - Fix Characters using scoped movement updates (the default) not visually rotating when rotated at small rates at high framerate. This was caused by FScopedMovementUpdate::IsTransformDirty() using a larger FTransform comparison tolerance than USceneComponent::UpdateComponentToWorldWithParent(). #jira none Change 3958102 by Marc.Audy Clean out dead code path from k2node_select Select node now resets pins to wildcard if none of the pins are in use Change 3958113 by Lukasz.Furman added OnSearchStart call to root level behavior tree services #jira UE-56257 Change 3958361 by Marc.Audy Fix literal input pins on select being set to wildcard during compilation Change 3961148 by Dan.Oconnor Mirror 3961139 from Release 4.19 Fix for placeholder objects being left behind when loading certain UMG assets - this could causea crash when loading UMG assets #jira UE-55742 Change 3961640 by Marc.Audy Select node now displays Add Pin button Undo of changing select node index type now works correctly. Connections to option pins now maintained across change of index pin type #jira UE-20742 Change 3962262 by Marc.Audy Display "Object Reference" instead of "Object Object Reference" and "Soft Object Reference" instead of "Object Soft Object Reference" Change 3962795 by Phillip.Kavan Fix for a crash when cooking with Blueprint nativization enabled after encountering a nested instanced editor-only default subobject inherited from a native C++ base class. - Mirrored from //UE4/Release-4.19 (3962782) #jira UE-56316 Change 3962991 by Marc.Audy Modify Negate/Increment/Decrement Int/Float so that the output is always the desired result even if a non-mutable pin is passed in. Note that this can mean the result being returned and the value of the pin passed in if queried again will not be the same (in the case of pure nodes). #jira UE-54807 Change 3963114 by Marc.Audy Fix ensures/crash as a result of UClass expecting to be able to access the UPackage of CDOs via the GetOuterUPackage call. Change 3963427 by Marc.Audy Fix initialization order Initialize bUseBackwardsCompatForEmptyAutogeneratedValue Change 3963781 by Marc.Audy Fix without editor compiles Change 3964576 by Marc.Audy PR #4599: : Working category for timelines (Contributed by projectgheist) #jira UE-56460 #jira UE-26053 Change 3964782 by Dan.Oconnor Mirror 3964772 from Release 4.19 Fix crash when force deleting certain blueprints, we can only check for authoritativeness while reinstancing #jira UE-56447 Change 3965156 by Mieszko.Zielinski PR #4592: Visual Logger optimization to fix rapid FPS drop when many items are hidden (Contributed by tstaples) #jira UE-56435 Change 3965173 by Marc.Audy (4.19.1) Fix incorrectly switching a cooling down tick to be an enabled tick when marking it enabled. #jira UE-56431 Change 3966117 by Marc.Audy Fix select nodes inside macros using wildcard array inputs having issues resolving type. #jira UE-56484 Change 3878901 by Mieszko.Zielinski NavigationSystem's code refactored out of the engine and into a new separate module #UE4 The CL contains required changes to all of our internal projects. Fortnite and Paragon have been tested, while the rest have been only compiled. Change 3879409 by Mieszko.Zielinski Further fallout fixes after ripping out NavigationSystem out of the engine #UE4 - Fixed bad ini redirects (had NavigationSystem.NavigationSystem instead of NavigationSystem.NavigationSystemV1) - Added missing FNavigationSystem::GetDefaultNavDataClass binding (resulting in QAGame's func tests failing) Change 3897655 by Ben.Zeigler #jira UE-55211 Fix it so literal soft object pins on blueprint nodes get correctly cooked/referenced It now sets the thread context to skip internal serialize and calls the archive's serialize function instead of bypassing it, which allows it to pick up references Change 3962780 by Marc.Audy When preventing a split pin from being orphaned, all sub pins must also be prevented. #jira UE-56328 Repack members of UEdGraphPin to avoid wasted space (saves 16bytes) [CL 3967553 by Marc Audy in Main branch]
2018-03-27 14:27:07 -04:00
#include "NavigationOctree.h"
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3209340 on 2016/11/23 by Ben.Marsh Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h. Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms. * Every header now includes everything it needs to compile. * There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first. * There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h. * Every .cpp file includes its matching .h file first. * This helps validate that each header is including everything it needs to compile. * No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more. * You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there. * There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible. * No engine code explicitly includes a precompiled header any more. * We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies. * PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files. Tool used to generate this transform is at Engine\Source\Programs\IncludeTool. [CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
#include "AI/Navigation/NavRelevantInterface.h"
#include "Interfaces/Interface_AsyncCompilation.h"
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3967517) #rb none #lockdown Nick.Penwarden #rnx ============================ MAJOR FEATURES & CHANGES ============================ Change 3804281 by Fred.Kimberley Improve contrast on watches in blueprints. Change 3804322 by Fred.Kimberley First pass at adding a watch window for blueprint debugging. Change 3804737 by mason.seay Added some Descriptions to tests that didn't have any, and fixed some typos Change 3806103 by mason.seay Moved and Renamed Timers test map and content appropriately Change 3806164 by Fred.Kimberley Add missing property types to GetDebugInfoInternal. #jira UE-53355 Change 3806617 by Dan.Oconnor Function Terminator (and derived types) now use FMemberReference instead of a UClass/FName pair. This fixes various bugs when resolving the UFunction referenced by the function terminator #jira UE-31754, UE-42431, UE-53315, UE-53172 Change 3808541 by Fred.Kimberley Add support for redirecting user defined enums. This is in response to the following UDN thread: https://udn.unrealengine.com/questions/404141/is-is-possible-to-create-a-redirector-from-a-bluep.html Change 3808565 by mason.seay Added a few more struct tests Change 3809840 by mason.seay Renamed CharacterMovement.umap to CharacterCollision. Fixed up content to reflect this change. Change 3809847 by mason.seay Added Object Timer tests. Fixed up existing timer test to remove delay dependency Change 3811704 by Ben.Zeigler Fix issue where identical enum redirects registered to different initial names would throw an incorrect error, it's fine if the value change maps are identical Change 3811946 by Ben.Zeigler #jira UE-53511 Fix it so it is possible to set a user defined struct value back to it's default. The UDS hack in PropertyValueToString is no longer needed, but this could affect some other user struct editor operations Change 3812061 by Dan.Oconnor Stepping over or in to nodes that are expanded at compile time (e.g. event nodes, spawn actor nodes) no longer requires multiple 'steps' #jira UE-52854 Change 3812259 by Dan.Oconnor Fix asset broken by removal of an unkown enum #jira UE-51419 Change 3812904 by Ben.Zeigler Make ResolveRedirects on StreamableManager public as it can be used to validate things Change 3812958 by Ben.Zeigler #jira UE-52977 Fix crashes when binding blueprint editor commands to keys and using from invalid contexts Change 3812975 by Mieszko.Zielinski Added contraptions to catch a rare eidtor-time EQS crash #UE4 #jira UE-53468 Change 3818530 by Phillip.Kavan Fix incorrect access to nested instanced subobjects in nativized Blueprint ctor codegen. Change summary: - Modified FEmitDefaultValueHelper::HandleInstancedSubobject() to properly reference the outer and check ptr validity when creating/obtaining nested default subobjects. - Modified FEmitDefaultValueHelper::HandleClassSubobject() to better guard against code generation based on an invalid local variable name. #jira UE-52167 Change 3819733 by Mieszko.Zielinski Marked UAISenseConfig_Blueprint and UAISense_Blueprint as hidedropdown #UE4 #jira UE-15089 Change 3821776 by Marc.Audy Remove redundent code in SpawnActorFromClass that already exists in ConstructObjectFromClass parent class Change 3823851 by mason.seay Moved and renamed blueprints used for Object Reference testing Change 3824165 by Phillip.Kavan Ensure that subobject class types are constructed prior to accessing a subobject CDO in a nativized Blueprint class's generated ctor at runtime. Change summary: - Modified FFakeImportTableHelper to tag subobject class types as a preload dependency of the outer converted Blueprint class type and not of the CDO. #jira UE-53111 Change 3830309 by mason.seay Created Literal Gameplay Tag Container test Change 3830562 by Phillip.Kavan Blueprint nativization bug fixes (reviewed/taken from PR). Change summary: - Modified FSafeContextScopedEmitter::ValidationChain() to ensure that generated code calls the global IsValid() utility function on objects. - Modified FBlueprintCompilerCppBackend::EmitCreateArrayStatement() to generate a proper cast on MakeArray node inputs for enum class types. - Modified FBlueprintCompilerCppBackend::EnimCallStatementInner() to more correctly identify an interface function call site. - Modified FEmitHelper::GenerateAutomaticCast() to properly handle automatic casts of enum arrays. - (Modified from PR source) Added new FComponentDataUtils statics to consolidate custom init code generation for converted special-case component types (e.g. BodyInstance). Ties native component DSOs to the same pre/post as converted non-native component templates around the OuterGenerate() loop. - Modified FExposeOnSpawnValidator::IsSupported() to include CPT_SoftObjectReference property types. - Modified UBlueprintGeneratedClass::CheckAndApplyComponentTemplateOverrides() to no longer break out of the loop before finding additional ICH override record matches. #4202 #jira UE-52188 Change 3830579 by Fred.Kimberley Add support for turning off multiple watches at once in the watch window. #jira UE-53852 Change 3836047 by Zak.Middleton #ue4 - Dev test maps for overlaps perf tests. Change 3836768 by Phillip.Kavan Fix for a build failure that could occur with Blueprint nativization enabled and EDL disabled. This was a regression introduced in 4.18. Change summary: - Modified FEmitDefaultValueHelper::AddStaticFunctionsForDependencies() to emit the correct signature for constructing FBlueprintDependencyData elements when the EDL boot time optimization is disabled. #jira UE-53908 Change 3838085 by mason.seay Functional tests around basic blueprint functions Change 3840489 by Ben.Zeigler #jira UE-31662 Fix regression with renaming parent inherited function. It was not correctly searching the parent's skeleton class during the child's recompile so it was erroneously detecting the parent function as missing Change 3840648 by mason.seay Updated Descriptions on tests Change 3842914 by Ben.Zeigler Improve comments around stremable handle cancel/release Change 3850413 by Ben.Zeigler Fix asset registry memory reporting, track some newer fields and correctly report the state size instead of static size twice Copy of CL #3849610 Change 3850426 by Ben.Zeigler Reduce asset registry memory in cooked build by stripping out searchable names and empty dependency nodes by default Add option to strip dependency data for asset data with no tags, this was always true before but isn't necessarily safe Copy of CL #3850389 Change 3853449 by Phillip.Kavan Fix a scoping issue for local instanced subobject references in nativized Blueprint C++ code. Also, don't emit redundant assignment statements for instanced subobject reference properties. Change summary: - Consolidated FComponentDataUtils into FDefaultSubobjectData and extended FNonativeComponentData from it in order to handle both native & non-native DSO initialization codegen through a more common interface. - Exposed FEmitDefaultValueHelper::HandleInstancedSubobject() as a public API and added a 'SubobjectData' parameter to allow initialization codegen to be deferred until after all default subobjects have been mapped to local variables within the current scope. - Modified FEmitDefaultValueHelper::GenerateConstructor() to first map all default subobjects to local variables and then emit any delta initialization code for property values. - Modified FEmitDefaultValueHelper::HandleSpecialTypes() to return an empty string for an instanced reference to a default subobject. This allows us to avoid emitting initialization statements to unnecessarily reassign instances back to the same property. - Modified FEmitDefaultValueHelper::InnerGenerate() to better handle instanced references to default subobjects, ensuring that we don't emit unnecessary assignment statements and array initialization code to the converted class constructor in C++. - Fixed a few typos. #jira UE-53960 Change 3853465 by Phillip.Kavan Fix plugin module C++ source template to conform to recent public include path changes. Change 3857599 by Marc.Audy PR #4438: UE-54281: Make None a valid default value to select (Contributed by projectgheist) #jira UE-54281 #jira UE-54399 Change 3863259 by Zak.Middleton #ue4 - Save bandwidth for replicated characters by only replicating 4 byte timestamp value to clients if it's actually needed for Linear smoothing. Added option to always replicate the timestamp ("bNetworkAlwaysReplicateTransformUpdateTimestamp", default off), in case users still want this timestamp for some reason, or if smoothing mode changes dynamically and the server won't know. #jira UE-46293 Change 3863491 by Zak.Middleton #ue4 - Reduce network RPC overhead for players that are not moving. Added ClientNetSendMoveDeltaTimeStationary (default 12Hz) to supplement existing ClientNetSendMoveDeltaTime and ClientNetSendMoveDeltaTimeThrottled. UCharacterMovementComponent::GetClientNetSendDeltaTime() now uses this time if Acceleration and Velocity are zero, and the control rotation matches the last ack'd control rotation from the server. Also fixed up code default for ClientNetSendMoveDeltaTime to match default INI value. #jira UE-21264 Change 3865325 by Zak.Middleton #ue4 - Fix static analysis warning about possible null PC pointer. #jira none Change 3869828 by Ben.Zeigler #jira UE-54786 Fix it so -cookonthefly cooperates with -iterate by writing out a development asset registry Change 3869969 by mason.seay Character Movement Functional Tests Change 3870099 by Mason.Seay Submitted asset deletes Change 3870105 by mason.seay Removed link to anim blueprint to fix errors Change 3870238 by mason.seay Test map for Async Loading in a Loop Change 3870479 by Ben.Zeigler Add code to check CoreRedirects for SoftObjectPaths when saving or resolving in the editor. This is a bit slow so we don't want to do it on load We don't have any good way to know the type of a path so I check both Object and Class redirectors, which will also pickup Module renames Change 3875224 by mason.seay Functional tests for Event BeginPlay execution order Change 3875409 by mason.seay Optimized and fixed up character movement tests (because a potential bug in FunctionalTestActor is always passing a test when it can fail) Change 3878947 by Mieszko.Zielinski CIS fixes #UE4 Change 3879000 by Mieszko.Zielinski More CIS fixes #UE4 Change 3879139 by Mieszko.Zielinski Even moar CIS fixes #UE4 Change 3879742 by mason.seay Added animation to Nativization Widget asset Change 3880198 by Zak.Middleton #ue4 - CanCrouchInCurrentState() returns false when character capsule is simulating physics. #jira UE-54875 github #4479 Change 3880266 by Zak.Middleton #ue4 - Optimize UpdateCharacterStateBeforeMovement() to do cheaper tests earlier (avoid CanCrouchInCurrentState() unless necessary, now that it tests IsSimulatingPhysics() which is not trivial). #jira UE-54875 Change 3881546 by Mieszko.Zielinski *.Build.cs files clean up - removed redundant dependencies from NavigationSystem and AIModule #UE4 Change 3881547 by Mieszko.Zielinski Removed a bunch of DEPRECATED functions from the new NavigationSystem module #UE4 Removed all deprecates prior 4.15 (picked this one because I do know some licencees are still using it). Change 3881742 by mason.seay Additional crouch test to cover UE-54875 Change 3881794 by Mieszko.Zielinski Fixed a bug in FVisualLoggerHelpers::GetCategories resulting in losing verbosity information #UE4 Change 3884503 by Mieszko.Zielinski Fixed TopDown code template to make it compile after navsys refactor #UE4 #jira UE-55039 Change 3884507 by Mieszko.Zielinski Switched ensures in UNavigationSystemV1:SimpleMoveToX to error-level logs #UE4 It's an error rather than a warning because the functions no longer do anything. Making it work would require a cyclic dependency between NavigationSystem and AIModule. #jira UE-55033 Change 3884594 by Mieszko.Zielinski Added a const FNavigationSystem::GetCurrent version #UE4 lack of it was causing KiteDemo to not compile. Change 3884602 by Mieszko.Zielinski Mac editor compilation fix #UE4 Change 3884615 by Mieszko.Zielinski Fixed FAIDataProviderValue::GetRawValuePtr not being accessible from outside of AIModule #UE4 Change 3885254 by Mieszko.Zielinski Guessfix for UE-55030 #UE4 The name of NavigationSystem module was put in wrong in the IMPLEMENT_MODULE macro #jira 55030 Change 3885286 by Mieszko.Zielinski Changed how NavigationSystem module includes DerivedDataCache module #UE4 #jira UE-55035 Change 3885492 by mason.seay Minor tweaks to animation Change 3885773 by mason.seay Resaving assets to clear out warning Change 3886433 by Mieszko.Zielinski Fixed TP_TopDownBP's player controller BP to not use deprecated nav functions #UE4 #jira UE-55108 Change 3886783 by Mieszko.Zielinski Removed silly inclusion of NavigationSystemTypes.h from NavigationSystemTypes.h #UE4 Change 3887019 by Mieszko.Zielinski Fixed accessing unchecked pointer in ANavigationData::OnNavAreaAdded #UE4 Change 3891031 by Mieszko.Zielinski Fixed missing includes in NavigationSystem.cpp #UE4 Change 3891037 by Mieszko.Zielinski ContentEample's navigation fix #UE4 #jira UE-55109 Change 3891044 by Mieszko.Zielinski PR #4456: Fix bug in UAISense_Sight::OnListenerForgetsActor (Contributed by maxtunel) #UE4 Change 3891598 by mason.seay Resaving assets to clear out "empty engine version" spam Change 3891612 by mason.seay Fixed deprecated Set Text warnings Change 3893334 by Mieszko.Zielinski Fixed a bug in navmesh generation resulting in not removing layers that ended up empty after rebuilding #UE4 #jira UE-55041 Change 3893394 by Mieszko.Zielinski Fixed navmesh debug drawing to properly display octree elements with "per instance transforms" (like instanced SMs) #UE4 Also, added a more detailed debug drawing of navoctree contents (optional, but on by default). Change 3893395 by Mieszko.Zielinski Added a bit of code to navigation system's initialization that checks the enegine ini for sections refering to the moved navigation classes, and complain about it #UE4 The message is printed as an error-level log line and it says what should the offending section be renamed to. Change 3895563 by Dan.Oconnor Mirror 3895535 Append history from previous branches in source control history view #jira none Change 3896930 by Mieszko.Zielinski Added an option to tick navigation system while the game is paused #UE4 Controlled via NavigationSystemV1.bTickWhilePaused, ini- and ProjectSettings-configurable. #jira UE-39275 Change 3897554 by Mieszko.Zielinski Unified how NavMeshRenderingComponent draws navmesh and octree collision's polys #UE4 Change 3897556 by Mieszko.Zielinski Fixed what kind of nav tile bounds we're sending to nav-colliding elements when calling 'per-instance transform' delegate #UE4 #jira UE-45261 Change 3898064 by Mieszko.Zielinski Made SM Editor display AI-navigation-related whenever bHasNavigationData is set to true #UE4 #jira UE-50436 Change 3899004 by Mieszko.Zielinski Fixed UEnvQueryItemType_Actor::GetItemLocation and UEnvQueryItemType_Actor::GetItemRotation to return FAISystem::InvalidLocation and FAISystem::InvalidRotation respectively instead of '0' when hosted Actor ptr is null #UE4 Note for programmers: this changes the default behavior of this edge case. You might want to go through your code and check if you're comparing UEnvQueryItemType_Actor::GetItem*'s results to 0. Change 3901733 by Mieszko.Zielinski Made FEnvQueryInstance::PrepareContext implementations returning vectors and rotators ignore InvalidLocation and InvalidRotation (respectively) #UE4 Change 3901925 by Ben.Zeigler #jira UE-55395 Fix issue where the cooker could load asset registry caches made in -game that do not have dependency data, leading to broken cooks Change 3902166 by Marc.Audy Make ULevel::GetWorld final Change 3902749 by Ben.Zeigler Fix it so pressing refresh button in asset audit window actually refreshes the asset management database Change 3902763 by Ben.Zeigler #jira UE-55407 Fix it so editor tutorials are not cooked unless referenced, by correctly marking soft object paths imported from editor project settings as editor-only Change 3905578 by Phillip.Kavan The UX to add a new parameter on a Blueprint delegate is now at parity with Blueprint functions. #4392 #jira UE-53779 Change 3905848 by Phillip.Kavan First pass of the experimental Blueprint graph bookmarks feature. #jira UE-10052 Change 3906025 by Phillip.Kavan CIS fix. Change 3906195 by Phillip.Kavan Add missing icon file. Change 3906356 by Phillip.Kavan Moved Blueprint bookmarks enable flag into EditorExperimentalSettings for consistency with other options. Change 3910628 by Ben.Zeigler Partial fix for UE-55363, this allows references to ObjectRedirectors to be switched from parent class to a child class on load as this should always be safe This does not actually fix UE-55363 because that case is changing from UMaterial to UMaterialInstanceConstant, and those are siblings instead of parent/child Change 3912470 by Ben.Zeigler #jira UE-55586 Fix issue with saving redirected soft object paths where the export sort could accidentally cause the parent CDO to get modified between name tagging and writing exports, which is unsafe because due to delta serialization it would try to write names that were not previously tagged Change 3913045 by Marc.Audy Fix issues where recursion in to child actors wasn't being handled correctly Change 3913398 by Fred.Kimberley Fixes a misspelled name for one of the classes in the ability system. PR #4430: Fixed spelling of FGameplayAbilityInputBinds. (Contributed by IntegralLee) #github #jira UE-54327 Change 3918016 by Fred.Kimberley Ensure AllocGameplayEffectContext is being used in all cases where FGameplayeEffectContext is being created. #jira UE-52668 PR #4250: Only create FGameplayEffectContext via AbilitySystemGlobals::.AllocGameplayEffectContext (Contributed by slonopotamus) #github Change 3924653 by Mieszko.Zielinski Fixed LoadEngineClass local to UnrealEngine.cpp to check class redirects before falling back to default class instance #UE4 #jira UE-55378 Change 3925614 by Phillip.Kavan Fix ForEachEnum node to skip over hidden enum values in new placements by default. Change summary: - Added FKismetNodeHelperLibrary::ShouldHideEnumeratorIndex() as an internal-only Blueprint node support API. - Modified FForExpandNodeHelper::AllocateDefaultPins() to add a "Skip Hidden" input pin (advanced). Pin default value is false. - Added a UK2Node_ForEachElementInEnum::PostPlacedNewNode() override to set the default value of the "Skip Hidden" input pin to 'true' for all new node placements. - Modified UK2Node_ForEachElementInEnum::ExpandNode() to include additional expansion logic based on the "Skip Hidden" input pin. For new placements (i.e. when the pin defaults to 'true'), an intermediate branch node will now be inserted into the compiled execution sequence to test for "hidden" metadata on the value before executing the loop body. If the input pin is linked, another intermediate branch will be inserted into the execution sequence prior to the "hidden" metadata test. All existing placements of the node will remain as-is after compilation (i.e. no additional intermediate branch nodes will be included in the expansion). #jira UE-34563 Change 3925649 by Marc.Audy Fix up issue post merge from Main with navigation system refactor Change 3926293 by Phillip.Kavan Temp fix to unblock CIS. #jira UE-34563 Change 3926523 by Marc.Audy Ensure that a renamed Actor is in the correct Actors array #jira UE-46718 Change 3928732 by Fred.Kimberley Unshelved from pending changelist '3793298': #jira UE-53136 PR #4287: virtual additions for AttributeSet extendability (Contributed by TWIDan) #github Change 3928780 by Marc.Audy PR #4309: The display names of the functions. (Contributed by SertacOgan) #jira UE-53334 Change 3929730 by Joseph.Wysosky Submitting test assets for the new Blueprint Structure test cases Change 3931919 by Joseph.Wysosky Deleting BasicStructure asset to rest MemberVariables back to default settings Change 3931922 by Joseph.Wysosky Adding BasicStructure test asset back with default members Change 3932083 by Phillip.Kavan Fix Compositing plugin source files to conform to updated relative include path specifications. - Encountered while testing Blueprint nativization of assets with dependencies on Composure/LensDistortion APIs. Change 3932196 by Dan.Oconnor Resetting a property to default now uses the same codepath as assigning the value from the slate control #jira UE-55909 Change 3932408 by Lukasz.Furman fixed behavior tree services attached to task nodes being sometimes recognized as root level #jira nope Change 3932808 by Marc.Audy PR #4083: Change to UK2Node_BaseAsyncTask to have pin tooltips on latent nodes (Contributed by dwrpayne) #jira UE-50871 Change 3934101 by Phillip.Kavan Revise ForEachEnum node expansion logic to exclude hidden values at compile time. Change summary: - Removed UKismetNodeHelperLibrary::ShouldHideEnumeratorIndex() (no longer in use). - Modified UK2Node_ForEachElementInEnum::ExpandNode() to include an enum switch node in the expansion, which will exclude hidden values when constructed. The additional expansion will occur if the enum type contains at least one hidden value. #jira UE-34563 Change 3934106 by Phillip.Kavan Mirrored 4.19 fixes to allow for EngineTest iteration w/ nativization enabled. Change summary: - Mirrored CLs 3876918, 3878968, 3883257, 3885566, 3912161 and 3920519. Change 3934116 by Phillip.Kavan UBT: Explicitly define the DEPRECATED_FORGAME macro only for non-engine modules. Change summary: - Modified UEBuildModule.SetupPrivateCompileEnvironment() to check the 'bTreatAsEngineModule' flag from the rules assembly rather than testing the module's build type. Change 3934382 by Phillip.Kavan Avoid inclusion of monolothic engine header files in nativized Blueprint codegen. Change 3936387 by Mieszko.Zielinski Added a flag to NavModifierComponent to control whether agent's height is being used while expadning modifier's bounds during navmesh generation #UE4 Change 3936905 by Ben.Marsh Disable IncludeTool warning for DEPRECATED_FORGAME macro; we expect this to be different for game modules. Change 3940537 by Marc.Audy Don't allow maps, sets, or arrays with an actor inner type in user defined structs to select an actor from the currently open level as default value. #jira UE-55938 Change 3940901 by Marc.Audy Properly name CVar global to reflect what it is for Change 3943043 by Marc.Audy Fix world context functions not being able to be used in CheatManager derived blueprints #jira UE-55787 Change 3943075 by Mieszko.Zielinski Moved path-following related delegats' interface from NavigationSystemBase over to a new IPathFollowingManagerInterface #UE4 Change 3943089 by Mieszko.Zielinski Fixed how WorldSettings.NavigationSystemConfig gets created #UE4 Made it so that there's always a NavigationSystemConfig instance present, but added a 'Null' config - this was required due to issues with creation/serialization of instanced subobjects. The change required adding copying constructors to FNavAgentProperties and FNavDataConfig. Also, fixed FNavAgentProperties.IsEquivalent to be symetrical. Change 3943225 by Marc.Audy Fix spelling of Implements Change 3950813 by Marc.Audy Include owner in attachment mismatch ensure #jira UE-56148 Change 3950996 by Marc.Audy Fix cases where bit packed properties used the entire byte not just the bit when interacting with boolean arrays #jira UE-55482 Change 3952086 by Marc.Audy PR #4483: Add Missing Radial Damage Multicast Delegate (Contributed by error454) #jira UE-54974 Change 3952720 by Marc.Audy PR #4575: Check if *Pawn* is a null Pointer (Contributed by dani9bma) #jira UE-56248 Change 3952804 by Richard.Hinckley Changes to BP API export commandlet to support better plugin exporting. Contributed by Harry Wang of Google. Change 3952962 by Marc.Audy UHT now validates that ExpandEnumAsExecs references a valid parameter to the function. #jira UE-49610 Change 3952977 by Phillip.Kavan Fix EDL cycle at load time in nativized cooked builds when a circular dependency exists between converted and unconverted assets. Change summary: - Added FGatherConvertedClassDependencies::MarkUnconvertedClassAsNecessary(). - Modified FFindAssetsToInclude::MaybeIncludeObjectAsDependency() to mark unconverted BPGCs (e.g. DOBPs) as necessary for conversion when the potential for a circular dependency exists so that we generate stub wrappers rather than depend on them directly. - Fixed a few typos in existing API names. #jira UE-48233 Change 3953658 by Marc.Audy (4.19.1) Fix inserting a reroute node causing connections to break on a GetClassDefaults node #jira UE-56270 Change 3954727 by Marc.Audy Add friendly name to custom version mismatch message Change 3954906 by Marc.Audy (4.19.1) Fix crash when undoing changes related to reroute nodes connected to a GetClassDefaults node #jira UE-56313 Change 3954997 by Marc.Audy Ensure and return null if GetOuter<WithinClass> is called on a CDO for uclasses declared as within another so we don't get a UPackage c-style cast to the expected outer type Change 3955091 by Marc.Audy Do not register subcomponents that are not auto register #jira UE-52878 Change 3955943 by Marc.Audy Make AbilitySystemComponent pass parameters by const& instead of ref as no state is being changed Change 3956185 by Zak.Middleton #ue4 - Fix Characters using scoped movement updates (the default) not visually rotating when rotated at small rates at high framerate. This was caused by FScopedMovementUpdate::IsTransformDirty() using a larger FTransform comparison tolerance than USceneComponent::UpdateComponentToWorldWithParent(). #jira none Change 3958102 by Marc.Audy Clean out dead code path from k2node_select Select node now resets pins to wildcard if none of the pins are in use Change 3958113 by Lukasz.Furman added OnSearchStart call to root level behavior tree services #jira UE-56257 Change 3958361 by Marc.Audy Fix literal input pins on select being set to wildcard during compilation Change 3961148 by Dan.Oconnor Mirror 3961139 from Release 4.19 Fix for placeholder objects being left behind when loading certain UMG assets - this could causea crash when loading UMG assets #jira UE-55742 Change 3961640 by Marc.Audy Select node now displays Add Pin button Undo of changing select node index type now works correctly. Connections to option pins now maintained across change of index pin type #jira UE-20742 Change 3962262 by Marc.Audy Display "Object Reference" instead of "Object Object Reference" and "Soft Object Reference" instead of "Object Soft Object Reference" Change 3962795 by Phillip.Kavan Fix for a crash when cooking with Blueprint nativization enabled after encountering a nested instanced editor-only default subobject inherited from a native C++ base class. - Mirrored from //UE4/Release-4.19 (3962782) #jira UE-56316 Change 3962991 by Marc.Audy Modify Negate/Increment/Decrement Int/Float so that the output is always the desired result even if a non-mutable pin is passed in. Note that this can mean the result being returned and the value of the pin passed in if queried again will not be the same (in the case of pure nodes). #jira UE-54807 Change 3963114 by Marc.Audy Fix ensures/crash as a result of UClass expecting to be able to access the UPackage of CDOs via the GetOuterUPackage call. Change 3963427 by Marc.Audy Fix initialization order Initialize bUseBackwardsCompatForEmptyAutogeneratedValue Change 3963781 by Marc.Audy Fix without editor compiles Change 3964576 by Marc.Audy PR #4599: : Working category for timelines (Contributed by projectgheist) #jira UE-56460 #jira UE-26053 Change 3964782 by Dan.Oconnor Mirror 3964772 from Release 4.19 Fix crash when force deleting certain blueprints, we can only check for authoritativeness while reinstancing #jira UE-56447 Change 3965156 by Mieszko.Zielinski PR #4592: Visual Logger optimization to fix rapid FPS drop when many items are hidden (Contributed by tstaples) #jira UE-56435 Change 3965173 by Marc.Audy (4.19.1) Fix incorrectly switching a cooling down tick to be an enabled tick when marking it enabled. #jira UE-56431 Change 3966117 by Marc.Audy Fix select nodes inside macros using wildcard array inputs having issues resolving type. #jira UE-56484 Change 3878901 by Mieszko.Zielinski NavigationSystem's code refactored out of the engine and into a new separate module #UE4 The CL contains required changes to all of our internal projects. Fortnite and Paragon have been tested, while the rest have been only compiled. Change 3879409 by Mieszko.Zielinski Further fallout fixes after ripping out NavigationSystem out of the engine #UE4 - Fixed bad ini redirects (had NavigationSystem.NavigationSystem instead of NavigationSystem.NavigationSystemV1) - Added missing FNavigationSystem::GetDefaultNavDataClass binding (resulting in QAGame's func tests failing) Change 3897655 by Ben.Zeigler #jira UE-55211 Fix it so literal soft object pins on blueprint nodes get correctly cooked/referenced It now sets the thread context to skip internal serialize and calls the archive's serialize function instead of bypassing it, which allows it to pick up references Change 3962780 by Marc.Audy When preventing a split pin from being orphaned, all sub pins must also be prevented. #jira UE-56328 Repack members of UEdGraphPin to avoid wasted space (saves 16bytes) [CL 3967553 by Marc Audy in Main branch]
2018-03-27 14:27:07 -04:00
#include "NavigationSystem.h"
#include "UObject/Package.h"
LLM_DEFINE_TAG(NavigationOctree);
//----------------------------------------------------------------------//
// FNavigationOctree
//----------------------------------------------------------------------//
FNavigationOctree::FNavigationOctree(const FVector& Origin, FVector::FReal Radius)
: TOctree2<FNavigationOctreeElement, FNavigationOctreeSemantics>(Origin, Radius)
, DefaultGeometryGatheringMode(ENavDataGatheringMode::Instant)
, bGatherGeometry(false)
, NodesMemory(0)
#if !UE_BUILD_SHIPPING
, GatheringNavModifiersTimeLimitWarning(-1.0f)
#endif // !UE_BUILD_SHIPPING
{
INC_DWORD_STAT_BY( STAT_NavigationMemory, sizeof(*this) );
}
FNavigationOctree::~FNavigationOctree()
{
DEC_DWORD_STAT_BY( STAT_NavigationMemory, sizeof(*this) );
DEC_MEMORY_STAT_BY(STAT_Navigation_CollisionTreeMemory, NodesMemory);
ObjectToOctreeId.Empty();
}
void FNavigationOctree::SetDataGatheringMode(ENavDataGatheringModeConfig Mode)
{
check(Mode != ENavDataGatheringModeConfig::Invalid);
DefaultGeometryGatheringMode = ENavDataGatheringMode(Mode);
}
void FNavigationOctree::SetNavigableGeometryStoringMode(ENavGeometryStoringMode NavGeometryMode)
{
bGatherGeometry = (NavGeometryMode == FNavigationOctree::StoreNavGeometry);
}
void FNavigationOctree::DemandLazyDataGathering(FNavigationRelevantData& ElementData)
{
LLM_SCOPE_BYTAG(NavigationOctree);
UObject* ElementOb = ElementData.GetOwner();
if (ElementOb == nullptr)
{
return;
}
bool bShrink = false;
const int32 OrgElementMemory = IntCastChecked<int32>(ElementData.GetGeometryAllocatedSize());
if (ElementData.IsPendingLazyGeometryGathering() == true && ElementData.SupportsGatheringGeometrySlices() == false)
{
QUICK_SCOPE_CYCLE_COUNTER(STAT_RecastNavMeshGenerator_LazyGeometryExport);
UActorComponent& ActorComp = *CastChecked<UActorComponent>(ElementOb);
ComponentExportDelegate.ExecuteIfBound(&ActorComp, ElementData);
bShrink = true;
// mark this element as no longer needing geometry gathering
ElementData.bPendingLazyGeometryGathering = false;
}
if (ElementData.IsPendingLazyModifiersGathering())
{
QUICK_SCOPE_CYCLE_COUNTER(STAT_RecastNavMeshGenerator_LazyModifiersExport);
#if !UE_BUILD_SHIPPING
const bool bCanOutputDurationWarning = GatheringNavModifiersTimeLimitWarning >= 0.0f;
const double StartTime = bCanOutputDurationWarning ? FPlatformTime::Seconds() : 0.0f;
#endif //!UE_BUILD_SHIPPING
INavRelevantInterface* NavElement = Cast<INavRelevantInterface>(ElementOb);
check(NavElement);
NavElement->GetNavigationData(ElementData);
ElementData.bPendingLazyModifiersGathering = false;
bShrink = true;
#if !UE_BUILD_SHIPPING
// If GatheringNavModifiersWarningLimitTime is positive, it will print a Warning if the time taken to call GetNavigationData is more than GatheringNavModifiersWarningLimitTime
if (bCanOutputDurationWarning)
{
const double DeltaTime = FPlatformTime::Seconds() - StartTime;
if (DeltaTime > GatheringNavModifiersTimeLimitWarning)
{
const UActorComponent* ObjectAsComponent = Cast<UActorComponent>(ElementOb);
const AActor* ComponentOwner = ObjectAsComponent ? ObjectAsComponent->GetOwner() : nullptr;
UE_LOG(LogNavigation, Warning, TEXT("The time (%f sec) for gathering navigation data on an INavRelevantInterface navigation element exceeded the time limit (%f sec) | NavElement = %s | Potential Component = %s | Potential Component's Owner = %s | Level = %s"), DeltaTime, GatheringNavModifiersTimeLimitWarning, *GetNameSafe(ElementOb), *GetNameSafe(ObjectAsComponent), *GetNameSafe(ComponentOwner), ElementOb ? *GetNameSafe(ElementOb->GetOutermost()) : TEXT("Invalid element"));
}
}
#endif //!UE_BUILD_SHIPPING
}
if (bShrink)
{
Merging from //UE4/Fortnite-Staging up to CL#3673800 based on CL#3664064 from //Fortnite/Main #rb none #lockdown Nick.Penwarden ================================================================================================= THESE CHANGES TOUCH MULTIPLE PLATFORMS AND/OR RESTRICTED FOLDERS. YOU MUST REVIEW THESE MANUALLY AND APPEND THEM TO THE DESCRIPTIONS FOR THE APPROPRIATE PLATFORMS. ================================================================================================= Change 3662267 by Nick.Darnell Engine - Fixing a bug in GetAccurateRealTime, it wasn't subtracting GStartTime, which if you don't prevents accurate platform time when you try to store it in a float. #jira nojira Change 3662176 by Ben.Marsh Disable image integrity report generation if a debugger is attached, and in editor builds. #jira FORT-55656 Change 3656958 by Luke.Thatcher [FORTNITE] [CONSOLE] [+] Improved frame syncing mechanism - Improves input latency by allowing the game thread to sync to the swap chain flip of the previous frame. - Added "r.GTSyncType" CVar to control how the game thread syncs with the rest of the pipe. - r.GTSyncType 2 will sync the game thread with the flip of the swap chain, preventing the pipe from getting too long and causing excess input latency. Platforms are required to implement RHIWaitForFlip and RHISignalFlipEvent, and call RHIInitializeFlipTracking on RHI startup. A separate thread monitors the progress of frame flips and signals task graph events as they pass their corresponding frame index. In r.GTSyncType 2 mode, the game thread is signaled by this flip tracking thread. [~] Unified platform specific sync interval CVars (D3D12.SyncInterval, D3D11.SyncInterval, r.PS4FlipRate, RHI.SyncIntervalOgl) into one: rhi.SyncInterval - 1 == 60Hz - 2 == 30Hz - 3 == 20Hz [-] Removed large number in XboxOneTime. Adding this arbitrary number prevents us from comparing timestamps from FPlatformTime::Seconds() and various OS callbacks (e.g. flip timings). #jira FORT-50803 Change 3655598 by Lukasz.Furman added filtering for navmesh's low height spans to fix crash on layer partitioning % of span reductions depends on presence of stair or roof building in navmesh tile, changed failsafes in layer code to ignore entire tile if heightfield is too complex to partition instead of reallocating memory #jira FORT-35375 Change 3648972 by Keith.Judge Add analytics to help diagnose default parameter collection buffer issue. +++ REMOVE ONCE CORE ISSUE IS SOLVED +++ #jira FORT-54690 Change 3648756 by Bart.Hawthorne Integrate 3645298 from //UE4/Dev-Networking Deprecate GetNetworkObjectInfo in favor of separate FindNetworkObjectInfo and FindOrCreateNetworkObjectInfo methods. #jira none Change 3643090 by Josh.Markiewicz #UE4 - proper handling of "pending connection lost" - triggered only if a connection is lost and there no "owning actor" to deal with the connection loss -- added Rejoin and CleanedUp states to connection to make sure that the pending connection lost delegate only fires at the appropriate time - delegate returns the unique id of the player if known (still possible to be unknown if connection lost after NMT_Hello) - changed debug output on timeout if the net connection was already in the process of being destroyed -- occurs when game hitches during the pending destroy 2 second wait -- ReceivedAcks should have been called to clean things up quietly in those 2 seconds but blocking the game thread will cause the cleanup to look like a timeout - added userid to UNetConnection::Describe - bad split screen player handling of unique id -- splitscreen uniqueid was overwriting the primary player id -- only store the id on the child connection - added some clarifying comments #review-3642816 @ryan.gerleve, @bob.tellez, @sam.zamani, @bart.hawthorne, @dave.ratti #jira FORT-26776 Change 3639043 by Alex.Thurman Fix CommonTreeView SetSelection to correctly update list navigation, and behave similarly to CommonListView's SetSelectedItem. #JIRA FORT-45841 Change 3632275 by Seth.Weedin #JIRA FORT-54203 - Add clamps to ActiveSound fade interpolation to prevent unwanted volume spikes. Remove 0.01 start time for single-fire audio cues. Should remove the sudden pops sometimes heard when firing weapons, as well as smooth out fade volume in general. Change 3626944 by Josh.Markiewicz #UE4 - added "updates connection status" flag to ServiceConfigMCP - disable updates on Cloud and Friend services (Fortnite only) - removed overloaded ProcessConnectionStatus function in cloud service #jira FORT-53113 Change 3626226 by Stewart.Lynch LLM Update - Memory reductions, Summary page, enum scopes, refactor and cleanup of tags * Remove all static arrays and hard limits from LLM. Everything is now dynamically allocated using the internal LLM allocators. The overhead when LLM is disabled is now only 48K (was 40MB) * re-wrote LLMMap. Now stores an int32 index rather then pointer in the HashMap array. Also, changed the Values to be arrays for structs instead of structs of arrays. Means that the tag can be stored in a single byte. Changed the size of the allocation size from int64 to int32. All this takes the memory down from around 600MB to 100MB. It was 120 bytes per allocation, now 29 bytes. * changed all LLM scopes over to enums. This has a number of benefits; LLM can be enable in Test, less CPU overhead, stored in a byte (LLM overhead /= 8) * summary page for content creators where all lower-level stats are grouped under one Engine stat * renamed ELLMScopeTag enum to ELLMTag * renamed LLM_SCOPED_TAG_WITH_ENUM macro to LLM_SCOPE * removed Tracker arg from LLM_SCOPE and added LLM_PLATFORM_SCOPE macro * fixed GenericPlatformMallocCrash stat. Although it seems not be be used anymore * fixed BackupOOMMemoryPool stat (now shows in both default and platform pages) * added separate LLM enums for XB1, PS4 and D3D12 (PS4LLM.cpp/h etc.) * lots of changes adding/removing/renaming tags * added LLMArray and FLLMObjectAllocator classes * disabled asset tag tracking by default because it takes up so much memory even when not used * enable LLM in all non-shipping builds. In Test the on screendisplay won't show because it uses the stats system but it till still write out the csv. * all the stat macros have been left as they were and can be enabled on the LLM_STAT_TAGS_ENABLED define. These are needed for the asset tagging. * disabled LLM_TRACK_PEAK_MEMORY because there is a problem with the way it adds the peaks for multiple threads. This needs to be fixed. * added a CVar to control the csv write interval: LLM.LLMWriteInterval * added static arrays for the enum tags setup. Easier to manage and removes need for slow switch statements. * renamed FLLMThreadStateManager to FLLMTracker to make it consistent with the enum * fixed program size stat which was broken recently on PS4. This was due to initialisation order and global platform stats setup #jira NONE-01 Change 3622978 by Lukasz.Furman changed WeaponStatus BT decorator to be event driven, fixes AI trying to check ranged weapon abilities without valid weapon includes copy of CL# 3620700 #jira FORT-45914 #review-3622979 John.Abercrombie Change 3622340 by Josh.Markiewicz #UE4 - playerid netconnection variable setup properly on clients and servers for both beacons and game net drivers - ipconnection prints uniqueid with lowleveldescribe #jira fort-0 Change 3621386 by Tim.Tillotson Add the ability to retry HTTP operations by VERB. This allows us to automatically retry cloud save PUT operations. #JIRA FORT-53717 #review-3621317 @Josh.Markiewicz @Ian.Fox @Carlos.Cuello Change 3620517 by Keith.Judge Xbox One - Revert iOS behaviour for the depth bias back to how it was, and make separate XB1 change use its own define to avoid confusion. #jira FORT-53928 Change 3620248 by Lukasz.Furman changed behavior of UBTTask_MoveTo.bStopOnOverlap flag after recent AcceptanceRadius fix, updated comments to be more detailed #jira nojira Change 3616187 by Bob.Tellez #UE4 Throwing an error (for now) if you attempt to use both the malloc profiler and leak detection at the same time since it causes a deadlock. #JIRA UE-0 Change 3613935 by Peter.Knepley More logging on update launcher launching #jira nojira #robomerge rp rn Change 3613537 by Marcus.Wassmer Safety asserts around the MarkPendingKill feature for rendering classes. #jira FORT-50385 Change 3613399 by Arne.Schober Extended ShowMaterialDrawEvents to enable it only in very specific passes and default enabled Depth for Fortnite on PS4 to track down a crash. #RB Marcus.Wassmer #jira FORT-53610 Change 3610794 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce UMG class memory #jira UE-52043 #ROBOMERGE-SOURCE: CL 3610792 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3610144 by Stewart.Lynch General LLM improvements * added tracking for misc task graph tasks (moves 20MB out of Untagged) * renamed EngineTick to EngineMisc * added tracking for FName * added tracking for GC_ProcessObjectArray potential leak * renamed index & vertex buffers stat to Meshes * added hooks for MemPro to track allocations from a single category. Currently defined out. I haven't added MemPro.cpp/h. * removed AVAILABLE_PHYSICAL stat from LLM csv * csv files now include the date in the filename * fixed potential threading bug when reading stat values to csv * made IsDebugMemoryEnabled() always return false in shipping and if not runnong on a dev-kit (PS4). The reason is that the function is a bit hacky, and should only be used for debug purposes, such as displaying the on screen warning. * added lots more scopes * started changing Stat scopes to enum scopes. Stat scopes will be phased out. * added tracking of FName memory * added llmplatform tracking for XBoxSymbols * added llm tracking for CPU symbol allocations (20MB) * wrote an allocator for XBoxOneStack reading so that it doesn't go through Malloc and get tracked by LLM. * added tracking for GC * fixed tracking for TransientMemoryAllocator * added tracking for networking memory * added more audio memory tracking * added tracking for blueprints * added tracking for static meshes * show on screen warning if debug memory is enabled * added tracking for particles * renamed Phys to PhysX and added more scopes * renamed Slate to UI and added more scopes * much better coverage of networking memory * improved coverage of audio #jira FORT-53420 Change 3610136 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce size of UStaticMeshComponent by 224 bytes (cumulative, 64 bytes exclusive) Reduce size of UPrimitiveComponent by 176 bytes (cumulative, 64 bytes exclusive). Reduce size of USceneComponent by 112 bytes. Reduce size of FLightingChannels from 3 bytes to 1. Reduce size of FBodyInstance by 16 bytes. #jira FORT-52043 #ROBOMERGE-SOURCE: CL 3610134 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607937 by robomerge #ROBOMERGE-AUTHOR: paul.moore #jira FORT-53105 - Fix websocket not providing information when the peer closes the connection. #ROBOMERGE-SOURCE: CL 3607933 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607042 by Bart.Hawthorne Move replay.Loop functionality into the demo net driver and rename it demo.Loop #jira none Change 3605448 by robomerge #ROBOMERGE-AUTHOR: seth.weedin #Athena - Pass owner to ActiveSounds created using PlaySoundAtLocation/PlaySound2D to allow "Limit to Owner" concurrency rules to work. Hook up for weapon sounds. #JIRA FORT-53180 #ROBOMERGE-SOURCE: CL 3605443 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3604787 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Initial support for hotfixing live assets from .ini files - This allows clients and server to patch certain assets in memory whenever .ini file hotfixes are downloaded - Only CurveTables and DataTables are supported for now - The new asset content must be in Json format, the same format the editor uses for importing - Assets that are hotfixed will be synchronously loaded if they're not already in memory. They'll be retained in memory afterwards. - IMPORTANT: Json data must be supplied on a single line, and all double quotes must be escaped! - The changes must go in the Game.ini file and use the following syntax: [AssetHotfix] +CurveTable=("/Game/Folder/MyCurveTable","[{\"Name\":\"Default\"}]") +DataTable=("/Game/Folder2/MyDataTable","[{\"Name\":\"Foo\"}]") #jira FORT-52099 [CODEREVIEW] frank.gigliotti [FYI] peter.knepley,bob.tellez #ROBOMERGE-SOURCE: CL 3604784 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3602067 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Loading time improvements - This shaves off up to 10 seconds of load time on PS4 in Athena Details: - Fixed multiple sub-levels not being able to be enqueued for loading in a single client frame. Athena has ~300 sub-levels, so this ended up wasting up many seconds. - Fixed 3D world being rendered while loading (frees up game thread cycles for throttled streaming) - UWorld::AllowLevelLoadRequests() was not allowing load requests to go through while an async load was in progress and the match had started. It now allows this as long as the world isn't being rendered (loading screen.) - Eliminated extra 2 second delay before loading screen is dismissed (in Athena only) - Note: A side effect of this change is that the progress bar may not update as smoothly on loading screen. We'll look at tuning the throttle settings if it ends up being a problem. [CODEREVIEW] ori.cohen #jira AT-1477 #ROBOMERGE-SOURCE: CL 3602061 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3601951 by Luke.Thatcher [FORTNITE] [PS4] [!] Fix memory stats in the old PS4 memory system - Physical memory stat now includes garlic and onion allocations. CPU OOMs will result in "AvailablePhysical" being close to 0. - Added garlic, onion and defrag stats to the platform memory stats struct. - Added fixed pool sizes to platform memory stats. - Modified the Fortnite heartbeat logging to include extra details of PS4 fixed sized pools. #jira FORT-52910 Change 3600340 by robomerge #ROBOMERGE-AUTHOR: wes.hunt All Fort analytics events now contain a GameState attribute indicating the active GameState ClassName when the event is sent. Added some new context to crashreporter to help identify Athena matches near and long term. * Near Term: GameNameSuffix - set via FCoreDelegates::CrashOverrideParamsChanged * Added bools to the params to indicate WHICH ones are changing * Allows you to set only some values, and clear them out. * Hooked up in FortGameState::PostInitializeComponents. * FortGameState clears it (for returning to main menu). * FortGameStateAthena sets it (for going into an Athena match). * Only does this when it's a true GameMode GameState instance (ie, not PIE) so PIE crashes aren't modified. * Long Term: GameStateName - set via FCoreDelegates::GameStateClassChanged. * This works for ANY crash on ANY game. * Hooked up in GameState::HandleMatchIsWaitingToStart. #jira AT-1457 #jira AT-519 [CODEREVIEW] peter.knepley,josh.markiewicz #ROBOMERGE-SOURCE: CL 3600278 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3597593 by Ben.Zeigler #jira FORT-50722 Fix issues where AssetBundles weren't being correctly updated during cook, which is blocking both Noland and Abercrombie Partial copy of CL #3402335 and #3526538 #robomerge rp, rn Change 3597577 by Luke.Thatcher [FORTNITE] [PS4] [~] Modified the way memory is allocated on Playstation to make more memory available to the CPU. - Previously the amount of texture memory wasn╞t fixed due to the way the defrag memory is allocated on PS4. This meant we had to have a significant amount of slack. - With the new configuration, we have a guaranteed texture memory pool, so the slack can be significantly smaller, meaning we can give more memory to the CPU, which is where most of our memory pressure is. #jira FORT-50825 #jira FORT-49688 #jira FORT-49695 #jira FORT-50054 Change 3596556 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Enable GC clustering for actors and blueprints in Fortnite - This shaves off about 10 ms on GC frames in Athena on PS4 (~52 ms -> 42 ms) - Clustering doesn't work on building actors because they're very dynamic, but general Fort static meshes and blueprints are clustered! - This gets us into the realm of shippability on console for very large UObject counts [FYI] bob.tellez,peter.knepley,michael.noland #jira AT-1440 #ROBOMERGE-SOURCE: CL 3596552 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3593994 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Force largest distance field atlas size in Athena - We now force the largest distance field atlas size before preloading Athena content (512x512x1024 = 256 MB). This helps with load times because it's expensive to re-create this texture on consoles, and typically it gets resized over a dozen times. - Added new CVar "r.DistanceFields.ForceMaxAtlasSize" (defaults to zero) - Important: Currently we never "reset" this atlas texture. This will be a problem when going back to play Campaigns after preloading to play Athena. I will look into this soon! [CODEREVIEW] peter.knepley,marcus.wassmer,michael.noland,daniel.wright #jira AT-1477 #ROBOMERGE-SOURCE: CL 3593992 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592096 by robomerge #ROBOMERGE-AUTHOR: ben.salem Prototype of gauntlet memory soak test. Not fully fiinished, but want changes in tonight's cook so we can experiment on cooked build tomorrow morning. #jira FORT-0 #ROBOMERGE-SOURCE: CL 3592025 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592085 by robomerge #ROBOMERGE-AUTHOR: mike.fricker HLOD: Added support for a fixed distance override via CVar - Use this to force all HLODs to transition at a specific distance, regardless of their TransitionSize/MinDrawDistance/LODDrawDistance - New CVar: r.HLOD.DistanceOverride (defaults to 0) - Fortnite uses 350m for this distance, fornow [CODEREVIEW] jurre.debaare #jira AT-1462 #ROBOMERGE-SOURCE: CL 3591929 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3587391 by Michael.Noland Fortnite: Lots of memory tracking stuff - Added memory logging to game state transitions and overall health tracking for the entire session - Added support for Gauntlet-based tests to Fortnite - Enabled the Gauntlet plugin (and fixed spaces instead of tabs in the .uproject file) - Added code to set gauntlet state based on the current subclass of AFortGameState - Added a base controller and a memory report controller (WIP, ported from equivalents in Paragon) - Updated FortniteClient to use MALLOC_LEAKDETECTION=1, PLATFORM_USES_FIXED_GMalloc_CLASS=0, and AllowASLRInShipping=false in Development builds (may enable them in Test builds in a future CL, to match Paragon) #jira FORT-50567 Change 3583307 by Peter.Knepley Need non-jittered ViewToClip matrix in order to do "after tonemapper" postprocess blendable material that's positioned in view space Modify the AttachScope material function to use "ViewSpaceTransformToClipSpace" instead of going back to world space first. This also means it can utilitize the ViewToClipNoAA matrix. #jira AT-733 Change 3582378 by Luke.Thatcher [FORTNITE] [~] Unify Xbox and PS4 scalability settings and device profiles. - All Xbox and PS4 r. CVars are overriden in their platform's Scalability.ini file. The device profile only selects sg. groups. - Fixed the Neo 4K profile for Fortnite. Previously players with 4K monitors would choose the Neo_4K profile, which looks worse than Neo, but still renders at 1080p. - Console specific settings have to live in the Base/Default .ini's, as the cooker doesn't load the console specific files. This is fixed in UE4 Main. #jira FORT-50206 Change 3580934 by Luke.Thatcher [FORTNITE] [PS4] [+] Support different garlic and onion heap sizes in the old memory system for base and neo. - Neo has 512 MB more direct memory than a base kit. - Increased the garlic heap size by 416 MB on Neo, and CPU heap by 96 MB. #jira FORT-50206 Change 3576664 by Bart.Hawthorne Re-enable Oodle and add Mac implementation. Also includes fixed oodle libraries by MichaelT. #jira FORT-49986 #tests Connected to PC server with editor -game build on Mac in Athena Change 3575671 by Nick.Darnell Athena - The gameplay ability system now supports adding Gameplay Cue's with params. Now using cues instead of gameplay effects in order to notify when the bandaging/shielding begin and end. THe new method should properly show and disappear on time, b/c it's all client side. Added a way in the Athena Context to easily hook gameplay "UI" cues that are rebroadcast from the Athena Pawn. #jira AT-644 Change 3575534 by Peter.Knepley Ability montage replication optimizations #jira AT-955 Change 3573305 by Lukasz.Furman disabled path section update when crowd simulated AI is moving through navlink, fixed AI getting stuck in some corners #jira FORT-49748 Change 3566775 by John.Abercrombie Optimizations from Dev-Athena - Tested with PIE & and 2 Player local server game #ue4-athena - (merge CLs 3345771 and 3363030 from Framework) - Refactored CharacterMovementComponent determination of net send rate when combining moves into a virtual function GetClientNetSendDeltaTime(). Added configurable values to GameNetworkManager under [/Script/Engine.GameNetworkManager]. For Fortnite, set unthrottled (<= 10 player) limit to 60Hz (from 90Hz), and trying throttled at 30Hz (from 45Hz). #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545535 by Zak.Middleton on 2017/07/19 20:15:17. #ue4-athena - (merge CL 3377054 from Framework) - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545452 by Zak.Middleton on 2017/07/19 18:57:45. #athena - If network smoothing mode is not linear, don't replicate ReplicatedServerLastTransformUpdateTimeStamp. Only AI use linear smoothing in FN. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545559 by Zak.Middleton on 2017/07/19 20:47:18. #ue4-athena - Converted all RPCs on UCharacterMovementComponent to be on ACharacter instead, to avoid the bandwidth overhead of calling RPCs on a component. Existing overrides of _Implementation and _Validate functions should remain unchanged. If for some reason someone overrode the old RPC virtuals, those are now non-virtual on UCharacterMovementComponent but are still virtual on ACharacter. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3557564 by Zak.Middleton on 2017/07/26 20:13:43. #ue4-athena - Throttle character movement server corrections and acks to the client based on time since last adjustment. Cuts down on network traffic for character movement. Added configurable settings to control this. Set times to zero to disable this. - NetworkMinTimeBetweenClientAckGoodMove - NetworkMinTimeBetweenClientAdjustments - NetworkMinTimeBetweenClientAdjustmentsLargeCorrection - NetworkLargeClientCorrectionDistance #ue4-athena - Perf: (EditMerge CL 3492200 from Dev-Framework): Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561669 by Zak.Middleton on 2017/07/28 14:16:19. #ue4-athena - Perf: (EditMerge CL 3468253 from Dev-AnimPhys): Remove the need for calling constructors for physx PxRaycastHit in the dynamic hit result buffer. Saves 30% of the cost of doing small raycasts. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561672 by Zak.Middleton on 2017/07/28 14:17:12. #ue4-athena - Perf: (EditMerge CL 3359553 from Dev-Framework): Optimization in CharacterMovement tick to not extract transform values twice. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561674 by Zak.Middleton on 2017/07/28 14:18:04. #ue4-athena - Perf: (EditMerge CL 3426174 from Dev-Framework): Avoid call to virtual getSimulationFilterData() to only use it when needed in PreFilter if we actually have items in the IgnoreComponents list (which is rare). The sim filter data 'word2' stores the component ID. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561709 by Zak.Middleton on 2017/07/28 14:32:11. #ue4-athena - Perf: (EditMerge CL 3382054 from Dev-Framework): Optimize CharacterMovementComponent::GetPredictionData_Client_Character() and GetPredictionData_Server_Character() to remove virtual calls. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561856 by Zak.Middleton on 2017/07/28 15:11:57. #ue4-athena - Use less bandwidth for CharacterMovement RPCs when the character is not standing on any component (ie during jumps and falling). Added separate "...NoBase()" versions of ServerMove() and ServerMoveDual(). Undid part of 3557564 and restored the CMC functions to be virtual, and removed virtual keyword from matching Character functions, so that overrides are in one consistent place. Also guarantees backwards compat for licensees. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3564858 by Zak.Middleton on 2017/07/31 15:24:39. #jira Fort-1 Change 3562825 by Chris.Gagnon Added CommonCustomNavigation Widget, this widget can be used to capture navigation requests to handle in custom ways. #jira FORT-0 Change 3562098 by Josh.Markiewicz #UE4 Encryption token/ack changes - moved encryption token request/ack to delegates - moved FNetworkNotify to NetworkDelegates.h - moved connection logic out of GameInstance and back into networking code -- GameInstance sends an enum and the network code does the right thing based on that #review-3559694 @ryan.gerleve #tests PC dedicated server connections golden path and forced failures #jira FORT-0 Change 3559354 by Luke.Thatcher [FORTNITE] [PS4] [^] Merging (as edit) support for setting flip rate on PS4 (CLs 3555687 and 3558843) from //Fortnite/Dev-Athena/... to //Fortnite/Main/... - Allowed rates are now 60Hz, 30Hz and 20Hz. - Exposed by r.PS4FlipRate CVar, set to 60Hz by default. Requires r.Vsync 1. #jira FORT-49463 Change 3532644 by Jeff.Campeau Fix mapping current culture to movie audio channels using data table to map languages to track indices. Don't rewind cinematics (they all start from the begining because we load them and play them once). Seeks cause us to have to redecode video frames at a large perf cost. Delay cutscene playback by 0.5 seconds to give us time to build up a buffer of decoded video. (Temporary workaround for audio/video sync). Generic implementation for getting current languages in BP. Fix more issues with calling into media source functionality when using the source reader (potential hangs). #jira FORT-44376,FORT-48209,FORT-48040 #testedon Preflight from last night combined with Bob's changes from today clear all known issues. This change tested on Xbox and PC multiple times each. Change 3527761 by Chris.Gagnon Fixed various issues in the widget switcher, also added Advanced calls that allow the user to specify if activation/deactivation should occur. #jira FORT-47988, FORT-47984 Change 3525390 by Jeff.Campeau Remove media player log spam #jira FORT-47393 #testedon compiled client Change 3518692 by Chris.Gagnon Added CleanOperation Adding which will remove unneeded op combinations from the op queue. Also added the ability to suspend starting operation queue processing to allow complex operations to accumulate and in turn allow the Clean Op adding code to be effective. GameFeedback, and the widget switcer utilize this to avoid unnesacary activations of a screen that is immediately being deactivated. Root issue of the mentioned bug is that activation of the quest screen created a latent navigation du to the deferal of scrolling into view. This is still an issue in general, there isn't much we can do about it. Other than avoid activating a panel that will deactivated that frame as we did with the code changes in this CL. #jira FORT-47395 Change 3514658 by Jeff.Campeau Fixed a media player threading issue where the OnMediaOpened event could be called before the media Init script completed. Moved the event Cinematic used when setting up and playing media after media file load to use a delayed event from the MovieWidget so that it will always happen after the movie widget processing. Fixed an issue that could cause samples to leak in MfMedia plugin and cause ReadSample to lockup. Fixed an issue where a default texture is displayed for movies before the movie starts playing (the player may be active before the first frame of the video is decoded). Default is now all black as it is expected that this texture will be displayed for several frames. #jira FORT-46801 #testedon Xbox through rocket launch cinematic including vintertip for stairs, skill tree nodes, and victory result video Change 3507896 by Ryan.Gerleve Changed the net.UseEncryptionToken to be more useful and renamed it to net.AllowEncryption. This cvar, if 0, will prevent the PacketHandler from adding the configured encryption component, and prevent UPendingNetGame and AOnlineBeaconClient from filling out the EncryptionToken parameter of NMT_Hello - which prevents the extra encryption handshake connection step. #jira FORT-46878 #review-3507897 @josh.markiewicz Change 3503928 by Ryan.Gerleve Add safety checks around some of the encryption functionality. Fixes a server crash seen during load testing. #jira FORT-46772 #review-3503929 bob.tellez #robomerge ReleaseNext [CL 3673993 by Bob Tellez in Main branch]
2017-09-30 03:42:01 -04:00
// validate exported data
// shrink arrays before counting memory
// it will be reallocated when adding to octree and RemoveNode will have different value returned by GetAllocatedSize()
Merging from //UE4/Fortnite-Staging up to CL#3673800 based on CL#3664064 from //Fortnite/Main #rb none #lockdown Nick.Penwarden ================================================================================================= THESE CHANGES TOUCH MULTIPLE PLATFORMS AND/OR RESTRICTED FOLDERS. YOU MUST REVIEW THESE MANUALLY AND APPEND THEM TO THE DESCRIPTIONS FOR THE APPROPRIATE PLATFORMS. ================================================================================================= Change 3662267 by Nick.Darnell Engine - Fixing a bug in GetAccurateRealTime, it wasn't subtracting GStartTime, which if you don't prevents accurate platform time when you try to store it in a float. #jira nojira Change 3662176 by Ben.Marsh Disable image integrity report generation if a debugger is attached, and in editor builds. #jira FORT-55656 Change 3656958 by Luke.Thatcher [FORTNITE] [CONSOLE] [+] Improved frame syncing mechanism - Improves input latency by allowing the game thread to sync to the swap chain flip of the previous frame. - Added "r.GTSyncType" CVar to control how the game thread syncs with the rest of the pipe. - r.GTSyncType 2 will sync the game thread with the flip of the swap chain, preventing the pipe from getting too long and causing excess input latency. Platforms are required to implement RHIWaitForFlip and RHISignalFlipEvent, and call RHIInitializeFlipTracking on RHI startup. A separate thread monitors the progress of frame flips and signals task graph events as they pass their corresponding frame index. In r.GTSyncType 2 mode, the game thread is signaled by this flip tracking thread. [~] Unified platform specific sync interval CVars (D3D12.SyncInterval, D3D11.SyncInterval, r.PS4FlipRate, RHI.SyncIntervalOgl) into one: rhi.SyncInterval - 1 == 60Hz - 2 == 30Hz - 3 == 20Hz [-] Removed large number in XboxOneTime. Adding this arbitrary number prevents us from comparing timestamps from FPlatformTime::Seconds() and various OS callbacks (e.g. flip timings). #jira FORT-50803 Change 3655598 by Lukasz.Furman added filtering for navmesh's low height spans to fix crash on layer partitioning % of span reductions depends on presence of stair or roof building in navmesh tile, changed failsafes in layer code to ignore entire tile if heightfield is too complex to partition instead of reallocating memory #jira FORT-35375 Change 3648972 by Keith.Judge Add analytics to help diagnose default parameter collection buffer issue. +++ REMOVE ONCE CORE ISSUE IS SOLVED +++ #jira FORT-54690 Change 3648756 by Bart.Hawthorne Integrate 3645298 from //UE4/Dev-Networking Deprecate GetNetworkObjectInfo in favor of separate FindNetworkObjectInfo and FindOrCreateNetworkObjectInfo methods. #jira none Change 3643090 by Josh.Markiewicz #UE4 - proper handling of "pending connection lost" - triggered only if a connection is lost and there no "owning actor" to deal with the connection loss -- added Rejoin and CleanedUp states to connection to make sure that the pending connection lost delegate only fires at the appropriate time - delegate returns the unique id of the player if known (still possible to be unknown if connection lost after NMT_Hello) - changed debug output on timeout if the net connection was already in the process of being destroyed -- occurs when game hitches during the pending destroy 2 second wait -- ReceivedAcks should have been called to clean things up quietly in those 2 seconds but blocking the game thread will cause the cleanup to look like a timeout - added userid to UNetConnection::Describe - bad split screen player handling of unique id -- splitscreen uniqueid was overwriting the primary player id -- only store the id on the child connection - added some clarifying comments #review-3642816 @ryan.gerleve, @bob.tellez, @sam.zamani, @bart.hawthorne, @dave.ratti #jira FORT-26776 Change 3639043 by Alex.Thurman Fix CommonTreeView SetSelection to correctly update list navigation, and behave similarly to CommonListView's SetSelectedItem. #JIRA FORT-45841 Change 3632275 by Seth.Weedin #JIRA FORT-54203 - Add clamps to ActiveSound fade interpolation to prevent unwanted volume spikes. Remove 0.01 start time for single-fire audio cues. Should remove the sudden pops sometimes heard when firing weapons, as well as smooth out fade volume in general. Change 3626944 by Josh.Markiewicz #UE4 - added "updates connection status" flag to ServiceConfigMCP - disable updates on Cloud and Friend services (Fortnite only) - removed overloaded ProcessConnectionStatus function in cloud service #jira FORT-53113 Change 3626226 by Stewart.Lynch LLM Update - Memory reductions, Summary page, enum scopes, refactor and cleanup of tags * Remove all static arrays and hard limits from LLM. Everything is now dynamically allocated using the internal LLM allocators. The overhead when LLM is disabled is now only 48K (was 40MB) * re-wrote LLMMap. Now stores an int32 index rather then pointer in the HashMap array. Also, changed the Values to be arrays for structs instead of structs of arrays. Means that the tag can be stored in a single byte. Changed the size of the allocation size from int64 to int32. All this takes the memory down from around 600MB to 100MB. It was 120 bytes per allocation, now 29 bytes. * changed all LLM scopes over to enums. This has a number of benefits; LLM can be enable in Test, less CPU overhead, stored in a byte (LLM overhead /= 8) * summary page for content creators where all lower-level stats are grouped under one Engine stat * renamed ELLMScopeTag enum to ELLMTag * renamed LLM_SCOPED_TAG_WITH_ENUM macro to LLM_SCOPE * removed Tracker arg from LLM_SCOPE and added LLM_PLATFORM_SCOPE macro * fixed GenericPlatformMallocCrash stat. Although it seems not be be used anymore * fixed BackupOOMMemoryPool stat (now shows in both default and platform pages) * added separate LLM enums for XB1, PS4 and D3D12 (PS4LLM.cpp/h etc.) * lots of changes adding/removing/renaming tags * added LLMArray and FLLMObjectAllocator classes * disabled asset tag tracking by default because it takes up so much memory even when not used * enable LLM in all non-shipping builds. In Test the on screendisplay won't show because it uses the stats system but it till still write out the csv. * all the stat macros have been left as they were and can be enabled on the LLM_STAT_TAGS_ENABLED define. These are needed for the asset tagging. * disabled LLM_TRACK_PEAK_MEMORY because there is a problem with the way it adds the peaks for multiple threads. This needs to be fixed. * added a CVar to control the csv write interval: LLM.LLMWriteInterval * added static arrays for the enum tags setup. Easier to manage and removes need for slow switch statements. * renamed FLLMThreadStateManager to FLLMTracker to make it consistent with the enum * fixed program size stat which was broken recently on PS4. This was due to initialisation order and global platform stats setup #jira NONE-01 Change 3622978 by Lukasz.Furman changed WeaponStatus BT decorator to be event driven, fixes AI trying to check ranged weapon abilities without valid weapon includes copy of CL# 3620700 #jira FORT-45914 #review-3622979 John.Abercrombie Change 3622340 by Josh.Markiewicz #UE4 - playerid netconnection variable setup properly on clients and servers for both beacons and game net drivers - ipconnection prints uniqueid with lowleveldescribe #jira fort-0 Change 3621386 by Tim.Tillotson Add the ability to retry HTTP operations by VERB. This allows us to automatically retry cloud save PUT operations. #JIRA FORT-53717 #review-3621317 @Josh.Markiewicz @Ian.Fox @Carlos.Cuello Change 3620517 by Keith.Judge Xbox One - Revert iOS behaviour for the depth bias back to how it was, and make separate XB1 change use its own define to avoid confusion. #jira FORT-53928 Change 3620248 by Lukasz.Furman changed behavior of UBTTask_MoveTo.bStopOnOverlap flag after recent AcceptanceRadius fix, updated comments to be more detailed #jira nojira Change 3616187 by Bob.Tellez #UE4 Throwing an error (for now) if you attempt to use both the malloc profiler and leak detection at the same time since it causes a deadlock. #JIRA UE-0 Change 3613935 by Peter.Knepley More logging on update launcher launching #jira nojira #robomerge rp rn Change 3613537 by Marcus.Wassmer Safety asserts around the MarkPendingKill feature for rendering classes. #jira FORT-50385 Change 3613399 by Arne.Schober Extended ShowMaterialDrawEvents to enable it only in very specific passes and default enabled Depth for Fortnite on PS4 to track down a crash. #RB Marcus.Wassmer #jira FORT-53610 Change 3610794 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce UMG class memory #jira UE-52043 #ROBOMERGE-SOURCE: CL 3610792 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3610144 by Stewart.Lynch General LLM improvements * added tracking for misc task graph tasks (moves 20MB out of Untagged) * renamed EngineTick to EngineMisc * added tracking for FName * added tracking for GC_ProcessObjectArray potential leak * renamed index & vertex buffers stat to Meshes * added hooks for MemPro to track allocations from a single category. Currently defined out. I haven't added MemPro.cpp/h. * removed AVAILABLE_PHYSICAL stat from LLM csv * csv files now include the date in the filename * fixed potential threading bug when reading stat values to csv * made IsDebugMemoryEnabled() always return false in shipping and if not runnong on a dev-kit (PS4). The reason is that the function is a bit hacky, and should only be used for debug purposes, such as displaying the on screen warning. * added lots more scopes * started changing Stat scopes to enum scopes. Stat scopes will be phased out. * added tracking of FName memory * added llmplatform tracking for XBoxSymbols * added llm tracking for CPU symbol allocations (20MB) * wrote an allocator for XBoxOneStack reading so that it doesn't go through Malloc and get tracked by LLM. * added tracking for GC * fixed tracking for TransientMemoryAllocator * added tracking for networking memory * added more audio memory tracking * added tracking for blueprints * added tracking for static meshes * show on screen warning if debug memory is enabled * added tracking for particles * renamed Phys to PhysX and added more scopes * renamed Slate to UI and added more scopes * much better coverage of networking memory * improved coverage of audio #jira FORT-53420 Change 3610136 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce size of UStaticMeshComponent by 224 bytes (cumulative, 64 bytes exclusive) Reduce size of UPrimitiveComponent by 176 bytes (cumulative, 64 bytes exclusive). Reduce size of USceneComponent by 112 bytes. Reduce size of FLightingChannels from 3 bytes to 1. Reduce size of FBodyInstance by 16 bytes. #jira FORT-52043 #ROBOMERGE-SOURCE: CL 3610134 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607937 by robomerge #ROBOMERGE-AUTHOR: paul.moore #jira FORT-53105 - Fix websocket not providing information when the peer closes the connection. #ROBOMERGE-SOURCE: CL 3607933 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607042 by Bart.Hawthorne Move replay.Loop functionality into the demo net driver and rename it demo.Loop #jira none Change 3605448 by robomerge #ROBOMERGE-AUTHOR: seth.weedin #Athena - Pass owner to ActiveSounds created using PlaySoundAtLocation/PlaySound2D to allow "Limit to Owner" concurrency rules to work. Hook up for weapon sounds. #JIRA FORT-53180 #ROBOMERGE-SOURCE: CL 3605443 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3604787 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Initial support for hotfixing live assets from .ini files - This allows clients and server to patch certain assets in memory whenever .ini file hotfixes are downloaded - Only CurveTables and DataTables are supported for now - The new asset content must be in Json format, the same format the editor uses for importing - Assets that are hotfixed will be synchronously loaded if they're not already in memory. They'll be retained in memory afterwards. - IMPORTANT: Json data must be supplied on a single line, and all double quotes must be escaped! - The changes must go in the Game.ini file and use the following syntax: [AssetHotfix] +CurveTable=("/Game/Folder/MyCurveTable","[{\"Name\":\"Default\"}]") +DataTable=("/Game/Folder2/MyDataTable","[{\"Name\":\"Foo\"}]") #jira FORT-52099 [CODEREVIEW] frank.gigliotti [FYI] peter.knepley,bob.tellez #ROBOMERGE-SOURCE: CL 3604784 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3602067 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Loading time improvements - This shaves off up to 10 seconds of load time on PS4 in Athena Details: - Fixed multiple sub-levels not being able to be enqueued for loading in a single client frame. Athena has ~300 sub-levels, so this ended up wasting up many seconds. - Fixed 3D world being rendered while loading (frees up game thread cycles for throttled streaming) - UWorld::AllowLevelLoadRequests() was not allowing load requests to go through while an async load was in progress and the match had started. It now allows this as long as the world isn't being rendered (loading screen.) - Eliminated extra 2 second delay before loading screen is dismissed (in Athena only) - Note: A side effect of this change is that the progress bar may not update as smoothly on loading screen. We'll look at tuning the throttle settings if it ends up being a problem. [CODEREVIEW] ori.cohen #jira AT-1477 #ROBOMERGE-SOURCE: CL 3602061 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3601951 by Luke.Thatcher [FORTNITE] [PS4] [!] Fix memory stats in the old PS4 memory system - Physical memory stat now includes garlic and onion allocations. CPU OOMs will result in "AvailablePhysical" being close to 0. - Added garlic, onion and defrag stats to the platform memory stats struct. - Added fixed pool sizes to platform memory stats. - Modified the Fortnite heartbeat logging to include extra details of PS4 fixed sized pools. #jira FORT-52910 Change 3600340 by robomerge #ROBOMERGE-AUTHOR: wes.hunt All Fort analytics events now contain a GameState attribute indicating the active GameState ClassName when the event is sent. Added some new context to crashreporter to help identify Athena matches near and long term. * Near Term: GameNameSuffix - set via FCoreDelegates::CrashOverrideParamsChanged * Added bools to the params to indicate WHICH ones are changing * Allows you to set only some values, and clear them out. * Hooked up in FortGameState::PostInitializeComponents. * FortGameState clears it (for returning to main menu). * FortGameStateAthena sets it (for going into an Athena match). * Only does this when it's a true GameMode GameState instance (ie, not PIE) so PIE crashes aren't modified. * Long Term: GameStateName - set via FCoreDelegates::GameStateClassChanged. * This works for ANY crash on ANY game. * Hooked up in GameState::HandleMatchIsWaitingToStart. #jira AT-1457 #jira AT-519 [CODEREVIEW] peter.knepley,josh.markiewicz #ROBOMERGE-SOURCE: CL 3600278 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3597593 by Ben.Zeigler #jira FORT-50722 Fix issues where AssetBundles weren't being correctly updated during cook, which is blocking both Noland and Abercrombie Partial copy of CL #3402335 and #3526538 #robomerge rp, rn Change 3597577 by Luke.Thatcher [FORTNITE] [PS4] [~] Modified the way memory is allocated on Playstation to make more memory available to the CPU. - Previously the amount of texture memory wasn╞t fixed due to the way the defrag memory is allocated on PS4. This meant we had to have a significant amount of slack. - With the new configuration, we have a guaranteed texture memory pool, so the slack can be significantly smaller, meaning we can give more memory to the CPU, which is where most of our memory pressure is. #jira FORT-50825 #jira FORT-49688 #jira FORT-49695 #jira FORT-50054 Change 3596556 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Enable GC clustering for actors and blueprints in Fortnite - This shaves off about 10 ms on GC frames in Athena on PS4 (~52 ms -> 42 ms) - Clustering doesn't work on building actors because they're very dynamic, but general Fort static meshes and blueprints are clustered! - This gets us into the realm of shippability on console for very large UObject counts [FYI] bob.tellez,peter.knepley,michael.noland #jira AT-1440 #ROBOMERGE-SOURCE: CL 3596552 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3593994 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Force largest distance field atlas size in Athena - We now force the largest distance field atlas size before preloading Athena content (512x512x1024 = 256 MB). This helps with load times because it's expensive to re-create this texture on consoles, and typically it gets resized over a dozen times. - Added new CVar "r.DistanceFields.ForceMaxAtlasSize" (defaults to zero) - Important: Currently we never "reset" this atlas texture. This will be a problem when going back to play Campaigns after preloading to play Athena. I will look into this soon! [CODEREVIEW] peter.knepley,marcus.wassmer,michael.noland,daniel.wright #jira AT-1477 #ROBOMERGE-SOURCE: CL 3593992 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592096 by robomerge #ROBOMERGE-AUTHOR: ben.salem Prototype of gauntlet memory soak test. Not fully fiinished, but want changes in tonight's cook so we can experiment on cooked build tomorrow morning. #jira FORT-0 #ROBOMERGE-SOURCE: CL 3592025 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592085 by robomerge #ROBOMERGE-AUTHOR: mike.fricker HLOD: Added support for a fixed distance override via CVar - Use this to force all HLODs to transition at a specific distance, regardless of their TransitionSize/MinDrawDistance/LODDrawDistance - New CVar: r.HLOD.DistanceOverride (defaults to 0) - Fortnite uses 350m for this distance, fornow [CODEREVIEW] jurre.debaare #jira AT-1462 #ROBOMERGE-SOURCE: CL 3591929 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3587391 by Michael.Noland Fortnite: Lots of memory tracking stuff - Added memory logging to game state transitions and overall health tracking for the entire session - Added support for Gauntlet-based tests to Fortnite - Enabled the Gauntlet plugin (and fixed spaces instead of tabs in the .uproject file) - Added code to set gauntlet state based on the current subclass of AFortGameState - Added a base controller and a memory report controller (WIP, ported from equivalents in Paragon) - Updated FortniteClient to use MALLOC_LEAKDETECTION=1, PLATFORM_USES_FIXED_GMalloc_CLASS=0, and AllowASLRInShipping=false in Development builds (may enable them in Test builds in a future CL, to match Paragon) #jira FORT-50567 Change 3583307 by Peter.Knepley Need non-jittered ViewToClip matrix in order to do "after tonemapper" postprocess blendable material that's positioned in view space Modify the AttachScope material function to use "ViewSpaceTransformToClipSpace" instead of going back to world space first. This also means it can utilitize the ViewToClipNoAA matrix. #jira AT-733 Change 3582378 by Luke.Thatcher [FORTNITE] [~] Unify Xbox and PS4 scalability settings and device profiles. - All Xbox and PS4 r. CVars are overriden in their platform's Scalability.ini file. The device profile only selects sg. groups. - Fixed the Neo 4K profile for Fortnite. Previously players with 4K monitors would choose the Neo_4K profile, which looks worse than Neo, but still renders at 1080p. - Console specific settings have to live in the Base/Default .ini's, as the cooker doesn't load the console specific files. This is fixed in UE4 Main. #jira FORT-50206 Change 3580934 by Luke.Thatcher [FORTNITE] [PS4] [+] Support different garlic and onion heap sizes in the old memory system for base and neo. - Neo has 512 MB more direct memory than a base kit. - Increased the garlic heap size by 416 MB on Neo, and CPU heap by 96 MB. #jira FORT-50206 Change 3576664 by Bart.Hawthorne Re-enable Oodle and add Mac implementation. Also includes fixed oodle libraries by MichaelT. #jira FORT-49986 #tests Connected to PC server with editor -game build on Mac in Athena Change 3575671 by Nick.Darnell Athena - The gameplay ability system now supports adding Gameplay Cue's with params. Now using cues instead of gameplay effects in order to notify when the bandaging/shielding begin and end. THe new method should properly show and disappear on time, b/c it's all client side. Added a way in the Athena Context to easily hook gameplay "UI" cues that are rebroadcast from the Athena Pawn. #jira AT-644 Change 3575534 by Peter.Knepley Ability montage replication optimizations #jira AT-955 Change 3573305 by Lukasz.Furman disabled path section update when crowd simulated AI is moving through navlink, fixed AI getting stuck in some corners #jira FORT-49748 Change 3566775 by John.Abercrombie Optimizations from Dev-Athena - Tested with PIE & and 2 Player local server game #ue4-athena - (merge CLs 3345771 and 3363030 from Framework) - Refactored CharacterMovementComponent determination of net send rate when combining moves into a virtual function GetClientNetSendDeltaTime(). Added configurable values to GameNetworkManager under [/Script/Engine.GameNetworkManager]. For Fortnite, set unthrottled (<= 10 player) limit to 60Hz (from 90Hz), and trying throttled at 30Hz (from 45Hz). #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545535 by Zak.Middleton on 2017/07/19 20:15:17. #ue4-athena - (merge CL 3377054 from Framework) - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545452 by Zak.Middleton on 2017/07/19 18:57:45. #athena - If network smoothing mode is not linear, don't replicate ReplicatedServerLastTransformUpdateTimeStamp. Only AI use linear smoothing in FN. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545559 by Zak.Middleton on 2017/07/19 20:47:18. #ue4-athena - Converted all RPCs on UCharacterMovementComponent to be on ACharacter instead, to avoid the bandwidth overhead of calling RPCs on a component. Existing overrides of _Implementation and _Validate functions should remain unchanged. If for some reason someone overrode the old RPC virtuals, those are now non-virtual on UCharacterMovementComponent but are still virtual on ACharacter. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3557564 by Zak.Middleton on 2017/07/26 20:13:43. #ue4-athena - Throttle character movement server corrections and acks to the client based on time since last adjustment. Cuts down on network traffic for character movement. Added configurable settings to control this. Set times to zero to disable this. - NetworkMinTimeBetweenClientAckGoodMove - NetworkMinTimeBetweenClientAdjustments - NetworkMinTimeBetweenClientAdjustmentsLargeCorrection - NetworkLargeClientCorrectionDistance #ue4-athena - Perf: (EditMerge CL 3492200 from Dev-Framework): Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561669 by Zak.Middleton on 2017/07/28 14:16:19. #ue4-athena - Perf: (EditMerge CL 3468253 from Dev-AnimPhys): Remove the need for calling constructors for physx PxRaycastHit in the dynamic hit result buffer. Saves 30% of the cost of doing small raycasts. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561672 by Zak.Middleton on 2017/07/28 14:17:12. #ue4-athena - Perf: (EditMerge CL 3359553 from Dev-Framework): Optimization in CharacterMovement tick to not extract transform values twice. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561674 by Zak.Middleton on 2017/07/28 14:18:04. #ue4-athena - Perf: (EditMerge CL 3426174 from Dev-Framework): Avoid call to virtual getSimulationFilterData() to only use it when needed in PreFilter if we actually have items in the IgnoreComponents list (which is rare). The sim filter data 'word2' stores the component ID. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561709 by Zak.Middleton on 2017/07/28 14:32:11. #ue4-athena - Perf: (EditMerge CL 3382054 from Dev-Framework): Optimize CharacterMovementComponent::GetPredictionData_Client_Character() and GetPredictionData_Server_Character() to remove virtual calls. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561856 by Zak.Middleton on 2017/07/28 15:11:57. #ue4-athena - Use less bandwidth for CharacterMovement RPCs when the character is not standing on any component (ie during jumps and falling). Added separate "...NoBase()" versions of ServerMove() and ServerMoveDual(). Undid part of 3557564 and restored the CMC functions to be virtual, and removed virtual keyword from matching Character functions, so that overrides are in one consistent place. Also guarantees backwards compat for licensees. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3564858 by Zak.Middleton on 2017/07/31 15:24:39. #jira Fort-1 Change 3562825 by Chris.Gagnon Added CommonCustomNavigation Widget, this widget can be used to capture navigation requests to handle in custom ways. #jira FORT-0 Change 3562098 by Josh.Markiewicz #UE4 Encryption token/ack changes - moved encryption token request/ack to delegates - moved FNetworkNotify to NetworkDelegates.h - moved connection logic out of GameInstance and back into networking code -- GameInstance sends an enum and the network code does the right thing based on that #review-3559694 @ryan.gerleve #tests PC dedicated server connections golden path and forced failures #jira FORT-0 Change 3559354 by Luke.Thatcher [FORTNITE] [PS4] [^] Merging (as edit) support for setting flip rate on PS4 (CLs 3555687 and 3558843) from //Fortnite/Dev-Athena/... to //Fortnite/Main/... - Allowed rates are now 60Hz, 30Hz and 20Hz. - Exposed by r.PS4FlipRate CVar, set to 60Hz by default. Requires r.Vsync 1. #jira FORT-49463 Change 3532644 by Jeff.Campeau Fix mapping current culture to movie audio channels using data table to map languages to track indices. Don't rewind cinematics (they all start from the begining because we load them and play them once). Seeks cause us to have to redecode video frames at a large perf cost. Delay cutscene playback by 0.5 seconds to give us time to build up a buffer of decoded video. (Temporary workaround for audio/video sync). Generic implementation for getting current languages in BP. Fix more issues with calling into media source functionality when using the source reader (potential hangs). #jira FORT-44376,FORT-48209,FORT-48040 #testedon Preflight from last night combined with Bob's changes from today clear all known issues. This change tested on Xbox and PC multiple times each. Change 3527761 by Chris.Gagnon Fixed various issues in the widget switcher, also added Advanced calls that allow the user to specify if activation/deactivation should occur. #jira FORT-47988, FORT-47984 Change 3525390 by Jeff.Campeau Remove media player log spam #jira FORT-47393 #testedon compiled client Change 3518692 by Chris.Gagnon Added CleanOperation Adding which will remove unneeded op combinations from the op queue. Also added the ability to suspend starting operation queue processing to allow complex operations to accumulate and in turn allow the Clean Op adding code to be effective. GameFeedback, and the widget switcer utilize this to avoid unnesacary activations of a screen that is immediately being deactivated. Root issue of the mentioned bug is that activation of the quest screen created a latent navigation du to the deferal of scrolling into view. This is still an issue in general, there isn't much we can do about it. Other than avoid activating a panel that will deactivated that frame as we did with the code changes in this CL. #jira FORT-47395 Change 3514658 by Jeff.Campeau Fixed a media player threading issue where the OnMediaOpened event could be called before the media Init script completed. Moved the event Cinematic used when setting up and playing media after media file load to use a delayed event from the MovieWidget so that it will always happen after the movie widget processing. Fixed an issue that could cause samples to leak in MfMedia plugin and cause ReadSample to lockup. Fixed an issue where a default texture is displayed for movies before the movie starts playing (the player may be active before the first frame of the video is decoded). Default is now all black as it is expected that this texture will be displayed for several frames. #jira FORT-46801 #testedon Xbox through rocket launch cinematic including vintertip for stairs, skill tree nodes, and victory result video Change 3507896 by Ryan.Gerleve Changed the net.UseEncryptionToken to be more useful and renamed it to net.AllowEncryption. This cvar, if 0, will prevent the PacketHandler from adding the configured encryption component, and prevent UPendingNetGame and AOnlineBeaconClient from filling out the EncryptionToken parameter of NMT_Hello - which prevents the extra encryption handshake connection step. #jira FORT-46878 #review-3507897 @josh.markiewicz Change 3503928 by Ryan.Gerleve Add safety checks around some of the encryption functionality. Fixes a server crash seen during load testing. #jira FORT-46772 #review-3503929 bob.tellez #robomerge ReleaseNext [CL 3673993 by Bob Tellez in Main branch]
2017-09-30 03:42:01 -04:00
ElementData.ValidateAndShrink();
}
const int32 ElementMemoryChange = IntCastChecked<int32>(ElementData.GetGeometryAllocatedSize()) - OrgElementMemory;
const_cast<FNavigationOctree*>(this)->NodesMemory += ElementMemoryChange;
INC_MEMORY_STAT_BY(STAT_Navigation_CollisionTreeMemory, ElementMemoryChange);
}
void FNavigationOctree::DemandChildLazyDataGathering(FNavigationRelevantData& ElementData, INavRelevantInterface& ChildNavInterface)
{
LLM_SCOPE_BYTAG(NavigationOctree);
if (IsLazyGathering(ChildNavInterface))
{
ChildNavInterface.GetNavigationData(ElementData);
ElementData.ValidateAndShrink();
}
}
#if !UE_BUILD_SHIPPING
void FNavigationOctree::SetGatheringNavModifiersTimeLimitWarning(const float Threshold)
{
GatheringNavModifiersTimeLimitWarning = Threshold;
}
#endif // !UE_BUILD_SHIPPING
bool FNavigationOctree::IsLazyGathering(const INavRelevantInterface& ChildNavInterface) const
{
const ENavDataGatheringMode GatheringMode = ChildNavInterface.GetGeometryGatheringMode();
const bool bDoInstantGathering = ((GatheringMode == ENavDataGatheringMode::Default && DefaultGeometryGatheringMode == ENavDataGatheringMode::Instant)
|| GatheringMode == ENavDataGatheringMode::Instant);
return !bDoInstantGathering;
}
void FNavigationOctree::AddNode(UObject* ElementOb, INavRelevantInterface* NavElement, const FBox& Bounds, FNavigationOctreeElement& Element)
{
LLM_SCOPE_BYTAG(NavigationOctree);
if (!Bounds.IsValid)
{
UE_LOG(LogNavigation, Warning, TEXT("%s: Ignoring %s because bounds are invalid."), ANSI_TO_TCHAR(__FUNCTION__), *GetNameSafe(ElementOb));
return;
}
// we assume NavElement is ElementOb already cast
Element.Bounds = Bounds;
if (NavElement)
{
const bool bDoInstantGathering = !IsLazyGathering(*NavElement);
if (bGatherGeometry)
{
UActorComponent* ActorComp = Cast<UActorComponent>(ElementOb);
if (ActorComp)
{
Async Static Mesh Compilation / Loading - Add protection against async property accessed during async build and postload. - Split PostLoad into 3 steps with the most part now being made async. - Make Build/BatchBuild API async when the feature is activated. - Add a new StaticMesh compilation manager. (This will be refactory later to reduce duplicated code with texture compiler). - Skip RenderState creation for any static mesh component still being built so they only show up when ready. - Fixed DistanceField and MeshCard computation that might trigger too soon if fixups are required to RenderData during PostLoad. - Dynamic priorisation for building and updating static meshes nearest to the viewport. - Implement different PIE modes, current default is to stall only for mesh that might affect nagivation/collision for players/bots. - Add a new generic interface for assets being built (still a WIP). - Add ability in FrontEnd filters to skip serialization of asset being async compiled and refresh when compilation finishes. - Prevent auto-save while textures and static meshes are being built (same as shaders) - Logic has been reordered in some Fortnite Building Component to avoid unnecessarily touching static mesh properties. General Optimizations - Use cached thumbnails until shaders/textures/static meshes are ready to improve performance and avoid rendering incomplete thumbnails. DEBUGGING - Can be forcibly enabled/disabled through command-line via -asyncstaticmeshcompilation=[off, on, paused] - Can pause staticmesh compilation using Editor.AsyncStaticMeshCompilation = 2 or -asyncstaticmeshcompilation=paused - Can manually resume a specified amount of paused compilation using Editor.AsyncStaticMeshCompilationResume [Num] - Can forcibly wait on all compilation using Editor.AsyncStaticMeshCompilationFlushAll BENCHMARKS - 2m19s to 17.9s for Loading FortGPUTestbed's LumenTest with an empty local only DDC - 2h45m to 5mxxs for Loading Reverb's P_World with an empty local only DDC - 17m29 to 10m27s for Loading Apollo_Terrain_Edit with an empty local only DDC TESTS - Loading maps from Reverb, Fortnite, ShooterGame, QAGame, FortGPUTestbed - Content browser interactions while still under heavy compilation - Importing with Datasmith / Dataprep - Working with the new Mesh Modeling Tool - Shutting down the editor while loading - Most of EngineTest Test Suite REFERENCES - Design https://docs.google.com/document/d/1O4GI1G9AtQN6l0SaGFfXw0DyNhlLunLoEqne5INvxIQ - Documentation https://docs.google.com/document/d/1KCdFEMhhcsGwfgOisTVwlOwtsmEd7qbB0V6Tc39Gb10 #rb Francis.Hurteau [CL 14688146 by danny couture in ue5-main branch]
2020-11-09 07:50:34 -04:00
bool bIsActorCompiling = false;
#if WITH_EDITOR
IInterface_AsyncCompilation* AsyncCompiledActor = Cast<IInterface_AsyncCompilation>(ActorComp);
bIsActorCompiling = AsyncCompiledActor && AsyncCompiledActor->IsCompiling();
#endif
// Skip custom navigation export during async compilation, the node will be invalidated once
// compilation finishes.
if (!bIsActorCompiling)
{
Async Static Mesh Compilation / Loading - Add protection against async property accessed during async build and postload. - Split PostLoad into 3 steps with the most part now being made async. - Make Build/BatchBuild API async when the feature is activated. - Add a new StaticMesh compilation manager. (This will be refactory later to reduce duplicated code with texture compiler). - Skip RenderState creation for any static mesh component still being built so they only show up when ready. - Fixed DistanceField and MeshCard computation that might trigger too soon if fixups are required to RenderData during PostLoad. - Dynamic priorisation for building and updating static meshes nearest to the viewport. - Implement different PIE modes, current default is to stall only for mesh that might affect nagivation/collision for players/bots. - Add a new generic interface for assets being built (still a WIP). - Add ability in FrontEnd filters to skip serialization of asset being async compiled and refresh when compilation finishes. - Prevent auto-save while textures and static meshes are being built (same as shaders) - Logic has been reordered in some Fortnite Building Component to avoid unnecessarily touching static mesh properties. General Optimizations - Use cached thumbnails until shaders/textures/static meshes are ready to improve performance and avoid rendering incomplete thumbnails. DEBUGGING - Can be forcibly enabled/disabled through command-line via -asyncstaticmeshcompilation=[off, on, paused] - Can pause staticmesh compilation using Editor.AsyncStaticMeshCompilation = 2 or -asyncstaticmeshcompilation=paused - Can manually resume a specified amount of paused compilation using Editor.AsyncStaticMeshCompilationResume [Num] - Can forcibly wait on all compilation using Editor.AsyncStaticMeshCompilationFlushAll BENCHMARKS - 2m19s to 17.9s for Loading FortGPUTestbed's LumenTest with an empty local only DDC - 2h45m to 5mxxs for Loading Reverb's P_World with an empty local only DDC - 17m29 to 10m27s for Loading Apollo_Terrain_Edit with an empty local only DDC TESTS - Loading maps from Reverb, Fortnite, ShooterGame, QAGame, FortGPUTestbed - Content browser interactions while still under heavy compilation - Importing with Datasmith / Dataprep - Working with the new Mesh Modeling Tool - Shutting down the editor while loading - Most of EngineTest Test Suite REFERENCES - Design https://docs.google.com/document/d/1O4GI1G9AtQN6l0SaGFfXw0DyNhlLunLoEqne5INvxIQ - Documentation https://docs.google.com/document/d/1KCdFEMhhcsGwfgOisTVwlOwtsmEd7qbB0V6Tc39Gb10 #rb Francis.Hurteau [CL 14688146 by danny couture in ue5-main branch]
2020-11-09 07:50:34 -04:00
if (bDoInstantGathering)
{
ComponentExportDelegate.ExecuteIfBound(ActorComp, *Element.Data);
}
else
{
Element.Data->bPendingLazyGeometryGathering = true;
Element.Data->bSupportsGatheringGeometrySlices = NavElement && NavElement->SupportsGatheringGeometrySlices();
}
}
}
}
SCOPE_CYCLE_COUNTER(STAT_Navigation_GatheringNavigationModifiersSync);
if (bDoInstantGathering)
{
#if !UE_BUILD_SHIPPING
const bool bCanOutputDurationWarning = GatheringNavModifiersTimeLimitWarning >= 0.0f;
const double StartTime = bCanOutputDurationWarning ? FPlatformTime::Seconds() : 0.0f;
#endif //!UE_BUILD_SHIPPING
NavElement->GetNavigationData(*Element.Data);
#if !UE_BUILD_SHIPPING
// If GatheringNavModifiersWarningLimitTime is positive, it will print a Warning if the time taken to call GetNavigationData is more than GatheringNavModifiersWarningLimitTime
if (bCanOutputDurationWarning)
{
const double DeltaTime = FPlatformTime::Seconds() - StartTime;
if (DeltaTime > GatheringNavModifiersTimeLimitWarning)
{
const UActorComponent* ObjectAsComponent = Cast<UActorComponent>(ElementOb);
const AActor* ComponentOwner = ObjectAsComponent ? ObjectAsComponent->GetOwner() : nullptr;
UE_LOG(LogNavigation, Warning, TEXT("The time (%f sec) for gathering navigation data on an INavRelevantInterface navigation element exceeded the time limit (%f sec) | NavElement = %s | Potential Component = %s | Potential Component's Owner = %s | Level = %s"), DeltaTime, GatheringNavModifiersTimeLimitWarning, *GetNameSafe(ElementOb), *GetNameSafe(ObjectAsComponent), *GetNameSafe(ComponentOwner), ElementOb ? *GetNameSafe(ElementOb->GetOutermost()) : TEXT("Invalid element"));
}
}
#endif //!UE_BUILD_SHIPPING
}
else
{
Element.Data->bPendingLazyModifiersGathering = true;
}
}
Merging from //UE4/Fortnite-Staging up to CL#3673800 based on CL#3664064 from //Fortnite/Main #rb none #lockdown Nick.Penwarden ================================================================================================= THESE CHANGES TOUCH MULTIPLE PLATFORMS AND/OR RESTRICTED FOLDERS. YOU MUST REVIEW THESE MANUALLY AND APPEND THEM TO THE DESCRIPTIONS FOR THE APPROPRIATE PLATFORMS. ================================================================================================= Change 3662267 by Nick.Darnell Engine - Fixing a bug in GetAccurateRealTime, it wasn't subtracting GStartTime, which if you don't prevents accurate platform time when you try to store it in a float. #jira nojira Change 3662176 by Ben.Marsh Disable image integrity report generation if a debugger is attached, and in editor builds. #jira FORT-55656 Change 3656958 by Luke.Thatcher [FORTNITE] [CONSOLE] [+] Improved frame syncing mechanism - Improves input latency by allowing the game thread to sync to the swap chain flip of the previous frame. - Added "r.GTSyncType" CVar to control how the game thread syncs with the rest of the pipe. - r.GTSyncType 2 will sync the game thread with the flip of the swap chain, preventing the pipe from getting too long and causing excess input latency. Platforms are required to implement RHIWaitForFlip and RHISignalFlipEvent, and call RHIInitializeFlipTracking on RHI startup. A separate thread monitors the progress of frame flips and signals task graph events as they pass their corresponding frame index. In r.GTSyncType 2 mode, the game thread is signaled by this flip tracking thread. [~] Unified platform specific sync interval CVars (D3D12.SyncInterval, D3D11.SyncInterval, r.PS4FlipRate, RHI.SyncIntervalOgl) into one: rhi.SyncInterval - 1 == 60Hz - 2 == 30Hz - 3 == 20Hz [-] Removed large number in XboxOneTime. Adding this arbitrary number prevents us from comparing timestamps from FPlatformTime::Seconds() and various OS callbacks (e.g. flip timings). #jira FORT-50803 Change 3655598 by Lukasz.Furman added filtering for navmesh's low height spans to fix crash on layer partitioning % of span reductions depends on presence of stair or roof building in navmesh tile, changed failsafes in layer code to ignore entire tile if heightfield is too complex to partition instead of reallocating memory #jira FORT-35375 Change 3648972 by Keith.Judge Add analytics to help diagnose default parameter collection buffer issue. +++ REMOVE ONCE CORE ISSUE IS SOLVED +++ #jira FORT-54690 Change 3648756 by Bart.Hawthorne Integrate 3645298 from //UE4/Dev-Networking Deprecate GetNetworkObjectInfo in favor of separate FindNetworkObjectInfo and FindOrCreateNetworkObjectInfo methods. #jira none Change 3643090 by Josh.Markiewicz #UE4 - proper handling of "pending connection lost" - triggered only if a connection is lost and there no "owning actor" to deal with the connection loss -- added Rejoin and CleanedUp states to connection to make sure that the pending connection lost delegate only fires at the appropriate time - delegate returns the unique id of the player if known (still possible to be unknown if connection lost after NMT_Hello) - changed debug output on timeout if the net connection was already in the process of being destroyed -- occurs when game hitches during the pending destroy 2 second wait -- ReceivedAcks should have been called to clean things up quietly in those 2 seconds but blocking the game thread will cause the cleanup to look like a timeout - added userid to UNetConnection::Describe - bad split screen player handling of unique id -- splitscreen uniqueid was overwriting the primary player id -- only store the id on the child connection - added some clarifying comments #review-3642816 @ryan.gerleve, @bob.tellez, @sam.zamani, @bart.hawthorne, @dave.ratti #jira FORT-26776 Change 3639043 by Alex.Thurman Fix CommonTreeView SetSelection to correctly update list navigation, and behave similarly to CommonListView's SetSelectedItem. #JIRA FORT-45841 Change 3632275 by Seth.Weedin #JIRA FORT-54203 - Add clamps to ActiveSound fade interpolation to prevent unwanted volume spikes. Remove 0.01 start time for single-fire audio cues. Should remove the sudden pops sometimes heard when firing weapons, as well as smooth out fade volume in general. Change 3626944 by Josh.Markiewicz #UE4 - added "updates connection status" flag to ServiceConfigMCP - disable updates on Cloud and Friend services (Fortnite only) - removed overloaded ProcessConnectionStatus function in cloud service #jira FORT-53113 Change 3626226 by Stewart.Lynch LLM Update - Memory reductions, Summary page, enum scopes, refactor and cleanup of tags * Remove all static arrays and hard limits from LLM. Everything is now dynamically allocated using the internal LLM allocators. The overhead when LLM is disabled is now only 48K (was 40MB) * re-wrote LLMMap. Now stores an int32 index rather then pointer in the HashMap array. Also, changed the Values to be arrays for structs instead of structs of arrays. Means that the tag can be stored in a single byte. Changed the size of the allocation size from int64 to int32. All this takes the memory down from around 600MB to 100MB. It was 120 bytes per allocation, now 29 bytes. * changed all LLM scopes over to enums. This has a number of benefits; LLM can be enable in Test, less CPU overhead, stored in a byte (LLM overhead /= 8) * summary page for content creators where all lower-level stats are grouped under one Engine stat * renamed ELLMScopeTag enum to ELLMTag * renamed LLM_SCOPED_TAG_WITH_ENUM macro to LLM_SCOPE * removed Tracker arg from LLM_SCOPE and added LLM_PLATFORM_SCOPE macro * fixed GenericPlatformMallocCrash stat. Although it seems not be be used anymore * fixed BackupOOMMemoryPool stat (now shows in both default and platform pages) * added separate LLM enums for XB1, PS4 and D3D12 (PS4LLM.cpp/h etc.) * lots of changes adding/removing/renaming tags * added LLMArray and FLLMObjectAllocator classes * disabled asset tag tracking by default because it takes up so much memory even when not used * enable LLM in all non-shipping builds. In Test the on screendisplay won't show because it uses the stats system but it till still write out the csv. * all the stat macros have been left as they were and can be enabled on the LLM_STAT_TAGS_ENABLED define. These are needed for the asset tagging. * disabled LLM_TRACK_PEAK_MEMORY because there is a problem with the way it adds the peaks for multiple threads. This needs to be fixed. * added a CVar to control the csv write interval: LLM.LLMWriteInterval * added static arrays for the enum tags setup. Easier to manage and removes need for slow switch statements. * renamed FLLMThreadStateManager to FLLMTracker to make it consistent with the enum * fixed program size stat which was broken recently on PS4. This was due to initialisation order and global platform stats setup #jira NONE-01 Change 3622978 by Lukasz.Furman changed WeaponStatus BT decorator to be event driven, fixes AI trying to check ranged weapon abilities without valid weapon includes copy of CL# 3620700 #jira FORT-45914 #review-3622979 John.Abercrombie Change 3622340 by Josh.Markiewicz #UE4 - playerid netconnection variable setup properly on clients and servers for both beacons and game net drivers - ipconnection prints uniqueid with lowleveldescribe #jira fort-0 Change 3621386 by Tim.Tillotson Add the ability to retry HTTP operations by VERB. This allows us to automatically retry cloud save PUT operations. #JIRA FORT-53717 #review-3621317 @Josh.Markiewicz @Ian.Fox @Carlos.Cuello Change 3620517 by Keith.Judge Xbox One - Revert iOS behaviour for the depth bias back to how it was, and make separate XB1 change use its own define to avoid confusion. #jira FORT-53928 Change 3620248 by Lukasz.Furman changed behavior of UBTTask_MoveTo.bStopOnOverlap flag after recent AcceptanceRadius fix, updated comments to be more detailed #jira nojira Change 3616187 by Bob.Tellez #UE4 Throwing an error (for now) if you attempt to use both the malloc profiler and leak detection at the same time since it causes a deadlock. #JIRA UE-0 Change 3613935 by Peter.Knepley More logging on update launcher launching #jira nojira #robomerge rp rn Change 3613537 by Marcus.Wassmer Safety asserts around the MarkPendingKill feature for rendering classes. #jira FORT-50385 Change 3613399 by Arne.Schober Extended ShowMaterialDrawEvents to enable it only in very specific passes and default enabled Depth for Fortnite on PS4 to track down a crash. #RB Marcus.Wassmer #jira FORT-53610 Change 3610794 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce UMG class memory #jira UE-52043 #ROBOMERGE-SOURCE: CL 3610792 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3610144 by Stewart.Lynch General LLM improvements * added tracking for misc task graph tasks (moves 20MB out of Untagged) * renamed EngineTick to EngineMisc * added tracking for FName * added tracking for GC_ProcessObjectArray potential leak * renamed index & vertex buffers stat to Meshes * added hooks for MemPro to track allocations from a single category. Currently defined out. I haven't added MemPro.cpp/h. * removed AVAILABLE_PHYSICAL stat from LLM csv * csv files now include the date in the filename * fixed potential threading bug when reading stat values to csv * made IsDebugMemoryEnabled() always return false in shipping and if not runnong on a dev-kit (PS4). The reason is that the function is a bit hacky, and should only be used for debug purposes, such as displaying the on screen warning. * added lots more scopes * started changing Stat scopes to enum scopes. Stat scopes will be phased out. * added tracking of FName memory * added llmplatform tracking for XBoxSymbols * added llm tracking for CPU symbol allocations (20MB) * wrote an allocator for XBoxOneStack reading so that it doesn't go through Malloc and get tracked by LLM. * added tracking for GC * fixed tracking for TransientMemoryAllocator * added tracking for networking memory * added more audio memory tracking * added tracking for blueprints * added tracking for static meshes * show on screen warning if debug memory is enabled * added tracking for particles * renamed Phys to PhysX and added more scopes * renamed Slate to UI and added more scopes * much better coverage of networking memory * improved coverage of audio #jira FORT-53420 Change 3610136 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce size of UStaticMeshComponent by 224 bytes (cumulative, 64 bytes exclusive) Reduce size of UPrimitiveComponent by 176 bytes (cumulative, 64 bytes exclusive). Reduce size of USceneComponent by 112 bytes. Reduce size of FLightingChannels from 3 bytes to 1. Reduce size of FBodyInstance by 16 bytes. #jira FORT-52043 #ROBOMERGE-SOURCE: CL 3610134 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607937 by robomerge #ROBOMERGE-AUTHOR: paul.moore #jira FORT-53105 - Fix websocket not providing information when the peer closes the connection. #ROBOMERGE-SOURCE: CL 3607933 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607042 by Bart.Hawthorne Move replay.Loop functionality into the demo net driver and rename it demo.Loop #jira none Change 3605448 by robomerge #ROBOMERGE-AUTHOR: seth.weedin #Athena - Pass owner to ActiveSounds created using PlaySoundAtLocation/PlaySound2D to allow "Limit to Owner" concurrency rules to work. Hook up for weapon sounds. #JIRA FORT-53180 #ROBOMERGE-SOURCE: CL 3605443 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3604787 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Initial support for hotfixing live assets from .ini files - This allows clients and server to patch certain assets in memory whenever .ini file hotfixes are downloaded - Only CurveTables and DataTables are supported for now - The new asset content must be in Json format, the same format the editor uses for importing - Assets that are hotfixed will be synchronously loaded if they're not already in memory. They'll be retained in memory afterwards. - IMPORTANT: Json data must be supplied on a single line, and all double quotes must be escaped! - The changes must go in the Game.ini file and use the following syntax: [AssetHotfix] +CurveTable=("/Game/Folder/MyCurveTable","[{\"Name\":\"Default\"}]") +DataTable=("/Game/Folder2/MyDataTable","[{\"Name\":\"Foo\"}]") #jira FORT-52099 [CODEREVIEW] frank.gigliotti [FYI] peter.knepley,bob.tellez #ROBOMERGE-SOURCE: CL 3604784 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3602067 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Loading time improvements - This shaves off up to 10 seconds of load time on PS4 in Athena Details: - Fixed multiple sub-levels not being able to be enqueued for loading in a single client frame. Athena has ~300 sub-levels, so this ended up wasting up many seconds. - Fixed 3D world being rendered while loading (frees up game thread cycles for throttled streaming) - UWorld::AllowLevelLoadRequests() was not allowing load requests to go through while an async load was in progress and the match had started. It now allows this as long as the world isn't being rendered (loading screen.) - Eliminated extra 2 second delay before loading screen is dismissed (in Athena only) - Note: A side effect of this change is that the progress bar may not update as smoothly on loading screen. We'll look at tuning the throttle settings if it ends up being a problem. [CODEREVIEW] ori.cohen #jira AT-1477 #ROBOMERGE-SOURCE: CL 3602061 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3601951 by Luke.Thatcher [FORTNITE] [PS4] [!] Fix memory stats in the old PS4 memory system - Physical memory stat now includes garlic and onion allocations. CPU OOMs will result in "AvailablePhysical" being close to 0. - Added garlic, onion and defrag stats to the platform memory stats struct. - Added fixed pool sizes to platform memory stats. - Modified the Fortnite heartbeat logging to include extra details of PS4 fixed sized pools. #jira FORT-52910 Change 3600340 by robomerge #ROBOMERGE-AUTHOR: wes.hunt All Fort analytics events now contain a GameState attribute indicating the active GameState ClassName when the event is sent. Added some new context to crashreporter to help identify Athena matches near and long term. * Near Term: GameNameSuffix - set via FCoreDelegates::CrashOverrideParamsChanged * Added bools to the params to indicate WHICH ones are changing * Allows you to set only some values, and clear them out. * Hooked up in FortGameState::PostInitializeComponents. * FortGameState clears it (for returning to main menu). * FortGameStateAthena sets it (for going into an Athena match). * Only does this when it's a true GameMode GameState instance (ie, not PIE) so PIE crashes aren't modified. * Long Term: GameStateName - set via FCoreDelegates::GameStateClassChanged. * This works for ANY crash on ANY game. * Hooked up in GameState::HandleMatchIsWaitingToStart. #jira AT-1457 #jira AT-519 [CODEREVIEW] peter.knepley,josh.markiewicz #ROBOMERGE-SOURCE: CL 3600278 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3597593 by Ben.Zeigler #jira FORT-50722 Fix issues where AssetBundles weren't being correctly updated during cook, which is blocking both Noland and Abercrombie Partial copy of CL #3402335 and #3526538 #robomerge rp, rn Change 3597577 by Luke.Thatcher [FORTNITE] [PS4] [~] Modified the way memory is allocated on Playstation to make more memory available to the CPU. - Previously the amount of texture memory wasn╞t fixed due to the way the defrag memory is allocated on PS4. This meant we had to have a significant amount of slack. - With the new configuration, we have a guaranteed texture memory pool, so the slack can be significantly smaller, meaning we can give more memory to the CPU, which is where most of our memory pressure is. #jira FORT-50825 #jira FORT-49688 #jira FORT-49695 #jira FORT-50054 Change 3596556 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Enable GC clustering for actors and blueprints in Fortnite - This shaves off about 10 ms on GC frames in Athena on PS4 (~52 ms -> 42 ms) - Clustering doesn't work on building actors because they're very dynamic, but general Fort static meshes and blueprints are clustered! - This gets us into the realm of shippability on console for very large UObject counts [FYI] bob.tellez,peter.knepley,michael.noland #jira AT-1440 #ROBOMERGE-SOURCE: CL 3596552 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3593994 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Force largest distance field atlas size in Athena - We now force the largest distance field atlas size before preloading Athena content (512x512x1024 = 256 MB). This helps with load times because it's expensive to re-create this texture on consoles, and typically it gets resized over a dozen times. - Added new CVar "r.DistanceFields.ForceMaxAtlasSize" (defaults to zero) - Important: Currently we never "reset" this atlas texture. This will be a problem when going back to play Campaigns after preloading to play Athena. I will look into this soon! [CODEREVIEW] peter.knepley,marcus.wassmer,michael.noland,daniel.wright #jira AT-1477 #ROBOMERGE-SOURCE: CL 3593992 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592096 by robomerge #ROBOMERGE-AUTHOR: ben.salem Prototype of gauntlet memory soak test. Not fully fiinished, but want changes in tonight's cook so we can experiment on cooked build tomorrow morning. #jira FORT-0 #ROBOMERGE-SOURCE: CL 3592025 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592085 by robomerge #ROBOMERGE-AUTHOR: mike.fricker HLOD: Added support for a fixed distance override via CVar - Use this to force all HLODs to transition at a specific distance, regardless of their TransitionSize/MinDrawDistance/LODDrawDistance - New CVar: r.HLOD.DistanceOverride (defaults to 0) - Fortnite uses 350m for this distance, fornow [CODEREVIEW] jurre.debaare #jira AT-1462 #ROBOMERGE-SOURCE: CL 3591929 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3587391 by Michael.Noland Fortnite: Lots of memory tracking stuff - Added memory logging to game state transitions and overall health tracking for the entire session - Added support for Gauntlet-based tests to Fortnite - Enabled the Gauntlet plugin (and fixed spaces instead of tabs in the .uproject file) - Added code to set gauntlet state based on the current subclass of AFortGameState - Added a base controller and a memory report controller (WIP, ported from equivalents in Paragon) - Updated FortniteClient to use MALLOC_LEAKDETECTION=1, PLATFORM_USES_FIXED_GMalloc_CLASS=0, and AllowASLRInShipping=false in Development builds (may enable them in Test builds in a future CL, to match Paragon) #jira FORT-50567 Change 3583307 by Peter.Knepley Need non-jittered ViewToClip matrix in order to do "after tonemapper" postprocess blendable material that's positioned in view space Modify the AttachScope material function to use "ViewSpaceTransformToClipSpace" instead of going back to world space first. This also means it can utilitize the ViewToClipNoAA matrix. #jira AT-733 Change 3582378 by Luke.Thatcher [FORTNITE] [~] Unify Xbox and PS4 scalability settings and device profiles. - All Xbox and PS4 r. CVars are overriden in their platform's Scalability.ini file. The device profile only selects sg. groups. - Fixed the Neo 4K profile for Fortnite. Previously players with 4K monitors would choose the Neo_4K profile, which looks worse than Neo, but still renders at 1080p. - Console specific settings have to live in the Base/Default .ini's, as the cooker doesn't load the console specific files. This is fixed in UE4 Main. #jira FORT-50206 Change 3580934 by Luke.Thatcher [FORTNITE] [PS4] [+] Support different garlic and onion heap sizes in the old memory system for base and neo. - Neo has 512 MB more direct memory than a base kit. - Increased the garlic heap size by 416 MB on Neo, and CPU heap by 96 MB. #jira FORT-50206 Change 3576664 by Bart.Hawthorne Re-enable Oodle and add Mac implementation. Also includes fixed oodle libraries by MichaelT. #jira FORT-49986 #tests Connected to PC server with editor -game build on Mac in Athena Change 3575671 by Nick.Darnell Athena - The gameplay ability system now supports adding Gameplay Cue's with params. Now using cues instead of gameplay effects in order to notify when the bandaging/shielding begin and end. THe new method should properly show and disappear on time, b/c it's all client side. Added a way in the Athena Context to easily hook gameplay "UI" cues that are rebroadcast from the Athena Pawn. #jira AT-644 Change 3575534 by Peter.Knepley Ability montage replication optimizations #jira AT-955 Change 3573305 by Lukasz.Furman disabled path section update when crowd simulated AI is moving through navlink, fixed AI getting stuck in some corners #jira FORT-49748 Change 3566775 by John.Abercrombie Optimizations from Dev-Athena - Tested with PIE & and 2 Player local server game #ue4-athena - (merge CLs 3345771 and 3363030 from Framework) - Refactored CharacterMovementComponent determination of net send rate when combining moves into a virtual function GetClientNetSendDeltaTime(). Added configurable values to GameNetworkManager under [/Script/Engine.GameNetworkManager]. For Fortnite, set unthrottled (<= 10 player) limit to 60Hz (from 90Hz), and trying throttled at 30Hz (from 45Hz). #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545535 by Zak.Middleton on 2017/07/19 20:15:17. #ue4-athena - (merge CL 3377054 from Framework) - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545452 by Zak.Middleton on 2017/07/19 18:57:45. #athena - If network smoothing mode is not linear, don't replicate ReplicatedServerLastTransformUpdateTimeStamp. Only AI use linear smoothing in FN. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545559 by Zak.Middleton on 2017/07/19 20:47:18. #ue4-athena - Converted all RPCs on UCharacterMovementComponent to be on ACharacter instead, to avoid the bandwidth overhead of calling RPCs on a component. Existing overrides of _Implementation and _Validate functions should remain unchanged. If for some reason someone overrode the old RPC virtuals, those are now non-virtual on UCharacterMovementComponent but are still virtual on ACharacter. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3557564 by Zak.Middleton on 2017/07/26 20:13:43. #ue4-athena - Throttle character movement server corrections and acks to the client based on time since last adjustment. Cuts down on network traffic for character movement. Added configurable settings to control this. Set times to zero to disable this. - NetworkMinTimeBetweenClientAckGoodMove - NetworkMinTimeBetweenClientAdjustments - NetworkMinTimeBetweenClientAdjustmentsLargeCorrection - NetworkLargeClientCorrectionDistance #ue4-athena - Perf: (EditMerge CL 3492200 from Dev-Framework): Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561669 by Zak.Middleton on 2017/07/28 14:16:19. #ue4-athena - Perf: (EditMerge CL 3468253 from Dev-AnimPhys): Remove the need for calling constructors for physx PxRaycastHit in the dynamic hit result buffer. Saves 30% of the cost of doing small raycasts. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561672 by Zak.Middleton on 2017/07/28 14:17:12. #ue4-athena - Perf: (EditMerge CL 3359553 from Dev-Framework): Optimization in CharacterMovement tick to not extract transform values twice. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561674 by Zak.Middleton on 2017/07/28 14:18:04. #ue4-athena - Perf: (EditMerge CL 3426174 from Dev-Framework): Avoid call to virtual getSimulationFilterData() to only use it when needed in PreFilter if we actually have items in the IgnoreComponents list (which is rare). The sim filter data 'word2' stores the component ID. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561709 by Zak.Middleton on 2017/07/28 14:32:11. #ue4-athena - Perf: (EditMerge CL 3382054 from Dev-Framework): Optimize CharacterMovementComponent::GetPredictionData_Client_Character() and GetPredictionData_Server_Character() to remove virtual calls. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561856 by Zak.Middleton on 2017/07/28 15:11:57. #ue4-athena - Use less bandwidth for CharacterMovement RPCs when the character is not standing on any component (ie during jumps and falling). Added separate "...NoBase()" versions of ServerMove() and ServerMoveDual(). Undid part of 3557564 and restored the CMC functions to be virtual, and removed virtual keyword from matching Character functions, so that overrides are in one consistent place. Also guarantees backwards compat for licensees. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3564858 by Zak.Middleton on 2017/07/31 15:24:39. #jira Fort-1 Change 3562825 by Chris.Gagnon Added CommonCustomNavigation Widget, this widget can be used to capture navigation requests to handle in custom ways. #jira FORT-0 Change 3562098 by Josh.Markiewicz #UE4 Encryption token/ack changes - moved encryption token request/ack to delegates - moved FNetworkNotify to NetworkDelegates.h - moved connection logic out of GameInstance and back into networking code -- GameInstance sends an enum and the network code does the right thing based on that #review-3559694 @ryan.gerleve #tests PC dedicated server connections golden path and forced failures #jira FORT-0 Change 3559354 by Luke.Thatcher [FORTNITE] [PS4] [^] Merging (as edit) support for setting flip rate on PS4 (CLs 3555687 and 3558843) from //Fortnite/Dev-Athena/... to //Fortnite/Main/... - Allowed rates are now 60Hz, 30Hz and 20Hz. - Exposed by r.PS4FlipRate CVar, set to 60Hz by default. Requires r.Vsync 1. #jira FORT-49463 Change 3532644 by Jeff.Campeau Fix mapping current culture to movie audio channels using data table to map languages to track indices. Don't rewind cinematics (they all start from the begining because we load them and play them once). Seeks cause us to have to redecode video frames at a large perf cost. Delay cutscene playback by 0.5 seconds to give us time to build up a buffer of decoded video. (Temporary workaround for audio/video sync). Generic implementation for getting current languages in BP. Fix more issues with calling into media source functionality when using the source reader (potential hangs). #jira FORT-44376,FORT-48209,FORT-48040 #testedon Preflight from last night combined with Bob's changes from today clear all known issues. This change tested on Xbox and PC multiple times each. Change 3527761 by Chris.Gagnon Fixed various issues in the widget switcher, also added Advanced calls that allow the user to specify if activation/deactivation should occur. #jira FORT-47988, FORT-47984 Change 3525390 by Jeff.Campeau Remove media player log spam #jira FORT-47393 #testedon compiled client Change 3518692 by Chris.Gagnon Added CleanOperation Adding which will remove unneeded op combinations from the op queue. Also added the ability to suspend starting operation queue processing to allow complex operations to accumulate and in turn allow the Clean Op adding code to be effective. GameFeedback, and the widget switcer utilize this to avoid unnesacary activations of a screen that is immediately being deactivated. Root issue of the mentioned bug is that activation of the quest screen created a latent navigation du to the deferal of scrolling into view. This is still an issue in general, there isn't much we can do about it. Other than avoid activating a panel that will deactivated that frame as we did with the code changes in this CL. #jira FORT-47395 Change 3514658 by Jeff.Campeau Fixed a media player threading issue where the OnMediaOpened event could be called before the media Init script completed. Moved the event Cinematic used when setting up and playing media after media file load to use a delayed event from the MovieWidget so that it will always happen after the movie widget processing. Fixed an issue that could cause samples to leak in MfMedia plugin and cause ReadSample to lockup. Fixed an issue where a default texture is displayed for movies before the movie starts playing (the player may be active before the first frame of the video is decoded). Default is now all black as it is expected that this texture will be displayed for several frames. #jira FORT-46801 #testedon Xbox through rocket launch cinematic including vintertip for stairs, skill tree nodes, and victory result video Change 3507896 by Ryan.Gerleve Changed the net.UseEncryptionToken to be more useful and renamed it to net.AllowEncryption. This cvar, if 0, will prevent the PacketHandler from adding the configured encryption component, and prevent UPendingNetGame and AOnlineBeaconClient from filling out the EncryptionToken parameter of NMT_Hello - which prevents the extra encryption handshake connection step. #jira FORT-46878 #review-3507897 @josh.markiewicz Change 3503928 by Ryan.Gerleve Add safety checks around some of the encryption functionality. Fixes a server crash seen during load testing. #jira FORT-46772 #review-3503929 bob.tellez #robomerge ReleaseNext [CL 3673993 by Bob Tellez in Main branch]
2017-09-30 03:42:01 -04:00
// validate exported data
// shrink arrays before counting memory
// it will be reallocated when adding to octree and RemoveNode will have different value returned by GetAllocatedSize()
Merging from //UE4/Fortnite-Staging up to CL#3673800 based on CL#3664064 from //Fortnite/Main #rb none #lockdown Nick.Penwarden ================================================================================================= THESE CHANGES TOUCH MULTIPLE PLATFORMS AND/OR RESTRICTED FOLDERS. YOU MUST REVIEW THESE MANUALLY AND APPEND THEM TO THE DESCRIPTIONS FOR THE APPROPRIATE PLATFORMS. ================================================================================================= Change 3662267 by Nick.Darnell Engine - Fixing a bug in GetAccurateRealTime, it wasn't subtracting GStartTime, which if you don't prevents accurate platform time when you try to store it in a float. #jira nojira Change 3662176 by Ben.Marsh Disable image integrity report generation if a debugger is attached, and in editor builds. #jira FORT-55656 Change 3656958 by Luke.Thatcher [FORTNITE] [CONSOLE] [+] Improved frame syncing mechanism - Improves input latency by allowing the game thread to sync to the swap chain flip of the previous frame. - Added "r.GTSyncType" CVar to control how the game thread syncs with the rest of the pipe. - r.GTSyncType 2 will sync the game thread with the flip of the swap chain, preventing the pipe from getting too long and causing excess input latency. Platforms are required to implement RHIWaitForFlip and RHISignalFlipEvent, and call RHIInitializeFlipTracking on RHI startup. A separate thread monitors the progress of frame flips and signals task graph events as they pass their corresponding frame index. In r.GTSyncType 2 mode, the game thread is signaled by this flip tracking thread. [~] Unified platform specific sync interval CVars (D3D12.SyncInterval, D3D11.SyncInterval, r.PS4FlipRate, RHI.SyncIntervalOgl) into one: rhi.SyncInterval - 1 == 60Hz - 2 == 30Hz - 3 == 20Hz [-] Removed large number in XboxOneTime. Adding this arbitrary number prevents us from comparing timestamps from FPlatformTime::Seconds() and various OS callbacks (e.g. flip timings). #jira FORT-50803 Change 3655598 by Lukasz.Furman added filtering for navmesh's low height spans to fix crash on layer partitioning % of span reductions depends on presence of stair or roof building in navmesh tile, changed failsafes in layer code to ignore entire tile if heightfield is too complex to partition instead of reallocating memory #jira FORT-35375 Change 3648972 by Keith.Judge Add analytics to help diagnose default parameter collection buffer issue. +++ REMOVE ONCE CORE ISSUE IS SOLVED +++ #jira FORT-54690 Change 3648756 by Bart.Hawthorne Integrate 3645298 from //UE4/Dev-Networking Deprecate GetNetworkObjectInfo in favor of separate FindNetworkObjectInfo and FindOrCreateNetworkObjectInfo methods. #jira none Change 3643090 by Josh.Markiewicz #UE4 - proper handling of "pending connection lost" - triggered only if a connection is lost and there no "owning actor" to deal with the connection loss -- added Rejoin and CleanedUp states to connection to make sure that the pending connection lost delegate only fires at the appropriate time - delegate returns the unique id of the player if known (still possible to be unknown if connection lost after NMT_Hello) - changed debug output on timeout if the net connection was already in the process of being destroyed -- occurs when game hitches during the pending destroy 2 second wait -- ReceivedAcks should have been called to clean things up quietly in those 2 seconds but blocking the game thread will cause the cleanup to look like a timeout - added userid to UNetConnection::Describe - bad split screen player handling of unique id -- splitscreen uniqueid was overwriting the primary player id -- only store the id on the child connection - added some clarifying comments #review-3642816 @ryan.gerleve, @bob.tellez, @sam.zamani, @bart.hawthorne, @dave.ratti #jira FORT-26776 Change 3639043 by Alex.Thurman Fix CommonTreeView SetSelection to correctly update list navigation, and behave similarly to CommonListView's SetSelectedItem. #JIRA FORT-45841 Change 3632275 by Seth.Weedin #JIRA FORT-54203 - Add clamps to ActiveSound fade interpolation to prevent unwanted volume spikes. Remove 0.01 start time for single-fire audio cues. Should remove the sudden pops sometimes heard when firing weapons, as well as smooth out fade volume in general. Change 3626944 by Josh.Markiewicz #UE4 - added "updates connection status" flag to ServiceConfigMCP - disable updates on Cloud and Friend services (Fortnite only) - removed overloaded ProcessConnectionStatus function in cloud service #jira FORT-53113 Change 3626226 by Stewart.Lynch LLM Update - Memory reductions, Summary page, enum scopes, refactor and cleanup of tags * Remove all static arrays and hard limits from LLM. Everything is now dynamically allocated using the internal LLM allocators. The overhead when LLM is disabled is now only 48K (was 40MB) * re-wrote LLMMap. Now stores an int32 index rather then pointer in the HashMap array. Also, changed the Values to be arrays for structs instead of structs of arrays. Means that the tag can be stored in a single byte. Changed the size of the allocation size from int64 to int32. All this takes the memory down from around 600MB to 100MB. It was 120 bytes per allocation, now 29 bytes. * changed all LLM scopes over to enums. This has a number of benefits; LLM can be enable in Test, less CPU overhead, stored in a byte (LLM overhead /= 8) * summary page for content creators where all lower-level stats are grouped under one Engine stat * renamed ELLMScopeTag enum to ELLMTag * renamed LLM_SCOPED_TAG_WITH_ENUM macro to LLM_SCOPE * removed Tracker arg from LLM_SCOPE and added LLM_PLATFORM_SCOPE macro * fixed GenericPlatformMallocCrash stat. Although it seems not be be used anymore * fixed BackupOOMMemoryPool stat (now shows in both default and platform pages) * added separate LLM enums for XB1, PS4 and D3D12 (PS4LLM.cpp/h etc.) * lots of changes adding/removing/renaming tags * added LLMArray and FLLMObjectAllocator classes * disabled asset tag tracking by default because it takes up so much memory even when not used * enable LLM in all non-shipping builds. In Test the on screendisplay won't show because it uses the stats system but it till still write out the csv. * all the stat macros have been left as they were and can be enabled on the LLM_STAT_TAGS_ENABLED define. These are needed for the asset tagging. * disabled LLM_TRACK_PEAK_MEMORY because there is a problem with the way it adds the peaks for multiple threads. This needs to be fixed. * added a CVar to control the csv write interval: LLM.LLMWriteInterval * added static arrays for the enum tags setup. Easier to manage and removes need for slow switch statements. * renamed FLLMThreadStateManager to FLLMTracker to make it consistent with the enum * fixed program size stat which was broken recently on PS4. This was due to initialisation order and global platform stats setup #jira NONE-01 Change 3622978 by Lukasz.Furman changed WeaponStatus BT decorator to be event driven, fixes AI trying to check ranged weapon abilities without valid weapon includes copy of CL# 3620700 #jira FORT-45914 #review-3622979 John.Abercrombie Change 3622340 by Josh.Markiewicz #UE4 - playerid netconnection variable setup properly on clients and servers for both beacons and game net drivers - ipconnection prints uniqueid with lowleveldescribe #jira fort-0 Change 3621386 by Tim.Tillotson Add the ability to retry HTTP operations by VERB. This allows us to automatically retry cloud save PUT operations. #JIRA FORT-53717 #review-3621317 @Josh.Markiewicz @Ian.Fox @Carlos.Cuello Change 3620517 by Keith.Judge Xbox One - Revert iOS behaviour for the depth bias back to how it was, and make separate XB1 change use its own define to avoid confusion. #jira FORT-53928 Change 3620248 by Lukasz.Furman changed behavior of UBTTask_MoveTo.bStopOnOverlap flag after recent AcceptanceRadius fix, updated comments to be more detailed #jira nojira Change 3616187 by Bob.Tellez #UE4 Throwing an error (for now) if you attempt to use both the malloc profiler and leak detection at the same time since it causes a deadlock. #JIRA UE-0 Change 3613935 by Peter.Knepley More logging on update launcher launching #jira nojira #robomerge rp rn Change 3613537 by Marcus.Wassmer Safety asserts around the MarkPendingKill feature for rendering classes. #jira FORT-50385 Change 3613399 by Arne.Schober Extended ShowMaterialDrawEvents to enable it only in very specific passes and default enabled Depth for Fortnite on PS4 to track down a crash. #RB Marcus.Wassmer #jira FORT-53610 Change 3610794 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce UMG class memory #jira UE-52043 #ROBOMERGE-SOURCE: CL 3610792 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3610144 by Stewart.Lynch General LLM improvements * added tracking for misc task graph tasks (moves 20MB out of Untagged) * renamed EngineTick to EngineMisc * added tracking for FName * added tracking for GC_ProcessObjectArray potential leak * renamed index & vertex buffers stat to Meshes * added hooks for MemPro to track allocations from a single category. Currently defined out. I haven't added MemPro.cpp/h. * removed AVAILABLE_PHYSICAL stat from LLM csv * csv files now include the date in the filename * fixed potential threading bug when reading stat values to csv * made IsDebugMemoryEnabled() always return false in shipping and if not runnong on a dev-kit (PS4). The reason is that the function is a bit hacky, and should only be used for debug purposes, such as displaying the on screen warning. * added lots more scopes * started changing Stat scopes to enum scopes. Stat scopes will be phased out. * added tracking of FName memory * added llmplatform tracking for XBoxSymbols * added llm tracking for CPU symbol allocations (20MB) * wrote an allocator for XBoxOneStack reading so that it doesn't go through Malloc and get tracked by LLM. * added tracking for GC * fixed tracking for TransientMemoryAllocator * added tracking for networking memory * added more audio memory tracking * added tracking for blueprints * added tracking for static meshes * show on screen warning if debug memory is enabled * added tracking for particles * renamed Phys to PhysX and added more scopes * renamed Slate to UI and added more scopes * much better coverage of networking memory * improved coverage of audio #jira FORT-53420 Change 3610136 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce size of UStaticMeshComponent by 224 bytes (cumulative, 64 bytes exclusive) Reduce size of UPrimitiveComponent by 176 bytes (cumulative, 64 bytes exclusive). Reduce size of USceneComponent by 112 bytes. Reduce size of FLightingChannels from 3 bytes to 1. Reduce size of FBodyInstance by 16 bytes. #jira FORT-52043 #ROBOMERGE-SOURCE: CL 3610134 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607937 by robomerge #ROBOMERGE-AUTHOR: paul.moore #jira FORT-53105 - Fix websocket not providing information when the peer closes the connection. #ROBOMERGE-SOURCE: CL 3607933 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607042 by Bart.Hawthorne Move replay.Loop functionality into the demo net driver and rename it demo.Loop #jira none Change 3605448 by robomerge #ROBOMERGE-AUTHOR: seth.weedin #Athena - Pass owner to ActiveSounds created using PlaySoundAtLocation/PlaySound2D to allow "Limit to Owner" concurrency rules to work. Hook up for weapon sounds. #JIRA FORT-53180 #ROBOMERGE-SOURCE: CL 3605443 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3604787 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Initial support for hotfixing live assets from .ini files - This allows clients and server to patch certain assets in memory whenever .ini file hotfixes are downloaded - Only CurveTables and DataTables are supported for now - The new asset content must be in Json format, the same format the editor uses for importing - Assets that are hotfixed will be synchronously loaded if they're not already in memory. They'll be retained in memory afterwards. - IMPORTANT: Json data must be supplied on a single line, and all double quotes must be escaped! - The changes must go in the Game.ini file and use the following syntax: [AssetHotfix] +CurveTable=("/Game/Folder/MyCurveTable","[{\"Name\":\"Default\"}]") +DataTable=("/Game/Folder2/MyDataTable","[{\"Name\":\"Foo\"}]") #jira FORT-52099 [CODEREVIEW] frank.gigliotti [FYI] peter.knepley,bob.tellez #ROBOMERGE-SOURCE: CL 3604784 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3602067 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Loading time improvements - This shaves off up to 10 seconds of load time on PS4 in Athena Details: - Fixed multiple sub-levels not being able to be enqueued for loading in a single client frame. Athena has ~300 sub-levels, so this ended up wasting up many seconds. - Fixed 3D world being rendered while loading (frees up game thread cycles for throttled streaming) - UWorld::AllowLevelLoadRequests() was not allowing load requests to go through while an async load was in progress and the match had started. It now allows this as long as the world isn't being rendered (loading screen.) - Eliminated extra 2 second delay before loading screen is dismissed (in Athena only) - Note: A side effect of this change is that the progress bar may not update as smoothly on loading screen. We'll look at tuning the throttle settings if it ends up being a problem. [CODEREVIEW] ori.cohen #jira AT-1477 #ROBOMERGE-SOURCE: CL 3602061 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3601951 by Luke.Thatcher [FORTNITE] [PS4] [!] Fix memory stats in the old PS4 memory system - Physical memory stat now includes garlic and onion allocations. CPU OOMs will result in "AvailablePhysical" being close to 0. - Added garlic, onion and defrag stats to the platform memory stats struct. - Added fixed pool sizes to platform memory stats. - Modified the Fortnite heartbeat logging to include extra details of PS4 fixed sized pools. #jira FORT-52910 Change 3600340 by robomerge #ROBOMERGE-AUTHOR: wes.hunt All Fort analytics events now contain a GameState attribute indicating the active GameState ClassName when the event is sent. Added some new context to crashreporter to help identify Athena matches near and long term. * Near Term: GameNameSuffix - set via FCoreDelegates::CrashOverrideParamsChanged * Added bools to the params to indicate WHICH ones are changing * Allows you to set only some values, and clear them out. * Hooked up in FortGameState::PostInitializeComponents. * FortGameState clears it (for returning to main menu). * FortGameStateAthena sets it (for going into an Athena match). * Only does this when it's a true GameMode GameState instance (ie, not PIE) so PIE crashes aren't modified. * Long Term: GameStateName - set via FCoreDelegates::GameStateClassChanged. * This works for ANY crash on ANY game. * Hooked up in GameState::HandleMatchIsWaitingToStart. #jira AT-1457 #jira AT-519 [CODEREVIEW] peter.knepley,josh.markiewicz #ROBOMERGE-SOURCE: CL 3600278 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3597593 by Ben.Zeigler #jira FORT-50722 Fix issues where AssetBundles weren't being correctly updated during cook, which is blocking both Noland and Abercrombie Partial copy of CL #3402335 and #3526538 #robomerge rp, rn Change 3597577 by Luke.Thatcher [FORTNITE] [PS4] [~] Modified the way memory is allocated on Playstation to make more memory available to the CPU. - Previously the amount of texture memory wasn╞t fixed due to the way the defrag memory is allocated on PS4. This meant we had to have a significant amount of slack. - With the new configuration, we have a guaranteed texture memory pool, so the slack can be significantly smaller, meaning we can give more memory to the CPU, which is where most of our memory pressure is. #jira FORT-50825 #jira FORT-49688 #jira FORT-49695 #jira FORT-50054 Change 3596556 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Enable GC clustering for actors and blueprints in Fortnite - This shaves off about 10 ms on GC frames in Athena on PS4 (~52 ms -> 42 ms) - Clustering doesn't work on building actors because they're very dynamic, but general Fort static meshes and blueprints are clustered! - This gets us into the realm of shippability on console for very large UObject counts [FYI] bob.tellez,peter.knepley,michael.noland #jira AT-1440 #ROBOMERGE-SOURCE: CL 3596552 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3593994 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Force largest distance field atlas size in Athena - We now force the largest distance field atlas size before preloading Athena content (512x512x1024 = 256 MB). This helps with load times because it's expensive to re-create this texture on consoles, and typically it gets resized over a dozen times. - Added new CVar "r.DistanceFields.ForceMaxAtlasSize" (defaults to zero) - Important: Currently we never "reset" this atlas texture. This will be a problem when going back to play Campaigns after preloading to play Athena. I will look into this soon! [CODEREVIEW] peter.knepley,marcus.wassmer,michael.noland,daniel.wright #jira AT-1477 #ROBOMERGE-SOURCE: CL 3593992 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592096 by robomerge #ROBOMERGE-AUTHOR: ben.salem Prototype of gauntlet memory soak test. Not fully fiinished, but want changes in tonight's cook so we can experiment on cooked build tomorrow morning. #jira FORT-0 #ROBOMERGE-SOURCE: CL 3592025 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592085 by robomerge #ROBOMERGE-AUTHOR: mike.fricker HLOD: Added support for a fixed distance override via CVar - Use this to force all HLODs to transition at a specific distance, regardless of their TransitionSize/MinDrawDistance/LODDrawDistance - New CVar: r.HLOD.DistanceOverride (defaults to 0) - Fortnite uses 350m for this distance, fornow [CODEREVIEW] jurre.debaare #jira AT-1462 #ROBOMERGE-SOURCE: CL 3591929 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3587391 by Michael.Noland Fortnite: Lots of memory tracking stuff - Added memory logging to game state transitions and overall health tracking for the entire session - Added support for Gauntlet-based tests to Fortnite - Enabled the Gauntlet plugin (and fixed spaces instead of tabs in the .uproject file) - Added code to set gauntlet state based on the current subclass of AFortGameState - Added a base controller and a memory report controller (WIP, ported from equivalents in Paragon) - Updated FortniteClient to use MALLOC_LEAKDETECTION=1, PLATFORM_USES_FIXED_GMalloc_CLASS=0, and AllowASLRInShipping=false in Development builds (may enable them in Test builds in a future CL, to match Paragon) #jira FORT-50567 Change 3583307 by Peter.Knepley Need non-jittered ViewToClip matrix in order to do "after tonemapper" postprocess blendable material that's positioned in view space Modify the AttachScope material function to use "ViewSpaceTransformToClipSpace" instead of going back to world space first. This also means it can utilitize the ViewToClipNoAA matrix. #jira AT-733 Change 3582378 by Luke.Thatcher [FORTNITE] [~] Unify Xbox and PS4 scalability settings and device profiles. - All Xbox and PS4 r. CVars are overriden in their platform's Scalability.ini file. The device profile only selects sg. groups. - Fixed the Neo 4K profile for Fortnite. Previously players with 4K monitors would choose the Neo_4K profile, which looks worse than Neo, but still renders at 1080p. - Console specific settings have to live in the Base/Default .ini's, as the cooker doesn't load the console specific files. This is fixed in UE4 Main. #jira FORT-50206 Change 3580934 by Luke.Thatcher [FORTNITE] [PS4] [+] Support different garlic and onion heap sizes in the old memory system for base and neo. - Neo has 512 MB more direct memory than a base kit. - Increased the garlic heap size by 416 MB on Neo, and CPU heap by 96 MB. #jira FORT-50206 Change 3576664 by Bart.Hawthorne Re-enable Oodle and add Mac implementation. Also includes fixed oodle libraries by MichaelT. #jira FORT-49986 #tests Connected to PC server with editor -game build on Mac in Athena Change 3575671 by Nick.Darnell Athena - The gameplay ability system now supports adding Gameplay Cue's with params. Now using cues instead of gameplay effects in order to notify when the bandaging/shielding begin and end. THe new method should properly show and disappear on time, b/c it's all client side. Added a way in the Athena Context to easily hook gameplay "UI" cues that are rebroadcast from the Athena Pawn. #jira AT-644 Change 3575534 by Peter.Knepley Ability montage replication optimizations #jira AT-955 Change 3573305 by Lukasz.Furman disabled path section update when crowd simulated AI is moving through navlink, fixed AI getting stuck in some corners #jira FORT-49748 Change 3566775 by John.Abercrombie Optimizations from Dev-Athena - Tested with PIE & and 2 Player local server game #ue4-athena - (merge CLs 3345771 and 3363030 from Framework) - Refactored CharacterMovementComponent determination of net send rate when combining moves into a virtual function GetClientNetSendDeltaTime(). Added configurable values to GameNetworkManager under [/Script/Engine.GameNetworkManager]. For Fortnite, set unthrottled (<= 10 player) limit to 60Hz (from 90Hz), and trying throttled at 30Hz (from 45Hz). #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545535 by Zak.Middleton on 2017/07/19 20:15:17. #ue4-athena - (merge CL 3377054 from Framework) - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545452 by Zak.Middleton on 2017/07/19 18:57:45. #athena - If network smoothing mode is not linear, don't replicate ReplicatedServerLastTransformUpdateTimeStamp. Only AI use linear smoothing in FN. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545559 by Zak.Middleton on 2017/07/19 20:47:18. #ue4-athena - Converted all RPCs on UCharacterMovementComponent to be on ACharacter instead, to avoid the bandwidth overhead of calling RPCs on a component. Existing overrides of _Implementation and _Validate functions should remain unchanged. If for some reason someone overrode the old RPC virtuals, those are now non-virtual on UCharacterMovementComponent but are still virtual on ACharacter. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3557564 by Zak.Middleton on 2017/07/26 20:13:43. #ue4-athena - Throttle character movement server corrections and acks to the client based on time since last adjustment. Cuts down on network traffic for character movement. Added configurable settings to control this. Set times to zero to disable this. - NetworkMinTimeBetweenClientAckGoodMove - NetworkMinTimeBetweenClientAdjustments - NetworkMinTimeBetweenClientAdjustmentsLargeCorrection - NetworkLargeClientCorrectionDistance #ue4-athena - Perf: (EditMerge CL 3492200 from Dev-Framework): Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561669 by Zak.Middleton on 2017/07/28 14:16:19. #ue4-athena - Perf: (EditMerge CL 3468253 from Dev-AnimPhys): Remove the need for calling constructors for physx PxRaycastHit in the dynamic hit result buffer. Saves 30% of the cost of doing small raycasts. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561672 by Zak.Middleton on 2017/07/28 14:17:12. #ue4-athena - Perf: (EditMerge CL 3359553 from Dev-Framework): Optimization in CharacterMovement tick to not extract transform values twice. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561674 by Zak.Middleton on 2017/07/28 14:18:04. #ue4-athena - Perf: (EditMerge CL 3426174 from Dev-Framework): Avoid call to virtual getSimulationFilterData() to only use it when needed in PreFilter if we actually have items in the IgnoreComponents list (which is rare). The sim filter data 'word2' stores the component ID. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561709 by Zak.Middleton on 2017/07/28 14:32:11. #ue4-athena - Perf: (EditMerge CL 3382054 from Dev-Framework): Optimize CharacterMovementComponent::GetPredictionData_Client_Character() and GetPredictionData_Server_Character() to remove virtual calls. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561856 by Zak.Middleton on 2017/07/28 15:11:57. #ue4-athena - Use less bandwidth for CharacterMovement RPCs when the character is not standing on any component (ie during jumps and falling). Added separate "...NoBase()" versions of ServerMove() and ServerMoveDual(). Undid part of 3557564 and restored the CMC functions to be virtual, and removed virtual keyword from matching Character functions, so that overrides are in one consistent place. Also guarantees backwards compat for licensees. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3564858 by Zak.Middleton on 2017/07/31 15:24:39. #jira Fort-1 Change 3562825 by Chris.Gagnon Added CommonCustomNavigation Widget, this widget can be used to capture navigation requests to handle in custom ways. #jira FORT-0 Change 3562098 by Josh.Markiewicz #UE4 Encryption token/ack changes - moved encryption token request/ack to delegates - moved FNetworkNotify to NetworkDelegates.h - moved connection logic out of GameInstance and back into networking code -- GameInstance sends an enum and the network code does the right thing based on that #review-3559694 @ryan.gerleve #tests PC dedicated server connections golden path and forced failures #jira FORT-0 Change 3559354 by Luke.Thatcher [FORTNITE] [PS4] [^] Merging (as edit) support for setting flip rate on PS4 (CLs 3555687 and 3558843) from //Fortnite/Dev-Athena/... to //Fortnite/Main/... - Allowed rates are now 60Hz, 30Hz and 20Hz. - Exposed by r.PS4FlipRate CVar, set to 60Hz by default. Requires r.Vsync 1. #jira FORT-49463 Change 3532644 by Jeff.Campeau Fix mapping current culture to movie audio channels using data table to map languages to track indices. Don't rewind cinematics (they all start from the begining because we load them and play them once). Seeks cause us to have to redecode video frames at a large perf cost. Delay cutscene playback by 0.5 seconds to give us time to build up a buffer of decoded video. (Temporary workaround for audio/video sync). Generic implementation for getting current languages in BP. Fix more issues with calling into media source functionality when using the source reader (potential hangs). #jira FORT-44376,FORT-48209,FORT-48040 #testedon Preflight from last night combined with Bob's changes from today clear all known issues. This change tested on Xbox and PC multiple times each. Change 3527761 by Chris.Gagnon Fixed various issues in the widget switcher, also added Advanced calls that allow the user to specify if activation/deactivation should occur. #jira FORT-47988, FORT-47984 Change 3525390 by Jeff.Campeau Remove media player log spam #jira FORT-47393 #testedon compiled client Change 3518692 by Chris.Gagnon Added CleanOperation Adding which will remove unneeded op combinations from the op queue. Also added the ability to suspend starting operation queue processing to allow complex operations to accumulate and in turn allow the Clean Op adding code to be effective. GameFeedback, and the widget switcer utilize this to avoid unnesacary activations of a screen that is immediately being deactivated. Root issue of the mentioned bug is that activation of the quest screen created a latent navigation du to the deferal of scrolling into view. This is still an issue in general, there isn't much we can do about it. Other than avoid activating a panel that will deactivated that frame as we did with the code changes in this CL. #jira FORT-47395 Change 3514658 by Jeff.Campeau Fixed a media player threading issue where the OnMediaOpened event could be called before the media Init script completed. Moved the event Cinematic used when setting up and playing media after media file load to use a delayed event from the MovieWidget so that it will always happen after the movie widget processing. Fixed an issue that could cause samples to leak in MfMedia plugin and cause ReadSample to lockup. Fixed an issue where a default texture is displayed for movies before the movie starts playing (the player may be active before the first frame of the video is decoded). Default is now all black as it is expected that this texture will be displayed for several frames. #jira FORT-46801 #testedon Xbox through rocket launch cinematic including vintertip for stairs, skill tree nodes, and victory result video Change 3507896 by Ryan.Gerleve Changed the net.UseEncryptionToken to be more useful and renamed it to net.AllowEncryption. This cvar, if 0, will prevent the PacketHandler from adding the configured encryption component, and prevent UPendingNetGame and AOnlineBeaconClient from filling out the EncryptionToken parameter of NMT_Hello - which prevents the extra encryption handshake connection step. #jira FORT-46878 #review-3507897 @josh.markiewicz Change 3503928 by Ryan.Gerleve Add safety checks around some of the encryption functionality. Fixes a server crash seen during load testing. #jira FORT-46772 #review-3503929 bob.tellez #robomerge ReleaseNext [CL 3673993 by Bob Tellez in Main branch]
2017-09-30 03:42:01 -04:00
Element.ValidateAndShrink();
const int32 ElementMemory = Element.GetAllocatedSize();
NodesMemory += ElementMemory;
INC_MEMORY_STAT_BY(STAT_Navigation_CollisionTreeMemory, ElementMemory);
AddElement(Element);
}
void FNavigationOctree::AppendToNode(const FOctreeElementId2& Id, INavRelevantInterface* NavElement, const FBox& Bounds, FNavigationOctreeElement& Element)
{
LLM_SCOPE_BYTAG(NavigationOctree);
FNavigationOctreeElement OrgData = GetElementById(Id);
Element = OrgData;
Element.Bounds = Bounds + OrgData.Bounds.GetBox();
if (NavElement)
{
SCOPE_CYCLE_COUNTER(STAT_Navigation_GatheringNavigationModifiersSync);
const bool bDoInstantGathering = !IsLazyGathering(*NavElement);
if (bDoInstantGathering)
{
NavElement->GetNavigationData(*Element.Data);
}
else
{
Element.Data->bPendingChildLazyModifiersGathering = true;
}
}
Merging from //UE4/Fortnite-Staging up to CL#3673800 based on CL#3664064 from //Fortnite/Main #rb none #lockdown Nick.Penwarden ================================================================================================= THESE CHANGES TOUCH MULTIPLE PLATFORMS AND/OR RESTRICTED FOLDERS. YOU MUST REVIEW THESE MANUALLY AND APPEND THEM TO THE DESCRIPTIONS FOR THE APPROPRIATE PLATFORMS. ================================================================================================= Change 3662267 by Nick.Darnell Engine - Fixing a bug in GetAccurateRealTime, it wasn't subtracting GStartTime, which if you don't prevents accurate platform time when you try to store it in a float. #jira nojira Change 3662176 by Ben.Marsh Disable image integrity report generation if a debugger is attached, and in editor builds. #jira FORT-55656 Change 3656958 by Luke.Thatcher [FORTNITE] [CONSOLE] [+] Improved frame syncing mechanism - Improves input latency by allowing the game thread to sync to the swap chain flip of the previous frame. - Added "r.GTSyncType" CVar to control how the game thread syncs with the rest of the pipe. - r.GTSyncType 2 will sync the game thread with the flip of the swap chain, preventing the pipe from getting too long and causing excess input latency. Platforms are required to implement RHIWaitForFlip and RHISignalFlipEvent, and call RHIInitializeFlipTracking on RHI startup. A separate thread monitors the progress of frame flips and signals task graph events as they pass their corresponding frame index. In r.GTSyncType 2 mode, the game thread is signaled by this flip tracking thread. [~] Unified platform specific sync interval CVars (D3D12.SyncInterval, D3D11.SyncInterval, r.PS4FlipRate, RHI.SyncIntervalOgl) into one: rhi.SyncInterval - 1 == 60Hz - 2 == 30Hz - 3 == 20Hz [-] Removed large number in XboxOneTime. Adding this arbitrary number prevents us from comparing timestamps from FPlatformTime::Seconds() and various OS callbacks (e.g. flip timings). #jira FORT-50803 Change 3655598 by Lukasz.Furman added filtering for navmesh's low height spans to fix crash on layer partitioning % of span reductions depends on presence of stair or roof building in navmesh tile, changed failsafes in layer code to ignore entire tile if heightfield is too complex to partition instead of reallocating memory #jira FORT-35375 Change 3648972 by Keith.Judge Add analytics to help diagnose default parameter collection buffer issue. +++ REMOVE ONCE CORE ISSUE IS SOLVED +++ #jira FORT-54690 Change 3648756 by Bart.Hawthorne Integrate 3645298 from //UE4/Dev-Networking Deprecate GetNetworkObjectInfo in favor of separate FindNetworkObjectInfo and FindOrCreateNetworkObjectInfo methods. #jira none Change 3643090 by Josh.Markiewicz #UE4 - proper handling of "pending connection lost" - triggered only if a connection is lost and there no "owning actor" to deal with the connection loss -- added Rejoin and CleanedUp states to connection to make sure that the pending connection lost delegate only fires at the appropriate time - delegate returns the unique id of the player if known (still possible to be unknown if connection lost after NMT_Hello) - changed debug output on timeout if the net connection was already in the process of being destroyed -- occurs when game hitches during the pending destroy 2 second wait -- ReceivedAcks should have been called to clean things up quietly in those 2 seconds but blocking the game thread will cause the cleanup to look like a timeout - added userid to UNetConnection::Describe - bad split screen player handling of unique id -- splitscreen uniqueid was overwriting the primary player id -- only store the id on the child connection - added some clarifying comments #review-3642816 @ryan.gerleve, @bob.tellez, @sam.zamani, @bart.hawthorne, @dave.ratti #jira FORT-26776 Change 3639043 by Alex.Thurman Fix CommonTreeView SetSelection to correctly update list navigation, and behave similarly to CommonListView's SetSelectedItem. #JIRA FORT-45841 Change 3632275 by Seth.Weedin #JIRA FORT-54203 - Add clamps to ActiveSound fade interpolation to prevent unwanted volume spikes. Remove 0.01 start time for single-fire audio cues. Should remove the sudden pops sometimes heard when firing weapons, as well as smooth out fade volume in general. Change 3626944 by Josh.Markiewicz #UE4 - added "updates connection status" flag to ServiceConfigMCP - disable updates on Cloud and Friend services (Fortnite only) - removed overloaded ProcessConnectionStatus function in cloud service #jira FORT-53113 Change 3626226 by Stewart.Lynch LLM Update - Memory reductions, Summary page, enum scopes, refactor and cleanup of tags * Remove all static arrays and hard limits from LLM. Everything is now dynamically allocated using the internal LLM allocators. The overhead when LLM is disabled is now only 48K (was 40MB) * re-wrote LLMMap. Now stores an int32 index rather then pointer in the HashMap array. Also, changed the Values to be arrays for structs instead of structs of arrays. Means that the tag can be stored in a single byte. Changed the size of the allocation size from int64 to int32. All this takes the memory down from around 600MB to 100MB. It was 120 bytes per allocation, now 29 bytes. * changed all LLM scopes over to enums. This has a number of benefits; LLM can be enable in Test, less CPU overhead, stored in a byte (LLM overhead /= 8) * summary page for content creators where all lower-level stats are grouped under one Engine stat * renamed ELLMScopeTag enum to ELLMTag * renamed LLM_SCOPED_TAG_WITH_ENUM macro to LLM_SCOPE * removed Tracker arg from LLM_SCOPE and added LLM_PLATFORM_SCOPE macro * fixed GenericPlatformMallocCrash stat. Although it seems not be be used anymore * fixed BackupOOMMemoryPool stat (now shows in both default and platform pages) * added separate LLM enums for XB1, PS4 and D3D12 (PS4LLM.cpp/h etc.) * lots of changes adding/removing/renaming tags * added LLMArray and FLLMObjectAllocator classes * disabled asset tag tracking by default because it takes up so much memory even when not used * enable LLM in all non-shipping builds. In Test the on screendisplay won't show because it uses the stats system but it till still write out the csv. * all the stat macros have been left as they were and can be enabled on the LLM_STAT_TAGS_ENABLED define. These are needed for the asset tagging. * disabled LLM_TRACK_PEAK_MEMORY because there is a problem with the way it adds the peaks for multiple threads. This needs to be fixed. * added a CVar to control the csv write interval: LLM.LLMWriteInterval * added static arrays for the enum tags setup. Easier to manage and removes need for slow switch statements. * renamed FLLMThreadStateManager to FLLMTracker to make it consistent with the enum * fixed program size stat which was broken recently on PS4. This was due to initialisation order and global platform stats setup #jira NONE-01 Change 3622978 by Lukasz.Furman changed WeaponStatus BT decorator to be event driven, fixes AI trying to check ranged weapon abilities without valid weapon includes copy of CL# 3620700 #jira FORT-45914 #review-3622979 John.Abercrombie Change 3622340 by Josh.Markiewicz #UE4 - playerid netconnection variable setup properly on clients and servers for both beacons and game net drivers - ipconnection prints uniqueid with lowleveldescribe #jira fort-0 Change 3621386 by Tim.Tillotson Add the ability to retry HTTP operations by VERB. This allows us to automatically retry cloud save PUT operations. #JIRA FORT-53717 #review-3621317 @Josh.Markiewicz @Ian.Fox @Carlos.Cuello Change 3620517 by Keith.Judge Xbox One - Revert iOS behaviour for the depth bias back to how it was, and make separate XB1 change use its own define to avoid confusion. #jira FORT-53928 Change 3620248 by Lukasz.Furman changed behavior of UBTTask_MoveTo.bStopOnOverlap flag after recent AcceptanceRadius fix, updated comments to be more detailed #jira nojira Change 3616187 by Bob.Tellez #UE4 Throwing an error (for now) if you attempt to use both the malloc profiler and leak detection at the same time since it causes a deadlock. #JIRA UE-0 Change 3613935 by Peter.Knepley More logging on update launcher launching #jira nojira #robomerge rp rn Change 3613537 by Marcus.Wassmer Safety asserts around the MarkPendingKill feature for rendering classes. #jira FORT-50385 Change 3613399 by Arne.Schober Extended ShowMaterialDrawEvents to enable it only in very specific passes and default enabled Depth for Fortnite on PS4 to track down a crash. #RB Marcus.Wassmer #jira FORT-53610 Change 3610794 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce UMG class memory #jira UE-52043 #ROBOMERGE-SOURCE: CL 3610792 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3610144 by Stewart.Lynch General LLM improvements * added tracking for misc task graph tasks (moves 20MB out of Untagged) * renamed EngineTick to EngineMisc * added tracking for FName * added tracking for GC_ProcessObjectArray potential leak * renamed index & vertex buffers stat to Meshes * added hooks for MemPro to track allocations from a single category. Currently defined out. I haven't added MemPro.cpp/h. * removed AVAILABLE_PHYSICAL stat from LLM csv * csv files now include the date in the filename * fixed potential threading bug when reading stat values to csv * made IsDebugMemoryEnabled() always return false in shipping and if not runnong on a dev-kit (PS4). The reason is that the function is a bit hacky, and should only be used for debug purposes, such as displaying the on screen warning. * added lots more scopes * started changing Stat scopes to enum scopes. Stat scopes will be phased out. * added tracking of FName memory * added llmplatform tracking for XBoxSymbols * added llm tracking for CPU symbol allocations (20MB) * wrote an allocator for XBoxOneStack reading so that it doesn't go through Malloc and get tracked by LLM. * added tracking for GC * fixed tracking for TransientMemoryAllocator * added tracking for networking memory * added more audio memory tracking * added tracking for blueprints * added tracking for static meshes * show on screen warning if debug memory is enabled * added tracking for particles * renamed Phys to PhysX and added more scopes * renamed Slate to UI and added more scopes * much better coverage of networking memory * improved coverage of audio #jira FORT-53420 Change 3610136 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce size of UStaticMeshComponent by 224 bytes (cumulative, 64 bytes exclusive) Reduce size of UPrimitiveComponent by 176 bytes (cumulative, 64 bytes exclusive). Reduce size of USceneComponent by 112 bytes. Reduce size of FLightingChannels from 3 bytes to 1. Reduce size of FBodyInstance by 16 bytes. #jira FORT-52043 #ROBOMERGE-SOURCE: CL 3610134 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607937 by robomerge #ROBOMERGE-AUTHOR: paul.moore #jira FORT-53105 - Fix websocket not providing information when the peer closes the connection. #ROBOMERGE-SOURCE: CL 3607933 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607042 by Bart.Hawthorne Move replay.Loop functionality into the demo net driver and rename it demo.Loop #jira none Change 3605448 by robomerge #ROBOMERGE-AUTHOR: seth.weedin #Athena - Pass owner to ActiveSounds created using PlaySoundAtLocation/PlaySound2D to allow "Limit to Owner" concurrency rules to work. Hook up for weapon sounds. #JIRA FORT-53180 #ROBOMERGE-SOURCE: CL 3605443 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3604787 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Initial support for hotfixing live assets from .ini files - This allows clients and server to patch certain assets in memory whenever .ini file hotfixes are downloaded - Only CurveTables and DataTables are supported for now - The new asset content must be in Json format, the same format the editor uses for importing - Assets that are hotfixed will be synchronously loaded if they're not already in memory. They'll be retained in memory afterwards. - IMPORTANT: Json data must be supplied on a single line, and all double quotes must be escaped! - The changes must go in the Game.ini file and use the following syntax: [AssetHotfix] +CurveTable=("/Game/Folder/MyCurveTable","[{\"Name\":\"Default\"}]") +DataTable=("/Game/Folder2/MyDataTable","[{\"Name\":\"Foo\"}]") #jira FORT-52099 [CODEREVIEW] frank.gigliotti [FYI] peter.knepley,bob.tellez #ROBOMERGE-SOURCE: CL 3604784 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3602067 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Loading time improvements - This shaves off up to 10 seconds of load time on PS4 in Athena Details: - Fixed multiple sub-levels not being able to be enqueued for loading in a single client frame. Athena has ~300 sub-levels, so this ended up wasting up many seconds. - Fixed 3D world being rendered while loading (frees up game thread cycles for throttled streaming) - UWorld::AllowLevelLoadRequests() was not allowing load requests to go through while an async load was in progress and the match had started. It now allows this as long as the world isn't being rendered (loading screen.) - Eliminated extra 2 second delay before loading screen is dismissed (in Athena only) - Note: A side effect of this change is that the progress bar may not update as smoothly on loading screen. We'll look at tuning the throttle settings if it ends up being a problem. [CODEREVIEW] ori.cohen #jira AT-1477 #ROBOMERGE-SOURCE: CL 3602061 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3601951 by Luke.Thatcher [FORTNITE] [PS4] [!] Fix memory stats in the old PS4 memory system - Physical memory stat now includes garlic and onion allocations. CPU OOMs will result in "AvailablePhysical" being close to 0. - Added garlic, onion and defrag stats to the platform memory stats struct. - Added fixed pool sizes to platform memory stats. - Modified the Fortnite heartbeat logging to include extra details of PS4 fixed sized pools. #jira FORT-52910 Change 3600340 by robomerge #ROBOMERGE-AUTHOR: wes.hunt All Fort analytics events now contain a GameState attribute indicating the active GameState ClassName when the event is sent. Added some new context to crashreporter to help identify Athena matches near and long term. * Near Term: GameNameSuffix - set via FCoreDelegates::CrashOverrideParamsChanged * Added bools to the params to indicate WHICH ones are changing * Allows you to set only some values, and clear them out. * Hooked up in FortGameState::PostInitializeComponents. * FortGameState clears it (for returning to main menu). * FortGameStateAthena sets it (for going into an Athena match). * Only does this when it's a true GameMode GameState instance (ie, not PIE) so PIE crashes aren't modified. * Long Term: GameStateName - set via FCoreDelegates::GameStateClassChanged. * This works for ANY crash on ANY game. * Hooked up in GameState::HandleMatchIsWaitingToStart. #jira AT-1457 #jira AT-519 [CODEREVIEW] peter.knepley,josh.markiewicz #ROBOMERGE-SOURCE: CL 3600278 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3597593 by Ben.Zeigler #jira FORT-50722 Fix issues where AssetBundles weren't being correctly updated during cook, which is blocking both Noland and Abercrombie Partial copy of CL #3402335 and #3526538 #robomerge rp, rn Change 3597577 by Luke.Thatcher [FORTNITE] [PS4] [~] Modified the way memory is allocated on Playstation to make more memory available to the CPU. - Previously the amount of texture memory wasn╞t fixed due to the way the defrag memory is allocated on PS4. This meant we had to have a significant amount of slack. - With the new configuration, we have a guaranteed texture memory pool, so the slack can be significantly smaller, meaning we can give more memory to the CPU, which is where most of our memory pressure is. #jira FORT-50825 #jira FORT-49688 #jira FORT-49695 #jira FORT-50054 Change 3596556 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Enable GC clustering for actors and blueprints in Fortnite - This shaves off about 10 ms on GC frames in Athena on PS4 (~52 ms -> 42 ms) - Clustering doesn't work on building actors because they're very dynamic, but general Fort static meshes and blueprints are clustered! - This gets us into the realm of shippability on console for very large UObject counts [FYI] bob.tellez,peter.knepley,michael.noland #jira AT-1440 #ROBOMERGE-SOURCE: CL 3596552 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3593994 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Force largest distance field atlas size in Athena - We now force the largest distance field atlas size before preloading Athena content (512x512x1024 = 256 MB). This helps with load times because it's expensive to re-create this texture on consoles, and typically it gets resized over a dozen times. - Added new CVar "r.DistanceFields.ForceMaxAtlasSize" (defaults to zero) - Important: Currently we never "reset" this atlas texture. This will be a problem when going back to play Campaigns after preloading to play Athena. I will look into this soon! [CODEREVIEW] peter.knepley,marcus.wassmer,michael.noland,daniel.wright #jira AT-1477 #ROBOMERGE-SOURCE: CL 3593992 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592096 by robomerge #ROBOMERGE-AUTHOR: ben.salem Prototype of gauntlet memory soak test. Not fully fiinished, but want changes in tonight's cook so we can experiment on cooked build tomorrow morning. #jira FORT-0 #ROBOMERGE-SOURCE: CL 3592025 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592085 by robomerge #ROBOMERGE-AUTHOR: mike.fricker HLOD: Added support for a fixed distance override via CVar - Use this to force all HLODs to transition at a specific distance, regardless of their TransitionSize/MinDrawDistance/LODDrawDistance - New CVar: r.HLOD.DistanceOverride (defaults to 0) - Fortnite uses 350m for this distance, fornow [CODEREVIEW] jurre.debaare #jira AT-1462 #ROBOMERGE-SOURCE: CL 3591929 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3587391 by Michael.Noland Fortnite: Lots of memory tracking stuff - Added memory logging to game state transitions and overall health tracking for the entire session - Added support for Gauntlet-based tests to Fortnite - Enabled the Gauntlet plugin (and fixed spaces instead of tabs in the .uproject file) - Added code to set gauntlet state based on the current subclass of AFortGameState - Added a base controller and a memory report controller (WIP, ported from equivalents in Paragon) - Updated FortniteClient to use MALLOC_LEAKDETECTION=1, PLATFORM_USES_FIXED_GMalloc_CLASS=0, and AllowASLRInShipping=false in Development builds (may enable them in Test builds in a future CL, to match Paragon) #jira FORT-50567 Change 3583307 by Peter.Knepley Need non-jittered ViewToClip matrix in order to do "after tonemapper" postprocess blendable material that's positioned in view space Modify the AttachScope material function to use "ViewSpaceTransformToClipSpace" instead of going back to world space first. This also means it can utilitize the ViewToClipNoAA matrix. #jira AT-733 Change 3582378 by Luke.Thatcher [FORTNITE] [~] Unify Xbox and PS4 scalability settings and device profiles. - All Xbox and PS4 r. CVars are overriden in their platform's Scalability.ini file. The device profile only selects sg. groups. - Fixed the Neo 4K profile for Fortnite. Previously players with 4K monitors would choose the Neo_4K profile, which looks worse than Neo, but still renders at 1080p. - Console specific settings have to live in the Base/Default .ini's, as the cooker doesn't load the console specific files. This is fixed in UE4 Main. #jira FORT-50206 Change 3580934 by Luke.Thatcher [FORTNITE] [PS4] [+] Support different garlic and onion heap sizes in the old memory system for base and neo. - Neo has 512 MB more direct memory than a base kit. - Increased the garlic heap size by 416 MB on Neo, and CPU heap by 96 MB. #jira FORT-50206 Change 3576664 by Bart.Hawthorne Re-enable Oodle and add Mac implementation. Also includes fixed oodle libraries by MichaelT. #jira FORT-49986 #tests Connected to PC server with editor -game build on Mac in Athena Change 3575671 by Nick.Darnell Athena - The gameplay ability system now supports adding Gameplay Cue's with params. Now using cues instead of gameplay effects in order to notify when the bandaging/shielding begin and end. THe new method should properly show and disappear on time, b/c it's all client side. Added a way in the Athena Context to easily hook gameplay "UI" cues that are rebroadcast from the Athena Pawn. #jira AT-644 Change 3575534 by Peter.Knepley Ability montage replication optimizations #jira AT-955 Change 3573305 by Lukasz.Furman disabled path section update when crowd simulated AI is moving through navlink, fixed AI getting stuck in some corners #jira FORT-49748 Change 3566775 by John.Abercrombie Optimizations from Dev-Athena - Tested with PIE & and 2 Player local server game #ue4-athena - (merge CLs 3345771 and 3363030 from Framework) - Refactored CharacterMovementComponent determination of net send rate when combining moves into a virtual function GetClientNetSendDeltaTime(). Added configurable values to GameNetworkManager under [/Script/Engine.GameNetworkManager]. For Fortnite, set unthrottled (<= 10 player) limit to 60Hz (from 90Hz), and trying throttled at 30Hz (from 45Hz). #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545535 by Zak.Middleton on 2017/07/19 20:15:17. #ue4-athena - (merge CL 3377054 from Framework) - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545452 by Zak.Middleton on 2017/07/19 18:57:45. #athena - If network smoothing mode is not linear, don't replicate ReplicatedServerLastTransformUpdateTimeStamp. Only AI use linear smoothing in FN. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545559 by Zak.Middleton on 2017/07/19 20:47:18. #ue4-athena - Converted all RPCs on UCharacterMovementComponent to be on ACharacter instead, to avoid the bandwidth overhead of calling RPCs on a component. Existing overrides of _Implementation and _Validate functions should remain unchanged. If for some reason someone overrode the old RPC virtuals, those are now non-virtual on UCharacterMovementComponent but are still virtual on ACharacter. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3557564 by Zak.Middleton on 2017/07/26 20:13:43. #ue4-athena - Throttle character movement server corrections and acks to the client based on time since last adjustment. Cuts down on network traffic for character movement. Added configurable settings to control this. Set times to zero to disable this. - NetworkMinTimeBetweenClientAckGoodMove - NetworkMinTimeBetweenClientAdjustments - NetworkMinTimeBetweenClientAdjustmentsLargeCorrection - NetworkLargeClientCorrectionDistance #ue4-athena - Perf: (EditMerge CL 3492200 from Dev-Framework): Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561669 by Zak.Middleton on 2017/07/28 14:16:19. #ue4-athena - Perf: (EditMerge CL 3468253 from Dev-AnimPhys): Remove the need for calling constructors for physx PxRaycastHit in the dynamic hit result buffer. Saves 30% of the cost of doing small raycasts. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561672 by Zak.Middleton on 2017/07/28 14:17:12. #ue4-athena - Perf: (EditMerge CL 3359553 from Dev-Framework): Optimization in CharacterMovement tick to not extract transform values twice. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561674 by Zak.Middleton on 2017/07/28 14:18:04. #ue4-athena - Perf: (EditMerge CL 3426174 from Dev-Framework): Avoid call to virtual getSimulationFilterData() to only use it when needed in PreFilter if we actually have items in the IgnoreComponents list (which is rare). The sim filter data 'word2' stores the component ID. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561709 by Zak.Middleton on 2017/07/28 14:32:11. #ue4-athena - Perf: (EditMerge CL 3382054 from Dev-Framework): Optimize CharacterMovementComponent::GetPredictionData_Client_Character() and GetPredictionData_Server_Character() to remove virtual calls. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561856 by Zak.Middleton on 2017/07/28 15:11:57. #ue4-athena - Use less bandwidth for CharacterMovement RPCs when the character is not standing on any component (ie during jumps and falling). Added separate "...NoBase()" versions of ServerMove() and ServerMoveDual(). Undid part of 3557564 and restored the CMC functions to be virtual, and removed virtual keyword from matching Character functions, so that overrides are in one consistent place. Also guarantees backwards compat for licensees. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3564858 by Zak.Middleton on 2017/07/31 15:24:39. #jira Fort-1 Change 3562825 by Chris.Gagnon Added CommonCustomNavigation Widget, this widget can be used to capture navigation requests to handle in custom ways. #jira FORT-0 Change 3562098 by Josh.Markiewicz #UE4 Encryption token/ack changes - moved encryption token request/ack to delegates - moved FNetworkNotify to NetworkDelegates.h - moved connection logic out of GameInstance and back into networking code -- GameInstance sends an enum and the network code does the right thing based on that #review-3559694 @ryan.gerleve #tests PC dedicated server connections golden path and forced failures #jira FORT-0 Change 3559354 by Luke.Thatcher [FORTNITE] [PS4] [^] Merging (as edit) support for setting flip rate on PS4 (CLs 3555687 and 3558843) from //Fortnite/Dev-Athena/... to //Fortnite/Main/... - Allowed rates are now 60Hz, 30Hz and 20Hz. - Exposed by r.PS4FlipRate CVar, set to 60Hz by default. Requires r.Vsync 1. #jira FORT-49463 Change 3532644 by Jeff.Campeau Fix mapping current culture to movie audio channels using data table to map languages to track indices. Don't rewind cinematics (they all start from the begining because we load them and play them once). Seeks cause us to have to redecode video frames at a large perf cost. Delay cutscene playback by 0.5 seconds to give us time to build up a buffer of decoded video. (Temporary workaround for audio/video sync). Generic implementation for getting current languages in BP. Fix more issues with calling into media source functionality when using the source reader (potential hangs). #jira FORT-44376,FORT-48209,FORT-48040 #testedon Preflight from last night combined with Bob's changes from today clear all known issues. This change tested on Xbox and PC multiple times each. Change 3527761 by Chris.Gagnon Fixed various issues in the widget switcher, also added Advanced calls that allow the user to specify if activation/deactivation should occur. #jira FORT-47988, FORT-47984 Change 3525390 by Jeff.Campeau Remove media player log spam #jira FORT-47393 #testedon compiled client Change 3518692 by Chris.Gagnon Added CleanOperation Adding which will remove unneeded op combinations from the op queue. Also added the ability to suspend starting operation queue processing to allow complex operations to accumulate and in turn allow the Clean Op adding code to be effective. GameFeedback, and the widget switcer utilize this to avoid unnesacary activations of a screen that is immediately being deactivated. Root issue of the mentioned bug is that activation of the quest screen created a latent navigation du to the deferal of scrolling into view. This is still an issue in general, there isn't much we can do about it. Other than avoid activating a panel that will deactivated that frame as we did with the code changes in this CL. #jira FORT-47395 Change 3514658 by Jeff.Campeau Fixed a media player threading issue where the OnMediaOpened event could be called before the media Init script completed. Moved the event Cinematic used when setting up and playing media after media file load to use a delayed event from the MovieWidget so that it will always happen after the movie widget processing. Fixed an issue that could cause samples to leak in MfMedia plugin and cause ReadSample to lockup. Fixed an issue where a default texture is displayed for movies before the movie starts playing (the player may be active before the first frame of the video is decoded). Default is now all black as it is expected that this texture will be displayed for several frames. #jira FORT-46801 #testedon Xbox through rocket launch cinematic including vintertip for stairs, skill tree nodes, and victory result video Change 3507896 by Ryan.Gerleve Changed the net.UseEncryptionToken to be more useful and renamed it to net.AllowEncryption. This cvar, if 0, will prevent the PacketHandler from adding the configured encryption component, and prevent UPendingNetGame and AOnlineBeaconClient from filling out the EncryptionToken parameter of NMT_Hello - which prevents the extra encryption handshake connection step. #jira FORT-46878 #review-3507897 @josh.markiewicz Change 3503928 by Ryan.Gerleve Add safety checks around some of the encryption functionality. Fixes a server crash seen during load testing. #jira FORT-46772 #review-3503929 bob.tellez #robomerge ReleaseNext [CL 3673993 by Bob Tellez in Main branch]
2017-09-30 03:42:01 -04:00
// validate exported data
// shrink arrays before counting memory
// it will be reallocated when adding to octree and RemoveNode will have different value returned by GetAllocatedSize()
Merging from //UE4/Fortnite-Staging up to CL#3673800 based on CL#3664064 from //Fortnite/Main #rb none #lockdown Nick.Penwarden ================================================================================================= THESE CHANGES TOUCH MULTIPLE PLATFORMS AND/OR RESTRICTED FOLDERS. YOU MUST REVIEW THESE MANUALLY AND APPEND THEM TO THE DESCRIPTIONS FOR THE APPROPRIATE PLATFORMS. ================================================================================================= Change 3662267 by Nick.Darnell Engine - Fixing a bug in GetAccurateRealTime, it wasn't subtracting GStartTime, which if you don't prevents accurate platform time when you try to store it in a float. #jira nojira Change 3662176 by Ben.Marsh Disable image integrity report generation if a debugger is attached, and in editor builds. #jira FORT-55656 Change 3656958 by Luke.Thatcher [FORTNITE] [CONSOLE] [+] Improved frame syncing mechanism - Improves input latency by allowing the game thread to sync to the swap chain flip of the previous frame. - Added "r.GTSyncType" CVar to control how the game thread syncs with the rest of the pipe. - r.GTSyncType 2 will sync the game thread with the flip of the swap chain, preventing the pipe from getting too long and causing excess input latency. Platforms are required to implement RHIWaitForFlip and RHISignalFlipEvent, and call RHIInitializeFlipTracking on RHI startup. A separate thread monitors the progress of frame flips and signals task graph events as they pass their corresponding frame index. In r.GTSyncType 2 mode, the game thread is signaled by this flip tracking thread. [~] Unified platform specific sync interval CVars (D3D12.SyncInterval, D3D11.SyncInterval, r.PS4FlipRate, RHI.SyncIntervalOgl) into one: rhi.SyncInterval - 1 == 60Hz - 2 == 30Hz - 3 == 20Hz [-] Removed large number in XboxOneTime. Adding this arbitrary number prevents us from comparing timestamps from FPlatformTime::Seconds() and various OS callbacks (e.g. flip timings). #jira FORT-50803 Change 3655598 by Lukasz.Furman added filtering for navmesh's low height spans to fix crash on layer partitioning % of span reductions depends on presence of stair or roof building in navmesh tile, changed failsafes in layer code to ignore entire tile if heightfield is too complex to partition instead of reallocating memory #jira FORT-35375 Change 3648972 by Keith.Judge Add analytics to help diagnose default parameter collection buffer issue. +++ REMOVE ONCE CORE ISSUE IS SOLVED +++ #jira FORT-54690 Change 3648756 by Bart.Hawthorne Integrate 3645298 from //UE4/Dev-Networking Deprecate GetNetworkObjectInfo in favor of separate FindNetworkObjectInfo and FindOrCreateNetworkObjectInfo methods. #jira none Change 3643090 by Josh.Markiewicz #UE4 - proper handling of "pending connection lost" - triggered only if a connection is lost and there no "owning actor" to deal with the connection loss -- added Rejoin and CleanedUp states to connection to make sure that the pending connection lost delegate only fires at the appropriate time - delegate returns the unique id of the player if known (still possible to be unknown if connection lost after NMT_Hello) - changed debug output on timeout if the net connection was already in the process of being destroyed -- occurs when game hitches during the pending destroy 2 second wait -- ReceivedAcks should have been called to clean things up quietly in those 2 seconds but blocking the game thread will cause the cleanup to look like a timeout - added userid to UNetConnection::Describe - bad split screen player handling of unique id -- splitscreen uniqueid was overwriting the primary player id -- only store the id on the child connection - added some clarifying comments #review-3642816 @ryan.gerleve, @bob.tellez, @sam.zamani, @bart.hawthorne, @dave.ratti #jira FORT-26776 Change 3639043 by Alex.Thurman Fix CommonTreeView SetSelection to correctly update list navigation, and behave similarly to CommonListView's SetSelectedItem. #JIRA FORT-45841 Change 3632275 by Seth.Weedin #JIRA FORT-54203 - Add clamps to ActiveSound fade interpolation to prevent unwanted volume spikes. Remove 0.01 start time for single-fire audio cues. Should remove the sudden pops sometimes heard when firing weapons, as well as smooth out fade volume in general. Change 3626944 by Josh.Markiewicz #UE4 - added "updates connection status" flag to ServiceConfigMCP - disable updates on Cloud and Friend services (Fortnite only) - removed overloaded ProcessConnectionStatus function in cloud service #jira FORT-53113 Change 3626226 by Stewart.Lynch LLM Update - Memory reductions, Summary page, enum scopes, refactor and cleanup of tags * Remove all static arrays and hard limits from LLM. Everything is now dynamically allocated using the internal LLM allocators. The overhead when LLM is disabled is now only 48K (was 40MB) * re-wrote LLMMap. Now stores an int32 index rather then pointer in the HashMap array. Also, changed the Values to be arrays for structs instead of structs of arrays. Means that the tag can be stored in a single byte. Changed the size of the allocation size from int64 to int32. All this takes the memory down from around 600MB to 100MB. It was 120 bytes per allocation, now 29 bytes. * changed all LLM scopes over to enums. This has a number of benefits; LLM can be enable in Test, less CPU overhead, stored in a byte (LLM overhead /= 8) * summary page for content creators where all lower-level stats are grouped under one Engine stat * renamed ELLMScopeTag enum to ELLMTag * renamed LLM_SCOPED_TAG_WITH_ENUM macro to LLM_SCOPE * removed Tracker arg from LLM_SCOPE and added LLM_PLATFORM_SCOPE macro * fixed GenericPlatformMallocCrash stat. Although it seems not be be used anymore * fixed BackupOOMMemoryPool stat (now shows in both default and platform pages) * added separate LLM enums for XB1, PS4 and D3D12 (PS4LLM.cpp/h etc.) * lots of changes adding/removing/renaming tags * added LLMArray and FLLMObjectAllocator classes * disabled asset tag tracking by default because it takes up so much memory even when not used * enable LLM in all non-shipping builds. In Test the on screendisplay won't show because it uses the stats system but it till still write out the csv. * all the stat macros have been left as they were and can be enabled on the LLM_STAT_TAGS_ENABLED define. These are needed for the asset tagging. * disabled LLM_TRACK_PEAK_MEMORY because there is a problem with the way it adds the peaks for multiple threads. This needs to be fixed. * added a CVar to control the csv write interval: LLM.LLMWriteInterval * added static arrays for the enum tags setup. Easier to manage and removes need for slow switch statements. * renamed FLLMThreadStateManager to FLLMTracker to make it consistent with the enum * fixed program size stat which was broken recently on PS4. This was due to initialisation order and global platform stats setup #jira NONE-01 Change 3622978 by Lukasz.Furman changed WeaponStatus BT decorator to be event driven, fixes AI trying to check ranged weapon abilities without valid weapon includes copy of CL# 3620700 #jira FORT-45914 #review-3622979 John.Abercrombie Change 3622340 by Josh.Markiewicz #UE4 - playerid netconnection variable setup properly on clients and servers for both beacons and game net drivers - ipconnection prints uniqueid with lowleveldescribe #jira fort-0 Change 3621386 by Tim.Tillotson Add the ability to retry HTTP operations by VERB. This allows us to automatically retry cloud save PUT operations. #JIRA FORT-53717 #review-3621317 @Josh.Markiewicz @Ian.Fox @Carlos.Cuello Change 3620517 by Keith.Judge Xbox One - Revert iOS behaviour for the depth bias back to how it was, and make separate XB1 change use its own define to avoid confusion. #jira FORT-53928 Change 3620248 by Lukasz.Furman changed behavior of UBTTask_MoveTo.bStopOnOverlap flag after recent AcceptanceRadius fix, updated comments to be more detailed #jira nojira Change 3616187 by Bob.Tellez #UE4 Throwing an error (for now) if you attempt to use both the malloc profiler and leak detection at the same time since it causes a deadlock. #JIRA UE-0 Change 3613935 by Peter.Knepley More logging on update launcher launching #jira nojira #robomerge rp rn Change 3613537 by Marcus.Wassmer Safety asserts around the MarkPendingKill feature for rendering classes. #jira FORT-50385 Change 3613399 by Arne.Schober Extended ShowMaterialDrawEvents to enable it only in very specific passes and default enabled Depth for Fortnite on PS4 to track down a crash. #RB Marcus.Wassmer #jira FORT-53610 Change 3610794 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce UMG class memory #jira UE-52043 #ROBOMERGE-SOURCE: CL 3610792 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3610144 by Stewart.Lynch General LLM improvements * added tracking for misc task graph tasks (moves 20MB out of Untagged) * renamed EngineTick to EngineMisc * added tracking for FName * added tracking for GC_ProcessObjectArray potential leak * renamed index & vertex buffers stat to Meshes * added hooks for MemPro to track allocations from a single category. Currently defined out. I haven't added MemPro.cpp/h. * removed AVAILABLE_PHYSICAL stat from LLM csv * csv files now include the date in the filename * fixed potential threading bug when reading stat values to csv * made IsDebugMemoryEnabled() always return false in shipping and if not runnong on a dev-kit (PS4). The reason is that the function is a bit hacky, and should only be used for debug purposes, such as displaying the on screen warning. * added lots more scopes * started changing Stat scopes to enum scopes. Stat scopes will be phased out. * added tracking of FName memory * added llmplatform tracking for XBoxSymbols * added llm tracking for CPU symbol allocations (20MB) * wrote an allocator for XBoxOneStack reading so that it doesn't go through Malloc and get tracked by LLM. * added tracking for GC * fixed tracking for TransientMemoryAllocator * added tracking for networking memory * added more audio memory tracking * added tracking for blueprints * added tracking for static meshes * show on screen warning if debug memory is enabled * added tracking for particles * renamed Phys to PhysX and added more scopes * renamed Slate to UI and added more scopes * much better coverage of networking memory * improved coverage of audio #jira FORT-53420 Change 3610136 by robomerge #ROBOMERGE-AUTHOR: marc.audy Reduce size of UStaticMeshComponent by 224 bytes (cumulative, 64 bytes exclusive) Reduce size of UPrimitiveComponent by 176 bytes (cumulative, 64 bytes exclusive). Reduce size of USceneComponent by 112 bytes. Reduce size of FLightingChannels from 3 bytes to 1. Reduce size of FBodyInstance by 16 bytes. #jira FORT-52043 #ROBOMERGE-SOURCE: CL 3610134 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607937 by robomerge #ROBOMERGE-AUTHOR: paul.moore #jira FORT-53105 - Fix websocket not providing information when the peer closes the connection. #ROBOMERGE-SOURCE: CL 3607933 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3607042 by Bart.Hawthorne Move replay.Loop functionality into the demo net driver and rename it demo.Loop #jira none Change 3605448 by robomerge #ROBOMERGE-AUTHOR: seth.weedin #Athena - Pass owner to ActiveSounds created using PlaySoundAtLocation/PlaySound2D to allow "Limit to Owner" concurrency rules to work. Hook up for weapon sounds. #JIRA FORT-53180 #ROBOMERGE-SOURCE: CL 3605443 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3604787 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Initial support for hotfixing live assets from .ini files - This allows clients and server to patch certain assets in memory whenever .ini file hotfixes are downloaded - Only CurveTables and DataTables are supported for now - The new asset content must be in Json format, the same format the editor uses for importing - Assets that are hotfixed will be synchronously loaded if they're not already in memory. They'll be retained in memory afterwards. - IMPORTANT: Json data must be supplied on a single line, and all double quotes must be escaped! - The changes must go in the Game.ini file and use the following syntax: [AssetHotfix] +CurveTable=("/Game/Folder/MyCurveTable","[{\"Name\":\"Default\"}]") +DataTable=("/Game/Folder2/MyDataTable","[{\"Name\":\"Foo\"}]") #jira FORT-52099 [CODEREVIEW] frank.gigliotti [FYI] peter.knepley,bob.tellez #ROBOMERGE-SOURCE: CL 3604784 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3602067 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Loading time improvements - This shaves off up to 10 seconds of load time on PS4 in Athena Details: - Fixed multiple sub-levels not being able to be enqueued for loading in a single client frame. Athena has ~300 sub-levels, so this ended up wasting up many seconds. - Fixed 3D world being rendered while loading (frees up game thread cycles for throttled streaming) - UWorld::AllowLevelLoadRequests() was not allowing load requests to go through while an async load was in progress and the match had started. It now allows this as long as the world isn't being rendered (loading screen.) - Eliminated extra 2 second delay before loading screen is dismissed (in Athena only) - Note: A side effect of this change is that the progress bar may not update as smoothly on loading screen. We'll look at tuning the throttle settings if it ends up being a problem. [CODEREVIEW] ori.cohen #jira AT-1477 #ROBOMERGE-SOURCE: CL 3602061 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3601951 by Luke.Thatcher [FORTNITE] [PS4] [!] Fix memory stats in the old PS4 memory system - Physical memory stat now includes garlic and onion allocations. CPU OOMs will result in "AvailablePhysical" being close to 0. - Added garlic, onion and defrag stats to the platform memory stats struct. - Added fixed pool sizes to platform memory stats. - Modified the Fortnite heartbeat logging to include extra details of PS4 fixed sized pools. #jira FORT-52910 Change 3600340 by robomerge #ROBOMERGE-AUTHOR: wes.hunt All Fort analytics events now contain a GameState attribute indicating the active GameState ClassName when the event is sent. Added some new context to crashreporter to help identify Athena matches near and long term. * Near Term: GameNameSuffix - set via FCoreDelegates::CrashOverrideParamsChanged * Added bools to the params to indicate WHICH ones are changing * Allows you to set only some values, and clear them out. * Hooked up in FortGameState::PostInitializeComponents. * FortGameState clears it (for returning to main menu). * FortGameStateAthena sets it (for going into an Athena match). * Only does this when it's a true GameMode GameState instance (ie, not PIE) so PIE crashes aren't modified. * Long Term: GameStateName - set via FCoreDelegates::GameStateClassChanged. * This works for ANY crash on ANY game. * Hooked up in GameState::HandleMatchIsWaitingToStart. #jira AT-1457 #jira AT-519 [CODEREVIEW] peter.knepley,josh.markiewicz #ROBOMERGE-SOURCE: CL 3600278 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3597593 by Ben.Zeigler #jira FORT-50722 Fix issues where AssetBundles weren't being correctly updated during cook, which is blocking both Noland and Abercrombie Partial copy of CL #3402335 and #3526538 #robomerge rp, rn Change 3597577 by Luke.Thatcher [FORTNITE] [PS4] [~] Modified the way memory is allocated on Playstation to make more memory available to the CPU. - Previously the amount of texture memory wasn╞t fixed due to the way the defrag memory is allocated on PS4. This meant we had to have a significant amount of slack. - With the new configuration, we have a guaranteed texture memory pool, so the slack can be significantly smaller, meaning we can give more memory to the CPU, which is where most of our memory pressure is. #jira FORT-50825 #jira FORT-49688 #jira FORT-49695 #jira FORT-50054 Change 3596556 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Enable GC clustering for actors and blueprints in Fortnite - This shaves off about 10 ms on GC frames in Athena on PS4 (~52 ms -> 42 ms) - Clustering doesn't work on building actors because they're very dynamic, but general Fort static meshes and blueprints are clustered! - This gets us into the realm of shippability on console for very large UObject counts [FYI] bob.tellez,peter.knepley,michael.noland #jira AT-1440 #ROBOMERGE-SOURCE: CL 3596552 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3593994 by robomerge #ROBOMERGE-AUTHOR: mike.fricker Force largest distance field atlas size in Athena - We now force the largest distance field atlas size before preloading Athena content (512x512x1024 = 256 MB). This helps with load times because it's expensive to re-create this texture on consoles, and typically it gets resized over a dozen times. - Added new CVar "r.DistanceFields.ForceMaxAtlasSize" (defaults to zero) - Important: Currently we never "reset" this atlas texture. This will be a problem when going back to play Campaigns after preloading to play Athena. I will look into this soon! [CODEREVIEW] peter.knepley,marcus.wassmer,michael.noland,daniel.wright #jira AT-1477 #ROBOMERGE-SOURCE: CL 3593992 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592096 by robomerge #ROBOMERGE-AUTHOR: ben.salem Prototype of gauntlet memory soak test. Not fully fiinished, but want changes in tonight's cook so we can experiment on cooked build tomorrow morning. #jira FORT-0 #ROBOMERGE-SOURCE: CL 3592025 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3592085 by robomerge #ROBOMERGE-AUTHOR: mike.fricker HLOD: Added support for a fixed distance override via CVar - Use this to force all HLODs to transition at a specific distance, regardless of their TransitionSize/MinDrawDistance/LODDrawDistance - New CVar: r.HLOD.DistanceOverride (defaults to 0) - Fortnite uses 350m for this distance, fornow [CODEREVIEW] jurre.debaare #jira AT-1462 #ROBOMERGE-SOURCE: CL 3591929 in //Fortnite/Release-Prep/... #ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main) Change 3587391 by Michael.Noland Fortnite: Lots of memory tracking stuff - Added memory logging to game state transitions and overall health tracking for the entire session - Added support for Gauntlet-based tests to Fortnite - Enabled the Gauntlet plugin (and fixed spaces instead of tabs in the .uproject file) - Added code to set gauntlet state based on the current subclass of AFortGameState - Added a base controller and a memory report controller (WIP, ported from equivalents in Paragon) - Updated FortniteClient to use MALLOC_LEAKDETECTION=1, PLATFORM_USES_FIXED_GMalloc_CLASS=0, and AllowASLRInShipping=false in Development builds (may enable them in Test builds in a future CL, to match Paragon) #jira FORT-50567 Change 3583307 by Peter.Knepley Need non-jittered ViewToClip matrix in order to do "after tonemapper" postprocess blendable material that's positioned in view space Modify the AttachScope material function to use "ViewSpaceTransformToClipSpace" instead of going back to world space first. This also means it can utilitize the ViewToClipNoAA matrix. #jira AT-733 Change 3582378 by Luke.Thatcher [FORTNITE] [~] Unify Xbox and PS4 scalability settings and device profiles. - All Xbox and PS4 r. CVars are overriden in their platform's Scalability.ini file. The device profile only selects sg. groups. - Fixed the Neo 4K profile for Fortnite. Previously players with 4K monitors would choose the Neo_4K profile, which looks worse than Neo, but still renders at 1080p. - Console specific settings have to live in the Base/Default .ini's, as the cooker doesn't load the console specific files. This is fixed in UE4 Main. #jira FORT-50206 Change 3580934 by Luke.Thatcher [FORTNITE] [PS4] [+] Support different garlic and onion heap sizes in the old memory system for base and neo. - Neo has 512 MB more direct memory than a base kit. - Increased the garlic heap size by 416 MB on Neo, and CPU heap by 96 MB. #jira FORT-50206 Change 3576664 by Bart.Hawthorne Re-enable Oodle and add Mac implementation. Also includes fixed oodle libraries by MichaelT. #jira FORT-49986 #tests Connected to PC server with editor -game build on Mac in Athena Change 3575671 by Nick.Darnell Athena - The gameplay ability system now supports adding Gameplay Cue's with params. Now using cues instead of gameplay effects in order to notify when the bandaging/shielding begin and end. THe new method should properly show and disappear on time, b/c it's all client side. Added a way in the Athena Context to easily hook gameplay "UI" cues that are rebroadcast from the Athena Pawn. #jira AT-644 Change 3575534 by Peter.Knepley Ability montage replication optimizations #jira AT-955 Change 3573305 by Lukasz.Furman disabled path section update when crowd simulated AI is moving through navlink, fixed AI getting stuck in some corners #jira FORT-49748 Change 3566775 by John.Abercrombie Optimizations from Dev-Athena - Tested with PIE & and 2 Player local server game #ue4-athena - (merge CLs 3345771 and 3363030 from Framework) - Refactored CharacterMovementComponent determination of net send rate when combining moves into a virtual function GetClientNetSendDeltaTime(). Added configurable values to GameNetworkManager under [/Script/Engine.GameNetworkManager]. For Fortnite, set unthrottled (<= 10 player) limit to 60Hz (from 90Hz), and trying throttled at 30Hz (from 45Hz). #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545535 by Zak.Middleton on 2017/07/19 20:15:17. #ue4-athena - (merge CL 3377054 from Framework) - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545452 by Zak.Middleton on 2017/07/19 18:57:45. #athena - If network smoothing mode is not linear, don't replicate ReplicatedServerLastTransformUpdateTimeStamp. Only AI use linear smoothing in FN. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545559 by Zak.Middleton on 2017/07/19 20:47:18. #ue4-athena - Converted all RPCs on UCharacterMovementComponent to be on ACharacter instead, to avoid the bandwidth overhead of calling RPCs on a component. Existing overrides of _Implementation and _Validate functions should remain unchanged. If for some reason someone overrode the old RPC virtuals, those are now non-virtual on UCharacterMovementComponent but are still virtual on ACharacter. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3557564 by Zak.Middleton on 2017/07/26 20:13:43. #ue4-athena - Throttle character movement server corrections and acks to the client based on time since last adjustment. Cuts down on network traffic for character movement. Added configurable settings to control this. Set times to zero to disable this. - NetworkMinTimeBetweenClientAckGoodMove - NetworkMinTimeBetweenClientAdjustments - NetworkMinTimeBetweenClientAdjustmentsLargeCorrection - NetworkLargeClientCorrectionDistance #ue4-athena - Perf: (EditMerge CL 3492200 from Dev-Framework): Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561669 by Zak.Middleton on 2017/07/28 14:16:19. #ue4-athena - Perf: (EditMerge CL 3468253 from Dev-AnimPhys): Remove the need for calling constructors for physx PxRaycastHit in the dynamic hit result buffer. Saves 30% of the cost of doing small raycasts. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561672 by Zak.Middleton on 2017/07/28 14:17:12. #ue4-athena - Perf: (EditMerge CL 3359553 from Dev-Framework): Optimization in CharacterMovement tick to not extract transform values twice. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561674 by Zak.Middleton on 2017/07/28 14:18:04. #ue4-athena - Perf: (EditMerge CL 3426174 from Dev-Framework): Avoid call to virtual getSimulationFilterData() to only use it when needed in PreFilter if we actually have items in the IgnoreComponents list (which is rare). The sim filter data 'word2' stores the component ID. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561709 by Zak.Middleton on 2017/07/28 14:32:11. #ue4-athena - Perf: (EditMerge CL 3382054 from Dev-Framework): Optimize CharacterMovementComponent::GetPredictionData_Client_Character() and GetPredictionData_Server_Character() to remove virtual calls. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561856 by Zak.Middleton on 2017/07/28 15:11:57. #ue4-athena - Use less bandwidth for CharacterMovement RPCs when the character is not standing on any component (ie during jumps and falling). Added separate "...NoBase()" versions of ServerMove() and ServerMoveDual(). Undid part of 3557564 and restored the CMC functions to be virtual, and removed virtual keyword from matching Character functions, so that overrides are in one consistent place. Also guarantees backwards compat for licensees. #AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3564858 by Zak.Middleton on 2017/07/31 15:24:39. #jira Fort-1 Change 3562825 by Chris.Gagnon Added CommonCustomNavigation Widget, this widget can be used to capture navigation requests to handle in custom ways. #jira FORT-0 Change 3562098 by Josh.Markiewicz #UE4 Encryption token/ack changes - moved encryption token request/ack to delegates - moved FNetworkNotify to NetworkDelegates.h - moved connection logic out of GameInstance and back into networking code -- GameInstance sends an enum and the network code does the right thing based on that #review-3559694 @ryan.gerleve #tests PC dedicated server connections golden path and forced failures #jira FORT-0 Change 3559354 by Luke.Thatcher [FORTNITE] [PS4] [^] Merging (as edit) support for setting flip rate on PS4 (CLs 3555687 and 3558843) from //Fortnite/Dev-Athena/... to //Fortnite/Main/... - Allowed rates are now 60Hz, 30Hz and 20Hz. - Exposed by r.PS4FlipRate CVar, set to 60Hz by default. Requires r.Vsync 1. #jira FORT-49463 Change 3532644 by Jeff.Campeau Fix mapping current culture to movie audio channels using data table to map languages to track indices. Don't rewind cinematics (they all start from the begining because we load them and play them once). Seeks cause us to have to redecode video frames at a large perf cost. Delay cutscene playback by 0.5 seconds to give us time to build up a buffer of decoded video. (Temporary workaround for audio/video sync). Generic implementation for getting current languages in BP. Fix more issues with calling into media source functionality when using the source reader (potential hangs). #jira FORT-44376,FORT-48209,FORT-48040 #testedon Preflight from last night combined with Bob's changes from today clear all known issues. This change tested on Xbox and PC multiple times each. Change 3527761 by Chris.Gagnon Fixed various issues in the widget switcher, also added Advanced calls that allow the user to specify if activation/deactivation should occur. #jira FORT-47988, FORT-47984 Change 3525390 by Jeff.Campeau Remove media player log spam #jira FORT-47393 #testedon compiled client Change 3518692 by Chris.Gagnon Added CleanOperation Adding which will remove unneeded op combinations from the op queue. Also added the ability to suspend starting operation queue processing to allow complex operations to accumulate and in turn allow the Clean Op adding code to be effective. GameFeedback, and the widget switcer utilize this to avoid unnesacary activations of a screen that is immediately being deactivated. Root issue of the mentioned bug is that activation of the quest screen created a latent navigation du to the deferal of scrolling into view. This is still an issue in general, there isn't much we can do about it. Other than avoid activating a panel that will deactivated that frame as we did with the code changes in this CL. #jira FORT-47395 Change 3514658 by Jeff.Campeau Fixed a media player threading issue where the OnMediaOpened event could be called before the media Init script completed. Moved the event Cinematic used when setting up and playing media after media file load to use a delayed event from the MovieWidget so that it will always happen after the movie widget processing. Fixed an issue that could cause samples to leak in MfMedia plugin and cause ReadSample to lockup. Fixed an issue where a default texture is displayed for movies before the movie starts playing (the player may be active before the first frame of the video is decoded). Default is now all black as it is expected that this texture will be displayed for several frames. #jira FORT-46801 #testedon Xbox through rocket launch cinematic including vintertip for stairs, skill tree nodes, and victory result video Change 3507896 by Ryan.Gerleve Changed the net.UseEncryptionToken to be more useful and renamed it to net.AllowEncryption. This cvar, if 0, will prevent the PacketHandler from adding the configured encryption component, and prevent UPendingNetGame and AOnlineBeaconClient from filling out the EncryptionToken parameter of NMT_Hello - which prevents the extra encryption handshake connection step. #jira FORT-46878 #review-3507897 @josh.markiewicz Change 3503928 by Ryan.Gerleve Add safety checks around some of the encryption functionality. Fixes a server crash seen during load testing. #jira FORT-46772 #review-3503929 bob.tellez #robomerge ReleaseNext [CL 3673993 by Bob Tellez in Main branch]
2017-09-30 03:42:01 -04:00
Element.ValidateAndShrink();
const int32 OrgElementMemory = OrgData.GetAllocatedSize();
const int32 NewElementMemory = Element.GetAllocatedSize();
const int32 MemoryDelta = NewElementMemory - OrgElementMemory;
NodesMemory += MemoryDelta;
INC_MEMORY_STAT_BY(STAT_Navigation_CollisionTreeMemory, MemoryDelta);
RemoveElement(Id);
AddElement(Element);
}
void FNavigationOctree::UpdateNode(const FOctreeElementId2& Id, const FBox& NewBounds)
{
FNavigationOctreeElement ElementCopy = GetElementById(Id);
RemoveElement(Id);
ElementCopy.Bounds = NewBounds;
AddElement(ElementCopy);
}
void FNavigationOctree::RemoveNode(const FOctreeElementId2& Id)
{
const FNavigationOctreeElement& Element = GetElementById(Id);
const int32 ElementMemory = Element.GetAllocatedSize();
NodesMemory -= ElementMemory;
DEC_MEMORY_STAT_BY(STAT_Navigation_CollisionTreeMemory, ElementMemory);
RemoveElement(Id);
}
const FNavigationRelevantData* FNavigationOctree::GetDataForID(const FOctreeElementId2& Id) const
{
if (Id.IsValidId() == false)
{
return nullptr;
}
const FNavigationOctreeElement& OctreeElement = GetElementById(Id);
return &*OctreeElement.Data;
}
void FNavigationOctree::SetElementIdImpl(const uint32 OwnerUniqueId, FOctreeElementId2 Id)
{
ObjectToOctreeId.Add(OwnerUniqueId, Id);
}
//----------------------------------------------------------------------//
// FNavigationOctreeSemantics
//----------------------------------------------------------------------//
#if NAVSYS_DEBUG
FORCENOINLINE
#endif // NAVSYS_DEBUG
void FNavigationOctreeSemantics::SetElementId(FNavigationOctreeSemantics::FOctree& OctreeOwner, const FNavigationOctreeElement& Element, FOctreeElementId2 Id)
{
((FNavigationOctree&)OctreeOwner).SetElementIdImpl(Element.OwnerUniqueId, Id);
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3209340 on 2016/11/23 by Ben.Marsh Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h. Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms. * Every header now includes everything it needs to compile. * There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first. * There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h. * Every .cpp file includes its matching .h file first. * This helps validate that each header is including everything it needs to compile. * No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more. * You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there. * There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible. * No engine code explicitly includes a precompiled header any more. * We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies. * PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files. Tool used to generate this transform is at Engine\Source\Programs\IncludeTool. [CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
}