Delete FixupRedirects commandlet, replace with -FixupRedirects/FixupRedirectors option on the ResavePackages commandlet. This new method is much faster than the old commandlet as it uses the asset registry vs loading all packages.
AssetPtr and AssetSubclassOf can now be used with config Properties
Fix several issues with cooking StringAssetReferences and TAssetPtrs. FStringAssetReferenceSerializationScope can be used to override rather those references should be cooked or are editor only.
Changed UClass::ClassFlags to be of type EClassFlags for improved type safety
Marked TNumericLimits as constexpr so they can be used in static asserts
Several improvements to FAssetData and AssetRegistry memory usage, memory should be reduced by several MB in large cooked games:
FAssetData::TagsAndValues was converted to use the more memory efficient TSortedMap structure, and will not be created if there are no tags
Added bFilterAssetDataWithNoTags option to the [AssetRegistry] ini section, if set it will reduce cooked memory usage by not saving AssetData that has no tags defined
Asset Registry memory usage is now included in the MemReport output
Add Algo::BinarySearch, LowerBound, and UpperBound. These are setup to allow binary searching a presorted array, and allow for specifying projection and sort predicates. Add TSortedMap, which is a map data structure that has the same API as TMap, but is backed by a sorted array. It uses half the memory but will be slow for large maps and it has no UProperty support Add FName::CompareIndexes so a SortedMap with FNames can be used without doing very slow string compares, and FNameSortIndexes predicate to sort by it
Added both a black and whitelist to plugin descriptor files that lets you exclude a plugin from certain targets (client, server, etc.).
Added a feature where plugins included in a project through the .uproject's 'AdditionalPluginDirectories' list automatically get included in the generated code project (for Visual Studio, etc.).
Specifying properties as BlueprintReadWrite or BlueprintReadOnly in a non-BlueprintType is now an Unreal Header Tool error.
Unreal Header Tool will now report multiple less critical errors in a single compile rather than aborting on the first error.
Removing PPF_Localized as it's an old UE3-ism that's no longer tested anywhere.
PR #3226 - Updated some code comments to better describe the usage of the log category definition macros
PR #3197: Improved log message formatting (Contributed by projectgheist)
Add AES and RSA encryption keys to the list of config fields that get stripped from ini files when staging When creating a pak file, do a filtered copy of all ini files to a temp directory so that all confidential fields can be stripped. Equivalent behaviour to staging a loose file distribution
Added C++14 operator delete overloads with size.
Rewrote ARRAY_COUNT to allow it to work with zero-sized arrays in Clang.
Made UFunction flags viewable in the debugger.
Changed .generated.cpp files to .gen.cpp files to give shorter file paths.
When verbose cluster logging is enabled and new object is added to an already existing cluster, the entire cluster will be dumped to log.
Include project name in the UBT error message which appears when a plugin is missing
Added ranged-based for loop support to TChunkedArray, which is more optimal than indexed iteration.
Add prestream capability to allow us to preload always loaded sublevels. Only turned on for Shootergame.
Added helper functions to Garbage Collector API to dissolve specific GC clusters
Fixed Algo::Sort() for C arrays. Deprecated size+count versions of Algo::IsSorted(). Added Algo::IsSortedBy(). Added Algo::FindBy().
Updated apple platform atomics with a new clang version which is intended to be shared among all clang platforms.
Simplified and reworked lock free lists and the task graph bringing all platforms under the same scheme.
Changed UnrealHeaderTool to generate code per-header instead of per-module, in order to better take advantage of IWYU.
Optimized TBitArray::RemoveAt() in the case when all removed bits are at the end of the array. Optimized TBitArray::RemoveAtSwap(). Added a check for negative counts passed to TBitArray::RemoveAt() and TBitArray::RemoveAtSwap().
Moved InitPropertiesFromCustomList to UBlueprintGeneratedClass and made it thread safe
PR #2252: Increase linker reporting for failed imports (Contributed by FineRedMist)
Added more descriptive error text to DetachLinker error check (Pull Request @3167 by rooneym)
Removed unused AGRESSIVE_ARRAY_FORCEINLINE macro.
Removed unused CLASS_PointersDefaultToAutoWeak CLASS_PointersDefaultToWeak class flags.
Added comments to DestructItem and DestructItems to clarify that they do not perform dynamic dispatch.
Simple threaded CSV Profiler To capture a CSV: - On the commandline, add -csvCaptureFrames=N to capture N frames from startup - On the console, use csvprofile start, csvprofile stop or csvprofile frames=N to capture a fixed number of frames - Instrument with CSV_SCOPED_STAT(statname), CSV_CUSTOM_STAT(statname,value). CSV capture is enabled in all builds except shipping. This change does not include any instrumentation of code, although basic unit stats are output.
Implements FDebug::DumpStackTraceToLog() printf debugging utility.
Iterative cooking (enabled via passing -iterate to cook commandlet or enabling "Iterative cooking for builds launched from the editor") now uses the Asset Registry and should be significantly faster than before. The old timestamp and file hash method have been removed. Expose bIgnoreIniSettingsOutOfDateForIteration and bIgnoreScriptPackagesOutOfDateForIteration in cooker settings, affects rather to listen to ini/script changes when doing iterative cooking
UnrealHeaderTool: Improved the warning generated when missing Category= on a function or property declared in an engine module, and centralized the logic that determines if the module is engine or game
Modules - The module manager no longer returns sharedptrs to IModuleInterfaces, this was the source of rare hard to track down crashes due to a shared ptr reference leak when GetModule was called on non-main threads. We now store a TUniquePtr internally, and only lease out raw pointers.
PR #3622: Log category code cleanup (Contributed by projectgheist)
Removed AsyncIOBandwidthLimit as it was no longer being used by anything.
Added controller pairing changed delegate to core delegates
Added "AddReferencedObjects" to FScriptInterface, much like FSlateBrush has, in order to make it possible to use this type outside of a property (via FGCObject).
More named events for profiling
FAnalyticsEventAttribute now uses Lex::ToString() to convert the key name.
Added AppendAnalyticsEventAttributeArray() to efficiently append to an existing array.
Implemented Lex::ToSanitizedString for double.
Made Lex::ToSanitizedString an overload instead of a specialization.
Added comments to specify that Lex::ToString just needs to return something implicitly convertible to FString.
Added new API FPlatformMisc::GetOSVersion() that returns a string representing the raw OS version info.
Added FGenericPlatformHttp::GetDefaultUserAgent() and tweaked all HTTP implementations to use a consistent User-Agent string.
Added IFileHandle::Flush() support
UnrealBuildTool: Improved the wording in the error message printed when a file in an include-what-you-use module has the wrong header as the first include
Core - Adding a frame cached value struct TFrameValue that keeps a value as valid for one GFrameCounter, which is incremented once an engine tick.
Removed private_subobject macro which was a temporary measure to make all subobjects private without breaking game code.
Added malloc proxy that allows capture and replay malloc/free callstream with a different malloc for comparison.
Removed FPackageFileSummary's AdditionalPackagesToCook array as it was not used by anything. This should reduce the package header size considerably for levels with many streaming sublevels.
Optimized FStatMessagesArray iteration.
Added a new sorting algorithm called Algo::IntroSort that performs an introspective sort. It starts with quick sort and switches to heap sort when the iteration depth is too big. It improves the sorting speed in some scenarios where quick sort is in its worst case.
Added TReversePredicate to invoke Predicate(B, A) when calling algorithms with a predicate.
Added support for linking with a module-definition (.def) file in Unreal Build Tool.
Improved the print-out of FFrame::GetStackTrace() / FFrame::GetScriptCallstack() when there is no script stack (e.g., when FFrame::KismetExecutionMessage is called by native code with no BP above in the call stack)
Made the max package file header size configurable via ini file ([/Script/Engine.StreamingSettings] s.MaxPackageSummarySize=65536) so that in rare cases (hundreds of streaming sub-levels) the user can easily make their levels load in the editor without crashing
Fixed debug config problems with new low level windows async IO layer.
Change pending delete data structure for editor, and more specifically the cooker. Render resources can accumulate for hours in the cooker.
Fixed: -iterativedeploy option is no longer ignored by UAT
Fixed ability to specify incompatible properties as the parameter to the OnRep function as long as the base property type was the same (i.e. UObjectProperty, UArrayProperty, etc.) OnRep verification errors are now "warnings" and will all be reported rather than a single one being fatal.OnRep verification warnings now correctly identify the line they occur on.
Fix issue where SerializingProperty on FArchive was not correctly updated when serializing Arrays and other containers.
Fix issue where assets loaded by StreamableManager would take 2 full GC cycles to free if there were no longer any references to them, it will now take 1 cycle in most cases
Fix issue where FStreamableManager would never try to load an asset once it had failed once. This would cause problems with mounting pak files after initial startup
Fix issues where the cooked AssetRegistry Tag white/blacklist was not working properly with Blueprint classes
Several fixes to command line processing for the run part of the BuildCookRun UAT script, and -ClientCmdLine can now be used to explicitly set the client command line instead of implying 127.0.0.1 as the URL to launch
Instanced nested subobjects no longer get reset to default when edited in the components detail panel.
Made GMalloc creation thread safe (fixes rare crashes on Mac).
Fixed overlapping ranges being passed to memcpy().
Fixed a bug where a trailing quote without a newline at the end of a CSV file would be added to the parsed text rather than converted to a terminator
Make UHT generate WITH_EDITOR guards around UFunctions generated in a WITH_EDITOR C++ block. This prevents these functions from being generated in non-editor builds
Fixed a crash when using an invalid regex pattern
Fixed FastXML not loading XML files with attributes delimited by single quote characters
Fixed FPaths::ChangeExtension and FPaths::SetExtension stomping over the path part of a filename if the name part of the had no extension but the path contained a dot, eg) C:/First.Last/file
Fixed a crash in UnrealHeaderTool when you have a space between the UCLASS or UINTERFACE macro and the opening parenthesis.
Fixed some duplicate log categories.
Make FWindowsPlatformProcess::ApplicationSettingsDir() consistent with other path functions so that it only returns "/" path separators rather than a mix of "/" and "".
Fixed linker warning formatting that was throwing warnings when cooking.
Non-ASCII characters in console command HTML help are no longer converted to "?".
Added more lock free links to support huge cooks.
Fixed a recurring stats crash.
Fixed attempts to load compiled in packages, which produces warnings and is slow.
Critical fix; stats were non functional.
Fixed array-based MakeUnique to value-initialize the elements.
Repaired botched merge of BroadcastSlow_OnlyUseForSpecialPurposes.
UE4 - Fixed super hazardous bug with FTaskGraphInterface::BroadcastSlow_OnlyUseForSpecialPurposes.
Fixed PRAGMA_ENABLE_OPTIMIZATION and PRAGMA_DISABLE_OPTIMIZATION on iOS for certain Clang versions.
Fixed UnrealHeaderTool parsing UObject* const fields as CPF_ConstParm.
Made TIsTriviallyDestructible<> work with forward-declared enums.
Fixed bug in the pak precacher that would result in blocks being discarded too soon, which, in turn, resulted in redundant reads.
Made changes so that servers, programs and non-engine executables do not create background or high priority threads.
Critical fix: Propoerly disambiguate imports with the same name and the same outer name. This fixes an assert: LocalExportIndex.IsNull.
Improved the error message when UnrealHeaderTool encounters incompatible functions pulled together by multiple inheritance.
Fixed UnrealHeaderTool's failure to parse pointer properties marked as const.
Fixed backwards ifdef for buffered files.
Replaced LogTemp with the appropriate logging categories in GC debug code.
When adding objects to clusters after these clusters have been created it's possible to come across objects that are already in the cluster we're adding the object to so instead of crashing, allow it.
UObject can be added to GC cluster only if all of its Outers can also be added to it. This fixes asserts caused by components that are added to GC clusters even if their owner actors that can't be in GC clusters.
The editor will now collect garbage after a map is loaded to make sure any stale components or other objects that are no longer needed are destroyed. This is to make sure that these components are not resurrected by other editor operations like duplication.
Fixed null dereference of LineBatcher when using DrawDebugSphere and DrawDebugAltCone
Fixed a potential deadlock caused by a race condition when using FMallocVerifyProxy with FMallocBinned
Fixed parameter parsing so that arguments are not parsed if not preceded by a whitespace (for example "-Log" was parsed in "TM-Log")
PR #2096: Fix argument parsing in DiffAssets Comandlet (Contributed by cgrebeld)
PR #2407: Fix LoadLibrary error with Microsoft Group Policy CWDIllegalinDllSearch mode 1 or 2 (Contributed by bozaro)
Long package names are now corrected to match the case of a file on disk when loading. Fixes deterministic cooking issues where case changes due to load order.
Async loading code will no longer crash when the requested package could not be created.
Fixed stale module suffixes which were causing hot reload failures.
Fixed compile error in TPromise's move assignment operator.
Fixed bad code generation for TMap and TSet when they're used as BlueprintCallable UFUNCTION parameters.
Fix streaming visibility logic bug reported on UDN
Remove non-actionable warnings in ObjectTools.ForceReplaceReferences
Fixed async loading from pak files < 64k.
Moved parsing of LogCategory verbosity slightly sooner to occur before plugins are loaded - fixes plugins not printing proper log levels if initialized too early
Fixed out of bounds access to iChild warning in UModel (clang didn't like a union trick)
Fixed various crashes when using UObject::CallFunctionByNameWithArguments with non-trivial argument types by properly initializing and destructing the allocated parameters
Fixed FMalloc functions missing from poison proxy.
Increased the maximum package summary size to handle levels with multiple streaming sublevels.
Fix for CDO pointer replacement in non-UObject properties during hot reload.
Fixed TSetElement's generic constructor to prevent it from ever being a copy constructor.
Fixed TSparseArray::operator= corrupting non-POD elements.
Changed FRuntimeAssetCacheFilesystemBackend::ClearCache(NAME_None) to not try to clear all cache directories (there is a separate no-args method for that)
Downgrade various checks() to ensures() in the runtime asset cache functions exposed to Blueprints so they don't take down the editor when given bad parameters
Fix issue where AssetRegistry GetAncestorClassNames/GetDerivedClassNames were not working properly in cooked builds for classes not in memory
The recursion guard in async loading code will only be used when the Event Driven Loader is enabled. This fixes some of the startup crashes.
Converted T(Shared)Future to use default move and copy constructors where applicable
Fix it so Blueprint subclasses of StaticMeshActor are not added to GC clusters by default as this is unlikely to be safe
Made sure subobjects recycled in construction code have the pending kill flag cleared so that they don't get garbage collected after creation.
Fixed crash if the UEnum used by an Enum Property no longer exists
Fixed issue with Incredibuild failing with Visual Studio 2015 Update 3 when some helpers have non-US character sets
Fixed crash when using FString::Find end if start position is beyond the end of the string.
Fixed an issue where the level streamer would not stream in a level until it finished streaming out another one.
Fixed a crash during tagged serialization if an enum no longer exists.