#lockdown Nick.Penwarden
#rb none
============================
MAJOR FEATURES & CHANGES
============================
Change 3678071 by JeanLuc.Corenthin
Fixed a bug in AActor::CheckComponentInstanceName. The implementation was crashing with name containing only digits.
Change 3706350 by Jamie.Dale
Fixed broken style from the Python merge
Change 3709830 by Jamie.Dale
Exposed FVector4 and FQuat to TBaseStructure
Change 3713856 by Jamie.Dale
Added missing FVector4-= operator
Change 3716874 by Martin.Sevigny
UAT ListThirdPartySoftware: Add support for external project. New parameter -ProjectPath to specifiy path to .uproject so the build rules of the project are parsed and the folder is part of the search for TPS files.
Change 3728856 by Patrick.Boutot
Get the value of each row for a specific column/property in a data table. It doesn't include the title of that column.
Change 3739050 by Jamie.Dale
Exposed FPlane to TBaseStructure
[CL 3769674 by JeanMichel Dignard in Main branch]
#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]
Generalized "Add Code to Project" dialog to allow creation of both c++ and blueprint class types.
The add component option when blueprintable components is enabled, now opens up this dialog rather than the parent class picker.
UE-8491 - IWCE: New C++ Component and New Blueprint Component should prompt you for a component type to subclass
[CL 2446735 by Matthew Griffin in Main branch]
Improvements to naming of newly-created C++ and BP components through SCS tree
- Strip off "_C" suffix on newly created Blueprint classes
- Don't strip "Component" from Blueprint class names unless it is the suffix
- Changed prefix for newly-created C++ components from "My" to "New"
- New Blueprint components default to the name of the class unless they are Blueprints of UActorComponent, in which case the name is just "NewComponent"
- New C++ components default to the name of the class unless they inherit from UActorComponent, in which case the name is just "NewComponent"
#codereview matt.kuhlenschmidt
[CL 2425794 by Ben Marsh in Main branch]
Added an experimental method to add a new C++ class derived from ActorComponent to an actor. The purpose of this is to add scripting support directly on an actor without subclassing the actor.
[CL 2419710 by Ben Marsh in Main branch]
UE-7184 - Show game c++ classes and engine c++ classes in the content browser
The Content Browser now has extra entries for "Game C++ Classes" and "Engine C++ Classes" (with "Game" and "Engine" being renamed to "Game Content" and "Engine Content" respectively). These new folders serve as hosts for the list of available C++ modules, with each module internally mirroring the folder structure on disk.
For example:
- Game C++ Classes
- ShooterGame
- Classes
- Bots
- ShooterBot
- ShooterAIController
- [...]
- [...]
The Content Browser allows you to navigate and search these classes like you can with assets, and provides convenient access to either edit an existing class, or create a new class (either within a selected folder, or derived from a selected class).
As the Content Browser only shows you known UClass types, any new classes need to be compiled into a loaded module before they will appear. This means that adding a new class will now automatically hot-reload your target module. Should you prefer to handle building and loading your modules manually, you can disable the automatic hot-reload via "Editor Settings" -> "Miscellaneous" -> "Hot Reload" -> "Automatically Hot Reload New Classes" (see UEditorUserSettings::bAutomaticallyHotReloadNewClasses).
[CL 2409386 by Jamie Dale in Main branch]
FScopedSlowTask has been refactored to better allow for nesting of slow operations. This allows us to cascade nested scopes and provide accurate feedback on slow tasks. FScopedSlowTasks now work together when nested inside sub functions. Break up long functions that contain calls to multiple nested FScopedSlowTasks with FScopedSlowTask::EnterProgressFrame().
Example Usage:
void DoSlowWork()
{
FScopedSlowTask Progress(2.f, LOCTEXT("DoingSlowWork", "Doing Slow Work..."));
// Optionally make this show a dialog if not already shown
Progress.MakeDialog();
// Indicate that we are entering a frame representing 1 unit of work
Progress.EnterProgressFrame(1.f);
// DoFirstThing() can follow a similar pattern of creating a scope divided into frames. These contribute to their parent's progress frame proportionately.
DoFirstThing();
Progress.EnterProgressFrame(1.f);
DoSecondThing();
}
This addresses TTP#338602 - NEEDS REVIEW: Editor progress bars nearly always just show 100%, don't offer useful indication of progress
[CL 2322391 by Andrew Rodham in Main branch]
* Categorized templates into Blueprint/C++ templates and organized them into tabs
* New categories can be specified in the templatedefs.ini file of a template project using a Category tag:
Category=NewCategory
* New category types can be registered with a proper description and icon in code through FGameProjectGenerationModule::RegisterTemplateCategory.
* Added preview images to templates
* Generally tidied the UI
This addresses TTP#321302 - EDITOR: Project Browser: Reduce Thumbnail size of Templates
Reviewed by Matt.Kuhlenschmidt
[CL 2260660 by Andrew Rodham in Main branch]
TTP# 337136 - SETTINGS: Target Platform settings polish
TTP# 337652 - EDITOR: Limit Project supported Android icons down to 1
TTP# 337650 - EDITOR: There is only 1 icon for Apple for Project Supported Platforms
DesktopPlatform now contains a static array of FPlatformInfo. This can be used to query UE4 about its available platforms, even when they're not available as a target platform.
FPlatformInfo contains the information required by the editor (such as a localized display name and icon), as well as whether a platform is a variation ("flavor") of another, and if so, whether the flavor affects the build output (eg, Win32 or Win64), or the cook output (eg, Android_XYZ). This lets the editor build up nested menus for the "Package Project" and "Cook Project" options, rather than just showing everything as a flat list.
ReviewedBy Thomas.Sarkanen, Max.Preussner
[CL 2095796 by Jamie Dale in Main branch]
TTP# 332489 - TOOLS FEATURE: Editor: Allow user to designate which platforms a project is designed for; warn user when deploying to platforms that will result in a bad time
There is now a "Target Platforms" tab in the project settings which allows you to choose which platforms your project will target. This information is stored inside the .uproject file.
If you try and launch, cook, or package for a project that isn't on the supported list, then you'll see a suppressible warning notifying you that the project may not run as expected. This is also conveyed to you via a warning icon next to platforms which aren't set as a target.
Additionally the target platform icons are shown in the tooltip on the "Open Project" dialog, as well as in the tab area of the level editor.
ReviewedBy Thomas.Sarkanen, Max.Preussner
[CL 2088161 by Jamie Dale in Main branch]
#ttp 333947 the landscape_worldmachine project cannot be opened on my machine because the project name is longer than 20 characters.
reviewed by Thomas.Sarkanen
[CL 2061059 by Andrew Copland in Main branch]
Change 1996384 by Andrew Brown:
322252 - EDITOR: Asset picker displays incorrect text when there are no filter results.
Change 1996385 by Andrew Brown:
321858 - CRASH: Assertion failed: (Index >= 0) Function: STransformViewportToolBar::GetLocationGridLabel() STextBlock::CacheDesiredSize()
Change 1996977 by Andrew Brown:
309685 - UE4: Adding an event/renaming an event on an event track in Matinee does not update the MatineeActor node in blueprint
Change 2034873 by Jaroslaw Palczynski:
More robust VS installation detection.
Change 2039693 by Jaroslaw Palczynski:
327268 - RocketGDC: POSTLAUNCH: DEV: Make engine more robust against bad Visual Studio environment variables
Change 1978978 by Jaroslaw Surowiec:
- Removed obsolete AllowEliminatingReferences from the FArchive
Change 2020326 by Maciej Mroz:
pretest BP K2Node: RemovePinsFromOldPins function moved from K2Node to RemovePinsFromOldPins
Change 2017608 by Maciej Mroz:
pretest Some changes in SFortMissionEventSelector caused by FPinTypeTreeInfo
Change 2017463 by Maciej Mroz:
PinTypeSelector can lins unloaded UDStructs
Change 2019979 by Maciej Mroz:
pretest BP: Crash when performing Diff against Depot with blueprints containing Format Text nodes
Change 2024469 by Maciej Mroz:
MemberReference variable added to PinType. It's necessary for delegate's signature.
Change 2024049 by Maciej Mroz:
HasExternalBlueprintDependencies added to UK2Node_DynamicCast
Change 2024586 by Maciej Mroz:
FillSimpleMemberReference fix
Change 2024472 by Maciej Mroz:
workaround for delegates signature in pintype removed.
Change 2023997 by Maciej Mroz:
BP, UDStruc: Class UserDefinedStructEditorData added. It fixes many problems with undo/redo.
Change 2021934 by Maciej Mroz:
typo in a comment
Change 2020355 by Maciej Mroz:
Back out changelist 2020342
Change 2022178 by Maciej Mroz:
CRASH: PRETEST: EDITOR: UDS: Crash when undo then redo new variable in struct that is used by blueprint
Change 2021958 by Maciej Mroz:
CRASH: PRETEST: EDITOR: UDS: Crash using variable of a type of copied struct in blueprint
Change 1986247 by Maciej Mroz:
User Defined Structures: circle dependency fixed. Early version.
Change 1985107 by Maciej Mroz:
UserDefinedStruct cannot have a field of a non-native type
Change 1986278 by Maciej Mroz:
pretest ensureMsgf in Struct::link
Change 1986250 by Maciej Mroz:
User Defined Struct: Non native classes are accepted types od values in structures.
Change 1980955 by Maciej Mroz:
Using AssetPtr and LazyPtr as UFunction parameter (intput or return) is explicitly disallowed.
Change 2041215 by Maciej Mroz:
ttp331249 BLOCKER: PRETEST: UI: Survive the Storm is missing the Mission HUD.
Change 1984316 by Maciej Mroz:
New User Defined Structure. WIP - there are still problems with circular dependencies.
Change 2011616 by Maciej Mroz:
UserDefinedStructures - various problems fixed.
Change 2011609 by Maciej Mroz:
more robust HasExternalBlueprintDependencies implementation
Change 2016697 by Maciej Mroz:
pretest BP: UDStruct - default value propagation in cooked build
Change 2016288 by Maciej Mroz:
pretest BP: UDStruct: Renaming variables wont break links from make/break nodes
Change 1987637 by Maciej Mroz:
CustomStruct icons placeholders
Change 1987422 by Maciej Mroz:
Better tooltips for variables in MyBlueprint
Change 1991387 by Maciej Mroz:
UDStructures fixes:
Change 2029165 by Maciej Mroz:
BP: better comment for incomatible pins
Change 2030016 by Maciej Mroz:
8PRETEST: EDITOR: UDS: Defaults values aren't updated in struct type variables in blueprints
Change 2030017 by Maciej Mroz:
Unused UDStructure code removed (PPF_UseDefaultsForUDStructures)
Change 2028856 by Maciej Mroz:
BP: Pins with PC_Struct type are compatible only with exactly the same structure. (No derived structures are not handled as compatible).
Change 2026701 by Maciej Mroz:
k2: odd error on an add item node within a function (see attached image in details)
Change 2028160 by Maciej Mroz:
PRETEST: EDITOR: UDS: When deleting structures just after creating there is always some references in the memory
Change 2028165 by Maciej Mroz:
BP: BreakHitResult function has proper icon.
Change 2033340 by Maciej Mroz:
ttp330786 PRETEST: EDITOR: UDS: Changes of default values aren't apllied to breeak nodes for text type of variables
Change 2034255 by Maciej Mroz:
EDITOR: UDS: Changes of default values aren't apllied to make nodes for text type of variables ttp#330620
Change 2037682 by Maciej Mroz:
ttp331309 BLOCKER: PRETEST: CRASH: EDITOR: Crash occurs when performing Diff Against Depot on any Blueprint
Change 2033142 by Maciej Mroz:
CreateDelegate Node uses internally FMemberReference. Refactor.
Change 2032329 by Maciej Mroz:
ttp330608 CRASH: PRETEST: EDITOR: UDS: Crash when trying to use struct named 'Color' in blueprint
Change 2032420 by Maciej Mroz:
ttp330620 PRETEST: EDITOR: UDS: Changes of default values aren't apllied to make nodes for text type of variables
Change 2033139 by Maciej Mroz:
Functions generated from CustomEvents can be also identified by GUID
Change 2026631 by Maciej Mroz:
BP. UDStruct: Invalid structs are handled better.
Change 2025344 by Maciej Mroz:
UDStruct enabled by default
Change 2026672 by Maciej Mroz:
EDITOR: BP: Can't easily remove 'pass-by-reference' pins on ReturnNodes
Change 2026411 by Maciej Mroz:
ExposeOnSpawn updated, it supports UDStructs, custom native Structs, and it throws compiler error.
Change 2025342 by Maciej Mroz:
GenerateBlueprintSkeleton moved from BLueprint::Serialize to RegenerateBlueprintClass, because SkeletonClass compilation requires all external dependencies to be loaded and linked.
Change 2025570 by Steve Robb:
Moved dependency processing to its own function.
Change 2033235 by Steve Robb:
String improvements
Change 2035830 by Steve Robb:
Workaround for FriendsAndChat crash in Fortnite.
Change 2035115 by Steve Robb:
UBT build time regression fixes.
Change 2034162 by Steve Robb:
312775: UObject improvement: Ensure that *.generated.inl is included somewhere
Change 2034181 by Steve Robb:
Removal of any references to .generated.inl
Change 2020165 by Steve Robb:
BuildPublicAndPrivateUObjectHeaders factored out into its own function.
Change 2020187 by Steve Robb:
CreateModuleCompileEnvironment function factored out.
Change 2020055 by Steve Robb:
Refactoring of Unity.cs to remove complex and duplicate iteration.
Change 2020083 by Steve Robb:
Another use of dictionary utilities.
Change 2031049 by Steve Robb:
312775: UObject improvement: Ensure that *.generated.inl is included somewhere
Change 2025728 by Steve Robb:
Refactored the application of a shared PCH file to multiple file into a single ApplySharedPCH function.
Change 2020068 by Steve Robb:
A couple of helpful utility functions for populating dictionaries.
Change 2032307 by Steve Robb:
312775: UObject improvement: Ensure that *.generated.inl is included somewhere
[CL 2054495 by Robert Manuszewski in Main branch]