2019-12-26 15:33:43 -05:00
// Copyright Epic Games, Inc. All Rights Reserved.
2014-07-09 12:17:42 -04:00
# include "BlueprintActionDatabase.h"
2022-08-30 23:03:03 -04:00
2022-05-02 18:06:48 -04:00
# include "AssetRegistry/AssetData.h"
2022-08-30 23:03:03 -04:00
# include "AssetRegistry/AssetRegistryModule.h"
# include "AssetRegistry/IAssetRegistry.h"
# include "BlueprintActionDatabaseRegistrar.h"
# include "BlueprintActionFilter.h"
# include "BlueprintAssetHandler.h"
# include "BlueprintBoundEventNodeSpawner.h"
# include "BlueprintComponentNodeSpawner.h"
# include "BlueprintDelegateNodeSpawner.h"
# include "BlueprintEditorSettings.h"
# include "BlueprintEventNodeSpawner.h"
# include "BlueprintFieldNodeSpawner.h"
# include "BlueprintFunctionNodeSpawner.h"
# include "BlueprintNodeBinder.h"
# include "BlueprintNodeSpawner.h"
# include "BlueprintTypePromotion.h"
# include "BlueprintVariableNodeSpawner.h"
# include "ComponentTypeRegistry.h"
# include "Components/ActorComponent.h"
# include "Containers/EnumAsByte.h"
# include "Containers/IndirectArray.h"
# include "Containers/Set.h"
# include "Containers/StringFwd.h"
# include "CoreGlobals.h"
# include "EdGraph/EdGraph.h"
# include "EdGraph/EdGraphNode.h"
// used below in BlueprintActionDatabaseImpl::GetNodeSpectificActions()
# include "EdGraph/EdGraphNode_Documentation.h"
# include "EdGraph/EdGraphPin.h"
# include "EdGraph/EdGraphSchema.h"
# include "EdGraphNode_Comment.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 "EdGraphSchema_K2.h"
2022-08-30 23:03:03 -04:00
# include "Editor.h"
# include "EditorCategoryUtils.h"
# include "Engine/Blueprint.h"
# include "Engine/BlueprintGeneratedClass.h"
# include "Engine/Engine.h"
# include "Engine/EngineTypes.h"
# include "Engine/Level.h"
# include "Engine/LevelScriptBlueprint.h"
# include "Engine/MemberReference.h"
# include "Engine/World.h"
# include "EngineLogs.h"
# include "GameFramework/Actor.h"
# include "HAL/IConsoleManager.h"
# include "Internationalization/Internationalization.h"
# include "Internationalization/Text.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 "K2Node.h"
# include "K2Node_ActorBoundEvent.h"
# include "K2Node_AddDelegate.h"
2022-08-30 23:03:03 -04:00
// used below in BlueprintActionDatabaseImpl::AddClassPropertyActions()
# include "K2Node_AssignDelegate.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 "K2Node_CallDelegate.h"
2022-08-30 23:03:03 -04:00
// used below in BlueprintActionDatabaseImpl::AddClassCastActions()
# include "K2Node_ClassDynamicCast.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 "K2Node_ClearDelegate.h"
# include "K2Node_ComponentBoundEvent.h"
# include "K2Node_DynamicCast.h"
2022-08-30 23:03:03 -04:00
# include "K2Node_Event.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 "K2Node_FunctionEntry.h"
# include "K2Node_MacroInstance.h"
2014-07-09 12:17:42 -04:00
// used below in FBlueprintNodeSpawnerFactory::MakeMacroNodeSpawner()
2014-08-26 16:25:42 -04:00
// used below in FBlueprintNodeSpawnerFactory::MakeComponentBoundEventSpawner()/MakeActorBoundEventSpawner()
2014-07-09 12:17:42 -04:00
// used below in FBlueprintNodeSpawnerFactory::MakeMessageNodeSpawner()
# include "K2Node_Message.h"
2022-08-30 23:03:03 -04:00
# include "K2Node_RemoveDelegate.h"
# include "K2Node_VariableGet.h"
# include "K2Node_VariableSet.h"
# include "Kismet2/BlueprintEditorUtils.h"
# include "Kismet2/KismetEditorUtilities.h"
# include "Layout/SlateRect.h"
# include "Logging/LogCategory.h"
# include "Logging/LogMacros.h"
# include "Math/UnrealMathSSE.h"
# include "Misc/AssertionMacros.h"
# include "Misc/NamePermissionList.h"
# include "Modules/ModuleManager.h"
# include "ProfilingDebugging/CpuProfilerTrace.h"
2023-02-27 16:27:44 -05:00
# include "PropertyPermissionList.h"
2022-08-30 23:03:03 -04:00
# include "Templates/Casts.h"
# include "Templates/SubclassOf.h"
# include "Templates/Tuple.h"
# include "Templates/UnrealTemplate.h"
# include "Trace/Detail/Channel.h"
# include "UObject/Class.h"
# include "UObject/EnumProperty.h"
# include "UObject/Field.h"
# include "UObject/Object.h"
# include "UObject/ObjectMacros.h"
# include "UObject/ObjectPtr.h"
# include "UObject/Package.h"
# include "UObject/UObjectGlobals.h"
# include "UObject/UObjectHash.h"
# include "UObject/UObjectIterator.h"
# include "UObject/UnrealNames.h"
# include "UObject/UnrealType.h"
# include "UObject/WeakObjectPtr.h"
# include "UObject/WeakObjectPtrTemplates.h"
2020-08-24 19:55:49 -04:00
2014-08-13 16:29:51 -04:00
# define LOCTEXT_NAMESPACE "BlueprintActionDatabase"
2014-07-09 12:17:42 -04:00
/*******************************************************************************
* FBlueprintNodeSpawnerFactory
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
namespace FBlueprintNodeSpawnerFactory
{
/**
* Constructs a UK2Node_MacroInstance spawner . Evolved from
* FK2ActionMenuBuilder : : AttachMacroGraphAction ( ) . Sets up the spawner to
* set spawned nodes with the supplied macro .
*
* @ param MacroGraph The macro you want spawned nodes referencing .
* @ return A new node - spawner , setup to spawn a UK2Node_MacroInstance .
*/
static UBlueprintNodeSpawner * MakeMacroNodeSpawner ( UEdGraph * MacroGraph ) ;
/**
* Constructs a UK2Node_Message spawner . Sets up the spawner to set
* spawned nodes with the supplied function .
*
* @ param InterfaceFunction The function you want spawned nodes referencing .
* @ return A new node - spawner , setup to spawn a UK2Node_Message .
*/
static UBlueprintNodeSpawner * MakeMessageNodeSpawner ( UFunction * InterfaceFunction ) ;
/**
* Constructs a UEdGraphNode_Comment spawner . Since UEdGraphNode_Comment is
* not a UK2Node then we can ' t have it create a spawner for itself ( using
* UK2Node ' s GetMenuActions ( ) method ) .
*
2014-08-11 18:39:28 -04:00
* @ param DocNodeType The node class type that you want the spawner to be responsible for .
2014-07-09 12:17:42 -04:00
*
* @ return A new node - spawner , setup to spawn a UEdGraphNode_Comment .
*/
2014-08-11 18:39:28 -04:00
template < class DocNodeType >
static UBlueprintNodeSpawner * MakeDocumentationNodeSpawner ( ) ;
2014-08-13 16:29:51 -04:00
2014-09-29 14:31:08 -04:00
/**
*
*
* @ return
*/
static UBlueprintNodeSpawner * MakeCommentNodeSpawner ( ) ;
2014-08-13 16:29:51 -04:00
/**
* Constructs a delegate binding node along with a connected event that is
* triggered from the specified delegate .
*
* @ param DelegateProperty The delegate the spawner will bind to .
* @ return A new node - spawner , setup to spawn a UK2Node_AssignDelegate .
*/
2019-12-13 11:07:03 -05:00
static UBlueprintNodeSpawner * MakeAssignDelegateNodeSpawner ( FMulticastDelegateProperty * DelegateProperty ) ;
2014-08-19 12:36:44 -04:00
/**
*
*
* @ param DelegateProperty
* @ return
*/
2019-12-13 11:07:03 -05:00
static UBlueprintNodeSpawner * MakeComponentBoundEventSpawner ( FMulticastDelegateProperty * DelegateProperty ) ;
2014-08-26 16:25:42 -04:00
/**
*
*
* @ param DelegateProperty
* @ return
*/
2019-12-13 11:07:03 -05:00
static UBlueprintNodeSpawner * MakeActorBoundEventSpawner ( FMulticastDelegateProperty * DelegateProperty ) ;
2014-07-09 12:17:42 -04:00
} ;
//------------------------------------------------------------------------------
static UBlueprintNodeSpawner * FBlueprintNodeSpawnerFactory : : MakeMacroNodeSpawner ( UEdGraph * MacroGraph )
{
check ( MacroGraph ! = nullptr ) ;
check ( MacroGraph - > GetSchema ( ) - > GetGraphType ( MacroGraph ) = = GT_Macro ) ;
UBlueprintNodeSpawner * NodeSpawner = UBlueprintNodeSpawner : : Create ( UK2Node_MacroInstance : : StaticClass ( ) ) ;
check ( NodeSpawner ! = nullptr ) ;
2015-03-03 17:20:43 -05:00
auto CustomizeMacroNodeLambda = [ ] ( UEdGraphNode * NewNode , bool bIsTemplateNode , TWeakObjectPtr < UEdGraph > InMacroGraph )
2014-07-09 12:17:42 -04:00
{
UK2Node_MacroInstance * MacroNode = CastChecked < UK2Node_MacroInstance > ( NewNode ) ;
2015-03-03 17:20:43 -05:00
if ( InMacroGraph . IsValid ( ) )
2014-07-09 12:17:42 -04:00
{
2015-03-03 17:20:43 -05:00
MacroNode - > SetMacroGraph ( InMacroGraph . Get ( ) ) ;
2014-07-09 12:17:42 -04:00
}
} ;
TWeakObjectPtr < UEdGraph > GraphPtr = MacroGraph ;
NodeSpawner - > CustomizeNodeDelegate = UBlueprintNodeSpawner : : FCustomizeNodeDelegate : : CreateStatic ( CustomizeMacroNodeLambda , GraphPtr ) ;
return NodeSpawner ;
}
//------------------------------------------------------------------------------
static UBlueprintNodeSpawner * FBlueprintNodeSpawnerFactory : : MakeMessageNodeSpawner ( UFunction * InterfaceFunction )
{
check ( InterfaceFunction ! = nullptr ) ;
check ( FKismetEditorUtilities : : IsClassABlueprintInterface ( CastChecked < UClass > ( InterfaceFunction - > GetOuter ( ) ) ) ) ;
2014-09-17 14:57:06 -04:00
UBlueprintFunctionNodeSpawner * NodeSpawner = UBlueprintFunctionNodeSpawner : : Create ( UK2Node_Message : : StaticClass ( ) , InterfaceFunction ) ;
2014-07-09 12:17:42 -04:00
check ( NodeSpawner ! = nullptr ) ;
2019-12-13 11:07:03 -05:00
auto SetNodeFunctionLambda = [ ] ( UEdGraphNode * NewNode , FFieldVariant FuncField )
2014-07-09 12:17:42 -04:00
{
UK2Node_Message * MessageNode = CastChecked < UK2Node_Message > ( NewNode ) ;
2019-12-13 11:07:03 -05:00
MessageNode - > FunctionReference . SetFromField < UFunction > ( FuncField . Get < UField > ( ) , /*bIsConsideredSelfContext =*/ false ) ;
2014-07-09 12:17:42 -04:00
} ;
2014-09-17 14:57:06 -04:00
NodeSpawner - > SetNodeFieldDelegate = UBlueprintFunctionNodeSpawner : : FSetNodeFieldDelegate : : CreateStatic ( SetNodeFunctionLambda ) ;
2014-07-09 12:17:42 -04:00
2014-10-01 12:14:16 -04:00
NodeSpawner - > DefaultMenuSignature . MenuName = FText : : Format ( LOCTEXT ( " MessageNodeMenuName " , " {0} (Message) " ) , NodeSpawner - > DefaultMenuSignature . MenuName ) ;
2014-07-09 12:17:42 -04:00
return NodeSpawner ;
}
//------------------------------------------------------------------------------
2014-08-11 18:39:28 -04:00
template < class DocNodeType >
static UBlueprintNodeSpawner * FBlueprintNodeSpawnerFactory : : MakeDocumentationNodeSpawner ( )
2014-07-09 12:17:42 -04:00
{
2014-08-11 18:39:28 -04:00
UBlueprintNodeSpawner * NodeSpawner = UBlueprintNodeSpawner : : Create ( DocNodeType : : StaticClass ( ) ) ;
2014-07-09 12:17:42 -04:00
check ( NodeSpawner ! = nullptr ) ;
auto CustomizeMessageNodeLambda = [ ] ( UEdGraphNode * NewNode , bool bIsTemplateNode )
{
2014-08-11 18:39:28 -04:00
DocNodeType * DocNode = CastChecked < DocNodeType > ( NewNode ) ;
2014-07-09 12:17:42 -04:00
2014-08-11 18:39:28 -04:00
UEdGraph * OuterGraph = NewNode - > GetGraph ( ) ;
2014-07-09 12:17:42 -04:00
check ( OuterGraph ! = nullptr ) ;
UBlueprint * Blueprint = FBlueprintEditorUtils : : FindBlueprintForGraph ( OuterGraph ) ;
check ( Blueprint ! = nullptr ) ;
2022-09-12 18:16:22 -04:00
const float OldNodePosX = static_cast < float > ( NewNode - > NodePosX ) ;
const float OldNodePosY = static_cast < float > ( NewNode - > NodePosY ) ;
const float OldHalfHeight = NewNode - > NodeHeight / 2.f ;
const float OldHalfWidth = NewNode - > NodeWidth / 2.f ;
2014-09-25 14:07:21 -04:00
2014-08-11 18:39:28 -04:00
static const float DocNodePadding = 50.0f ;
2014-09-25 14:07:21 -04:00
FSlateRect Bounds ( OldNodePosX - OldHalfWidth , OldNodePosY - OldHalfHeight , OldNodePosX + OldHalfWidth , OldNodePosY + OldHalfHeight ) ;
2014-08-11 18:39:28 -04:00
FKismetEditorUtilities : : GetBoundsForSelectedNodes ( Blueprint , Bounds , DocNodePadding ) ;
DocNode - > SetBounds ( Bounds ) ;
2014-07-09 12:17:42 -04:00
} ;
NodeSpawner - > CustomizeNodeDelegate = UBlueprintNodeSpawner : : FCustomizeNodeDelegate : : CreateStatic ( CustomizeMessageNodeLambda ) ;
return NodeSpawner ;
}
2014-09-29 14:31:08 -04:00
//------------------------------------------------------------------------------
static UBlueprintNodeSpawner * FBlueprintNodeSpawnerFactory : : MakeCommentNodeSpawner ( )
{
UBlueprintNodeSpawner * NodeSpawner = MakeDocumentationNodeSpawner < UEdGraphNode_Comment > ( ) ;
NodeSpawner - > DefaultMenuSignature . MenuName = LOCTEXT ( " AddCommentActionMenuName " , " Add Comment... " ) ;
auto OverrideMenuNameLambda = [ ] ( FBlueprintActionContext const & Context , IBlueprintNodeBinder : : FBindingSet const & /*Bindings*/ , FBlueprintActionUiSpec * UiSpecOut )
{
for ( UBlueprint * Blueprint : Context . Blueprints )
{
if ( FKismetEditorUtilities : : GetNumberOfSelectedNodes ( Blueprint ) > 0 )
{
UiSpecOut - > MenuName = LOCTEXT ( " AddCommentFromSelectionMenuName " , " Add Comment to Selection " ) ;
break ;
}
}
} ;
NodeSpawner - > DynamicUiSignatureGetter = UBlueprintNodeSpawner : : FUiSpecOverrideDelegate : : CreateStatic ( OverrideMenuNameLambda ) ;
return NodeSpawner ;
}
2014-08-13 16:29:51 -04:00
//------------------------------------------------------------------------------
2019-12-13 11:07:03 -05:00
static UBlueprintNodeSpawner * FBlueprintNodeSpawnerFactory : : MakeAssignDelegateNodeSpawner ( FMulticastDelegateProperty * DelegateProperty )
2014-08-13 16:29:51 -04:00
{
// @TODO: it'd be awesome to have both nodes spawned by this available for
// context pin matching (the delegate inputs and the event outputs)
2014-08-15 11:47:46 -04:00
return UBlueprintDelegateNodeSpawner : : Create ( UK2Node_AssignDelegate : : StaticClass ( ) , DelegateProperty ) ;
2014-08-13 16:29:51 -04:00
}
2014-08-19 12:36:44 -04:00
//------------------------------------------------------------------------------
2019-12-13 11:07:03 -05:00
static UBlueprintNodeSpawner * FBlueprintNodeSpawnerFactory : : MakeComponentBoundEventSpawner ( FMulticastDelegateProperty * DelegateProperty )
2014-08-19 12:36:44 -04:00
{
2014-08-26 16:25:42 -04:00
return UBlueprintBoundEventNodeSpawner : : Create ( UK2Node_ComponentBoundEvent : : StaticClass ( ) , DelegateProperty ) ;
}
2014-08-19 12:36:44 -04:00
2014-08-26 16:25:42 -04:00
//------------------------------------------------------------------------------
2019-12-13 11:07:03 -05:00
static UBlueprintNodeSpawner * FBlueprintNodeSpawnerFactory : : MakeActorBoundEventSpawner ( FMulticastDelegateProperty * DelegateProperty )
2014-08-26 16:25:42 -04:00
{
2014-09-10 16:14:07 -04:00
return UBlueprintBoundEventNodeSpawner : : Create ( UK2Node_ActorBoundEvent : : StaticClass ( ) , DelegateProperty ) ;
2014-08-19 12:36:44 -04:00
}
2014-07-09 12:17:42 -04:00
/*******************************************************************************
* Static FBlueprintActionDatabase Helpers
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2014-08-08 15:35:56 -04:00
namespace BlueprintActionDatabaseImpl
2014-07-09 12:17:42 -04:00
{
2014-08-08 15:35:56 -04:00
typedef FBlueprintActionDatabase : : FActionList FActionList ;
2014-07-09 12:17:42 -04:00
/**
* Mimics UEdGraphSchema_K2 : : CanUserKismetAccessVariable ( ) ; however , this
* omits the filtering that CanUserKismetAccessVariable ( ) does ( saves that
* for later with FBlueprintActionFilter ) .
*
* @ param Property The property you want to check .
* @ return True if the property can be seen from a blueprint .
*/
2019-12-13 11:07:03 -05:00
static bool IsPropertyBlueprintVisible ( FProperty const * const Property ) ;
2014-07-09 12:17:42 -04:00
2014-10-10 19:13:43 -04:00
/**
2014-10-23 12:10:43 -04:00
* Checks to see if the specified function is a blueprint owned function
* that was inherited from an implemented interface .
*
* @ param Function The function to check .
* @ return True if the function is owned by a blueprint , and some ( implemented ) interface has a matching function name .
2014-10-10 19:13:43 -04:00
*/
static bool IsBlueprintInterfaceFunction ( const UFunction * Function ) ;
2014-08-23 20:16:29 -04:00
/**
2014-10-23 12:10:43 -04:00
* Checks to see if the specified function is a blueprint owned function
* that was inherited from the blueprint ' s parent .
2014-08-23 20:16:29 -04:00
*
2014-10-23 12:10:43 -04:00
* @ param Function The function to check .
* @ return True if the function is owned by a blueprint , and some parent has a matching function name .
*/
static bool IsInheritedBlueprintFunction ( const UFunction * Function ) ;
/**
* Retrieves all the actions pertaining to a class and its fields ( functions ,
* variables , delegates , etc . ) . Actions that are conceptually owned by the
* class .
2014-08-23 20:16:29 -04:00
*
2014-10-23 12:10:43 -04:00
* @ param Class The class you want actions for .
* @ param ActionListOut The array you want filled with the requested actions .
2014-08-23 20:16:29 -04:00
*/
static void GetClassMemberActions ( UClass * const Class , FActionList & ActionListOut ) ;
2014-07-09 12:17:42 -04:00
/**
* Loops over all of the class ' s functions and creates a node - spawners for
* any that are viable for blueprint use . Evolved from
* FK2ActionMenuBuilder : : GetFuncNodesForClass ( ) , plus a series of other
* FK2ActionMenuBuilder methods ( GetAllInterfaceMessageActions ,
* GetEventsForBlueprint , etc ) .
*
* Ideally , any node that is constructed from a UFunction should go in here
* ( so we only ever loop through the class ' s functions once ) . We handle
* UK2Node_CallFunction alongside UK2Node_Event .
*
* @ param Class The class whose functions you want node - spawners for .
* @ param ActionListOut The list you want populated with the new spawners .
*/
static void AddClassFunctionActions ( UClass const * const Class , FActionList & ActionListOut ) ;
/**
* Loops over all of the class ' s properties and creates node - spawners for
* any that are viable for blueprint use . Evolved from certain parts of
* FK2ActionMenuBuilder : : GetAllActionsForClass ( ) .
*
* @ param Class The class whose properties you want node - spawners for .
* @ param ActionListOut The list you want populated with the new spawners .
*/
static void AddClassPropertyActions ( UClass const * const Class , FActionList & ActionListOut ) ;
2019-09-19 15:39:36 -04:00
/**
* Loops over all of the class ' s data object ' s properties and creates node - spawners for
* any that are viable for blueprint use .
*
* @ param Class The class whose properties you want node - spawners for .
* @ param ActionListOut The list you want populated with the new spawners .
*/
static void AddClassDataObjectActions ( UClass const * const Class , FActionList & ActionListOut ) ;
2014-07-09 12:17:42 -04:00
/**
* Evolved from FClassDynamicCastHelper : : GetClassDynamicCastNodes ( ) . If the
* specified class is a viable blueprint variable type , then two cast nodes
* are added for it ( UK2Node_DynamicCast , and UK2Node_ClassDynamicCast ) .
*
* @ param Class The class who you want cast nodes for ( they cast to this class ) .
* @ param ActionListOut The list you want populated with the new spawners .
*/
static void AddClassCastActions ( UClass * const Class , FActionList & ActionListOut ) ;
/**
* If the associated class is a blueprint generated class , then this will
* loop over the blueprint ' s graphs and create any node - spawners associated
* with those graphs ( like UK2Node_MacroInstance spawners for macro graphs ) .
*
2014-08-23 20:16:29 -04:00
* @ param Blueprint The blueprint which you want graph associated node - spawners for .
2014-07-09 12:17:42 -04:00
* @ param ActionListOut The list you want populated with new spawners .
*/
2014-08-23 20:16:29 -04:00
static void AddBlueprintGraphActions ( UBlueprint const * const Blueprint , FActionList & ActionListOut ) ;
2014-07-09 12:17:42 -04:00
/**
* Emulates UEdGraphSchema : : GetGraphContextActions ( ) . If the supplied class
* is a node type , then it will query the node ' s CDO for any actions it
* wishes to add . This helps us keep the code in this file paired down , and
2014-08-23 20:16:29 -04:00
* makes it easily extensible for new node types .
2014-07-09 12:17:42 -04:00
*
2014-08-23 20:16:29 -04:00
* @ param NodeClass The class which you want node - spawners for .
2014-07-09 12:17:42 -04:00
* @ param ActionListOut The list you want populated with new spawners .
*/
2014-08-23 20:16:29 -04:00
static void GetNodeSpecificActions ( TSubclassOf < UEdGraphNode const > const NodeClass , FBlueprintActionDatabaseRegistrar & Registrar ) ;
2014-08-04 18:28:34 -04:00
2014-08-08 15:35:56 -04:00
/**
* Callback to refresh the database when a blueprint has been altered
* ( clears the database entries for the blueprint ' s classes and recreates
* them . . . a property / function could have been added / removed ) .
*
* @ param InBlueprint The blueprint that has been altered .
*/
2014-08-04 18:28:34 -04:00
static void OnBlueprintChanged ( UBlueprint * InBlueprint ) ;
2014-08-11 18:39:28 -04:00
/**
* Callback to refresh the database when a new object has just been loaded
* ( to catch blueprint classes that weren ' t in the initial set , etc . )
*
* @ param NewObject The object that was just loaded .
*/
static void OnAssetLoaded ( UObject * NewObject ) ;
/**
* Callback to refresh the database when a new object has just been created
* ( to catch new blueprint classes that weren ' t in the initial set , etc . )
*
* @ param NewAssetInfo Data regarding the newly added asset .
*/
static void OnAssetAdded ( FAssetData const & NewAssetInfo ) ;
2014-08-15 16:12:46 -04:00
/**
* Callback to clear out object references so that a object can be deleted
* without resistance from the actions cached here . Objects passed here
* won ' t necessarily be deleted ( the user could still choose to cancel ) .
*
* @ param ObjectsForDelete A list of objects that MIGHT be deleted .
*/
static void OnAssetsPendingDelete ( TArray < UObject * > const & ObjectsForDelete ) ;
2014-08-11 18:39:28 -04:00
/**
2014-12-01 19:02:24 -05:00
* Callback to refresh the database when an object has been deleted ( to
* clear any related entries that were stored in the database )
2014-08-11 18:39:28 -04:00
*
* @ param AssetInfo Data regarding the freshly removed asset .
*/
static void OnAssetRemoved ( FAssetData const & AssetInfo ) ;
2014-08-15 16:12:46 -04:00
2014-12-01 19:02:24 -05:00
/**
* Callback to refresh the database when an object has been deleted / unloaded
* ( to clear any related entries that were stored in the database )
*
* @ param AssetObject The object being removed / deleted / unloaded .
*/
static void OnAssetRemoved ( UObject * AssetObject ) ;
/**
* Callback to refresh the database when a blueprint has been unloaded
* ( to clear any related entries that were stored in the database )
*
* @ param BlueprintObj The blueprint being unloaded .
*/
static void OnBlueprintUnloaded ( UBlueprint * BlueprintObj ) ;
2014-09-26 11:31:34 -04:00
/**
* Callback to refresh the database when an object has been renamed ( to clear
* any related classes that were stored in the database under the old name )
*
* @ param AssetInfo Data regarding the freshly removed asset .
*/
static void OnAssetRenamed ( FAssetData const & AssetInfo , const FString & InOldName ) ;
2015-04-11 10:23:56 -04:00
/**
* Callback to refresh / add all level blueprints owned by this world to the database
*
* @ param NewWorld The world that was added .
*/
static void OnWorldAdded ( UWorld * NewWorld ) ;
2014-09-17 16:02:23 -04:00
/**
* Callback to clear all levels from the database when a world is destroyed
*
* @ param DestroyedWorld The world that was destroyed
*/
static void OnWorldDestroyed ( UWorld * DestroyedWorld ) ;
2015-04-11 10:23:56 -04:00
/**
* Callback to re - evaluate all level blueprints owned by the world when the layout has changed
*
* @ param World The owner of the level and the world to be re - evaluated .
*/
2015-04-14 09:16:22 -04:00
static void OnRefreshLevelScripts ( UWorld * World ) ;
2015-04-11 10:23:56 -04:00
2014-09-17 16:02:23 -04:00
/**
* Returns TRUE if the Object is valid for the database
*
* @ param Object Object to check for validity
* @ return TRUE if the Blueprint is valid for the database
*/
static bool IsObjectValidForDatabase ( UObject const * Object ) ;
2019-01-10 17:26:53 -05:00
/**
* Refreshes database after a module is loaded or unloaded .
*/
static void OnModulesChanged ( FName InModuleName , EModuleChangeReason InModuleChangeReason ) ;
2015-03-09 20:28:13 -04:00
/**
* Refreshes database after project was hot - reloaded .
*/
2021-03-18 08:13:59 -04:00
static void OnReloadComplete ( EReloadCompleteReason Reason ) ;
2015-03-09 20:28:13 -04:00
2014-08-15 16:12:46 -04:00
/**
2014-08-23 20:16:29 -04:00
* Assets that we cleared from the database ( to remove references , and make
2014-08-15 16:12:46 -04:00
* way for a delete ) , but in - case the class wasn ' t deleted we need them
* tracked here so we can add them back in .
*/
2015-07-31 14:01:56 -04:00
TSet < TWeakObjectPtr < UObject > > PendingDelete ;
2014-08-23 20:16:29 -04:00
2022-11-23 11:08:44 -05:00
/**
* Modules that were explicitly loaded at runtime but have not yet been
* registered into the database . These will be processed on the next tick .
*/
TSet < FName > PendingModules ;
/**
* Modules that were explicitly loaded at runtime and registered into
* the database . We keep track of them here so that in the off chance
* we allow it to be unloaded , we can then trigger a database refresh .
*/
TSet < FName > LoadedModules ;
2014-08-23 20:16:29 -04:00
/** */
bool bIsInitializing = false ;
2019-01-10 17:26:53 -05:00
/** True if a RefreshAll has been requested for the next Tick */
bool bRefreshAllRequested = false ;
}
//------------------------------------------------------------------------------
static void BlueprintActionDatabaseImpl : : OnModulesChanged ( FName InModuleName , EModuleChangeReason InModuleChangeReason )
{
2022-11-23 11:08:44 -05:00
switch ( InModuleChangeReason )
2019-01-10 17:26:53 -05:00
{
2022-11-23 11:08:44 -05:00
case EModuleChangeReason : : ModuleLoaded :
// If not already tracked, add it to the list of modules that need to be registered on the next tick.
if ( ! LoadedModules . Contains ( InModuleName ) )
{
PendingModules . Add ( InModuleName ) ;
}
break ;
case EModuleChangeReason : : ModuleUnloaded :
// If pending, it was unloaded in the same frame, so we just need to remove it, and no refresh is needed.
if ( ! PendingModules . Remove ( InModuleName ) )
{
// If already registered as a loaded module, then we need to remove it and do a full refresh on the next tick.
if ( LoadedModules . Remove ( InModuleName ) )
{
bRefreshAllRequested = true ;
}
}
// Guard against the possibility of unloading a pending module that is also already registered.
checkf ( ! LoadedModules . Contains ( InModuleName ) , TEXT ( " Module %s was unloaded, but wasn't unregistered from the Blueprint action database. " ) , * InModuleName . ToString ( ) ) ;
break ;
default :
break ;
2019-01-10 17:26:53 -05:00
}
2014-07-09 12:17:42 -04:00
}
2015-03-09 20:28:13 -04:00
//------------------------------------------------------------------------------
2021-03-18 08:13:59 -04:00
static void BlueprintActionDatabaseImpl : : OnReloadComplete ( EReloadCompleteReason Reason )
2015-03-09 20:28:13 -04:00
{
2019-01-10 17:26:53 -05:00
BlueprintActionDatabaseImpl : : bRefreshAllRequested = true ;
2015-03-09 20:28:13 -04:00
}
2014-07-16 17:29:50 -04:00
//------------------------------------------------------------------------------
2019-12-13 11:07:03 -05:00
static bool BlueprintActionDatabaseImpl : : IsPropertyBlueprintVisible ( FProperty const * const Property )
2014-07-09 12:17:42 -04:00
{
bool const bIsAccessible = Property - > HasAllPropertyFlags ( CPF_BlueprintVisible ) ;
2019-12-13 11:07:03 -05:00
bool const bIsDelegate = Property - > IsA ( FMulticastDelegateProperty : : StaticClass ( ) ) ;
2014-07-09 12:17:42 -04:00
bool const bIsAssignableOrCallable = Property - > HasAnyPropertyFlags ( CPF_BlueprintAssignable | CPF_BlueprintCallable ) ;
2022-06-30 11:25:52 -04:00
bool bVisible = ! Property - > HasAnyPropertyFlags ( CPF_Parm ) & & ( bIsAccessible | | ( bIsDelegate & & bIsAssignableOrCallable ) ) ;
if ( bVisible )
{
bVisible = FPropertyEditorPermissionList : : Get ( ) . DoesPropertyPassFilter ( Property - > GetOwnerStruct ( ) , Property - > GetFName ( ) ) ;
}
return bVisible ;
2014-07-09 12:17:42 -04:00
}
2014-10-10 19:13:43 -04:00
//------------------------------------------------------------------------------
static bool BlueprintActionDatabaseImpl : : IsBlueprintInterfaceFunction ( const UFunction * Function )
{
bool bIsBpInterfaceFunc = false ;
if ( UClass * FuncClass = Function - > GetOwnerClass ( ) )
{
if ( UBlueprint * BpOuter = Cast < UBlueprint > ( FuncClass - > ClassGeneratedBy ) )
{
FName FuncName = Function - > GetFName ( ) ;
for ( int32 InterfaceIndex = 0 ; ( InterfaceIndex < BpOuter - > ImplementedInterfaces . Num ( ) ) & & ! bIsBpInterfaceFunc ; + + InterfaceIndex )
{
FBPInterfaceDescription & InterfaceDesc = BpOuter - > ImplementedInterfaces [ InterfaceIndex ] ;
2019-05-17 17:18:20 -04:00
if ( ! InterfaceDesc . Interface )
{
continue ;
}
2014-10-23 12:10:43 -04:00
bIsBpInterfaceFunc = ( InterfaceDesc . Interface - > FindFunctionByName ( FuncName ) ! = nullptr ) ;
2014-10-10 19:13:43 -04:00
}
}
}
return bIsBpInterfaceFunc ;
}
2014-10-23 12:10:43 -04:00
//------------------------------------------------------------------------------
static bool BlueprintActionDatabaseImpl : : IsInheritedBlueprintFunction ( const UFunction * Function )
{
bool bIsBpInheritedFunc = false ;
if ( UClass * FuncClass = Function - > GetOwnerClass ( ) )
{
if ( UBlueprint * BpOwner = Cast < UBlueprint > ( FuncClass - > ClassGeneratedBy ) )
{
FName FuncName = Function - > GetFName ( ) ;
if ( UClass * ParentClass = BpOwner - > ParentClass )
{
bIsBpInheritedFunc = ( ParentClass - > FindFunctionByName ( FuncName , EIncludeSuperFlag : : IncludeSuper ) ! = nullptr ) ;
}
}
}
return bIsBpInheritedFunc ;
}
2014-08-23 20:16:29 -04:00
//------------------------------------------------------------------------------
static void BlueprintActionDatabaseImpl : : GetClassMemberActions ( UClass * const Class , FActionList & ActionListOut )
{
// class field actions (nodes that represent and perform actions on
// specific fields of the class... functions, properties, etc.)
{
AddClassFunctionActions ( Class , ActionListOut ) ;
AddClassPropertyActions ( Class , ActionListOut ) ;
2019-09-19 15:39:36 -04:00
AddClassDataObjectActions ( Class , ActionListOut ) ;
2014-08-23 20:16:29 -04:00
// class UEnum actions are added by individual nodes via GetNodeSpecificActions()
// class UScriptStruct actions are added by individual nodes via GetNodeSpecificActions()
}
AddClassCastActions ( Class , ActionListOut ) ;
}
2014-07-09 12:17:42 -04:00
//------------------------------------------------------------------------------
2014-08-08 15:35:56 -04:00
static void BlueprintActionDatabaseImpl : : AddClassFunctionActions ( UClass const * const Class , FActionList & ActionListOut )
2014-07-09 12:17:42 -04:00
{
using namespace FBlueprintNodeSpawnerFactory ; // for MakeMessageNodeSpawner()
check ( Class ! = nullptr ) ;
// loop over all the functions in the specified class; exclude-super because
// we can always get the super functions by looking up that class separately
for ( TFieldIterator < UFunction > FunctionIt ( Class , EFieldIteratorFlags : : ExcludeSuper ) ; FunctionIt ; + + FunctionIt )
{
UFunction * Function = * FunctionIt ;
2014-10-23 12:10:43 -04:00
bool const bIsInheritedFunction = BlueprintActionDatabaseImpl : : IsInheritedBlueprintFunction ( Function ) ;
if ( bIsInheritedFunction )
{
// inherited functions will be captured when the parent class is ran
// through this function (no need to duplicate)
continue ;
}
2022-06-30 11:25:52 -04:00
// Apply general filtering for functions
if ( ! FBlueprintActionDatabase : : IsFunctionAllowed ( Function , FBlueprintActionDatabase : : EPermissionsContext : : Node ) )
{
continue ;
}
2014-10-23 12:10:43 -04:00
bool const bIsBpInterfaceFunc = BlueprintActionDatabaseImpl : : IsBlueprintInterfaceFunction ( Function ) ;
2014-10-10 19:13:43 -04:00
if ( UEdGraphSchema_K2 : : FunctionCanBePlacedAsEvent ( Function ) & & ! bIsBpInterfaceFunc )
2014-07-09 12:17:42 -04:00
{
if ( UBlueprintEventNodeSpawner * NodeSpawner = UBlueprintEventNodeSpawner : : Create ( Function ) )
{
ActionListOut . Add ( NodeSpawner ) ;
}
}
2020-08-24 19:55:49 -04:00
// If this is a promotable function, and it has already been registered
// than do NOT add it to the asset action database. We should
// probably have some better logic for this, like adding our own node spawner
const bool bIsRegisteredPromotionFunc =
TypePromoDebug : : IsTypePromoEnabled ( ) & &
FTypePromotion : : IsFunctionPromotionReady ( Function ) & &
FTypePromotion : : IsOperatorSpawnerRegistered ( Function ) ;
2014-07-09 12:17:42 -04:00
if ( UEdGraphSchema_K2 : : CanUserKismetCallFunction ( Function ) )
{
2014-08-18 13:34:41 -04:00
// @TODO: if this is a Blueprint, and this function is from a
// Blueprint "implemented interface", then we don't need to
// include it (the function is accounted for in from the
// interface class).
2014-08-19 12:36:44 -04:00
UBlueprintFunctionNodeSpawner * FuncSpawner = UBlueprintFunctionNodeSpawner : : Create ( Function ) ;
2020-08-24 19:55:49 -04:00
// Only add this action to the list of the operator function is not already registered. Otherwise we will
// get a bunch of duplicate operator actions
if ( ! bIsRegisteredPromotionFunc )
{
ActionListOut . Add ( FuncSpawner ) ;
}
2014-07-09 12:17:42 -04:00
if ( FKismetEditorUtilities : : IsClassABlueprintInterface ( Class ) )
{
2021-11-18 14:37:34 -05:00
// Use the default function name
2014-07-09 12:17:42 -04:00
ActionListOut . Add ( MakeMessageNodeSpawner ( Function ) ) ;
}
}
}
}
//------------------------------------------------------------------------------
2014-08-08 15:35:56 -04:00
static void BlueprintActionDatabaseImpl : : AddClassPropertyActions ( UClass const * const Class , FActionList & ActionListOut )
2014-07-09 12:17:42 -04:00
{
2014-07-16 14:14:48 -04:00
using namespace FBlueprintNodeSpawnerFactory ; // for MakeDelegateNodeSpawner()
2014-08-19 12:36:44 -04:00
2014-08-26 16:25:42 -04:00
bool const bIsComponent = Class - > IsChildOf < UActorComponent > ( ) ;
bool const bIsActorClass = Class - > IsChildOf < AActor > ( ) ;
2014-07-16 14:14:48 -04:00
2014-07-09 12:17:42 -04:00
// loop over all the properties in the specified class; exclude-super because
2019-09-19 15:39:36 -04:00
// we can always get the super properties by looking up that class separately
2019-12-13 11:07:03 -05:00
for ( TFieldIterator < FProperty > PropertyIt ( Class , EFieldIteratorFlags : : ExcludeSuper ) ; PropertyIt ; + + PropertyIt )
2014-07-09 12:17:42 -04:00
{
2019-12-13 11:07:03 -05:00
FProperty * Property = * PropertyIt ;
2014-07-09 12:17:42 -04:00
if ( ! IsPropertyBlueprintVisible ( Property ) )
{
continue ;
}
2019-12-13 11:07:03 -05:00
bool const bIsDelegate = Property - > IsA ( FMulticastDelegateProperty : : StaticClass ( ) ) ;
if ( bIsDelegate )
{
FMulticastDelegateProperty * DelegateProperty = CastFieldChecked < FMulticastDelegateProperty > ( Property ) ;
2014-07-16 14:14:48 -04:00
if ( DelegateProperty - > HasAnyPropertyFlags ( CPF_BlueprintAssignable ) )
{
2014-08-15 11:47:46 -04:00
UBlueprintNodeSpawner * AddSpawner = UBlueprintDelegateNodeSpawner : : Create ( UK2Node_AddDelegate : : StaticClass ( ) , DelegateProperty ) ;
2014-07-16 14:14:48 -04:00
ActionListOut . Add ( AddSpawner ) ;
2014-08-13 16:29:51 -04:00
UBlueprintNodeSpawner * AssignSpawner = MakeAssignDelegateNodeSpawner ( DelegateProperty ) ;
ActionListOut . Add ( AssignSpawner ) ;
2014-07-16 14:14:48 -04:00
}
if ( DelegateProperty - > HasAnyPropertyFlags ( CPF_BlueprintCallable ) )
{
2014-08-15 11:47:46 -04:00
UBlueprintNodeSpawner * CallSpawner = UBlueprintDelegateNodeSpawner : : Create ( UK2Node_CallDelegate : : StaticClass ( ) , DelegateProperty ) ;
2014-07-16 14:14:48 -04:00
ActionListOut . Add ( CallSpawner ) ;
}
2014-08-15 11:47:46 -04:00
UBlueprintNodeSpawner * RemoveSpawner = UBlueprintDelegateNodeSpawner : : Create ( UK2Node_RemoveDelegate : : StaticClass ( ) , DelegateProperty ) ;
2014-07-16 14:14:48 -04:00
ActionListOut . Add ( RemoveSpawner ) ;
2014-08-15 11:47:46 -04:00
UBlueprintNodeSpawner * ClearSpawner = UBlueprintDelegateNodeSpawner : : Create ( UK2Node_ClearDelegate : : StaticClass ( ) , DelegateProperty ) ;
2014-07-16 14:14:48 -04:00
ActionListOut . Add ( ClearSpawner ) ;
2014-07-09 12:17:42 -04:00
2014-08-19 12:36:44 -04:00
if ( bIsComponent )
{
ActionListOut . Add ( MakeComponentBoundEventSpawner ( DelegateProperty ) ) ;
}
2014-08-26 16:25:42 -04:00
else if ( bIsActorClass )
{
ActionListOut . Add ( MakeActorBoundEventSpawner ( DelegateProperty ) ) ;
}
2019-12-13 11:07:03 -05:00
}
2014-07-09 12:17:42 -04:00
else
{
Copying //UE4/Dev-Blueprints to //UE4/Dev-Main (Source: //UE4/Dev-Blueprints @ 3255454)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3228496 on 2016/12/09 by Ben.Cosh
This change adds extra information to component template arrays so that the component class can be determined in builds that strip out objects of certain class types such as the editor dedicated server build.
#Jira UE-38842 - "LogBlueprint:Error: [Compiler BP_Skybox_World_RandomTrees_01] Error Can't connect pins ReturnValue and Target" after entering a lobby in a synced server
#Proj KismetCompiler, BlueprintGraph, UnrealEd, Core, Engine, Kismet, BlueprintCompilerCppBackend
Change 3232435 on 2016/12/13 by Ben.Cosh
Fix for a bug introduced in CL 3228496 that caused component templates to fail to be identified by name and resulted in blueprint compilation issues for add component nodes.
#Jira UE-39623 - Unknown template referenced by Add Component Node
#Proj BlueprintGraph, Engine
Change 3234581 on 2016/12/14 by Mike.Beach
Backing out fix for UE-38842 (CL 3228496/3232435/3232564) - mapping UBlueprintGeneratedClass's ComponentTemplates array to a new format was causing issues with deferred dependency loading during serialization (trying to extract type information from a placeholder object). We're opting for a smaller/simpler solution to UE-38842, which will be to store the component information on the node itself (not with the templates).
#jira UE-39707
Change 3236615 on 2016/12/15 by Maciej.Mroz
Nativization: Fixed getter fuctions in FUnconvertedWrapper, the returned ref won;t be const.
Change 3236967 on 2016/12/15 by Dan.Oconnor
Test data showing an error for jira issue UE-39808
Change 3237021 on 2016/12/15 by Dan.Oconnor
UE31622 test data
Change 3237046 on 2016/12/15 by Dan.Oconnor
UE-14123 test data
Change 3239289 on 2016/12/17 by Phillip.Kavan
[UE-38999] Dump component tree node hierarchy to the output log on error state during widget generation.
change summary:
- added FOnTableViewBadState delegate parameter to SSCSEditorDragDropTree
- added SSCSEditor::DumpTree() as the FOnTableViewBadState delegate implementatioon for the STableView widget (to provide us with more info on future occurrences)
#jira UE-38999
Change 3239448 on 2016/12/19 by Maciej.Mroz
#jira UE-39794
New way of collecting dependencies assets. Only directly used assets are listed. It will be used in projects with EDL enabled, once the "EDL boot time" is enabled.
Nativized projects with EDL disabled use the new mechanism as well. They use new __StaticDependenciesAssets functions generator. __StaticDependenciesAssets calls recursively __StaticDependenciesAssets of all Blueprints, that the current BP depends on. It reduces the size of __StaticDependenciesAssets.
Notice, that at the moment, this change should no affect any projects with EDL enabled (because the EDL boot time doesn't work yet).
Change 3239778 on 2016/12/19 by Phillip.Kavan
[UE-39854] Fix nativized assets build error when there are no native code dependencies.
change summary:
- modified FDependenciesGlobalMapHelper::EmitBodyCode() to emit a NULL entry when there are no other entries to emit, in order to avoid a zero-length array initialization error at compile time.
#jira UE-39854
Change 3239965 on 2016/12/19 by Phillip.Kavan
[UE-39733] Fix incorrect graph pin value display names for user-defined enum types.
change summary:
- switched UEnum::GetDisplayNameText() to be a virtual API
- added a UUserDefinedEnum::GetDisplayNameText() override to call FEnumEditorUtils::GetEnumeratorDisplayName()
#jira UE-39733
Change 3240422 on 2016/12/19 by Dan.Oconnor
Remove useless counter. ensureMsgf only fires once
Change 3242313 on 2016/12/21 by Phillip.Kavan
[UE-35418] The Actor details view will now refresh property mappings for the current Actor instance selection after a bytecode-only recompile of its Blueprint class as a dependency during reinstancing.
change summary:
- Modified FBlueprintCompileReinstancer::ReinstanceObjects() to invoke SelectActor() on the current editor selection after a bytecode-only recompile of its class as a dependent BP (i.e. when reinstancing/finalization is not actually incurred). This is meant to be consistent with how the refresh for the current Actor selection is handled by the reinstancer in the other cases.
#jira UE-35418
Change 3242409 on 2016/12/21 by Dan.Oconnor
PR #2995: Arbitrary base logarithm blueprint node (Contributed by Valkrysa)
#jira UE-39169
Change 3243207 on 2016/12/22 by Phillip.Kavan
[UE-39816] Renaming interface input/output parameters will no longer cause broken pin links at interface function call sites in Blueprints that are currently loaded.
change summary:
- modified FBasePinChangeHelper::Broadcast() to consider pin changes sourced from an interface Blueprint
- also revised non-interface function call site check code a bit to try and avoid doing some unnecessary work when possible, since this code runs through every call site node
#jira UE-39816
Change 3243210 on 2016/12/22 by Phillip.Kavan
[UE-39944] Extend the GetClassDefaults node to include output pin exceptions for TSet/TMap properties (i.e. mirror safeguards already in place for TArray).
change summary:
- deprecated 'bExcludeObjectArrays' and replaced with 'bExcludeObjectContainers' (not using a redirect because I need the old property serialized on load for backwards-compatibility)
- modified FClassDefaultsOptionalPinManager's ctor to consider both flags
- modified FClassDefaultsOptionalPinManager::CanTreatPropertyAsOptional() to also test for TSet/TMap types, and exclude them if they contain a non-class UObject property as the inner type (same as we do for TArray)
- modified UK2Node_GetClassDefaults::ValidateNodeDuringCompilation() to also test for TSet/TMap types, and emit a warning for existing pin connections that would have otherwise failed for newly-placed nodes (same as TArray)
- modified UK2Node_GetClassDefaults::ExpandNode() to generate the necessary script needed to create a copy of TSet/TMap property value outputs (same as we do for TArray types)
#jira UE-39944
Change 3243373 on 2016/12/23 by Maciej.Mroz
#jira UE-39794
-Nativized build with EDL enabled use new dependency-gathering system. It shrinks size of the .exe file. This code will change once the boot time EDL is enabled.
-In nativized code, ZCOnstructors are not called. They are replaced by ::StaticClass(). Static class doesn't call noting recursively. We still need to fix interfaces (they have no StaticClass).
- Workaround for UE-40026
- Various minior improvements.
Change 3244038 on 2016/12/28 by Phillip.Kavan
[UE-34488] Child Blueprint assets are now marked as dirty if its parent Blueprint incurs a strucutural change.
change summary:
- modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() to call MarkPackageDirty() after a skeleton-only compile pass on a child Blueprint.
notes:
- this only fixes the issue for child Blueprints that are loaded when the change to the parent Blueprint occurs. unloaded child Blueprints would still need a redirector to fix this up on load.
#jira UE-34488
Change 3244087 on 2016/12/28 by Phillip.Kavan
CIS warning fix (C6236).
Change 3244388 on 2016/12/30 by Phillip.Kavan
[UE-39816] Fix broken pin links caused by renaming interface function input/output parameters prior to compiling the interface, but after renaming the function itself.
change summary:
- modified FBlueprintEditorUtils::FindFunctionInImplementedInterfaces() to prefer the skeleton class when searching, as that is always up-to-date.
- modified FBlueprintEditorUtils::RenameGraph() to update *all* function call site nodes, rather than just those within the current Blueprint class scope.
#jira UE-39816
Change 3245322 on 2017/01/03 by Maciej.Mroz
#jira UE-40125
Fixed a crash when implementing a native interface in a BP
Change 3245667 on 2017/01/03 by Mike.Beach
Mirroring CL 3245664 - Making it so level script bound nodes are fixed up on load (in case the level instances were saved out without the bindings).
#jira UE-39950
Change 3247675 on 2017/01/05 by Maciej.Mroz
BP is not DataOnly, when it overrides an inherited component
related to UE-40131
Change 3247985 on 2017/01/05 by Maciej.Mroz
NativizationSummary object is always present.
#jira UE-40035
Change 3249423 on 2017/01/06 by Mike.Beach
Mirroring CL 3248792 from Orion.
Fix to keep placeholder classes from being needlessly created (when the object they represent already exists) - instead, attempt to lookup and find the existing import objects (which used to be set, but could be cleared during async loading by FLinkerManager::DissociateImportsAndForcedExports()).
#jira OR-34038
Change 3249568 on 2017/01/06 by Mike.Beach
Updating the UBlueprintThumbnailRenderer API so it can be sub-classed by plugin/projects.
PR #2899: Expose UBlueprintThumbnailRenderer in the API (Contributed by e-agaubatz)
#jira UE-38004
Change 3251903 on 2017/01/10 by Phillip.Kavan
[UE-31640] Function inputs are now exposed as variable "Get" nodes via the right-click context menu in a Blueprint function graph context.
Note: Changes are based on shelved CL# 2452724, original proof-of-concept code (credit: Michael.Noland).
#jira UE-31640
#fyi Michael.Noland
Change 3252119 on 2017/01/10 by Phillip.Kavan
CIS fix (shadowed variable).
Change 3252744 on 2017/01/10 by Dan.Oconnor
Add GMinimalCompileOnLoad path for postponing compile on load until all data has been loaded - long term this will be used to improve bp compiler infrastructure (performance, correctness, succinctness)
Change 3252968 on 2017/01/10 by Phillip.Kavan
[UE-36798] Fix for an infinite loop case in the math expression parser.
#jira UE-36798
Change 3253153 on 2017/01/10 by Dan.Oconnor
Fixed construction scripts not being loaded before instancing occurs when using new lighter compile path
Change 3253171 on 2017/01/10 by Mike.Beach
Mirrored CL 3253147.
Properly fills out FPropertyChangedEvent's MemberProperty field, for the property editor's NotifyHook. As its comment implies, "MemberProperty" is meant to represent the outermost property (in scenarios, like with nested struct properties). It was not working this way, and was instead set to the same nested property.
Change 3253220 on 2017/01/10 by Dan.Oconnor
These pins should infer together
#jira UE-40427
Change 3253223 on 2017/01/10 by Phillip.Kavan
[UE-35050] Fix a crash that occurs on an attempt to rename the category of an implemented interface function inherited from a native parent class in the My Blueprint panel.
change summary:
- modified FBlueprintEditorUtils::FindFunctionInImplementedInterfaces() to accept an additional input parameter so that callers can opt-in to searching all inherited interface classes
- modified SMyBlueprint::CanRequestRenameOnActionNode() to prevent rename on implemented interface functions inherited from a native parent class
#jira UE-35050
Change 3253259 on 2017/01/10 by Dan.Oconnor
Quick cleanup, this stuff is in progress
Change 3253983 on 2017/01/11 by Phillip.Kavan
[UE-35629] Disable external curve asset creation when editing a local variable's default value in a Blueprint graph.
change summary:
- modified FCurveStructCustomization::CustomizeChildren() to set the "create" button visibility to "collapsed" when the Owner is NULL (as the default asset path is inferred from the Owner's package).
#jira UE-35629
Change 3254024 on 2017/01/11 by Phillip.Kavan
[UE-40131] Non-native child BPs can now properly override a nativized parent BP's components in a cooked build with exclusive Blueprint class nativiation.
change summary:
- added UBlueprintGeneratedClass::CheckAndApplyComponentTemplateOverrides()
- switched FComponentKey::OwnerClass type from UBlueprintGeneratedClass to UClass to allow the reference to be loaded when it's a nativized BP class.
- modified AActor::PostLoadSubobjects() to apply ICH template overrides to inherited component subobjects on load (only in a cooked build)
- modified AActor::PostSpawnInitialize() to also apply ICH template overrides to inherited component subobjects on new Actor spawns (only in a cooked build)
- modified FBlueprintEditorUtils::IsDataOnlyBlueprint() to additionally reject BPs that have a non-empty ICH (from Maciej)
- added UBlueprint::bHasNativizedParent to cache this as an indicator for cooked builds to allow Actor instances to avoid incurring additional overhead for this at load time in the general case
#jira UE-40131
Change 3254176 on 2017/01/11 by Mike.Beach
Mirroring CL 3245838 to unblock the Odin build. Downgrading new error to warning until we can address it in content (and fully understand why it is triggering).
#jira UE-40470
Change 3254391 on 2017/01/11 by Phillip.Kavan
[UE-40131] CIS fix (non-unity).
Change 3254442 on 2017/01/11 by Mike.Beach
Mirroring CL 3245069 (from RobM), which is described as a "temp fix".
#jira UE-40399
Change 3254599 on 2017/01/11 by Mike.Beach
Updating some of our GetRedirectPinNames() functions - making local copy of an array element instead of a reference. We're adding to the array right after, and the ref can become invalid (if the array is grown and reallocated). Came to us via UDN.
Change 3254624 on 2017/01/11 by Mike.Beach
Backing out CL 3247675, as it removed the "data-only" status from certain Blueprints that, IMO, are still considered "data-only". This would have reprecussions to editor (compile-on) load times, and affect how these Blueprints are presented to the user.
#fyi Maciej.Mroz, Phillip.Kavan
Change 3254671 on 2017/01/11 by Mike.Beach
Resolving CIS warning - USE_EVENT_DRIVEN_ASYNC_LOAD was replaced with GEventDrivenLoaderEnabled.
[CL 3255791 by Mike Beach in Main branch]
2017-01-12 14:36:04 -05:00
UBlueprintVariableNodeSpawner * GetterSpawner = UBlueprintVariableNodeSpawner : : CreateFromMemberOrParam ( UK2Node_VariableGet : : StaticClass ( ) , Property ) ;
2014-07-09 12:17:42 -04:00
ActionListOut . Add ( GetterSpawner ) ;
Copying //UE4/Dev-Blueprints to //UE4/Dev-Main (Source: //UE4/Dev-Blueprints @ 3255454)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3228496 on 2016/12/09 by Ben.Cosh
This change adds extra information to component template arrays so that the component class can be determined in builds that strip out objects of certain class types such as the editor dedicated server build.
#Jira UE-38842 - "LogBlueprint:Error: [Compiler BP_Skybox_World_RandomTrees_01] Error Can't connect pins ReturnValue and Target" after entering a lobby in a synced server
#Proj KismetCompiler, BlueprintGraph, UnrealEd, Core, Engine, Kismet, BlueprintCompilerCppBackend
Change 3232435 on 2016/12/13 by Ben.Cosh
Fix for a bug introduced in CL 3228496 that caused component templates to fail to be identified by name and resulted in blueprint compilation issues for add component nodes.
#Jira UE-39623 - Unknown template referenced by Add Component Node
#Proj BlueprintGraph, Engine
Change 3234581 on 2016/12/14 by Mike.Beach
Backing out fix for UE-38842 (CL 3228496/3232435/3232564) - mapping UBlueprintGeneratedClass's ComponentTemplates array to a new format was causing issues with deferred dependency loading during serialization (trying to extract type information from a placeholder object). We're opting for a smaller/simpler solution to UE-38842, which will be to store the component information on the node itself (not with the templates).
#jira UE-39707
Change 3236615 on 2016/12/15 by Maciej.Mroz
Nativization: Fixed getter fuctions in FUnconvertedWrapper, the returned ref won;t be const.
Change 3236967 on 2016/12/15 by Dan.Oconnor
Test data showing an error for jira issue UE-39808
Change 3237021 on 2016/12/15 by Dan.Oconnor
UE31622 test data
Change 3237046 on 2016/12/15 by Dan.Oconnor
UE-14123 test data
Change 3239289 on 2016/12/17 by Phillip.Kavan
[UE-38999] Dump component tree node hierarchy to the output log on error state during widget generation.
change summary:
- added FOnTableViewBadState delegate parameter to SSCSEditorDragDropTree
- added SSCSEditor::DumpTree() as the FOnTableViewBadState delegate implementatioon for the STableView widget (to provide us with more info on future occurrences)
#jira UE-38999
Change 3239448 on 2016/12/19 by Maciej.Mroz
#jira UE-39794
New way of collecting dependencies assets. Only directly used assets are listed. It will be used in projects with EDL enabled, once the "EDL boot time" is enabled.
Nativized projects with EDL disabled use the new mechanism as well. They use new __StaticDependenciesAssets functions generator. __StaticDependenciesAssets calls recursively __StaticDependenciesAssets of all Blueprints, that the current BP depends on. It reduces the size of __StaticDependenciesAssets.
Notice, that at the moment, this change should no affect any projects with EDL enabled (because the EDL boot time doesn't work yet).
Change 3239778 on 2016/12/19 by Phillip.Kavan
[UE-39854] Fix nativized assets build error when there are no native code dependencies.
change summary:
- modified FDependenciesGlobalMapHelper::EmitBodyCode() to emit a NULL entry when there are no other entries to emit, in order to avoid a zero-length array initialization error at compile time.
#jira UE-39854
Change 3239965 on 2016/12/19 by Phillip.Kavan
[UE-39733] Fix incorrect graph pin value display names for user-defined enum types.
change summary:
- switched UEnum::GetDisplayNameText() to be a virtual API
- added a UUserDefinedEnum::GetDisplayNameText() override to call FEnumEditorUtils::GetEnumeratorDisplayName()
#jira UE-39733
Change 3240422 on 2016/12/19 by Dan.Oconnor
Remove useless counter. ensureMsgf only fires once
Change 3242313 on 2016/12/21 by Phillip.Kavan
[UE-35418] The Actor details view will now refresh property mappings for the current Actor instance selection after a bytecode-only recompile of its Blueprint class as a dependency during reinstancing.
change summary:
- Modified FBlueprintCompileReinstancer::ReinstanceObjects() to invoke SelectActor() on the current editor selection after a bytecode-only recompile of its class as a dependent BP (i.e. when reinstancing/finalization is not actually incurred). This is meant to be consistent with how the refresh for the current Actor selection is handled by the reinstancer in the other cases.
#jira UE-35418
Change 3242409 on 2016/12/21 by Dan.Oconnor
PR #2995: Arbitrary base logarithm blueprint node (Contributed by Valkrysa)
#jira UE-39169
Change 3243207 on 2016/12/22 by Phillip.Kavan
[UE-39816] Renaming interface input/output parameters will no longer cause broken pin links at interface function call sites in Blueprints that are currently loaded.
change summary:
- modified FBasePinChangeHelper::Broadcast() to consider pin changes sourced from an interface Blueprint
- also revised non-interface function call site check code a bit to try and avoid doing some unnecessary work when possible, since this code runs through every call site node
#jira UE-39816
Change 3243210 on 2016/12/22 by Phillip.Kavan
[UE-39944] Extend the GetClassDefaults node to include output pin exceptions for TSet/TMap properties (i.e. mirror safeguards already in place for TArray).
change summary:
- deprecated 'bExcludeObjectArrays' and replaced with 'bExcludeObjectContainers' (not using a redirect because I need the old property serialized on load for backwards-compatibility)
- modified FClassDefaultsOptionalPinManager's ctor to consider both flags
- modified FClassDefaultsOptionalPinManager::CanTreatPropertyAsOptional() to also test for TSet/TMap types, and exclude them if they contain a non-class UObject property as the inner type (same as we do for TArray)
- modified UK2Node_GetClassDefaults::ValidateNodeDuringCompilation() to also test for TSet/TMap types, and emit a warning for existing pin connections that would have otherwise failed for newly-placed nodes (same as TArray)
- modified UK2Node_GetClassDefaults::ExpandNode() to generate the necessary script needed to create a copy of TSet/TMap property value outputs (same as we do for TArray types)
#jira UE-39944
Change 3243373 on 2016/12/23 by Maciej.Mroz
#jira UE-39794
-Nativized build with EDL enabled use new dependency-gathering system. It shrinks size of the .exe file. This code will change once the boot time EDL is enabled.
-In nativized code, ZCOnstructors are not called. They are replaced by ::StaticClass(). Static class doesn't call noting recursively. We still need to fix interfaces (they have no StaticClass).
- Workaround for UE-40026
- Various minior improvements.
Change 3244038 on 2016/12/28 by Phillip.Kavan
[UE-34488] Child Blueprint assets are now marked as dirty if its parent Blueprint incurs a strucutural change.
change summary:
- modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() to call MarkPackageDirty() after a skeleton-only compile pass on a child Blueprint.
notes:
- this only fixes the issue for child Blueprints that are loaded when the change to the parent Blueprint occurs. unloaded child Blueprints would still need a redirector to fix this up on load.
#jira UE-34488
Change 3244087 on 2016/12/28 by Phillip.Kavan
CIS warning fix (C6236).
Change 3244388 on 2016/12/30 by Phillip.Kavan
[UE-39816] Fix broken pin links caused by renaming interface function input/output parameters prior to compiling the interface, but after renaming the function itself.
change summary:
- modified FBlueprintEditorUtils::FindFunctionInImplementedInterfaces() to prefer the skeleton class when searching, as that is always up-to-date.
- modified FBlueprintEditorUtils::RenameGraph() to update *all* function call site nodes, rather than just those within the current Blueprint class scope.
#jira UE-39816
Change 3245322 on 2017/01/03 by Maciej.Mroz
#jira UE-40125
Fixed a crash when implementing a native interface in a BP
Change 3245667 on 2017/01/03 by Mike.Beach
Mirroring CL 3245664 - Making it so level script bound nodes are fixed up on load (in case the level instances were saved out without the bindings).
#jira UE-39950
Change 3247675 on 2017/01/05 by Maciej.Mroz
BP is not DataOnly, when it overrides an inherited component
related to UE-40131
Change 3247985 on 2017/01/05 by Maciej.Mroz
NativizationSummary object is always present.
#jira UE-40035
Change 3249423 on 2017/01/06 by Mike.Beach
Mirroring CL 3248792 from Orion.
Fix to keep placeholder classes from being needlessly created (when the object they represent already exists) - instead, attempt to lookup and find the existing import objects (which used to be set, but could be cleared during async loading by FLinkerManager::DissociateImportsAndForcedExports()).
#jira OR-34038
Change 3249568 on 2017/01/06 by Mike.Beach
Updating the UBlueprintThumbnailRenderer API so it can be sub-classed by plugin/projects.
PR #2899: Expose UBlueprintThumbnailRenderer in the API (Contributed by e-agaubatz)
#jira UE-38004
Change 3251903 on 2017/01/10 by Phillip.Kavan
[UE-31640] Function inputs are now exposed as variable "Get" nodes via the right-click context menu in a Blueprint function graph context.
Note: Changes are based on shelved CL# 2452724, original proof-of-concept code (credit: Michael.Noland).
#jira UE-31640
#fyi Michael.Noland
Change 3252119 on 2017/01/10 by Phillip.Kavan
CIS fix (shadowed variable).
Change 3252744 on 2017/01/10 by Dan.Oconnor
Add GMinimalCompileOnLoad path for postponing compile on load until all data has been loaded - long term this will be used to improve bp compiler infrastructure (performance, correctness, succinctness)
Change 3252968 on 2017/01/10 by Phillip.Kavan
[UE-36798] Fix for an infinite loop case in the math expression parser.
#jira UE-36798
Change 3253153 on 2017/01/10 by Dan.Oconnor
Fixed construction scripts not being loaded before instancing occurs when using new lighter compile path
Change 3253171 on 2017/01/10 by Mike.Beach
Mirrored CL 3253147.
Properly fills out FPropertyChangedEvent's MemberProperty field, for the property editor's NotifyHook. As its comment implies, "MemberProperty" is meant to represent the outermost property (in scenarios, like with nested struct properties). It was not working this way, and was instead set to the same nested property.
Change 3253220 on 2017/01/10 by Dan.Oconnor
These pins should infer together
#jira UE-40427
Change 3253223 on 2017/01/10 by Phillip.Kavan
[UE-35050] Fix a crash that occurs on an attempt to rename the category of an implemented interface function inherited from a native parent class in the My Blueprint panel.
change summary:
- modified FBlueprintEditorUtils::FindFunctionInImplementedInterfaces() to accept an additional input parameter so that callers can opt-in to searching all inherited interface classes
- modified SMyBlueprint::CanRequestRenameOnActionNode() to prevent rename on implemented interface functions inherited from a native parent class
#jira UE-35050
Change 3253259 on 2017/01/10 by Dan.Oconnor
Quick cleanup, this stuff is in progress
Change 3253983 on 2017/01/11 by Phillip.Kavan
[UE-35629] Disable external curve asset creation when editing a local variable's default value in a Blueprint graph.
change summary:
- modified FCurveStructCustomization::CustomizeChildren() to set the "create" button visibility to "collapsed" when the Owner is NULL (as the default asset path is inferred from the Owner's package).
#jira UE-35629
Change 3254024 on 2017/01/11 by Phillip.Kavan
[UE-40131] Non-native child BPs can now properly override a nativized parent BP's components in a cooked build with exclusive Blueprint class nativiation.
change summary:
- added UBlueprintGeneratedClass::CheckAndApplyComponentTemplateOverrides()
- switched FComponentKey::OwnerClass type from UBlueprintGeneratedClass to UClass to allow the reference to be loaded when it's a nativized BP class.
- modified AActor::PostLoadSubobjects() to apply ICH template overrides to inherited component subobjects on load (only in a cooked build)
- modified AActor::PostSpawnInitialize() to also apply ICH template overrides to inherited component subobjects on new Actor spawns (only in a cooked build)
- modified FBlueprintEditorUtils::IsDataOnlyBlueprint() to additionally reject BPs that have a non-empty ICH (from Maciej)
- added UBlueprint::bHasNativizedParent to cache this as an indicator for cooked builds to allow Actor instances to avoid incurring additional overhead for this at load time in the general case
#jira UE-40131
Change 3254176 on 2017/01/11 by Mike.Beach
Mirroring CL 3245838 to unblock the Odin build. Downgrading new error to warning until we can address it in content (and fully understand why it is triggering).
#jira UE-40470
Change 3254391 on 2017/01/11 by Phillip.Kavan
[UE-40131] CIS fix (non-unity).
Change 3254442 on 2017/01/11 by Mike.Beach
Mirroring CL 3245069 (from RobM), which is described as a "temp fix".
#jira UE-40399
Change 3254599 on 2017/01/11 by Mike.Beach
Updating some of our GetRedirectPinNames() functions - making local copy of an array element instead of a reference. We're adding to the array right after, and the ref can become invalid (if the array is grown and reallocated). Came to us via UDN.
Change 3254624 on 2017/01/11 by Mike.Beach
Backing out CL 3247675, as it removed the "data-only" status from certain Blueprints that, IMO, are still considered "data-only". This would have reprecussions to editor (compile-on) load times, and affect how these Blueprints are presented to the user.
#fyi Maciej.Mroz, Phillip.Kavan
Change 3254671 on 2017/01/11 by Mike.Beach
Resolving CIS warning - USE_EVENT_DRIVEN_ASYNC_LOAD was replaced with GEventDrivenLoaderEnabled.
[CL 3255791 by Mike Beach in Main branch]
2017-01-12 14:36:04 -05:00
UBlueprintVariableNodeSpawner * SetterSpawner = UBlueprintVariableNodeSpawner : : CreateFromMemberOrParam ( UK2Node_VariableSet : : StaticClass ( ) , Property ) ;
2014-07-09 12:17:42 -04:00
ActionListOut . Add ( SetterSpawner ) ;
}
}
}
2019-09-19 15:39:36 -04:00
//------------------------------------------------------------------------------
static void BlueprintActionDatabaseImpl : : AddClassDataObjectActions ( UClass const * const Class , FActionList & ActionListOut )
{
using namespace FBlueprintNodeSpawnerFactory ; // for MakeDelegateNodeSpawner()
// loop over all the properties in the specified class; exclude-super because
// we can always get the super properties by looking up that class separately
const UStruct * SparseDataStruct = Class - > GetSparseClassDataStruct ( ) ;
const UStruct * ParentSparseDataStruct = Class - > GetSuperClass ( ) ? Class - > GetSuperClass ( ) - > GetSparseClassDataStruct ( ) : nullptr ;
if ( ParentSparseDataStruct ! = SparseDataStruct )
{
2019-12-13 11:07:03 -05:00
for ( TFieldIterator < FProperty > PropertyIt ( SparseDataStruct , EFieldIteratorFlags : : ExcludeSuper ) ; PropertyIt ; + + PropertyIt )
2019-09-19 15:39:36 -04:00
{
2019-12-13 11:07:03 -05:00
FProperty * Property = * PropertyIt ;
2019-09-19 15:39:36 -04:00
if ( ! IsPropertyBlueprintVisible ( Property ) )
{
continue ;
}
2019-10-31 17:59:47 -04:00
UClass * NonConstClass = const_cast < UClass * > ( Class ) ;
UBlueprintVariableNodeSpawner * GetterSpawner = UBlueprintVariableNodeSpawner : : CreateFromMemberOrParam ( UK2Node_VariableGet : : StaticClass ( ) , Property , nullptr , NonConstClass ) ;
2019-09-19 15:39:36 -04:00
ActionListOut . Add ( GetterSpawner ) ;
// UBlueprintVariableNodeSpawner* SetterSpawner = UBlueprintVariableNodeSpawner::CreateFromMemberOrParam(UK2Node_VariableSet::StaticClass(), Property);
// ActionListOut.Add(SetterSpawner);
}
}
}
2014-07-09 12:17:42 -04:00
//------------------------------------------------------------------------------
2014-09-30 16:54:10 -04:00
static void BlueprintActionDatabaseImpl : : AddClassCastActions ( UClass * Class , FActionList & ActionListOut )
2014-07-09 12:17:42 -04:00
{
2014-09-30 16:54:10 -04:00
Class = Class - > GetAuthoritativeClass ( ) ;
check ( Class ) ;
2014-07-09 12:17:42 -04:00
UEdGraphSchema_K2 const * K2Schema = GetDefault < UEdGraphSchema_K2 > ( ) ;
2022-06-30 11:25:52 -04:00
bool bIsCastPermitted = UEdGraphSchema_K2 : : IsAllowableBlueprintVariableType ( Class ) & & FBlueprintActionDatabase : : IsClassAllowed ( Class , FBlueprintActionDatabase : : EPermissionsContext : : Node ) ;
2014-07-09 12:17:42 -04:00
if ( bIsCastPermitted )
{
auto CustomizeCastNodeLambda = [ ] ( UEdGraphNode * NewNode , bool bIsTemplateNode , UClass * TargetType )
{
UK2Node_DynamicCast * CastNode = CastChecked < UK2Node_DynamicCast > ( NewNode ) ;
CastNode - > TargetType = TargetType ;
} ;
2014-09-19 18:20:43 -04:00
UBlueprintNodeSpawner * CastObjNodeSpawner = UBlueprintNodeSpawner : : Create < UK2Node_DynamicCast > ( ) ;
2014-07-09 12:17:42 -04:00
CastObjNodeSpawner - > CustomizeNodeDelegate = UBlueprintNodeSpawner : : FCustomizeNodeDelegate : : CreateStatic ( CustomizeCastNodeLambda , Class ) ;
ActionListOut . Add ( CastObjNodeSpawner ) ;
2014-09-19 18:20:43 -04:00
UBlueprintNodeSpawner * CastClassNodeSpawner = UBlueprintNodeSpawner : : Create < UK2Node_ClassDynamicCast > ( ) ;
2014-07-09 12:17:42 -04:00
CastClassNodeSpawner - > CustomizeNodeDelegate = CastObjNodeSpawner - > CustomizeNodeDelegate ;
ActionListOut . Add ( CastClassNodeSpawner ) ;
}
}
//------------------------------------------------------------------------------
2014-08-23 20:16:29 -04:00
static void BlueprintActionDatabaseImpl : : AddBlueprintGraphActions ( UBlueprint const * const Blueprint , FActionList & ActionListOut )
2014-07-09 12:17:42 -04:00
{
using namespace FBlueprintNodeSpawnerFactory ; // for MakeMacroNodeSpawner()
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3510040)
#lockdown Nick.Penwarden
=====================================
MAJOR FEATURES + CHANGES
=====================================
Change 3459524 by Marc.Audy
Get/Set of properties that were previously BPRW/BPRO should error when used
#jira UE-20993
Change 3460004 by Phillip.Kavan
#jira UE-45171 - Fix C++ compilation failures during packaging caused by nativizing a Blueprint that overrides a native function with a 'TSubclassOf' parameter or return value.
Change summary:
- Modified FKismetCompilerContext::CreateParametersForFunction() to pass the 'CPF_UObjectWrapper' flag through to new function parameter properties during Blueprint compilation.
Change 3461210 by Phillip.Kavan
#jira UE-44505 - Fix occasional Blueprint editor crashes that could occur while rebuilding the context menu from the action registry.
Change summary:
- Modified FBlueprintActionDatabase::FActionRegistry to use an FObjectKey as the key type. This allows us to test entries for UObject validity before rebuilding context menu items based on the action database.
- Changed FBlueprintActionInfo::CachedOwnerClass to be a TWeakObjectPtr rather than a raw UClass* since it's based on the ActionOwner, which could potentially become invalid after the OwnerClass has been cached.
- Modified FBlueprintActionDatabase::RefreshAssetActions() to exclude World assets if the WorldType is not EWorldType::Editor. This eliminates an issue with unreferenced "inactive" GC'd world objects being left in the BP action registry after cooking, at which point the keys could become invalid.
- Added FBlueprintActionDatabase::DeferredRemoveEntry() to allow for scheduling removal of entries from outside of the database if they are known to be invalid.
- Modified FBlueprintActionDatabase::Tick() to handle deferred entry removals.
- Modified FBlueprintActionMenuBuilder::RebuildActionList() to both test actions for validity before building menu items and schedule removal of invalid actions on the next tick.
Notes:
- Alternatively we could just include UObject keys in the database's AddReferencedObject impl, but that would then prevent objects from ever being GC'd if they are not explicitly removed. For most entries the action database takes the approach of explicitly removing entries via delegate when the UObject is destroyed, so I chose to use a TWeakObjectPtr instead so that any entries that may not be getting explicitly removed via delegate will now simply become invalidated if the UObject key is GC'd due to not being referenced. I also set it up to clean and remove any entries (along with any associated node spawners) that are found to be invalid the next time we open the BP editor.
Change 3461373 by Lukasz.Furman
fixed async navmesh rebuilds not kicking in for requests from navdata.bForceRebuildOnLoad
#jira UE-44231
Change 3461409 by Lukasz.Furman
fixed reenabling automatic navmesh generation in Editor Preferences
#ue4
Change 3461550 by Ben.Zeigler
#jira UE-45328 Fix local variable support for Redirectors and other save-time validation. We need to run the local variables to UProperty and back at save time
Add new flag PPF_SerializedAsImportText which is used for BP pins/default values and indicates that something has been serialized as import text and so needs to handle string asset redirectors
Change 3462625 by Zak.Middleton
#ue4 - Fix InterpToMovementComponent not setting velocity on the object it moves. Fix movement rate when substepping enabled (other related fixes to come).
github PR #3620
Change 3462796 by Dan.Oconnor
Fix for spamming BroadcastBlueprintReinstanced and for creating CDO at wrong time when compiling FrontEnd.uasset in OrionGame
#jira UE-45434
Change 3462995 by Ben.Zeigler
#jira UE-16941 Fix it so Load Asset node works with a literal value as well as a connected pin
Change 3463099 by Ben.Zeigler
#jira UE-45471 Allow abstract base classes for primary assets
Change 3464809 by Marc.Audy
Expose FVector2D / FVector2D to blueprints
#jira UE-45427
Change 3467254 by Mieszko.Zielinski
Added an AI helper BP function that supplies caller with a copy of navigation path given controller is currently following #UE4
Change 3467644 by Dan.Oconnor
Fix for cook issues in ocean when using compilation manager, one issue caused by bad dependencies list, one issue caused by lack of subobject mapping in archetype reinstancing.
#jira UE-45443, UE-45444
Change 3468176 by Dan.Oconnor
Fix dependent blueprints being marked dirty when a blueprint is compiled
Change 3468353 by Michael.Noland
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
Change 3470532 by Dan.Oconnor
Re-enable compilation manager
Change 3470572 by Dan.Oconnor
Fix for pin paramters resetting when an archetype was reinstanced
#jira UE-45619
#rnx
Change 3471949 by Mason.Seay
Adding Primary Assets for testing
Change 3472074 by Ben.Zeigler
#jira UE-45140 Convert iterative cooking to use the Asset Registry as it's only mode, remove old hash and timestamp versions. This allows deleting the entire PackageDependencyInfo module
Change the asset registry iteration to not compute a hash at all, and instead store the script package guids in it's cache.
Expose bIgnoreIniSettingsOutOfDateForIteration and bIgnoreScriptPackagesOutOfDateForIteration in cooker settings, affects rather to listen to ini/script changes when doing iterative cooking
Change 3472079 by Ben.Zeigler
With new incremental cook options, change Fortnite to never care about ini settings, but do care about code changes. This can be changed but from previous discussions we wanted to be more safe than fast here
Change 3473429 by Lukasz.Furman
changed path following update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473476 by Lukasz.Furman
changed crowd simulation path update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473663 by Ben.Zeigler
Fix it so base k2node registers framework version, this is needed for the assetptr fixup I previously added
Change 3473679 by Mason.Seay
Slight cleanup of test map and added ability to teleport across level for easy navigation
Change 3473712 by Marc.Audy
Do default value validation against the actual value of the default entry of an enum rather than the serialized empty autogenerated default value
Change 3474055 by Marc.Audy
When nodes are reconstructed any pins that were previously linked or set to non-default values that have been removed will no longer simply vanish, but instead will remain in an Orphaned state until dealt with.
#jira UE-41828
Change 3474119 by mason.seay
Tweaked Force Feedback test
Change 3474156 by Marc.Audy
Actually enable orphan pin retention
Change 3474382 by Ben.Zeigler
Class.h Header and comment cleanup. Started this because IsChildOf did not have a comment and it's usage is a bit confusing
Change 3474386 by Ben.Zeigler
Close popup window when adding asset class to audit window
Change 3474491 by Ben.Zeigler
Remove ability for Worlds to not be saved as assets, this has been the default since 2014.
Change 3475363 by Marc.Audy
Alt-click now works with orphaned pins
#jira UE-45699
Change 3475523 by Marc.Audy
Fixup Fortnite and Paragon content for orphaned pin errors and warnings
Change 3475623 by Phillip.Kavan
#jira UE-45477 - Fix an EDL assertion on load in a nativized build with one or more Actor subobjects instanced via the EditInlineNew UI in the BP class defaults property editor.
Change summary:
- Modified FEmitDefaultValueHelper::OuterGenerate() to emit code to construct/initialize instanced subobject values that do not have the RF_DefaultSubObject flag set, and also to recursively handle nested subobjects for those values.
- Modified FEmitDefaultValueHelper::HandleInstancedSubobject() to alternatively emit a 'NewObject' assignment statement rather than a 'CreateDefaultSubobject' statement if only RF_ArchetypeObject is set on the source object value.
Change 3476008 by Dan.Oconnor
Fix for failing to preload our super class's subobjects. Effectively moving UBlueprint::ForceLoad calls earlier in loading process. This only results in data resetting to your parent's parent's default value from your parent's default value.
#jira UE-18765
Change 3476115 by Dan.Oconnor
Fix missing category information for inherited functions when using compilation manager
#jira UE-45660
#rnx
Change 3476577 by Lukasz.Furman
added early outs from navmesh layer generation when there's no walkable cells or contours to avoid allocating 0 bytes by next generation steps (behavior differs between platforms)
#ue4
Change 3476587 by Phillip.Kavan
#jira UE-45517 - Fix a regression in which dragging UMG widgets around in the designer view results in redundantly-compounded BP class properties and context menu actions.
Change summary:
- Modified SDesignerView::ClearDropPreviews() to move the widget that was removed from the tree into the transient package. This ensures that FWidgetBlueprintCompiler::CreateClassVariablesFromBlueprint() won't pick them up.
- Modified SDesignerView::ProcessDropAndAddWidget() to also consider any widgets not added to the 'DropPreviews' array as being transient (i.e. also move them into the transient package since they were not added to the tree).
Notes:
- The regression was introduced by the changes in CL# 3410168, and was merged to Main at CL# 3431398.
#rnx
Change 3476723 by Dan.Oconnor
Match old behavior wrt updating implemented interfaces in blueprints - this logic from FKismetEditorUtilities::CompileBlueprint was missing in compilation manager
#jira UE-45468
#rnx
Change 3476948 by Michael.Noland
Framework: Changed AActor::FindComponentByClass (and AActor::GetComponentByClass by extension) to return nullptr when passed a nullptr class, rather than crashing
Change 3476970 by Ben.Zeigler
Fix bug I introduced in 4.16 where assigning assets to multiple chunks did not work properly
Change 3477536 by Marc.Audy
Don't display default value box on linked orphaned input pins
Change 3477835 by Marc.Audy
Fix pins orphaned by deletion of an entry in a user-defined enum disappearing instead of remaining connected
#jira UE-45754
Change 3478027 by Marc.Audy
Minor performance optimization
#rnx
Change 3478198 by Phillip.Kavan
#jira UE-42431 - Remove an unnecessary ensure() when pasting an event node.
Change summary:
- Modified UEdGraphSchema_K2::CreateSubstituteNode() to no longer ensure() that we have a valid PreExistingNode; it's only used for logging when a substitute node is created in response to a conflict with an existing node.
Change 3478485 by Marc.Audy
Eliminate extraneous error messages about orphaned pins on get/set nodes
#jira UE-45749
#rnx
Change 3478756 by Marc.Audy
Fix fallout from changes to DoesDefaultValueMatchAutogenerated for user defined enums
#jira UE-45721
#rnx
Change 3478926 by Marc.Audy
Non-blueprint type structs can no longer be made/broken
Non-blueprint visible properties in structs will no longer have pins created for them
#jira UE-43122
Change 3478988 by Marc.Audy
DeltaTime for a tick function with a tick interval is now correct after disabling and then reenabling the tick function.
#jira UE-45524
Change 3479818 by Marc.Audy
Allow ctrl-drag off of orphan pins
#jira UE-45803
Change 3480214 by Marc.Audy
Modifications to user defined enumerations are now transacted
#jira UE-43866
Change 3480579 by Marc.Audy
Maintain all pin properties through transactions.
#rn Reference pins that are removed and then restored via undo now correctly have the diamond icon instead of the standard circle.
Change 3481043 by Marc.Audy
Make/Break of structs does not depend on having blueprint exposed properties.
Splitting of a struct pin still requires blueprint exposed properties.
#jira UE-45840
#jira UE-45831
Change 3481271 by Ben.Zeigler
Fix the AssetManager chunking code to use ChunkDependencyInfo instead of a hardcoded check for chunk 0
Clean up ChunkDependencyInfo and make it properly public
Move ShouldSetManager to be WITH_EDITOR
Ported from WEX branch
#RB peter.sauerbrei
Change 3481373 by Dan.Oconnor
Reduce reliance on expensive FindDelegateSignature. 3275922 made warnings about a ambiguous search more likely as it preserved names of members on the REINST_ classes
#jira UE-45704
Change 3481380 by Ben.Zeigler
Change it so Struct and Object AssetRegistrySearchable properties do not show up in content browser, they are not helpful
Change 3482362 by Marc.Audy
Fix properties not exposed to blueprint warnings for input properties on function graphs.
#jira UE-45824
Change 3482406 by Ben.Zeigler
#jira UE-45883 Fix Switch On Gameplay Tag Container node, and add switch nodes to TagCheck map
Change 3482498 by Ben.Zeigler
Attempt to fix hot reload issues with Asset Manager. We need to reset and re-acquire the asset classes when rescanning, as they may be pointing to the replaced class
Change 3482517 by Lukasz.Furman
fixed smart navlink update functions removing important flag
#jira UE-45875
Change 3482538 by Marc.Audy
When comparing float, vector, and rotator values for whether the the default matches the autogenerated do not use the string compare because differences in use of decimal or number of 0s after decimal are then considered not the same float
#jira UE-45846
Change 3482773 by Marc.Audy
Don't show default value or pass by reference for exec pins
#jira UE-45868
Change 3482791 by Ben.Zeigler
#jira UE-45800 Correctly dirty game mode blueprint when changing player controller/etc classes from game mode customization
Fix it so MarkBlueprintAsStructurallyModified calls MarkBlueprintAsModified as several fixes were only in the second function
Change 3483131 by Zak.Middleton
#ue4 - InterpToMovementComponent:
- Fix velocity not zeroed when interpolation stops.
- Various fixes when calculating velocity and time when substepping is enabled.
- Improve accuracy of interpolation when looping and there is time remaining after the loop event is hit. Consume the remainder of the time after the event back in the loop (similar to handling a blocking impact).
#jira UE-45690
Change 3483146 by Phillip.Kavan
#jira UE-38358 - Propagate 'const' function flag from interface Blueprint to implementing Blueprints.
Change summary:
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() to call SkeletalRecompileChildren() on dependent BPs when the target is an interface BP.
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified::FRefreshHelper::SkeletalRecompileChildren() to set child BP status to BS_Dirty after compiling.
- Modified ConformInterfaceByName() (FBlueprintEditorUtils) to use the interface's skeleton class for function iteration as well as to match the Function Entry node's 'const' setting to the interface UFunction's signature.
Change 3483340 by Ben.Zeigler
Fix issue querying asset registry after a hot reload, make sure pending kill objects are never considered to be Assets
Change 3483548 by Michael.Noland
Epic Friday: Playing around with some prototype traps
Change 3483700 by Phillip.Kavan
Fix CIS cook crash introduced by last submit.
#rnx
Change 3485217 by Ben.Zeigler
#jira UE-45519 Fix regression introduced in 4.16 where it would no longer cook all maps when no explicit maps were specified in ini or game callback. Moved the code that detects changes before culture/default map code and hardened it to deal with the case where some engine packages were already in the list before it entered the function
Change 3485367 by Dan.Oconnor
Avoid adding mappings to anim node when creating variables on the skeleton class and using the compilation manager
#jira UE-45756
Change 3485565 by Ben.Zeigler
#jira UE-45948 Fix compilation manager to properly reset variable default values after promoting a pin to local variable
Change 3485566 by Marc.Audy
Fix crashes caused by undo/redo of user defined struct changes
#jira UE-45775
#jira UE-45781
Change 3485805 by Michael.Noland
PR #3459: Fix for world origin shifting and SpringArmComponent location lag (Contributed by michail-nikolaev)
#jira UE-43747
Change 3485807 by Michael.Noland
PR #3485: Added additional textures field to paper 2d tileset class (Contributed by gryphonmyers)
#jira UE-44041
Change 3485811 by Michael.Noland
Framework: Fixed a bug in FStreamLevelAction::MakeSafeLevelName to avoid appending the PIE prefix multiple times (fixes functions like Unload Streaming Level when passed a full package name from an instanced streaming level)
Change 3485829 by Michael.Noland
Framework: Made GetWorldAssetPackageFName BlueprintCallable so instanced levels can be unloaded
Change 3485830 by Michael.Noland
PR #3568: add API declarations to ALevelStreamingVolume methods (Contributed by kayama-shift)
#jira UE-45002
Change 3486039 by Michael.Noland
PR #3495: UE-44014: Refreshing node error fixes (Contributed by projectgheist)
- Empty out the ErrorMsg when a node gets refreshed to prevent the same error messages from compounding
- Added support for split pins in UK2Node_Event::IsFunctionEntryCompatible
- Added a missing check for the delegate pin name on the entry node part of UK2Node_Event::IsFunctionEntryCompatible
#jira UE-44014
Change 3486093 by Michael.Noland
PR #3379: Added GAMEPLAYABILITIES_API to all Ability Tasks. (Contributed by ryanjon2040)
#jira UE-42903
Change 3486139 by Michael.Noland
Blueprints: Added new config options for execution wire thickness when not debugging (DefaultExecutionWireThickness) and data wire thicknesses (DefaultDataWireThickness) to the Graph Editor Settings page
#rn
Change 3486154 by Michael.Noland
Framework: Speculative fix for CIS error about FStructOnScope
#rnx
Change 3486180 by Dan.Oconnor
Better match old logic for determining when to skip data only compile
#jira UE-45830
Change 3487276 by Marc.Audy
Fix crash when using Setter with a locally scoped variable
#rnx
Change 3487278 by Marc.Audy
Ensure that pin change notifications occur on all pin breaks unless it is part of a node being garbage collected
Change 3487658 by Marc.Audy
Ensure that child actor template is created for subclasses
#jira UE-45985
Change 3487699 by Marc.Audy
Move non-templated elements out of FArchiveReplaceObjectRef and put them in FArchiveReplaceObjectRefBase
Change 3487813 by Dan.Oconnor
Asset demonstrating a crash
Change 3488101 by Marc.Audy
Fix crash with spawn/construct actor/object from class nodes when they no longer had any pins.
Correctly orphan pins when a node goes to 0 pins.
Change 3488337 by Marc.Audy
Editable pin base should not manually remove pin and let reconstruct node and rewire pins do their job
#jira UE-46020
Change 3488512 by Dan.Oconnor
ConstructObject nodes and SubInstances nodes use skeleton class when compilation manager can provide it
#jira UE-45830, UE-45965
#rnx
Change 3488631 by Michael.Noland
Framework: Fixed a crash when loading a blueprint with a parent class of ALevelBounds caused by trying to register the class default object with a non-existent level
#jira UE-45630
Change 3488665 by Michael.Noland
Blueprints: Improve the details panel customization for optional pin nodes like Struct Member Get/Set
- The category, raw name, and tooltip of the property are now included as part of the filter text as well
- The property tooltip is now displayed when hovering over the property name
- Code updated to use GET_MEMBER_NAME_CHECKED() where appropriate
Change 3489324 by Marc.Audy
Fix recursion causing stack crash
#jira UE-46038
#rnx
Change 3489326 by Marc.Audy
Fix cooking crash
#jira UE-46031
#rnx
Change 3489687 by mason.seay
Assets for testing orphan pins
Change 3489701 by Marc.Audy
Back out changelist 3487278 and 3489443 and make targetted changes for fixing up orphan pin cases where changing connections doesn't remove the pin.
#jira UE-46051
#jira UE-46052
#rnx
Change 3490352 by Dan.Oconnor
Fix for missing WidgetTree on Skeleton class - just look directly at the WidgetBlueprint
#jira UE-46062
Change 3490814 by Marc.Audy
Make callfunction/macro instances save all pins in orphan state more similar to previous behavior
#rnx
Change 3491022 by Dan.Oconnor
Properly clean up 'Key' property when we fail to create a value property
#jira UE-45279
Change 3491071 by Ben.Zeigler
#jira UE-45981 Fix rotation issues, vector/rotator pins with empty strings were not matching due to uninitialized memory.
Change 3491244 by Michael.Noland
Blueprints: Add compile time message back to the output log (will not auto-open the output log if there were no warnings/errors)
#jira UE-32948
Change 3491276 by Michael.Noland
Blueprints: Fixed some bugs where a newly added item would fail show up in the "My Blueprints" tree if there was a filter active (e.g., when promoting a variable)
- Centralized the logic for clearing the filter so it happens when we try and fail to select the item, rather than ad hoc in various other places
- Made it only clear the filter if necessary, rather than (almost) always clearing it when adding an item
#jira UE-43372
Change 3491562 by Marc.Audy
Put back pin removal in to editable pin base and instead modify the pin destroy implementation to take down child split pins with it
#jira UE-46020
#rnx
Change 3491658 by Marc.Audy
Unify RemoveUserDefinedPin implementations. Use version that has break to avoid size change assert
#rnx
Change 3491946 by Marc.Audy
ReconstructSinglePin no longer destroys OldPin (avoids oprhaned sub pins being destroyed before reparented)
RewireOldPinsToNewPins now destroys OldPins at the end (calling code no longer reponsible)
DestroyImpl now prunes out SubPins that had already been trashed
#rnx
Change 3492040 by Marc.Audy
Discard exec/then pins from a callfunction that has been converted to a pure node
#rnx
Change 3492200 by Zak.Middleton
#ue4 - Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size.
Fixes possible regression from CL 3359561 that removed the Reset(...) entirely.
#jira UE-46012
Change 3492290 by Ben.Zeigler
#jira UE-46108 Fix StringLibrary Mid to never crash, Substring had already been fixed
Change 3492311 by Marc.Audy
Don't clear the pin type if what you're connecting to's pin type is wildcard
#rnx
Change 3492680 by Dan.Oconnor
Handle missing generated class when using compilation manager - tested by forcing compile of BP_ParentClassIsMissingType.uasset
Change 3492826 by Marc.Audy
Don't do pin connection list change notifications from DestroyPins while regenerating on load
#jira UE-46112
#rnx
Change 3492851 by Michael.Noland
Core: Fixed various crashes when using UObject::CallFunctionByNameWithArguments with non-trivial argument types by properly initializing the allocated parameters
Change 3492852 by Michael.Noland
Framework: Fixed a crash if ACharacter::FindComponentByClass was passed a nullptr class
Change 3492934 by Marc.Audy
Fix ensure and crash delete macro containing orphaned pin
#rnx
Change 3493079 by Dan.Oconnor
Fix for crash when opening ThirdPersonAnimBlueprint and ThirdPersonAnimBlueprint_Perf then clicking 'Compile' button in ThirdPersonAnimBlueprint editor. Make sure the convenience members in the derived compilers get set when we relink child classes (which requires making cdos, which requires PropagateValuesToCDO..)
#rnx
Change 3493346 by Phillip.Kavan
#jira UE-40560 - Fix a reported crash when pasting nodes between unrelated Blueprint graphs.
Change summary:
- Modified FEdGraphUtilities::PostProcessPastedNodes() to ensure() on a NULL pin entry; this will allow execution to continue while still alerting us since it is an unexpected result. Also added an 'else' case to then remove the NULL entry so that PostPasteNode() implementations don't all have to guard against NULL pin entries. When the node is reconstructed, the NULL entry will be replaced with the correct pin initialized to its default values.
- Modified UEdGraphPin::ImportTextItem() to add some additional logging to parse error cases when importing pin properties from source T3D text. Hopefully this gives us more information when this is encountered in the future.
Change 3493938 by Michael.Noland
Blueprints: Prevent issues with renaming event dispatchers to contain periods (this may be disallowed in the future, but they no longer become uneditable)
#jira UE-45780
Change 3493945 by Michael.Noland
Blueprints: Fixed GetDelegatePoperty typos
#rnx
Change 3493997 by Michael.Noland
Blueprints: Partially reverting changes from CL# 3319966 to reroute nodes, restoring their alignment but losing the symmetrical grab handle changes
#jira UE-45760
Change 3493998 by Dan.Oconnor
Fix rare crash in RefreshStandAloneDefaultsEditor when the blueprint editor is opened and a blueprint had errors in it
Note: I stumbled across this by running a unit test and then opening a blueprint in the BPE. CrashReporter indicates 3 crashes in the last 3 days
Change 3494025 by Michael.Noland
Engine: Deleted some dead code (DEBUGGING_VIEWPORT_SIZES)
#rnx
Change 3494026 by Michael.Noland
Blueprints: V0 of a BlueprintCallable/BlueprintPure function fuzzer
- Calls exposed methods with default parameters on classes it is able to spawn for now, which catches crashes due to null and /0 but not out of bounds issues or ones on classes it can't spawn due to classwithin, abstract, etc...
- Can be called using Test.ScriptFuzzing, won't be integrated into automated tests until it is more fully fleshed out and all known issues are addressed
#rnx
Change 3496382 by Ben.Zeigler
Fix ensure when launching editor with cook on the side and incremental cooking enabled. It now flushes the background asset gather when calling the sync load all assets if one is in progress
Change 3496688 by Marc.Audy
Avoid crashing in component instance data if (for some reason) the Actor's root component isn't properly set up
#jira UE-46073
Change 3496830 by Michael.Noland
Editor: Change FEditorCategoryUtils methods to take UStruct* instead of UClass*, as they are just reading metadata
#rnx
Change 3496840 by Michael.Noland
Framework: Remove the requirement for a local player in UCheatManager::CheatScript, so it can be be started from the server side (doesn't change the availability of the cheat manager, just allows things like the redundant "cheat cheatscript scriptname" to work)
Change 3497038 by Michael.Noland
Fortnite: Added UFortDeveloperSettings to allow developers to auto-run cheats in PIE (does not occur in -game or outside of WITH_EDITOR builds)
- You can specify a list of cheat commands to run when a pawn is possessed (also needs CL# 3496840 for cheatscripts)
- You can also specify a set of items to grant to your local inventory when it is created
Change 3497204 by Marc.Audy
Fix AbilitySystemComponent not being blueprint readable.
#rnx
Change 3497668 by Mieszko.Zielinski
Fixed a crash in BT editor when dealing with enum-typed Blackboard-keys pointing to enum values that have been deleted #UE4
#jira UE-43659
Change 3497677 by Mieszko.Zielinski
Added a community-suggested working solution to patching up dynamic navmesh after world offset #UE4
Also, fixed a crash related to navmesh rebuilding if generation was configured to lazily gather navigatble geometry
#jira UE-41293
Change 3497678 by Mieszko.Zielinski
Marked AbstractNavData class as transient #UE4
We never want to save it to levels
Change 3497679 by Mieszko.Zielinski
Made NavModifierVolume responsive to editor-time property changes #UE4
#jira UE-32831
Change 3497900 by Dan.Oconnor
Fix bad skel reference when using construct object from class, just limiting scope of 3491946. To reproduce the bug just nativize QA Game, including the TM-Gameplay level
#rnx
Change 3497904 by Dan.Oconnor
Use K2Node_Event::FindEventSignatureFunction in order when directly generating the skeleton generated class to get event params correct
#jira UE-46153
#rnx
Change 3497907 by Dan.Oconnor
Correctly set blueprint visibility flags on params for inherited functions when generating the skeleton class
#rnx
#jira UE-46186
Change 3498218 by mason.seay
Updates to pin testing BP's
Change 3498323 by Mieszko.Zielinski
Made UNavCollision instance assigned to StaticMesh not get re-created from scratch every single time any StaticMesh property changes #UE4
Recreation was resulting in some of the UNavCollision's properties not getting saved and the way we were recreating the nav collision could also interfere with undo buffers
#jira UE-44891
Change 3499007 by Marc.Audy
Allow systems to hook Pre and PostCompile to do custom behaviors
Change 3499013 by Mieszko.Zielinski
Made AbstractNavData class non-transient again #UE4
Implemented AbstractNavData instances' transientness in a different manner.
#jira UE-46194
Change 3499204 by Mieszko.Zielinski
Introduced CrowdManagerBase, an engine-level class that can be extended to implement custom crowd management #Orion
Extracted FRecastQueryFilter into a separate file, which will break some peoples' compilation.
#jira UE-43799
Change 3499321 by mason.seay
Updated bp for struct testing
Change 3499388 by Marc.Audy
Allow the compiler log to store off potential messages from earlier in the compile cycle (early validation), that can be committed later (for example once pruning is completed).
Change 3499390 by Marc.Audy
Generate the orphan pin error messages during EarlyValidation, but cache until the regular validation phase. This ensures all are generated, but only those that aren't pruned will be emitted.
#rnx
Change 3499420 by Michael.Noland
Engine: Introduced a new version of UEngine::GetWorldFromContextObject which takes an enum specifying the behavior on failures and updated all existing uses
The new version intentionally does not have a default value for ErrorMode, callers need to think about which variant of behavior they want:
- ReturnNull: Silently returns nullptr, the calling code is expected to handle this gracefully
- LogAndReturnNull: Raises a runtime error but still returns nullptr, the calling code is expected to handle this gracefully
- Assert: Asserts, the calling code is not expecting to handle a failure gracefully
- Deprecated UEngine::GetWorldFromContextObject(object, boolean) and changed the default behavior for the deprecated instances to do LogAndReturnNull rather than Assert, based on the real-world call pattern
- Introduced GetWorldFromContextObjectChecked(object) as a shorthand for passing in EGetWorldErrorMode::Assert
- Made UObject::GetWorldChecked() actually assert if it would return nullptr (under some cases the old function could silently return nullptr while reporting bSupported = true, so it neither ensured nor checked)
- Fixed a race condition in the 'is implemented' bookkeeping logic in GetWorld()/GetWorldChecked() by confining it to the game thread and added a check() to ImplementsGetWorld() to make it clear that it only works on the game thread
The typical recommended call pattern is to use something like:
if (UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull))
{
... Do something with World
}
Handling the failure case but requesting a log message (with BP call stack printed out) if it failed. This is now also the default behavior for old calls to UEngine::GetWorldFromContextObject(Object) (using the default value of bChecked=true), which is a behavior change but it matches how the function was being used in practice; the vast majority of call sites actually expected it to potentially fail and handled the nullptr case gracefully; very few places used the return value unguarded and wanted it to assert when passed a nullptr.
#jira UE-42458
Change 3499429 by Michael.Noland
Engine: Removed a bogus TODO (the problematic code had already been reworked)
#rnx
Change 3499470 by Michael.Noland
Core: Improved and corrected the comment for ensure()
- It doesn't crash when checking is disabled (and hasn't since UE3, maybe ever?)
- It now only fires once per ensure() by default, added a note about ensureAlways()
#rnx
Change 3499643 by Marc.Audy
Use TGuardValue instead of manually managing it
#rnx
Change 3499874 by Marc.Audy
Display <Unnamed> instead of nothing for Pins with blank display name in the compiler log
Change 3499875 by Marc.Audy
When changing function parameter types, don't orphan a pin on the function entry/exit nodes (but do at the call sites)
#jira UE-46224
Change 3499927 by Dan.Oconnor
UField::Serialize no longer serialize's its next ptr, UStruct::Serialize serializes all Children properties instead. This resolves a hard circular dependency between function libraries that EDL detected. It was resolved in an ad hoc way by the old linker
#jira UE-43458
Change 3499953 by Michael.Noland
Core: Created a variant of ensure that does runtime error logging without stopping in the debugger and some related functions that print a warning or error and may trigger a BP callstack (under the same rules as FFrame::KismetExecutionMessage)
- These are WIP and the API may change in the future, but are being used to fix various crashes found by fuzzing BP exposed functions
Change 3499957 by Michael.Noland
Animation: Added runtime errors for nullptr ControlRigs passed into BP methods
#rnx
Change 3499958 by Michael.Noland
Blueprints: Changed an ensure in UKismetNodeHelperLibrary::GetValidValue to a runtime error
#rnx
Change 3499959 by Michael.Noland
Engine: Downgrade various checks() to ensures() in the runtime asset cache functions exposed to Blueprints
Change 3499960 by Michael.Noland
AI: Changed UBTFunctionLibrary to not check/ensure if passed a null world context object
Change 3499968 by Michael.Noland
Editor: Fixed a couple of crashes in UEditorLevelUtils when passed nullptr arguments, and reformatted the entire file to fix widespread indentation issues
#rnx
Change 3499969 by Michael.Noland
Engine: Changed the verbosity of the failure log message of UEngine::GetWorldFromContextObject(..., LogAndReturnNull) from Warning to Error, so it always prints out a BP callstack
#rnx
Change 3499973 by Michael.Noland
Rendering: Fixed asserts in various UKismetRenderingLibrary methods if passed a nullptr for the WorldContextObject
- Also fixed flipped warnings in the failure cases for EndDrawCanvasToRenderTarget
Change 3499979 by Michael.Noland
Editor: Prevented a crash in UMaterialEditingLibrary::RecompileMaterial when passed a nullptr material
Change 3499984 by Michael.Noland
Physics: Prevented a crash in UTraceQueryTestResults::AssertEqual when passed in nullptr for Expected
Change 3499993 by Michael.Noland
Blueprints: Added validation when renaming variables, functions, components, multicast delegates, etc... to prevent names from containing some unacceptable characters
- This validation only kicks in when trying to rename an item, so bad names in existing content are 'grandfathered in'
- These bad names can cause bugs when working with content that contains these characters (e.g., names that contain a period cannot be found via FindObject<T>)
- Currently only . is banned, but eventually we may expand it to include all of INVALID_OBJECTNAME_CHARACTERS
Change 3500009 by Michael.Noland
Blueprints: Made the fuzzer skip classes declared in UnrealEd for now (some of the exposed methods change global state that can cause other tests to fail as the fuzzer isn't particularly sandboxed ATM)
#rnx
Change 3500011 by Michael.Noland
Android: Fixed a crash in UAndroidPermissionFunctionLibrary::AcquirePermissions when called with an empty array on non-Android platforms
Change 3500012 by Michael.Noland
Editor: Prevent a crash in UEditorTutorial::OpenAsset when passed a nullptr Asset
Change 3500014 by Michael.Noland
Engine: Changed FRuntimeAssetCacheFilesystemBackend::ClearCache(NAME_None) to not try to clear all cache directories (there is a separate no-args method for that)
Change 3500019 by Michael.Noland
Core: Fixed some more issues with CallFunctionByNameWithArguments and initializing / destroying parameters
- It was skipping the return value and incorrectly relying on the FirstPropertyToInit list which isn't set for by ref arguments
Change 3500020 by Michael.Noland
Automation: Prevent UFunctionalTestingManager::RunAllFunctionalTests and UFunctionalTestingManager* UFunctionalTestingManager::GetManager from crashing when a manager cannot be created (because we can't route to a world)
Change 3501062 by Marc.Audy
MakeArray AddInputPin is often used as part of node expansion, so need to move the transaction out of the function
Fix inability to undo/redo pin additions to sequence node
Add a K2Node_AddPinInterface to generalize the interface that K2Nodes implement to interact with SGraphNodeK2Sequence so it can be more generally used
#jira UE-46164
#jira UE-46270
Change 3501330 by Michael.Noland
AI: Fix an error on shutdown when the CDO of UAIPerceptionComponent tries to clean up (as it was never registered in the first place)
#jira UE-46271
Change 3501356 by Marc.Audy
Fix crash when multi-editing actor blueprints
#jira UE-46248
Change 3501408 by Michael.Noland
Core: Improve 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)
Change 3501457 by Phillip.Kavan
#jira UE-46054 - Fix crash when launching a packaged build that includes a nativized Blueprint instance with a ChildActorComponent instanced via an AddComponent node.
Change summary:
- Removed UK2Node_AddComponent::PostDuplicate(). This eliminates the creation of redundant component templates that were being unnecessarily created during the Blueprint duplication that precedes the nativization pass.
- Modified SMyBlueprint::OnDuplicateAction() to call MakeNewComponentTemplate() in response to a graph duplication action within the same Blueprint context (replaces previous UK2Node_AddComponent::PostDuplicate() impl).
- Modified FEmitDefaultValueHelper::HandleSpecialTypes() to force AddComponent-based CAC-owned template objects in the emitted codegen to use the UDynamicClass as the Outer when instancing. This matches what we already do for SCS-based CAC-owned template objects - that logic was added in CL# 3270456, and this matches up with FBlueprintNativeCodeGenModule::FindReplacedNameAndOuter(), where we specifically handle CAC-owned template objects.
Change 3502741 by Phillip.Kavan
#jira UE-45782 - Fix undo for index pin type changes.
Change summary:
- Modified SGraphPinIndex::OnTypeChanged() to call Modify() on the pin that was changed.
Change 3502939 by Michael.Noland
Back out changelist 3499927
Change 3503087 by Marc.Audy
Re-fixed ocean content as editor had also changed so had to take theirs and redo
#rnx
Change 3503266 by Ben.Zeigler
#jira UE-46335 Fix regression added in 4.16 where AssetRegistry GetAncesorClassNames/GetDerivedClassNames were not working properly in cooked builds for classes not in memory
Change 3503325 by mason.seay
updated Anim BP to prep for pin testing
Change 3503445 by Marc.Audy
Fix crash caused by OldPins being destroyed before rewiring
#rnx
Change 3505024 by Marc.Audy
Fix NodeEffectsPanel blueprint as it was using pins that no longer existed
#rnx
Change 3505254 by Marc.Audy
Don't include orphan pins when gather source property names
If a property doesn't exist for a source property name just skip the property rather than crashing
#jira UE-46345
#rnx
Change 3506125 by Ben.Zeigler
#jira UE-46311 Fix issues when blueprints are reloaded in place, it needs to remove them from root properly and sanitize the old class. It's still not clear why they are being reloaded in place
Change 3506334 by Dan.Oconnor
Move UAnimGraphNode_Base::PreloadRequiredAssets up to K2Node, make sure nodes get a chance to preload data before compilation manager compiles newly loaded blueprints
#jira UE-46411
Change 3506439 by Dan.Oconnor
Return to pre 3488512 behavior for construct object nodes. This means that we can still get warnings on load when users compile after saving a blueprint, but the current behavior loses default values because it's lookng at the skeleton cdo
#jira UE-46308
Change 3506468 by Dan.Oconnor
Return to pre 3488512 behavior, as it causes bad default values
#jira UE-46414
#rnx
Change 3506733 by Marc.Audy
Use the most up to date class to determine whether a property still exists when adding pins during reconstruction
#jira UE-45965
#author Dan.OConnor
#rnx
Change 3507531 by Ben.Zeigler
#jira UE-46449 Better fix to flush the asset registry queue when the editor requests a synchronous scan at startup. Sometimes it can take a few frames because of file handle delays
Change 3507924 by mason.seay
Sanity save of TM-Gameplay and sublevels to maybe resolve level streaming issues
Change 3507962 by Marc.Audy
Remake changes from CL# 3150796 wiped out by WEX-Staging merge to Main in CL# 3479958
#rnx
Change 3509131 by Dan.Oconnor
Compilation manager compile on load flow never called FindExportsInMemoryFirst, which is critical to prevent reloading of UBlueprintGeneratedClasses when Rename clears the export table
#jira UE-46311
Change 3509345 by Marc.Audy
CVar to disable orphan pins if necessary
#rnx
Change 3509959 by Marc.Audy
Protect against crashing due to large values in Timespan From functions
#jira UE-43840
Change 3510040 by Marc.Audy
Remove all the old unneeded ShooterGame test maps
#rnx
[CL 3510073 by Marc Audy in Main branch]
2017-06-26 15:07:18 -04:00
for ( UEdGraph * MacroGraph : Blueprint - > MacroGraphs )
2014-07-09 12:17:42 -04:00
{
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3510040)
#lockdown Nick.Penwarden
=====================================
MAJOR FEATURES + CHANGES
=====================================
Change 3459524 by Marc.Audy
Get/Set of properties that were previously BPRW/BPRO should error when used
#jira UE-20993
Change 3460004 by Phillip.Kavan
#jira UE-45171 - Fix C++ compilation failures during packaging caused by nativizing a Blueprint that overrides a native function with a 'TSubclassOf' parameter or return value.
Change summary:
- Modified FKismetCompilerContext::CreateParametersForFunction() to pass the 'CPF_UObjectWrapper' flag through to new function parameter properties during Blueprint compilation.
Change 3461210 by Phillip.Kavan
#jira UE-44505 - Fix occasional Blueprint editor crashes that could occur while rebuilding the context menu from the action registry.
Change summary:
- Modified FBlueprintActionDatabase::FActionRegistry to use an FObjectKey as the key type. This allows us to test entries for UObject validity before rebuilding context menu items based on the action database.
- Changed FBlueprintActionInfo::CachedOwnerClass to be a TWeakObjectPtr rather than a raw UClass* since it's based on the ActionOwner, which could potentially become invalid after the OwnerClass has been cached.
- Modified FBlueprintActionDatabase::RefreshAssetActions() to exclude World assets if the WorldType is not EWorldType::Editor. This eliminates an issue with unreferenced "inactive" GC'd world objects being left in the BP action registry after cooking, at which point the keys could become invalid.
- Added FBlueprintActionDatabase::DeferredRemoveEntry() to allow for scheduling removal of entries from outside of the database if they are known to be invalid.
- Modified FBlueprintActionDatabase::Tick() to handle deferred entry removals.
- Modified FBlueprintActionMenuBuilder::RebuildActionList() to both test actions for validity before building menu items and schedule removal of invalid actions on the next tick.
Notes:
- Alternatively we could just include UObject keys in the database's AddReferencedObject impl, but that would then prevent objects from ever being GC'd if they are not explicitly removed. For most entries the action database takes the approach of explicitly removing entries via delegate when the UObject is destroyed, so I chose to use a TWeakObjectPtr instead so that any entries that may not be getting explicitly removed via delegate will now simply become invalidated if the UObject key is GC'd due to not being referenced. I also set it up to clean and remove any entries (along with any associated node spawners) that are found to be invalid the next time we open the BP editor.
Change 3461373 by Lukasz.Furman
fixed async navmesh rebuilds not kicking in for requests from navdata.bForceRebuildOnLoad
#jira UE-44231
Change 3461409 by Lukasz.Furman
fixed reenabling automatic navmesh generation in Editor Preferences
#ue4
Change 3461550 by Ben.Zeigler
#jira UE-45328 Fix local variable support for Redirectors and other save-time validation. We need to run the local variables to UProperty and back at save time
Add new flag PPF_SerializedAsImportText which is used for BP pins/default values and indicates that something has been serialized as import text and so needs to handle string asset redirectors
Change 3462625 by Zak.Middleton
#ue4 - Fix InterpToMovementComponent not setting velocity on the object it moves. Fix movement rate when substepping enabled (other related fixes to come).
github PR #3620
Change 3462796 by Dan.Oconnor
Fix for spamming BroadcastBlueprintReinstanced and for creating CDO at wrong time when compiling FrontEnd.uasset in OrionGame
#jira UE-45434
Change 3462995 by Ben.Zeigler
#jira UE-16941 Fix it so Load Asset node works with a literal value as well as a connected pin
Change 3463099 by Ben.Zeigler
#jira UE-45471 Allow abstract base classes for primary assets
Change 3464809 by Marc.Audy
Expose FVector2D / FVector2D to blueprints
#jira UE-45427
Change 3467254 by Mieszko.Zielinski
Added an AI helper BP function that supplies caller with a copy of navigation path given controller is currently following #UE4
Change 3467644 by Dan.Oconnor
Fix for cook issues in ocean when using compilation manager, one issue caused by bad dependencies list, one issue caused by lack of subobject mapping in archetype reinstancing.
#jira UE-45443, UE-45444
Change 3468176 by Dan.Oconnor
Fix dependent blueprints being marked dirty when a blueprint is compiled
Change 3468353 by Michael.Noland
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
Change 3470532 by Dan.Oconnor
Re-enable compilation manager
Change 3470572 by Dan.Oconnor
Fix for pin paramters resetting when an archetype was reinstanced
#jira UE-45619
#rnx
Change 3471949 by Mason.Seay
Adding Primary Assets for testing
Change 3472074 by Ben.Zeigler
#jira UE-45140 Convert iterative cooking to use the Asset Registry as it's only mode, remove old hash and timestamp versions. This allows deleting the entire PackageDependencyInfo module
Change the asset registry iteration to not compute a hash at all, and instead store the script package guids in it's cache.
Expose bIgnoreIniSettingsOutOfDateForIteration and bIgnoreScriptPackagesOutOfDateForIteration in cooker settings, affects rather to listen to ini/script changes when doing iterative cooking
Change 3472079 by Ben.Zeigler
With new incremental cook options, change Fortnite to never care about ini settings, but do care about code changes. This can be changed but from previous discussions we wanted to be more safe than fast here
Change 3473429 by Lukasz.Furman
changed path following update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473476 by Lukasz.Furman
changed crowd simulation path update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473663 by Ben.Zeigler
Fix it so base k2node registers framework version, this is needed for the assetptr fixup I previously added
Change 3473679 by Mason.Seay
Slight cleanup of test map and added ability to teleport across level for easy navigation
Change 3473712 by Marc.Audy
Do default value validation against the actual value of the default entry of an enum rather than the serialized empty autogenerated default value
Change 3474055 by Marc.Audy
When nodes are reconstructed any pins that were previously linked or set to non-default values that have been removed will no longer simply vanish, but instead will remain in an Orphaned state until dealt with.
#jira UE-41828
Change 3474119 by mason.seay
Tweaked Force Feedback test
Change 3474156 by Marc.Audy
Actually enable orphan pin retention
Change 3474382 by Ben.Zeigler
Class.h Header and comment cleanup. Started this because IsChildOf did not have a comment and it's usage is a bit confusing
Change 3474386 by Ben.Zeigler
Close popup window when adding asset class to audit window
Change 3474491 by Ben.Zeigler
Remove ability for Worlds to not be saved as assets, this has been the default since 2014.
Change 3475363 by Marc.Audy
Alt-click now works with orphaned pins
#jira UE-45699
Change 3475523 by Marc.Audy
Fixup Fortnite and Paragon content for orphaned pin errors and warnings
Change 3475623 by Phillip.Kavan
#jira UE-45477 - Fix an EDL assertion on load in a nativized build with one or more Actor subobjects instanced via the EditInlineNew UI in the BP class defaults property editor.
Change summary:
- Modified FEmitDefaultValueHelper::OuterGenerate() to emit code to construct/initialize instanced subobject values that do not have the RF_DefaultSubObject flag set, and also to recursively handle nested subobjects for those values.
- Modified FEmitDefaultValueHelper::HandleInstancedSubobject() to alternatively emit a 'NewObject' assignment statement rather than a 'CreateDefaultSubobject' statement if only RF_ArchetypeObject is set on the source object value.
Change 3476008 by Dan.Oconnor
Fix for failing to preload our super class's subobjects. Effectively moving UBlueprint::ForceLoad calls earlier in loading process. This only results in data resetting to your parent's parent's default value from your parent's default value.
#jira UE-18765
Change 3476115 by Dan.Oconnor
Fix missing category information for inherited functions when using compilation manager
#jira UE-45660
#rnx
Change 3476577 by Lukasz.Furman
added early outs from navmesh layer generation when there's no walkable cells or contours to avoid allocating 0 bytes by next generation steps (behavior differs between platforms)
#ue4
Change 3476587 by Phillip.Kavan
#jira UE-45517 - Fix a regression in which dragging UMG widgets around in the designer view results in redundantly-compounded BP class properties and context menu actions.
Change summary:
- Modified SDesignerView::ClearDropPreviews() to move the widget that was removed from the tree into the transient package. This ensures that FWidgetBlueprintCompiler::CreateClassVariablesFromBlueprint() won't pick them up.
- Modified SDesignerView::ProcessDropAndAddWidget() to also consider any widgets not added to the 'DropPreviews' array as being transient (i.e. also move them into the transient package since they were not added to the tree).
Notes:
- The regression was introduced by the changes in CL# 3410168, and was merged to Main at CL# 3431398.
#rnx
Change 3476723 by Dan.Oconnor
Match old behavior wrt updating implemented interfaces in blueprints - this logic from FKismetEditorUtilities::CompileBlueprint was missing in compilation manager
#jira UE-45468
#rnx
Change 3476948 by Michael.Noland
Framework: Changed AActor::FindComponentByClass (and AActor::GetComponentByClass by extension) to return nullptr when passed a nullptr class, rather than crashing
Change 3476970 by Ben.Zeigler
Fix bug I introduced in 4.16 where assigning assets to multiple chunks did not work properly
Change 3477536 by Marc.Audy
Don't display default value box on linked orphaned input pins
Change 3477835 by Marc.Audy
Fix pins orphaned by deletion of an entry in a user-defined enum disappearing instead of remaining connected
#jira UE-45754
Change 3478027 by Marc.Audy
Minor performance optimization
#rnx
Change 3478198 by Phillip.Kavan
#jira UE-42431 - Remove an unnecessary ensure() when pasting an event node.
Change summary:
- Modified UEdGraphSchema_K2::CreateSubstituteNode() to no longer ensure() that we have a valid PreExistingNode; it's only used for logging when a substitute node is created in response to a conflict with an existing node.
Change 3478485 by Marc.Audy
Eliminate extraneous error messages about orphaned pins on get/set nodes
#jira UE-45749
#rnx
Change 3478756 by Marc.Audy
Fix fallout from changes to DoesDefaultValueMatchAutogenerated for user defined enums
#jira UE-45721
#rnx
Change 3478926 by Marc.Audy
Non-blueprint type structs can no longer be made/broken
Non-blueprint visible properties in structs will no longer have pins created for them
#jira UE-43122
Change 3478988 by Marc.Audy
DeltaTime for a tick function with a tick interval is now correct after disabling and then reenabling the tick function.
#jira UE-45524
Change 3479818 by Marc.Audy
Allow ctrl-drag off of orphan pins
#jira UE-45803
Change 3480214 by Marc.Audy
Modifications to user defined enumerations are now transacted
#jira UE-43866
Change 3480579 by Marc.Audy
Maintain all pin properties through transactions.
#rn Reference pins that are removed and then restored via undo now correctly have the diamond icon instead of the standard circle.
Change 3481043 by Marc.Audy
Make/Break of structs does not depend on having blueprint exposed properties.
Splitting of a struct pin still requires blueprint exposed properties.
#jira UE-45840
#jira UE-45831
Change 3481271 by Ben.Zeigler
Fix the AssetManager chunking code to use ChunkDependencyInfo instead of a hardcoded check for chunk 0
Clean up ChunkDependencyInfo and make it properly public
Move ShouldSetManager to be WITH_EDITOR
Ported from WEX branch
#RB peter.sauerbrei
Change 3481373 by Dan.Oconnor
Reduce reliance on expensive FindDelegateSignature. 3275922 made warnings about a ambiguous search more likely as it preserved names of members on the REINST_ classes
#jira UE-45704
Change 3481380 by Ben.Zeigler
Change it so Struct and Object AssetRegistrySearchable properties do not show up in content browser, they are not helpful
Change 3482362 by Marc.Audy
Fix properties not exposed to blueprint warnings for input properties on function graphs.
#jira UE-45824
Change 3482406 by Ben.Zeigler
#jira UE-45883 Fix Switch On Gameplay Tag Container node, and add switch nodes to TagCheck map
Change 3482498 by Ben.Zeigler
Attempt to fix hot reload issues with Asset Manager. We need to reset and re-acquire the asset classes when rescanning, as they may be pointing to the replaced class
Change 3482517 by Lukasz.Furman
fixed smart navlink update functions removing important flag
#jira UE-45875
Change 3482538 by Marc.Audy
When comparing float, vector, and rotator values for whether the the default matches the autogenerated do not use the string compare because differences in use of decimal or number of 0s after decimal are then considered not the same float
#jira UE-45846
Change 3482773 by Marc.Audy
Don't show default value or pass by reference for exec pins
#jira UE-45868
Change 3482791 by Ben.Zeigler
#jira UE-45800 Correctly dirty game mode blueprint when changing player controller/etc classes from game mode customization
Fix it so MarkBlueprintAsStructurallyModified calls MarkBlueprintAsModified as several fixes were only in the second function
Change 3483131 by Zak.Middleton
#ue4 - InterpToMovementComponent:
- Fix velocity not zeroed when interpolation stops.
- Various fixes when calculating velocity and time when substepping is enabled.
- Improve accuracy of interpolation when looping and there is time remaining after the loop event is hit. Consume the remainder of the time after the event back in the loop (similar to handling a blocking impact).
#jira UE-45690
Change 3483146 by Phillip.Kavan
#jira UE-38358 - Propagate 'const' function flag from interface Blueprint to implementing Blueprints.
Change summary:
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() to call SkeletalRecompileChildren() on dependent BPs when the target is an interface BP.
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified::FRefreshHelper::SkeletalRecompileChildren() to set child BP status to BS_Dirty after compiling.
- Modified ConformInterfaceByName() (FBlueprintEditorUtils) to use the interface's skeleton class for function iteration as well as to match the Function Entry node's 'const' setting to the interface UFunction's signature.
Change 3483340 by Ben.Zeigler
Fix issue querying asset registry after a hot reload, make sure pending kill objects are never considered to be Assets
Change 3483548 by Michael.Noland
Epic Friday: Playing around with some prototype traps
Change 3483700 by Phillip.Kavan
Fix CIS cook crash introduced by last submit.
#rnx
Change 3485217 by Ben.Zeigler
#jira UE-45519 Fix regression introduced in 4.16 where it would no longer cook all maps when no explicit maps were specified in ini or game callback. Moved the code that detects changes before culture/default map code and hardened it to deal with the case where some engine packages were already in the list before it entered the function
Change 3485367 by Dan.Oconnor
Avoid adding mappings to anim node when creating variables on the skeleton class and using the compilation manager
#jira UE-45756
Change 3485565 by Ben.Zeigler
#jira UE-45948 Fix compilation manager to properly reset variable default values after promoting a pin to local variable
Change 3485566 by Marc.Audy
Fix crashes caused by undo/redo of user defined struct changes
#jira UE-45775
#jira UE-45781
Change 3485805 by Michael.Noland
PR #3459: Fix for world origin shifting and SpringArmComponent location lag (Contributed by michail-nikolaev)
#jira UE-43747
Change 3485807 by Michael.Noland
PR #3485: Added additional textures field to paper 2d tileset class (Contributed by gryphonmyers)
#jira UE-44041
Change 3485811 by Michael.Noland
Framework: Fixed a bug in FStreamLevelAction::MakeSafeLevelName to avoid appending the PIE prefix multiple times (fixes functions like Unload Streaming Level when passed a full package name from an instanced streaming level)
Change 3485829 by Michael.Noland
Framework: Made GetWorldAssetPackageFName BlueprintCallable so instanced levels can be unloaded
Change 3485830 by Michael.Noland
PR #3568: add API declarations to ALevelStreamingVolume methods (Contributed by kayama-shift)
#jira UE-45002
Change 3486039 by Michael.Noland
PR #3495: UE-44014: Refreshing node error fixes (Contributed by projectgheist)
- Empty out the ErrorMsg when a node gets refreshed to prevent the same error messages from compounding
- Added support for split pins in UK2Node_Event::IsFunctionEntryCompatible
- Added a missing check for the delegate pin name on the entry node part of UK2Node_Event::IsFunctionEntryCompatible
#jira UE-44014
Change 3486093 by Michael.Noland
PR #3379: Added GAMEPLAYABILITIES_API to all Ability Tasks. (Contributed by ryanjon2040)
#jira UE-42903
Change 3486139 by Michael.Noland
Blueprints: Added new config options for execution wire thickness when not debugging (DefaultExecutionWireThickness) and data wire thicknesses (DefaultDataWireThickness) to the Graph Editor Settings page
#rn
Change 3486154 by Michael.Noland
Framework: Speculative fix for CIS error about FStructOnScope
#rnx
Change 3486180 by Dan.Oconnor
Better match old logic for determining when to skip data only compile
#jira UE-45830
Change 3487276 by Marc.Audy
Fix crash when using Setter with a locally scoped variable
#rnx
Change 3487278 by Marc.Audy
Ensure that pin change notifications occur on all pin breaks unless it is part of a node being garbage collected
Change 3487658 by Marc.Audy
Ensure that child actor template is created for subclasses
#jira UE-45985
Change 3487699 by Marc.Audy
Move non-templated elements out of FArchiveReplaceObjectRef and put them in FArchiveReplaceObjectRefBase
Change 3487813 by Dan.Oconnor
Asset demonstrating a crash
Change 3488101 by Marc.Audy
Fix crash with spawn/construct actor/object from class nodes when they no longer had any pins.
Correctly orphan pins when a node goes to 0 pins.
Change 3488337 by Marc.Audy
Editable pin base should not manually remove pin and let reconstruct node and rewire pins do their job
#jira UE-46020
Change 3488512 by Dan.Oconnor
ConstructObject nodes and SubInstances nodes use skeleton class when compilation manager can provide it
#jira UE-45830, UE-45965
#rnx
Change 3488631 by Michael.Noland
Framework: Fixed a crash when loading a blueprint with a parent class of ALevelBounds caused by trying to register the class default object with a non-existent level
#jira UE-45630
Change 3488665 by Michael.Noland
Blueprints: Improve the details panel customization for optional pin nodes like Struct Member Get/Set
- The category, raw name, and tooltip of the property are now included as part of the filter text as well
- The property tooltip is now displayed when hovering over the property name
- Code updated to use GET_MEMBER_NAME_CHECKED() where appropriate
Change 3489324 by Marc.Audy
Fix recursion causing stack crash
#jira UE-46038
#rnx
Change 3489326 by Marc.Audy
Fix cooking crash
#jira UE-46031
#rnx
Change 3489687 by mason.seay
Assets for testing orphan pins
Change 3489701 by Marc.Audy
Back out changelist 3487278 and 3489443 and make targetted changes for fixing up orphan pin cases where changing connections doesn't remove the pin.
#jira UE-46051
#jira UE-46052
#rnx
Change 3490352 by Dan.Oconnor
Fix for missing WidgetTree on Skeleton class - just look directly at the WidgetBlueprint
#jira UE-46062
Change 3490814 by Marc.Audy
Make callfunction/macro instances save all pins in orphan state more similar to previous behavior
#rnx
Change 3491022 by Dan.Oconnor
Properly clean up 'Key' property when we fail to create a value property
#jira UE-45279
Change 3491071 by Ben.Zeigler
#jira UE-45981 Fix rotation issues, vector/rotator pins with empty strings were not matching due to uninitialized memory.
Change 3491244 by Michael.Noland
Blueprints: Add compile time message back to the output log (will not auto-open the output log if there were no warnings/errors)
#jira UE-32948
Change 3491276 by Michael.Noland
Blueprints: Fixed some bugs where a newly added item would fail show up in the "My Blueprints" tree if there was a filter active (e.g., when promoting a variable)
- Centralized the logic for clearing the filter so it happens when we try and fail to select the item, rather than ad hoc in various other places
- Made it only clear the filter if necessary, rather than (almost) always clearing it when adding an item
#jira UE-43372
Change 3491562 by Marc.Audy
Put back pin removal in to editable pin base and instead modify the pin destroy implementation to take down child split pins with it
#jira UE-46020
#rnx
Change 3491658 by Marc.Audy
Unify RemoveUserDefinedPin implementations. Use version that has break to avoid size change assert
#rnx
Change 3491946 by Marc.Audy
ReconstructSinglePin no longer destroys OldPin (avoids oprhaned sub pins being destroyed before reparented)
RewireOldPinsToNewPins now destroys OldPins at the end (calling code no longer reponsible)
DestroyImpl now prunes out SubPins that had already been trashed
#rnx
Change 3492040 by Marc.Audy
Discard exec/then pins from a callfunction that has been converted to a pure node
#rnx
Change 3492200 by Zak.Middleton
#ue4 - Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size.
Fixes possible regression from CL 3359561 that removed the Reset(...) entirely.
#jira UE-46012
Change 3492290 by Ben.Zeigler
#jira UE-46108 Fix StringLibrary Mid to never crash, Substring had already been fixed
Change 3492311 by Marc.Audy
Don't clear the pin type if what you're connecting to's pin type is wildcard
#rnx
Change 3492680 by Dan.Oconnor
Handle missing generated class when using compilation manager - tested by forcing compile of BP_ParentClassIsMissingType.uasset
Change 3492826 by Marc.Audy
Don't do pin connection list change notifications from DestroyPins while regenerating on load
#jira UE-46112
#rnx
Change 3492851 by Michael.Noland
Core: Fixed various crashes when using UObject::CallFunctionByNameWithArguments with non-trivial argument types by properly initializing the allocated parameters
Change 3492852 by Michael.Noland
Framework: Fixed a crash if ACharacter::FindComponentByClass was passed a nullptr class
Change 3492934 by Marc.Audy
Fix ensure and crash delete macro containing orphaned pin
#rnx
Change 3493079 by Dan.Oconnor
Fix for crash when opening ThirdPersonAnimBlueprint and ThirdPersonAnimBlueprint_Perf then clicking 'Compile' button in ThirdPersonAnimBlueprint editor. Make sure the convenience members in the derived compilers get set when we relink child classes (which requires making cdos, which requires PropagateValuesToCDO..)
#rnx
Change 3493346 by Phillip.Kavan
#jira UE-40560 - Fix a reported crash when pasting nodes between unrelated Blueprint graphs.
Change summary:
- Modified FEdGraphUtilities::PostProcessPastedNodes() to ensure() on a NULL pin entry; this will allow execution to continue while still alerting us since it is an unexpected result. Also added an 'else' case to then remove the NULL entry so that PostPasteNode() implementations don't all have to guard against NULL pin entries. When the node is reconstructed, the NULL entry will be replaced with the correct pin initialized to its default values.
- Modified UEdGraphPin::ImportTextItem() to add some additional logging to parse error cases when importing pin properties from source T3D text. Hopefully this gives us more information when this is encountered in the future.
Change 3493938 by Michael.Noland
Blueprints: Prevent issues with renaming event dispatchers to contain periods (this may be disallowed in the future, but they no longer become uneditable)
#jira UE-45780
Change 3493945 by Michael.Noland
Blueprints: Fixed GetDelegatePoperty typos
#rnx
Change 3493997 by Michael.Noland
Blueprints: Partially reverting changes from CL# 3319966 to reroute nodes, restoring their alignment but losing the symmetrical grab handle changes
#jira UE-45760
Change 3493998 by Dan.Oconnor
Fix rare crash in RefreshStandAloneDefaultsEditor when the blueprint editor is opened and a blueprint had errors in it
Note: I stumbled across this by running a unit test and then opening a blueprint in the BPE. CrashReporter indicates 3 crashes in the last 3 days
Change 3494025 by Michael.Noland
Engine: Deleted some dead code (DEBUGGING_VIEWPORT_SIZES)
#rnx
Change 3494026 by Michael.Noland
Blueprints: V0 of a BlueprintCallable/BlueprintPure function fuzzer
- Calls exposed methods with default parameters on classes it is able to spawn for now, which catches crashes due to null and /0 but not out of bounds issues or ones on classes it can't spawn due to classwithin, abstract, etc...
- Can be called using Test.ScriptFuzzing, won't be integrated into automated tests until it is more fully fleshed out and all known issues are addressed
#rnx
Change 3496382 by Ben.Zeigler
Fix ensure when launching editor with cook on the side and incremental cooking enabled. It now flushes the background asset gather when calling the sync load all assets if one is in progress
Change 3496688 by Marc.Audy
Avoid crashing in component instance data if (for some reason) the Actor's root component isn't properly set up
#jira UE-46073
Change 3496830 by Michael.Noland
Editor: Change FEditorCategoryUtils methods to take UStruct* instead of UClass*, as they are just reading metadata
#rnx
Change 3496840 by Michael.Noland
Framework: Remove the requirement for a local player in UCheatManager::CheatScript, so it can be be started from the server side (doesn't change the availability of the cheat manager, just allows things like the redundant "cheat cheatscript scriptname" to work)
Change 3497038 by Michael.Noland
Fortnite: Added UFortDeveloperSettings to allow developers to auto-run cheats in PIE (does not occur in -game or outside of WITH_EDITOR builds)
- You can specify a list of cheat commands to run when a pawn is possessed (also needs CL# 3496840 for cheatscripts)
- You can also specify a set of items to grant to your local inventory when it is created
Change 3497204 by Marc.Audy
Fix AbilitySystemComponent not being blueprint readable.
#rnx
Change 3497668 by Mieszko.Zielinski
Fixed a crash in BT editor when dealing with enum-typed Blackboard-keys pointing to enum values that have been deleted #UE4
#jira UE-43659
Change 3497677 by Mieszko.Zielinski
Added a community-suggested working solution to patching up dynamic navmesh after world offset #UE4
Also, fixed a crash related to navmesh rebuilding if generation was configured to lazily gather navigatble geometry
#jira UE-41293
Change 3497678 by Mieszko.Zielinski
Marked AbstractNavData class as transient #UE4
We never want to save it to levels
Change 3497679 by Mieszko.Zielinski
Made NavModifierVolume responsive to editor-time property changes #UE4
#jira UE-32831
Change 3497900 by Dan.Oconnor
Fix bad skel reference when using construct object from class, just limiting scope of 3491946. To reproduce the bug just nativize QA Game, including the TM-Gameplay level
#rnx
Change 3497904 by Dan.Oconnor
Use K2Node_Event::FindEventSignatureFunction in order when directly generating the skeleton generated class to get event params correct
#jira UE-46153
#rnx
Change 3497907 by Dan.Oconnor
Correctly set blueprint visibility flags on params for inherited functions when generating the skeleton class
#rnx
#jira UE-46186
Change 3498218 by mason.seay
Updates to pin testing BP's
Change 3498323 by Mieszko.Zielinski
Made UNavCollision instance assigned to StaticMesh not get re-created from scratch every single time any StaticMesh property changes #UE4
Recreation was resulting in some of the UNavCollision's properties not getting saved and the way we were recreating the nav collision could also interfere with undo buffers
#jira UE-44891
Change 3499007 by Marc.Audy
Allow systems to hook Pre and PostCompile to do custom behaviors
Change 3499013 by Mieszko.Zielinski
Made AbstractNavData class non-transient again #UE4
Implemented AbstractNavData instances' transientness in a different manner.
#jira UE-46194
Change 3499204 by Mieszko.Zielinski
Introduced CrowdManagerBase, an engine-level class that can be extended to implement custom crowd management #Orion
Extracted FRecastQueryFilter into a separate file, which will break some peoples' compilation.
#jira UE-43799
Change 3499321 by mason.seay
Updated bp for struct testing
Change 3499388 by Marc.Audy
Allow the compiler log to store off potential messages from earlier in the compile cycle (early validation), that can be committed later (for example once pruning is completed).
Change 3499390 by Marc.Audy
Generate the orphan pin error messages during EarlyValidation, but cache until the regular validation phase. This ensures all are generated, but only those that aren't pruned will be emitted.
#rnx
Change 3499420 by Michael.Noland
Engine: Introduced a new version of UEngine::GetWorldFromContextObject which takes an enum specifying the behavior on failures and updated all existing uses
The new version intentionally does not have a default value for ErrorMode, callers need to think about which variant of behavior they want:
- ReturnNull: Silently returns nullptr, the calling code is expected to handle this gracefully
- LogAndReturnNull: Raises a runtime error but still returns nullptr, the calling code is expected to handle this gracefully
- Assert: Asserts, the calling code is not expecting to handle a failure gracefully
- Deprecated UEngine::GetWorldFromContextObject(object, boolean) and changed the default behavior for the deprecated instances to do LogAndReturnNull rather than Assert, based on the real-world call pattern
- Introduced GetWorldFromContextObjectChecked(object) as a shorthand for passing in EGetWorldErrorMode::Assert
- Made UObject::GetWorldChecked() actually assert if it would return nullptr (under some cases the old function could silently return nullptr while reporting bSupported = true, so it neither ensured nor checked)
- Fixed a race condition in the 'is implemented' bookkeeping logic in GetWorld()/GetWorldChecked() by confining it to the game thread and added a check() to ImplementsGetWorld() to make it clear that it only works on the game thread
The typical recommended call pattern is to use something like:
if (UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull))
{
... Do something with World
}
Handling the failure case but requesting a log message (with BP call stack printed out) if it failed. This is now also the default behavior for old calls to UEngine::GetWorldFromContextObject(Object) (using the default value of bChecked=true), which is a behavior change but it matches how the function was being used in practice; the vast majority of call sites actually expected it to potentially fail and handled the nullptr case gracefully; very few places used the return value unguarded and wanted it to assert when passed a nullptr.
#jira UE-42458
Change 3499429 by Michael.Noland
Engine: Removed a bogus TODO (the problematic code had already been reworked)
#rnx
Change 3499470 by Michael.Noland
Core: Improved and corrected the comment for ensure()
- It doesn't crash when checking is disabled (and hasn't since UE3, maybe ever?)
- It now only fires once per ensure() by default, added a note about ensureAlways()
#rnx
Change 3499643 by Marc.Audy
Use TGuardValue instead of manually managing it
#rnx
Change 3499874 by Marc.Audy
Display <Unnamed> instead of nothing for Pins with blank display name in the compiler log
Change 3499875 by Marc.Audy
When changing function parameter types, don't orphan a pin on the function entry/exit nodes (but do at the call sites)
#jira UE-46224
Change 3499927 by Dan.Oconnor
UField::Serialize no longer serialize's its next ptr, UStruct::Serialize serializes all Children properties instead. This resolves a hard circular dependency between function libraries that EDL detected. It was resolved in an ad hoc way by the old linker
#jira UE-43458
Change 3499953 by Michael.Noland
Core: Created a variant of ensure that does runtime error logging without stopping in the debugger and some related functions that print a warning or error and may trigger a BP callstack (under the same rules as FFrame::KismetExecutionMessage)
- These are WIP and the API may change in the future, but are being used to fix various crashes found by fuzzing BP exposed functions
Change 3499957 by Michael.Noland
Animation: Added runtime errors for nullptr ControlRigs passed into BP methods
#rnx
Change 3499958 by Michael.Noland
Blueprints: Changed an ensure in UKismetNodeHelperLibrary::GetValidValue to a runtime error
#rnx
Change 3499959 by Michael.Noland
Engine: Downgrade various checks() to ensures() in the runtime asset cache functions exposed to Blueprints
Change 3499960 by Michael.Noland
AI: Changed UBTFunctionLibrary to not check/ensure if passed a null world context object
Change 3499968 by Michael.Noland
Editor: Fixed a couple of crashes in UEditorLevelUtils when passed nullptr arguments, and reformatted the entire file to fix widespread indentation issues
#rnx
Change 3499969 by Michael.Noland
Engine: Changed the verbosity of the failure log message of UEngine::GetWorldFromContextObject(..., LogAndReturnNull) from Warning to Error, so it always prints out a BP callstack
#rnx
Change 3499973 by Michael.Noland
Rendering: Fixed asserts in various UKismetRenderingLibrary methods if passed a nullptr for the WorldContextObject
- Also fixed flipped warnings in the failure cases for EndDrawCanvasToRenderTarget
Change 3499979 by Michael.Noland
Editor: Prevented a crash in UMaterialEditingLibrary::RecompileMaterial when passed a nullptr material
Change 3499984 by Michael.Noland
Physics: Prevented a crash in UTraceQueryTestResults::AssertEqual when passed in nullptr for Expected
Change 3499993 by Michael.Noland
Blueprints: Added validation when renaming variables, functions, components, multicast delegates, etc... to prevent names from containing some unacceptable characters
- This validation only kicks in when trying to rename an item, so bad names in existing content are 'grandfathered in'
- These bad names can cause bugs when working with content that contains these characters (e.g., names that contain a period cannot be found via FindObject<T>)
- Currently only . is banned, but eventually we may expand it to include all of INVALID_OBJECTNAME_CHARACTERS
Change 3500009 by Michael.Noland
Blueprints: Made the fuzzer skip classes declared in UnrealEd for now (some of the exposed methods change global state that can cause other tests to fail as the fuzzer isn't particularly sandboxed ATM)
#rnx
Change 3500011 by Michael.Noland
Android: Fixed a crash in UAndroidPermissionFunctionLibrary::AcquirePermissions when called with an empty array on non-Android platforms
Change 3500012 by Michael.Noland
Editor: Prevent a crash in UEditorTutorial::OpenAsset when passed a nullptr Asset
Change 3500014 by Michael.Noland
Engine: Changed FRuntimeAssetCacheFilesystemBackend::ClearCache(NAME_None) to not try to clear all cache directories (there is a separate no-args method for that)
Change 3500019 by Michael.Noland
Core: Fixed some more issues with CallFunctionByNameWithArguments and initializing / destroying parameters
- It was skipping the return value and incorrectly relying on the FirstPropertyToInit list which isn't set for by ref arguments
Change 3500020 by Michael.Noland
Automation: Prevent UFunctionalTestingManager::RunAllFunctionalTests and UFunctionalTestingManager* UFunctionalTestingManager::GetManager from crashing when a manager cannot be created (because we can't route to a world)
Change 3501062 by Marc.Audy
MakeArray AddInputPin is often used as part of node expansion, so need to move the transaction out of the function
Fix inability to undo/redo pin additions to sequence node
Add a K2Node_AddPinInterface to generalize the interface that K2Nodes implement to interact with SGraphNodeK2Sequence so it can be more generally used
#jira UE-46164
#jira UE-46270
Change 3501330 by Michael.Noland
AI: Fix an error on shutdown when the CDO of UAIPerceptionComponent tries to clean up (as it was never registered in the first place)
#jira UE-46271
Change 3501356 by Marc.Audy
Fix crash when multi-editing actor blueprints
#jira UE-46248
Change 3501408 by Michael.Noland
Core: Improve 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)
Change 3501457 by Phillip.Kavan
#jira UE-46054 - Fix crash when launching a packaged build that includes a nativized Blueprint instance with a ChildActorComponent instanced via an AddComponent node.
Change summary:
- Removed UK2Node_AddComponent::PostDuplicate(). This eliminates the creation of redundant component templates that were being unnecessarily created during the Blueprint duplication that precedes the nativization pass.
- Modified SMyBlueprint::OnDuplicateAction() to call MakeNewComponentTemplate() in response to a graph duplication action within the same Blueprint context (replaces previous UK2Node_AddComponent::PostDuplicate() impl).
- Modified FEmitDefaultValueHelper::HandleSpecialTypes() to force AddComponent-based CAC-owned template objects in the emitted codegen to use the UDynamicClass as the Outer when instancing. This matches what we already do for SCS-based CAC-owned template objects - that logic was added in CL# 3270456, and this matches up with FBlueprintNativeCodeGenModule::FindReplacedNameAndOuter(), where we specifically handle CAC-owned template objects.
Change 3502741 by Phillip.Kavan
#jira UE-45782 - Fix undo for index pin type changes.
Change summary:
- Modified SGraphPinIndex::OnTypeChanged() to call Modify() on the pin that was changed.
Change 3502939 by Michael.Noland
Back out changelist 3499927
Change 3503087 by Marc.Audy
Re-fixed ocean content as editor had also changed so had to take theirs and redo
#rnx
Change 3503266 by Ben.Zeigler
#jira UE-46335 Fix regression added in 4.16 where AssetRegistry GetAncesorClassNames/GetDerivedClassNames were not working properly in cooked builds for classes not in memory
Change 3503325 by mason.seay
updated Anim BP to prep for pin testing
Change 3503445 by Marc.Audy
Fix crash caused by OldPins being destroyed before rewiring
#rnx
Change 3505024 by Marc.Audy
Fix NodeEffectsPanel blueprint as it was using pins that no longer existed
#rnx
Change 3505254 by Marc.Audy
Don't include orphan pins when gather source property names
If a property doesn't exist for a source property name just skip the property rather than crashing
#jira UE-46345
#rnx
Change 3506125 by Ben.Zeigler
#jira UE-46311 Fix issues when blueprints are reloaded in place, it needs to remove them from root properly and sanitize the old class. It's still not clear why they are being reloaded in place
Change 3506334 by Dan.Oconnor
Move UAnimGraphNode_Base::PreloadRequiredAssets up to K2Node, make sure nodes get a chance to preload data before compilation manager compiles newly loaded blueprints
#jira UE-46411
Change 3506439 by Dan.Oconnor
Return to pre 3488512 behavior for construct object nodes. This means that we can still get warnings on load when users compile after saving a blueprint, but the current behavior loses default values because it's lookng at the skeleton cdo
#jira UE-46308
Change 3506468 by Dan.Oconnor
Return to pre 3488512 behavior, as it causes bad default values
#jira UE-46414
#rnx
Change 3506733 by Marc.Audy
Use the most up to date class to determine whether a property still exists when adding pins during reconstruction
#jira UE-45965
#author Dan.OConnor
#rnx
Change 3507531 by Ben.Zeigler
#jira UE-46449 Better fix to flush the asset registry queue when the editor requests a synchronous scan at startup. Sometimes it can take a few frames because of file handle delays
Change 3507924 by mason.seay
Sanity save of TM-Gameplay and sublevels to maybe resolve level streaming issues
Change 3507962 by Marc.Audy
Remake changes from CL# 3150796 wiped out by WEX-Staging merge to Main in CL# 3479958
#rnx
Change 3509131 by Dan.Oconnor
Compilation manager compile on load flow never called FindExportsInMemoryFirst, which is critical to prevent reloading of UBlueprintGeneratedClasses when Rename clears the export table
#jira UE-46311
Change 3509345 by Marc.Audy
CVar to disable orphan pins if necessary
#rnx
Change 3509959 by Marc.Audy
Protect against crashing due to large values in Timespan From functions
#jira UE-43840
Change 3510040 by Marc.Audy
Remove all the old unneeded ShooterGame test maps
#rnx
[CL 3510073 by Marc Audy in Main branch]
2017-06-26 15:07:18 -04:00
ActionListOut . Add ( MakeMacroNodeSpawner ( MacroGraph ) ) ;
2014-08-23 20:16:29 -04:00
}
2019-07-09 11:39:58 -04:00
auto CreateEntriesForGraphLambda = [ Blueprint , & ActionListOut ] ( UEdGraph * FunctionGraph )
2014-08-23 20:16:29 -04:00
{
2019-07-09 11:39:58 -04:00
if ( ! FunctionGraph )
{
return ;
}
2014-08-23 20:16:29 -04:00
TArray < UK2Node_FunctionEntry * > GraphEntryNodes ;
FunctionGraph - > GetNodesOfClass < UK2Node_FunctionEntry > ( GraphEntryNodes ) ;
for ( UK2Node_FunctionEntry * FunctionEntry : GraphEntryNodes )
2014-07-09 12:17:42 -04:00
{
2020-03-15 10:33:45 -04:00
UFunction * SkeletonFunction = FindUField < UFunction > ( Blueprint - > SkeletonGeneratedClass , FunctionGraph - > GetFName ( ) ) ;
Copying //UE4/Dev-Blueprints to //UE4/Dev-Main (Source: //UE4/Dev-Blueprints @ 3255454)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3228496 on 2016/12/09 by Ben.Cosh
This change adds extra information to component template arrays so that the component class can be determined in builds that strip out objects of certain class types such as the editor dedicated server build.
#Jira UE-38842 - "LogBlueprint:Error: [Compiler BP_Skybox_World_RandomTrees_01] Error Can't connect pins ReturnValue and Target" after entering a lobby in a synced server
#Proj KismetCompiler, BlueprintGraph, UnrealEd, Core, Engine, Kismet, BlueprintCompilerCppBackend
Change 3232435 on 2016/12/13 by Ben.Cosh
Fix for a bug introduced in CL 3228496 that caused component templates to fail to be identified by name and resulted in blueprint compilation issues for add component nodes.
#Jira UE-39623 - Unknown template referenced by Add Component Node
#Proj BlueprintGraph, Engine
Change 3234581 on 2016/12/14 by Mike.Beach
Backing out fix for UE-38842 (CL 3228496/3232435/3232564) - mapping UBlueprintGeneratedClass's ComponentTemplates array to a new format was causing issues with deferred dependency loading during serialization (trying to extract type information from a placeholder object). We're opting for a smaller/simpler solution to UE-38842, which will be to store the component information on the node itself (not with the templates).
#jira UE-39707
Change 3236615 on 2016/12/15 by Maciej.Mroz
Nativization: Fixed getter fuctions in FUnconvertedWrapper, the returned ref won;t be const.
Change 3236967 on 2016/12/15 by Dan.Oconnor
Test data showing an error for jira issue UE-39808
Change 3237021 on 2016/12/15 by Dan.Oconnor
UE31622 test data
Change 3237046 on 2016/12/15 by Dan.Oconnor
UE-14123 test data
Change 3239289 on 2016/12/17 by Phillip.Kavan
[UE-38999] Dump component tree node hierarchy to the output log on error state during widget generation.
change summary:
- added FOnTableViewBadState delegate parameter to SSCSEditorDragDropTree
- added SSCSEditor::DumpTree() as the FOnTableViewBadState delegate implementatioon for the STableView widget (to provide us with more info on future occurrences)
#jira UE-38999
Change 3239448 on 2016/12/19 by Maciej.Mroz
#jira UE-39794
New way of collecting dependencies assets. Only directly used assets are listed. It will be used in projects with EDL enabled, once the "EDL boot time" is enabled.
Nativized projects with EDL disabled use the new mechanism as well. They use new __StaticDependenciesAssets functions generator. __StaticDependenciesAssets calls recursively __StaticDependenciesAssets of all Blueprints, that the current BP depends on. It reduces the size of __StaticDependenciesAssets.
Notice, that at the moment, this change should no affect any projects with EDL enabled (because the EDL boot time doesn't work yet).
Change 3239778 on 2016/12/19 by Phillip.Kavan
[UE-39854] Fix nativized assets build error when there are no native code dependencies.
change summary:
- modified FDependenciesGlobalMapHelper::EmitBodyCode() to emit a NULL entry when there are no other entries to emit, in order to avoid a zero-length array initialization error at compile time.
#jira UE-39854
Change 3239965 on 2016/12/19 by Phillip.Kavan
[UE-39733] Fix incorrect graph pin value display names for user-defined enum types.
change summary:
- switched UEnum::GetDisplayNameText() to be a virtual API
- added a UUserDefinedEnum::GetDisplayNameText() override to call FEnumEditorUtils::GetEnumeratorDisplayName()
#jira UE-39733
Change 3240422 on 2016/12/19 by Dan.Oconnor
Remove useless counter. ensureMsgf only fires once
Change 3242313 on 2016/12/21 by Phillip.Kavan
[UE-35418] The Actor details view will now refresh property mappings for the current Actor instance selection after a bytecode-only recompile of its Blueprint class as a dependency during reinstancing.
change summary:
- Modified FBlueprintCompileReinstancer::ReinstanceObjects() to invoke SelectActor() on the current editor selection after a bytecode-only recompile of its class as a dependent BP (i.e. when reinstancing/finalization is not actually incurred). This is meant to be consistent with how the refresh for the current Actor selection is handled by the reinstancer in the other cases.
#jira UE-35418
Change 3242409 on 2016/12/21 by Dan.Oconnor
PR #2995: Arbitrary base logarithm blueprint node (Contributed by Valkrysa)
#jira UE-39169
Change 3243207 on 2016/12/22 by Phillip.Kavan
[UE-39816] Renaming interface input/output parameters will no longer cause broken pin links at interface function call sites in Blueprints that are currently loaded.
change summary:
- modified FBasePinChangeHelper::Broadcast() to consider pin changes sourced from an interface Blueprint
- also revised non-interface function call site check code a bit to try and avoid doing some unnecessary work when possible, since this code runs through every call site node
#jira UE-39816
Change 3243210 on 2016/12/22 by Phillip.Kavan
[UE-39944] Extend the GetClassDefaults node to include output pin exceptions for TSet/TMap properties (i.e. mirror safeguards already in place for TArray).
change summary:
- deprecated 'bExcludeObjectArrays' and replaced with 'bExcludeObjectContainers' (not using a redirect because I need the old property serialized on load for backwards-compatibility)
- modified FClassDefaultsOptionalPinManager's ctor to consider both flags
- modified FClassDefaultsOptionalPinManager::CanTreatPropertyAsOptional() to also test for TSet/TMap types, and exclude them if they contain a non-class UObject property as the inner type (same as we do for TArray)
- modified UK2Node_GetClassDefaults::ValidateNodeDuringCompilation() to also test for TSet/TMap types, and emit a warning for existing pin connections that would have otherwise failed for newly-placed nodes (same as TArray)
- modified UK2Node_GetClassDefaults::ExpandNode() to generate the necessary script needed to create a copy of TSet/TMap property value outputs (same as we do for TArray types)
#jira UE-39944
Change 3243373 on 2016/12/23 by Maciej.Mroz
#jira UE-39794
-Nativized build with EDL enabled use new dependency-gathering system. It shrinks size of the .exe file. This code will change once the boot time EDL is enabled.
-In nativized code, ZCOnstructors are not called. They are replaced by ::StaticClass(). Static class doesn't call noting recursively. We still need to fix interfaces (they have no StaticClass).
- Workaround for UE-40026
- Various minior improvements.
Change 3244038 on 2016/12/28 by Phillip.Kavan
[UE-34488] Child Blueprint assets are now marked as dirty if its parent Blueprint incurs a strucutural change.
change summary:
- modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() to call MarkPackageDirty() after a skeleton-only compile pass on a child Blueprint.
notes:
- this only fixes the issue for child Blueprints that are loaded when the change to the parent Blueprint occurs. unloaded child Blueprints would still need a redirector to fix this up on load.
#jira UE-34488
Change 3244087 on 2016/12/28 by Phillip.Kavan
CIS warning fix (C6236).
Change 3244388 on 2016/12/30 by Phillip.Kavan
[UE-39816] Fix broken pin links caused by renaming interface function input/output parameters prior to compiling the interface, but after renaming the function itself.
change summary:
- modified FBlueprintEditorUtils::FindFunctionInImplementedInterfaces() to prefer the skeleton class when searching, as that is always up-to-date.
- modified FBlueprintEditorUtils::RenameGraph() to update *all* function call site nodes, rather than just those within the current Blueprint class scope.
#jira UE-39816
Change 3245322 on 2017/01/03 by Maciej.Mroz
#jira UE-40125
Fixed a crash when implementing a native interface in a BP
Change 3245667 on 2017/01/03 by Mike.Beach
Mirroring CL 3245664 - Making it so level script bound nodes are fixed up on load (in case the level instances were saved out without the bindings).
#jira UE-39950
Change 3247675 on 2017/01/05 by Maciej.Mroz
BP is not DataOnly, when it overrides an inherited component
related to UE-40131
Change 3247985 on 2017/01/05 by Maciej.Mroz
NativizationSummary object is always present.
#jira UE-40035
Change 3249423 on 2017/01/06 by Mike.Beach
Mirroring CL 3248792 from Orion.
Fix to keep placeholder classes from being needlessly created (when the object they represent already exists) - instead, attempt to lookup and find the existing import objects (which used to be set, but could be cleared during async loading by FLinkerManager::DissociateImportsAndForcedExports()).
#jira OR-34038
Change 3249568 on 2017/01/06 by Mike.Beach
Updating the UBlueprintThumbnailRenderer API so it can be sub-classed by plugin/projects.
PR #2899: Expose UBlueprintThumbnailRenderer in the API (Contributed by e-agaubatz)
#jira UE-38004
Change 3251903 on 2017/01/10 by Phillip.Kavan
[UE-31640] Function inputs are now exposed as variable "Get" nodes via the right-click context menu in a Blueprint function graph context.
Note: Changes are based on shelved CL# 2452724, original proof-of-concept code (credit: Michael.Noland).
#jira UE-31640
#fyi Michael.Noland
Change 3252119 on 2017/01/10 by Phillip.Kavan
CIS fix (shadowed variable).
Change 3252744 on 2017/01/10 by Dan.Oconnor
Add GMinimalCompileOnLoad path for postponing compile on load until all data has been loaded - long term this will be used to improve bp compiler infrastructure (performance, correctness, succinctness)
Change 3252968 on 2017/01/10 by Phillip.Kavan
[UE-36798] Fix for an infinite loop case in the math expression parser.
#jira UE-36798
Change 3253153 on 2017/01/10 by Dan.Oconnor
Fixed construction scripts not being loaded before instancing occurs when using new lighter compile path
Change 3253171 on 2017/01/10 by Mike.Beach
Mirrored CL 3253147.
Properly fills out FPropertyChangedEvent's MemberProperty field, for the property editor's NotifyHook. As its comment implies, "MemberProperty" is meant to represent the outermost property (in scenarios, like with nested struct properties). It was not working this way, and was instead set to the same nested property.
Change 3253220 on 2017/01/10 by Dan.Oconnor
These pins should infer together
#jira UE-40427
Change 3253223 on 2017/01/10 by Phillip.Kavan
[UE-35050] Fix a crash that occurs on an attempt to rename the category of an implemented interface function inherited from a native parent class in the My Blueprint panel.
change summary:
- modified FBlueprintEditorUtils::FindFunctionInImplementedInterfaces() to accept an additional input parameter so that callers can opt-in to searching all inherited interface classes
- modified SMyBlueprint::CanRequestRenameOnActionNode() to prevent rename on implemented interface functions inherited from a native parent class
#jira UE-35050
Change 3253259 on 2017/01/10 by Dan.Oconnor
Quick cleanup, this stuff is in progress
Change 3253983 on 2017/01/11 by Phillip.Kavan
[UE-35629] Disable external curve asset creation when editing a local variable's default value in a Blueprint graph.
change summary:
- modified FCurveStructCustomization::CustomizeChildren() to set the "create" button visibility to "collapsed" when the Owner is NULL (as the default asset path is inferred from the Owner's package).
#jira UE-35629
Change 3254024 on 2017/01/11 by Phillip.Kavan
[UE-40131] Non-native child BPs can now properly override a nativized parent BP's components in a cooked build with exclusive Blueprint class nativiation.
change summary:
- added UBlueprintGeneratedClass::CheckAndApplyComponentTemplateOverrides()
- switched FComponentKey::OwnerClass type from UBlueprintGeneratedClass to UClass to allow the reference to be loaded when it's a nativized BP class.
- modified AActor::PostLoadSubobjects() to apply ICH template overrides to inherited component subobjects on load (only in a cooked build)
- modified AActor::PostSpawnInitialize() to also apply ICH template overrides to inherited component subobjects on new Actor spawns (only in a cooked build)
- modified FBlueprintEditorUtils::IsDataOnlyBlueprint() to additionally reject BPs that have a non-empty ICH (from Maciej)
- added UBlueprint::bHasNativizedParent to cache this as an indicator for cooked builds to allow Actor instances to avoid incurring additional overhead for this at load time in the general case
#jira UE-40131
Change 3254176 on 2017/01/11 by Mike.Beach
Mirroring CL 3245838 to unblock the Odin build. Downgrading new error to warning until we can address it in content (and fully understand why it is triggering).
#jira UE-40470
Change 3254391 on 2017/01/11 by Phillip.Kavan
[UE-40131] CIS fix (non-unity).
Change 3254442 on 2017/01/11 by Mike.Beach
Mirroring CL 3245069 (from RobM), which is described as a "temp fix".
#jira UE-40399
Change 3254599 on 2017/01/11 by Mike.Beach
Updating some of our GetRedirectPinNames() functions - making local copy of an array element instead of a reference. We're adding to the array right after, and the ref can become invalid (if the array is grown and reallocated). Came to us via UDN.
Change 3254624 on 2017/01/11 by Mike.Beach
Backing out CL 3247675, as it removed the "data-only" status from certain Blueprints that, IMO, are still considered "data-only". This would have reprecussions to editor (compile-on) load times, and affect how these Blueprints are presented to the user.
#fyi Maciej.Mroz, Phillip.Kavan
Change 3254671 on 2017/01/11 by Mike.Beach
Resolving CIS warning - USE_EVENT_DRIVEN_ASYNC_LOAD was replaced with GEventDrivenLoaderEnabled.
[CL 3255791 by Mike Beach in Main branch]
2017-01-12 14:36:04 -05:00
// Create entries for function parameters
if ( SkeletonFunction ! = nullptr )
{
2019-12-13 11:07:03 -05:00
for ( TFieldIterator < FProperty > ParamIt ( SkeletonFunction ) ; ParamIt & & ( ParamIt - > PropertyFlags & CPF_Parm ) ; + + ParamIt )
Copying //UE4/Dev-Blueprints to //UE4/Dev-Main (Source: //UE4/Dev-Blueprints @ 3255454)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3228496 on 2016/12/09 by Ben.Cosh
This change adds extra information to component template arrays so that the component class can be determined in builds that strip out objects of certain class types such as the editor dedicated server build.
#Jira UE-38842 - "LogBlueprint:Error: [Compiler BP_Skybox_World_RandomTrees_01] Error Can't connect pins ReturnValue and Target" after entering a lobby in a synced server
#Proj KismetCompiler, BlueprintGraph, UnrealEd, Core, Engine, Kismet, BlueprintCompilerCppBackend
Change 3232435 on 2016/12/13 by Ben.Cosh
Fix for a bug introduced in CL 3228496 that caused component templates to fail to be identified by name and resulted in blueprint compilation issues for add component nodes.
#Jira UE-39623 - Unknown template referenced by Add Component Node
#Proj BlueprintGraph, Engine
Change 3234581 on 2016/12/14 by Mike.Beach
Backing out fix for UE-38842 (CL 3228496/3232435/3232564) - mapping UBlueprintGeneratedClass's ComponentTemplates array to a new format was causing issues with deferred dependency loading during serialization (trying to extract type information from a placeholder object). We're opting for a smaller/simpler solution to UE-38842, which will be to store the component information on the node itself (not with the templates).
#jira UE-39707
Change 3236615 on 2016/12/15 by Maciej.Mroz
Nativization: Fixed getter fuctions in FUnconvertedWrapper, the returned ref won;t be const.
Change 3236967 on 2016/12/15 by Dan.Oconnor
Test data showing an error for jira issue UE-39808
Change 3237021 on 2016/12/15 by Dan.Oconnor
UE31622 test data
Change 3237046 on 2016/12/15 by Dan.Oconnor
UE-14123 test data
Change 3239289 on 2016/12/17 by Phillip.Kavan
[UE-38999] Dump component tree node hierarchy to the output log on error state during widget generation.
change summary:
- added FOnTableViewBadState delegate parameter to SSCSEditorDragDropTree
- added SSCSEditor::DumpTree() as the FOnTableViewBadState delegate implementatioon for the STableView widget (to provide us with more info on future occurrences)
#jira UE-38999
Change 3239448 on 2016/12/19 by Maciej.Mroz
#jira UE-39794
New way of collecting dependencies assets. Only directly used assets are listed. It will be used in projects with EDL enabled, once the "EDL boot time" is enabled.
Nativized projects with EDL disabled use the new mechanism as well. They use new __StaticDependenciesAssets functions generator. __StaticDependenciesAssets calls recursively __StaticDependenciesAssets of all Blueprints, that the current BP depends on. It reduces the size of __StaticDependenciesAssets.
Notice, that at the moment, this change should no affect any projects with EDL enabled (because the EDL boot time doesn't work yet).
Change 3239778 on 2016/12/19 by Phillip.Kavan
[UE-39854] Fix nativized assets build error when there are no native code dependencies.
change summary:
- modified FDependenciesGlobalMapHelper::EmitBodyCode() to emit a NULL entry when there are no other entries to emit, in order to avoid a zero-length array initialization error at compile time.
#jira UE-39854
Change 3239965 on 2016/12/19 by Phillip.Kavan
[UE-39733] Fix incorrect graph pin value display names for user-defined enum types.
change summary:
- switched UEnum::GetDisplayNameText() to be a virtual API
- added a UUserDefinedEnum::GetDisplayNameText() override to call FEnumEditorUtils::GetEnumeratorDisplayName()
#jira UE-39733
Change 3240422 on 2016/12/19 by Dan.Oconnor
Remove useless counter. ensureMsgf only fires once
Change 3242313 on 2016/12/21 by Phillip.Kavan
[UE-35418] The Actor details view will now refresh property mappings for the current Actor instance selection after a bytecode-only recompile of its Blueprint class as a dependency during reinstancing.
change summary:
- Modified FBlueprintCompileReinstancer::ReinstanceObjects() to invoke SelectActor() on the current editor selection after a bytecode-only recompile of its class as a dependent BP (i.e. when reinstancing/finalization is not actually incurred). This is meant to be consistent with how the refresh for the current Actor selection is handled by the reinstancer in the other cases.
#jira UE-35418
Change 3242409 on 2016/12/21 by Dan.Oconnor
PR #2995: Arbitrary base logarithm blueprint node (Contributed by Valkrysa)
#jira UE-39169
Change 3243207 on 2016/12/22 by Phillip.Kavan
[UE-39816] Renaming interface input/output parameters will no longer cause broken pin links at interface function call sites in Blueprints that are currently loaded.
change summary:
- modified FBasePinChangeHelper::Broadcast() to consider pin changes sourced from an interface Blueprint
- also revised non-interface function call site check code a bit to try and avoid doing some unnecessary work when possible, since this code runs through every call site node
#jira UE-39816
Change 3243210 on 2016/12/22 by Phillip.Kavan
[UE-39944] Extend the GetClassDefaults node to include output pin exceptions for TSet/TMap properties (i.e. mirror safeguards already in place for TArray).
change summary:
- deprecated 'bExcludeObjectArrays' and replaced with 'bExcludeObjectContainers' (not using a redirect because I need the old property serialized on load for backwards-compatibility)
- modified FClassDefaultsOptionalPinManager's ctor to consider both flags
- modified FClassDefaultsOptionalPinManager::CanTreatPropertyAsOptional() to also test for TSet/TMap types, and exclude them if they contain a non-class UObject property as the inner type (same as we do for TArray)
- modified UK2Node_GetClassDefaults::ValidateNodeDuringCompilation() to also test for TSet/TMap types, and emit a warning for existing pin connections that would have otherwise failed for newly-placed nodes (same as TArray)
- modified UK2Node_GetClassDefaults::ExpandNode() to generate the necessary script needed to create a copy of TSet/TMap property value outputs (same as we do for TArray types)
#jira UE-39944
Change 3243373 on 2016/12/23 by Maciej.Mroz
#jira UE-39794
-Nativized build with EDL enabled use new dependency-gathering system. It shrinks size of the .exe file. This code will change once the boot time EDL is enabled.
-In nativized code, ZCOnstructors are not called. They are replaced by ::StaticClass(). Static class doesn't call noting recursively. We still need to fix interfaces (they have no StaticClass).
- Workaround for UE-40026
- Various minior improvements.
Change 3244038 on 2016/12/28 by Phillip.Kavan
[UE-34488] Child Blueprint assets are now marked as dirty if its parent Blueprint incurs a strucutural change.
change summary:
- modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() to call MarkPackageDirty() after a skeleton-only compile pass on a child Blueprint.
notes:
- this only fixes the issue for child Blueprints that are loaded when the change to the parent Blueprint occurs. unloaded child Blueprints would still need a redirector to fix this up on load.
#jira UE-34488
Change 3244087 on 2016/12/28 by Phillip.Kavan
CIS warning fix (C6236).
Change 3244388 on 2016/12/30 by Phillip.Kavan
[UE-39816] Fix broken pin links caused by renaming interface function input/output parameters prior to compiling the interface, but after renaming the function itself.
change summary:
- modified FBlueprintEditorUtils::FindFunctionInImplementedInterfaces() to prefer the skeleton class when searching, as that is always up-to-date.
- modified FBlueprintEditorUtils::RenameGraph() to update *all* function call site nodes, rather than just those within the current Blueprint class scope.
#jira UE-39816
Change 3245322 on 2017/01/03 by Maciej.Mroz
#jira UE-40125
Fixed a crash when implementing a native interface in a BP
Change 3245667 on 2017/01/03 by Mike.Beach
Mirroring CL 3245664 - Making it so level script bound nodes are fixed up on load (in case the level instances were saved out without the bindings).
#jira UE-39950
Change 3247675 on 2017/01/05 by Maciej.Mroz
BP is not DataOnly, when it overrides an inherited component
related to UE-40131
Change 3247985 on 2017/01/05 by Maciej.Mroz
NativizationSummary object is always present.
#jira UE-40035
Change 3249423 on 2017/01/06 by Mike.Beach
Mirroring CL 3248792 from Orion.
Fix to keep placeholder classes from being needlessly created (when the object they represent already exists) - instead, attempt to lookup and find the existing import objects (which used to be set, but could be cleared during async loading by FLinkerManager::DissociateImportsAndForcedExports()).
#jira OR-34038
Change 3249568 on 2017/01/06 by Mike.Beach
Updating the UBlueprintThumbnailRenderer API so it can be sub-classed by plugin/projects.
PR #2899: Expose UBlueprintThumbnailRenderer in the API (Contributed by e-agaubatz)
#jira UE-38004
Change 3251903 on 2017/01/10 by Phillip.Kavan
[UE-31640] Function inputs are now exposed as variable "Get" nodes via the right-click context menu in a Blueprint function graph context.
Note: Changes are based on shelved CL# 2452724, original proof-of-concept code (credit: Michael.Noland).
#jira UE-31640
#fyi Michael.Noland
Change 3252119 on 2017/01/10 by Phillip.Kavan
CIS fix (shadowed variable).
Change 3252744 on 2017/01/10 by Dan.Oconnor
Add GMinimalCompileOnLoad path for postponing compile on load until all data has been loaded - long term this will be used to improve bp compiler infrastructure (performance, correctness, succinctness)
Change 3252968 on 2017/01/10 by Phillip.Kavan
[UE-36798] Fix for an infinite loop case in the math expression parser.
#jira UE-36798
Change 3253153 on 2017/01/10 by Dan.Oconnor
Fixed construction scripts not being loaded before instancing occurs when using new lighter compile path
Change 3253171 on 2017/01/10 by Mike.Beach
Mirrored CL 3253147.
Properly fills out FPropertyChangedEvent's MemberProperty field, for the property editor's NotifyHook. As its comment implies, "MemberProperty" is meant to represent the outermost property (in scenarios, like with nested struct properties). It was not working this way, and was instead set to the same nested property.
Change 3253220 on 2017/01/10 by Dan.Oconnor
These pins should infer together
#jira UE-40427
Change 3253223 on 2017/01/10 by Phillip.Kavan
[UE-35050] Fix a crash that occurs on an attempt to rename the category of an implemented interface function inherited from a native parent class in the My Blueprint panel.
change summary:
- modified FBlueprintEditorUtils::FindFunctionInImplementedInterfaces() to accept an additional input parameter so that callers can opt-in to searching all inherited interface classes
- modified SMyBlueprint::CanRequestRenameOnActionNode() to prevent rename on implemented interface functions inherited from a native parent class
#jira UE-35050
Change 3253259 on 2017/01/10 by Dan.Oconnor
Quick cleanup, this stuff is in progress
Change 3253983 on 2017/01/11 by Phillip.Kavan
[UE-35629] Disable external curve asset creation when editing a local variable's default value in a Blueprint graph.
change summary:
- modified FCurveStructCustomization::CustomizeChildren() to set the "create" button visibility to "collapsed" when the Owner is NULL (as the default asset path is inferred from the Owner's package).
#jira UE-35629
Change 3254024 on 2017/01/11 by Phillip.Kavan
[UE-40131] Non-native child BPs can now properly override a nativized parent BP's components in a cooked build with exclusive Blueprint class nativiation.
change summary:
- added UBlueprintGeneratedClass::CheckAndApplyComponentTemplateOverrides()
- switched FComponentKey::OwnerClass type from UBlueprintGeneratedClass to UClass to allow the reference to be loaded when it's a nativized BP class.
- modified AActor::PostLoadSubobjects() to apply ICH template overrides to inherited component subobjects on load (only in a cooked build)
- modified AActor::PostSpawnInitialize() to also apply ICH template overrides to inherited component subobjects on new Actor spawns (only in a cooked build)
- modified FBlueprintEditorUtils::IsDataOnlyBlueprint() to additionally reject BPs that have a non-empty ICH (from Maciej)
- added UBlueprint::bHasNativizedParent to cache this as an indicator for cooked builds to allow Actor instances to avoid incurring additional overhead for this at load time in the general case
#jira UE-40131
Change 3254176 on 2017/01/11 by Mike.Beach
Mirroring CL 3245838 to unblock the Odin build. Downgrading new error to warning until we can address it in content (and fully understand why it is triggering).
#jira UE-40470
Change 3254391 on 2017/01/11 by Phillip.Kavan
[UE-40131] CIS fix (non-unity).
Change 3254442 on 2017/01/11 by Mike.Beach
Mirroring CL 3245069 (from RobM), which is described as a "temp fix".
#jira UE-40399
Change 3254599 on 2017/01/11 by Mike.Beach
Updating some of our GetRedirectPinNames() functions - making local copy of an array element instead of a reference. We're adding to the array right after, and the ref can become invalid (if the array is grown and reallocated). Came to us via UDN.
Change 3254624 on 2017/01/11 by Mike.Beach
Backing out CL 3247675, as it removed the "data-only" status from certain Blueprints that, IMO, are still considered "data-only". This would have reprecussions to editor (compile-on) load times, and affect how these Blueprints are presented to the user.
#fyi Maciej.Mroz, Phillip.Kavan
Change 3254671 on 2017/01/11 by Mike.Beach
Resolving CIS warning - USE_EVENT_DRIVEN_ASYNC_LOAD was replaced with GEventDrivenLoaderEnabled.
[CL 3255791 by Mike Beach in Main branch]
2017-01-12 14:36:04 -05:00
{
2019-12-13 11:07:03 -05:00
FProperty * Param = * ParamIt ;
Copying //UE4/Dev-Blueprints to //UE4/Dev-Main (Source: //UE4/Dev-Blueprints @ 3255454)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3228496 on 2016/12/09 by Ben.Cosh
This change adds extra information to component template arrays so that the component class can be determined in builds that strip out objects of certain class types such as the editor dedicated server build.
#Jira UE-38842 - "LogBlueprint:Error: [Compiler BP_Skybox_World_RandomTrees_01] Error Can't connect pins ReturnValue and Target" after entering a lobby in a synced server
#Proj KismetCompiler, BlueprintGraph, UnrealEd, Core, Engine, Kismet, BlueprintCompilerCppBackend
Change 3232435 on 2016/12/13 by Ben.Cosh
Fix for a bug introduced in CL 3228496 that caused component templates to fail to be identified by name and resulted in blueprint compilation issues for add component nodes.
#Jira UE-39623 - Unknown template referenced by Add Component Node
#Proj BlueprintGraph, Engine
Change 3234581 on 2016/12/14 by Mike.Beach
Backing out fix for UE-38842 (CL 3228496/3232435/3232564) - mapping UBlueprintGeneratedClass's ComponentTemplates array to a new format was causing issues with deferred dependency loading during serialization (trying to extract type information from a placeholder object). We're opting for a smaller/simpler solution to UE-38842, which will be to store the component information on the node itself (not with the templates).
#jira UE-39707
Change 3236615 on 2016/12/15 by Maciej.Mroz
Nativization: Fixed getter fuctions in FUnconvertedWrapper, the returned ref won;t be const.
Change 3236967 on 2016/12/15 by Dan.Oconnor
Test data showing an error for jira issue UE-39808
Change 3237021 on 2016/12/15 by Dan.Oconnor
UE31622 test data
Change 3237046 on 2016/12/15 by Dan.Oconnor
UE-14123 test data
Change 3239289 on 2016/12/17 by Phillip.Kavan
[UE-38999] Dump component tree node hierarchy to the output log on error state during widget generation.
change summary:
- added FOnTableViewBadState delegate parameter to SSCSEditorDragDropTree
- added SSCSEditor::DumpTree() as the FOnTableViewBadState delegate implementatioon for the STableView widget (to provide us with more info on future occurrences)
#jira UE-38999
Change 3239448 on 2016/12/19 by Maciej.Mroz
#jira UE-39794
New way of collecting dependencies assets. Only directly used assets are listed. It will be used in projects with EDL enabled, once the "EDL boot time" is enabled.
Nativized projects with EDL disabled use the new mechanism as well. They use new __StaticDependenciesAssets functions generator. __StaticDependenciesAssets calls recursively __StaticDependenciesAssets of all Blueprints, that the current BP depends on. It reduces the size of __StaticDependenciesAssets.
Notice, that at the moment, this change should no affect any projects with EDL enabled (because the EDL boot time doesn't work yet).
Change 3239778 on 2016/12/19 by Phillip.Kavan
[UE-39854] Fix nativized assets build error when there are no native code dependencies.
change summary:
- modified FDependenciesGlobalMapHelper::EmitBodyCode() to emit a NULL entry when there are no other entries to emit, in order to avoid a zero-length array initialization error at compile time.
#jira UE-39854
Change 3239965 on 2016/12/19 by Phillip.Kavan
[UE-39733] Fix incorrect graph pin value display names for user-defined enum types.
change summary:
- switched UEnum::GetDisplayNameText() to be a virtual API
- added a UUserDefinedEnum::GetDisplayNameText() override to call FEnumEditorUtils::GetEnumeratorDisplayName()
#jira UE-39733
Change 3240422 on 2016/12/19 by Dan.Oconnor
Remove useless counter. ensureMsgf only fires once
Change 3242313 on 2016/12/21 by Phillip.Kavan
[UE-35418] The Actor details view will now refresh property mappings for the current Actor instance selection after a bytecode-only recompile of its Blueprint class as a dependency during reinstancing.
change summary:
- Modified FBlueprintCompileReinstancer::ReinstanceObjects() to invoke SelectActor() on the current editor selection after a bytecode-only recompile of its class as a dependent BP (i.e. when reinstancing/finalization is not actually incurred). This is meant to be consistent with how the refresh for the current Actor selection is handled by the reinstancer in the other cases.
#jira UE-35418
Change 3242409 on 2016/12/21 by Dan.Oconnor
PR #2995: Arbitrary base logarithm blueprint node (Contributed by Valkrysa)
#jira UE-39169
Change 3243207 on 2016/12/22 by Phillip.Kavan
[UE-39816] Renaming interface input/output parameters will no longer cause broken pin links at interface function call sites in Blueprints that are currently loaded.
change summary:
- modified FBasePinChangeHelper::Broadcast() to consider pin changes sourced from an interface Blueprint
- also revised non-interface function call site check code a bit to try and avoid doing some unnecessary work when possible, since this code runs through every call site node
#jira UE-39816
Change 3243210 on 2016/12/22 by Phillip.Kavan
[UE-39944] Extend the GetClassDefaults node to include output pin exceptions for TSet/TMap properties (i.e. mirror safeguards already in place for TArray).
change summary:
- deprecated 'bExcludeObjectArrays' and replaced with 'bExcludeObjectContainers' (not using a redirect because I need the old property serialized on load for backwards-compatibility)
- modified FClassDefaultsOptionalPinManager's ctor to consider both flags
- modified FClassDefaultsOptionalPinManager::CanTreatPropertyAsOptional() to also test for TSet/TMap types, and exclude them if they contain a non-class UObject property as the inner type (same as we do for TArray)
- modified UK2Node_GetClassDefaults::ValidateNodeDuringCompilation() to also test for TSet/TMap types, and emit a warning for existing pin connections that would have otherwise failed for newly-placed nodes (same as TArray)
- modified UK2Node_GetClassDefaults::ExpandNode() to generate the necessary script needed to create a copy of TSet/TMap property value outputs (same as we do for TArray types)
#jira UE-39944
Change 3243373 on 2016/12/23 by Maciej.Mroz
#jira UE-39794
-Nativized build with EDL enabled use new dependency-gathering system. It shrinks size of the .exe file. This code will change once the boot time EDL is enabled.
-In nativized code, ZCOnstructors are not called. They are replaced by ::StaticClass(). Static class doesn't call noting recursively. We still need to fix interfaces (they have no StaticClass).
- Workaround for UE-40026
- Various minior improvements.
Change 3244038 on 2016/12/28 by Phillip.Kavan
[UE-34488] Child Blueprint assets are now marked as dirty if its parent Blueprint incurs a strucutural change.
change summary:
- modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() to call MarkPackageDirty() after a skeleton-only compile pass on a child Blueprint.
notes:
- this only fixes the issue for child Blueprints that are loaded when the change to the parent Blueprint occurs. unloaded child Blueprints would still need a redirector to fix this up on load.
#jira UE-34488
Change 3244087 on 2016/12/28 by Phillip.Kavan
CIS warning fix (C6236).
Change 3244388 on 2016/12/30 by Phillip.Kavan
[UE-39816] Fix broken pin links caused by renaming interface function input/output parameters prior to compiling the interface, but after renaming the function itself.
change summary:
- modified FBlueprintEditorUtils::FindFunctionInImplementedInterfaces() to prefer the skeleton class when searching, as that is always up-to-date.
- modified FBlueprintEditorUtils::RenameGraph() to update *all* function call site nodes, rather than just those within the current Blueprint class scope.
#jira UE-39816
Change 3245322 on 2017/01/03 by Maciej.Mroz
#jira UE-40125
Fixed a crash when implementing a native interface in a BP
Change 3245667 on 2017/01/03 by Mike.Beach
Mirroring CL 3245664 - Making it so level script bound nodes are fixed up on load (in case the level instances were saved out without the bindings).
#jira UE-39950
Change 3247675 on 2017/01/05 by Maciej.Mroz
BP is not DataOnly, when it overrides an inherited component
related to UE-40131
Change 3247985 on 2017/01/05 by Maciej.Mroz
NativizationSummary object is always present.
#jira UE-40035
Change 3249423 on 2017/01/06 by Mike.Beach
Mirroring CL 3248792 from Orion.
Fix to keep placeholder classes from being needlessly created (when the object they represent already exists) - instead, attempt to lookup and find the existing import objects (which used to be set, but could be cleared during async loading by FLinkerManager::DissociateImportsAndForcedExports()).
#jira OR-34038
Change 3249568 on 2017/01/06 by Mike.Beach
Updating the UBlueprintThumbnailRenderer API so it can be sub-classed by plugin/projects.
PR #2899: Expose UBlueprintThumbnailRenderer in the API (Contributed by e-agaubatz)
#jira UE-38004
Change 3251903 on 2017/01/10 by Phillip.Kavan
[UE-31640] Function inputs are now exposed as variable "Get" nodes via the right-click context menu in a Blueprint function graph context.
Note: Changes are based on shelved CL# 2452724, original proof-of-concept code (credit: Michael.Noland).
#jira UE-31640
#fyi Michael.Noland
Change 3252119 on 2017/01/10 by Phillip.Kavan
CIS fix (shadowed variable).
Change 3252744 on 2017/01/10 by Dan.Oconnor
Add GMinimalCompileOnLoad path for postponing compile on load until all data has been loaded - long term this will be used to improve bp compiler infrastructure (performance, correctness, succinctness)
Change 3252968 on 2017/01/10 by Phillip.Kavan
[UE-36798] Fix for an infinite loop case in the math expression parser.
#jira UE-36798
Change 3253153 on 2017/01/10 by Dan.Oconnor
Fixed construction scripts not being loaded before instancing occurs when using new lighter compile path
Change 3253171 on 2017/01/10 by Mike.Beach
Mirrored CL 3253147.
Properly fills out FPropertyChangedEvent's MemberProperty field, for the property editor's NotifyHook. As its comment implies, "MemberProperty" is meant to represent the outermost property (in scenarios, like with nested struct properties). It was not working this way, and was instead set to the same nested property.
Change 3253220 on 2017/01/10 by Dan.Oconnor
These pins should infer together
#jira UE-40427
Change 3253223 on 2017/01/10 by Phillip.Kavan
[UE-35050] Fix a crash that occurs on an attempt to rename the category of an implemented interface function inherited from a native parent class in the My Blueprint panel.
change summary:
- modified FBlueprintEditorUtils::FindFunctionInImplementedInterfaces() to accept an additional input parameter so that callers can opt-in to searching all inherited interface classes
- modified SMyBlueprint::CanRequestRenameOnActionNode() to prevent rename on implemented interface functions inherited from a native parent class
#jira UE-35050
Change 3253259 on 2017/01/10 by Dan.Oconnor
Quick cleanup, this stuff is in progress
Change 3253983 on 2017/01/11 by Phillip.Kavan
[UE-35629] Disable external curve asset creation when editing a local variable's default value in a Blueprint graph.
change summary:
- modified FCurveStructCustomization::CustomizeChildren() to set the "create" button visibility to "collapsed" when the Owner is NULL (as the default asset path is inferred from the Owner's package).
#jira UE-35629
Change 3254024 on 2017/01/11 by Phillip.Kavan
[UE-40131] Non-native child BPs can now properly override a nativized parent BP's components in a cooked build with exclusive Blueprint class nativiation.
change summary:
- added UBlueprintGeneratedClass::CheckAndApplyComponentTemplateOverrides()
- switched FComponentKey::OwnerClass type from UBlueprintGeneratedClass to UClass to allow the reference to be loaded when it's a nativized BP class.
- modified AActor::PostLoadSubobjects() to apply ICH template overrides to inherited component subobjects on load (only in a cooked build)
- modified AActor::PostSpawnInitialize() to also apply ICH template overrides to inherited component subobjects on new Actor spawns (only in a cooked build)
- modified FBlueprintEditorUtils::IsDataOnlyBlueprint() to additionally reject BPs that have a non-empty ICH (from Maciej)
- added UBlueprint::bHasNativizedParent to cache this as an indicator for cooked builds to allow Actor instances to avoid incurring additional overhead for this at load time in the general case
#jira UE-40131
Change 3254176 on 2017/01/11 by Mike.Beach
Mirroring CL 3245838 to unblock the Odin build. Downgrading new error to warning until we can address it in content (and fully understand why it is triggering).
#jira UE-40470
Change 3254391 on 2017/01/11 by Phillip.Kavan
[UE-40131] CIS fix (non-unity).
Change 3254442 on 2017/01/11 by Mike.Beach
Mirroring CL 3245069 (from RobM), which is described as a "temp fix".
#jira UE-40399
Change 3254599 on 2017/01/11 by Mike.Beach
Updating some of our GetRedirectPinNames() functions - making local copy of an array element instead of a reference. We're adding to the array right after, and the ref can become invalid (if the array is grown and reallocated). Came to us via UDN.
Change 3254624 on 2017/01/11 by Mike.Beach
Backing out CL 3247675, as it removed the "data-only" status from certain Blueprints that, IMO, are still considered "data-only". This would have reprecussions to editor (compile-on) load times, and affect how these Blueprints are presented to the user.
#fyi Maciej.Mroz, Phillip.Kavan
Change 3254671 on 2017/01/11 by Mike.Beach
Resolving CIS warning - USE_EVENT_DRIVEN_ASYNC_LOAD was replaced with GEventDrivenLoaderEnabled.
[CL 3255791 by Mike Beach in Main branch]
2017-01-12 14:36:04 -05:00
const bool bIsFunctionInput = ! Param - > HasAnyPropertyFlags ( CPF_ReturnParm ) & & ( ! Param - > HasAnyPropertyFlags ( CPF_OutParm ) | | Param - > HasAnyPropertyFlags ( CPF_ReferenceParm ) ) ;
if ( bIsFunctionInput )
{
UBlueprintNodeSpawner * GetVarSpawner = UBlueprintVariableNodeSpawner : : CreateFromMemberOrParam ( UK2Node_VariableGet : : StaticClass ( ) , Param , FunctionGraph ) ;
ActionListOut . Add ( GetVarSpawner ) ;
}
}
}
// Create entries for local variables
2014-08-23 20:16:29 -04:00
for ( FBPVariableDescription const & LocalVar : FunctionEntry - > LocalVariables )
2014-08-14 15:47:44 -04:00
{
2019-12-13 11:07:03 -05:00
// Create a member reference so we can safely resolve the FProperty
2015-06-04 14:57:06 -04:00
FMemberReference Reference ;
Reference . SetLocalMember ( LocalVar . VarName , FunctionGraph - > GetName ( ) , LocalVar . VarGuid ) ;
2019-12-13 11:07:03 -05:00
UBlueprintNodeSpawner * GetVarSpawner = UBlueprintVariableNodeSpawner : : CreateFromLocal ( UK2Node_VariableGet : : StaticClass ( ) , FunctionGraph , LocalVar , Reference . ResolveMember < FProperty > ( Blueprint - > SkeletonGeneratedClass ) ) ;
2014-08-23 20:16:29 -04:00
ActionListOut . Add ( GetVarSpawner ) ;
2019-12-13 11:07:03 -05:00
UBlueprintNodeSpawner * SetVarSpawner = UBlueprintVariableNodeSpawner : : CreateFromLocal ( UK2Node_VariableSet : : StaticClass ( ) , FunctionGraph , LocalVar , Reference . ResolveMember < FProperty > ( Blueprint - > SkeletonGeneratedClass ) ) ;
2014-08-23 20:16:29 -04:00
ActionListOut . Add ( SetVarSpawner ) ;
2014-08-14 15:47:44 -04:00
}
}
2019-07-09 11:39:58 -04:00
} ;
auto CreateEntriesLambda = [ & ] ( const TArray < UEdGraph * > & Graphs )
{
for ( UEdGraph * const Graph : Graphs )
{
CreateEntriesForGraphLambda ( Graph ) ;
}
} ;
// local variables and parameters for functions
CreateEntriesLambda ( Blueprint - > FunctionGraphs ) ;
// local variables and parameters for interfaces
for ( const FBPInterfaceDescription & Interface : Blueprint - > ImplementedInterfaces )
{
CreateEntriesLambda ( Interface . Graphs ) ;
2014-09-23 16:40:48 -04:00
}
2014-07-09 12:17:42 -04:00
}
//------------------------------------------------------------------------------
2014-08-23 20:16:29 -04:00
static void BlueprintActionDatabaseImpl : : GetNodeSpecificActions ( TSubclassOf < UEdGraphNode const > const NodeClass , FBlueprintActionDatabaseRegistrar & Registrar )
2014-07-09 12:17:42 -04:00
{
2014-09-29 14:31:08 -04:00
using namespace FBlueprintNodeSpawnerFactory ; // for MakeCommentNodeSpawner()/MakeDocumentationNodeSpawner()
2014-07-09 12:17:42 -04:00
2014-08-23 20:16:29 -04:00
if ( NodeClass - > IsChildOf < UK2Node > ( ) & & ! NodeClass - > HasAnyClassFlags ( CLASS_Abstract ) )
2014-07-09 12:17:42 -04:00
{
2014-08-23 20:16:29 -04:00
UK2Node const * const NodeCDO = NodeClass - > GetDefaultObject < UK2Node > ( ) ;
2014-07-09 12:17:42 -04:00
check ( NodeCDO ! = nullptr ) ;
2014-08-23 20:16:29 -04:00
NodeCDO - > GetMenuActions ( Registrar ) ;
2014-07-09 12:17:42 -04:00
}
2019-07-16 11:49:59 -04:00
2014-07-09 12:17:42 -04:00
// unfortunately, UEdGraphNode_Comment is not a UK2Node and therefore cannot
// leverage UK2Node's GetMenuActions() function, so here we HACK it in
//
// @TODO: DO NOT follow this example! Do as I say, not as I do! If we need
// to support other nodes in a similar way, then we should come up
// with a better (more generalized) solution.
2019-07-16 11:49:59 -04:00
if ( NodeClass = = UEdGraphNode_Comment : : StaticClass ( ) )
2014-07-09 12:17:42 -04:00
{
2014-09-29 14:31:08 -04:00
Registrar . AddBlueprintAction ( MakeCommentNodeSpawner ( ) ) ;
2014-08-11 18:39:28 -04:00
}
2014-08-23 20:16:29 -04:00
else if ( NodeClass = = UEdGraphNode_Documentation : : StaticClass ( ) )
2014-08-11 18:39:28 -04:00
{
2014-09-30 14:08:39 -04:00
// @TODO: BOOOOOOO! (see comment above)
2021-05-11 10:58:41 -04:00
UBlueprintNodeSpawner * DocumentationSpawner = MakeDocumentationNodeSpawner < UEdGraphNode_Documentation > ( ) ;
DocumentationSpawner - > DefaultMenuSignature . Category = LOCTEXT ( " DocumentationNodeCategory " , " Documentation " ) ;
Registrar . AddBlueprintAction ( DocumentationSpawner ) ;
2014-07-09 12:17:42 -04:00
}
}
2014-08-04 18:28:34 -04:00
//------------------------------------------------------------------------------
2014-08-08 15:35:56 -04:00
static void BlueprintActionDatabaseImpl : : OnBlueprintChanged ( UBlueprint * Blueprint )
2014-08-04 18:28:34 -04:00
{
2014-09-17 16:02:23 -04:00
if ( IsObjectValidForDatabase ( Blueprint ) )
2014-08-19 13:57:02 -04:00
{
FBlueprintActionDatabase & ActionDatabase = FBlueprintActionDatabase : : Get ( ) ;
2014-08-23 20:16:29 -04:00
ActionDatabase . RefreshAssetActions ( Blueprint ) ;
2014-08-19 13:57:02 -04:00
}
2014-08-04 18:28:34 -04:00
}
2014-08-11 18:39:28 -04:00
//------------------------------------------------------------------------------
static void BlueprintActionDatabaseImpl : : OnAssetLoaded ( UObject * NewObject )
{
if ( UBlueprint * NewBlueprint = Cast < UBlueprint > ( NewObject ) )
{
OnBlueprintChanged ( NewBlueprint ) ;
}
2014-08-23 20:16:29 -04:00
else
{
FBlueprintActionDatabase & ActionDatabase = FBlueprintActionDatabase : : Get ( ) ;
ActionDatabase . RefreshAssetActions ( NewObject ) ;
}
2014-08-11 18:39:28 -04:00
}
//------------------------------------------------------------------------------
static void BlueprintActionDatabaseImpl : : OnAssetAdded ( FAssetData const & NewAssetInfo )
{
if ( NewAssetInfo . IsAssetLoaded ( ) )
{
2014-08-23 20:16:29 -04:00
UObject * AssetObject = NewAssetInfo . GetAsset ( ) ;
if ( UBlueprint * NewBlueprint = Cast < UBlueprint > ( AssetObject ) )
2014-08-11 18:39:28 -04:00
{
2014-09-19 18:20:43 -04:00
OnBlueprintChanged ( NewBlueprint ) ;
2014-08-11 18:39:28 -04:00
}
2014-08-23 20:16:29 -04:00
else
{
FBlueprintActionDatabase & ActionDatabase = FBlueprintActionDatabase : : Get ( ) ;
ActionDatabase . RefreshAssetActions ( AssetObject ) ;
}
2014-08-11 18:39:28 -04:00
}
}
2014-08-15 16:12:46 -04:00
//------------------------------------------------------------------------------
static void BlueprintActionDatabaseImpl : : OnAssetsPendingDelete ( TArray < UObject * > const & ObjectsForDelete )
{
FBlueprintActionDatabase & ActionDatabase = FBlueprintActionDatabase : : Get ( ) ;
for ( UObject * DeletingObject : ObjectsForDelete )
{
2015-04-01 15:47:23 -04:00
// if (!IsObjectValidForDatabase(DeletingObject))
// {
// continue;
// }
2014-08-23 20:16:29 -04:00
// have to temporarily remove references (so that this delete isn't
// blocked by dangling references)
2015-04-01 15:47:23 -04:00
if ( ActionDatabase . ClearAssetActions ( DeletingObject ) )
{
ensure ( IsObjectValidForDatabase ( DeletingObject ) ) ;
// in case they choose not to delete the object, we need to add
// these back in to the database, so we track them here
PendingDelete . Add ( DeletingObject ) ;
2019-10-21 11:03:48 -04:00
}
// If this asset contains a blueprint, ensure that it's actions are also marked for pending delete
else if ( const IBlueprintAssetHandler * Handler = FBlueprintAssetHandler : : Get ( ) . FindHandler ( DeletingObject - > GetClass ( ) ) )
{
UBlueprint * Blueprint = Handler - > RetrieveBlueprint ( DeletingObject ) ;
if ( Blueprint & & ActionDatabase . ClearAssetActions ( Blueprint ) )
{
PendingDelete . Add ( Blueprint ) ;
}
}
2014-08-15 16:12:46 -04:00
}
}
2014-08-11 18:39:28 -04:00
//------------------------------------------------------------------------------
static void BlueprintActionDatabaseImpl : : OnAssetRemoved ( FAssetData const & AssetInfo )
{
FBlueprintActionDatabase & ActionDatabase = FBlueprintActionDatabase : : Get ( ) ;
if ( AssetInfo . IsAssetLoaded ( ) )
{
2014-08-23 20:16:29 -04:00
UObject * AssetObject = AssetInfo . GetAsset ( ) ;
2014-12-01 19:02:24 -05:00
OnAssetRemoved ( AssetObject ) ;
2014-08-11 18:39:28 -04:00
}
2014-09-26 11:31:34 -04:00
else
{
2022-09-07 01:06:47 -04:00
ActionDatabase . ClearUnloadedAssetActions ( AssetInfo . GetSoftObjectPath ( ) ) ;
2014-09-26 11:31:34 -04:00
}
}
2014-12-01 19:02:24 -05:00
//------------------------------------------------------------------------------
static void BlueprintActionDatabaseImpl : : OnAssetRemoved ( UObject * AssetObject )
{
FBlueprintActionDatabase & ActionDatabase = FBlueprintActionDatabase : : Get ( ) ;
ActionDatabase . ClearAssetActions ( AssetObject ) ;
2015-07-31 14:01:56 -04:00
for ( auto It ( PendingDelete . CreateIterator ( ) ) ; It ; + + It )
{
if ( ( * It ) . Get ( ) = = AssetObject )
{
// the delete went through, so we don't need to track these for re-add
It . RemoveCurrent ( ) ;
break ;
}
}
2014-12-01 19:02:24 -05:00
}
//------------------------------------------------------------------------------
static void BlueprintActionDatabaseImpl : : OnBlueprintUnloaded ( UBlueprint * BlueprintObj )
{
OnAssetRemoved ( BlueprintObj ) ;
}
2014-09-26 11:31:34 -04:00
//------------------------------------------------------------------------------
static void BlueprintActionDatabaseImpl : : OnAssetRenamed ( FAssetData const & AssetInfo , const FString & InOldName )
{
FBlueprintActionDatabase & ActionDatabase = FBlueprintActionDatabase : : Get ( ) ;
if ( ! AssetInfo . IsAssetLoaded ( ) )
{
2022-09-07 01:06:47 -04:00
ActionDatabase . MoveUnloadedAssetActions ( FSoftObjectPath ( InOldName ) , AssetInfo . GetSoftObjectPath ( ) ) ;
2014-09-26 11:31:34 -04:00
}
2014-08-11 18:39:28 -04:00
}
2015-04-11 10:23:56 -04:00
//------------------------------------------------------------------------------
static void BlueprintActionDatabaseImpl : : OnWorldAdded ( UWorld * NewWorld )
{
2015-04-14 22:58:32 -04:00
if ( IsObjectValidForDatabase ( NewWorld ) )
{
FBlueprintActionDatabase : : Get ( ) . RefreshAssetActions ( ( UObject * ) NewWorld ) ;
}
2015-04-11 10:23:56 -04:00
}
2014-09-17 16:02:23 -04:00
//------------------------------------------------------------------------------
static void BlueprintActionDatabaseImpl : : OnWorldDestroyed ( UWorld * DestroyedWorld )
{
2015-04-14 22:58:32 -04:00
if ( IsObjectValidForDatabase ( DestroyedWorld ) )
{
FBlueprintActionDatabase : : Get ( ) . ClearAssetActions ( ( UObject * ) DestroyedWorld ) ;
}
2015-04-11 10:23:56 -04:00
}
//------------------------------------------------------------------------------
2015-04-14 09:16:22 -04:00
static void BlueprintActionDatabaseImpl : : OnRefreshLevelScripts ( UWorld * World )
2015-04-11 10:23:56 -04:00
{
2015-04-14 22:58:32 -04:00
if ( IsObjectValidForDatabase ( World ) )
{
FBlueprintActionDatabase : : Get ( ) . RefreshAssetActions ( ( UObject * ) World ) ;
}
2014-09-17 16:02:23 -04:00
}
//------------------------------------------------------------------------------
static bool BlueprintActionDatabaseImpl : : IsObjectValidForDatabase ( UObject const * Object )
{
bool bReturn = false ;
2015-01-15 15:57:51 -05:00
if ( Object = = nullptr )
{
bReturn = false ;
}
2021-02-18 18:13:28 -04:00
else if ( Object - > GetOutermost ( ) - > HasAnyPackageFlags ( PKG_PlayInEditor | PKG_ForDiffing ) )
2014-12-15 15:29:48 -05:00
{
2021-02-18 18:13:28 -04:00
// Do not keep track of any PIE/diff objects as they will not exist after those processes finish
2014-12-15 15:29:48 -05:00
bReturn = false ;
}
else if ( Object - > IsAsset ( ) )
2014-09-17 16:02:23 -04:00
{
bReturn = true ;
}
2019-10-01 20:41:42 -04:00
else if ( Object - > IsA < UBlueprint > ( ) )
2014-09-17 16:02:23 -04:00
{
2019-10-01 20:41:42 -04:00
// If this is a blueprint contained within an asset, we can include it in the action database
UObject * PotentialAsset = Object - > GetOuter ( ) ;
while ( PotentialAsset )
{
if ( PotentialAsset - > IsAsset ( ) )
{
bReturn = true ;
break ;
}
PotentialAsset = PotentialAsset - > GetOuter ( ) ;
}
2014-09-17 16:02:23 -04:00
}
2015-04-17 04:47:41 -04:00
else if ( UWorld const * World = Cast < UWorld > ( Object ) )
2015-04-11 10:23:56 -04:00
{
2015-04-17 04:47:41 -04:00
// We now use worlds as databse keys to manage the level scripts they own, but we only want Editor worlds.
if ( World - > WorldType = = EWorldType : : Editor )
{
bReturn = true ;
}
2015-04-11 10:23:56 -04:00
}
2014-09-17 16:02:23 -04:00
return bReturn ;
}
2014-07-09 12:17:42 -04:00
/*******************************************************************************
* FBlueprintActionDatabase
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2018-05-30 14:47:08 -04:00
static FBlueprintActionDatabase * DatabaseInst = nullptr ;
2014-08-04 18:28:34 -04:00
//------------------------------------------------------------------------------
2014-08-08 15:35:56 -04:00
FBlueprintActionDatabase & FBlueprintActionDatabase : : Get ( )
2014-08-04 18:28:34 -04:00
{
2014-08-08 15:35:56 -04:00
if ( DatabaseInst = = nullptr )
2014-08-04 18:28:34 -04:00
{
2014-08-08 15:35:56 -04:00
DatabaseInst = new FBlueprintActionDatabase ( ) ;
}
2014-08-04 18:28:34 -04:00
2014-08-08 15:35:56 -04:00
return * DatabaseInst ;
}
2014-08-04 18:28:34 -04:00
2018-05-30 14:47:08 -04:00
//------------------------------------------------------------------------------
FBlueprintActionDatabase * FBlueprintActionDatabase : : TryGet ( )
{
return DatabaseInst ;
}
2014-08-08 15:35:56 -04:00
//------------------------------------------------------------------------------
FBlueprintActionDatabase : : FBlueprintActionDatabase ( )
{
RefreshAll ( ) ;
2020-02-03 11:11:27 -05:00
OnAssetLoadedDelegateHandle = FCoreUObjectDelegates : : OnAssetLoaded . AddStatic ( & BlueprintActionDatabaseImpl : : OnAssetLoaded ) ;
2014-08-11 18:39:28 -04:00
IAssetRegistry & AssetRegistry = FModuleManager : : LoadModuleChecked < FAssetRegistryModule > ( TEXT ( " AssetRegistry " ) ) . Get ( ) ;
2020-02-03 11:11:27 -05:00
OnAssetAddedDelegateHandle = AssetRegistry . OnAssetAdded ( ) . AddStatic ( & BlueprintActionDatabaseImpl : : OnAssetAdded ) ;
OnAssetRemovedDelegateHandle = AssetRegistry . OnAssetRemoved ( ) . AddStatic ( & BlueprintActionDatabaseImpl : : OnAssetRemoved ) ;
OnAssetRenamedDelegateHandle = AssetRegistry . OnAssetRenamed ( ) . AddStatic ( & BlueprintActionDatabaseImpl : : OnAssetRenamed ) ;
2014-08-15 16:12:46 -04:00
2020-02-03 11:11:27 -05:00
OnAssetsPreDeleteDelegateHandle = FEditorDelegates : : OnAssetsPreDelete . AddStatic ( & BlueprintActionDatabaseImpl : : OnAssetsPendingDelete ) ;
OnBlueprintUnloadedDelegateHandle = FKismetEditorUtilities : : OnBlueprintUnloaded . AddStatic ( & BlueprintActionDatabaseImpl : : OnBlueprintUnloaded ) ;
2014-09-17 16:02:23 -04:00
2020-02-03 11:11:27 -05:00
OnWorldAddedDelegateHandle = GEngine - > OnWorldAdded ( ) . AddStatic ( & BlueprintActionDatabaseImpl : : OnWorldAdded ) ;
OnWorldDestroyedDelegateHandle = GEngine - > OnWorldDestroyed ( ) . AddStatic ( & BlueprintActionDatabaseImpl : : OnWorldDestroyed ) ;
RefreshLevelScriptActionsDelegateHandle = FWorldDelegates : : RefreshLevelScriptActions . AddStatic ( & BlueprintActionDatabaseImpl : : OnRefreshLevelScripts ) ;
2015-03-09 20:28:13 -04:00
2020-02-03 11:11:27 -05:00
OnModulesChangedDelegateHandle = FModuleManager : : Get ( ) . OnModulesChanged ( ) . AddStatic ( & BlueprintActionDatabaseImpl : : OnModulesChanged ) ;
2019-01-10 17:26:53 -05:00
2021-03-18 08:13:59 -04:00
OnReloadCompleteDelegateHandle = FCoreUObjectDelegates : : ReloadCompleteDelegate . AddStatic ( & BlueprintActionDatabaseImpl : : OnReloadComplete ) ;
2020-02-03 11:11:27 -05:00
}
2020-01-30 11:11:12 -05:00
2020-02-03 11:11:27 -05:00
//------------------------------------------------------------------------------
FBlueprintActionDatabase : : ~ FBlueprintActionDatabase ( )
{
FCoreUObjectDelegates : : OnAssetLoaded . Remove ( OnAssetLoadedDelegateHandle ) ;
if ( FModuleManager : : Get ( ) . IsModuleLoaded ( TEXT ( " AssetRegistry " ) ) )
{
2022-06-21 11:07:36 -04:00
IAssetRegistry * AssetRegistry = FModuleManager : : LoadModuleChecked < FAssetRegistryModule > ( TEXT ( " AssetRegistry " ) ) . TryGet ( ) ;
if ( AssetRegistry )
{
AssetRegistry - > OnAssetAdded ( ) . Remove ( OnAssetAddedDelegateHandle ) ;
AssetRegistry - > OnAssetRemoved ( ) . Remove ( OnAssetRemovedDelegateHandle ) ;
AssetRegistry - > OnAssetRenamed ( ) . Remove ( OnAssetRenamedDelegateHandle ) ;
}
2020-02-03 11:11:27 -05:00
}
FEditorDelegates : : OnAssetsPreDelete . Remove ( OnAssetsPreDeleteDelegateHandle ) ;
FKismetEditorUtilities : : OnBlueprintUnloaded . Remove ( OnBlueprintUnloadedDelegateHandle ) ;
if ( GEngine )
{
GEngine - > OnWorldAdded ( ) . Remove ( OnWorldAddedDelegateHandle ) ;
2021-11-18 15:27:23 -05:00
GEngine - > OnWorldDestroyed ( ) . Remove ( OnWorldDestroyedDelegateHandle ) ;
2020-02-03 11:11:27 -05:00
}
FWorldDelegates : : RefreshLevelScriptActions . Remove ( RefreshLevelScriptActionsDelegateHandle ) ;
FModuleManager : : Get ( ) . OnModulesChanged ( ) . Remove ( OnModulesChangedDelegateHandle ) ;
2021-03-18 08:13:59 -04:00
FCoreUObjectDelegates : : ReloadCompleteDelegate . Remove ( OnReloadCompleteDelegateHandle ) ;
2014-08-04 18:28:34 -04:00
}
2014-07-09 12:17:42 -04:00
//------------------------------------------------------------------------------
2014-08-08 15:35:56 -04:00
void FBlueprintActionDatabase : : AddReferencedObjects ( FReferenceCollector & Collector )
2014-07-09 12:17:42 -04:00
{
2024-06-04 14:05:46 -04:00
for ( TPair < FObjectKey , TArray < TObjectPtr < UBlueprintNodeSpawner > > > & ActionListIt : ActionRegistry )
2014-07-09 12:17:42 -04:00
{
2024-06-04 14:05:46 -04:00
TArray < TObjectPtr < UBlueprintNodeSpawner > > & ActionList = ActionListIt . Value ;
for ( TObjectPtr < UBlueprintNodeSpawner > & Action : ActionList )
2022-07-22 13:03:56 -04:00
{
// We have some reports of invalid action ptrs during GC - try to catch that case here without crashing the editor while reference gathering.
if ( ! Action | | ( GIsGarbageCollecting & & ! Action - > IsValidLowLevel ( ) ) )
{
const UObject * Key = ActionListIt . Key . ResolveObjectPtr ( ) ;
2023-05-16 10:52:49 -04:00
ensureMsgf ( false , TEXT ( " Invalid action (0x%016llx) registered for object: %s " ) , ( int64 ) ( PTRINT ) Action . Get ( ) , Key ? * Key - > GetName ( ) : TEXT ( " NULL " ) ) ;
2022-07-22 13:03:56 -04:00
continue ;
}
Collector . AddReferencedObject ( Action ) ;
}
2014-07-09 12:17:42 -04:00
}
2015-07-24 17:52:02 -04:00
2024-06-04 14:05:46 -04:00
for ( TPair < FSoftObjectPath , TArray < TObjectPtr < UBlueprintNodeSpawner > > > & UnloadedActionListIt : UnloadedActionRegistry )
2015-07-24 17:52:02 -04:00
{
2024-06-04 14:05:46 -04:00
TArray < TObjectPtr < UBlueprintNodeSpawner > > & ActionList = UnloadedActionListIt . Value ;
for ( TObjectPtr < UBlueprintNodeSpawner > & Action : ActionList )
2015-09-24 11:58:53 -04:00
{
2024-06-04 14:05:46 -04:00
// Similar to above; however, we don't have any reports of failure here during GC. Nonetheless, we'll try and catch an invalid ptr value just in case.
if ( ! Action | | ( GIsGarbageCollecting & & ! Action - > IsValidLowLevel ( ) ) )
2022-07-22 13:03:56 -04:00
{
2024-06-04 14:05:46 -04:00
ensureMsgf ( false , TEXT ( " Invalid action (0x%016llx) registered for unloaded object path: %s " ) , ( int64 ) ( PTRINT ) Action . Get ( ) , * UnloadedActionListIt . Key . ToString ( ) ) ;
continue ;
2022-07-22 13:03:56 -04:00
}
2015-09-24 11:58:53 -04:00
2024-06-04 14:05:46 -04:00
Collector . AddReferencedObject ( Action ) ;
}
2015-07-24 17:52:02 -04:00
}
2014-08-08 15:35:56 -04:00
}
2014-07-09 12:17:42 -04:00
2019-03-25 14:40:23 -04:00
FString FBlueprintActionDatabase : : GetReferencerName ( ) const
{
return TEXT ( " FBlueprintActionDatabase " ) ;
}
2019-03-04 10:23:33 -05:00
int32 GBlueprintDatabasePrimingMaxPerFrame = 16 ;
static FAutoConsoleVariableRef CVarBlueprintDatabasePrimingMaxPerFrame (
TEXT ( " bp.DatabasePrimingMaxPerFrame " ) ,
GBlueprintDatabasePrimingMaxPerFrame ,
TEXT ( " How many entries should be primed in to the database per frame. " ) ,
ECVF_Default
) ;
2014-08-08 15:35:56 -04:00
//------------------------------------------------------------------------------
void FBlueprintActionDatabase : : Tick ( float DeltaTime )
{
const double DurationThreshold = FMath : : Min ( 0.003 , DeltaTime * 0.01 ) ;
2014-08-11 18:39:28 -04:00
2019-01-10 17:26:53 -05:00
if ( BlueprintActionDatabaseImpl : : bRefreshAllRequested )
{
RefreshAll ( ) ;
}
2023-08-17 13:25:12 -04:00
else if ( ! BlueprintActionDatabaseImpl : : PendingModules . IsEmpty ( ) )
{
PreRefresh ( false ) ;
}
2022-11-23 11:08:44 -05:00
// Check for any modules that may have been loaded since the last tick. Even if we call RefreshAll() above, we still want to run
// through this list in order to keep track of loaded modules containing native script types that are registered into the database.
if ( ! BlueprintActionDatabaseImpl : : PendingModules . IsEmpty ( ) )
{
TRACE_CPUPROFILER_EVENT_SCOPE ( FBlueprintActionDatabase : : ProcessLoadedModules ) ;
// Treat this as an initialization event so that the registrar is configured to register new types rather than to refresh existing ones. For
// example, if this module contains a new node type that implements a GetMenuActions() override, most implementations assume that a NULL action
// key filter indicates the initialization path. This ensures we get the same behavior as node types that are registered via the RefreshAll() API.
TGuardValue < bool > ScopedInitialization ( BlueprintActionDatabaseImpl : : bIsInitializing , true ) ;
// Register actions for any new modules that were explicitly loaded prior to this tick. Note that native type objects defined within the module
// may have already been registered prior to receiving the load event; in that case, action(s) associated with those objects are already present.
for ( const FName & LoadedModule : BlueprintActionDatabaseImpl : : PendingModules )
{
if ( BlueprintActionDatabaseImpl : : LoadedModules . Contains ( LoadedModule ) )
{
continue ;
}
// Look for a script package that's associated with this module load. If there isn't one, we can skip it.
const FName ModuleScriptPackageName = FPackageName : : GetModuleScriptPackageName ( LoadedModule ) ;
if ( const UPackage * ModuleScriptPackage = FindPackage ( nullptr , * ModuleScriptPackageName . ToString ( ) ) )
{
TArray < UObject * > ObjectsToProcess ;
const bool bIncludeNestedObjects = false ;
GetObjectsWithPackage ( ModuleScriptPackage , ObjectsToProcess , bIncludeNestedObjects , RF_ClassDefaultObject ) ;
for ( UObject * Object : ObjectsToProcess )
{
UClass * ObjectAsClass = Cast < UClass > ( Object ) ;
const bool bIsNativeTypeObject = ObjectAsClass ! = nullptr | | Object - > IsA < UScriptStruct > ( ) | | Object - > IsA < UEnum > ( ) ;
// Only need to include native types and those not already added through the registrar at initialization time.
if ( ! bIsNativeTypeObject | | ActionRegistry . Contains ( Object ) )
{
continue ;
}
if ( ObjectAsClass )
{
RefreshClassActions ( ObjectAsClass ) ;
}
else
{
RefreshAssetActions ( Object ) ;
}
}
// We only need to track modules that contain a script package in the off-chance that it is ever unloaded, in which case we'd need
// to refresh the database to account for any types that go missing as a result. Otherwise, we can ignore this module when unloaded.
BlueprintActionDatabaseImpl : : LoadedModules . Add ( LoadedModule ) ;
}
}
BlueprintActionDatabaseImpl : : PendingModules . Empty ( ) ;
}
2019-01-10 17:26:53 -05:00
2014-08-15 16:12:46 -04:00
// entries that were removed from the database, in preparation for a delete
// (but the user ended up not deleting the object)
2015-07-31 14:01:56 -04:00
for ( TWeakObjectPtr < UObject > AssetObj : BlueprintActionDatabaseImpl : : PendingDelete )
2014-08-15 16:12:46 -04:00
{
2015-07-31 14:01:56 -04:00
if ( AssetObj . IsValid ( ) )
2014-08-23 20:16:29 -04:00
{
2015-07-31 14:01:56 -04:00
RefreshAssetActions ( AssetObj . Get ( ) ) ;
2014-08-23 20:16:29 -04:00
}
2014-08-15 16:12:46 -04:00
}
BlueprintActionDatabaseImpl : : PendingDelete . Empty ( ) ;
2014-09-19 18:20:43 -04:00
// priming every database entry at once would cause a hitch, so we spread it
// out over several frames
int32 PrimedCount = 0 ;
2019-03-04 10:23:33 -05:00
while ( ( ActionPrimingQueue . Num ( ) > 0 ) & & ( PrimedCount < GBlueprintDatabasePrimingMaxPerFrame ) )
2014-08-08 15:35:56 -04:00
{
2014-08-11 18:39:28 -04:00
auto ActionIndex = ActionPrimingQueue . CreateIterator ( ) ;
2014-08-08 18:01:38 -04:00
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3510040)
#lockdown Nick.Penwarden
=====================================
MAJOR FEATURES + CHANGES
=====================================
Change 3459524 by Marc.Audy
Get/Set of properties that were previously BPRW/BPRO should error when used
#jira UE-20993
Change 3460004 by Phillip.Kavan
#jira UE-45171 - Fix C++ compilation failures during packaging caused by nativizing a Blueprint that overrides a native function with a 'TSubclassOf' parameter or return value.
Change summary:
- Modified FKismetCompilerContext::CreateParametersForFunction() to pass the 'CPF_UObjectWrapper' flag through to new function parameter properties during Blueprint compilation.
Change 3461210 by Phillip.Kavan
#jira UE-44505 - Fix occasional Blueprint editor crashes that could occur while rebuilding the context menu from the action registry.
Change summary:
- Modified FBlueprintActionDatabase::FActionRegistry to use an FObjectKey as the key type. This allows us to test entries for UObject validity before rebuilding context menu items based on the action database.
- Changed FBlueprintActionInfo::CachedOwnerClass to be a TWeakObjectPtr rather than a raw UClass* since it's based on the ActionOwner, which could potentially become invalid after the OwnerClass has been cached.
- Modified FBlueprintActionDatabase::RefreshAssetActions() to exclude World assets if the WorldType is not EWorldType::Editor. This eliminates an issue with unreferenced "inactive" GC'd world objects being left in the BP action registry after cooking, at which point the keys could become invalid.
- Added FBlueprintActionDatabase::DeferredRemoveEntry() to allow for scheduling removal of entries from outside of the database if they are known to be invalid.
- Modified FBlueprintActionDatabase::Tick() to handle deferred entry removals.
- Modified FBlueprintActionMenuBuilder::RebuildActionList() to both test actions for validity before building menu items and schedule removal of invalid actions on the next tick.
Notes:
- Alternatively we could just include UObject keys in the database's AddReferencedObject impl, but that would then prevent objects from ever being GC'd if they are not explicitly removed. For most entries the action database takes the approach of explicitly removing entries via delegate when the UObject is destroyed, so I chose to use a TWeakObjectPtr instead so that any entries that may not be getting explicitly removed via delegate will now simply become invalidated if the UObject key is GC'd due to not being referenced. I also set it up to clean and remove any entries (along with any associated node spawners) that are found to be invalid the next time we open the BP editor.
Change 3461373 by Lukasz.Furman
fixed async navmesh rebuilds not kicking in for requests from navdata.bForceRebuildOnLoad
#jira UE-44231
Change 3461409 by Lukasz.Furman
fixed reenabling automatic navmesh generation in Editor Preferences
#ue4
Change 3461550 by Ben.Zeigler
#jira UE-45328 Fix local variable support for Redirectors and other save-time validation. We need to run the local variables to UProperty and back at save time
Add new flag PPF_SerializedAsImportText which is used for BP pins/default values and indicates that something has been serialized as import text and so needs to handle string asset redirectors
Change 3462625 by Zak.Middleton
#ue4 - Fix InterpToMovementComponent not setting velocity on the object it moves. Fix movement rate when substepping enabled (other related fixes to come).
github PR #3620
Change 3462796 by Dan.Oconnor
Fix for spamming BroadcastBlueprintReinstanced and for creating CDO at wrong time when compiling FrontEnd.uasset in OrionGame
#jira UE-45434
Change 3462995 by Ben.Zeigler
#jira UE-16941 Fix it so Load Asset node works with a literal value as well as a connected pin
Change 3463099 by Ben.Zeigler
#jira UE-45471 Allow abstract base classes for primary assets
Change 3464809 by Marc.Audy
Expose FVector2D / FVector2D to blueprints
#jira UE-45427
Change 3467254 by Mieszko.Zielinski
Added an AI helper BP function that supplies caller with a copy of navigation path given controller is currently following #UE4
Change 3467644 by Dan.Oconnor
Fix for cook issues in ocean when using compilation manager, one issue caused by bad dependencies list, one issue caused by lack of subobject mapping in archetype reinstancing.
#jira UE-45443, UE-45444
Change 3468176 by Dan.Oconnor
Fix dependent blueprints being marked dirty when a blueprint is compiled
Change 3468353 by Michael.Noland
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
Change 3470532 by Dan.Oconnor
Re-enable compilation manager
Change 3470572 by Dan.Oconnor
Fix for pin paramters resetting when an archetype was reinstanced
#jira UE-45619
#rnx
Change 3471949 by Mason.Seay
Adding Primary Assets for testing
Change 3472074 by Ben.Zeigler
#jira UE-45140 Convert iterative cooking to use the Asset Registry as it's only mode, remove old hash and timestamp versions. This allows deleting the entire PackageDependencyInfo module
Change the asset registry iteration to not compute a hash at all, and instead store the script package guids in it's cache.
Expose bIgnoreIniSettingsOutOfDateForIteration and bIgnoreScriptPackagesOutOfDateForIteration in cooker settings, affects rather to listen to ini/script changes when doing iterative cooking
Change 3472079 by Ben.Zeigler
With new incremental cook options, change Fortnite to never care about ini settings, but do care about code changes. This can be changed but from previous discussions we wanted to be more safe than fast here
Change 3473429 by Lukasz.Furman
changed path following update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473476 by Lukasz.Furman
changed crowd simulation path update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473663 by Ben.Zeigler
Fix it so base k2node registers framework version, this is needed for the assetptr fixup I previously added
Change 3473679 by Mason.Seay
Slight cleanup of test map and added ability to teleport across level for easy navigation
Change 3473712 by Marc.Audy
Do default value validation against the actual value of the default entry of an enum rather than the serialized empty autogenerated default value
Change 3474055 by Marc.Audy
When nodes are reconstructed any pins that were previously linked or set to non-default values that have been removed will no longer simply vanish, but instead will remain in an Orphaned state until dealt with.
#jira UE-41828
Change 3474119 by mason.seay
Tweaked Force Feedback test
Change 3474156 by Marc.Audy
Actually enable orphan pin retention
Change 3474382 by Ben.Zeigler
Class.h Header and comment cleanup. Started this because IsChildOf did not have a comment and it's usage is a bit confusing
Change 3474386 by Ben.Zeigler
Close popup window when adding asset class to audit window
Change 3474491 by Ben.Zeigler
Remove ability for Worlds to not be saved as assets, this has been the default since 2014.
Change 3475363 by Marc.Audy
Alt-click now works with orphaned pins
#jira UE-45699
Change 3475523 by Marc.Audy
Fixup Fortnite and Paragon content for orphaned pin errors and warnings
Change 3475623 by Phillip.Kavan
#jira UE-45477 - Fix an EDL assertion on load in a nativized build with one or more Actor subobjects instanced via the EditInlineNew UI in the BP class defaults property editor.
Change summary:
- Modified FEmitDefaultValueHelper::OuterGenerate() to emit code to construct/initialize instanced subobject values that do not have the RF_DefaultSubObject flag set, and also to recursively handle nested subobjects for those values.
- Modified FEmitDefaultValueHelper::HandleInstancedSubobject() to alternatively emit a 'NewObject' assignment statement rather than a 'CreateDefaultSubobject' statement if only RF_ArchetypeObject is set on the source object value.
Change 3476008 by Dan.Oconnor
Fix for failing to preload our super class's subobjects. Effectively moving UBlueprint::ForceLoad calls earlier in loading process. This only results in data resetting to your parent's parent's default value from your parent's default value.
#jira UE-18765
Change 3476115 by Dan.Oconnor
Fix missing category information for inherited functions when using compilation manager
#jira UE-45660
#rnx
Change 3476577 by Lukasz.Furman
added early outs from navmesh layer generation when there's no walkable cells or contours to avoid allocating 0 bytes by next generation steps (behavior differs between platforms)
#ue4
Change 3476587 by Phillip.Kavan
#jira UE-45517 - Fix a regression in which dragging UMG widgets around in the designer view results in redundantly-compounded BP class properties and context menu actions.
Change summary:
- Modified SDesignerView::ClearDropPreviews() to move the widget that was removed from the tree into the transient package. This ensures that FWidgetBlueprintCompiler::CreateClassVariablesFromBlueprint() won't pick them up.
- Modified SDesignerView::ProcessDropAndAddWidget() to also consider any widgets not added to the 'DropPreviews' array as being transient (i.e. also move them into the transient package since they were not added to the tree).
Notes:
- The regression was introduced by the changes in CL# 3410168, and was merged to Main at CL# 3431398.
#rnx
Change 3476723 by Dan.Oconnor
Match old behavior wrt updating implemented interfaces in blueprints - this logic from FKismetEditorUtilities::CompileBlueprint was missing in compilation manager
#jira UE-45468
#rnx
Change 3476948 by Michael.Noland
Framework: Changed AActor::FindComponentByClass (and AActor::GetComponentByClass by extension) to return nullptr when passed a nullptr class, rather than crashing
Change 3476970 by Ben.Zeigler
Fix bug I introduced in 4.16 where assigning assets to multiple chunks did not work properly
Change 3477536 by Marc.Audy
Don't display default value box on linked orphaned input pins
Change 3477835 by Marc.Audy
Fix pins orphaned by deletion of an entry in a user-defined enum disappearing instead of remaining connected
#jira UE-45754
Change 3478027 by Marc.Audy
Minor performance optimization
#rnx
Change 3478198 by Phillip.Kavan
#jira UE-42431 - Remove an unnecessary ensure() when pasting an event node.
Change summary:
- Modified UEdGraphSchema_K2::CreateSubstituteNode() to no longer ensure() that we have a valid PreExistingNode; it's only used for logging when a substitute node is created in response to a conflict with an existing node.
Change 3478485 by Marc.Audy
Eliminate extraneous error messages about orphaned pins on get/set nodes
#jira UE-45749
#rnx
Change 3478756 by Marc.Audy
Fix fallout from changes to DoesDefaultValueMatchAutogenerated for user defined enums
#jira UE-45721
#rnx
Change 3478926 by Marc.Audy
Non-blueprint type structs can no longer be made/broken
Non-blueprint visible properties in structs will no longer have pins created for them
#jira UE-43122
Change 3478988 by Marc.Audy
DeltaTime for a tick function with a tick interval is now correct after disabling and then reenabling the tick function.
#jira UE-45524
Change 3479818 by Marc.Audy
Allow ctrl-drag off of orphan pins
#jira UE-45803
Change 3480214 by Marc.Audy
Modifications to user defined enumerations are now transacted
#jira UE-43866
Change 3480579 by Marc.Audy
Maintain all pin properties through transactions.
#rn Reference pins that are removed and then restored via undo now correctly have the diamond icon instead of the standard circle.
Change 3481043 by Marc.Audy
Make/Break of structs does not depend on having blueprint exposed properties.
Splitting of a struct pin still requires blueprint exposed properties.
#jira UE-45840
#jira UE-45831
Change 3481271 by Ben.Zeigler
Fix the AssetManager chunking code to use ChunkDependencyInfo instead of a hardcoded check for chunk 0
Clean up ChunkDependencyInfo and make it properly public
Move ShouldSetManager to be WITH_EDITOR
Ported from WEX branch
#RB peter.sauerbrei
Change 3481373 by Dan.Oconnor
Reduce reliance on expensive FindDelegateSignature. 3275922 made warnings about a ambiguous search more likely as it preserved names of members on the REINST_ classes
#jira UE-45704
Change 3481380 by Ben.Zeigler
Change it so Struct and Object AssetRegistrySearchable properties do not show up in content browser, they are not helpful
Change 3482362 by Marc.Audy
Fix properties not exposed to blueprint warnings for input properties on function graphs.
#jira UE-45824
Change 3482406 by Ben.Zeigler
#jira UE-45883 Fix Switch On Gameplay Tag Container node, and add switch nodes to TagCheck map
Change 3482498 by Ben.Zeigler
Attempt to fix hot reload issues with Asset Manager. We need to reset and re-acquire the asset classes when rescanning, as they may be pointing to the replaced class
Change 3482517 by Lukasz.Furman
fixed smart navlink update functions removing important flag
#jira UE-45875
Change 3482538 by Marc.Audy
When comparing float, vector, and rotator values for whether the the default matches the autogenerated do not use the string compare because differences in use of decimal or number of 0s after decimal are then considered not the same float
#jira UE-45846
Change 3482773 by Marc.Audy
Don't show default value or pass by reference for exec pins
#jira UE-45868
Change 3482791 by Ben.Zeigler
#jira UE-45800 Correctly dirty game mode blueprint when changing player controller/etc classes from game mode customization
Fix it so MarkBlueprintAsStructurallyModified calls MarkBlueprintAsModified as several fixes were only in the second function
Change 3483131 by Zak.Middleton
#ue4 - InterpToMovementComponent:
- Fix velocity not zeroed when interpolation stops.
- Various fixes when calculating velocity and time when substepping is enabled.
- Improve accuracy of interpolation when looping and there is time remaining after the loop event is hit. Consume the remainder of the time after the event back in the loop (similar to handling a blocking impact).
#jira UE-45690
Change 3483146 by Phillip.Kavan
#jira UE-38358 - Propagate 'const' function flag from interface Blueprint to implementing Blueprints.
Change summary:
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() to call SkeletalRecompileChildren() on dependent BPs when the target is an interface BP.
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified::FRefreshHelper::SkeletalRecompileChildren() to set child BP status to BS_Dirty after compiling.
- Modified ConformInterfaceByName() (FBlueprintEditorUtils) to use the interface's skeleton class for function iteration as well as to match the Function Entry node's 'const' setting to the interface UFunction's signature.
Change 3483340 by Ben.Zeigler
Fix issue querying asset registry after a hot reload, make sure pending kill objects are never considered to be Assets
Change 3483548 by Michael.Noland
Epic Friday: Playing around with some prototype traps
Change 3483700 by Phillip.Kavan
Fix CIS cook crash introduced by last submit.
#rnx
Change 3485217 by Ben.Zeigler
#jira UE-45519 Fix regression introduced in 4.16 where it would no longer cook all maps when no explicit maps were specified in ini or game callback. Moved the code that detects changes before culture/default map code and hardened it to deal with the case where some engine packages were already in the list before it entered the function
Change 3485367 by Dan.Oconnor
Avoid adding mappings to anim node when creating variables on the skeleton class and using the compilation manager
#jira UE-45756
Change 3485565 by Ben.Zeigler
#jira UE-45948 Fix compilation manager to properly reset variable default values after promoting a pin to local variable
Change 3485566 by Marc.Audy
Fix crashes caused by undo/redo of user defined struct changes
#jira UE-45775
#jira UE-45781
Change 3485805 by Michael.Noland
PR #3459: Fix for world origin shifting and SpringArmComponent location lag (Contributed by michail-nikolaev)
#jira UE-43747
Change 3485807 by Michael.Noland
PR #3485: Added additional textures field to paper 2d tileset class (Contributed by gryphonmyers)
#jira UE-44041
Change 3485811 by Michael.Noland
Framework: Fixed a bug in FStreamLevelAction::MakeSafeLevelName to avoid appending the PIE prefix multiple times (fixes functions like Unload Streaming Level when passed a full package name from an instanced streaming level)
Change 3485829 by Michael.Noland
Framework: Made GetWorldAssetPackageFName BlueprintCallable so instanced levels can be unloaded
Change 3485830 by Michael.Noland
PR #3568: add API declarations to ALevelStreamingVolume methods (Contributed by kayama-shift)
#jira UE-45002
Change 3486039 by Michael.Noland
PR #3495: UE-44014: Refreshing node error fixes (Contributed by projectgheist)
- Empty out the ErrorMsg when a node gets refreshed to prevent the same error messages from compounding
- Added support for split pins in UK2Node_Event::IsFunctionEntryCompatible
- Added a missing check for the delegate pin name on the entry node part of UK2Node_Event::IsFunctionEntryCompatible
#jira UE-44014
Change 3486093 by Michael.Noland
PR #3379: Added GAMEPLAYABILITIES_API to all Ability Tasks. (Contributed by ryanjon2040)
#jira UE-42903
Change 3486139 by Michael.Noland
Blueprints: Added new config options for execution wire thickness when not debugging (DefaultExecutionWireThickness) and data wire thicknesses (DefaultDataWireThickness) to the Graph Editor Settings page
#rn
Change 3486154 by Michael.Noland
Framework: Speculative fix for CIS error about FStructOnScope
#rnx
Change 3486180 by Dan.Oconnor
Better match old logic for determining when to skip data only compile
#jira UE-45830
Change 3487276 by Marc.Audy
Fix crash when using Setter with a locally scoped variable
#rnx
Change 3487278 by Marc.Audy
Ensure that pin change notifications occur on all pin breaks unless it is part of a node being garbage collected
Change 3487658 by Marc.Audy
Ensure that child actor template is created for subclasses
#jira UE-45985
Change 3487699 by Marc.Audy
Move non-templated elements out of FArchiveReplaceObjectRef and put them in FArchiveReplaceObjectRefBase
Change 3487813 by Dan.Oconnor
Asset demonstrating a crash
Change 3488101 by Marc.Audy
Fix crash with spawn/construct actor/object from class nodes when they no longer had any pins.
Correctly orphan pins when a node goes to 0 pins.
Change 3488337 by Marc.Audy
Editable pin base should not manually remove pin and let reconstruct node and rewire pins do their job
#jira UE-46020
Change 3488512 by Dan.Oconnor
ConstructObject nodes and SubInstances nodes use skeleton class when compilation manager can provide it
#jira UE-45830, UE-45965
#rnx
Change 3488631 by Michael.Noland
Framework: Fixed a crash when loading a blueprint with a parent class of ALevelBounds caused by trying to register the class default object with a non-existent level
#jira UE-45630
Change 3488665 by Michael.Noland
Blueprints: Improve the details panel customization for optional pin nodes like Struct Member Get/Set
- The category, raw name, and tooltip of the property are now included as part of the filter text as well
- The property tooltip is now displayed when hovering over the property name
- Code updated to use GET_MEMBER_NAME_CHECKED() where appropriate
Change 3489324 by Marc.Audy
Fix recursion causing stack crash
#jira UE-46038
#rnx
Change 3489326 by Marc.Audy
Fix cooking crash
#jira UE-46031
#rnx
Change 3489687 by mason.seay
Assets for testing orphan pins
Change 3489701 by Marc.Audy
Back out changelist 3487278 and 3489443 and make targetted changes for fixing up orphan pin cases where changing connections doesn't remove the pin.
#jira UE-46051
#jira UE-46052
#rnx
Change 3490352 by Dan.Oconnor
Fix for missing WidgetTree on Skeleton class - just look directly at the WidgetBlueprint
#jira UE-46062
Change 3490814 by Marc.Audy
Make callfunction/macro instances save all pins in orphan state more similar to previous behavior
#rnx
Change 3491022 by Dan.Oconnor
Properly clean up 'Key' property when we fail to create a value property
#jira UE-45279
Change 3491071 by Ben.Zeigler
#jira UE-45981 Fix rotation issues, vector/rotator pins with empty strings were not matching due to uninitialized memory.
Change 3491244 by Michael.Noland
Blueprints: Add compile time message back to the output log (will not auto-open the output log if there were no warnings/errors)
#jira UE-32948
Change 3491276 by Michael.Noland
Blueprints: Fixed some bugs where a newly added item would fail show up in the "My Blueprints" tree if there was a filter active (e.g., when promoting a variable)
- Centralized the logic for clearing the filter so it happens when we try and fail to select the item, rather than ad hoc in various other places
- Made it only clear the filter if necessary, rather than (almost) always clearing it when adding an item
#jira UE-43372
Change 3491562 by Marc.Audy
Put back pin removal in to editable pin base and instead modify the pin destroy implementation to take down child split pins with it
#jira UE-46020
#rnx
Change 3491658 by Marc.Audy
Unify RemoveUserDefinedPin implementations. Use version that has break to avoid size change assert
#rnx
Change 3491946 by Marc.Audy
ReconstructSinglePin no longer destroys OldPin (avoids oprhaned sub pins being destroyed before reparented)
RewireOldPinsToNewPins now destroys OldPins at the end (calling code no longer reponsible)
DestroyImpl now prunes out SubPins that had already been trashed
#rnx
Change 3492040 by Marc.Audy
Discard exec/then pins from a callfunction that has been converted to a pure node
#rnx
Change 3492200 by Zak.Middleton
#ue4 - Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size.
Fixes possible regression from CL 3359561 that removed the Reset(...) entirely.
#jira UE-46012
Change 3492290 by Ben.Zeigler
#jira UE-46108 Fix StringLibrary Mid to never crash, Substring had already been fixed
Change 3492311 by Marc.Audy
Don't clear the pin type if what you're connecting to's pin type is wildcard
#rnx
Change 3492680 by Dan.Oconnor
Handle missing generated class when using compilation manager - tested by forcing compile of BP_ParentClassIsMissingType.uasset
Change 3492826 by Marc.Audy
Don't do pin connection list change notifications from DestroyPins while regenerating on load
#jira UE-46112
#rnx
Change 3492851 by Michael.Noland
Core: Fixed various crashes when using UObject::CallFunctionByNameWithArguments with non-trivial argument types by properly initializing the allocated parameters
Change 3492852 by Michael.Noland
Framework: Fixed a crash if ACharacter::FindComponentByClass was passed a nullptr class
Change 3492934 by Marc.Audy
Fix ensure and crash delete macro containing orphaned pin
#rnx
Change 3493079 by Dan.Oconnor
Fix for crash when opening ThirdPersonAnimBlueprint and ThirdPersonAnimBlueprint_Perf then clicking 'Compile' button in ThirdPersonAnimBlueprint editor. Make sure the convenience members in the derived compilers get set when we relink child classes (which requires making cdos, which requires PropagateValuesToCDO..)
#rnx
Change 3493346 by Phillip.Kavan
#jira UE-40560 - Fix a reported crash when pasting nodes between unrelated Blueprint graphs.
Change summary:
- Modified FEdGraphUtilities::PostProcessPastedNodes() to ensure() on a NULL pin entry; this will allow execution to continue while still alerting us since it is an unexpected result. Also added an 'else' case to then remove the NULL entry so that PostPasteNode() implementations don't all have to guard against NULL pin entries. When the node is reconstructed, the NULL entry will be replaced with the correct pin initialized to its default values.
- Modified UEdGraphPin::ImportTextItem() to add some additional logging to parse error cases when importing pin properties from source T3D text. Hopefully this gives us more information when this is encountered in the future.
Change 3493938 by Michael.Noland
Blueprints: Prevent issues with renaming event dispatchers to contain periods (this may be disallowed in the future, but they no longer become uneditable)
#jira UE-45780
Change 3493945 by Michael.Noland
Blueprints: Fixed GetDelegatePoperty typos
#rnx
Change 3493997 by Michael.Noland
Blueprints: Partially reverting changes from CL# 3319966 to reroute nodes, restoring their alignment but losing the symmetrical grab handle changes
#jira UE-45760
Change 3493998 by Dan.Oconnor
Fix rare crash in RefreshStandAloneDefaultsEditor when the blueprint editor is opened and a blueprint had errors in it
Note: I stumbled across this by running a unit test and then opening a blueprint in the BPE. CrashReporter indicates 3 crashes in the last 3 days
Change 3494025 by Michael.Noland
Engine: Deleted some dead code (DEBUGGING_VIEWPORT_SIZES)
#rnx
Change 3494026 by Michael.Noland
Blueprints: V0 of a BlueprintCallable/BlueprintPure function fuzzer
- Calls exposed methods with default parameters on classes it is able to spawn for now, which catches crashes due to null and /0 but not out of bounds issues or ones on classes it can't spawn due to classwithin, abstract, etc...
- Can be called using Test.ScriptFuzzing, won't be integrated into automated tests until it is more fully fleshed out and all known issues are addressed
#rnx
Change 3496382 by Ben.Zeigler
Fix ensure when launching editor with cook on the side and incremental cooking enabled. It now flushes the background asset gather when calling the sync load all assets if one is in progress
Change 3496688 by Marc.Audy
Avoid crashing in component instance data if (for some reason) the Actor's root component isn't properly set up
#jira UE-46073
Change 3496830 by Michael.Noland
Editor: Change FEditorCategoryUtils methods to take UStruct* instead of UClass*, as they are just reading metadata
#rnx
Change 3496840 by Michael.Noland
Framework: Remove the requirement for a local player in UCheatManager::CheatScript, so it can be be started from the server side (doesn't change the availability of the cheat manager, just allows things like the redundant "cheat cheatscript scriptname" to work)
Change 3497038 by Michael.Noland
Fortnite: Added UFortDeveloperSettings to allow developers to auto-run cheats in PIE (does not occur in -game or outside of WITH_EDITOR builds)
- You can specify a list of cheat commands to run when a pawn is possessed (also needs CL# 3496840 for cheatscripts)
- You can also specify a set of items to grant to your local inventory when it is created
Change 3497204 by Marc.Audy
Fix AbilitySystemComponent not being blueprint readable.
#rnx
Change 3497668 by Mieszko.Zielinski
Fixed a crash in BT editor when dealing with enum-typed Blackboard-keys pointing to enum values that have been deleted #UE4
#jira UE-43659
Change 3497677 by Mieszko.Zielinski
Added a community-suggested working solution to patching up dynamic navmesh after world offset #UE4
Also, fixed a crash related to navmesh rebuilding if generation was configured to lazily gather navigatble geometry
#jira UE-41293
Change 3497678 by Mieszko.Zielinski
Marked AbstractNavData class as transient #UE4
We never want to save it to levels
Change 3497679 by Mieszko.Zielinski
Made NavModifierVolume responsive to editor-time property changes #UE4
#jira UE-32831
Change 3497900 by Dan.Oconnor
Fix bad skel reference when using construct object from class, just limiting scope of 3491946. To reproduce the bug just nativize QA Game, including the TM-Gameplay level
#rnx
Change 3497904 by Dan.Oconnor
Use K2Node_Event::FindEventSignatureFunction in order when directly generating the skeleton generated class to get event params correct
#jira UE-46153
#rnx
Change 3497907 by Dan.Oconnor
Correctly set blueprint visibility flags on params for inherited functions when generating the skeleton class
#rnx
#jira UE-46186
Change 3498218 by mason.seay
Updates to pin testing BP's
Change 3498323 by Mieszko.Zielinski
Made UNavCollision instance assigned to StaticMesh not get re-created from scratch every single time any StaticMesh property changes #UE4
Recreation was resulting in some of the UNavCollision's properties not getting saved and the way we were recreating the nav collision could also interfere with undo buffers
#jira UE-44891
Change 3499007 by Marc.Audy
Allow systems to hook Pre and PostCompile to do custom behaviors
Change 3499013 by Mieszko.Zielinski
Made AbstractNavData class non-transient again #UE4
Implemented AbstractNavData instances' transientness in a different manner.
#jira UE-46194
Change 3499204 by Mieszko.Zielinski
Introduced CrowdManagerBase, an engine-level class that can be extended to implement custom crowd management #Orion
Extracted FRecastQueryFilter into a separate file, which will break some peoples' compilation.
#jira UE-43799
Change 3499321 by mason.seay
Updated bp for struct testing
Change 3499388 by Marc.Audy
Allow the compiler log to store off potential messages from earlier in the compile cycle (early validation), that can be committed later (for example once pruning is completed).
Change 3499390 by Marc.Audy
Generate the orphan pin error messages during EarlyValidation, but cache until the regular validation phase. This ensures all are generated, but only those that aren't pruned will be emitted.
#rnx
Change 3499420 by Michael.Noland
Engine: Introduced a new version of UEngine::GetWorldFromContextObject which takes an enum specifying the behavior on failures and updated all existing uses
The new version intentionally does not have a default value for ErrorMode, callers need to think about which variant of behavior they want:
- ReturnNull: Silently returns nullptr, the calling code is expected to handle this gracefully
- LogAndReturnNull: Raises a runtime error but still returns nullptr, the calling code is expected to handle this gracefully
- Assert: Asserts, the calling code is not expecting to handle a failure gracefully
- Deprecated UEngine::GetWorldFromContextObject(object, boolean) and changed the default behavior for the deprecated instances to do LogAndReturnNull rather than Assert, based on the real-world call pattern
- Introduced GetWorldFromContextObjectChecked(object) as a shorthand for passing in EGetWorldErrorMode::Assert
- Made UObject::GetWorldChecked() actually assert if it would return nullptr (under some cases the old function could silently return nullptr while reporting bSupported = true, so it neither ensured nor checked)
- Fixed a race condition in the 'is implemented' bookkeeping logic in GetWorld()/GetWorldChecked() by confining it to the game thread and added a check() to ImplementsGetWorld() to make it clear that it only works on the game thread
The typical recommended call pattern is to use something like:
if (UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull))
{
... Do something with World
}
Handling the failure case but requesting a log message (with BP call stack printed out) if it failed. This is now also the default behavior for old calls to UEngine::GetWorldFromContextObject(Object) (using the default value of bChecked=true), which is a behavior change but it matches how the function was being used in practice; the vast majority of call sites actually expected it to potentially fail and handled the nullptr case gracefully; very few places used the return value unguarded and wanted it to assert when passed a nullptr.
#jira UE-42458
Change 3499429 by Michael.Noland
Engine: Removed a bogus TODO (the problematic code had already been reworked)
#rnx
Change 3499470 by Michael.Noland
Core: Improved and corrected the comment for ensure()
- It doesn't crash when checking is disabled (and hasn't since UE3, maybe ever?)
- It now only fires once per ensure() by default, added a note about ensureAlways()
#rnx
Change 3499643 by Marc.Audy
Use TGuardValue instead of manually managing it
#rnx
Change 3499874 by Marc.Audy
Display <Unnamed> instead of nothing for Pins with blank display name in the compiler log
Change 3499875 by Marc.Audy
When changing function parameter types, don't orphan a pin on the function entry/exit nodes (but do at the call sites)
#jira UE-46224
Change 3499927 by Dan.Oconnor
UField::Serialize no longer serialize's its next ptr, UStruct::Serialize serializes all Children properties instead. This resolves a hard circular dependency between function libraries that EDL detected. It was resolved in an ad hoc way by the old linker
#jira UE-43458
Change 3499953 by Michael.Noland
Core: Created a variant of ensure that does runtime error logging without stopping in the debugger and some related functions that print a warning or error and may trigger a BP callstack (under the same rules as FFrame::KismetExecutionMessage)
- These are WIP and the API may change in the future, but are being used to fix various crashes found by fuzzing BP exposed functions
Change 3499957 by Michael.Noland
Animation: Added runtime errors for nullptr ControlRigs passed into BP methods
#rnx
Change 3499958 by Michael.Noland
Blueprints: Changed an ensure in UKismetNodeHelperLibrary::GetValidValue to a runtime error
#rnx
Change 3499959 by Michael.Noland
Engine: Downgrade various checks() to ensures() in the runtime asset cache functions exposed to Blueprints
Change 3499960 by Michael.Noland
AI: Changed UBTFunctionLibrary to not check/ensure if passed a null world context object
Change 3499968 by Michael.Noland
Editor: Fixed a couple of crashes in UEditorLevelUtils when passed nullptr arguments, and reformatted the entire file to fix widespread indentation issues
#rnx
Change 3499969 by Michael.Noland
Engine: Changed the verbosity of the failure log message of UEngine::GetWorldFromContextObject(..., LogAndReturnNull) from Warning to Error, so it always prints out a BP callstack
#rnx
Change 3499973 by Michael.Noland
Rendering: Fixed asserts in various UKismetRenderingLibrary methods if passed a nullptr for the WorldContextObject
- Also fixed flipped warnings in the failure cases for EndDrawCanvasToRenderTarget
Change 3499979 by Michael.Noland
Editor: Prevented a crash in UMaterialEditingLibrary::RecompileMaterial when passed a nullptr material
Change 3499984 by Michael.Noland
Physics: Prevented a crash in UTraceQueryTestResults::AssertEqual when passed in nullptr for Expected
Change 3499993 by Michael.Noland
Blueprints: Added validation when renaming variables, functions, components, multicast delegates, etc... to prevent names from containing some unacceptable characters
- This validation only kicks in when trying to rename an item, so bad names in existing content are 'grandfathered in'
- These bad names can cause bugs when working with content that contains these characters (e.g., names that contain a period cannot be found via FindObject<T>)
- Currently only . is banned, but eventually we may expand it to include all of INVALID_OBJECTNAME_CHARACTERS
Change 3500009 by Michael.Noland
Blueprints: Made the fuzzer skip classes declared in UnrealEd for now (some of the exposed methods change global state that can cause other tests to fail as the fuzzer isn't particularly sandboxed ATM)
#rnx
Change 3500011 by Michael.Noland
Android: Fixed a crash in UAndroidPermissionFunctionLibrary::AcquirePermissions when called with an empty array on non-Android platforms
Change 3500012 by Michael.Noland
Editor: Prevent a crash in UEditorTutorial::OpenAsset when passed a nullptr Asset
Change 3500014 by Michael.Noland
Engine: Changed FRuntimeAssetCacheFilesystemBackend::ClearCache(NAME_None) to not try to clear all cache directories (there is a separate no-args method for that)
Change 3500019 by Michael.Noland
Core: Fixed some more issues with CallFunctionByNameWithArguments and initializing / destroying parameters
- It was skipping the return value and incorrectly relying on the FirstPropertyToInit list which isn't set for by ref arguments
Change 3500020 by Michael.Noland
Automation: Prevent UFunctionalTestingManager::RunAllFunctionalTests and UFunctionalTestingManager* UFunctionalTestingManager::GetManager from crashing when a manager cannot be created (because we can't route to a world)
Change 3501062 by Marc.Audy
MakeArray AddInputPin is often used as part of node expansion, so need to move the transaction out of the function
Fix inability to undo/redo pin additions to sequence node
Add a K2Node_AddPinInterface to generalize the interface that K2Nodes implement to interact with SGraphNodeK2Sequence so it can be more generally used
#jira UE-46164
#jira UE-46270
Change 3501330 by Michael.Noland
AI: Fix an error on shutdown when the CDO of UAIPerceptionComponent tries to clean up (as it was never registered in the first place)
#jira UE-46271
Change 3501356 by Marc.Audy
Fix crash when multi-editing actor blueprints
#jira UE-46248
Change 3501408 by Michael.Noland
Core: Improve 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)
Change 3501457 by Phillip.Kavan
#jira UE-46054 - Fix crash when launching a packaged build that includes a nativized Blueprint instance with a ChildActorComponent instanced via an AddComponent node.
Change summary:
- Removed UK2Node_AddComponent::PostDuplicate(). This eliminates the creation of redundant component templates that were being unnecessarily created during the Blueprint duplication that precedes the nativization pass.
- Modified SMyBlueprint::OnDuplicateAction() to call MakeNewComponentTemplate() in response to a graph duplication action within the same Blueprint context (replaces previous UK2Node_AddComponent::PostDuplicate() impl).
- Modified FEmitDefaultValueHelper::HandleSpecialTypes() to force AddComponent-based CAC-owned template objects in the emitted codegen to use the UDynamicClass as the Outer when instancing. This matches what we already do for SCS-based CAC-owned template objects - that logic was added in CL# 3270456, and this matches up with FBlueprintNativeCodeGenModule::FindReplacedNameAndOuter(), where we specifically handle CAC-owned template objects.
Change 3502741 by Phillip.Kavan
#jira UE-45782 - Fix undo for index pin type changes.
Change summary:
- Modified SGraphPinIndex::OnTypeChanged() to call Modify() on the pin that was changed.
Change 3502939 by Michael.Noland
Back out changelist 3499927
Change 3503087 by Marc.Audy
Re-fixed ocean content as editor had also changed so had to take theirs and redo
#rnx
Change 3503266 by Ben.Zeigler
#jira UE-46335 Fix regression added in 4.16 where AssetRegistry GetAncesorClassNames/GetDerivedClassNames were not working properly in cooked builds for classes not in memory
Change 3503325 by mason.seay
updated Anim BP to prep for pin testing
Change 3503445 by Marc.Audy
Fix crash caused by OldPins being destroyed before rewiring
#rnx
Change 3505024 by Marc.Audy
Fix NodeEffectsPanel blueprint as it was using pins that no longer existed
#rnx
Change 3505254 by Marc.Audy
Don't include orphan pins when gather source property names
If a property doesn't exist for a source property name just skip the property rather than crashing
#jira UE-46345
#rnx
Change 3506125 by Ben.Zeigler
#jira UE-46311 Fix issues when blueprints are reloaded in place, it needs to remove them from root properly and sanitize the old class. It's still not clear why they are being reloaded in place
Change 3506334 by Dan.Oconnor
Move UAnimGraphNode_Base::PreloadRequiredAssets up to K2Node, make sure nodes get a chance to preload data before compilation manager compiles newly loaded blueprints
#jira UE-46411
Change 3506439 by Dan.Oconnor
Return to pre 3488512 behavior for construct object nodes. This means that we can still get warnings on load when users compile after saving a blueprint, but the current behavior loses default values because it's lookng at the skeleton cdo
#jira UE-46308
Change 3506468 by Dan.Oconnor
Return to pre 3488512 behavior, as it causes bad default values
#jira UE-46414
#rnx
Change 3506733 by Marc.Audy
Use the most up to date class to determine whether a property still exists when adding pins during reconstruction
#jira UE-45965
#author Dan.OConnor
#rnx
Change 3507531 by Ben.Zeigler
#jira UE-46449 Better fix to flush the asset registry queue when the editor requests a synchronous scan at startup. Sometimes it can take a few frames because of file handle delays
Change 3507924 by mason.seay
Sanity save of TM-Gameplay and sublevels to maybe resolve level streaming issues
Change 3507962 by Marc.Audy
Remake changes from CL# 3150796 wiped out by WEX-Staging merge to Main in CL# 3479958
#rnx
Change 3509131 by Dan.Oconnor
Compilation manager compile on load flow never called FindExportsInMemoryFirst, which is critical to prevent reloading of UBlueprintGeneratedClasses when Rename clears the export table
#jira UE-46311
Change 3509345 by Marc.Audy
CVar to disable orphan pins if necessary
#rnx
Change 3509959 by Marc.Audy
Protect against crashing due to large values in Timespan From functions
#jira UE-43840
Change 3510040 by Marc.Audy
Remove all the old unneeded ShooterGame test maps
#rnx
[CL 3510073 by Marc Audy in Main branch]
2017-06-26 15:07:18 -04:00
const FObjectKey & ActionsKey = ActionIndex . Key ( ) ;
if ( ActionsKey . ResolveObjectPtr ( ) )
2014-08-08 15:35:56 -04:00
{
2014-08-08 18:01:38 -04:00
// make sure this class is still listed in the database
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3510040)
#lockdown Nick.Penwarden
=====================================
MAJOR FEATURES + CHANGES
=====================================
Change 3459524 by Marc.Audy
Get/Set of properties that were previously BPRW/BPRO should error when used
#jira UE-20993
Change 3460004 by Phillip.Kavan
#jira UE-45171 - Fix C++ compilation failures during packaging caused by nativizing a Blueprint that overrides a native function with a 'TSubclassOf' parameter or return value.
Change summary:
- Modified FKismetCompilerContext::CreateParametersForFunction() to pass the 'CPF_UObjectWrapper' flag through to new function parameter properties during Blueprint compilation.
Change 3461210 by Phillip.Kavan
#jira UE-44505 - Fix occasional Blueprint editor crashes that could occur while rebuilding the context menu from the action registry.
Change summary:
- Modified FBlueprintActionDatabase::FActionRegistry to use an FObjectKey as the key type. This allows us to test entries for UObject validity before rebuilding context menu items based on the action database.
- Changed FBlueprintActionInfo::CachedOwnerClass to be a TWeakObjectPtr rather than a raw UClass* since it's based on the ActionOwner, which could potentially become invalid after the OwnerClass has been cached.
- Modified FBlueprintActionDatabase::RefreshAssetActions() to exclude World assets if the WorldType is not EWorldType::Editor. This eliminates an issue with unreferenced "inactive" GC'd world objects being left in the BP action registry after cooking, at which point the keys could become invalid.
- Added FBlueprintActionDatabase::DeferredRemoveEntry() to allow for scheduling removal of entries from outside of the database if they are known to be invalid.
- Modified FBlueprintActionDatabase::Tick() to handle deferred entry removals.
- Modified FBlueprintActionMenuBuilder::RebuildActionList() to both test actions for validity before building menu items and schedule removal of invalid actions on the next tick.
Notes:
- Alternatively we could just include UObject keys in the database's AddReferencedObject impl, but that would then prevent objects from ever being GC'd if they are not explicitly removed. For most entries the action database takes the approach of explicitly removing entries via delegate when the UObject is destroyed, so I chose to use a TWeakObjectPtr instead so that any entries that may not be getting explicitly removed via delegate will now simply become invalidated if the UObject key is GC'd due to not being referenced. I also set it up to clean and remove any entries (along with any associated node spawners) that are found to be invalid the next time we open the BP editor.
Change 3461373 by Lukasz.Furman
fixed async navmesh rebuilds not kicking in for requests from navdata.bForceRebuildOnLoad
#jira UE-44231
Change 3461409 by Lukasz.Furman
fixed reenabling automatic navmesh generation in Editor Preferences
#ue4
Change 3461550 by Ben.Zeigler
#jira UE-45328 Fix local variable support for Redirectors and other save-time validation. We need to run the local variables to UProperty and back at save time
Add new flag PPF_SerializedAsImportText which is used for BP pins/default values and indicates that something has been serialized as import text and so needs to handle string asset redirectors
Change 3462625 by Zak.Middleton
#ue4 - Fix InterpToMovementComponent not setting velocity on the object it moves. Fix movement rate when substepping enabled (other related fixes to come).
github PR #3620
Change 3462796 by Dan.Oconnor
Fix for spamming BroadcastBlueprintReinstanced and for creating CDO at wrong time when compiling FrontEnd.uasset in OrionGame
#jira UE-45434
Change 3462995 by Ben.Zeigler
#jira UE-16941 Fix it so Load Asset node works with a literal value as well as a connected pin
Change 3463099 by Ben.Zeigler
#jira UE-45471 Allow abstract base classes for primary assets
Change 3464809 by Marc.Audy
Expose FVector2D / FVector2D to blueprints
#jira UE-45427
Change 3467254 by Mieszko.Zielinski
Added an AI helper BP function that supplies caller with a copy of navigation path given controller is currently following #UE4
Change 3467644 by Dan.Oconnor
Fix for cook issues in ocean when using compilation manager, one issue caused by bad dependencies list, one issue caused by lack of subobject mapping in archetype reinstancing.
#jira UE-45443, UE-45444
Change 3468176 by Dan.Oconnor
Fix dependent blueprints being marked dirty when a blueprint is compiled
Change 3468353 by Michael.Noland
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
Change 3470532 by Dan.Oconnor
Re-enable compilation manager
Change 3470572 by Dan.Oconnor
Fix for pin paramters resetting when an archetype was reinstanced
#jira UE-45619
#rnx
Change 3471949 by Mason.Seay
Adding Primary Assets for testing
Change 3472074 by Ben.Zeigler
#jira UE-45140 Convert iterative cooking to use the Asset Registry as it's only mode, remove old hash and timestamp versions. This allows deleting the entire PackageDependencyInfo module
Change the asset registry iteration to not compute a hash at all, and instead store the script package guids in it's cache.
Expose bIgnoreIniSettingsOutOfDateForIteration and bIgnoreScriptPackagesOutOfDateForIteration in cooker settings, affects rather to listen to ini/script changes when doing iterative cooking
Change 3472079 by Ben.Zeigler
With new incremental cook options, change Fortnite to never care about ini settings, but do care about code changes. This can be changed but from previous discussions we wanted to be more safe than fast here
Change 3473429 by Lukasz.Furman
changed path following update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473476 by Lukasz.Furman
changed crowd simulation path update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473663 by Ben.Zeigler
Fix it so base k2node registers framework version, this is needed for the assetptr fixup I previously added
Change 3473679 by Mason.Seay
Slight cleanup of test map and added ability to teleport across level for easy navigation
Change 3473712 by Marc.Audy
Do default value validation against the actual value of the default entry of an enum rather than the serialized empty autogenerated default value
Change 3474055 by Marc.Audy
When nodes are reconstructed any pins that were previously linked or set to non-default values that have been removed will no longer simply vanish, but instead will remain in an Orphaned state until dealt with.
#jira UE-41828
Change 3474119 by mason.seay
Tweaked Force Feedback test
Change 3474156 by Marc.Audy
Actually enable orphan pin retention
Change 3474382 by Ben.Zeigler
Class.h Header and comment cleanup. Started this because IsChildOf did not have a comment and it's usage is a bit confusing
Change 3474386 by Ben.Zeigler
Close popup window when adding asset class to audit window
Change 3474491 by Ben.Zeigler
Remove ability for Worlds to not be saved as assets, this has been the default since 2014.
Change 3475363 by Marc.Audy
Alt-click now works with orphaned pins
#jira UE-45699
Change 3475523 by Marc.Audy
Fixup Fortnite and Paragon content for orphaned pin errors and warnings
Change 3475623 by Phillip.Kavan
#jira UE-45477 - Fix an EDL assertion on load in a nativized build with one or more Actor subobjects instanced via the EditInlineNew UI in the BP class defaults property editor.
Change summary:
- Modified FEmitDefaultValueHelper::OuterGenerate() to emit code to construct/initialize instanced subobject values that do not have the RF_DefaultSubObject flag set, and also to recursively handle nested subobjects for those values.
- Modified FEmitDefaultValueHelper::HandleInstancedSubobject() to alternatively emit a 'NewObject' assignment statement rather than a 'CreateDefaultSubobject' statement if only RF_ArchetypeObject is set on the source object value.
Change 3476008 by Dan.Oconnor
Fix for failing to preload our super class's subobjects. Effectively moving UBlueprint::ForceLoad calls earlier in loading process. This only results in data resetting to your parent's parent's default value from your parent's default value.
#jira UE-18765
Change 3476115 by Dan.Oconnor
Fix missing category information for inherited functions when using compilation manager
#jira UE-45660
#rnx
Change 3476577 by Lukasz.Furman
added early outs from navmesh layer generation when there's no walkable cells or contours to avoid allocating 0 bytes by next generation steps (behavior differs between platforms)
#ue4
Change 3476587 by Phillip.Kavan
#jira UE-45517 - Fix a regression in which dragging UMG widgets around in the designer view results in redundantly-compounded BP class properties and context menu actions.
Change summary:
- Modified SDesignerView::ClearDropPreviews() to move the widget that was removed from the tree into the transient package. This ensures that FWidgetBlueprintCompiler::CreateClassVariablesFromBlueprint() won't pick them up.
- Modified SDesignerView::ProcessDropAndAddWidget() to also consider any widgets not added to the 'DropPreviews' array as being transient (i.e. also move them into the transient package since they were not added to the tree).
Notes:
- The regression was introduced by the changes in CL# 3410168, and was merged to Main at CL# 3431398.
#rnx
Change 3476723 by Dan.Oconnor
Match old behavior wrt updating implemented interfaces in blueprints - this logic from FKismetEditorUtilities::CompileBlueprint was missing in compilation manager
#jira UE-45468
#rnx
Change 3476948 by Michael.Noland
Framework: Changed AActor::FindComponentByClass (and AActor::GetComponentByClass by extension) to return nullptr when passed a nullptr class, rather than crashing
Change 3476970 by Ben.Zeigler
Fix bug I introduced in 4.16 where assigning assets to multiple chunks did not work properly
Change 3477536 by Marc.Audy
Don't display default value box on linked orphaned input pins
Change 3477835 by Marc.Audy
Fix pins orphaned by deletion of an entry in a user-defined enum disappearing instead of remaining connected
#jira UE-45754
Change 3478027 by Marc.Audy
Minor performance optimization
#rnx
Change 3478198 by Phillip.Kavan
#jira UE-42431 - Remove an unnecessary ensure() when pasting an event node.
Change summary:
- Modified UEdGraphSchema_K2::CreateSubstituteNode() to no longer ensure() that we have a valid PreExistingNode; it's only used for logging when a substitute node is created in response to a conflict with an existing node.
Change 3478485 by Marc.Audy
Eliminate extraneous error messages about orphaned pins on get/set nodes
#jira UE-45749
#rnx
Change 3478756 by Marc.Audy
Fix fallout from changes to DoesDefaultValueMatchAutogenerated for user defined enums
#jira UE-45721
#rnx
Change 3478926 by Marc.Audy
Non-blueprint type structs can no longer be made/broken
Non-blueprint visible properties in structs will no longer have pins created for them
#jira UE-43122
Change 3478988 by Marc.Audy
DeltaTime for a tick function with a tick interval is now correct after disabling and then reenabling the tick function.
#jira UE-45524
Change 3479818 by Marc.Audy
Allow ctrl-drag off of orphan pins
#jira UE-45803
Change 3480214 by Marc.Audy
Modifications to user defined enumerations are now transacted
#jira UE-43866
Change 3480579 by Marc.Audy
Maintain all pin properties through transactions.
#rn Reference pins that are removed and then restored via undo now correctly have the diamond icon instead of the standard circle.
Change 3481043 by Marc.Audy
Make/Break of structs does not depend on having blueprint exposed properties.
Splitting of a struct pin still requires blueprint exposed properties.
#jira UE-45840
#jira UE-45831
Change 3481271 by Ben.Zeigler
Fix the AssetManager chunking code to use ChunkDependencyInfo instead of a hardcoded check for chunk 0
Clean up ChunkDependencyInfo and make it properly public
Move ShouldSetManager to be WITH_EDITOR
Ported from WEX branch
#RB peter.sauerbrei
Change 3481373 by Dan.Oconnor
Reduce reliance on expensive FindDelegateSignature. 3275922 made warnings about a ambiguous search more likely as it preserved names of members on the REINST_ classes
#jira UE-45704
Change 3481380 by Ben.Zeigler
Change it so Struct and Object AssetRegistrySearchable properties do not show up in content browser, they are not helpful
Change 3482362 by Marc.Audy
Fix properties not exposed to blueprint warnings for input properties on function graphs.
#jira UE-45824
Change 3482406 by Ben.Zeigler
#jira UE-45883 Fix Switch On Gameplay Tag Container node, and add switch nodes to TagCheck map
Change 3482498 by Ben.Zeigler
Attempt to fix hot reload issues with Asset Manager. We need to reset and re-acquire the asset classes when rescanning, as they may be pointing to the replaced class
Change 3482517 by Lukasz.Furman
fixed smart navlink update functions removing important flag
#jira UE-45875
Change 3482538 by Marc.Audy
When comparing float, vector, and rotator values for whether the the default matches the autogenerated do not use the string compare because differences in use of decimal or number of 0s after decimal are then considered not the same float
#jira UE-45846
Change 3482773 by Marc.Audy
Don't show default value or pass by reference for exec pins
#jira UE-45868
Change 3482791 by Ben.Zeigler
#jira UE-45800 Correctly dirty game mode blueprint when changing player controller/etc classes from game mode customization
Fix it so MarkBlueprintAsStructurallyModified calls MarkBlueprintAsModified as several fixes were only in the second function
Change 3483131 by Zak.Middleton
#ue4 - InterpToMovementComponent:
- Fix velocity not zeroed when interpolation stops.
- Various fixes when calculating velocity and time when substepping is enabled.
- Improve accuracy of interpolation when looping and there is time remaining after the loop event is hit. Consume the remainder of the time after the event back in the loop (similar to handling a blocking impact).
#jira UE-45690
Change 3483146 by Phillip.Kavan
#jira UE-38358 - Propagate 'const' function flag from interface Blueprint to implementing Blueprints.
Change summary:
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() to call SkeletalRecompileChildren() on dependent BPs when the target is an interface BP.
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified::FRefreshHelper::SkeletalRecompileChildren() to set child BP status to BS_Dirty after compiling.
- Modified ConformInterfaceByName() (FBlueprintEditorUtils) to use the interface's skeleton class for function iteration as well as to match the Function Entry node's 'const' setting to the interface UFunction's signature.
Change 3483340 by Ben.Zeigler
Fix issue querying asset registry after a hot reload, make sure pending kill objects are never considered to be Assets
Change 3483548 by Michael.Noland
Epic Friday: Playing around with some prototype traps
Change 3483700 by Phillip.Kavan
Fix CIS cook crash introduced by last submit.
#rnx
Change 3485217 by Ben.Zeigler
#jira UE-45519 Fix regression introduced in 4.16 where it would no longer cook all maps when no explicit maps were specified in ini or game callback. Moved the code that detects changes before culture/default map code and hardened it to deal with the case where some engine packages were already in the list before it entered the function
Change 3485367 by Dan.Oconnor
Avoid adding mappings to anim node when creating variables on the skeleton class and using the compilation manager
#jira UE-45756
Change 3485565 by Ben.Zeigler
#jira UE-45948 Fix compilation manager to properly reset variable default values after promoting a pin to local variable
Change 3485566 by Marc.Audy
Fix crashes caused by undo/redo of user defined struct changes
#jira UE-45775
#jira UE-45781
Change 3485805 by Michael.Noland
PR #3459: Fix for world origin shifting and SpringArmComponent location lag (Contributed by michail-nikolaev)
#jira UE-43747
Change 3485807 by Michael.Noland
PR #3485: Added additional textures field to paper 2d tileset class (Contributed by gryphonmyers)
#jira UE-44041
Change 3485811 by Michael.Noland
Framework: Fixed a bug in FStreamLevelAction::MakeSafeLevelName to avoid appending the PIE prefix multiple times (fixes functions like Unload Streaming Level when passed a full package name from an instanced streaming level)
Change 3485829 by Michael.Noland
Framework: Made GetWorldAssetPackageFName BlueprintCallable so instanced levels can be unloaded
Change 3485830 by Michael.Noland
PR #3568: add API declarations to ALevelStreamingVolume methods (Contributed by kayama-shift)
#jira UE-45002
Change 3486039 by Michael.Noland
PR #3495: UE-44014: Refreshing node error fixes (Contributed by projectgheist)
- Empty out the ErrorMsg when a node gets refreshed to prevent the same error messages from compounding
- Added support for split pins in UK2Node_Event::IsFunctionEntryCompatible
- Added a missing check for the delegate pin name on the entry node part of UK2Node_Event::IsFunctionEntryCompatible
#jira UE-44014
Change 3486093 by Michael.Noland
PR #3379: Added GAMEPLAYABILITIES_API to all Ability Tasks. (Contributed by ryanjon2040)
#jira UE-42903
Change 3486139 by Michael.Noland
Blueprints: Added new config options for execution wire thickness when not debugging (DefaultExecutionWireThickness) and data wire thicknesses (DefaultDataWireThickness) to the Graph Editor Settings page
#rn
Change 3486154 by Michael.Noland
Framework: Speculative fix for CIS error about FStructOnScope
#rnx
Change 3486180 by Dan.Oconnor
Better match old logic for determining when to skip data only compile
#jira UE-45830
Change 3487276 by Marc.Audy
Fix crash when using Setter with a locally scoped variable
#rnx
Change 3487278 by Marc.Audy
Ensure that pin change notifications occur on all pin breaks unless it is part of a node being garbage collected
Change 3487658 by Marc.Audy
Ensure that child actor template is created for subclasses
#jira UE-45985
Change 3487699 by Marc.Audy
Move non-templated elements out of FArchiveReplaceObjectRef and put them in FArchiveReplaceObjectRefBase
Change 3487813 by Dan.Oconnor
Asset demonstrating a crash
Change 3488101 by Marc.Audy
Fix crash with spawn/construct actor/object from class nodes when they no longer had any pins.
Correctly orphan pins when a node goes to 0 pins.
Change 3488337 by Marc.Audy
Editable pin base should not manually remove pin and let reconstruct node and rewire pins do their job
#jira UE-46020
Change 3488512 by Dan.Oconnor
ConstructObject nodes and SubInstances nodes use skeleton class when compilation manager can provide it
#jira UE-45830, UE-45965
#rnx
Change 3488631 by Michael.Noland
Framework: Fixed a crash when loading a blueprint with a parent class of ALevelBounds caused by trying to register the class default object with a non-existent level
#jira UE-45630
Change 3488665 by Michael.Noland
Blueprints: Improve the details panel customization for optional pin nodes like Struct Member Get/Set
- The category, raw name, and tooltip of the property are now included as part of the filter text as well
- The property tooltip is now displayed when hovering over the property name
- Code updated to use GET_MEMBER_NAME_CHECKED() where appropriate
Change 3489324 by Marc.Audy
Fix recursion causing stack crash
#jira UE-46038
#rnx
Change 3489326 by Marc.Audy
Fix cooking crash
#jira UE-46031
#rnx
Change 3489687 by mason.seay
Assets for testing orphan pins
Change 3489701 by Marc.Audy
Back out changelist 3487278 and 3489443 and make targetted changes for fixing up orphan pin cases where changing connections doesn't remove the pin.
#jira UE-46051
#jira UE-46052
#rnx
Change 3490352 by Dan.Oconnor
Fix for missing WidgetTree on Skeleton class - just look directly at the WidgetBlueprint
#jira UE-46062
Change 3490814 by Marc.Audy
Make callfunction/macro instances save all pins in orphan state more similar to previous behavior
#rnx
Change 3491022 by Dan.Oconnor
Properly clean up 'Key' property when we fail to create a value property
#jira UE-45279
Change 3491071 by Ben.Zeigler
#jira UE-45981 Fix rotation issues, vector/rotator pins with empty strings were not matching due to uninitialized memory.
Change 3491244 by Michael.Noland
Blueprints: Add compile time message back to the output log (will not auto-open the output log if there were no warnings/errors)
#jira UE-32948
Change 3491276 by Michael.Noland
Blueprints: Fixed some bugs where a newly added item would fail show up in the "My Blueprints" tree if there was a filter active (e.g., when promoting a variable)
- Centralized the logic for clearing the filter so it happens when we try and fail to select the item, rather than ad hoc in various other places
- Made it only clear the filter if necessary, rather than (almost) always clearing it when adding an item
#jira UE-43372
Change 3491562 by Marc.Audy
Put back pin removal in to editable pin base and instead modify the pin destroy implementation to take down child split pins with it
#jira UE-46020
#rnx
Change 3491658 by Marc.Audy
Unify RemoveUserDefinedPin implementations. Use version that has break to avoid size change assert
#rnx
Change 3491946 by Marc.Audy
ReconstructSinglePin no longer destroys OldPin (avoids oprhaned sub pins being destroyed before reparented)
RewireOldPinsToNewPins now destroys OldPins at the end (calling code no longer reponsible)
DestroyImpl now prunes out SubPins that had already been trashed
#rnx
Change 3492040 by Marc.Audy
Discard exec/then pins from a callfunction that has been converted to a pure node
#rnx
Change 3492200 by Zak.Middleton
#ue4 - Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size.
Fixes possible regression from CL 3359561 that removed the Reset(...) entirely.
#jira UE-46012
Change 3492290 by Ben.Zeigler
#jira UE-46108 Fix StringLibrary Mid to never crash, Substring had already been fixed
Change 3492311 by Marc.Audy
Don't clear the pin type if what you're connecting to's pin type is wildcard
#rnx
Change 3492680 by Dan.Oconnor
Handle missing generated class when using compilation manager - tested by forcing compile of BP_ParentClassIsMissingType.uasset
Change 3492826 by Marc.Audy
Don't do pin connection list change notifications from DestroyPins while regenerating on load
#jira UE-46112
#rnx
Change 3492851 by Michael.Noland
Core: Fixed various crashes when using UObject::CallFunctionByNameWithArguments with non-trivial argument types by properly initializing the allocated parameters
Change 3492852 by Michael.Noland
Framework: Fixed a crash if ACharacter::FindComponentByClass was passed a nullptr class
Change 3492934 by Marc.Audy
Fix ensure and crash delete macro containing orphaned pin
#rnx
Change 3493079 by Dan.Oconnor
Fix for crash when opening ThirdPersonAnimBlueprint and ThirdPersonAnimBlueprint_Perf then clicking 'Compile' button in ThirdPersonAnimBlueprint editor. Make sure the convenience members in the derived compilers get set when we relink child classes (which requires making cdos, which requires PropagateValuesToCDO..)
#rnx
Change 3493346 by Phillip.Kavan
#jira UE-40560 - Fix a reported crash when pasting nodes between unrelated Blueprint graphs.
Change summary:
- Modified FEdGraphUtilities::PostProcessPastedNodes() to ensure() on a NULL pin entry; this will allow execution to continue while still alerting us since it is an unexpected result. Also added an 'else' case to then remove the NULL entry so that PostPasteNode() implementations don't all have to guard against NULL pin entries. When the node is reconstructed, the NULL entry will be replaced with the correct pin initialized to its default values.
- Modified UEdGraphPin::ImportTextItem() to add some additional logging to parse error cases when importing pin properties from source T3D text. Hopefully this gives us more information when this is encountered in the future.
Change 3493938 by Michael.Noland
Blueprints: Prevent issues with renaming event dispatchers to contain periods (this may be disallowed in the future, but they no longer become uneditable)
#jira UE-45780
Change 3493945 by Michael.Noland
Blueprints: Fixed GetDelegatePoperty typos
#rnx
Change 3493997 by Michael.Noland
Blueprints: Partially reverting changes from CL# 3319966 to reroute nodes, restoring their alignment but losing the symmetrical grab handle changes
#jira UE-45760
Change 3493998 by Dan.Oconnor
Fix rare crash in RefreshStandAloneDefaultsEditor when the blueprint editor is opened and a blueprint had errors in it
Note: I stumbled across this by running a unit test and then opening a blueprint in the BPE. CrashReporter indicates 3 crashes in the last 3 days
Change 3494025 by Michael.Noland
Engine: Deleted some dead code (DEBUGGING_VIEWPORT_SIZES)
#rnx
Change 3494026 by Michael.Noland
Blueprints: V0 of a BlueprintCallable/BlueprintPure function fuzzer
- Calls exposed methods with default parameters on classes it is able to spawn for now, which catches crashes due to null and /0 but not out of bounds issues or ones on classes it can't spawn due to classwithin, abstract, etc...
- Can be called using Test.ScriptFuzzing, won't be integrated into automated tests until it is more fully fleshed out and all known issues are addressed
#rnx
Change 3496382 by Ben.Zeigler
Fix ensure when launching editor with cook on the side and incremental cooking enabled. It now flushes the background asset gather when calling the sync load all assets if one is in progress
Change 3496688 by Marc.Audy
Avoid crashing in component instance data if (for some reason) the Actor's root component isn't properly set up
#jira UE-46073
Change 3496830 by Michael.Noland
Editor: Change FEditorCategoryUtils methods to take UStruct* instead of UClass*, as they are just reading metadata
#rnx
Change 3496840 by Michael.Noland
Framework: Remove the requirement for a local player in UCheatManager::CheatScript, so it can be be started from the server side (doesn't change the availability of the cheat manager, just allows things like the redundant "cheat cheatscript scriptname" to work)
Change 3497038 by Michael.Noland
Fortnite: Added UFortDeveloperSettings to allow developers to auto-run cheats in PIE (does not occur in -game or outside of WITH_EDITOR builds)
- You can specify a list of cheat commands to run when a pawn is possessed (also needs CL# 3496840 for cheatscripts)
- You can also specify a set of items to grant to your local inventory when it is created
Change 3497204 by Marc.Audy
Fix AbilitySystemComponent not being blueprint readable.
#rnx
Change 3497668 by Mieszko.Zielinski
Fixed a crash in BT editor when dealing with enum-typed Blackboard-keys pointing to enum values that have been deleted #UE4
#jira UE-43659
Change 3497677 by Mieszko.Zielinski
Added a community-suggested working solution to patching up dynamic navmesh after world offset #UE4
Also, fixed a crash related to navmesh rebuilding if generation was configured to lazily gather navigatble geometry
#jira UE-41293
Change 3497678 by Mieszko.Zielinski
Marked AbstractNavData class as transient #UE4
We never want to save it to levels
Change 3497679 by Mieszko.Zielinski
Made NavModifierVolume responsive to editor-time property changes #UE4
#jira UE-32831
Change 3497900 by Dan.Oconnor
Fix bad skel reference when using construct object from class, just limiting scope of 3491946. To reproduce the bug just nativize QA Game, including the TM-Gameplay level
#rnx
Change 3497904 by Dan.Oconnor
Use K2Node_Event::FindEventSignatureFunction in order when directly generating the skeleton generated class to get event params correct
#jira UE-46153
#rnx
Change 3497907 by Dan.Oconnor
Correctly set blueprint visibility flags on params for inherited functions when generating the skeleton class
#rnx
#jira UE-46186
Change 3498218 by mason.seay
Updates to pin testing BP's
Change 3498323 by Mieszko.Zielinski
Made UNavCollision instance assigned to StaticMesh not get re-created from scratch every single time any StaticMesh property changes #UE4
Recreation was resulting in some of the UNavCollision's properties not getting saved and the way we were recreating the nav collision could also interfere with undo buffers
#jira UE-44891
Change 3499007 by Marc.Audy
Allow systems to hook Pre and PostCompile to do custom behaviors
Change 3499013 by Mieszko.Zielinski
Made AbstractNavData class non-transient again #UE4
Implemented AbstractNavData instances' transientness in a different manner.
#jira UE-46194
Change 3499204 by Mieszko.Zielinski
Introduced CrowdManagerBase, an engine-level class that can be extended to implement custom crowd management #Orion
Extracted FRecastQueryFilter into a separate file, which will break some peoples' compilation.
#jira UE-43799
Change 3499321 by mason.seay
Updated bp for struct testing
Change 3499388 by Marc.Audy
Allow the compiler log to store off potential messages from earlier in the compile cycle (early validation), that can be committed later (for example once pruning is completed).
Change 3499390 by Marc.Audy
Generate the orphan pin error messages during EarlyValidation, but cache until the regular validation phase. This ensures all are generated, but only those that aren't pruned will be emitted.
#rnx
Change 3499420 by Michael.Noland
Engine: Introduced a new version of UEngine::GetWorldFromContextObject which takes an enum specifying the behavior on failures and updated all existing uses
The new version intentionally does not have a default value for ErrorMode, callers need to think about which variant of behavior they want:
- ReturnNull: Silently returns nullptr, the calling code is expected to handle this gracefully
- LogAndReturnNull: Raises a runtime error but still returns nullptr, the calling code is expected to handle this gracefully
- Assert: Asserts, the calling code is not expecting to handle a failure gracefully
- Deprecated UEngine::GetWorldFromContextObject(object, boolean) and changed the default behavior for the deprecated instances to do LogAndReturnNull rather than Assert, based on the real-world call pattern
- Introduced GetWorldFromContextObjectChecked(object) as a shorthand for passing in EGetWorldErrorMode::Assert
- Made UObject::GetWorldChecked() actually assert if it would return nullptr (under some cases the old function could silently return nullptr while reporting bSupported = true, so it neither ensured nor checked)
- Fixed a race condition in the 'is implemented' bookkeeping logic in GetWorld()/GetWorldChecked() by confining it to the game thread and added a check() to ImplementsGetWorld() to make it clear that it only works on the game thread
The typical recommended call pattern is to use something like:
if (UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull))
{
... Do something with World
}
Handling the failure case but requesting a log message (with BP call stack printed out) if it failed. This is now also the default behavior for old calls to UEngine::GetWorldFromContextObject(Object) (using the default value of bChecked=true), which is a behavior change but it matches how the function was being used in practice; the vast majority of call sites actually expected it to potentially fail and handled the nullptr case gracefully; very few places used the return value unguarded and wanted it to assert when passed a nullptr.
#jira UE-42458
Change 3499429 by Michael.Noland
Engine: Removed a bogus TODO (the problematic code had already been reworked)
#rnx
Change 3499470 by Michael.Noland
Core: Improved and corrected the comment for ensure()
- It doesn't crash when checking is disabled (and hasn't since UE3, maybe ever?)
- It now only fires once per ensure() by default, added a note about ensureAlways()
#rnx
Change 3499643 by Marc.Audy
Use TGuardValue instead of manually managing it
#rnx
Change 3499874 by Marc.Audy
Display <Unnamed> instead of nothing for Pins with blank display name in the compiler log
Change 3499875 by Marc.Audy
When changing function parameter types, don't orphan a pin on the function entry/exit nodes (but do at the call sites)
#jira UE-46224
Change 3499927 by Dan.Oconnor
UField::Serialize no longer serialize's its next ptr, UStruct::Serialize serializes all Children properties instead. This resolves a hard circular dependency between function libraries that EDL detected. It was resolved in an ad hoc way by the old linker
#jira UE-43458
Change 3499953 by Michael.Noland
Core: Created a variant of ensure that does runtime error logging without stopping in the debugger and some related functions that print a warning or error and may trigger a BP callstack (under the same rules as FFrame::KismetExecutionMessage)
- These are WIP and the API may change in the future, but are being used to fix various crashes found by fuzzing BP exposed functions
Change 3499957 by Michael.Noland
Animation: Added runtime errors for nullptr ControlRigs passed into BP methods
#rnx
Change 3499958 by Michael.Noland
Blueprints: Changed an ensure in UKismetNodeHelperLibrary::GetValidValue to a runtime error
#rnx
Change 3499959 by Michael.Noland
Engine: Downgrade various checks() to ensures() in the runtime asset cache functions exposed to Blueprints
Change 3499960 by Michael.Noland
AI: Changed UBTFunctionLibrary to not check/ensure if passed a null world context object
Change 3499968 by Michael.Noland
Editor: Fixed a couple of crashes in UEditorLevelUtils when passed nullptr arguments, and reformatted the entire file to fix widespread indentation issues
#rnx
Change 3499969 by Michael.Noland
Engine: Changed the verbosity of the failure log message of UEngine::GetWorldFromContextObject(..., LogAndReturnNull) from Warning to Error, so it always prints out a BP callstack
#rnx
Change 3499973 by Michael.Noland
Rendering: Fixed asserts in various UKismetRenderingLibrary methods if passed a nullptr for the WorldContextObject
- Also fixed flipped warnings in the failure cases for EndDrawCanvasToRenderTarget
Change 3499979 by Michael.Noland
Editor: Prevented a crash in UMaterialEditingLibrary::RecompileMaterial when passed a nullptr material
Change 3499984 by Michael.Noland
Physics: Prevented a crash in UTraceQueryTestResults::AssertEqual when passed in nullptr for Expected
Change 3499993 by Michael.Noland
Blueprints: Added validation when renaming variables, functions, components, multicast delegates, etc... to prevent names from containing some unacceptable characters
- This validation only kicks in when trying to rename an item, so bad names in existing content are 'grandfathered in'
- These bad names can cause bugs when working with content that contains these characters (e.g., names that contain a period cannot be found via FindObject<T>)
- Currently only . is banned, but eventually we may expand it to include all of INVALID_OBJECTNAME_CHARACTERS
Change 3500009 by Michael.Noland
Blueprints: Made the fuzzer skip classes declared in UnrealEd for now (some of the exposed methods change global state that can cause other tests to fail as the fuzzer isn't particularly sandboxed ATM)
#rnx
Change 3500011 by Michael.Noland
Android: Fixed a crash in UAndroidPermissionFunctionLibrary::AcquirePermissions when called with an empty array on non-Android platforms
Change 3500012 by Michael.Noland
Editor: Prevent a crash in UEditorTutorial::OpenAsset when passed a nullptr Asset
Change 3500014 by Michael.Noland
Engine: Changed FRuntimeAssetCacheFilesystemBackend::ClearCache(NAME_None) to not try to clear all cache directories (there is a separate no-args method for that)
Change 3500019 by Michael.Noland
Core: Fixed some more issues with CallFunctionByNameWithArguments and initializing / destroying parameters
- It was skipping the return value and incorrectly relying on the FirstPropertyToInit list which isn't set for by ref arguments
Change 3500020 by Michael.Noland
Automation: Prevent UFunctionalTestingManager::RunAllFunctionalTests and UFunctionalTestingManager* UFunctionalTestingManager::GetManager from crashing when a manager cannot be created (because we can't route to a world)
Change 3501062 by Marc.Audy
MakeArray AddInputPin is often used as part of node expansion, so need to move the transaction out of the function
Fix inability to undo/redo pin additions to sequence node
Add a K2Node_AddPinInterface to generalize the interface that K2Nodes implement to interact with SGraphNodeK2Sequence so it can be more generally used
#jira UE-46164
#jira UE-46270
Change 3501330 by Michael.Noland
AI: Fix an error on shutdown when the CDO of UAIPerceptionComponent tries to clean up (as it was never registered in the first place)
#jira UE-46271
Change 3501356 by Marc.Audy
Fix crash when multi-editing actor blueprints
#jira UE-46248
Change 3501408 by Michael.Noland
Core: Improve 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)
Change 3501457 by Phillip.Kavan
#jira UE-46054 - Fix crash when launching a packaged build that includes a nativized Blueprint instance with a ChildActorComponent instanced via an AddComponent node.
Change summary:
- Removed UK2Node_AddComponent::PostDuplicate(). This eliminates the creation of redundant component templates that were being unnecessarily created during the Blueprint duplication that precedes the nativization pass.
- Modified SMyBlueprint::OnDuplicateAction() to call MakeNewComponentTemplate() in response to a graph duplication action within the same Blueprint context (replaces previous UK2Node_AddComponent::PostDuplicate() impl).
- Modified FEmitDefaultValueHelper::HandleSpecialTypes() to force AddComponent-based CAC-owned template objects in the emitted codegen to use the UDynamicClass as the Outer when instancing. This matches what we already do for SCS-based CAC-owned template objects - that logic was added in CL# 3270456, and this matches up with FBlueprintNativeCodeGenModule::FindReplacedNameAndOuter(), where we specifically handle CAC-owned template objects.
Change 3502741 by Phillip.Kavan
#jira UE-45782 - Fix undo for index pin type changes.
Change summary:
- Modified SGraphPinIndex::OnTypeChanged() to call Modify() on the pin that was changed.
Change 3502939 by Michael.Noland
Back out changelist 3499927
Change 3503087 by Marc.Audy
Re-fixed ocean content as editor had also changed so had to take theirs and redo
#rnx
Change 3503266 by Ben.Zeigler
#jira UE-46335 Fix regression added in 4.16 where AssetRegistry GetAncesorClassNames/GetDerivedClassNames were not working properly in cooked builds for classes not in memory
Change 3503325 by mason.seay
updated Anim BP to prep for pin testing
Change 3503445 by Marc.Audy
Fix crash caused by OldPins being destroyed before rewiring
#rnx
Change 3505024 by Marc.Audy
Fix NodeEffectsPanel blueprint as it was using pins that no longer existed
#rnx
Change 3505254 by Marc.Audy
Don't include orphan pins when gather source property names
If a property doesn't exist for a source property name just skip the property rather than crashing
#jira UE-46345
#rnx
Change 3506125 by Ben.Zeigler
#jira UE-46311 Fix issues when blueprints are reloaded in place, it needs to remove them from root properly and sanitize the old class. It's still not clear why they are being reloaded in place
Change 3506334 by Dan.Oconnor
Move UAnimGraphNode_Base::PreloadRequiredAssets up to K2Node, make sure nodes get a chance to preload data before compilation manager compiles newly loaded blueprints
#jira UE-46411
Change 3506439 by Dan.Oconnor
Return to pre 3488512 behavior for construct object nodes. This means that we can still get warnings on load when users compile after saving a blueprint, but the current behavior loses default values because it's lookng at the skeleton cdo
#jira UE-46308
Change 3506468 by Dan.Oconnor
Return to pre 3488512 behavior, as it causes bad default values
#jira UE-46414
#rnx
Change 3506733 by Marc.Audy
Use the most up to date class to determine whether a property still exists when adding pins during reconstruction
#jira UE-45965
#author Dan.OConnor
#rnx
Change 3507531 by Ben.Zeigler
#jira UE-46449 Better fix to flush the asset registry queue when the editor requests a synchronous scan at startup. Sometimes it can take a few frames because of file handle delays
Change 3507924 by mason.seay
Sanity save of TM-Gameplay and sublevels to maybe resolve level streaming issues
Change 3507962 by Marc.Audy
Remake changes from CL# 3150796 wiped out by WEX-Staging merge to Main in CL# 3479958
#rnx
Change 3509131 by Dan.Oconnor
Compilation manager compile on load flow never called FindExportsInMemoryFirst, which is critical to prevent reloading of UBlueprintGeneratedClasses when Rename clears the export table
#jira UE-46311
Change 3509345 by Marc.Audy
CVar to disable orphan pins if necessary
#rnx
Change 3509959 by Marc.Audy
Protect against crashing due to large values in Timespan From functions
#jira UE-43840
Change 3510040 by Marc.Audy
Remove all the old unneeded ShooterGame test maps
#rnx
[CL 3510073 by Marc Audy in Main branch]
2017-06-26 15:07:18 -04:00
if ( FActionList * ClassActionList = ActionRegistry . Find ( ActionsKey ) )
2014-08-08 15:35:56 -04:00
{
2014-08-11 18:39:28 -04:00
int32 & ActionListIndex = ActionIndex . Value ( ) ;
2019-03-04 10:23:33 -05:00
for ( ; ( ActionListIndex < ClassActionList - > Num ( ) ) & & ( PrimedCount < GBlueprintDatabasePrimingMaxPerFrame ) ; + + ActionListIndex )
2014-08-08 15:35:56 -04:00
{
2014-08-19 12:36:44 -04:00
UBlueprintNodeSpawner * Action = ( * ClassActionList ) [ ActionListIndex ] ;
2014-09-12 12:56:24 -04:00
Action - > Prime ( ) ;
2014-09-19 18:20:43 -04:00
+ + PrimedCount ;
2014-08-08 15:35:56 -04:00
}
2014-08-08 18:01:38 -04:00
2014-08-11 18:39:28 -04:00
if ( ActionListIndex > = ClassActionList - > Num ( ) )
2014-08-08 18:01:38 -04:00
{
2014-08-23 20:16:29 -04:00
ActionPrimingQueue . Remove ( ActionsKey ) ;
2014-08-08 18:01:38 -04:00
}
2014-08-08 15:35:56 -04:00
}
2014-08-11 18:39:28 -04:00
else
{
2014-08-23 20:16:29 -04:00
ActionPrimingQueue . Remove ( ActionsKey ) ;
2014-08-11 18:39:28 -04:00
}
}
else
{
2014-08-23 20:16:29 -04:00
ActionPrimingQueue . Remove ( ActionsKey ) ;
2014-08-08 15:35:56 -04:00
}
}
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3510040)
#lockdown Nick.Penwarden
=====================================
MAJOR FEATURES + CHANGES
=====================================
Change 3459524 by Marc.Audy
Get/Set of properties that were previously BPRW/BPRO should error when used
#jira UE-20993
Change 3460004 by Phillip.Kavan
#jira UE-45171 - Fix C++ compilation failures during packaging caused by nativizing a Blueprint that overrides a native function with a 'TSubclassOf' parameter or return value.
Change summary:
- Modified FKismetCompilerContext::CreateParametersForFunction() to pass the 'CPF_UObjectWrapper' flag through to new function parameter properties during Blueprint compilation.
Change 3461210 by Phillip.Kavan
#jira UE-44505 - Fix occasional Blueprint editor crashes that could occur while rebuilding the context menu from the action registry.
Change summary:
- Modified FBlueprintActionDatabase::FActionRegistry to use an FObjectKey as the key type. This allows us to test entries for UObject validity before rebuilding context menu items based on the action database.
- Changed FBlueprintActionInfo::CachedOwnerClass to be a TWeakObjectPtr rather than a raw UClass* since it's based on the ActionOwner, which could potentially become invalid after the OwnerClass has been cached.
- Modified FBlueprintActionDatabase::RefreshAssetActions() to exclude World assets if the WorldType is not EWorldType::Editor. This eliminates an issue with unreferenced "inactive" GC'd world objects being left in the BP action registry after cooking, at which point the keys could become invalid.
- Added FBlueprintActionDatabase::DeferredRemoveEntry() to allow for scheduling removal of entries from outside of the database if they are known to be invalid.
- Modified FBlueprintActionDatabase::Tick() to handle deferred entry removals.
- Modified FBlueprintActionMenuBuilder::RebuildActionList() to both test actions for validity before building menu items and schedule removal of invalid actions on the next tick.
Notes:
- Alternatively we could just include UObject keys in the database's AddReferencedObject impl, but that would then prevent objects from ever being GC'd if they are not explicitly removed. For most entries the action database takes the approach of explicitly removing entries via delegate when the UObject is destroyed, so I chose to use a TWeakObjectPtr instead so that any entries that may not be getting explicitly removed via delegate will now simply become invalidated if the UObject key is GC'd due to not being referenced. I also set it up to clean and remove any entries (along with any associated node spawners) that are found to be invalid the next time we open the BP editor.
Change 3461373 by Lukasz.Furman
fixed async navmesh rebuilds not kicking in for requests from navdata.bForceRebuildOnLoad
#jira UE-44231
Change 3461409 by Lukasz.Furman
fixed reenabling automatic navmesh generation in Editor Preferences
#ue4
Change 3461550 by Ben.Zeigler
#jira UE-45328 Fix local variable support for Redirectors and other save-time validation. We need to run the local variables to UProperty and back at save time
Add new flag PPF_SerializedAsImportText which is used for BP pins/default values and indicates that something has been serialized as import text and so needs to handle string asset redirectors
Change 3462625 by Zak.Middleton
#ue4 - Fix InterpToMovementComponent not setting velocity on the object it moves. Fix movement rate when substepping enabled (other related fixes to come).
github PR #3620
Change 3462796 by Dan.Oconnor
Fix for spamming BroadcastBlueprintReinstanced and for creating CDO at wrong time when compiling FrontEnd.uasset in OrionGame
#jira UE-45434
Change 3462995 by Ben.Zeigler
#jira UE-16941 Fix it so Load Asset node works with a literal value as well as a connected pin
Change 3463099 by Ben.Zeigler
#jira UE-45471 Allow abstract base classes for primary assets
Change 3464809 by Marc.Audy
Expose FVector2D / FVector2D to blueprints
#jira UE-45427
Change 3467254 by Mieszko.Zielinski
Added an AI helper BP function that supplies caller with a copy of navigation path given controller is currently following #UE4
Change 3467644 by Dan.Oconnor
Fix for cook issues in ocean when using compilation manager, one issue caused by bad dependencies list, one issue caused by lack of subobject mapping in archetype reinstancing.
#jira UE-45443, UE-45444
Change 3468176 by Dan.Oconnor
Fix dependent blueprints being marked dirty when a blueprint is compiled
Change 3468353 by Michael.Noland
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
Change 3470532 by Dan.Oconnor
Re-enable compilation manager
Change 3470572 by Dan.Oconnor
Fix for pin paramters resetting when an archetype was reinstanced
#jira UE-45619
#rnx
Change 3471949 by Mason.Seay
Adding Primary Assets for testing
Change 3472074 by Ben.Zeigler
#jira UE-45140 Convert iterative cooking to use the Asset Registry as it's only mode, remove old hash and timestamp versions. This allows deleting the entire PackageDependencyInfo module
Change the asset registry iteration to not compute a hash at all, and instead store the script package guids in it's cache.
Expose bIgnoreIniSettingsOutOfDateForIteration and bIgnoreScriptPackagesOutOfDateForIteration in cooker settings, affects rather to listen to ini/script changes when doing iterative cooking
Change 3472079 by Ben.Zeigler
With new incremental cook options, change Fortnite to never care about ini settings, but do care about code changes. This can be changed but from previous discussions we wanted to be more safe than fast here
Change 3473429 by Lukasz.Furman
changed path following update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473476 by Lukasz.Furman
changed crowd simulation path update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473663 by Ben.Zeigler
Fix it so base k2node registers framework version, this is needed for the assetptr fixup I previously added
Change 3473679 by Mason.Seay
Slight cleanup of test map and added ability to teleport across level for easy navigation
Change 3473712 by Marc.Audy
Do default value validation against the actual value of the default entry of an enum rather than the serialized empty autogenerated default value
Change 3474055 by Marc.Audy
When nodes are reconstructed any pins that were previously linked or set to non-default values that have been removed will no longer simply vanish, but instead will remain in an Orphaned state until dealt with.
#jira UE-41828
Change 3474119 by mason.seay
Tweaked Force Feedback test
Change 3474156 by Marc.Audy
Actually enable orphan pin retention
Change 3474382 by Ben.Zeigler
Class.h Header and comment cleanup. Started this because IsChildOf did not have a comment and it's usage is a bit confusing
Change 3474386 by Ben.Zeigler
Close popup window when adding asset class to audit window
Change 3474491 by Ben.Zeigler
Remove ability for Worlds to not be saved as assets, this has been the default since 2014.
Change 3475363 by Marc.Audy
Alt-click now works with orphaned pins
#jira UE-45699
Change 3475523 by Marc.Audy
Fixup Fortnite and Paragon content for orphaned pin errors and warnings
Change 3475623 by Phillip.Kavan
#jira UE-45477 - Fix an EDL assertion on load in a nativized build with one or more Actor subobjects instanced via the EditInlineNew UI in the BP class defaults property editor.
Change summary:
- Modified FEmitDefaultValueHelper::OuterGenerate() to emit code to construct/initialize instanced subobject values that do not have the RF_DefaultSubObject flag set, and also to recursively handle nested subobjects for those values.
- Modified FEmitDefaultValueHelper::HandleInstancedSubobject() to alternatively emit a 'NewObject' assignment statement rather than a 'CreateDefaultSubobject' statement if only RF_ArchetypeObject is set on the source object value.
Change 3476008 by Dan.Oconnor
Fix for failing to preload our super class's subobjects. Effectively moving UBlueprint::ForceLoad calls earlier in loading process. This only results in data resetting to your parent's parent's default value from your parent's default value.
#jira UE-18765
Change 3476115 by Dan.Oconnor
Fix missing category information for inherited functions when using compilation manager
#jira UE-45660
#rnx
Change 3476577 by Lukasz.Furman
added early outs from navmesh layer generation when there's no walkable cells or contours to avoid allocating 0 bytes by next generation steps (behavior differs between platforms)
#ue4
Change 3476587 by Phillip.Kavan
#jira UE-45517 - Fix a regression in which dragging UMG widgets around in the designer view results in redundantly-compounded BP class properties and context menu actions.
Change summary:
- Modified SDesignerView::ClearDropPreviews() to move the widget that was removed from the tree into the transient package. This ensures that FWidgetBlueprintCompiler::CreateClassVariablesFromBlueprint() won't pick them up.
- Modified SDesignerView::ProcessDropAndAddWidget() to also consider any widgets not added to the 'DropPreviews' array as being transient (i.e. also move them into the transient package since they were not added to the tree).
Notes:
- The regression was introduced by the changes in CL# 3410168, and was merged to Main at CL# 3431398.
#rnx
Change 3476723 by Dan.Oconnor
Match old behavior wrt updating implemented interfaces in blueprints - this logic from FKismetEditorUtilities::CompileBlueprint was missing in compilation manager
#jira UE-45468
#rnx
Change 3476948 by Michael.Noland
Framework: Changed AActor::FindComponentByClass (and AActor::GetComponentByClass by extension) to return nullptr when passed a nullptr class, rather than crashing
Change 3476970 by Ben.Zeigler
Fix bug I introduced in 4.16 where assigning assets to multiple chunks did not work properly
Change 3477536 by Marc.Audy
Don't display default value box on linked orphaned input pins
Change 3477835 by Marc.Audy
Fix pins orphaned by deletion of an entry in a user-defined enum disappearing instead of remaining connected
#jira UE-45754
Change 3478027 by Marc.Audy
Minor performance optimization
#rnx
Change 3478198 by Phillip.Kavan
#jira UE-42431 - Remove an unnecessary ensure() when pasting an event node.
Change summary:
- Modified UEdGraphSchema_K2::CreateSubstituteNode() to no longer ensure() that we have a valid PreExistingNode; it's only used for logging when a substitute node is created in response to a conflict with an existing node.
Change 3478485 by Marc.Audy
Eliminate extraneous error messages about orphaned pins on get/set nodes
#jira UE-45749
#rnx
Change 3478756 by Marc.Audy
Fix fallout from changes to DoesDefaultValueMatchAutogenerated for user defined enums
#jira UE-45721
#rnx
Change 3478926 by Marc.Audy
Non-blueprint type structs can no longer be made/broken
Non-blueprint visible properties in structs will no longer have pins created for them
#jira UE-43122
Change 3478988 by Marc.Audy
DeltaTime for a tick function with a tick interval is now correct after disabling and then reenabling the tick function.
#jira UE-45524
Change 3479818 by Marc.Audy
Allow ctrl-drag off of orphan pins
#jira UE-45803
Change 3480214 by Marc.Audy
Modifications to user defined enumerations are now transacted
#jira UE-43866
Change 3480579 by Marc.Audy
Maintain all pin properties through transactions.
#rn Reference pins that are removed and then restored via undo now correctly have the diamond icon instead of the standard circle.
Change 3481043 by Marc.Audy
Make/Break of structs does not depend on having blueprint exposed properties.
Splitting of a struct pin still requires blueprint exposed properties.
#jira UE-45840
#jira UE-45831
Change 3481271 by Ben.Zeigler
Fix the AssetManager chunking code to use ChunkDependencyInfo instead of a hardcoded check for chunk 0
Clean up ChunkDependencyInfo and make it properly public
Move ShouldSetManager to be WITH_EDITOR
Ported from WEX branch
#RB peter.sauerbrei
Change 3481373 by Dan.Oconnor
Reduce reliance on expensive FindDelegateSignature. 3275922 made warnings about a ambiguous search more likely as it preserved names of members on the REINST_ classes
#jira UE-45704
Change 3481380 by Ben.Zeigler
Change it so Struct and Object AssetRegistrySearchable properties do not show up in content browser, they are not helpful
Change 3482362 by Marc.Audy
Fix properties not exposed to blueprint warnings for input properties on function graphs.
#jira UE-45824
Change 3482406 by Ben.Zeigler
#jira UE-45883 Fix Switch On Gameplay Tag Container node, and add switch nodes to TagCheck map
Change 3482498 by Ben.Zeigler
Attempt to fix hot reload issues with Asset Manager. We need to reset and re-acquire the asset classes when rescanning, as they may be pointing to the replaced class
Change 3482517 by Lukasz.Furman
fixed smart navlink update functions removing important flag
#jira UE-45875
Change 3482538 by Marc.Audy
When comparing float, vector, and rotator values for whether the the default matches the autogenerated do not use the string compare because differences in use of decimal or number of 0s after decimal are then considered not the same float
#jira UE-45846
Change 3482773 by Marc.Audy
Don't show default value or pass by reference for exec pins
#jira UE-45868
Change 3482791 by Ben.Zeigler
#jira UE-45800 Correctly dirty game mode blueprint when changing player controller/etc classes from game mode customization
Fix it so MarkBlueprintAsStructurallyModified calls MarkBlueprintAsModified as several fixes were only in the second function
Change 3483131 by Zak.Middleton
#ue4 - InterpToMovementComponent:
- Fix velocity not zeroed when interpolation stops.
- Various fixes when calculating velocity and time when substepping is enabled.
- Improve accuracy of interpolation when looping and there is time remaining after the loop event is hit. Consume the remainder of the time after the event back in the loop (similar to handling a blocking impact).
#jira UE-45690
Change 3483146 by Phillip.Kavan
#jira UE-38358 - Propagate 'const' function flag from interface Blueprint to implementing Blueprints.
Change summary:
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() to call SkeletalRecompileChildren() on dependent BPs when the target is an interface BP.
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified::FRefreshHelper::SkeletalRecompileChildren() to set child BP status to BS_Dirty after compiling.
- Modified ConformInterfaceByName() (FBlueprintEditorUtils) to use the interface's skeleton class for function iteration as well as to match the Function Entry node's 'const' setting to the interface UFunction's signature.
Change 3483340 by Ben.Zeigler
Fix issue querying asset registry after a hot reload, make sure pending kill objects are never considered to be Assets
Change 3483548 by Michael.Noland
Epic Friday: Playing around with some prototype traps
Change 3483700 by Phillip.Kavan
Fix CIS cook crash introduced by last submit.
#rnx
Change 3485217 by Ben.Zeigler
#jira UE-45519 Fix regression introduced in 4.16 where it would no longer cook all maps when no explicit maps were specified in ini or game callback. Moved the code that detects changes before culture/default map code and hardened it to deal with the case where some engine packages were already in the list before it entered the function
Change 3485367 by Dan.Oconnor
Avoid adding mappings to anim node when creating variables on the skeleton class and using the compilation manager
#jira UE-45756
Change 3485565 by Ben.Zeigler
#jira UE-45948 Fix compilation manager to properly reset variable default values after promoting a pin to local variable
Change 3485566 by Marc.Audy
Fix crashes caused by undo/redo of user defined struct changes
#jira UE-45775
#jira UE-45781
Change 3485805 by Michael.Noland
PR #3459: Fix for world origin shifting and SpringArmComponent location lag (Contributed by michail-nikolaev)
#jira UE-43747
Change 3485807 by Michael.Noland
PR #3485: Added additional textures field to paper 2d tileset class (Contributed by gryphonmyers)
#jira UE-44041
Change 3485811 by Michael.Noland
Framework: Fixed a bug in FStreamLevelAction::MakeSafeLevelName to avoid appending the PIE prefix multiple times (fixes functions like Unload Streaming Level when passed a full package name from an instanced streaming level)
Change 3485829 by Michael.Noland
Framework: Made GetWorldAssetPackageFName BlueprintCallable so instanced levels can be unloaded
Change 3485830 by Michael.Noland
PR #3568: add API declarations to ALevelStreamingVolume methods (Contributed by kayama-shift)
#jira UE-45002
Change 3486039 by Michael.Noland
PR #3495: UE-44014: Refreshing node error fixes (Contributed by projectgheist)
- Empty out the ErrorMsg when a node gets refreshed to prevent the same error messages from compounding
- Added support for split pins in UK2Node_Event::IsFunctionEntryCompatible
- Added a missing check for the delegate pin name on the entry node part of UK2Node_Event::IsFunctionEntryCompatible
#jira UE-44014
Change 3486093 by Michael.Noland
PR #3379: Added GAMEPLAYABILITIES_API to all Ability Tasks. (Contributed by ryanjon2040)
#jira UE-42903
Change 3486139 by Michael.Noland
Blueprints: Added new config options for execution wire thickness when not debugging (DefaultExecutionWireThickness) and data wire thicknesses (DefaultDataWireThickness) to the Graph Editor Settings page
#rn
Change 3486154 by Michael.Noland
Framework: Speculative fix for CIS error about FStructOnScope
#rnx
Change 3486180 by Dan.Oconnor
Better match old logic for determining when to skip data only compile
#jira UE-45830
Change 3487276 by Marc.Audy
Fix crash when using Setter with a locally scoped variable
#rnx
Change 3487278 by Marc.Audy
Ensure that pin change notifications occur on all pin breaks unless it is part of a node being garbage collected
Change 3487658 by Marc.Audy
Ensure that child actor template is created for subclasses
#jira UE-45985
Change 3487699 by Marc.Audy
Move non-templated elements out of FArchiveReplaceObjectRef and put them in FArchiveReplaceObjectRefBase
Change 3487813 by Dan.Oconnor
Asset demonstrating a crash
Change 3488101 by Marc.Audy
Fix crash with spawn/construct actor/object from class nodes when they no longer had any pins.
Correctly orphan pins when a node goes to 0 pins.
Change 3488337 by Marc.Audy
Editable pin base should not manually remove pin and let reconstruct node and rewire pins do their job
#jira UE-46020
Change 3488512 by Dan.Oconnor
ConstructObject nodes and SubInstances nodes use skeleton class when compilation manager can provide it
#jira UE-45830, UE-45965
#rnx
Change 3488631 by Michael.Noland
Framework: Fixed a crash when loading a blueprint with a parent class of ALevelBounds caused by trying to register the class default object with a non-existent level
#jira UE-45630
Change 3488665 by Michael.Noland
Blueprints: Improve the details panel customization for optional pin nodes like Struct Member Get/Set
- The category, raw name, and tooltip of the property are now included as part of the filter text as well
- The property tooltip is now displayed when hovering over the property name
- Code updated to use GET_MEMBER_NAME_CHECKED() where appropriate
Change 3489324 by Marc.Audy
Fix recursion causing stack crash
#jira UE-46038
#rnx
Change 3489326 by Marc.Audy
Fix cooking crash
#jira UE-46031
#rnx
Change 3489687 by mason.seay
Assets for testing orphan pins
Change 3489701 by Marc.Audy
Back out changelist 3487278 and 3489443 and make targetted changes for fixing up orphan pin cases where changing connections doesn't remove the pin.
#jira UE-46051
#jira UE-46052
#rnx
Change 3490352 by Dan.Oconnor
Fix for missing WidgetTree on Skeleton class - just look directly at the WidgetBlueprint
#jira UE-46062
Change 3490814 by Marc.Audy
Make callfunction/macro instances save all pins in orphan state more similar to previous behavior
#rnx
Change 3491022 by Dan.Oconnor
Properly clean up 'Key' property when we fail to create a value property
#jira UE-45279
Change 3491071 by Ben.Zeigler
#jira UE-45981 Fix rotation issues, vector/rotator pins with empty strings were not matching due to uninitialized memory.
Change 3491244 by Michael.Noland
Blueprints: Add compile time message back to the output log (will not auto-open the output log if there were no warnings/errors)
#jira UE-32948
Change 3491276 by Michael.Noland
Blueprints: Fixed some bugs where a newly added item would fail show up in the "My Blueprints" tree if there was a filter active (e.g., when promoting a variable)
- Centralized the logic for clearing the filter so it happens when we try and fail to select the item, rather than ad hoc in various other places
- Made it only clear the filter if necessary, rather than (almost) always clearing it when adding an item
#jira UE-43372
Change 3491562 by Marc.Audy
Put back pin removal in to editable pin base and instead modify the pin destroy implementation to take down child split pins with it
#jira UE-46020
#rnx
Change 3491658 by Marc.Audy
Unify RemoveUserDefinedPin implementations. Use version that has break to avoid size change assert
#rnx
Change 3491946 by Marc.Audy
ReconstructSinglePin no longer destroys OldPin (avoids oprhaned sub pins being destroyed before reparented)
RewireOldPinsToNewPins now destroys OldPins at the end (calling code no longer reponsible)
DestroyImpl now prunes out SubPins that had already been trashed
#rnx
Change 3492040 by Marc.Audy
Discard exec/then pins from a callfunction that has been converted to a pure node
#rnx
Change 3492200 by Zak.Middleton
#ue4 - Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size.
Fixes possible regression from CL 3359561 that removed the Reset(...) entirely.
#jira UE-46012
Change 3492290 by Ben.Zeigler
#jira UE-46108 Fix StringLibrary Mid to never crash, Substring had already been fixed
Change 3492311 by Marc.Audy
Don't clear the pin type if what you're connecting to's pin type is wildcard
#rnx
Change 3492680 by Dan.Oconnor
Handle missing generated class when using compilation manager - tested by forcing compile of BP_ParentClassIsMissingType.uasset
Change 3492826 by Marc.Audy
Don't do pin connection list change notifications from DestroyPins while regenerating on load
#jira UE-46112
#rnx
Change 3492851 by Michael.Noland
Core: Fixed various crashes when using UObject::CallFunctionByNameWithArguments with non-trivial argument types by properly initializing the allocated parameters
Change 3492852 by Michael.Noland
Framework: Fixed a crash if ACharacter::FindComponentByClass was passed a nullptr class
Change 3492934 by Marc.Audy
Fix ensure and crash delete macro containing orphaned pin
#rnx
Change 3493079 by Dan.Oconnor
Fix for crash when opening ThirdPersonAnimBlueprint and ThirdPersonAnimBlueprint_Perf then clicking 'Compile' button in ThirdPersonAnimBlueprint editor. Make sure the convenience members in the derived compilers get set when we relink child classes (which requires making cdos, which requires PropagateValuesToCDO..)
#rnx
Change 3493346 by Phillip.Kavan
#jira UE-40560 - Fix a reported crash when pasting nodes between unrelated Blueprint graphs.
Change summary:
- Modified FEdGraphUtilities::PostProcessPastedNodes() to ensure() on a NULL pin entry; this will allow execution to continue while still alerting us since it is an unexpected result. Also added an 'else' case to then remove the NULL entry so that PostPasteNode() implementations don't all have to guard against NULL pin entries. When the node is reconstructed, the NULL entry will be replaced with the correct pin initialized to its default values.
- Modified UEdGraphPin::ImportTextItem() to add some additional logging to parse error cases when importing pin properties from source T3D text. Hopefully this gives us more information when this is encountered in the future.
Change 3493938 by Michael.Noland
Blueprints: Prevent issues with renaming event dispatchers to contain periods (this may be disallowed in the future, but they no longer become uneditable)
#jira UE-45780
Change 3493945 by Michael.Noland
Blueprints: Fixed GetDelegatePoperty typos
#rnx
Change 3493997 by Michael.Noland
Blueprints: Partially reverting changes from CL# 3319966 to reroute nodes, restoring their alignment but losing the symmetrical grab handle changes
#jira UE-45760
Change 3493998 by Dan.Oconnor
Fix rare crash in RefreshStandAloneDefaultsEditor when the blueprint editor is opened and a blueprint had errors in it
Note: I stumbled across this by running a unit test and then opening a blueprint in the BPE. CrashReporter indicates 3 crashes in the last 3 days
Change 3494025 by Michael.Noland
Engine: Deleted some dead code (DEBUGGING_VIEWPORT_SIZES)
#rnx
Change 3494026 by Michael.Noland
Blueprints: V0 of a BlueprintCallable/BlueprintPure function fuzzer
- Calls exposed methods with default parameters on classes it is able to spawn for now, which catches crashes due to null and /0 but not out of bounds issues or ones on classes it can't spawn due to classwithin, abstract, etc...
- Can be called using Test.ScriptFuzzing, won't be integrated into automated tests until it is more fully fleshed out and all known issues are addressed
#rnx
Change 3496382 by Ben.Zeigler
Fix ensure when launching editor with cook on the side and incremental cooking enabled. It now flushes the background asset gather when calling the sync load all assets if one is in progress
Change 3496688 by Marc.Audy
Avoid crashing in component instance data if (for some reason) the Actor's root component isn't properly set up
#jira UE-46073
Change 3496830 by Michael.Noland
Editor: Change FEditorCategoryUtils methods to take UStruct* instead of UClass*, as they are just reading metadata
#rnx
Change 3496840 by Michael.Noland
Framework: Remove the requirement for a local player in UCheatManager::CheatScript, so it can be be started from the server side (doesn't change the availability of the cheat manager, just allows things like the redundant "cheat cheatscript scriptname" to work)
Change 3497038 by Michael.Noland
Fortnite: Added UFortDeveloperSettings to allow developers to auto-run cheats in PIE (does not occur in -game or outside of WITH_EDITOR builds)
- You can specify a list of cheat commands to run when a pawn is possessed (also needs CL# 3496840 for cheatscripts)
- You can also specify a set of items to grant to your local inventory when it is created
Change 3497204 by Marc.Audy
Fix AbilitySystemComponent not being blueprint readable.
#rnx
Change 3497668 by Mieszko.Zielinski
Fixed a crash in BT editor when dealing with enum-typed Blackboard-keys pointing to enum values that have been deleted #UE4
#jira UE-43659
Change 3497677 by Mieszko.Zielinski
Added a community-suggested working solution to patching up dynamic navmesh after world offset #UE4
Also, fixed a crash related to navmesh rebuilding if generation was configured to lazily gather navigatble geometry
#jira UE-41293
Change 3497678 by Mieszko.Zielinski
Marked AbstractNavData class as transient #UE4
We never want to save it to levels
Change 3497679 by Mieszko.Zielinski
Made NavModifierVolume responsive to editor-time property changes #UE4
#jira UE-32831
Change 3497900 by Dan.Oconnor
Fix bad skel reference when using construct object from class, just limiting scope of 3491946. To reproduce the bug just nativize QA Game, including the TM-Gameplay level
#rnx
Change 3497904 by Dan.Oconnor
Use K2Node_Event::FindEventSignatureFunction in order when directly generating the skeleton generated class to get event params correct
#jira UE-46153
#rnx
Change 3497907 by Dan.Oconnor
Correctly set blueprint visibility flags on params for inherited functions when generating the skeleton class
#rnx
#jira UE-46186
Change 3498218 by mason.seay
Updates to pin testing BP's
Change 3498323 by Mieszko.Zielinski
Made UNavCollision instance assigned to StaticMesh not get re-created from scratch every single time any StaticMesh property changes #UE4
Recreation was resulting in some of the UNavCollision's properties not getting saved and the way we were recreating the nav collision could also interfere with undo buffers
#jira UE-44891
Change 3499007 by Marc.Audy
Allow systems to hook Pre and PostCompile to do custom behaviors
Change 3499013 by Mieszko.Zielinski
Made AbstractNavData class non-transient again #UE4
Implemented AbstractNavData instances' transientness in a different manner.
#jira UE-46194
Change 3499204 by Mieszko.Zielinski
Introduced CrowdManagerBase, an engine-level class that can be extended to implement custom crowd management #Orion
Extracted FRecastQueryFilter into a separate file, which will break some peoples' compilation.
#jira UE-43799
Change 3499321 by mason.seay
Updated bp for struct testing
Change 3499388 by Marc.Audy
Allow the compiler log to store off potential messages from earlier in the compile cycle (early validation), that can be committed later (for example once pruning is completed).
Change 3499390 by Marc.Audy
Generate the orphan pin error messages during EarlyValidation, but cache until the regular validation phase. This ensures all are generated, but only those that aren't pruned will be emitted.
#rnx
Change 3499420 by Michael.Noland
Engine: Introduced a new version of UEngine::GetWorldFromContextObject which takes an enum specifying the behavior on failures and updated all existing uses
The new version intentionally does not have a default value for ErrorMode, callers need to think about which variant of behavior they want:
- ReturnNull: Silently returns nullptr, the calling code is expected to handle this gracefully
- LogAndReturnNull: Raises a runtime error but still returns nullptr, the calling code is expected to handle this gracefully
- Assert: Asserts, the calling code is not expecting to handle a failure gracefully
- Deprecated UEngine::GetWorldFromContextObject(object, boolean) and changed the default behavior for the deprecated instances to do LogAndReturnNull rather than Assert, based on the real-world call pattern
- Introduced GetWorldFromContextObjectChecked(object) as a shorthand for passing in EGetWorldErrorMode::Assert
- Made UObject::GetWorldChecked() actually assert if it would return nullptr (under some cases the old function could silently return nullptr while reporting bSupported = true, so it neither ensured nor checked)
- Fixed a race condition in the 'is implemented' bookkeeping logic in GetWorld()/GetWorldChecked() by confining it to the game thread and added a check() to ImplementsGetWorld() to make it clear that it only works on the game thread
The typical recommended call pattern is to use something like:
if (UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull))
{
... Do something with World
}
Handling the failure case but requesting a log message (with BP call stack printed out) if it failed. This is now also the default behavior for old calls to UEngine::GetWorldFromContextObject(Object) (using the default value of bChecked=true), which is a behavior change but it matches how the function was being used in practice; the vast majority of call sites actually expected it to potentially fail and handled the nullptr case gracefully; very few places used the return value unguarded and wanted it to assert when passed a nullptr.
#jira UE-42458
Change 3499429 by Michael.Noland
Engine: Removed a bogus TODO (the problematic code had already been reworked)
#rnx
Change 3499470 by Michael.Noland
Core: Improved and corrected the comment for ensure()
- It doesn't crash when checking is disabled (and hasn't since UE3, maybe ever?)
- It now only fires once per ensure() by default, added a note about ensureAlways()
#rnx
Change 3499643 by Marc.Audy
Use TGuardValue instead of manually managing it
#rnx
Change 3499874 by Marc.Audy
Display <Unnamed> instead of nothing for Pins with blank display name in the compiler log
Change 3499875 by Marc.Audy
When changing function parameter types, don't orphan a pin on the function entry/exit nodes (but do at the call sites)
#jira UE-46224
Change 3499927 by Dan.Oconnor
UField::Serialize no longer serialize's its next ptr, UStruct::Serialize serializes all Children properties instead. This resolves a hard circular dependency between function libraries that EDL detected. It was resolved in an ad hoc way by the old linker
#jira UE-43458
Change 3499953 by Michael.Noland
Core: Created a variant of ensure that does runtime error logging without stopping in the debugger and some related functions that print a warning or error and may trigger a BP callstack (under the same rules as FFrame::KismetExecutionMessage)
- These are WIP and the API may change in the future, but are being used to fix various crashes found by fuzzing BP exposed functions
Change 3499957 by Michael.Noland
Animation: Added runtime errors for nullptr ControlRigs passed into BP methods
#rnx
Change 3499958 by Michael.Noland
Blueprints: Changed an ensure in UKismetNodeHelperLibrary::GetValidValue to a runtime error
#rnx
Change 3499959 by Michael.Noland
Engine: Downgrade various checks() to ensures() in the runtime asset cache functions exposed to Blueprints
Change 3499960 by Michael.Noland
AI: Changed UBTFunctionLibrary to not check/ensure if passed a null world context object
Change 3499968 by Michael.Noland
Editor: Fixed a couple of crashes in UEditorLevelUtils when passed nullptr arguments, and reformatted the entire file to fix widespread indentation issues
#rnx
Change 3499969 by Michael.Noland
Engine: Changed the verbosity of the failure log message of UEngine::GetWorldFromContextObject(..., LogAndReturnNull) from Warning to Error, so it always prints out a BP callstack
#rnx
Change 3499973 by Michael.Noland
Rendering: Fixed asserts in various UKismetRenderingLibrary methods if passed a nullptr for the WorldContextObject
- Also fixed flipped warnings in the failure cases for EndDrawCanvasToRenderTarget
Change 3499979 by Michael.Noland
Editor: Prevented a crash in UMaterialEditingLibrary::RecompileMaterial when passed a nullptr material
Change 3499984 by Michael.Noland
Physics: Prevented a crash in UTraceQueryTestResults::AssertEqual when passed in nullptr for Expected
Change 3499993 by Michael.Noland
Blueprints: Added validation when renaming variables, functions, components, multicast delegates, etc... to prevent names from containing some unacceptable characters
- This validation only kicks in when trying to rename an item, so bad names in existing content are 'grandfathered in'
- These bad names can cause bugs when working with content that contains these characters (e.g., names that contain a period cannot be found via FindObject<T>)
- Currently only . is banned, but eventually we may expand it to include all of INVALID_OBJECTNAME_CHARACTERS
Change 3500009 by Michael.Noland
Blueprints: Made the fuzzer skip classes declared in UnrealEd for now (some of the exposed methods change global state that can cause other tests to fail as the fuzzer isn't particularly sandboxed ATM)
#rnx
Change 3500011 by Michael.Noland
Android: Fixed a crash in UAndroidPermissionFunctionLibrary::AcquirePermissions when called with an empty array on non-Android platforms
Change 3500012 by Michael.Noland
Editor: Prevent a crash in UEditorTutorial::OpenAsset when passed a nullptr Asset
Change 3500014 by Michael.Noland
Engine: Changed FRuntimeAssetCacheFilesystemBackend::ClearCache(NAME_None) to not try to clear all cache directories (there is a separate no-args method for that)
Change 3500019 by Michael.Noland
Core: Fixed some more issues with CallFunctionByNameWithArguments and initializing / destroying parameters
- It was skipping the return value and incorrectly relying on the FirstPropertyToInit list which isn't set for by ref arguments
Change 3500020 by Michael.Noland
Automation: Prevent UFunctionalTestingManager::RunAllFunctionalTests and UFunctionalTestingManager* UFunctionalTestingManager::GetManager from crashing when a manager cannot be created (because we can't route to a world)
Change 3501062 by Marc.Audy
MakeArray AddInputPin is often used as part of node expansion, so need to move the transaction out of the function
Fix inability to undo/redo pin additions to sequence node
Add a K2Node_AddPinInterface to generalize the interface that K2Nodes implement to interact with SGraphNodeK2Sequence so it can be more generally used
#jira UE-46164
#jira UE-46270
Change 3501330 by Michael.Noland
AI: Fix an error on shutdown when the CDO of UAIPerceptionComponent tries to clean up (as it was never registered in the first place)
#jira UE-46271
Change 3501356 by Marc.Audy
Fix crash when multi-editing actor blueprints
#jira UE-46248
Change 3501408 by Michael.Noland
Core: Improve 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)
Change 3501457 by Phillip.Kavan
#jira UE-46054 - Fix crash when launching a packaged build that includes a nativized Blueprint instance with a ChildActorComponent instanced via an AddComponent node.
Change summary:
- Removed UK2Node_AddComponent::PostDuplicate(). This eliminates the creation of redundant component templates that were being unnecessarily created during the Blueprint duplication that precedes the nativization pass.
- Modified SMyBlueprint::OnDuplicateAction() to call MakeNewComponentTemplate() in response to a graph duplication action within the same Blueprint context (replaces previous UK2Node_AddComponent::PostDuplicate() impl).
- Modified FEmitDefaultValueHelper::HandleSpecialTypes() to force AddComponent-based CAC-owned template objects in the emitted codegen to use the UDynamicClass as the Outer when instancing. This matches what we already do for SCS-based CAC-owned template objects - that logic was added in CL# 3270456, and this matches up with FBlueprintNativeCodeGenModule::FindReplacedNameAndOuter(), where we specifically handle CAC-owned template objects.
Change 3502741 by Phillip.Kavan
#jira UE-45782 - Fix undo for index pin type changes.
Change summary:
- Modified SGraphPinIndex::OnTypeChanged() to call Modify() on the pin that was changed.
Change 3502939 by Michael.Noland
Back out changelist 3499927
Change 3503087 by Marc.Audy
Re-fixed ocean content as editor had also changed so had to take theirs and redo
#rnx
Change 3503266 by Ben.Zeigler
#jira UE-46335 Fix regression added in 4.16 where AssetRegistry GetAncesorClassNames/GetDerivedClassNames were not working properly in cooked builds for classes not in memory
Change 3503325 by mason.seay
updated Anim BP to prep for pin testing
Change 3503445 by Marc.Audy
Fix crash caused by OldPins being destroyed before rewiring
#rnx
Change 3505024 by Marc.Audy
Fix NodeEffectsPanel blueprint as it was using pins that no longer existed
#rnx
Change 3505254 by Marc.Audy
Don't include orphan pins when gather source property names
If a property doesn't exist for a source property name just skip the property rather than crashing
#jira UE-46345
#rnx
Change 3506125 by Ben.Zeigler
#jira UE-46311 Fix issues when blueprints are reloaded in place, it needs to remove them from root properly and sanitize the old class. It's still not clear why they are being reloaded in place
Change 3506334 by Dan.Oconnor
Move UAnimGraphNode_Base::PreloadRequiredAssets up to K2Node, make sure nodes get a chance to preload data before compilation manager compiles newly loaded blueprints
#jira UE-46411
Change 3506439 by Dan.Oconnor
Return to pre 3488512 behavior for construct object nodes. This means that we can still get warnings on load when users compile after saving a blueprint, but the current behavior loses default values because it's lookng at the skeleton cdo
#jira UE-46308
Change 3506468 by Dan.Oconnor
Return to pre 3488512 behavior, as it causes bad default values
#jira UE-46414
#rnx
Change 3506733 by Marc.Audy
Use the most up to date class to determine whether a property still exists when adding pins during reconstruction
#jira UE-45965
#author Dan.OConnor
#rnx
Change 3507531 by Ben.Zeigler
#jira UE-46449 Better fix to flush the asset registry queue when the editor requests a synchronous scan at startup. Sometimes it can take a few frames because of file handle delays
Change 3507924 by mason.seay
Sanity save of TM-Gameplay and sublevels to maybe resolve level streaming issues
Change 3507962 by Marc.Audy
Remake changes from CL# 3150796 wiped out by WEX-Staging merge to Main in CL# 3479958
#rnx
Change 3509131 by Dan.Oconnor
Compilation manager compile on load flow never called FindExportsInMemoryFirst, which is critical to prevent reloading of UBlueprintGeneratedClasses when Rename clears the export table
#jira UE-46311
Change 3509345 by Marc.Audy
CVar to disable orphan pins if necessary
#rnx
Change 3509959 by Marc.Audy
Protect against crashing due to large values in Timespan From functions
#jira UE-43840
Change 3510040 by Marc.Audy
Remove all the old unneeded ShooterGame test maps
#rnx
[CL 3510073 by Marc Audy in Main branch]
2017-06-26 15:07:18 -04:00
// Handle deferred removals.
while ( ActionRemoveQueue . Num ( ) > 0 )
{
2019-10-18 16:15:19 -04:00
ClearAssetActions ( ActionRemoveQueue . Pop ( ) ) ;
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3510040)
#lockdown Nick.Penwarden
=====================================
MAJOR FEATURES + CHANGES
=====================================
Change 3459524 by Marc.Audy
Get/Set of properties that were previously BPRW/BPRO should error when used
#jira UE-20993
Change 3460004 by Phillip.Kavan
#jira UE-45171 - Fix C++ compilation failures during packaging caused by nativizing a Blueprint that overrides a native function with a 'TSubclassOf' parameter or return value.
Change summary:
- Modified FKismetCompilerContext::CreateParametersForFunction() to pass the 'CPF_UObjectWrapper' flag through to new function parameter properties during Blueprint compilation.
Change 3461210 by Phillip.Kavan
#jira UE-44505 - Fix occasional Blueprint editor crashes that could occur while rebuilding the context menu from the action registry.
Change summary:
- Modified FBlueprintActionDatabase::FActionRegistry to use an FObjectKey as the key type. This allows us to test entries for UObject validity before rebuilding context menu items based on the action database.
- Changed FBlueprintActionInfo::CachedOwnerClass to be a TWeakObjectPtr rather than a raw UClass* since it's based on the ActionOwner, which could potentially become invalid after the OwnerClass has been cached.
- Modified FBlueprintActionDatabase::RefreshAssetActions() to exclude World assets if the WorldType is not EWorldType::Editor. This eliminates an issue with unreferenced "inactive" GC'd world objects being left in the BP action registry after cooking, at which point the keys could become invalid.
- Added FBlueprintActionDatabase::DeferredRemoveEntry() to allow for scheduling removal of entries from outside of the database if they are known to be invalid.
- Modified FBlueprintActionDatabase::Tick() to handle deferred entry removals.
- Modified FBlueprintActionMenuBuilder::RebuildActionList() to both test actions for validity before building menu items and schedule removal of invalid actions on the next tick.
Notes:
- Alternatively we could just include UObject keys in the database's AddReferencedObject impl, but that would then prevent objects from ever being GC'd if they are not explicitly removed. For most entries the action database takes the approach of explicitly removing entries via delegate when the UObject is destroyed, so I chose to use a TWeakObjectPtr instead so that any entries that may not be getting explicitly removed via delegate will now simply become invalidated if the UObject key is GC'd due to not being referenced. I also set it up to clean and remove any entries (along with any associated node spawners) that are found to be invalid the next time we open the BP editor.
Change 3461373 by Lukasz.Furman
fixed async navmesh rebuilds not kicking in for requests from navdata.bForceRebuildOnLoad
#jira UE-44231
Change 3461409 by Lukasz.Furman
fixed reenabling automatic navmesh generation in Editor Preferences
#ue4
Change 3461550 by Ben.Zeigler
#jira UE-45328 Fix local variable support for Redirectors and other save-time validation. We need to run the local variables to UProperty and back at save time
Add new flag PPF_SerializedAsImportText which is used for BP pins/default values and indicates that something has been serialized as import text and so needs to handle string asset redirectors
Change 3462625 by Zak.Middleton
#ue4 - Fix InterpToMovementComponent not setting velocity on the object it moves. Fix movement rate when substepping enabled (other related fixes to come).
github PR #3620
Change 3462796 by Dan.Oconnor
Fix for spamming BroadcastBlueprintReinstanced and for creating CDO at wrong time when compiling FrontEnd.uasset in OrionGame
#jira UE-45434
Change 3462995 by Ben.Zeigler
#jira UE-16941 Fix it so Load Asset node works with a literal value as well as a connected pin
Change 3463099 by Ben.Zeigler
#jira UE-45471 Allow abstract base classes for primary assets
Change 3464809 by Marc.Audy
Expose FVector2D / FVector2D to blueprints
#jira UE-45427
Change 3467254 by Mieszko.Zielinski
Added an AI helper BP function that supplies caller with a copy of navigation path given controller is currently following #UE4
Change 3467644 by Dan.Oconnor
Fix for cook issues in ocean when using compilation manager, one issue caused by bad dependencies list, one issue caused by lack of subobject mapping in archetype reinstancing.
#jira UE-45443, UE-45444
Change 3468176 by Dan.Oconnor
Fix dependent blueprints being marked dirty when a blueprint is compiled
Change 3468353 by Michael.Noland
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
Change 3470532 by Dan.Oconnor
Re-enable compilation manager
Change 3470572 by Dan.Oconnor
Fix for pin paramters resetting when an archetype was reinstanced
#jira UE-45619
#rnx
Change 3471949 by Mason.Seay
Adding Primary Assets for testing
Change 3472074 by Ben.Zeigler
#jira UE-45140 Convert iterative cooking to use the Asset Registry as it's only mode, remove old hash and timestamp versions. This allows deleting the entire PackageDependencyInfo module
Change the asset registry iteration to not compute a hash at all, and instead store the script package guids in it's cache.
Expose bIgnoreIniSettingsOutOfDateForIteration and bIgnoreScriptPackagesOutOfDateForIteration in cooker settings, affects rather to listen to ini/script changes when doing iterative cooking
Change 3472079 by Ben.Zeigler
With new incremental cook options, change Fortnite to never care about ini settings, but do care about code changes. This can be changed but from previous discussions we wanted to be more safe than fast here
Change 3473429 by Lukasz.Furman
changed path following update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473476 by Lukasz.Furman
changed crowd simulation path update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473663 by Ben.Zeigler
Fix it so base k2node registers framework version, this is needed for the assetptr fixup I previously added
Change 3473679 by Mason.Seay
Slight cleanup of test map and added ability to teleport across level for easy navigation
Change 3473712 by Marc.Audy
Do default value validation against the actual value of the default entry of an enum rather than the serialized empty autogenerated default value
Change 3474055 by Marc.Audy
When nodes are reconstructed any pins that were previously linked or set to non-default values that have been removed will no longer simply vanish, but instead will remain in an Orphaned state until dealt with.
#jira UE-41828
Change 3474119 by mason.seay
Tweaked Force Feedback test
Change 3474156 by Marc.Audy
Actually enable orphan pin retention
Change 3474382 by Ben.Zeigler
Class.h Header and comment cleanup. Started this because IsChildOf did not have a comment and it's usage is a bit confusing
Change 3474386 by Ben.Zeigler
Close popup window when adding asset class to audit window
Change 3474491 by Ben.Zeigler
Remove ability for Worlds to not be saved as assets, this has been the default since 2014.
Change 3475363 by Marc.Audy
Alt-click now works with orphaned pins
#jira UE-45699
Change 3475523 by Marc.Audy
Fixup Fortnite and Paragon content for orphaned pin errors and warnings
Change 3475623 by Phillip.Kavan
#jira UE-45477 - Fix an EDL assertion on load in a nativized build with one or more Actor subobjects instanced via the EditInlineNew UI in the BP class defaults property editor.
Change summary:
- Modified FEmitDefaultValueHelper::OuterGenerate() to emit code to construct/initialize instanced subobject values that do not have the RF_DefaultSubObject flag set, and also to recursively handle nested subobjects for those values.
- Modified FEmitDefaultValueHelper::HandleInstancedSubobject() to alternatively emit a 'NewObject' assignment statement rather than a 'CreateDefaultSubobject' statement if only RF_ArchetypeObject is set on the source object value.
Change 3476008 by Dan.Oconnor
Fix for failing to preload our super class's subobjects. Effectively moving UBlueprint::ForceLoad calls earlier in loading process. This only results in data resetting to your parent's parent's default value from your parent's default value.
#jira UE-18765
Change 3476115 by Dan.Oconnor
Fix missing category information for inherited functions when using compilation manager
#jira UE-45660
#rnx
Change 3476577 by Lukasz.Furman
added early outs from navmesh layer generation when there's no walkable cells or contours to avoid allocating 0 bytes by next generation steps (behavior differs between platforms)
#ue4
Change 3476587 by Phillip.Kavan
#jira UE-45517 - Fix a regression in which dragging UMG widgets around in the designer view results in redundantly-compounded BP class properties and context menu actions.
Change summary:
- Modified SDesignerView::ClearDropPreviews() to move the widget that was removed from the tree into the transient package. This ensures that FWidgetBlueprintCompiler::CreateClassVariablesFromBlueprint() won't pick them up.
- Modified SDesignerView::ProcessDropAndAddWidget() to also consider any widgets not added to the 'DropPreviews' array as being transient (i.e. also move them into the transient package since they were not added to the tree).
Notes:
- The regression was introduced by the changes in CL# 3410168, and was merged to Main at CL# 3431398.
#rnx
Change 3476723 by Dan.Oconnor
Match old behavior wrt updating implemented interfaces in blueprints - this logic from FKismetEditorUtilities::CompileBlueprint was missing in compilation manager
#jira UE-45468
#rnx
Change 3476948 by Michael.Noland
Framework: Changed AActor::FindComponentByClass (and AActor::GetComponentByClass by extension) to return nullptr when passed a nullptr class, rather than crashing
Change 3476970 by Ben.Zeigler
Fix bug I introduced in 4.16 where assigning assets to multiple chunks did not work properly
Change 3477536 by Marc.Audy
Don't display default value box on linked orphaned input pins
Change 3477835 by Marc.Audy
Fix pins orphaned by deletion of an entry in a user-defined enum disappearing instead of remaining connected
#jira UE-45754
Change 3478027 by Marc.Audy
Minor performance optimization
#rnx
Change 3478198 by Phillip.Kavan
#jira UE-42431 - Remove an unnecessary ensure() when pasting an event node.
Change summary:
- Modified UEdGraphSchema_K2::CreateSubstituteNode() to no longer ensure() that we have a valid PreExistingNode; it's only used for logging when a substitute node is created in response to a conflict with an existing node.
Change 3478485 by Marc.Audy
Eliminate extraneous error messages about orphaned pins on get/set nodes
#jira UE-45749
#rnx
Change 3478756 by Marc.Audy
Fix fallout from changes to DoesDefaultValueMatchAutogenerated for user defined enums
#jira UE-45721
#rnx
Change 3478926 by Marc.Audy
Non-blueprint type structs can no longer be made/broken
Non-blueprint visible properties in structs will no longer have pins created for them
#jira UE-43122
Change 3478988 by Marc.Audy
DeltaTime for a tick function with a tick interval is now correct after disabling and then reenabling the tick function.
#jira UE-45524
Change 3479818 by Marc.Audy
Allow ctrl-drag off of orphan pins
#jira UE-45803
Change 3480214 by Marc.Audy
Modifications to user defined enumerations are now transacted
#jira UE-43866
Change 3480579 by Marc.Audy
Maintain all pin properties through transactions.
#rn Reference pins that are removed and then restored via undo now correctly have the diamond icon instead of the standard circle.
Change 3481043 by Marc.Audy
Make/Break of structs does not depend on having blueprint exposed properties.
Splitting of a struct pin still requires blueprint exposed properties.
#jira UE-45840
#jira UE-45831
Change 3481271 by Ben.Zeigler
Fix the AssetManager chunking code to use ChunkDependencyInfo instead of a hardcoded check for chunk 0
Clean up ChunkDependencyInfo and make it properly public
Move ShouldSetManager to be WITH_EDITOR
Ported from WEX branch
#RB peter.sauerbrei
Change 3481373 by Dan.Oconnor
Reduce reliance on expensive FindDelegateSignature. 3275922 made warnings about a ambiguous search more likely as it preserved names of members on the REINST_ classes
#jira UE-45704
Change 3481380 by Ben.Zeigler
Change it so Struct and Object AssetRegistrySearchable properties do not show up in content browser, they are not helpful
Change 3482362 by Marc.Audy
Fix properties not exposed to blueprint warnings for input properties on function graphs.
#jira UE-45824
Change 3482406 by Ben.Zeigler
#jira UE-45883 Fix Switch On Gameplay Tag Container node, and add switch nodes to TagCheck map
Change 3482498 by Ben.Zeigler
Attempt to fix hot reload issues with Asset Manager. We need to reset and re-acquire the asset classes when rescanning, as they may be pointing to the replaced class
Change 3482517 by Lukasz.Furman
fixed smart navlink update functions removing important flag
#jira UE-45875
Change 3482538 by Marc.Audy
When comparing float, vector, and rotator values for whether the the default matches the autogenerated do not use the string compare because differences in use of decimal or number of 0s after decimal are then considered not the same float
#jira UE-45846
Change 3482773 by Marc.Audy
Don't show default value or pass by reference for exec pins
#jira UE-45868
Change 3482791 by Ben.Zeigler
#jira UE-45800 Correctly dirty game mode blueprint when changing player controller/etc classes from game mode customization
Fix it so MarkBlueprintAsStructurallyModified calls MarkBlueprintAsModified as several fixes were only in the second function
Change 3483131 by Zak.Middleton
#ue4 - InterpToMovementComponent:
- Fix velocity not zeroed when interpolation stops.
- Various fixes when calculating velocity and time when substepping is enabled.
- Improve accuracy of interpolation when looping and there is time remaining after the loop event is hit. Consume the remainder of the time after the event back in the loop (similar to handling a blocking impact).
#jira UE-45690
Change 3483146 by Phillip.Kavan
#jira UE-38358 - Propagate 'const' function flag from interface Blueprint to implementing Blueprints.
Change summary:
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() to call SkeletalRecompileChildren() on dependent BPs when the target is an interface BP.
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified::FRefreshHelper::SkeletalRecompileChildren() to set child BP status to BS_Dirty after compiling.
- Modified ConformInterfaceByName() (FBlueprintEditorUtils) to use the interface's skeleton class for function iteration as well as to match the Function Entry node's 'const' setting to the interface UFunction's signature.
Change 3483340 by Ben.Zeigler
Fix issue querying asset registry after a hot reload, make sure pending kill objects are never considered to be Assets
Change 3483548 by Michael.Noland
Epic Friday: Playing around with some prototype traps
Change 3483700 by Phillip.Kavan
Fix CIS cook crash introduced by last submit.
#rnx
Change 3485217 by Ben.Zeigler
#jira UE-45519 Fix regression introduced in 4.16 where it would no longer cook all maps when no explicit maps were specified in ini or game callback. Moved the code that detects changes before culture/default map code and hardened it to deal with the case where some engine packages were already in the list before it entered the function
Change 3485367 by Dan.Oconnor
Avoid adding mappings to anim node when creating variables on the skeleton class and using the compilation manager
#jira UE-45756
Change 3485565 by Ben.Zeigler
#jira UE-45948 Fix compilation manager to properly reset variable default values after promoting a pin to local variable
Change 3485566 by Marc.Audy
Fix crashes caused by undo/redo of user defined struct changes
#jira UE-45775
#jira UE-45781
Change 3485805 by Michael.Noland
PR #3459: Fix for world origin shifting and SpringArmComponent location lag (Contributed by michail-nikolaev)
#jira UE-43747
Change 3485807 by Michael.Noland
PR #3485: Added additional textures field to paper 2d tileset class (Contributed by gryphonmyers)
#jira UE-44041
Change 3485811 by Michael.Noland
Framework: Fixed a bug in FStreamLevelAction::MakeSafeLevelName to avoid appending the PIE prefix multiple times (fixes functions like Unload Streaming Level when passed a full package name from an instanced streaming level)
Change 3485829 by Michael.Noland
Framework: Made GetWorldAssetPackageFName BlueprintCallable so instanced levels can be unloaded
Change 3485830 by Michael.Noland
PR #3568: add API declarations to ALevelStreamingVolume methods (Contributed by kayama-shift)
#jira UE-45002
Change 3486039 by Michael.Noland
PR #3495: UE-44014: Refreshing node error fixes (Contributed by projectgheist)
- Empty out the ErrorMsg when a node gets refreshed to prevent the same error messages from compounding
- Added support for split pins in UK2Node_Event::IsFunctionEntryCompatible
- Added a missing check for the delegate pin name on the entry node part of UK2Node_Event::IsFunctionEntryCompatible
#jira UE-44014
Change 3486093 by Michael.Noland
PR #3379: Added GAMEPLAYABILITIES_API to all Ability Tasks. (Contributed by ryanjon2040)
#jira UE-42903
Change 3486139 by Michael.Noland
Blueprints: Added new config options for execution wire thickness when not debugging (DefaultExecutionWireThickness) and data wire thicknesses (DefaultDataWireThickness) to the Graph Editor Settings page
#rn
Change 3486154 by Michael.Noland
Framework: Speculative fix for CIS error about FStructOnScope
#rnx
Change 3486180 by Dan.Oconnor
Better match old logic for determining when to skip data only compile
#jira UE-45830
Change 3487276 by Marc.Audy
Fix crash when using Setter with a locally scoped variable
#rnx
Change 3487278 by Marc.Audy
Ensure that pin change notifications occur on all pin breaks unless it is part of a node being garbage collected
Change 3487658 by Marc.Audy
Ensure that child actor template is created for subclasses
#jira UE-45985
Change 3487699 by Marc.Audy
Move non-templated elements out of FArchiveReplaceObjectRef and put them in FArchiveReplaceObjectRefBase
Change 3487813 by Dan.Oconnor
Asset demonstrating a crash
Change 3488101 by Marc.Audy
Fix crash with spawn/construct actor/object from class nodes when they no longer had any pins.
Correctly orphan pins when a node goes to 0 pins.
Change 3488337 by Marc.Audy
Editable pin base should not manually remove pin and let reconstruct node and rewire pins do their job
#jira UE-46020
Change 3488512 by Dan.Oconnor
ConstructObject nodes and SubInstances nodes use skeleton class when compilation manager can provide it
#jira UE-45830, UE-45965
#rnx
Change 3488631 by Michael.Noland
Framework: Fixed a crash when loading a blueprint with a parent class of ALevelBounds caused by trying to register the class default object with a non-existent level
#jira UE-45630
Change 3488665 by Michael.Noland
Blueprints: Improve the details panel customization for optional pin nodes like Struct Member Get/Set
- The category, raw name, and tooltip of the property are now included as part of the filter text as well
- The property tooltip is now displayed when hovering over the property name
- Code updated to use GET_MEMBER_NAME_CHECKED() where appropriate
Change 3489324 by Marc.Audy
Fix recursion causing stack crash
#jira UE-46038
#rnx
Change 3489326 by Marc.Audy
Fix cooking crash
#jira UE-46031
#rnx
Change 3489687 by mason.seay
Assets for testing orphan pins
Change 3489701 by Marc.Audy
Back out changelist 3487278 and 3489443 and make targetted changes for fixing up orphan pin cases where changing connections doesn't remove the pin.
#jira UE-46051
#jira UE-46052
#rnx
Change 3490352 by Dan.Oconnor
Fix for missing WidgetTree on Skeleton class - just look directly at the WidgetBlueprint
#jira UE-46062
Change 3490814 by Marc.Audy
Make callfunction/macro instances save all pins in orphan state more similar to previous behavior
#rnx
Change 3491022 by Dan.Oconnor
Properly clean up 'Key' property when we fail to create a value property
#jira UE-45279
Change 3491071 by Ben.Zeigler
#jira UE-45981 Fix rotation issues, vector/rotator pins with empty strings were not matching due to uninitialized memory.
Change 3491244 by Michael.Noland
Blueprints: Add compile time message back to the output log (will not auto-open the output log if there were no warnings/errors)
#jira UE-32948
Change 3491276 by Michael.Noland
Blueprints: Fixed some bugs where a newly added item would fail show up in the "My Blueprints" tree if there was a filter active (e.g., when promoting a variable)
- Centralized the logic for clearing the filter so it happens when we try and fail to select the item, rather than ad hoc in various other places
- Made it only clear the filter if necessary, rather than (almost) always clearing it when adding an item
#jira UE-43372
Change 3491562 by Marc.Audy
Put back pin removal in to editable pin base and instead modify the pin destroy implementation to take down child split pins with it
#jira UE-46020
#rnx
Change 3491658 by Marc.Audy
Unify RemoveUserDefinedPin implementations. Use version that has break to avoid size change assert
#rnx
Change 3491946 by Marc.Audy
ReconstructSinglePin no longer destroys OldPin (avoids oprhaned sub pins being destroyed before reparented)
RewireOldPinsToNewPins now destroys OldPins at the end (calling code no longer reponsible)
DestroyImpl now prunes out SubPins that had already been trashed
#rnx
Change 3492040 by Marc.Audy
Discard exec/then pins from a callfunction that has been converted to a pure node
#rnx
Change 3492200 by Zak.Middleton
#ue4 - Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size.
Fixes possible regression from CL 3359561 that removed the Reset(...) entirely.
#jira UE-46012
Change 3492290 by Ben.Zeigler
#jira UE-46108 Fix StringLibrary Mid to never crash, Substring had already been fixed
Change 3492311 by Marc.Audy
Don't clear the pin type if what you're connecting to's pin type is wildcard
#rnx
Change 3492680 by Dan.Oconnor
Handle missing generated class when using compilation manager - tested by forcing compile of BP_ParentClassIsMissingType.uasset
Change 3492826 by Marc.Audy
Don't do pin connection list change notifications from DestroyPins while regenerating on load
#jira UE-46112
#rnx
Change 3492851 by Michael.Noland
Core: Fixed various crashes when using UObject::CallFunctionByNameWithArguments with non-trivial argument types by properly initializing the allocated parameters
Change 3492852 by Michael.Noland
Framework: Fixed a crash if ACharacter::FindComponentByClass was passed a nullptr class
Change 3492934 by Marc.Audy
Fix ensure and crash delete macro containing orphaned pin
#rnx
Change 3493079 by Dan.Oconnor
Fix for crash when opening ThirdPersonAnimBlueprint and ThirdPersonAnimBlueprint_Perf then clicking 'Compile' button in ThirdPersonAnimBlueprint editor. Make sure the convenience members in the derived compilers get set when we relink child classes (which requires making cdos, which requires PropagateValuesToCDO..)
#rnx
Change 3493346 by Phillip.Kavan
#jira UE-40560 - Fix a reported crash when pasting nodes between unrelated Blueprint graphs.
Change summary:
- Modified FEdGraphUtilities::PostProcessPastedNodes() to ensure() on a NULL pin entry; this will allow execution to continue while still alerting us since it is an unexpected result. Also added an 'else' case to then remove the NULL entry so that PostPasteNode() implementations don't all have to guard against NULL pin entries. When the node is reconstructed, the NULL entry will be replaced with the correct pin initialized to its default values.
- Modified UEdGraphPin::ImportTextItem() to add some additional logging to parse error cases when importing pin properties from source T3D text. Hopefully this gives us more information when this is encountered in the future.
Change 3493938 by Michael.Noland
Blueprints: Prevent issues with renaming event dispatchers to contain periods (this may be disallowed in the future, but they no longer become uneditable)
#jira UE-45780
Change 3493945 by Michael.Noland
Blueprints: Fixed GetDelegatePoperty typos
#rnx
Change 3493997 by Michael.Noland
Blueprints: Partially reverting changes from CL# 3319966 to reroute nodes, restoring their alignment but losing the symmetrical grab handle changes
#jira UE-45760
Change 3493998 by Dan.Oconnor
Fix rare crash in RefreshStandAloneDefaultsEditor when the blueprint editor is opened and a blueprint had errors in it
Note: I stumbled across this by running a unit test and then opening a blueprint in the BPE. CrashReporter indicates 3 crashes in the last 3 days
Change 3494025 by Michael.Noland
Engine: Deleted some dead code (DEBUGGING_VIEWPORT_SIZES)
#rnx
Change 3494026 by Michael.Noland
Blueprints: V0 of a BlueprintCallable/BlueprintPure function fuzzer
- Calls exposed methods with default parameters on classes it is able to spawn for now, which catches crashes due to null and /0 but not out of bounds issues or ones on classes it can't spawn due to classwithin, abstract, etc...
- Can be called using Test.ScriptFuzzing, won't be integrated into automated tests until it is more fully fleshed out and all known issues are addressed
#rnx
Change 3496382 by Ben.Zeigler
Fix ensure when launching editor with cook on the side and incremental cooking enabled. It now flushes the background asset gather when calling the sync load all assets if one is in progress
Change 3496688 by Marc.Audy
Avoid crashing in component instance data if (for some reason) the Actor's root component isn't properly set up
#jira UE-46073
Change 3496830 by Michael.Noland
Editor: Change FEditorCategoryUtils methods to take UStruct* instead of UClass*, as they are just reading metadata
#rnx
Change 3496840 by Michael.Noland
Framework: Remove the requirement for a local player in UCheatManager::CheatScript, so it can be be started from the server side (doesn't change the availability of the cheat manager, just allows things like the redundant "cheat cheatscript scriptname" to work)
Change 3497038 by Michael.Noland
Fortnite: Added UFortDeveloperSettings to allow developers to auto-run cheats in PIE (does not occur in -game or outside of WITH_EDITOR builds)
- You can specify a list of cheat commands to run when a pawn is possessed (also needs CL# 3496840 for cheatscripts)
- You can also specify a set of items to grant to your local inventory when it is created
Change 3497204 by Marc.Audy
Fix AbilitySystemComponent not being blueprint readable.
#rnx
Change 3497668 by Mieszko.Zielinski
Fixed a crash in BT editor when dealing with enum-typed Blackboard-keys pointing to enum values that have been deleted #UE4
#jira UE-43659
Change 3497677 by Mieszko.Zielinski
Added a community-suggested working solution to patching up dynamic navmesh after world offset #UE4
Also, fixed a crash related to navmesh rebuilding if generation was configured to lazily gather navigatble geometry
#jira UE-41293
Change 3497678 by Mieszko.Zielinski
Marked AbstractNavData class as transient #UE4
We never want to save it to levels
Change 3497679 by Mieszko.Zielinski
Made NavModifierVolume responsive to editor-time property changes #UE4
#jira UE-32831
Change 3497900 by Dan.Oconnor
Fix bad skel reference when using construct object from class, just limiting scope of 3491946. To reproduce the bug just nativize QA Game, including the TM-Gameplay level
#rnx
Change 3497904 by Dan.Oconnor
Use K2Node_Event::FindEventSignatureFunction in order when directly generating the skeleton generated class to get event params correct
#jira UE-46153
#rnx
Change 3497907 by Dan.Oconnor
Correctly set blueprint visibility flags on params for inherited functions when generating the skeleton class
#rnx
#jira UE-46186
Change 3498218 by mason.seay
Updates to pin testing BP's
Change 3498323 by Mieszko.Zielinski
Made UNavCollision instance assigned to StaticMesh not get re-created from scratch every single time any StaticMesh property changes #UE4
Recreation was resulting in some of the UNavCollision's properties not getting saved and the way we were recreating the nav collision could also interfere with undo buffers
#jira UE-44891
Change 3499007 by Marc.Audy
Allow systems to hook Pre and PostCompile to do custom behaviors
Change 3499013 by Mieszko.Zielinski
Made AbstractNavData class non-transient again #UE4
Implemented AbstractNavData instances' transientness in a different manner.
#jira UE-46194
Change 3499204 by Mieszko.Zielinski
Introduced CrowdManagerBase, an engine-level class that can be extended to implement custom crowd management #Orion
Extracted FRecastQueryFilter into a separate file, which will break some peoples' compilation.
#jira UE-43799
Change 3499321 by mason.seay
Updated bp for struct testing
Change 3499388 by Marc.Audy
Allow the compiler log to store off potential messages from earlier in the compile cycle (early validation), that can be committed later (for example once pruning is completed).
Change 3499390 by Marc.Audy
Generate the orphan pin error messages during EarlyValidation, but cache until the regular validation phase. This ensures all are generated, but only those that aren't pruned will be emitted.
#rnx
Change 3499420 by Michael.Noland
Engine: Introduced a new version of UEngine::GetWorldFromContextObject which takes an enum specifying the behavior on failures and updated all existing uses
The new version intentionally does not have a default value for ErrorMode, callers need to think about which variant of behavior they want:
- ReturnNull: Silently returns nullptr, the calling code is expected to handle this gracefully
- LogAndReturnNull: Raises a runtime error but still returns nullptr, the calling code is expected to handle this gracefully
- Assert: Asserts, the calling code is not expecting to handle a failure gracefully
- Deprecated UEngine::GetWorldFromContextObject(object, boolean) and changed the default behavior for the deprecated instances to do LogAndReturnNull rather than Assert, based on the real-world call pattern
- Introduced GetWorldFromContextObjectChecked(object) as a shorthand for passing in EGetWorldErrorMode::Assert
- Made UObject::GetWorldChecked() actually assert if it would return nullptr (under some cases the old function could silently return nullptr while reporting bSupported = true, so it neither ensured nor checked)
- Fixed a race condition in the 'is implemented' bookkeeping logic in GetWorld()/GetWorldChecked() by confining it to the game thread and added a check() to ImplementsGetWorld() to make it clear that it only works on the game thread
The typical recommended call pattern is to use something like:
if (UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull))
{
... Do something with World
}
Handling the failure case but requesting a log message (with BP call stack printed out) if it failed. This is now also the default behavior for old calls to UEngine::GetWorldFromContextObject(Object) (using the default value of bChecked=true), which is a behavior change but it matches how the function was being used in practice; the vast majority of call sites actually expected it to potentially fail and handled the nullptr case gracefully; very few places used the return value unguarded and wanted it to assert when passed a nullptr.
#jira UE-42458
Change 3499429 by Michael.Noland
Engine: Removed a bogus TODO (the problematic code had already been reworked)
#rnx
Change 3499470 by Michael.Noland
Core: Improved and corrected the comment for ensure()
- It doesn't crash when checking is disabled (and hasn't since UE3, maybe ever?)
- It now only fires once per ensure() by default, added a note about ensureAlways()
#rnx
Change 3499643 by Marc.Audy
Use TGuardValue instead of manually managing it
#rnx
Change 3499874 by Marc.Audy
Display <Unnamed> instead of nothing for Pins with blank display name in the compiler log
Change 3499875 by Marc.Audy
When changing function parameter types, don't orphan a pin on the function entry/exit nodes (but do at the call sites)
#jira UE-46224
Change 3499927 by Dan.Oconnor
UField::Serialize no longer serialize's its next ptr, UStruct::Serialize serializes all Children properties instead. This resolves a hard circular dependency between function libraries that EDL detected. It was resolved in an ad hoc way by the old linker
#jira UE-43458
Change 3499953 by Michael.Noland
Core: Created a variant of ensure that does runtime error logging without stopping in the debugger and some related functions that print a warning or error and may trigger a BP callstack (under the same rules as FFrame::KismetExecutionMessage)
- These are WIP and the API may change in the future, but are being used to fix various crashes found by fuzzing BP exposed functions
Change 3499957 by Michael.Noland
Animation: Added runtime errors for nullptr ControlRigs passed into BP methods
#rnx
Change 3499958 by Michael.Noland
Blueprints: Changed an ensure in UKismetNodeHelperLibrary::GetValidValue to a runtime error
#rnx
Change 3499959 by Michael.Noland
Engine: Downgrade various checks() to ensures() in the runtime asset cache functions exposed to Blueprints
Change 3499960 by Michael.Noland
AI: Changed UBTFunctionLibrary to not check/ensure if passed a null world context object
Change 3499968 by Michael.Noland
Editor: Fixed a couple of crashes in UEditorLevelUtils when passed nullptr arguments, and reformatted the entire file to fix widespread indentation issues
#rnx
Change 3499969 by Michael.Noland
Engine: Changed the verbosity of the failure log message of UEngine::GetWorldFromContextObject(..., LogAndReturnNull) from Warning to Error, so it always prints out a BP callstack
#rnx
Change 3499973 by Michael.Noland
Rendering: Fixed asserts in various UKismetRenderingLibrary methods if passed a nullptr for the WorldContextObject
- Also fixed flipped warnings in the failure cases for EndDrawCanvasToRenderTarget
Change 3499979 by Michael.Noland
Editor: Prevented a crash in UMaterialEditingLibrary::RecompileMaterial when passed a nullptr material
Change 3499984 by Michael.Noland
Physics: Prevented a crash in UTraceQueryTestResults::AssertEqual when passed in nullptr for Expected
Change 3499993 by Michael.Noland
Blueprints: Added validation when renaming variables, functions, components, multicast delegates, etc... to prevent names from containing some unacceptable characters
- This validation only kicks in when trying to rename an item, so bad names in existing content are 'grandfathered in'
- These bad names can cause bugs when working with content that contains these characters (e.g., names that contain a period cannot be found via FindObject<T>)
- Currently only . is banned, but eventually we may expand it to include all of INVALID_OBJECTNAME_CHARACTERS
Change 3500009 by Michael.Noland
Blueprints: Made the fuzzer skip classes declared in UnrealEd for now (some of the exposed methods change global state that can cause other tests to fail as the fuzzer isn't particularly sandboxed ATM)
#rnx
Change 3500011 by Michael.Noland
Android: Fixed a crash in UAndroidPermissionFunctionLibrary::AcquirePermissions when called with an empty array on non-Android platforms
Change 3500012 by Michael.Noland
Editor: Prevent a crash in UEditorTutorial::OpenAsset when passed a nullptr Asset
Change 3500014 by Michael.Noland
Engine: Changed FRuntimeAssetCacheFilesystemBackend::ClearCache(NAME_None) to not try to clear all cache directories (there is a separate no-args method for that)
Change 3500019 by Michael.Noland
Core: Fixed some more issues with CallFunctionByNameWithArguments and initializing / destroying parameters
- It was skipping the return value and incorrectly relying on the FirstPropertyToInit list which isn't set for by ref arguments
Change 3500020 by Michael.Noland
Automation: Prevent UFunctionalTestingManager::RunAllFunctionalTests and UFunctionalTestingManager* UFunctionalTestingManager::GetManager from crashing when a manager cannot be created (because we can't route to a world)
Change 3501062 by Marc.Audy
MakeArray AddInputPin is often used as part of node expansion, so need to move the transaction out of the function
Fix inability to undo/redo pin additions to sequence node
Add a K2Node_AddPinInterface to generalize the interface that K2Nodes implement to interact with SGraphNodeK2Sequence so it can be more generally used
#jira UE-46164
#jira UE-46270
Change 3501330 by Michael.Noland
AI: Fix an error on shutdown when the CDO of UAIPerceptionComponent tries to clean up (as it was never registered in the first place)
#jira UE-46271
Change 3501356 by Marc.Audy
Fix crash when multi-editing actor blueprints
#jira UE-46248
Change 3501408 by Michael.Noland
Core: Improve 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)
Change 3501457 by Phillip.Kavan
#jira UE-46054 - Fix crash when launching a packaged build that includes a nativized Blueprint instance with a ChildActorComponent instanced via an AddComponent node.
Change summary:
- Removed UK2Node_AddComponent::PostDuplicate(). This eliminates the creation of redundant component templates that were being unnecessarily created during the Blueprint duplication that precedes the nativization pass.
- Modified SMyBlueprint::OnDuplicateAction() to call MakeNewComponentTemplate() in response to a graph duplication action within the same Blueprint context (replaces previous UK2Node_AddComponent::PostDuplicate() impl).
- Modified FEmitDefaultValueHelper::HandleSpecialTypes() to force AddComponent-based CAC-owned template objects in the emitted codegen to use the UDynamicClass as the Outer when instancing. This matches what we already do for SCS-based CAC-owned template objects - that logic was added in CL# 3270456, and this matches up with FBlueprintNativeCodeGenModule::FindReplacedNameAndOuter(), where we specifically handle CAC-owned template objects.
Change 3502741 by Phillip.Kavan
#jira UE-45782 - Fix undo for index pin type changes.
Change summary:
- Modified SGraphPinIndex::OnTypeChanged() to call Modify() on the pin that was changed.
Change 3502939 by Michael.Noland
Back out changelist 3499927
Change 3503087 by Marc.Audy
Re-fixed ocean content as editor had also changed so had to take theirs and redo
#rnx
Change 3503266 by Ben.Zeigler
#jira UE-46335 Fix regression added in 4.16 where AssetRegistry GetAncesorClassNames/GetDerivedClassNames were not working properly in cooked builds for classes not in memory
Change 3503325 by mason.seay
updated Anim BP to prep for pin testing
Change 3503445 by Marc.Audy
Fix crash caused by OldPins being destroyed before rewiring
#rnx
Change 3505024 by Marc.Audy
Fix NodeEffectsPanel blueprint as it was using pins that no longer existed
#rnx
Change 3505254 by Marc.Audy
Don't include orphan pins when gather source property names
If a property doesn't exist for a source property name just skip the property rather than crashing
#jira UE-46345
#rnx
Change 3506125 by Ben.Zeigler
#jira UE-46311 Fix issues when blueprints are reloaded in place, it needs to remove them from root properly and sanitize the old class. It's still not clear why they are being reloaded in place
Change 3506334 by Dan.Oconnor
Move UAnimGraphNode_Base::PreloadRequiredAssets up to K2Node, make sure nodes get a chance to preload data before compilation manager compiles newly loaded blueprints
#jira UE-46411
Change 3506439 by Dan.Oconnor
Return to pre 3488512 behavior for construct object nodes. This means that we can still get warnings on load when users compile after saving a blueprint, but the current behavior loses default values because it's lookng at the skeleton cdo
#jira UE-46308
Change 3506468 by Dan.Oconnor
Return to pre 3488512 behavior, as it causes bad default values
#jira UE-46414
#rnx
Change 3506733 by Marc.Audy
Use the most up to date class to determine whether a property still exists when adding pins during reconstruction
#jira UE-45965
#author Dan.OConnor
#rnx
Change 3507531 by Ben.Zeigler
#jira UE-46449 Better fix to flush the asset registry queue when the editor requests a synchronous scan at startup. Sometimes it can take a few frames because of file handle delays
Change 3507924 by mason.seay
Sanity save of TM-Gameplay and sublevels to maybe resolve level streaming issues
Change 3507962 by Marc.Audy
Remake changes from CL# 3150796 wiped out by WEX-Staging merge to Main in CL# 3479958
#rnx
Change 3509131 by Dan.Oconnor
Compilation manager compile on load flow never called FindExportsInMemoryFirst, which is critical to prevent reloading of UBlueprintGeneratedClasses when Rename clears the export table
#jira UE-46311
Change 3509345 by Marc.Audy
CVar to disable orphan pins if necessary
#rnx
Change 3509959 by Marc.Audy
Protect against crashing due to large values in Timespan From functions
#jira UE-43840
Change 3510040 by Marc.Audy
Remove all the old unneeded ShooterGame test maps
#rnx
[CL 3510073 by Marc Audy in Main branch]
2017-06-26 15:07:18 -04:00
}
2014-08-08 15:35:56 -04:00
}
//------------------------------------------------------------------------------
TStatId FBlueprintActionDatabase : : GetStatId ( ) const
{
RETURN_QUICK_DECLARE_CYCLE_STAT ( FBlueprintActionDatabase , STATGROUP_Tickables ) ;
2014-07-09 12:17:42 -04:00
}
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3510040)
#lockdown Nick.Penwarden
=====================================
MAJOR FEATURES + CHANGES
=====================================
Change 3459524 by Marc.Audy
Get/Set of properties that were previously BPRW/BPRO should error when used
#jira UE-20993
Change 3460004 by Phillip.Kavan
#jira UE-45171 - Fix C++ compilation failures during packaging caused by nativizing a Blueprint that overrides a native function with a 'TSubclassOf' parameter or return value.
Change summary:
- Modified FKismetCompilerContext::CreateParametersForFunction() to pass the 'CPF_UObjectWrapper' flag through to new function parameter properties during Blueprint compilation.
Change 3461210 by Phillip.Kavan
#jira UE-44505 - Fix occasional Blueprint editor crashes that could occur while rebuilding the context menu from the action registry.
Change summary:
- Modified FBlueprintActionDatabase::FActionRegistry to use an FObjectKey as the key type. This allows us to test entries for UObject validity before rebuilding context menu items based on the action database.
- Changed FBlueprintActionInfo::CachedOwnerClass to be a TWeakObjectPtr rather than a raw UClass* since it's based on the ActionOwner, which could potentially become invalid after the OwnerClass has been cached.
- Modified FBlueprintActionDatabase::RefreshAssetActions() to exclude World assets if the WorldType is not EWorldType::Editor. This eliminates an issue with unreferenced "inactive" GC'd world objects being left in the BP action registry after cooking, at which point the keys could become invalid.
- Added FBlueprintActionDatabase::DeferredRemoveEntry() to allow for scheduling removal of entries from outside of the database if they are known to be invalid.
- Modified FBlueprintActionDatabase::Tick() to handle deferred entry removals.
- Modified FBlueprintActionMenuBuilder::RebuildActionList() to both test actions for validity before building menu items and schedule removal of invalid actions on the next tick.
Notes:
- Alternatively we could just include UObject keys in the database's AddReferencedObject impl, but that would then prevent objects from ever being GC'd if they are not explicitly removed. For most entries the action database takes the approach of explicitly removing entries via delegate when the UObject is destroyed, so I chose to use a TWeakObjectPtr instead so that any entries that may not be getting explicitly removed via delegate will now simply become invalidated if the UObject key is GC'd due to not being referenced. I also set it up to clean and remove any entries (along with any associated node spawners) that are found to be invalid the next time we open the BP editor.
Change 3461373 by Lukasz.Furman
fixed async navmesh rebuilds not kicking in for requests from navdata.bForceRebuildOnLoad
#jira UE-44231
Change 3461409 by Lukasz.Furman
fixed reenabling automatic navmesh generation in Editor Preferences
#ue4
Change 3461550 by Ben.Zeigler
#jira UE-45328 Fix local variable support for Redirectors and other save-time validation. We need to run the local variables to UProperty and back at save time
Add new flag PPF_SerializedAsImportText which is used for BP pins/default values and indicates that something has been serialized as import text and so needs to handle string asset redirectors
Change 3462625 by Zak.Middleton
#ue4 - Fix InterpToMovementComponent not setting velocity on the object it moves. Fix movement rate when substepping enabled (other related fixes to come).
github PR #3620
Change 3462796 by Dan.Oconnor
Fix for spamming BroadcastBlueprintReinstanced and for creating CDO at wrong time when compiling FrontEnd.uasset in OrionGame
#jira UE-45434
Change 3462995 by Ben.Zeigler
#jira UE-16941 Fix it so Load Asset node works with a literal value as well as a connected pin
Change 3463099 by Ben.Zeigler
#jira UE-45471 Allow abstract base classes for primary assets
Change 3464809 by Marc.Audy
Expose FVector2D / FVector2D to blueprints
#jira UE-45427
Change 3467254 by Mieszko.Zielinski
Added an AI helper BP function that supplies caller with a copy of navigation path given controller is currently following #UE4
Change 3467644 by Dan.Oconnor
Fix for cook issues in ocean when using compilation manager, one issue caused by bad dependencies list, one issue caused by lack of subobject mapping in archetype reinstancing.
#jira UE-45443, UE-45444
Change 3468176 by Dan.Oconnor
Fix dependent blueprints being marked dirty when a blueprint is compiled
Change 3468353 by Michael.Noland
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
Change 3470532 by Dan.Oconnor
Re-enable compilation manager
Change 3470572 by Dan.Oconnor
Fix for pin paramters resetting when an archetype was reinstanced
#jira UE-45619
#rnx
Change 3471949 by Mason.Seay
Adding Primary Assets for testing
Change 3472074 by Ben.Zeigler
#jira UE-45140 Convert iterative cooking to use the Asset Registry as it's only mode, remove old hash and timestamp versions. This allows deleting the entire PackageDependencyInfo module
Change the asset registry iteration to not compute a hash at all, and instead store the script package guids in it's cache.
Expose bIgnoreIniSettingsOutOfDateForIteration and bIgnoreScriptPackagesOutOfDateForIteration in cooker settings, affects rather to listen to ini/script changes when doing iterative cooking
Change 3472079 by Ben.Zeigler
With new incremental cook options, change Fortnite to never care about ini settings, but do care about code changes. This can be changed but from previous discussions we wanted to be more safe than fast here
Change 3473429 by Lukasz.Furman
changed path following update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473476 by Lukasz.Furman
changed crowd simulation path update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473663 by Ben.Zeigler
Fix it so base k2node registers framework version, this is needed for the assetptr fixup I previously added
Change 3473679 by Mason.Seay
Slight cleanup of test map and added ability to teleport across level for easy navigation
Change 3473712 by Marc.Audy
Do default value validation against the actual value of the default entry of an enum rather than the serialized empty autogenerated default value
Change 3474055 by Marc.Audy
When nodes are reconstructed any pins that were previously linked or set to non-default values that have been removed will no longer simply vanish, but instead will remain in an Orphaned state until dealt with.
#jira UE-41828
Change 3474119 by mason.seay
Tweaked Force Feedback test
Change 3474156 by Marc.Audy
Actually enable orphan pin retention
Change 3474382 by Ben.Zeigler
Class.h Header and comment cleanup. Started this because IsChildOf did not have a comment and it's usage is a bit confusing
Change 3474386 by Ben.Zeigler
Close popup window when adding asset class to audit window
Change 3474491 by Ben.Zeigler
Remove ability for Worlds to not be saved as assets, this has been the default since 2014.
Change 3475363 by Marc.Audy
Alt-click now works with orphaned pins
#jira UE-45699
Change 3475523 by Marc.Audy
Fixup Fortnite and Paragon content for orphaned pin errors and warnings
Change 3475623 by Phillip.Kavan
#jira UE-45477 - Fix an EDL assertion on load in a nativized build with one or more Actor subobjects instanced via the EditInlineNew UI in the BP class defaults property editor.
Change summary:
- Modified FEmitDefaultValueHelper::OuterGenerate() to emit code to construct/initialize instanced subobject values that do not have the RF_DefaultSubObject flag set, and also to recursively handle nested subobjects for those values.
- Modified FEmitDefaultValueHelper::HandleInstancedSubobject() to alternatively emit a 'NewObject' assignment statement rather than a 'CreateDefaultSubobject' statement if only RF_ArchetypeObject is set on the source object value.
Change 3476008 by Dan.Oconnor
Fix for failing to preload our super class's subobjects. Effectively moving UBlueprint::ForceLoad calls earlier in loading process. This only results in data resetting to your parent's parent's default value from your parent's default value.
#jira UE-18765
Change 3476115 by Dan.Oconnor
Fix missing category information for inherited functions when using compilation manager
#jira UE-45660
#rnx
Change 3476577 by Lukasz.Furman
added early outs from navmesh layer generation when there's no walkable cells or contours to avoid allocating 0 bytes by next generation steps (behavior differs between platforms)
#ue4
Change 3476587 by Phillip.Kavan
#jira UE-45517 - Fix a regression in which dragging UMG widgets around in the designer view results in redundantly-compounded BP class properties and context menu actions.
Change summary:
- Modified SDesignerView::ClearDropPreviews() to move the widget that was removed from the tree into the transient package. This ensures that FWidgetBlueprintCompiler::CreateClassVariablesFromBlueprint() won't pick them up.
- Modified SDesignerView::ProcessDropAndAddWidget() to also consider any widgets not added to the 'DropPreviews' array as being transient (i.e. also move them into the transient package since they were not added to the tree).
Notes:
- The regression was introduced by the changes in CL# 3410168, and was merged to Main at CL# 3431398.
#rnx
Change 3476723 by Dan.Oconnor
Match old behavior wrt updating implemented interfaces in blueprints - this logic from FKismetEditorUtilities::CompileBlueprint was missing in compilation manager
#jira UE-45468
#rnx
Change 3476948 by Michael.Noland
Framework: Changed AActor::FindComponentByClass (and AActor::GetComponentByClass by extension) to return nullptr when passed a nullptr class, rather than crashing
Change 3476970 by Ben.Zeigler
Fix bug I introduced in 4.16 where assigning assets to multiple chunks did not work properly
Change 3477536 by Marc.Audy
Don't display default value box on linked orphaned input pins
Change 3477835 by Marc.Audy
Fix pins orphaned by deletion of an entry in a user-defined enum disappearing instead of remaining connected
#jira UE-45754
Change 3478027 by Marc.Audy
Minor performance optimization
#rnx
Change 3478198 by Phillip.Kavan
#jira UE-42431 - Remove an unnecessary ensure() when pasting an event node.
Change summary:
- Modified UEdGraphSchema_K2::CreateSubstituteNode() to no longer ensure() that we have a valid PreExistingNode; it's only used for logging when a substitute node is created in response to a conflict with an existing node.
Change 3478485 by Marc.Audy
Eliminate extraneous error messages about orphaned pins on get/set nodes
#jira UE-45749
#rnx
Change 3478756 by Marc.Audy
Fix fallout from changes to DoesDefaultValueMatchAutogenerated for user defined enums
#jira UE-45721
#rnx
Change 3478926 by Marc.Audy
Non-blueprint type structs can no longer be made/broken
Non-blueprint visible properties in structs will no longer have pins created for them
#jira UE-43122
Change 3478988 by Marc.Audy
DeltaTime for a tick function with a tick interval is now correct after disabling and then reenabling the tick function.
#jira UE-45524
Change 3479818 by Marc.Audy
Allow ctrl-drag off of orphan pins
#jira UE-45803
Change 3480214 by Marc.Audy
Modifications to user defined enumerations are now transacted
#jira UE-43866
Change 3480579 by Marc.Audy
Maintain all pin properties through transactions.
#rn Reference pins that are removed and then restored via undo now correctly have the diamond icon instead of the standard circle.
Change 3481043 by Marc.Audy
Make/Break of structs does not depend on having blueprint exposed properties.
Splitting of a struct pin still requires blueprint exposed properties.
#jira UE-45840
#jira UE-45831
Change 3481271 by Ben.Zeigler
Fix the AssetManager chunking code to use ChunkDependencyInfo instead of a hardcoded check for chunk 0
Clean up ChunkDependencyInfo and make it properly public
Move ShouldSetManager to be WITH_EDITOR
Ported from WEX branch
#RB peter.sauerbrei
Change 3481373 by Dan.Oconnor
Reduce reliance on expensive FindDelegateSignature. 3275922 made warnings about a ambiguous search more likely as it preserved names of members on the REINST_ classes
#jira UE-45704
Change 3481380 by Ben.Zeigler
Change it so Struct and Object AssetRegistrySearchable properties do not show up in content browser, they are not helpful
Change 3482362 by Marc.Audy
Fix properties not exposed to blueprint warnings for input properties on function graphs.
#jira UE-45824
Change 3482406 by Ben.Zeigler
#jira UE-45883 Fix Switch On Gameplay Tag Container node, and add switch nodes to TagCheck map
Change 3482498 by Ben.Zeigler
Attempt to fix hot reload issues with Asset Manager. We need to reset and re-acquire the asset classes when rescanning, as they may be pointing to the replaced class
Change 3482517 by Lukasz.Furman
fixed smart navlink update functions removing important flag
#jira UE-45875
Change 3482538 by Marc.Audy
When comparing float, vector, and rotator values for whether the the default matches the autogenerated do not use the string compare because differences in use of decimal or number of 0s after decimal are then considered not the same float
#jira UE-45846
Change 3482773 by Marc.Audy
Don't show default value or pass by reference for exec pins
#jira UE-45868
Change 3482791 by Ben.Zeigler
#jira UE-45800 Correctly dirty game mode blueprint when changing player controller/etc classes from game mode customization
Fix it so MarkBlueprintAsStructurallyModified calls MarkBlueprintAsModified as several fixes were only in the second function
Change 3483131 by Zak.Middleton
#ue4 - InterpToMovementComponent:
- Fix velocity not zeroed when interpolation stops.
- Various fixes when calculating velocity and time when substepping is enabled.
- Improve accuracy of interpolation when looping and there is time remaining after the loop event is hit. Consume the remainder of the time after the event back in the loop (similar to handling a blocking impact).
#jira UE-45690
Change 3483146 by Phillip.Kavan
#jira UE-38358 - Propagate 'const' function flag from interface Blueprint to implementing Blueprints.
Change summary:
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() to call SkeletalRecompileChildren() on dependent BPs when the target is an interface BP.
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified::FRefreshHelper::SkeletalRecompileChildren() to set child BP status to BS_Dirty after compiling.
- Modified ConformInterfaceByName() (FBlueprintEditorUtils) to use the interface's skeleton class for function iteration as well as to match the Function Entry node's 'const' setting to the interface UFunction's signature.
Change 3483340 by Ben.Zeigler
Fix issue querying asset registry after a hot reload, make sure pending kill objects are never considered to be Assets
Change 3483548 by Michael.Noland
Epic Friday: Playing around with some prototype traps
Change 3483700 by Phillip.Kavan
Fix CIS cook crash introduced by last submit.
#rnx
Change 3485217 by Ben.Zeigler
#jira UE-45519 Fix regression introduced in 4.16 where it would no longer cook all maps when no explicit maps were specified in ini or game callback. Moved the code that detects changes before culture/default map code and hardened it to deal with the case where some engine packages were already in the list before it entered the function
Change 3485367 by Dan.Oconnor
Avoid adding mappings to anim node when creating variables on the skeleton class and using the compilation manager
#jira UE-45756
Change 3485565 by Ben.Zeigler
#jira UE-45948 Fix compilation manager to properly reset variable default values after promoting a pin to local variable
Change 3485566 by Marc.Audy
Fix crashes caused by undo/redo of user defined struct changes
#jira UE-45775
#jira UE-45781
Change 3485805 by Michael.Noland
PR #3459: Fix for world origin shifting and SpringArmComponent location lag (Contributed by michail-nikolaev)
#jira UE-43747
Change 3485807 by Michael.Noland
PR #3485: Added additional textures field to paper 2d tileset class (Contributed by gryphonmyers)
#jira UE-44041
Change 3485811 by Michael.Noland
Framework: Fixed a bug in FStreamLevelAction::MakeSafeLevelName to avoid appending the PIE prefix multiple times (fixes functions like Unload Streaming Level when passed a full package name from an instanced streaming level)
Change 3485829 by Michael.Noland
Framework: Made GetWorldAssetPackageFName BlueprintCallable so instanced levels can be unloaded
Change 3485830 by Michael.Noland
PR #3568: add API declarations to ALevelStreamingVolume methods (Contributed by kayama-shift)
#jira UE-45002
Change 3486039 by Michael.Noland
PR #3495: UE-44014: Refreshing node error fixes (Contributed by projectgheist)
- Empty out the ErrorMsg when a node gets refreshed to prevent the same error messages from compounding
- Added support for split pins in UK2Node_Event::IsFunctionEntryCompatible
- Added a missing check for the delegate pin name on the entry node part of UK2Node_Event::IsFunctionEntryCompatible
#jira UE-44014
Change 3486093 by Michael.Noland
PR #3379: Added GAMEPLAYABILITIES_API to all Ability Tasks. (Contributed by ryanjon2040)
#jira UE-42903
Change 3486139 by Michael.Noland
Blueprints: Added new config options for execution wire thickness when not debugging (DefaultExecutionWireThickness) and data wire thicknesses (DefaultDataWireThickness) to the Graph Editor Settings page
#rn
Change 3486154 by Michael.Noland
Framework: Speculative fix for CIS error about FStructOnScope
#rnx
Change 3486180 by Dan.Oconnor
Better match old logic for determining when to skip data only compile
#jira UE-45830
Change 3487276 by Marc.Audy
Fix crash when using Setter with a locally scoped variable
#rnx
Change 3487278 by Marc.Audy
Ensure that pin change notifications occur on all pin breaks unless it is part of a node being garbage collected
Change 3487658 by Marc.Audy
Ensure that child actor template is created for subclasses
#jira UE-45985
Change 3487699 by Marc.Audy
Move non-templated elements out of FArchiveReplaceObjectRef and put them in FArchiveReplaceObjectRefBase
Change 3487813 by Dan.Oconnor
Asset demonstrating a crash
Change 3488101 by Marc.Audy
Fix crash with spawn/construct actor/object from class nodes when they no longer had any pins.
Correctly orphan pins when a node goes to 0 pins.
Change 3488337 by Marc.Audy
Editable pin base should not manually remove pin and let reconstruct node and rewire pins do their job
#jira UE-46020
Change 3488512 by Dan.Oconnor
ConstructObject nodes and SubInstances nodes use skeleton class when compilation manager can provide it
#jira UE-45830, UE-45965
#rnx
Change 3488631 by Michael.Noland
Framework: Fixed a crash when loading a blueprint with a parent class of ALevelBounds caused by trying to register the class default object with a non-existent level
#jira UE-45630
Change 3488665 by Michael.Noland
Blueprints: Improve the details panel customization for optional pin nodes like Struct Member Get/Set
- The category, raw name, and tooltip of the property are now included as part of the filter text as well
- The property tooltip is now displayed when hovering over the property name
- Code updated to use GET_MEMBER_NAME_CHECKED() where appropriate
Change 3489324 by Marc.Audy
Fix recursion causing stack crash
#jira UE-46038
#rnx
Change 3489326 by Marc.Audy
Fix cooking crash
#jira UE-46031
#rnx
Change 3489687 by mason.seay
Assets for testing orphan pins
Change 3489701 by Marc.Audy
Back out changelist 3487278 and 3489443 and make targetted changes for fixing up orphan pin cases where changing connections doesn't remove the pin.
#jira UE-46051
#jira UE-46052
#rnx
Change 3490352 by Dan.Oconnor
Fix for missing WidgetTree on Skeleton class - just look directly at the WidgetBlueprint
#jira UE-46062
Change 3490814 by Marc.Audy
Make callfunction/macro instances save all pins in orphan state more similar to previous behavior
#rnx
Change 3491022 by Dan.Oconnor
Properly clean up 'Key' property when we fail to create a value property
#jira UE-45279
Change 3491071 by Ben.Zeigler
#jira UE-45981 Fix rotation issues, vector/rotator pins with empty strings were not matching due to uninitialized memory.
Change 3491244 by Michael.Noland
Blueprints: Add compile time message back to the output log (will not auto-open the output log if there were no warnings/errors)
#jira UE-32948
Change 3491276 by Michael.Noland
Blueprints: Fixed some bugs where a newly added item would fail show up in the "My Blueprints" tree if there was a filter active (e.g., when promoting a variable)
- Centralized the logic for clearing the filter so it happens when we try and fail to select the item, rather than ad hoc in various other places
- Made it only clear the filter if necessary, rather than (almost) always clearing it when adding an item
#jira UE-43372
Change 3491562 by Marc.Audy
Put back pin removal in to editable pin base and instead modify the pin destroy implementation to take down child split pins with it
#jira UE-46020
#rnx
Change 3491658 by Marc.Audy
Unify RemoveUserDefinedPin implementations. Use version that has break to avoid size change assert
#rnx
Change 3491946 by Marc.Audy
ReconstructSinglePin no longer destroys OldPin (avoids oprhaned sub pins being destroyed before reparented)
RewireOldPinsToNewPins now destroys OldPins at the end (calling code no longer reponsible)
DestroyImpl now prunes out SubPins that had already been trashed
#rnx
Change 3492040 by Marc.Audy
Discard exec/then pins from a callfunction that has been converted to a pure node
#rnx
Change 3492200 by Zak.Middleton
#ue4 - Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size.
Fixes possible regression from CL 3359561 that removed the Reset(...) entirely.
#jira UE-46012
Change 3492290 by Ben.Zeigler
#jira UE-46108 Fix StringLibrary Mid to never crash, Substring had already been fixed
Change 3492311 by Marc.Audy
Don't clear the pin type if what you're connecting to's pin type is wildcard
#rnx
Change 3492680 by Dan.Oconnor
Handle missing generated class when using compilation manager - tested by forcing compile of BP_ParentClassIsMissingType.uasset
Change 3492826 by Marc.Audy
Don't do pin connection list change notifications from DestroyPins while regenerating on load
#jira UE-46112
#rnx
Change 3492851 by Michael.Noland
Core: Fixed various crashes when using UObject::CallFunctionByNameWithArguments with non-trivial argument types by properly initializing the allocated parameters
Change 3492852 by Michael.Noland
Framework: Fixed a crash if ACharacter::FindComponentByClass was passed a nullptr class
Change 3492934 by Marc.Audy
Fix ensure and crash delete macro containing orphaned pin
#rnx
Change 3493079 by Dan.Oconnor
Fix for crash when opening ThirdPersonAnimBlueprint and ThirdPersonAnimBlueprint_Perf then clicking 'Compile' button in ThirdPersonAnimBlueprint editor. Make sure the convenience members in the derived compilers get set when we relink child classes (which requires making cdos, which requires PropagateValuesToCDO..)
#rnx
Change 3493346 by Phillip.Kavan
#jira UE-40560 - Fix a reported crash when pasting nodes between unrelated Blueprint graphs.
Change summary:
- Modified FEdGraphUtilities::PostProcessPastedNodes() to ensure() on a NULL pin entry; this will allow execution to continue while still alerting us since it is an unexpected result. Also added an 'else' case to then remove the NULL entry so that PostPasteNode() implementations don't all have to guard against NULL pin entries. When the node is reconstructed, the NULL entry will be replaced with the correct pin initialized to its default values.
- Modified UEdGraphPin::ImportTextItem() to add some additional logging to parse error cases when importing pin properties from source T3D text. Hopefully this gives us more information when this is encountered in the future.
Change 3493938 by Michael.Noland
Blueprints: Prevent issues with renaming event dispatchers to contain periods (this may be disallowed in the future, but they no longer become uneditable)
#jira UE-45780
Change 3493945 by Michael.Noland
Blueprints: Fixed GetDelegatePoperty typos
#rnx
Change 3493997 by Michael.Noland
Blueprints: Partially reverting changes from CL# 3319966 to reroute nodes, restoring their alignment but losing the symmetrical grab handle changes
#jira UE-45760
Change 3493998 by Dan.Oconnor
Fix rare crash in RefreshStandAloneDefaultsEditor when the blueprint editor is opened and a blueprint had errors in it
Note: I stumbled across this by running a unit test and then opening a blueprint in the BPE. CrashReporter indicates 3 crashes in the last 3 days
Change 3494025 by Michael.Noland
Engine: Deleted some dead code (DEBUGGING_VIEWPORT_SIZES)
#rnx
Change 3494026 by Michael.Noland
Blueprints: V0 of a BlueprintCallable/BlueprintPure function fuzzer
- Calls exposed methods with default parameters on classes it is able to spawn for now, which catches crashes due to null and /0 but not out of bounds issues or ones on classes it can't spawn due to classwithin, abstract, etc...
- Can be called using Test.ScriptFuzzing, won't be integrated into automated tests until it is more fully fleshed out and all known issues are addressed
#rnx
Change 3496382 by Ben.Zeigler
Fix ensure when launching editor with cook on the side and incremental cooking enabled. It now flushes the background asset gather when calling the sync load all assets if one is in progress
Change 3496688 by Marc.Audy
Avoid crashing in component instance data if (for some reason) the Actor's root component isn't properly set up
#jira UE-46073
Change 3496830 by Michael.Noland
Editor: Change FEditorCategoryUtils methods to take UStruct* instead of UClass*, as they are just reading metadata
#rnx
Change 3496840 by Michael.Noland
Framework: Remove the requirement for a local player in UCheatManager::CheatScript, so it can be be started from the server side (doesn't change the availability of the cheat manager, just allows things like the redundant "cheat cheatscript scriptname" to work)
Change 3497038 by Michael.Noland
Fortnite: Added UFortDeveloperSettings to allow developers to auto-run cheats in PIE (does not occur in -game or outside of WITH_EDITOR builds)
- You can specify a list of cheat commands to run when a pawn is possessed (also needs CL# 3496840 for cheatscripts)
- You can also specify a set of items to grant to your local inventory when it is created
Change 3497204 by Marc.Audy
Fix AbilitySystemComponent not being blueprint readable.
#rnx
Change 3497668 by Mieszko.Zielinski
Fixed a crash in BT editor when dealing with enum-typed Blackboard-keys pointing to enum values that have been deleted #UE4
#jira UE-43659
Change 3497677 by Mieszko.Zielinski
Added a community-suggested working solution to patching up dynamic navmesh after world offset #UE4
Also, fixed a crash related to navmesh rebuilding if generation was configured to lazily gather navigatble geometry
#jira UE-41293
Change 3497678 by Mieszko.Zielinski
Marked AbstractNavData class as transient #UE4
We never want to save it to levels
Change 3497679 by Mieszko.Zielinski
Made NavModifierVolume responsive to editor-time property changes #UE4
#jira UE-32831
Change 3497900 by Dan.Oconnor
Fix bad skel reference when using construct object from class, just limiting scope of 3491946. To reproduce the bug just nativize QA Game, including the TM-Gameplay level
#rnx
Change 3497904 by Dan.Oconnor
Use K2Node_Event::FindEventSignatureFunction in order when directly generating the skeleton generated class to get event params correct
#jira UE-46153
#rnx
Change 3497907 by Dan.Oconnor
Correctly set blueprint visibility flags on params for inherited functions when generating the skeleton class
#rnx
#jira UE-46186
Change 3498218 by mason.seay
Updates to pin testing BP's
Change 3498323 by Mieszko.Zielinski
Made UNavCollision instance assigned to StaticMesh not get re-created from scratch every single time any StaticMesh property changes #UE4
Recreation was resulting in some of the UNavCollision's properties not getting saved and the way we were recreating the nav collision could also interfere with undo buffers
#jira UE-44891
Change 3499007 by Marc.Audy
Allow systems to hook Pre and PostCompile to do custom behaviors
Change 3499013 by Mieszko.Zielinski
Made AbstractNavData class non-transient again #UE4
Implemented AbstractNavData instances' transientness in a different manner.
#jira UE-46194
Change 3499204 by Mieszko.Zielinski
Introduced CrowdManagerBase, an engine-level class that can be extended to implement custom crowd management #Orion
Extracted FRecastQueryFilter into a separate file, which will break some peoples' compilation.
#jira UE-43799
Change 3499321 by mason.seay
Updated bp for struct testing
Change 3499388 by Marc.Audy
Allow the compiler log to store off potential messages from earlier in the compile cycle (early validation), that can be committed later (for example once pruning is completed).
Change 3499390 by Marc.Audy
Generate the orphan pin error messages during EarlyValidation, but cache until the regular validation phase. This ensures all are generated, but only those that aren't pruned will be emitted.
#rnx
Change 3499420 by Michael.Noland
Engine: Introduced a new version of UEngine::GetWorldFromContextObject which takes an enum specifying the behavior on failures and updated all existing uses
The new version intentionally does not have a default value for ErrorMode, callers need to think about which variant of behavior they want:
- ReturnNull: Silently returns nullptr, the calling code is expected to handle this gracefully
- LogAndReturnNull: Raises a runtime error but still returns nullptr, the calling code is expected to handle this gracefully
- Assert: Asserts, the calling code is not expecting to handle a failure gracefully
- Deprecated UEngine::GetWorldFromContextObject(object, boolean) and changed the default behavior for the deprecated instances to do LogAndReturnNull rather than Assert, based on the real-world call pattern
- Introduced GetWorldFromContextObjectChecked(object) as a shorthand for passing in EGetWorldErrorMode::Assert
- Made UObject::GetWorldChecked() actually assert if it would return nullptr (under some cases the old function could silently return nullptr while reporting bSupported = true, so it neither ensured nor checked)
- Fixed a race condition in the 'is implemented' bookkeeping logic in GetWorld()/GetWorldChecked() by confining it to the game thread and added a check() to ImplementsGetWorld() to make it clear that it only works on the game thread
The typical recommended call pattern is to use something like:
if (UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull))
{
... Do something with World
}
Handling the failure case but requesting a log message (with BP call stack printed out) if it failed. This is now also the default behavior for old calls to UEngine::GetWorldFromContextObject(Object) (using the default value of bChecked=true), which is a behavior change but it matches how the function was being used in practice; the vast majority of call sites actually expected it to potentially fail and handled the nullptr case gracefully; very few places used the return value unguarded and wanted it to assert when passed a nullptr.
#jira UE-42458
Change 3499429 by Michael.Noland
Engine: Removed a bogus TODO (the problematic code had already been reworked)
#rnx
Change 3499470 by Michael.Noland
Core: Improved and corrected the comment for ensure()
- It doesn't crash when checking is disabled (and hasn't since UE3, maybe ever?)
- It now only fires once per ensure() by default, added a note about ensureAlways()
#rnx
Change 3499643 by Marc.Audy
Use TGuardValue instead of manually managing it
#rnx
Change 3499874 by Marc.Audy
Display <Unnamed> instead of nothing for Pins with blank display name in the compiler log
Change 3499875 by Marc.Audy
When changing function parameter types, don't orphan a pin on the function entry/exit nodes (but do at the call sites)
#jira UE-46224
Change 3499927 by Dan.Oconnor
UField::Serialize no longer serialize's its next ptr, UStruct::Serialize serializes all Children properties instead. This resolves a hard circular dependency between function libraries that EDL detected. It was resolved in an ad hoc way by the old linker
#jira UE-43458
Change 3499953 by Michael.Noland
Core: Created a variant of ensure that does runtime error logging without stopping in the debugger and some related functions that print a warning or error and may trigger a BP callstack (under the same rules as FFrame::KismetExecutionMessage)
- These are WIP and the API may change in the future, but are being used to fix various crashes found by fuzzing BP exposed functions
Change 3499957 by Michael.Noland
Animation: Added runtime errors for nullptr ControlRigs passed into BP methods
#rnx
Change 3499958 by Michael.Noland
Blueprints: Changed an ensure in UKismetNodeHelperLibrary::GetValidValue to a runtime error
#rnx
Change 3499959 by Michael.Noland
Engine: Downgrade various checks() to ensures() in the runtime asset cache functions exposed to Blueprints
Change 3499960 by Michael.Noland
AI: Changed UBTFunctionLibrary to not check/ensure if passed a null world context object
Change 3499968 by Michael.Noland
Editor: Fixed a couple of crashes in UEditorLevelUtils when passed nullptr arguments, and reformatted the entire file to fix widespread indentation issues
#rnx
Change 3499969 by Michael.Noland
Engine: Changed the verbosity of the failure log message of UEngine::GetWorldFromContextObject(..., LogAndReturnNull) from Warning to Error, so it always prints out a BP callstack
#rnx
Change 3499973 by Michael.Noland
Rendering: Fixed asserts in various UKismetRenderingLibrary methods if passed a nullptr for the WorldContextObject
- Also fixed flipped warnings in the failure cases for EndDrawCanvasToRenderTarget
Change 3499979 by Michael.Noland
Editor: Prevented a crash in UMaterialEditingLibrary::RecompileMaterial when passed a nullptr material
Change 3499984 by Michael.Noland
Physics: Prevented a crash in UTraceQueryTestResults::AssertEqual when passed in nullptr for Expected
Change 3499993 by Michael.Noland
Blueprints: Added validation when renaming variables, functions, components, multicast delegates, etc... to prevent names from containing some unacceptable characters
- This validation only kicks in when trying to rename an item, so bad names in existing content are 'grandfathered in'
- These bad names can cause bugs when working with content that contains these characters (e.g., names that contain a period cannot be found via FindObject<T>)
- Currently only . is banned, but eventually we may expand it to include all of INVALID_OBJECTNAME_CHARACTERS
Change 3500009 by Michael.Noland
Blueprints: Made the fuzzer skip classes declared in UnrealEd for now (some of the exposed methods change global state that can cause other tests to fail as the fuzzer isn't particularly sandboxed ATM)
#rnx
Change 3500011 by Michael.Noland
Android: Fixed a crash in UAndroidPermissionFunctionLibrary::AcquirePermissions when called with an empty array on non-Android platforms
Change 3500012 by Michael.Noland
Editor: Prevent a crash in UEditorTutorial::OpenAsset when passed a nullptr Asset
Change 3500014 by Michael.Noland
Engine: Changed FRuntimeAssetCacheFilesystemBackend::ClearCache(NAME_None) to not try to clear all cache directories (there is a separate no-args method for that)
Change 3500019 by Michael.Noland
Core: Fixed some more issues with CallFunctionByNameWithArguments and initializing / destroying parameters
- It was skipping the return value and incorrectly relying on the FirstPropertyToInit list which isn't set for by ref arguments
Change 3500020 by Michael.Noland
Automation: Prevent UFunctionalTestingManager::RunAllFunctionalTests and UFunctionalTestingManager* UFunctionalTestingManager::GetManager from crashing when a manager cannot be created (because we can't route to a world)
Change 3501062 by Marc.Audy
MakeArray AddInputPin is often used as part of node expansion, so need to move the transaction out of the function
Fix inability to undo/redo pin additions to sequence node
Add a K2Node_AddPinInterface to generalize the interface that K2Nodes implement to interact with SGraphNodeK2Sequence so it can be more generally used
#jira UE-46164
#jira UE-46270
Change 3501330 by Michael.Noland
AI: Fix an error on shutdown when the CDO of UAIPerceptionComponent tries to clean up (as it was never registered in the first place)
#jira UE-46271
Change 3501356 by Marc.Audy
Fix crash when multi-editing actor blueprints
#jira UE-46248
Change 3501408 by Michael.Noland
Core: Improve 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)
Change 3501457 by Phillip.Kavan
#jira UE-46054 - Fix crash when launching a packaged build that includes a nativized Blueprint instance with a ChildActorComponent instanced via an AddComponent node.
Change summary:
- Removed UK2Node_AddComponent::PostDuplicate(). This eliminates the creation of redundant component templates that were being unnecessarily created during the Blueprint duplication that precedes the nativization pass.
- Modified SMyBlueprint::OnDuplicateAction() to call MakeNewComponentTemplate() in response to a graph duplication action within the same Blueprint context (replaces previous UK2Node_AddComponent::PostDuplicate() impl).
- Modified FEmitDefaultValueHelper::HandleSpecialTypes() to force AddComponent-based CAC-owned template objects in the emitted codegen to use the UDynamicClass as the Outer when instancing. This matches what we already do for SCS-based CAC-owned template objects - that logic was added in CL# 3270456, and this matches up with FBlueprintNativeCodeGenModule::FindReplacedNameAndOuter(), where we specifically handle CAC-owned template objects.
Change 3502741 by Phillip.Kavan
#jira UE-45782 - Fix undo for index pin type changes.
Change summary:
- Modified SGraphPinIndex::OnTypeChanged() to call Modify() on the pin that was changed.
Change 3502939 by Michael.Noland
Back out changelist 3499927
Change 3503087 by Marc.Audy
Re-fixed ocean content as editor had also changed so had to take theirs and redo
#rnx
Change 3503266 by Ben.Zeigler
#jira UE-46335 Fix regression added in 4.16 where AssetRegistry GetAncesorClassNames/GetDerivedClassNames were not working properly in cooked builds for classes not in memory
Change 3503325 by mason.seay
updated Anim BP to prep for pin testing
Change 3503445 by Marc.Audy
Fix crash caused by OldPins being destroyed before rewiring
#rnx
Change 3505024 by Marc.Audy
Fix NodeEffectsPanel blueprint as it was using pins that no longer existed
#rnx
Change 3505254 by Marc.Audy
Don't include orphan pins when gather source property names
If a property doesn't exist for a source property name just skip the property rather than crashing
#jira UE-46345
#rnx
Change 3506125 by Ben.Zeigler
#jira UE-46311 Fix issues when blueprints are reloaded in place, it needs to remove them from root properly and sanitize the old class. It's still not clear why they are being reloaded in place
Change 3506334 by Dan.Oconnor
Move UAnimGraphNode_Base::PreloadRequiredAssets up to K2Node, make sure nodes get a chance to preload data before compilation manager compiles newly loaded blueprints
#jira UE-46411
Change 3506439 by Dan.Oconnor
Return to pre 3488512 behavior for construct object nodes. This means that we can still get warnings on load when users compile after saving a blueprint, but the current behavior loses default values because it's lookng at the skeleton cdo
#jira UE-46308
Change 3506468 by Dan.Oconnor
Return to pre 3488512 behavior, as it causes bad default values
#jira UE-46414
#rnx
Change 3506733 by Marc.Audy
Use the most up to date class to determine whether a property still exists when adding pins during reconstruction
#jira UE-45965
#author Dan.OConnor
#rnx
Change 3507531 by Ben.Zeigler
#jira UE-46449 Better fix to flush the asset registry queue when the editor requests a synchronous scan at startup. Sometimes it can take a few frames because of file handle delays
Change 3507924 by mason.seay
Sanity save of TM-Gameplay and sublevels to maybe resolve level streaming issues
Change 3507962 by Marc.Audy
Remake changes from CL# 3150796 wiped out by WEX-Staging merge to Main in CL# 3479958
#rnx
Change 3509131 by Dan.Oconnor
Compilation manager compile on load flow never called FindExportsInMemoryFirst, which is critical to prevent reloading of UBlueprintGeneratedClasses when Rename clears the export table
#jira UE-46311
Change 3509345 by Marc.Audy
CVar to disable orphan pins if necessary
#rnx
Change 3509959 by Marc.Audy
Protect against crashing due to large values in Timespan From functions
#jira UE-43840
Change 3510040 by Marc.Audy
Remove all the old unneeded ShooterGame test maps
#rnx
[CL 3510073 by Marc Audy in Main branch]
2017-06-26 15:07:18 -04:00
//------------------------------------------------------------------------------
void FBlueprintActionDatabase : : DeferredRemoveEntry ( FObjectKey const & InKey )
{
ActionRemoveQueue . AddUnique ( InKey ) ;
}
2014-07-09 12:17:42 -04:00
//------------------------------------------------------------------------------
void FBlueprintActionDatabase : : RefreshAll ( )
{
2022-07-01 14:16:41 -04:00
TRACE_CPUPROFILER_EVENT_SCOPE ( FBlueprintActionDatabase : : RefreshAll ) ;
2014-08-23 20:16:29 -04:00
TGuardValue < bool > ScopedInitialization ( BlueprintActionDatabaseImpl : : bIsInitializing , true ) ;
2019-01-10 17:26:53 -05:00
BlueprintActionDatabaseImpl : : bRefreshAllRequested = false ;
2014-08-23 20:16:29 -04:00
2023-08-17 13:25:12 -04:00
// Refresh other systems before the database is recreated
PreRefresh ( true ) ;
2015-03-12 19:24:11 -04:00
// Remove callbacks from blueprints
for ( TObjectIterator < UBlueprint > BlueprintIt ; BlueprintIt ; + + BlueprintIt )
{
2019-10-17 17:05:49 -04:00
UBlueprint * Blueprint = * BlueprintIt ;
// Level script BPs are registered using the associated world context. This will clear any registered LSBP actions.
const bool bIsLevelScript = FBlueprintEditorUtils : : IsLevelScriptBlueprint ( Blueprint ) ;
if ( bIsLevelScript )
{
const ULevelScriptBlueprint * LSBP = CastChecked < ULevelScriptBlueprint > ( Blueprint ) ;
if ( UWorld * World = LSBP - > GetWorld ( ) )
{
ClearAssetActions ( World ) ;
}
}
// Do this for all BP assets to both clear registered actions and remove callbacks. In the case of LSBPs, this will just remove callbacks.
ClearAssetActions ( Blueprint ) ;
2015-03-12 19:24:11 -04:00
}
2014-08-23 20:16:29 -04:00
ActionRegistry . Empty ( ) ;
2015-09-24 11:58:53 -04:00
UnloadedActionRegistry . Empty ( ) ;
2014-07-09 12:17:42 -04:00
for ( TObjectIterator < UClass > ClassIt ; ClassIt ; + + ClassIt )
{
UClass * const Class = ( * ClassIt ) ;
RefreshClassActions ( Class ) ;
}
2022-06-30 11:25:52 -04:00
2015-03-12 19:24:11 -04:00
FComponentTypeRegistry : : Get ( ) . SubscribeToComponentList ( ComponentTypes ) . RemoveAll ( this ) ;
2015-02-16 03:50:03 -05:00
// this handles creating entries for components that were loaded before the database was alive:
FComponentTypeRegistry : : Get ( ) . SubscribeToComponentList ( ComponentTypes ) . AddRaw ( this , & FBlueprintActionDatabase : : RefreshComponentActions ) ;
RefreshComponentActions ( ) ;
2015-04-11 10:23:56 -04:00
// Refresh existing worlds
RefreshWorlds ( ) ;
}
//------------------------------------------------------------------------------
void FBlueprintActionDatabase : : RefreshWorlds ( )
{
// Add all level scripts from current world
const TIndirectArray < FWorldContext > & WorldContexts = GEngine - > GetWorldContexts ( ) ;
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3510040)
#lockdown Nick.Penwarden
=====================================
MAJOR FEATURES + CHANGES
=====================================
Change 3459524 by Marc.Audy
Get/Set of properties that were previously BPRW/BPRO should error when used
#jira UE-20993
Change 3460004 by Phillip.Kavan
#jira UE-45171 - Fix C++ compilation failures during packaging caused by nativizing a Blueprint that overrides a native function with a 'TSubclassOf' parameter or return value.
Change summary:
- Modified FKismetCompilerContext::CreateParametersForFunction() to pass the 'CPF_UObjectWrapper' flag through to new function parameter properties during Blueprint compilation.
Change 3461210 by Phillip.Kavan
#jira UE-44505 - Fix occasional Blueprint editor crashes that could occur while rebuilding the context menu from the action registry.
Change summary:
- Modified FBlueprintActionDatabase::FActionRegistry to use an FObjectKey as the key type. This allows us to test entries for UObject validity before rebuilding context menu items based on the action database.
- Changed FBlueprintActionInfo::CachedOwnerClass to be a TWeakObjectPtr rather than a raw UClass* since it's based on the ActionOwner, which could potentially become invalid after the OwnerClass has been cached.
- Modified FBlueprintActionDatabase::RefreshAssetActions() to exclude World assets if the WorldType is not EWorldType::Editor. This eliminates an issue with unreferenced "inactive" GC'd world objects being left in the BP action registry after cooking, at which point the keys could become invalid.
- Added FBlueprintActionDatabase::DeferredRemoveEntry() to allow for scheduling removal of entries from outside of the database if they are known to be invalid.
- Modified FBlueprintActionDatabase::Tick() to handle deferred entry removals.
- Modified FBlueprintActionMenuBuilder::RebuildActionList() to both test actions for validity before building menu items and schedule removal of invalid actions on the next tick.
Notes:
- Alternatively we could just include UObject keys in the database's AddReferencedObject impl, but that would then prevent objects from ever being GC'd if they are not explicitly removed. For most entries the action database takes the approach of explicitly removing entries via delegate when the UObject is destroyed, so I chose to use a TWeakObjectPtr instead so that any entries that may not be getting explicitly removed via delegate will now simply become invalidated if the UObject key is GC'd due to not being referenced. I also set it up to clean and remove any entries (along with any associated node spawners) that are found to be invalid the next time we open the BP editor.
Change 3461373 by Lukasz.Furman
fixed async navmesh rebuilds not kicking in for requests from navdata.bForceRebuildOnLoad
#jira UE-44231
Change 3461409 by Lukasz.Furman
fixed reenabling automatic navmesh generation in Editor Preferences
#ue4
Change 3461550 by Ben.Zeigler
#jira UE-45328 Fix local variable support for Redirectors and other save-time validation. We need to run the local variables to UProperty and back at save time
Add new flag PPF_SerializedAsImportText which is used for BP pins/default values and indicates that something has been serialized as import text and so needs to handle string asset redirectors
Change 3462625 by Zak.Middleton
#ue4 - Fix InterpToMovementComponent not setting velocity on the object it moves. Fix movement rate when substepping enabled (other related fixes to come).
github PR #3620
Change 3462796 by Dan.Oconnor
Fix for spamming BroadcastBlueprintReinstanced and for creating CDO at wrong time when compiling FrontEnd.uasset in OrionGame
#jira UE-45434
Change 3462995 by Ben.Zeigler
#jira UE-16941 Fix it so Load Asset node works with a literal value as well as a connected pin
Change 3463099 by Ben.Zeigler
#jira UE-45471 Allow abstract base classes for primary assets
Change 3464809 by Marc.Audy
Expose FVector2D / FVector2D to blueprints
#jira UE-45427
Change 3467254 by Mieszko.Zielinski
Added an AI helper BP function that supplies caller with a copy of navigation path given controller is currently following #UE4
Change 3467644 by Dan.Oconnor
Fix for cook issues in ocean when using compilation manager, one issue caused by bad dependencies list, one issue caused by lack of subobject mapping in archetype reinstancing.
#jira UE-45443, UE-45444
Change 3468176 by Dan.Oconnor
Fix dependent blueprints being marked dirty when a blueprint is compiled
Change 3468353 by Michael.Noland
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
Change 3470532 by Dan.Oconnor
Re-enable compilation manager
Change 3470572 by Dan.Oconnor
Fix for pin paramters resetting when an archetype was reinstanced
#jira UE-45619
#rnx
Change 3471949 by Mason.Seay
Adding Primary Assets for testing
Change 3472074 by Ben.Zeigler
#jira UE-45140 Convert iterative cooking to use the Asset Registry as it's only mode, remove old hash and timestamp versions. This allows deleting the entire PackageDependencyInfo module
Change the asset registry iteration to not compute a hash at all, and instead store the script package guids in it's cache.
Expose bIgnoreIniSettingsOutOfDateForIteration and bIgnoreScriptPackagesOutOfDateForIteration in cooker settings, affects rather to listen to ini/script changes when doing iterative cooking
Change 3472079 by Ben.Zeigler
With new incremental cook options, change Fortnite to never care about ini settings, but do care about code changes. This can be changed but from previous discussions we wanted to be more safe than fast here
Change 3473429 by Lukasz.Furman
changed path following update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473476 by Lukasz.Furman
changed crowd simulation path update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473663 by Ben.Zeigler
Fix it so base k2node registers framework version, this is needed for the assetptr fixup I previously added
Change 3473679 by Mason.Seay
Slight cleanup of test map and added ability to teleport across level for easy navigation
Change 3473712 by Marc.Audy
Do default value validation against the actual value of the default entry of an enum rather than the serialized empty autogenerated default value
Change 3474055 by Marc.Audy
When nodes are reconstructed any pins that were previously linked or set to non-default values that have been removed will no longer simply vanish, but instead will remain in an Orphaned state until dealt with.
#jira UE-41828
Change 3474119 by mason.seay
Tweaked Force Feedback test
Change 3474156 by Marc.Audy
Actually enable orphan pin retention
Change 3474382 by Ben.Zeigler
Class.h Header and comment cleanup. Started this because IsChildOf did not have a comment and it's usage is a bit confusing
Change 3474386 by Ben.Zeigler
Close popup window when adding asset class to audit window
Change 3474491 by Ben.Zeigler
Remove ability for Worlds to not be saved as assets, this has been the default since 2014.
Change 3475363 by Marc.Audy
Alt-click now works with orphaned pins
#jira UE-45699
Change 3475523 by Marc.Audy
Fixup Fortnite and Paragon content for orphaned pin errors and warnings
Change 3475623 by Phillip.Kavan
#jira UE-45477 - Fix an EDL assertion on load in a nativized build with one or more Actor subobjects instanced via the EditInlineNew UI in the BP class defaults property editor.
Change summary:
- Modified FEmitDefaultValueHelper::OuterGenerate() to emit code to construct/initialize instanced subobject values that do not have the RF_DefaultSubObject flag set, and also to recursively handle nested subobjects for those values.
- Modified FEmitDefaultValueHelper::HandleInstancedSubobject() to alternatively emit a 'NewObject' assignment statement rather than a 'CreateDefaultSubobject' statement if only RF_ArchetypeObject is set on the source object value.
Change 3476008 by Dan.Oconnor
Fix for failing to preload our super class's subobjects. Effectively moving UBlueprint::ForceLoad calls earlier in loading process. This only results in data resetting to your parent's parent's default value from your parent's default value.
#jira UE-18765
Change 3476115 by Dan.Oconnor
Fix missing category information for inherited functions when using compilation manager
#jira UE-45660
#rnx
Change 3476577 by Lukasz.Furman
added early outs from navmesh layer generation when there's no walkable cells or contours to avoid allocating 0 bytes by next generation steps (behavior differs between platforms)
#ue4
Change 3476587 by Phillip.Kavan
#jira UE-45517 - Fix a regression in which dragging UMG widgets around in the designer view results in redundantly-compounded BP class properties and context menu actions.
Change summary:
- Modified SDesignerView::ClearDropPreviews() to move the widget that was removed from the tree into the transient package. This ensures that FWidgetBlueprintCompiler::CreateClassVariablesFromBlueprint() won't pick them up.
- Modified SDesignerView::ProcessDropAndAddWidget() to also consider any widgets not added to the 'DropPreviews' array as being transient (i.e. also move them into the transient package since they were not added to the tree).
Notes:
- The regression was introduced by the changes in CL# 3410168, and was merged to Main at CL# 3431398.
#rnx
Change 3476723 by Dan.Oconnor
Match old behavior wrt updating implemented interfaces in blueprints - this logic from FKismetEditorUtilities::CompileBlueprint was missing in compilation manager
#jira UE-45468
#rnx
Change 3476948 by Michael.Noland
Framework: Changed AActor::FindComponentByClass (and AActor::GetComponentByClass by extension) to return nullptr when passed a nullptr class, rather than crashing
Change 3476970 by Ben.Zeigler
Fix bug I introduced in 4.16 where assigning assets to multiple chunks did not work properly
Change 3477536 by Marc.Audy
Don't display default value box on linked orphaned input pins
Change 3477835 by Marc.Audy
Fix pins orphaned by deletion of an entry in a user-defined enum disappearing instead of remaining connected
#jira UE-45754
Change 3478027 by Marc.Audy
Minor performance optimization
#rnx
Change 3478198 by Phillip.Kavan
#jira UE-42431 - Remove an unnecessary ensure() when pasting an event node.
Change summary:
- Modified UEdGraphSchema_K2::CreateSubstituteNode() to no longer ensure() that we have a valid PreExistingNode; it's only used for logging when a substitute node is created in response to a conflict with an existing node.
Change 3478485 by Marc.Audy
Eliminate extraneous error messages about orphaned pins on get/set nodes
#jira UE-45749
#rnx
Change 3478756 by Marc.Audy
Fix fallout from changes to DoesDefaultValueMatchAutogenerated for user defined enums
#jira UE-45721
#rnx
Change 3478926 by Marc.Audy
Non-blueprint type structs can no longer be made/broken
Non-blueprint visible properties in structs will no longer have pins created for them
#jira UE-43122
Change 3478988 by Marc.Audy
DeltaTime for a tick function with a tick interval is now correct after disabling and then reenabling the tick function.
#jira UE-45524
Change 3479818 by Marc.Audy
Allow ctrl-drag off of orphan pins
#jira UE-45803
Change 3480214 by Marc.Audy
Modifications to user defined enumerations are now transacted
#jira UE-43866
Change 3480579 by Marc.Audy
Maintain all pin properties through transactions.
#rn Reference pins that are removed and then restored via undo now correctly have the diamond icon instead of the standard circle.
Change 3481043 by Marc.Audy
Make/Break of structs does not depend on having blueprint exposed properties.
Splitting of a struct pin still requires blueprint exposed properties.
#jira UE-45840
#jira UE-45831
Change 3481271 by Ben.Zeigler
Fix the AssetManager chunking code to use ChunkDependencyInfo instead of a hardcoded check for chunk 0
Clean up ChunkDependencyInfo and make it properly public
Move ShouldSetManager to be WITH_EDITOR
Ported from WEX branch
#RB peter.sauerbrei
Change 3481373 by Dan.Oconnor
Reduce reliance on expensive FindDelegateSignature. 3275922 made warnings about a ambiguous search more likely as it preserved names of members on the REINST_ classes
#jira UE-45704
Change 3481380 by Ben.Zeigler
Change it so Struct and Object AssetRegistrySearchable properties do not show up in content browser, they are not helpful
Change 3482362 by Marc.Audy
Fix properties not exposed to blueprint warnings for input properties on function graphs.
#jira UE-45824
Change 3482406 by Ben.Zeigler
#jira UE-45883 Fix Switch On Gameplay Tag Container node, and add switch nodes to TagCheck map
Change 3482498 by Ben.Zeigler
Attempt to fix hot reload issues with Asset Manager. We need to reset and re-acquire the asset classes when rescanning, as they may be pointing to the replaced class
Change 3482517 by Lukasz.Furman
fixed smart navlink update functions removing important flag
#jira UE-45875
Change 3482538 by Marc.Audy
When comparing float, vector, and rotator values for whether the the default matches the autogenerated do not use the string compare because differences in use of decimal or number of 0s after decimal are then considered not the same float
#jira UE-45846
Change 3482773 by Marc.Audy
Don't show default value or pass by reference for exec pins
#jira UE-45868
Change 3482791 by Ben.Zeigler
#jira UE-45800 Correctly dirty game mode blueprint when changing player controller/etc classes from game mode customization
Fix it so MarkBlueprintAsStructurallyModified calls MarkBlueprintAsModified as several fixes were only in the second function
Change 3483131 by Zak.Middleton
#ue4 - InterpToMovementComponent:
- Fix velocity not zeroed when interpolation stops.
- Various fixes when calculating velocity and time when substepping is enabled.
- Improve accuracy of interpolation when looping and there is time remaining after the loop event is hit. Consume the remainder of the time after the event back in the loop (similar to handling a blocking impact).
#jira UE-45690
Change 3483146 by Phillip.Kavan
#jira UE-38358 - Propagate 'const' function flag from interface Blueprint to implementing Blueprints.
Change summary:
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() to call SkeletalRecompileChildren() on dependent BPs when the target is an interface BP.
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified::FRefreshHelper::SkeletalRecompileChildren() to set child BP status to BS_Dirty after compiling.
- Modified ConformInterfaceByName() (FBlueprintEditorUtils) to use the interface's skeleton class for function iteration as well as to match the Function Entry node's 'const' setting to the interface UFunction's signature.
Change 3483340 by Ben.Zeigler
Fix issue querying asset registry after a hot reload, make sure pending kill objects are never considered to be Assets
Change 3483548 by Michael.Noland
Epic Friday: Playing around with some prototype traps
Change 3483700 by Phillip.Kavan
Fix CIS cook crash introduced by last submit.
#rnx
Change 3485217 by Ben.Zeigler
#jira UE-45519 Fix regression introduced in 4.16 where it would no longer cook all maps when no explicit maps were specified in ini or game callback. Moved the code that detects changes before culture/default map code and hardened it to deal with the case where some engine packages were already in the list before it entered the function
Change 3485367 by Dan.Oconnor
Avoid adding mappings to anim node when creating variables on the skeleton class and using the compilation manager
#jira UE-45756
Change 3485565 by Ben.Zeigler
#jira UE-45948 Fix compilation manager to properly reset variable default values after promoting a pin to local variable
Change 3485566 by Marc.Audy
Fix crashes caused by undo/redo of user defined struct changes
#jira UE-45775
#jira UE-45781
Change 3485805 by Michael.Noland
PR #3459: Fix for world origin shifting and SpringArmComponent location lag (Contributed by michail-nikolaev)
#jira UE-43747
Change 3485807 by Michael.Noland
PR #3485: Added additional textures field to paper 2d tileset class (Contributed by gryphonmyers)
#jira UE-44041
Change 3485811 by Michael.Noland
Framework: Fixed a bug in FStreamLevelAction::MakeSafeLevelName to avoid appending the PIE prefix multiple times (fixes functions like Unload Streaming Level when passed a full package name from an instanced streaming level)
Change 3485829 by Michael.Noland
Framework: Made GetWorldAssetPackageFName BlueprintCallable so instanced levels can be unloaded
Change 3485830 by Michael.Noland
PR #3568: add API declarations to ALevelStreamingVolume methods (Contributed by kayama-shift)
#jira UE-45002
Change 3486039 by Michael.Noland
PR #3495: UE-44014: Refreshing node error fixes (Contributed by projectgheist)
- Empty out the ErrorMsg when a node gets refreshed to prevent the same error messages from compounding
- Added support for split pins in UK2Node_Event::IsFunctionEntryCompatible
- Added a missing check for the delegate pin name on the entry node part of UK2Node_Event::IsFunctionEntryCompatible
#jira UE-44014
Change 3486093 by Michael.Noland
PR #3379: Added GAMEPLAYABILITIES_API to all Ability Tasks. (Contributed by ryanjon2040)
#jira UE-42903
Change 3486139 by Michael.Noland
Blueprints: Added new config options for execution wire thickness when not debugging (DefaultExecutionWireThickness) and data wire thicknesses (DefaultDataWireThickness) to the Graph Editor Settings page
#rn
Change 3486154 by Michael.Noland
Framework: Speculative fix for CIS error about FStructOnScope
#rnx
Change 3486180 by Dan.Oconnor
Better match old logic for determining when to skip data only compile
#jira UE-45830
Change 3487276 by Marc.Audy
Fix crash when using Setter with a locally scoped variable
#rnx
Change 3487278 by Marc.Audy
Ensure that pin change notifications occur on all pin breaks unless it is part of a node being garbage collected
Change 3487658 by Marc.Audy
Ensure that child actor template is created for subclasses
#jira UE-45985
Change 3487699 by Marc.Audy
Move non-templated elements out of FArchiveReplaceObjectRef and put them in FArchiveReplaceObjectRefBase
Change 3487813 by Dan.Oconnor
Asset demonstrating a crash
Change 3488101 by Marc.Audy
Fix crash with spawn/construct actor/object from class nodes when they no longer had any pins.
Correctly orphan pins when a node goes to 0 pins.
Change 3488337 by Marc.Audy
Editable pin base should not manually remove pin and let reconstruct node and rewire pins do their job
#jira UE-46020
Change 3488512 by Dan.Oconnor
ConstructObject nodes and SubInstances nodes use skeleton class when compilation manager can provide it
#jira UE-45830, UE-45965
#rnx
Change 3488631 by Michael.Noland
Framework: Fixed a crash when loading a blueprint with a parent class of ALevelBounds caused by trying to register the class default object with a non-existent level
#jira UE-45630
Change 3488665 by Michael.Noland
Blueprints: Improve the details panel customization for optional pin nodes like Struct Member Get/Set
- The category, raw name, and tooltip of the property are now included as part of the filter text as well
- The property tooltip is now displayed when hovering over the property name
- Code updated to use GET_MEMBER_NAME_CHECKED() where appropriate
Change 3489324 by Marc.Audy
Fix recursion causing stack crash
#jira UE-46038
#rnx
Change 3489326 by Marc.Audy
Fix cooking crash
#jira UE-46031
#rnx
Change 3489687 by mason.seay
Assets for testing orphan pins
Change 3489701 by Marc.Audy
Back out changelist 3487278 and 3489443 and make targetted changes for fixing up orphan pin cases where changing connections doesn't remove the pin.
#jira UE-46051
#jira UE-46052
#rnx
Change 3490352 by Dan.Oconnor
Fix for missing WidgetTree on Skeleton class - just look directly at the WidgetBlueprint
#jira UE-46062
Change 3490814 by Marc.Audy
Make callfunction/macro instances save all pins in orphan state more similar to previous behavior
#rnx
Change 3491022 by Dan.Oconnor
Properly clean up 'Key' property when we fail to create a value property
#jira UE-45279
Change 3491071 by Ben.Zeigler
#jira UE-45981 Fix rotation issues, vector/rotator pins with empty strings were not matching due to uninitialized memory.
Change 3491244 by Michael.Noland
Blueprints: Add compile time message back to the output log (will not auto-open the output log if there were no warnings/errors)
#jira UE-32948
Change 3491276 by Michael.Noland
Blueprints: Fixed some bugs where a newly added item would fail show up in the "My Blueprints" tree if there was a filter active (e.g., when promoting a variable)
- Centralized the logic for clearing the filter so it happens when we try and fail to select the item, rather than ad hoc in various other places
- Made it only clear the filter if necessary, rather than (almost) always clearing it when adding an item
#jira UE-43372
Change 3491562 by Marc.Audy
Put back pin removal in to editable pin base and instead modify the pin destroy implementation to take down child split pins with it
#jira UE-46020
#rnx
Change 3491658 by Marc.Audy
Unify RemoveUserDefinedPin implementations. Use version that has break to avoid size change assert
#rnx
Change 3491946 by Marc.Audy
ReconstructSinglePin no longer destroys OldPin (avoids oprhaned sub pins being destroyed before reparented)
RewireOldPinsToNewPins now destroys OldPins at the end (calling code no longer reponsible)
DestroyImpl now prunes out SubPins that had already been trashed
#rnx
Change 3492040 by Marc.Audy
Discard exec/then pins from a callfunction that has been converted to a pure node
#rnx
Change 3492200 by Zak.Middleton
#ue4 - Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size.
Fixes possible regression from CL 3359561 that removed the Reset(...) entirely.
#jira UE-46012
Change 3492290 by Ben.Zeigler
#jira UE-46108 Fix StringLibrary Mid to never crash, Substring had already been fixed
Change 3492311 by Marc.Audy
Don't clear the pin type if what you're connecting to's pin type is wildcard
#rnx
Change 3492680 by Dan.Oconnor
Handle missing generated class when using compilation manager - tested by forcing compile of BP_ParentClassIsMissingType.uasset
Change 3492826 by Marc.Audy
Don't do pin connection list change notifications from DestroyPins while regenerating on load
#jira UE-46112
#rnx
Change 3492851 by Michael.Noland
Core: Fixed various crashes when using UObject::CallFunctionByNameWithArguments with non-trivial argument types by properly initializing the allocated parameters
Change 3492852 by Michael.Noland
Framework: Fixed a crash if ACharacter::FindComponentByClass was passed a nullptr class
Change 3492934 by Marc.Audy
Fix ensure and crash delete macro containing orphaned pin
#rnx
Change 3493079 by Dan.Oconnor
Fix for crash when opening ThirdPersonAnimBlueprint and ThirdPersonAnimBlueprint_Perf then clicking 'Compile' button in ThirdPersonAnimBlueprint editor. Make sure the convenience members in the derived compilers get set when we relink child classes (which requires making cdos, which requires PropagateValuesToCDO..)
#rnx
Change 3493346 by Phillip.Kavan
#jira UE-40560 - Fix a reported crash when pasting nodes between unrelated Blueprint graphs.
Change summary:
- Modified FEdGraphUtilities::PostProcessPastedNodes() to ensure() on a NULL pin entry; this will allow execution to continue while still alerting us since it is an unexpected result. Also added an 'else' case to then remove the NULL entry so that PostPasteNode() implementations don't all have to guard against NULL pin entries. When the node is reconstructed, the NULL entry will be replaced with the correct pin initialized to its default values.
- Modified UEdGraphPin::ImportTextItem() to add some additional logging to parse error cases when importing pin properties from source T3D text. Hopefully this gives us more information when this is encountered in the future.
Change 3493938 by Michael.Noland
Blueprints: Prevent issues with renaming event dispatchers to contain periods (this may be disallowed in the future, but they no longer become uneditable)
#jira UE-45780
Change 3493945 by Michael.Noland
Blueprints: Fixed GetDelegatePoperty typos
#rnx
Change 3493997 by Michael.Noland
Blueprints: Partially reverting changes from CL# 3319966 to reroute nodes, restoring their alignment but losing the symmetrical grab handle changes
#jira UE-45760
Change 3493998 by Dan.Oconnor
Fix rare crash in RefreshStandAloneDefaultsEditor when the blueprint editor is opened and a blueprint had errors in it
Note: I stumbled across this by running a unit test and then opening a blueprint in the BPE. CrashReporter indicates 3 crashes in the last 3 days
Change 3494025 by Michael.Noland
Engine: Deleted some dead code (DEBUGGING_VIEWPORT_SIZES)
#rnx
Change 3494026 by Michael.Noland
Blueprints: V0 of a BlueprintCallable/BlueprintPure function fuzzer
- Calls exposed methods with default parameters on classes it is able to spawn for now, which catches crashes due to null and /0 but not out of bounds issues or ones on classes it can't spawn due to classwithin, abstract, etc...
- Can be called using Test.ScriptFuzzing, won't be integrated into automated tests until it is more fully fleshed out and all known issues are addressed
#rnx
Change 3496382 by Ben.Zeigler
Fix ensure when launching editor with cook on the side and incremental cooking enabled. It now flushes the background asset gather when calling the sync load all assets if one is in progress
Change 3496688 by Marc.Audy
Avoid crashing in component instance data if (for some reason) the Actor's root component isn't properly set up
#jira UE-46073
Change 3496830 by Michael.Noland
Editor: Change FEditorCategoryUtils methods to take UStruct* instead of UClass*, as they are just reading metadata
#rnx
Change 3496840 by Michael.Noland
Framework: Remove the requirement for a local player in UCheatManager::CheatScript, so it can be be started from the server side (doesn't change the availability of the cheat manager, just allows things like the redundant "cheat cheatscript scriptname" to work)
Change 3497038 by Michael.Noland
Fortnite: Added UFortDeveloperSettings to allow developers to auto-run cheats in PIE (does not occur in -game or outside of WITH_EDITOR builds)
- You can specify a list of cheat commands to run when a pawn is possessed (also needs CL# 3496840 for cheatscripts)
- You can also specify a set of items to grant to your local inventory when it is created
Change 3497204 by Marc.Audy
Fix AbilitySystemComponent not being blueprint readable.
#rnx
Change 3497668 by Mieszko.Zielinski
Fixed a crash in BT editor when dealing with enum-typed Blackboard-keys pointing to enum values that have been deleted #UE4
#jira UE-43659
Change 3497677 by Mieszko.Zielinski
Added a community-suggested working solution to patching up dynamic navmesh after world offset #UE4
Also, fixed a crash related to navmesh rebuilding if generation was configured to lazily gather navigatble geometry
#jira UE-41293
Change 3497678 by Mieszko.Zielinski
Marked AbstractNavData class as transient #UE4
We never want to save it to levels
Change 3497679 by Mieszko.Zielinski
Made NavModifierVolume responsive to editor-time property changes #UE4
#jira UE-32831
Change 3497900 by Dan.Oconnor
Fix bad skel reference when using construct object from class, just limiting scope of 3491946. To reproduce the bug just nativize QA Game, including the TM-Gameplay level
#rnx
Change 3497904 by Dan.Oconnor
Use K2Node_Event::FindEventSignatureFunction in order when directly generating the skeleton generated class to get event params correct
#jira UE-46153
#rnx
Change 3497907 by Dan.Oconnor
Correctly set blueprint visibility flags on params for inherited functions when generating the skeleton class
#rnx
#jira UE-46186
Change 3498218 by mason.seay
Updates to pin testing BP's
Change 3498323 by Mieszko.Zielinski
Made UNavCollision instance assigned to StaticMesh not get re-created from scratch every single time any StaticMesh property changes #UE4
Recreation was resulting in some of the UNavCollision's properties not getting saved and the way we were recreating the nav collision could also interfere with undo buffers
#jira UE-44891
Change 3499007 by Marc.Audy
Allow systems to hook Pre and PostCompile to do custom behaviors
Change 3499013 by Mieszko.Zielinski
Made AbstractNavData class non-transient again #UE4
Implemented AbstractNavData instances' transientness in a different manner.
#jira UE-46194
Change 3499204 by Mieszko.Zielinski
Introduced CrowdManagerBase, an engine-level class that can be extended to implement custom crowd management #Orion
Extracted FRecastQueryFilter into a separate file, which will break some peoples' compilation.
#jira UE-43799
Change 3499321 by mason.seay
Updated bp for struct testing
Change 3499388 by Marc.Audy
Allow the compiler log to store off potential messages from earlier in the compile cycle (early validation), that can be committed later (for example once pruning is completed).
Change 3499390 by Marc.Audy
Generate the orphan pin error messages during EarlyValidation, but cache until the regular validation phase. This ensures all are generated, but only those that aren't pruned will be emitted.
#rnx
Change 3499420 by Michael.Noland
Engine: Introduced a new version of UEngine::GetWorldFromContextObject which takes an enum specifying the behavior on failures and updated all existing uses
The new version intentionally does not have a default value for ErrorMode, callers need to think about which variant of behavior they want:
- ReturnNull: Silently returns nullptr, the calling code is expected to handle this gracefully
- LogAndReturnNull: Raises a runtime error but still returns nullptr, the calling code is expected to handle this gracefully
- Assert: Asserts, the calling code is not expecting to handle a failure gracefully
- Deprecated UEngine::GetWorldFromContextObject(object, boolean) and changed the default behavior for the deprecated instances to do LogAndReturnNull rather than Assert, based on the real-world call pattern
- Introduced GetWorldFromContextObjectChecked(object) as a shorthand for passing in EGetWorldErrorMode::Assert
- Made UObject::GetWorldChecked() actually assert if it would return nullptr (under some cases the old function could silently return nullptr while reporting bSupported = true, so it neither ensured nor checked)
- Fixed a race condition in the 'is implemented' bookkeeping logic in GetWorld()/GetWorldChecked() by confining it to the game thread and added a check() to ImplementsGetWorld() to make it clear that it only works on the game thread
The typical recommended call pattern is to use something like:
if (UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull))
{
... Do something with World
}
Handling the failure case but requesting a log message (with BP call stack printed out) if it failed. This is now also the default behavior for old calls to UEngine::GetWorldFromContextObject(Object) (using the default value of bChecked=true), which is a behavior change but it matches how the function was being used in practice; the vast majority of call sites actually expected it to potentially fail and handled the nullptr case gracefully; very few places used the return value unguarded and wanted it to assert when passed a nullptr.
#jira UE-42458
Change 3499429 by Michael.Noland
Engine: Removed a bogus TODO (the problematic code had already been reworked)
#rnx
Change 3499470 by Michael.Noland
Core: Improved and corrected the comment for ensure()
- It doesn't crash when checking is disabled (and hasn't since UE3, maybe ever?)
- It now only fires once per ensure() by default, added a note about ensureAlways()
#rnx
Change 3499643 by Marc.Audy
Use TGuardValue instead of manually managing it
#rnx
Change 3499874 by Marc.Audy
Display <Unnamed> instead of nothing for Pins with blank display name in the compiler log
Change 3499875 by Marc.Audy
When changing function parameter types, don't orphan a pin on the function entry/exit nodes (but do at the call sites)
#jira UE-46224
Change 3499927 by Dan.Oconnor
UField::Serialize no longer serialize's its next ptr, UStruct::Serialize serializes all Children properties instead. This resolves a hard circular dependency between function libraries that EDL detected. It was resolved in an ad hoc way by the old linker
#jira UE-43458
Change 3499953 by Michael.Noland
Core: Created a variant of ensure that does runtime error logging without stopping in the debugger and some related functions that print a warning or error and may trigger a BP callstack (under the same rules as FFrame::KismetExecutionMessage)
- These are WIP and the API may change in the future, but are being used to fix various crashes found by fuzzing BP exposed functions
Change 3499957 by Michael.Noland
Animation: Added runtime errors for nullptr ControlRigs passed into BP methods
#rnx
Change 3499958 by Michael.Noland
Blueprints: Changed an ensure in UKismetNodeHelperLibrary::GetValidValue to a runtime error
#rnx
Change 3499959 by Michael.Noland
Engine: Downgrade various checks() to ensures() in the runtime asset cache functions exposed to Blueprints
Change 3499960 by Michael.Noland
AI: Changed UBTFunctionLibrary to not check/ensure if passed a null world context object
Change 3499968 by Michael.Noland
Editor: Fixed a couple of crashes in UEditorLevelUtils when passed nullptr arguments, and reformatted the entire file to fix widespread indentation issues
#rnx
Change 3499969 by Michael.Noland
Engine: Changed the verbosity of the failure log message of UEngine::GetWorldFromContextObject(..., LogAndReturnNull) from Warning to Error, so it always prints out a BP callstack
#rnx
Change 3499973 by Michael.Noland
Rendering: Fixed asserts in various UKismetRenderingLibrary methods if passed a nullptr for the WorldContextObject
- Also fixed flipped warnings in the failure cases for EndDrawCanvasToRenderTarget
Change 3499979 by Michael.Noland
Editor: Prevented a crash in UMaterialEditingLibrary::RecompileMaterial when passed a nullptr material
Change 3499984 by Michael.Noland
Physics: Prevented a crash in UTraceQueryTestResults::AssertEqual when passed in nullptr for Expected
Change 3499993 by Michael.Noland
Blueprints: Added validation when renaming variables, functions, components, multicast delegates, etc... to prevent names from containing some unacceptable characters
- This validation only kicks in when trying to rename an item, so bad names in existing content are 'grandfathered in'
- These bad names can cause bugs when working with content that contains these characters (e.g., names that contain a period cannot be found via FindObject<T>)
- Currently only . is banned, but eventually we may expand it to include all of INVALID_OBJECTNAME_CHARACTERS
Change 3500009 by Michael.Noland
Blueprints: Made the fuzzer skip classes declared in UnrealEd for now (some of the exposed methods change global state that can cause other tests to fail as the fuzzer isn't particularly sandboxed ATM)
#rnx
Change 3500011 by Michael.Noland
Android: Fixed a crash in UAndroidPermissionFunctionLibrary::AcquirePermissions when called with an empty array on non-Android platforms
Change 3500012 by Michael.Noland
Editor: Prevent a crash in UEditorTutorial::OpenAsset when passed a nullptr Asset
Change 3500014 by Michael.Noland
Engine: Changed FRuntimeAssetCacheFilesystemBackend::ClearCache(NAME_None) to not try to clear all cache directories (there is a separate no-args method for that)
Change 3500019 by Michael.Noland
Core: Fixed some more issues with CallFunctionByNameWithArguments and initializing / destroying parameters
- It was skipping the return value and incorrectly relying on the FirstPropertyToInit list which isn't set for by ref arguments
Change 3500020 by Michael.Noland
Automation: Prevent UFunctionalTestingManager::RunAllFunctionalTests and UFunctionalTestingManager* UFunctionalTestingManager::GetManager from crashing when a manager cannot be created (because we can't route to a world)
Change 3501062 by Marc.Audy
MakeArray AddInputPin is often used as part of node expansion, so need to move the transaction out of the function
Fix inability to undo/redo pin additions to sequence node
Add a K2Node_AddPinInterface to generalize the interface that K2Nodes implement to interact with SGraphNodeK2Sequence so it can be more generally used
#jira UE-46164
#jira UE-46270
Change 3501330 by Michael.Noland
AI: Fix an error on shutdown when the CDO of UAIPerceptionComponent tries to clean up (as it was never registered in the first place)
#jira UE-46271
Change 3501356 by Marc.Audy
Fix crash when multi-editing actor blueprints
#jira UE-46248
Change 3501408 by Michael.Noland
Core: Improve 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)
Change 3501457 by Phillip.Kavan
#jira UE-46054 - Fix crash when launching a packaged build that includes a nativized Blueprint instance with a ChildActorComponent instanced via an AddComponent node.
Change summary:
- Removed UK2Node_AddComponent::PostDuplicate(). This eliminates the creation of redundant component templates that were being unnecessarily created during the Blueprint duplication that precedes the nativization pass.
- Modified SMyBlueprint::OnDuplicateAction() to call MakeNewComponentTemplate() in response to a graph duplication action within the same Blueprint context (replaces previous UK2Node_AddComponent::PostDuplicate() impl).
- Modified FEmitDefaultValueHelper::HandleSpecialTypes() to force AddComponent-based CAC-owned template objects in the emitted codegen to use the UDynamicClass as the Outer when instancing. This matches what we already do for SCS-based CAC-owned template objects - that logic was added in CL# 3270456, and this matches up with FBlueprintNativeCodeGenModule::FindReplacedNameAndOuter(), where we specifically handle CAC-owned template objects.
Change 3502741 by Phillip.Kavan
#jira UE-45782 - Fix undo for index pin type changes.
Change summary:
- Modified SGraphPinIndex::OnTypeChanged() to call Modify() on the pin that was changed.
Change 3502939 by Michael.Noland
Back out changelist 3499927
Change 3503087 by Marc.Audy
Re-fixed ocean content as editor had also changed so had to take theirs and redo
#rnx
Change 3503266 by Ben.Zeigler
#jira UE-46335 Fix regression added in 4.16 where AssetRegistry GetAncesorClassNames/GetDerivedClassNames were not working properly in cooked builds for classes not in memory
Change 3503325 by mason.seay
updated Anim BP to prep for pin testing
Change 3503445 by Marc.Audy
Fix crash caused by OldPins being destroyed before rewiring
#rnx
Change 3505024 by Marc.Audy
Fix NodeEffectsPanel blueprint as it was using pins that no longer existed
#rnx
Change 3505254 by Marc.Audy
Don't include orphan pins when gather source property names
If a property doesn't exist for a source property name just skip the property rather than crashing
#jira UE-46345
#rnx
Change 3506125 by Ben.Zeigler
#jira UE-46311 Fix issues when blueprints are reloaded in place, it needs to remove them from root properly and sanitize the old class. It's still not clear why they are being reloaded in place
Change 3506334 by Dan.Oconnor
Move UAnimGraphNode_Base::PreloadRequiredAssets up to K2Node, make sure nodes get a chance to preload data before compilation manager compiles newly loaded blueprints
#jira UE-46411
Change 3506439 by Dan.Oconnor
Return to pre 3488512 behavior for construct object nodes. This means that we can still get warnings on load when users compile after saving a blueprint, but the current behavior loses default values because it's lookng at the skeleton cdo
#jira UE-46308
Change 3506468 by Dan.Oconnor
Return to pre 3488512 behavior, as it causes bad default values
#jira UE-46414
#rnx
Change 3506733 by Marc.Audy
Use the most up to date class to determine whether a property still exists when adding pins during reconstruction
#jira UE-45965
#author Dan.OConnor
#rnx
Change 3507531 by Ben.Zeigler
#jira UE-46449 Better fix to flush the asset registry queue when the editor requests a synchronous scan at startup. Sometimes it can take a few frames because of file handle delays
Change 3507924 by mason.seay
Sanity save of TM-Gameplay and sublevels to maybe resolve level streaming issues
Change 3507962 by Marc.Audy
Remake changes from CL# 3150796 wiped out by WEX-Staging merge to Main in CL# 3479958
#rnx
Change 3509131 by Dan.Oconnor
Compilation manager compile on load flow never called FindExportsInMemoryFirst, which is critical to prevent reloading of UBlueprintGeneratedClasses when Rename clears the export table
#jira UE-46311
Change 3509345 by Marc.Audy
CVar to disable orphan pins if necessary
#rnx
Change 3509959 by Marc.Audy
Protect against crashing due to large values in Timespan From functions
#jira UE-43840
Change 3510040 by Marc.Audy
Remove all the old unneeded ShooterGame test maps
#rnx
[CL 3510073 by Marc Audy in Main branch]
2017-06-26 15:07:18 -04:00
for ( const FWorldContext & Context : WorldContexts )
2015-04-11 10:23:56 -04:00
{
if ( Context . WorldType = = EWorldType : : Editor )
{
if ( UWorld * CurrentWorld = Context . World ( ) )
{
RefreshAssetActions ( ( UObject * ) CurrentWorld ) ;
}
}
}
2014-07-09 12:17:42 -04:00
}
//------------------------------------------------------------------------------
void FBlueprintActionDatabase : : RefreshClassActions ( UClass * const Class )
{
2022-07-01 14:16:41 -04:00
TRACE_CPUPROFILER_EVENT_SCOPE ( FBlueprintActionDatabase : : RefreshClassActions ) ;
2014-08-08 15:35:56 -04:00
using namespace BlueprintActionDatabaseImpl ;
2014-07-09 12:17:42 -04:00
check ( Class ! = nullptr ) ;
2014-08-11 12:21:42 -04:00
2023-05-19 13:51:54 -04:00
bool const bFilterClass = ! IsClassAllowed ( Class , EPermissionsContext : : Asset ) ;
2014-08-23 20:16:29 -04:00
bool const bOutOfDateClass = Class - > HasAnyClassFlags ( CLASS_NewerVersionExists ) ;
2021-11-11 11:47:13 -05:00
bool const bHiddenClass = Class - > HasAnyClassFlags ( CLASS_Hidden ) ;
2015-04-11 10:23:56 -04:00
bool const bIsBlueprintClass = ( Cast < UBlueprintGeneratedClass > ( Class ) ! = nullptr ) ;
bool const bIsLevelScript = Class - > ClassGeneratedBy & & Cast < UBlueprint > ( Class - > ClassGeneratedBy ) - > BlueprintType = = EBlueprintType : : BPTYPE_LevelScript ;
2014-08-23 20:16:29 -04:00
2021-11-11 11:47:13 -05:00
if ( bOutOfDateClass | | bIsLevelScript | | bHiddenClass )
2014-07-09 12:17:42 -04:00
{
2014-08-23 20:16:29 -04:00
ActionRegistry . Remove ( Class ) ;
return ;
}
else if ( bIsBlueprintClass )
{
2023-05-19 13:51:54 -04:00
// Early out if the class is filtered
if ( bFilterClass )
{
return ;
}
2014-09-19 18:20:43 -04:00
UBlueprint * Blueprint = Cast < UBlueprint > ( Class - > ClassGeneratedBy ) ;
2014-09-17 16:02:23 -04:00
if ( ( Blueprint ! = nullptr ) & & BlueprintActionDatabaseImpl : : IsObjectValidForDatabase ( Blueprint ) )
2014-07-09 12:17:42 -04:00
{
2014-08-23 20:16:29 -04:00
// to prevent us from hitting this twice on init (once for the skel
// class, again for the generated class)
bool const bRefresh = ! bIsInitializing | | ( Blueprint - > SkeletonGeneratedClass = = nullptr ) | |
( Blueprint - > SkeletonGeneratedClass = = Class ) ;
2014-07-09 12:17:42 -04:00
2014-08-23 20:16:29 -04:00
if ( bRefresh )
{
RefreshAssetActions ( Blueprint ) ;
}
}
}
// here we account for "autonomous" standalone nodes, and any nodes that
// exist in a separate module; each UK2Node has a chance to append its
// own actions (presumably ones that would spawn that node)...
else if ( Class - > IsChildOf < UEdGraphNode > ( ) )
{
2023-05-19 13:51:54 -04:00
// Early out if the class is filtered
if ( bFilterClass )
{
return ;
}
2014-09-10 17:09:26 -04:00
{
2022-06-30 11:25:52 -04:00
FActionList & ClassActionList = ActionRegistry . FindOrAdd ( Class ) ;
if ( ! bIsInitializing )
{
ClassActionList . Empty ( ) ;
}
2014-09-10 17:09:26 -04:00
}
2014-08-23 20:16:29 -04:00
2014-09-26 11:31:34 -04:00
FBlueprintActionDatabaseRegistrar Registrar ( ActionRegistry , UnloadedActionRegistry , ActionPrimingQueue , Class ) ;
2014-08-23 20:16:29 -04:00
if ( ! bIsInitializing )
{
// if this a call to RefreshClassActions() from somewhere other than
// RefreshAll(), then we should only add actions for this class (the
// node could be adding actions, probably duplicate ones for assets)
Registrar . ActionKeyFilter = Class ;
}
// also, should catch any actions dealing with global UFields (like
2014-07-09 12:17:42 -04:00
// global structs, enums, etc.; elements that wouldn't be caught
2014-08-23 20:16:29 -04:00
// normally when sifting through fields on all known classes)
GetNodeSpecificActions ( Class , Registrar ) ;
// don't worry, the registrar marks new actions for priming
2022-06-30 11:25:52 -04:00
// Filter out actions by node class
if ( HasClassFiltering ( ) )
{
FActionList & ClassActionList = ActionRegistry . FindOrAdd ( Class ) ;
ClassActionList . RemoveAllSwap ( [ this ] ( UBlueprintNodeSpawner * InAction )
{
return ! IsClassAllowed ( InAction - > NodeClass . Get ( ) , EPermissionsContext : : Node ) ;
} ) ;
}
2014-08-23 20:16:29 -04:00
}
Copying //UE4/Dev-AnimPhys to //UE4/Dev-Main (Source: //UE4/Dev-AnimPhys @ 4062005)
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4005617 by Danny.Bouimad
Fixing TM-AnimPhys lighting so it works on all platforms
#jira UEENGQA-19924
Change 4014898 by Aaron.McLeran
Adding simple delay feature
Change 4025071 by Lina.Halper
Fix and more potential fix for invalid bone index issue
http://crashreporter/Buggs/Show/2052839
http://crashreporter/Crashes/Show/46656562
#jira: UE-51931
Change 4042493 by Lina.Halper
Fix issue with sequence evaluator to handle properly when jumps from end to front or front to end
#jira: UE-58429
Change 4042892 by Lina.Halper
Fix issue with being able to drag/drop montage onto anim track in sequencer
#jira: UE-57863
Change 4043553 by Ethan.Geller
#jira UE-58340 Handle calls to FVoiceCaptureWindows::GetVoiceData outside of existing data calls. #rb none
Change 4043613 by Lina.Halper
Fix issue with incorrect usage of staticclass
#jira: UE-54413
Change 4044069 by James.Golding
PR #4455: Add FAnimNode_StateMachine subclassing support. (Contributed by redfeatherplusplus)
#jira UE-54599
Change 4044070 by James.Golding
PR #4349: Final points on a line test were broken, changed Plane.PlaneDot to FM. (Contributed by DSDambuster)
#jira UE-53554
Change 4044072 by James.Golding
Add ENGINE_API to UPhysicsHandleComponent so it can be subclassed
#jira UE-56397
Change 4044073 by James.Golding
PR #4611: Expose a few API's so it's possible to make custom anim graph nodes using these objects. (Contributed by ill)
#jira UE-57004
Change 4044075 by James.Golding
PR #4618: Bugfix: typo in path for CustomMeshComponent (case error) (Contributed by malavon)
#jira UE-57077
Change 4044077 by James.Golding
Add ClassGroup to some components
#jira UE-57587, UE-57609
Change 4044080 by James.Golding
PR #4515: Adding API export macro to ACableActor (Contributed by maxtunel)
#jira UE-55515
Change 4044082 by James.Golding
Remove unused CopySkinnedModelData function
#jira UE-57623
Change 4044083 by James.Golding
Fix per-poly collision for skel meshes. Make sure to call UpdateKinematicBonesToAnim if bEnablePerPolyCollision is set, even if no bodies
Integration of CL 3971421 from Release-4.19 stream
#jira UE-56405
Change 4044084 by James.Golding
Add option to preview 'fixed bounds' in SkelMesh editors.
Change 4044086 by James.Golding
Remove unused RigidInfluenceIndex from CPU skinning code
Change 4044310 by James.Golding
Roll back changes to make PhysX cool fails a log instead of warning (CL 3995372, UE-56466), now that content is fixed
Change 4044416 by Lina.Halper
Provide BP interface to get curve list of names
#jira: UE-52623
Change 4044419 by Lina.Halper
added notification for updating pose asset
#jira: UE-56233
Change 4046929 by Ethan.Geller
#jira none add my developer folder to QAGame. #fyi dan.reynolds
Change 4047064 by Ethan.Geller
[Dev-AnimPhys] #jira UE-57890 add additional binaries for Steam Audio to LibPhonon.Build.cs. #rb none
Change 4047564 by Lina.Halper
Fix issue of not regenerating when reimport mesh
#jira: UE-58284
Change 4047630 by Ethan.Geller
Fix syntax error in libPhonon. #jira none #rb none
Change 4048050 by Thomas.Sarkanen
Allowed "Follow Bone" to be popped out of the menu into the viewport
This allows for quick re-selection of the bone to follow, avoiding multiple clicks
Tweaks and extends the "pinned command list" system to allow dynamic text in labels and labels to be hidden.
#jira UE-53070 - Follow bone - Follow selected bone
Change 4048064 by Thomas.Sarkanen
Validate any bone references during compilation
Bone references that are set to something other than NAME_None will be verified against the skeleton.
Updated various anim nodes to call the base class ValidateAnimNodeDuringCompilation
#jira UE-55680 - Anim graph nodes that use FBoneReference all need validation in ValidateAnimNodeDuringCompilation
Change 4048468 by James.Golding
PR #4319: Allow UAnimNotify_PlayMontageNotify to be inherited by other dlls (Contributed by DSDambuster)
#jira UE-53390
Change 4048470 by James.Golding
Implement ApplyWorldOffset to CableComponent, to handle origin shifting
#jira UE-53560
Change 4048471 by James.Golding
PR #4396: fix cachebones for subclasses of FAnimNode_SkeletalControlBase (Contributed by tmiv)
#jira UE-53799
Change 4048474 by James.Golding
PR #4423: Rename confusing argument in LineBoxIntersection (Contributed by Hybrid0)
#jira UE-54145
Change 4048485 by James.Golding
Fix compile error display from PoseDriver node
#jira UE-58306
Change 4048489 by James.Golding
Finish support for ProceduralMeshComponent supporting multiple UV channels
#jira UE-54049
Change 4048678 by Thomas.Sarkanen
Allowing blend space samples to be optionally moved off-grid
Grid samples are now each optionally snapped.
#jira UE-56116 - Allow blend spaces to optionally use off-grid sample points
Change 4048773 by Lina.Halper
Support pose factory with name input
#jira: UE-55859
Change 4048844 by David.Hill
Material Proxy Settings
Updating the max on the material proxy texture size - old value could cause int32 overflow.
#jira: UE-55441
Change 4049464 by Lina.Halper
update curve is expensive, and we're doing multiple times with same curve sets. I'm changing it so that it only updates main, and copy from main instance to sub/post.
#jira: UE-58459
Change 4050939 by Aaron.McLeran
PR #4649: Activated reverbs will now take priority when world settings are used (i.e. no volume proxy is in use) (Contributed by Brandon-Wilson)
#jira UE-57546
Change 4050954 by Aaron.McLeran
PR #4594: Added class type to allow inherited versions of UAudioComponents to be created (Contributed by korypostma)
#jira UE-56454
Change 4050960 by Aaron.McLeran
Attempt to fix linux build.
Change 4051247 by James.Golding
Fix ProcMeshComp UpdateSection not copying all UV sets
Add test case for ProcMeshComp with multiple UVs
#jira UE-54049
Change 4051250 by James.Golding
Add bUseHighPrecisionTangentBasis option to SkeletalMesh
Change SkeletalMesh source data to store tangents at higher precision
#jira UE-58525
Change 4051616 by Thomas.Sarkanen
Mass scale is no longer incorrectly clamped
This now allows mass scales below 0.01 and above 100.
#jira UE-49572 - MassScale has some edge cases for skeletal mesh component and small numbers
Change 4051619 by Thomas.Sarkanen
Fixed notify drag/drop on high DPI displays
#jira UE-55690 - Animation Notifies Do Not Move Past the Center of Timeline On a High DPI Display
Change 4051626 by Thomas.Sarkanen
Fix anim dynamics debug rendering
#jira UE-53902 - Anim Dynamics node is missing wireframe simulation box in preview
#jira UE-57983 - GitHub 4674 : UE-57910 Fix the angular limits display issue while selecting the AnimDynamics node
Change 4051628 by Thomas.Sarkanen
Constraints and bodies now rotate in their own local space in the physics asset editor
When local coordinate system is applied
#jira UE-50345 - rotating constraints or bodies in Phat with local axis
Change 4051634 by Thomas.Sarkanen
Automatic rules for state transitions are now shown in tooltips
#jira UE-57689 - Animation State Machine Transitions that use bAutomaticRuleBasedOnSequencePlayerInState, should indicate that in the transition
Change 4051636 by Thomas.Sarkanen
NotifyTriggerChance is now hidden for nodify states as it has no effect
#jira UE-55351 - NotifyTriggerChance should be grayed out for UAnimNotifyState
Change 4051669 by Thomas.Sarkanen
Fixed accidental operation of pinned commands when closing them
#jira UE-54051 - Unpinning settings will toggle the next setting
Change 4051671 by Thomas.Sarkanen
Fix crash importing skeletal mesh with no vertices
Not a fix for the jira, but found while investigating
#jira UE-56330 - FBX Files Do Not Import After Using the Facial Anim Importer Unless Project is Reopened
Change 4051684 by James.Golding
Fix high precision tangents when CPU skinning and mesh merging
Remember bExistingUseHighPrecisionTangentBasis when re-importing SkelMesh
#jira UE-58525
Change 4051686 by James.Golding
PR #4297: Output animation name with ensure() - useful when debugging (Contributed by DSDambuster)
#jira UE-53259
Change 4051801 by Jurre.deBaare
A BlendSpace that puts the same asset on samples can stop its own animation on Switch
#fix Ensure that we don't cause divide-by-zero situations when sampling blendspace data
#jira UE-54030
Change 4051806 by Jurre.deBaare
Fix geometry cache reimport + serialization issues
Change 4051807 by Jurre.deBaare
Currently, it's not possible to assigned a material to a Geometry Cache .uasset
#fix EditAnywhere rather than VisibleAnywhere
#jira UE-58212
Change 4051809 by Jurre.deBaare
GeomCache: Crash/Bug: When importing file
#fix Ensure that we have a valid first frame when trying to import a sequence, if not error-out
#jira UE-58285
Change 4051813 by Jurre.deBaare
GeomCache: Bug: Normals Broken
#jira UE-58287
GeomCache - Normals are Bad on Import
#jira UE-58283
#fix ensure that we triangulate mesh attributes when necessary
#misc per-attribute indices check
Change 4051816 by Jurre.deBaare
Alembic QOL
- Fix issue with reimport object flags not being applied
- Now also store sampling data as part of Alembic asset import data
Change 4051817 by Jurre.deBaare
PR #4550: Fixes bug where "Merge Actors" or HLOD proxies result in too many mesh sections (Contributed by trond)
#fix Integrated pull-request in different form
#jira UE-55976
Change 4051818 by Jurre.deBaare
Emissive isn't baked correctly in TM-MeshbakeMap
#fix ensure that we OR and Max the material flags and emissive scale
#jira UE-54889
Change 4051819 by Jurre.deBaare
Crash on project load when GeometryCache plugin is disabled
#fix No longer force-load the geometry cache module as it was moved to be a plugin
#jira UE-57875
Change 4051820 by Jurre.deBaare
CLONE - Editor crash when Propagating Vertex Colors to Asset's source mesh
#fix IsValidIndex check
#jira UE-57127
Vertex painting
Change 4051828 by Jurre.deBaare
Merging negative-scaled actors breaks materials
#fix Make sure we also reverse the section indices when a static mesh has a mirrored transform
#jira UE-56953
Change 4051834 by Jurre.deBaare
Unclear warnings when generating clusters in persistent level when sublevels have HLOD disabled
#fix improved warning text + added uobject link to level in content browser
#jira UE-55734
Change 4051993 by Jurre.deBaare
Update Alembic automated test ground truth
#jira none
Change 4052937 by James.Golding
Remove now-unused version (merged change to skel source data from Main instead)
Change 4053291 by Aaron.McLeran
Fix for CIS
#jira none
Change 4053375 by Aaron.McLeran
#jira UE-58716 Allow ability to bypass volume-weighting with using sound wave priority
Change 4057170 by Thomas.Sarkanen
Fix shadow variable warning
#jira UE-58806 - Linux: Shadow Variable Warnings building Editor - PhysicsAssetEditorEditMode.cpp
Change 4057653 by Lina.Halper
Fix the issue with showing same item multiple times when opening control rig blueprint many times
#jira: UE-58107
Change 4057701 by Jurre.deBaare
//UE4/Dev-AnimPhys - Step 'Run Automated Tests' has completed with 13 Errors
#fix reupdate alembic ground truths, little bit of a weird state
#jira UE-58818
Change 4057710 by Ethan.Geller
[Dev-AnimPhys] #jira UE-58004 Early exit if finish was called before StartSubmixRecording. #rb Aaron.McLeran
Change 4059295 by Ethan.Geller
#jira UE-58004 Reduce logs from fatal to error, fix serialize crash. #rb aaron.mcleran
Change 4061061 by Aaron.McLeran
Fixing animphys build from recent merge from main.
#jira UE-58909
Change 4053154 by Aaron.McLeran
#jira UE-58708 Fix to mic component to reduce clicks/pops on mic input.
Fix was to simplify the way audio is copied from mic input. This change was used on the GDC demo floor for a number of features.
[CL 4062611 by Aaron McLeran in Main branch]
2018-05-09 18:45:58 -04:00
else if ( Class - > IsChildOf < UBlueprint > ( ) )
{
2023-05-19 13:51:54 -04:00
// Early out if the class is filtered
if ( bFilterClass )
{
return ;
}
Copying //UE4/Dev-AnimPhys to //UE4/Dev-Main (Source: //UE4/Dev-AnimPhys @ 4062005)
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4005617 by Danny.Bouimad
Fixing TM-AnimPhys lighting so it works on all platforms
#jira UEENGQA-19924
Change 4014898 by Aaron.McLeran
Adding simple delay feature
Change 4025071 by Lina.Halper
Fix and more potential fix for invalid bone index issue
http://crashreporter/Buggs/Show/2052839
http://crashreporter/Crashes/Show/46656562
#jira: UE-51931
Change 4042493 by Lina.Halper
Fix issue with sequence evaluator to handle properly when jumps from end to front or front to end
#jira: UE-58429
Change 4042892 by Lina.Halper
Fix issue with being able to drag/drop montage onto anim track in sequencer
#jira: UE-57863
Change 4043553 by Ethan.Geller
#jira UE-58340 Handle calls to FVoiceCaptureWindows::GetVoiceData outside of existing data calls. #rb none
Change 4043613 by Lina.Halper
Fix issue with incorrect usage of staticclass
#jira: UE-54413
Change 4044069 by James.Golding
PR #4455: Add FAnimNode_StateMachine subclassing support. (Contributed by redfeatherplusplus)
#jira UE-54599
Change 4044070 by James.Golding
PR #4349: Final points on a line test were broken, changed Plane.PlaneDot to FM. (Contributed by DSDambuster)
#jira UE-53554
Change 4044072 by James.Golding
Add ENGINE_API to UPhysicsHandleComponent so it can be subclassed
#jira UE-56397
Change 4044073 by James.Golding
PR #4611: Expose a few API's so it's possible to make custom anim graph nodes using these objects. (Contributed by ill)
#jira UE-57004
Change 4044075 by James.Golding
PR #4618: Bugfix: typo in path for CustomMeshComponent (case error) (Contributed by malavon)
#jira UE-57077
Change 4044077 by James.Golding
Add ClassGroup to some components
#jira UE-57587, UE-57609
Change 4044080 by James.Golding
PR #4515: Adding API export macro to ACableActor (Contributed by maxtunel)
#jira UE-55515
Change 4044082 by James.Golding
Remove unused CopySkinnedModelData function
#jira UE-57623
Change 4044083 by James.Golding
Fix per-poly collision for skel meshes. Make sure to call UpdateKinematicBonesToAnim if bEnablePerPolyCollision is set, even if no bodies
Integration of CL 3971421 from Release-4.19 stream
#jira UE-56405
Change 4044084 by James.Golding
Add option to preview 'fixed bounds' in SkelMesh editors.
Change 4044086 by James.Golding
Remove unused RigidInfluenceIndex from CPU skinning code
Change 4044310 by James.Golding
Roll back changes to make PhysX cool fails a log instead of warning (CL 3995372, UE-56466), now that content is fixed
Change 4044416 by Lina.Halper
Provide BP interface to get curve list of names
#jira: UE-52623
Change 4044419 by Lina.Halper
added notification for updating pose asset
#jira: UE-56233
Change 4046929 by Ethan.Geller
#jira none add my developer folder to QAGame. #fyi dan.reynolds
Change 4047064 by Ethan.Geller
[Dev-AnimPhys] #jira UE-57890 add additional binaries for Steam Audio to LibPhonon.Build.cs. #rb none
Change 4047564 by Lina.Halper
Fix issue of not regenerating when reimport mesh
#jira: UE-58284
Change 4047630 by Ethan.Geller
Fix syntax error in libPhonon. #jira none #rb none
Change 4048050 by Thomas.Sarkanen
Allowed "Follow Bone" to be popped out of the menu into the viewport
This allows for quick re-selection of the bone to follow, avoiding multiple clicks
Tweaks and extends the "pinned command list" system to allow dynamic text in labels and labels to be hidden.
#jira UE-53070 - Follow bone - Follow selected bone
Change 4048064 by Thomas.Sarkanen
Validate any bone references during compilation
Bone references that are set to something other than NAME_None will be verified against the skeleton.
Updated various anim nodes to call the base class ValidateAnimNodeDuringCompilation
#jira UE-55680 - Anim graph nodes that use FBoneReference all need validation in ValidateAnimNodeDuringCompilation
Change 4048468 by James.Golding
PR #4319: Allow UAnimNotify_PlayMontageNotify to be inherited by other dlls (Contributed by DSDambuster)
#jira UE-53390
Change 4048470 by James.Golding
Implement ApplyWorldOffset to CableComponent, to handle origin shifting
#jira UE-53560
Change 4048471 by James.Golding
PR #4396: fix cachebones for subclasses of FAnimNode_SkeletalControlBase (Contributed by tmiv)
#jira UE-53799
Change 4048474 by James.Golding
PR #4423: Rename confusing argument in LineBoxIntersection (Contributed by Hybrid0)
#jira UE-54145
Change 4048485 by James.Golding
Fix compile error display from PoseDriver node
#jira UE-58306
Change 4048489 by James.Golding
Finish support for ProceduralMeshComponent supporting multiple UV channels
#jira UE-54049
Change 4048678 by Thomas.Sarkanen
Allowing blend space samples to be optionally moved off-grid
Grid samples are now each optionally snapped.
#jira UE-56116 - Allow blend spaces to optionally use off-grid sample points
Change 4048773 by Lina.Halper
Support pose factory with name input
#jira: UE-55859
Change 4048844 by David.Hill
Material Proxy Settings
Updating the max on the material proxy texture size - old value could cause int32 overflow.
#jira: UE-55441
Change 4049464 by Lina.Halper
update curve is expensive, and we're doing multiple times with same curve sets. I'm changing it so that it only updates main, and copy from main instance to sub/post.
#jira: UE-58459
Change 4050939 by Aaron.McLeran
PR #4649: Activated reverbs will now take priority when world settings are used (i.e. no volume proxy is in use) (Contributed by Brandon-Wilson)
#jira UE-57546
Change 4050954 by Aaron.McLeran
PR #4594: Added class type to allow inherited versions of UAudioComponents to be created (Contributed by korypostma)
#jira UE-56454
Change 4050960 by Aaron.McLeran
Attempt to fix linux build.
Change 4051247 by James.Golding
Fix ProcMeshComp UpdateSection not copying all UV sets
Add test case for ProcMeshComp with multiple UVs
#jira UE-54049
Change 4051250 by James.Golding
Add bUseHighPrecisionTangentBasis option to SkeletalMesh
Change SkeletalMesh source data to store tangents at higher precision
#jira UE-58525
Change 4051616 by Thomas.Sarkanen
Mass scale is no longer incorrectly clamped
This now allows mass scales below 0.01 and above 100.
#jira UE-49572 - MassScale has some edge cases for skeletal mesh component and small numbers
Change 4051619 by Thomas.Sarkanen
Fixed notify drag/drop on high DPI displays
#jira UE-55690 - Animation Notifies Do Not Move Past the Center of Timeline On a High DPI Display
Change 4051626 by Thomas.Sarkanen
Fix anim dynamics debug rendering
#jira UE-53902 - Anim Dynamics node is missing wireframe simulation box in preview
#jira UE-57983 - GitHub 4674 : UE-57910 Fix the angular limits display issue while selecting the AnimDynamics node
Change 4051628 by Thomas.Sarkanen
Constraints and bodies now rotate in their own local space in the physics asset editor
When local coordinate system is applied
#jira UE-50345 - rotating constraints or bodies in Phat with local axis
Change 4051634 by Thomas.Sarkanen
Automatic rules for state transitions are now shown in tooltips
#jira UE-57689 - Animation State Machine Transitions that use bAutomaticRuleBasedOnSequencePlayerInState, should indicate that in the transition
Change 4051636 by Thomas.Sarkanen
NotifyTriggerChance is now hidden for nodify states as it has no effect
#jira UE-55351 - NotifyTriggerChance should be grayed out for UAnimNotifyState
Change 4051669 by Thomas.Sarkanen
Fixed accidental operation of pinned commands when closing them
#jira UE-54051 - Unpinning settings will toggle the next setting
Change 4051671 by Thomas.Sarkanen
Fix crash importing skeletal mesh with no vertices
Not a fix for the jira, but found while investigating
#jira UE-56330 - FBX Files Do Not Import After Using the Facial Anim Importer Unless Project is Reopened
Change 4051684 by James.Golding
Fix high precision tangents when CPU skinning and mesh merging
Remember bExistingUseHighPrecisionTangentBasis when re-importing SkelMesh
#jira UE-58525
Change 4051686 by James.Golding
PR #4297: Output animation name with ensure() - useful when debugging (Contributed by DSDambuster)
#jira UE-53259
Change 4051801 by Jurre.deBaare
A BlendSpace that puts the same asset on samples can stop its own animation on Switch
#fix Ensure that we don't cause divide-by-zero situations when sampling blendspace data
#jira UE-54030
Change 4051806 by Jurre.deBaare
Fix geometry cache reimport + serialization issues
Change 4051807 by Jurre.deBaare
Currently, it's not possible to assigned a material to a Geometry Cache .uasset
#fix EditAnywhere rather than VisibleAnywhere
#jira UE-58212
Change 4051809 by Jurre.deBaare
GeomCache: Crash/Bug: When importing file
#fix Ensure that we have a valid first frame when trying to import a sequence, if not error-out
#jira UE-58285
Change 4051813 by Jurre.deBaare
GeomCache: Bug: Normals Broken
#jira UE-58287
GeomCache - Normals are Bad on Import
#jira UE-58283
#fix ensure that we triangulate mesh attributes when necessary
#misc per-attribute indices check
Change 4051816 by Jurre.deBaare
Alembic QOL
- Fix issue with reimport object flags not being applied
- Now also store sampling data as part of Alembic asset import data
Change 4051817 by Jurre.deBaare
PR #4550: Fixes bug where "Merge Actors" or HLOD proxies result in too many mesh sections (Contributed by trond)
#fix Integrated pull-request in different form
#jira UE-55976
Change 4051818 by Jurre.deBaare
Emissive isn't baked correctly in TM-MeshbakeMap
#fix ensure that we OR and Max the material flags and emissive scale
#jira UE-54889
Change 4051819 by Jurre.deBaare
Crash on project load when GeometryCache plugin is disabled
#fix No longer force-load the geometry cache module as it was moved to be a plugin
#jira UE-57875
Change 4051820 by Jurre.deBaare
CLONE - Editor crash when Propagating Vertex Colors to Asset's source mesh
#fix IsValidIndex check
#jira UE-57127
Vertex painting
Change 4051828 by Jurre.deBaare
Merging negative-scaled actors breaks materials
#fix Make sure we also reverse the section indices when a static mesh has a mirrored transform
#jira UE-56953
Change 4051834 by Jurre.deBaare
Unclear warnings when generating clusters in persistent level when sublevels have HLOD disabled
#fix improved warning text + added uobject link to level in content browser
#jira UE-55734
Change 4051993 by Jurre.deBaare
Update Alembic automated test ground truth
#jira none
Change 4052937 by James.Golding
Remove now-unused version (merged change to skel source data from Main instead)
Change 4053291 by Aaron.McLeran
Fix for CIS
#jira none
Change 4053375 by Aaron.McLeran
#jira UE-58716 Allow ability to bypass volume-weighting with using sound wave priority
Change 4057170 by Thomas.Sarkanen
Fix shadow variable warning
#jira UE-58806 - Linux: Shadow Variable Warnings building Editor - PhysicsAssetEditorEditMode.cpp
Change 4057653 by Lina.Halper
Fix the issue with showing same item multiple times when opening control rig blueprint many times
#jira: UE-58107
Change 4057701 by Jurre.deBaare
//UE4/Dev-AnimPhys - Step 'Run Automated Tests' has completed with 13 Errors
#fix reupdate alembic ground truths, little bit of a weird state
#jira UE-58818
Change 4057710 by Ethan.Geller
[Dev-AnimPhys] #jira UE-58004 Early exit if finish was called before StartSubmixRecording. #rb Aaron.McLeran
Change 4059295 by Ethan.Geller
#jira UE-58004 Reduce logs from fatal to error, fix serialize crash. #rb aaron.mcleran
Change 4061061 by Aaron.McLeran
Fixing animphys build from recent merge from main.
#jira UE-58909
Change 4053154 by Aaron.McLeran
#jira UE-58708 Fix to mic component to reduce clicks/pops on mic input.
Fix was to simplify the way audio is copied from mic input. This change was used on the GDC demo floor for a number of features.
[CL 4062611 by Aaron McLeran in Main branch]
2018-05-09 18:45:58 -04:00
FBlueprintActionDatabaseRegistrar Registrar ( ActionRegistry , UnloadedActionRegistry , ActionPrimingQueue ) ;
Cast < UBlueprint > ( Class - > ClassDefaultObject ) - > GetTypeActions ( Registrar ) ;
}
2014-08-23 20:16:29 -04:00
else
{
FActionList & ClassActionList = ActionRegistry . FindOrAdd ( Class ) ;
2023-05-19 13:51:54 -04:00
if ( ! bIsInitializing & & ! bFilterClass )
2014-08-23 20:16:29 -04:00
{
ClassActionList . Empty ( ) ;
// if we're only refreshing this class (and not init'ing the whole
// database), then we have to reach out to individual nodes in case
// they'd add entries for this as well
2014-09-26 11:31:34 -04:00
FBlueprintActionDatabaseRegistrar Registrar ( ActionRegistry , UnloadedActionRegistry , ActionPrimingQueue ) ;
2014-08-23 20:16:29 -04:00
Registrar . ActionKeyFilter = Class ; // only want actions for this class
RegisterAllNodeActions ( Registrar ) ;
}
2023-05-19 13:51:54 -04:00
// Note: We still run this if we're filtering the class, as the class itself may expose properties/functions/etc that derived non-filtered classes need access to
2014-08-23 20:16:29 -04:00
GetClassMemberActions ( Class , ClassActionList ) ;
2014-08-08 15:35:56 -04:00
2014-08-08 18:01:38 -04:00
// queue the newly added actions for priming
if ( ClassActionList . Num ( ) > 0 )
2014-08-08 15:35:56 -04:00
{
2014-08-11 18:39:28 -04:00
ActionPrimingQueue . Add ( Class , 0 ) ;
2022-06-30 11:25:52 -04:00
if ( HasClassFiltering ( ) )
{
// Filter out actions by node class
ClassActionList . RemoveAllSwap ( [ this ] ( UBlueprintNodeSpawner * InAction )
{
return ! IsClassAllowed ( InAction - > NodeClass . Get ( ) , EPermissionsContext : : Node ) ;
} ) ;
}
2014-08-08 15:35:56 -04:00
}
2014-08-23 20:16:29 -04:00
else
{
ActionRegistry . Remove ( Class ) ;
}
2014-07-09 12:17:42 -04:00
}
2014-10-10 17:48:56 -04:00
// blueprints are handled in RefreshAssetActions()
if ( ! bIsInitializing & & ! bIsBlueprintClass )
{
EntryRefreshDelegate . Broadcast ( Class ) ;
}
2014-07-09 12:17:42 -04:00
}
2014-08-11 18:39:28 -04:00
//------------------------------------------------------------------------------
2014-09-19 18:20:43 -04:00
void FBlueprintActionDatabase : : RefreshAssetActions ( UObject * const AssetObject )
2014-08-11 18:39:28 -04:00
{
2022-07-01 14:16:41 -04:00
TRACE_CPUPROFILER_EVENT_SCOPE ( FBlueprintActionDatabase : : RefreshAssetActions ) ;
2014-08-23 20:16:29 -04:00
using namespace BlueprintActionDatabaseImpl ;
2018-05-23 21:04:31 -04:00
// this method is very expensive and is only for blueprint editor functionality
// it should remain that way as *greatly* increases cook times, etc!
if ( IsRunningCommandlet ( ) )
{
return ;
}
2014-08-23 20:16:29 -04:00
FActionList & AssetActionList = ActionRegistry . FindOrAdd ( AssetObject ) ;
2015-02-02 13:08:06 -05:00
for ( UBlueprintNodeSpawner * Action : AssetActionList )
{
// because some asserts expect everything to be cleaned up in a
// single GC pass, we need to ensure that any previously cached node templates
// are cleaned up here before we add any new node spawners.
Action - > ClearCachedTemplateNode ( ) ;
}
2014-08-23 20:16:29 -04:00
AssetActionList . Empty ( ) ;
2018-11-14 19:05:13 -05:00
if ( ! IsObjectValidForDatabase ( AssetObject ) )
2015-04-01 15:47:23 -04:00
{
return ;
}
2022-06-30 11:25:52 -04:00
if ( ! IsClassAllowed ( AssetObject - > GetClass ( ) , EPermissionsContext : : Asset ) )
{
return ;
}
2014-09-19 18:20:43 -04:00
UBlueprint * BlueprintAsset = Cast < UBlueprint > ( AssetObject ) ;
if ( BlueprintAsset ! = nullptr )
2014-08-23 20:16:29 -04:00
{
2014-09-19 18:20:43 -04:00
AddBlueprintGraphActions ( BlueprintAsset , AssetActionList ) ;
if ( UClass * SkeletonClass = BlueprintAsset - > SkeletonGeneratedClass )
2014-08-23 20:16:29 -04:00
{
GetClassMemberActions ( SkeletonClass , AssetActionList ) ;
}
2014-09-19 18:20:43 -04:00
Copying //UE4/Dev-AnimPhys to //UE4/Dev-Main (Source: //UE4/Dev-AnimPhys @ 4062005)
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4005617 by Danny.Bouimad
Fixing TM-AnimPhys lighting so it works on all platforms
#jira UEENGQA-19924
Change 4014898 by Aaron.McLeran
Adding simple delay feature
Change 4025071 by Lina.Halper
Fix and more potential fix for invalid bone index issue
http://crashreporter/Buggs/Show/2052839
http://crashreporter/Crashes/Show/46656562
#jira: UE-51931
Change 4042493 by Lina.Halper
Fix issue with sequence evaluator to handle properly when jumps from end to front or front to end
#jira: UE-58429
Change 4042892 by Lina.Halper
Fix issue with being able to drag/drop montage onto anim track in sequencer
#jira: UE-57863
Change 4043553 by Ethan.Geller
#jira UE-58340 Handle calls to FVoiceCaptureWindows::GetVoiceData outside of existing data calls. #rb none
Change 4043613 by Lina.Halper
Fix issue with incorrect usage of staticclass
#jira: UE-54413
Change 4044069 by James.Golding
PR #4455: Add FAnimNode_StateMachine subclassing support. (Contributed by redfeatherplusplus)
#jira UE-54599
Change 4044070 by James.Golding
PR #4349: Final points on a line test were broken, changed Plane.PlaneDot to FM. (Contributed by DSDambuster)
#jira UE-53554
Change 4044072 by James.Golding
Add ENGINE_API to UPhysicsHandleComponent so it can be subclassed
#jira UE-56397
Change 4044073 by James.Golding
PR #4611: Expose a few API's so it's possible to make custom anim graph nodes using these objects. (Contributed by ill)
#jira UE-57004
Change 4044075 by James.Golding
PR #4618: Bugfix: typo in path for CustomMeshComponent (case error) (Contributed by malavon)
#jira UE-57077
Change 4044077 by James.Golding
Add ClassGroup to some components
#jira UE-57587, UE-57609
Change 4044080 by James.Golding
PR #4515: Adding API export macro to ACableActor (Contributed by maxtunel)
#jira UE-55515
Change 4044082 by James.Golding
Remove unused CopySkinnedModelData function
#jira UE-57623
Change 4044083 by James.Golding
Fix per-poly collision for skel meshes. Make sure to call UpdateKinematicBonesToAnim if bEnablePerPolyCollision is set, even if no bodies
Integration of CL 3971421 from Release-4.19 stream
#jira UE-56405
Change 4044084 by James.Golding
Add option to preview 'fixed bounds' in SkelMesh editors.
Change 4044086 by James.Golding
Remove unused RigidInfluenceIndex from CPU skinning code
Change 4044310 by James.Golding
Roll back changes to make PhysX cool fails a log instead of warning (CL 3995372, UE-56466), now that content is fixed
Change 4044416 by Lina.Halper
Provide BP interface to get curve list of names
#jira: UE-52623
Change 4044419 by Lina.Halper
added notification for updating pose asset
#jira: UE-56233
Change 4046929 by Ethan.Geller
#jira none add my developer folder to QAGame. #fyi dan.reynolds
Change 4047064 by Ethan.Geller
[Dev-AnimPhys] #jira UE-57890 add additional binaries for Steam Audio to LibPhonon.Build.cs. #rb none
Change 4047564 by Lina.Halper
Fix issue of not regenerating when reimport mesh
#jira: UE-58284
Change 4047630 by Ethan.Geller
Fix syntax error in libPhonon. #jira none #rb none
Change 4048050 by Thomas.Sarkanen
Allowed "Follow Bone" to be popped out of the menu into the viewport
This allows for quick re-selection of the bone to follow, avoiding multiple clicks
Tweaks and extends the "pinned command list" system to allow dynamic text in labels and labels to be hidden.
#jira UE-53070 - Follow bone - Follow selected bone
Change 4048064 by Thomas.Sarkanen
Validate any bone references during compilation
Bone references that are set to something other than NAME_None will be verified against the skeleton.
Updated various anim nodes to call the base class ValidateAnimNodeDuringCompilation
#jira UE-55680 - Anim graph nodes that use FBoneReference all need validation in ValidateAnimNodeDuringCompilation
Change 4048468 by James.Golding
PR #4319: Allow UAnimNotify_PlayMontageNotify to be inherited by other dlls (Contributed by DSDambuster)
#jira UE-53390
Change 4048470 by James.Golding
Implement ApplyWorldOffset to CableComponent, to handle origin shifting
#jira UE-53560
Change 4048471 by James.Golding
PR #4396: fix cachebones for subclasses of FAnimNode_SkeletalControlBase (Contributed by tmiv)
#jira UE-53799
Change 4048474 by James.Golding
PR #4423: Rename confusing argument in LineBoxIntersection (Contributed by Hybrid0)
#jira UE-54145
Change 4048485 by James.Golding
Fix compile error display from PoseDriver node
#jira UE-58306
Change 4048489 by James.Golding
Finish support for ProceduralMeshComponent supporting multiple UV channels
#jira UE-54049
Change 4048678 by Thomas.Sarkanen
Allowing blend space samples to be optionally moved off-grid
Grid samples are now each optionally snapped.
#jira UE-56116 - Allow blend spaces to optionally use off-grid sample points
Change 4048773 by Lina.Halper
Support pose factory with name input
#jira: UE-55859
Change 4048844 by David.Hill
Material Proxy Settings
Updating the max on the material proxy texture size - old value could cause int32 overflow.
#jira: UE-55441
Change 4049464 by Lina.Halper
update curve is expensive, and we're doing multiple times with same curve sets. I'm changing it so that it only updates main, and copy from main instance to sub/post.
#jira: UE-58459
Change 4050939 by Aaron.McLeran
PR #4649: Activated reverbs will now take priority when world settings are used (i.e. no volume proxy is in use) (Contributed by Brandon-Wilson)
#jira UE-57546
Change 4050954 by Aaron.McLeran
PR #4594: Added class type to allow inherited versions of UAudioComponents to be created (Contributed by korypostma)
#jira UE-56454
Change 4050960 by Aaron.McLeran
Attempt to fix linux build.
Change 4051247 by James.Golding
Fix ProcMeshComp UpdateSection not copying all UV sets
Add test case for ProcMeshComp with multiple UVs
#jira UE-54049
Change 4051250 by James.Golding
Add bUseHighPrecisionTangentBasis option to SkeletalMesh
Change SkeletalMesh source data to store tangents at higher precision
#jira UE-58525
Change 4051616 by Thomas.Sarkanen
Mass scale is no longer incorrectly clamped
This now allows mass scales below 0.01 and above 100.
#jira UE-49572 - MassScale has some edge cases for skeletal mesh component and small numbers
Change 4051619 by Thomas.Sarkanen
Fixed notify drag/drop on high DPI displays
#jira UE-55690 - Animation Notifies Do Not Move Past the Center of Timeline On a High DPI Display
Change 4051626 by Thomas.Sarkanen
Fix anim dynamics debug rendering
#jira UE-53902 - Anim Dynamics node is missing wireframe simulation box in preview
#jira UE-57983 - GitHub 4674 : UE-57910 Fix the angular limits display issue while selecting the AnimDynamics node
Change 4051628 by Thomas.Sarkanen
Constraints and bodies now rotate in their own local space in the physics asset editor
When local coordinate system is applied
#jira UE-50345 - rotating constraints or bodies in Phat with local axis
Change 4051634 by Thomas.Sarkanen
Automatic rules for state transitions are now shown in tooltips
#jira UE-57689 - Animation State Machine Transitions that use bAutomaticRuleBasedOnSequencePlayerInState, should indicate that in the transition
Change 4051636 by Thomas.Sarkanen
NotifyTriggerChance is now hidden for nodify states as it has no effect
#jira UE-55351 - NotifyTriggerChance should be grayed out for UAnimNotifyState
Change 4051669 by Thomas.Sarkanen
Fixed accidental operation of pinned commands when closing them
#jira UE-54051 - Unpinning settings will toggle the next setting
Change 4051671 by Thomas.Sarkanen
Fix crash importing skeletal mesh with no vertices
Not a fix for the jira, but found while investigating
#jira UE-56330 - FBX Files Do Not Import After Using the Facial Anim Importer Unless Project is Reopened
Change 4051684 by James.Golding
Fix high precision tangents when CPU skinning and mesh merging
Remember bExistingUseHighPrecisionTangentBasis when re-importing SkelMesh
#jira UE-58525
Change 4051686 by James.Golding
PR #4297: Output animation name with ensure() - useful when debugging (Contributed by DSDambuster)
#jira UE-53259
Change 4051801 by Jurre.deBaare
A BlendSpace that puts the same asset on samples can stop its own animation on Switch
#fix Ensure that we don't cause divide-by-zero situations when sampling blendspace data
#jira UE-54030
Change 4051806 by Jurre.deBaare
Fix geometry cache reimport + serialization issues
Change 4051807 by Jurre.deBaare
Currently, it's not possible to assigned a material to a Geometry Cache .uasset
#fix EditAnywhere rather than VisibleAnywhere
#jira UE-58212
Change 4051809 by Jurre.deBaare
GeomCache: Crash/Bug: When importing file
#fix Ensure that we have a valid first frame when trying to import a sequence, if not error-out
#jira UE-58285
Change 4051813 by Jurre.deBaare
GeomCache: Bug: Normals Broken
#jira UE-58287
GeomCache - Normals are Bad on Import
#jira UE-58283
#fix ensure that we triangulate mesh attributes when necessary
#misc per-attribute indices check
Change 4051816 by Jurre.deBaare
Alembic QOL
- Fix issue with reimport object flags not being applied
- Now also store sampling data as part of Alembic asset import data
Change 4051817 by Jurre.deBaare
PR #4550: Fixes bug where "Merge Actors" or HLOD proxies result in too many mesh sections (Contributed by trond)
#fix Integrated pull-request in different form
#jira UE-55976
Change 4051818 by Jurre.deBaare
Emissive isn't baked correctly in TM-MeshbakeMap
#fix ensure that we OR and Max the material flags and emissive scale
#jira UE-54889
Change 4051819 by Jurre.deBaare
Crash on project load when GeometryCache plugin is disabled
#fix No longer force-load the geometry cache module as it was moved to be a plugin
#jira UE-57875
Change 4051820 by Jurre.deBaare
CLONE - Editor crash when Propagating Vertex Colors to Asset's source mesh
#fix IsValidIndex check
#jira UE-57127
Vertex painting
Change 4051828 by Jurre.deBaare
Merging negative-scaled actors breaks materials
#fix Make sure we also reverse the section indices when a static mesh has a mirrored transform
#jira UE-56953
Change 4051834 by Jurre.deBaare
Unclear warnings when generating clusters in persistent level when sublevels have HLOD disabled
#fix improved warning text + added uobject link to level in content browser
#jira UE-55734
Change 4051993 by Jurre.deBaare
Update Alembic automated test ground truth
#jira none
Change 4052937 by James.Golding
Remove now-unused version (merged change to skel source data from Main instead)
Change 4053291 by Aaron.McLeran
Fix for CIS
#jira none
Change 4053375 by Aaron.McLeran
#jira UE-58716 Allow ability to bypass volume-weighting with using sound wave priority
Change 4057170 by Thomas.Sarkanen
Fix shadow variable warning
#jira UE-58806 - Linux: Shadow Variable Warnings building Editor - PhysicsAssetEditorEditMode.cpp
Change 4057653 by Lina.Halper
Fix the issue with showing same item multiple times when opening control rig blueprint many times
#jira: UE-58107
Change 4057701 by Jurre.deBaare
//UE4/Dev-AnimPhys - Step 'Run Automated Tests' has completed with 13 Errors
#fix reupdate alembic ground truths, little bit of a weird state
#jira UE-58818
Change 4057710 by Ethan.Geller
[Dev-AnimPhys] #jira UE-58004 Early exit if finish was called before StartSubmixRecording. #rb Aaron.McLeran
Change 4059295 by Ethan.Geller
#jira UE-58004 Reduce logs from fatal to error, fix serialize crash. #rb aaron.mcleran
Change 4061061 by Aaron.McLeran
Fixing animphys build from recent merge from main.
#jira UE-58909
Change 4053154 by Aaron.McLeran
#jira UE-58708 Fix to mic component to reduce clicks/pops on mic input.
Fix was to simplify the way audio is copied from mic input. This change was used on the GDC demo floor for a number of features.
[CL 4062611 by Aaron McLeran in Main branch]
2018-05-09 18:45:58 -04:00
FBlueprintActionDatabaseRegistrar Registrar ( ActionRegistry , UnloadedActionRegistry , ActionPrimingQueue ) ;
if ( ! bIsInitializing )
{
// if this a call to RefreshAssetActions() from somewhere other than
// RefreshAll(), then we should only add actions for this class (the
// node could be adding actions, probably duplicate ones for assets)
Registrar . ActionKeyFilter = BlueprintAsset - > GeneratedClass ;
}
BlueprintAsset - > GetInstanceActions ( Registrar ) ;
2015-07-22 18:27:12 -04:00
UBlueprint : : FChangedEvent & OnBPChanged = BlueprintAsset - > OnChanged ( ) ;
UBlueprint : : FCompiledEvent & OnBPCompiled = BlueprintAsset - > OnCompiled ( ) ;
2014-09-19 18:20:43 -04:00
// have to be careful not to register this callback twice for the
// blueprint
2015-07-22 18:27:12 -04:00
if ( ! OnBPChanged . IsBoundToObject ( this ) )
2014-09-19 18:20:43 -04:00
{
2015-07-22 18:27:12 -04:00
OnBPChanged . AddRaw ( this , & FBlueprintActionDatabase : : OnBlueprintChanged ) ;
}
if ( ! OnBPCompiled . IsBoundToObject ( this ) )
{
OnBPCompiled . AddRaw ( this , & FBlueprintActionDatabase : : OnBlueprintChanged ) ;
2014-09-19 18:20:43 -04:00
}
2014-08-23 20:16:29 -04:00
}
2015-04-14 09:16:22 -04:00
UWorld * WorldAsset = Cast < UWorld > ( AssetObject ) ;
if ( WorldAsset & & WorldAsset - > WorldType = = EWorldType : : Editor )
2015-04-11 10:23:56 -04:00
{
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3510040)
#lockdown Nick.Penwarden
=====================================
MAJOR FEATURES + CHANGES
=====================================
Change 3459524 by Marc.Audy
Get/Set of properties that were previously BPRW/BPRO should error when used
#jira UE-20993
Change 3460004 by Phillip.Kavan
#jira UE-45171 - Fix C++ compilation failures during packaging caused by nativizing a Blueprint that overrides a native function with a 'TSubclassOf' parameter or return value.
Change summary:
- Modified FKismetCompilerContext::CreateParametersForFunction() to pass the 'CPF_UObjectWrapper' flag through to new function parameter properties during Blueprint compilation.
Change 3461210 by Phillip.Kavan
#jira UE-44505 - Fix occasional Blueprint editor crashes that could occur while rebuilding the context menu from the action registry.
Change summary:
- Modified FBlueprintActionDatabase::FActionRegistry to use an FObjectKey as the key type. This allows us to test entries for UObject validity before rebuilding context menu items based on the action database.
- Changed FBlueprintActionInfo::CachedOwnerClass to be a TWeakObjectPtr rather than a raw UClass* since it's based on the ActionOwner, which could potentially become invalid after the OwnerClass has been cached.
- Modified FBlueprintActionDatabase::RefreshAssetActions() to exclude World assets if the WorldType is not EWorldType::Editor. This eliminates an issue with unreferenced "inactive" GC'd world objects being left in the BP action registry after cooking, at which point the keys could become invalid.
- Added FBlueprintActionDatabase::DeferredRemoveEntry() to allow for scheduling removal of entries from outside of the database if they are known to be invalid.
- Modified FBlueprintActionDatabase::Tick() to handle deferred entry removals.
- Modified FBlueprintActionMenuBuilder::RebuildActionList() to both test actions for validity before building menu items and schedule removal of invalid actions on the next tick.
Notes:
- Alternatively we could just include UObject keys in the database's AddReferencedObject impl, but that would then prevent objects from ever being GC'd if they are not explicitly removed. For most entries the action database takes the approach of explicitly removing entries via delegate when the UObject is destroyed, so I chose to use a TWeakObjectPtr instead so that any entries that may not be getting explicitly removed via delegate will now simply become invalidated if the UObject key is GC'd due to not being referenced. I also set it up to clean and remove any entries (along with any associated node spawners) that are found to be invalid the next time we open the BP editor.
Change 3461373 by Lukasz.Furman
fixed async navmesh rebuilds not kicking in for requests from navdata.bForceRebuildOnLoad
#jira UE-44231
Change 3461409 by Lukasz.Furman
fixed reenabling automatic navmesh generation in Editor Preferences
#ue4
Change 3461550 by Ben.Zeigler
#jira UE-45328 Fix local variable support for Redirectors and other save-time validation. We need to run the local variables to UProperty and back at save time
Add new flag PPF_SerializedAsImportText which is used for BP pins/default values and indicates that something has been serialized as import text and so needs to handle string asset redirectors
Change 3462625 by Zak.Middleton
#ue4 - Fix InterpToMovementComponent not setting velocity on the object it moves. Fix movement rate when substepping enabled (other related fixes to come).
github PR #3620
Change 3462796 by Dan.Oconnor
Fix for spamming BroadcastBlueprintReinstanced and for creating CDO at wrong time when compiling FrontEnd.uasset in OrionGame
#jira UE-45434
Change 3462995 by Ben.Zeigler
#jira UE-16941 Fix it so Load Asset node works with a literal value as well as a connected pin
Change 3463099 by Ben.Zeigler
#jira UE-45471 Allow abstract base classes for primary assets
Change 3464809 by Marc.Audy
Expose FVector2D / FVector2D to blueprints
#jira UE-45427
Change 3467254 by Mieszko.Zielinski
Added an AI helper BP function that supplies caller with a copy of navigation path given controller is currently following #UE4
Change 3467644 by Dan.Oconnor
Fix for cook issues in ocean when using compilation manager, one issue caused by bad dependencies list, one issue caused by lack of subobject mapping in archetype reinstancing.
#jira UE-45443, UE-45444
Change 3468176 by Dan.Oconnor
Fix dependent blueprints being marked dirty when a blueprint is compiled
Change 3468353 by Michael.Noland
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
Change 3470532 by Dan.Oconnor
Re-enable compilation manager
Change 3470572 by Dan.Oconnor
Fix for pin paramters resetting when an archetype was reinstanced
#jira UE-45619
#rnx
Change 3471949 by Mason.Seay
Adding Primary Assets for testing
Change 3472074 by Ben.Zeigler
#jira UE-45140 Convert iterative cooking to use the Asset Registry as it's only mode, remove old hash and timestamp versions. This allows deleting the entire PackageDependencyInfo module
Change the asset registry iteration to not compute a hash at all, and instead store the script package guids in it's cache.
Expose bIgnoreIniSettingsOutOfDateForIteration and bIgnoreScriptPackagesOutOfDateForIteration in cooker settings, affects rather to listen to ini/script changes when doing iterative cooking
Change 3472079 by Ben.Zeigler
With new incremental cook options, change Fortnite to never care about ini settings, but do care about code changes. This can be changed but from previous discussions we wanted to be more safe than fast here
Change 3473429 by Lukasz.Furman
changed path following update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473476 by Lukasz.Furman
changed crowd simulation path update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473663 by Ben.Zeigler
Fix it so base k2node registers framework version, this is needed for the assetptr fixup I previously added
Change 3473679 by Mason.Seay
Slight cleanup of test map and added ability to teleport across level for easy navigation
Change 3473712 by Marc.Audy
Do default value validation against the actual value of the default entry of an enum rather than the serialized empty autogenerated default value
Change 3474055 by Marc.Audy
When nodes are reconstructed any pins that were previously linked or set to non-default values that have been removed will no longer simply vanish, but instead will remain in an Orphaned state until dealt with.
#jira UE-41828
Change 3474119 by mason.seay
Tweaked Force Feedback test
Change 3474156 by Marc.Audy
Actually enable orphan pin retention
Change 3474382 by Ben.Zeigler
Class.h Header and comment cleanup. Started this because IsChildOf did not have a comment and it's usage is a bit confusing
Change 3474386 by Ben.Zeigler
Close popup window when adding asset class to audit window
Change 3474491 by Ben.Zeigler
Remove ability for Worlds to not be saved as assets, this has been the default since 2014.
Change 3475363 by Marc.Audy
Alt-click now works with orphaned pins
#jira UE-45699
Change 3475523 by Marc.Audy
Fixup Fortnite and Paragon content for orphaned pin errors and warnings
Change 3475623 by Phillip.Kavan
#jira UE-45477 - Fix an EDL assertion on load in a nativized build with one or more Actor subobjects instanced via the EditInlineNew UI in the BP class defaults property editor.
Change summary:
- Modified FEmitDefaultValueHelper::OuterGenerate() to emit code to construct/initialize instanced subobject values that do not have the RF_DefaultSubObject flag set, and also to recursively handle nested subobjects for those values.
- Modified FEmitDefaultValueHelper::HandleInstancedSubobject() to alternatively emit a 'NewObject' assignment statement rather than a 'CreateDefaultSubobject' statement if only RF_ArchetypeObject is set on the source object value.
Change 3476008 by Dan.Oconnor
Fix for failing to preload our super class's subobjects. Effectively moving UBlueprint::ForceLoad calls earlier in loading process. This only results in data resetting to your parent's parent's default value from your parent's default value.
#jira UE-18765
Change 3476115 by Dan.Oconnor
Fix missing category information for inherited functions when using compilation manager
#jira UE-45660
#rnx
Change 3476577 by Lukasz.Furman
added early outs from navmesh layer generation when there's no walkable cells or contours to avoid allocating 0 bytes by next generation steps (behavior differs between platforms)
#ue4
Change 3476587 by Phillip.Kavan
#jira UE-45517 - Fix a regression in which dragging UMG widgets around in the designer view results in redundantly-compounded BP class properties and context menu actions.
Change summary:
- Modified SDesignerView::ClearDropPreviews() to move the widget that was removed from the tree into the transient package. This ensures that FWidgetBlueprintCompiler::CreateClassVariablesFromBlueprint() won't pick them up.
- Modified SDesignerView::ProcessDropAndAddWidget() to also consider any widgets not added to the 'DropPreviews' array as being transient (i.e. also move them into the transient package since they were not added to the tree).
Notes:
- The regression was introduced by the changes in CL# 3410168, and was merged to Main at CL# 3431398.
#rnx
Change 3476723 by Dan.Oconnor
Match old behavior wrt updating implemented interfaces in blueprints - this logic from FKismetEditorUtilities::CompileBlueprint was missing in compilation manager
#jira UE-45468
#rnx
Change 3476948 by Michael.Noland
Framework: Changed AActor::FindComponentByClass (and AActor::GetComponentByClass by extension) to return nullptr when passed a nullptr class, rather than crashing
Change 3476970 by Ben.Zeigler
Fix bug I introduced in 4.16 where assigning assets to multiple chunks did not work properly
Change 3477536 by Marc.Audy
Don't display default value box on linked orphaned input pins
Change 3477835 by Marc.Audy
Fix pins orphaned by deletion of an entry in a user-defined enum disappearing instead of remaining connected
#jira UE-45754
Change 3478027 by Marc.Audy
Minor performance optimization
#rnx
Change 3478198 by Phillip.Kavan
#jira UE-42431 - Remove an unnecessary ensure() when pasting an event node.
Change summary:
- Modified UEdGraphSchema_K2::CreateSubstituteNode() to no longer ensure() that we have a valid PreExistingNode; it's only used for logging when a substitute node is created in response to a conflict with an existing node.
Change 3478485 by Marc.Audy
Eliminate extraneous error messages about orphaned pins on get/set nodes
#jira UE-45749
#rnx
Change 3478756 by Marc.Audy
Fix fallout from changes to DoesDefaultValueMatchAutogenerated for user defined enums
#jira UE-45721
#rnx
Change 3478926 by Marc.Audy
Non-blueprint type structs can no longer be made/broken
Non-blueprint visible properties in structs will no longer have pins created for them
#jira UE-43122
Change 3478988 by Marc.Audy
DeltaTime for a tick function with a tick interval is now correct after disabling and then reenabling the tick function.
#jira UE-45524
Change 3479818 by Marc.Audy
Allow ctrl-drag off of orphan pins
#jira UE-45803
Change 3480214 by Marc.Audy
Modifications to user defined enumerations are now transacted
#jira UE-43866
Change 3480579 by Marc.Audy
Maintain all pin properties through transactions.
#rn Reference pins that are removed and then restored via undo now correctly have the diamond icon instead of the standard circle.
Change 3481043 by Marc.Audy
Make/Break of structs does not depend on having blueprint exposed properties.
Splitting of a struct pin still requires blueprint exposed properties.
#jira UE-45840
#jira UE-45831
Change 3481271 by Ben.Zeigler
Fix the AssetManager chunking code to use ChunkDependencyInfo instead of a hardcoded check for chunk 0
Clean up ChunkDependencyInfo and make it properly public
Move ShouldSetManager to be WITH_EDITOR
Ported from WEX branch
#RB peter.sauerbrei
Change 3481373 by Dan.Oconnor
Reduce reliance on expensive FindDelegateSignature. 3275922 made warnings about a ambiguous search more likely as it preserved names of members on the REINST_ classes
#jira UE-45704
Change 3481380 by Ben.Zeigler
Change it so Struct and Object AssetRegistrySearchable properties do not show up in content browser, they are not helpful
Change 3482362 by Marc.Audy
Fix properties not exposed to blueprint warnings for input properties on function graphs.
#jira UE-45824
Change 3482406 by Ben.Zeigler
#jira UE-45883 Fix Switch On Gameplay Tag Container node, and add switch nodes to TagCheck map
Change 3482498 by Ben.Zeigler
Attempt to fix hot reload issues with Asset Manager. We need to reset and re-acquire the asset classes when rescanning, as they may be pointing to the replaced class
Change 3482517 by Lukasz.Furman
fixed smart navlink update functions removing important flag
#jira UE-45875
Change 3482538 by Marc.Audy
When comparing float, vector, and rotator values for whether the the default matches the autogenerated do not use the string compare because differences in use of decimal or number of 0s after decimal are then considered not the same float
#jira UE-45846
Change 3482773 by Marc.Audy
Don't show default value or pass by reference for exec pins
#jira UE-45868
Change 3482791 by Ben.Zeigler
#jira UE-45800 Correctly dirty game mode blueprint when changing player controller/etc classes from game mode customization
Fix it so MarkBlueprintAsStructurallyModified calls MarkBlueprintAsModified as several fixes were only in the second function
Change 3483131 by Zak.Middleton
#ue4 - InterpToMovementComponent:
- Fix velocity not zeroed when interpolation stops.
- Various fixes when calculating velocity and time when substepping is enabled.
- Improve accuracy of interpolation when looping and there is time remaining after the loop event is hit. Consume the remainder of the time after the event back in the loop (similar to handling a blocking impact).
#jira UE-45690
Change 3483146 by Phillip.Kavan
#jira UE-38358 - Propagate 'const' function flag from interface Blueprint to implementing Blueprints.
Change summary:
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() to call SkeletalRecompileChildren() on dependent BPs when the target is an interface BP.
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified::FRefreshHelper::SkeletalRecompileChildren() to set child BP status to BS_Dirty after compiling.
- Modified ConformInterfaceByName() (FBlueprintEditorUtils) to use the interface's skeleton class for function iteration as well as to match the Function Entry node's 'const' setting to the interface UFunction's signature.
Change 3483340 by Ben.Zeigler
Fix issue querying asset registry after a hot reload, make sure pending kill objects are never considered to be Assets
Change 3483548 by Michael.Noland
Epic Friday: Playing around with some prototype traps
Change 3483700 by Phillip.Kavan
Fix CIS cook crash introduced by last submit.
#rnx
Change 3485217 by Ben.Zeigler
#jira UE-45519 Fix regression introduced in 4.16 where it would no longer cook all maps when no explicit maps were specified in ini or game callback. Moved the code that detects changes before culture/default map code and hardened it to deal with the case where some engine packages were already in the list before it entered the function
Change 3485367 by Dan.Oconnor
Avoid adding mappings to anim node when creating variables on the skeleton class and using the compilation manager
#jira UE-45756
Change 3485565 by Ben.Zeigler
#jira UE-45948 Fix compilation manager to properly reset variable default values after promoting a pin to local variable
Change 3485566 by Marc.Audy
Fix crashes caused by undo/redo of user defined struct changes
#jira UE-45775
#jira UE-45781
Change 3485805 by Michael.Noland
PR #3459: Fix for world origin shifting and SpringArmComponent location lag (Contributed by michail-nikolaev)
#jira UE-43747
Change 3485807 by Michael.Noland
PR #3485: Added additional textures field to paper 2d tileset class (Contributed by gryphonmyers)
#jira UE-44041
Change 3485811 by Michael.Noland
Framework: Fixed a bug in FStreamLevelAction::MakeSafeLevelName to avoid appending the PIE prefix multiple times (fixes functions like Unload Streaming Level when passed a full package name from an instanced streaming level)
Change 3485829 by Michael.Noland
Framework: Made GetWorldAssetPackageFName BlueprintCallable so instanced levels can be unloaded
Change 3485830 by Michael.Noland
PR #3568: add API declarations to ALevelStreamingVolume methods (Contributed by kayama-shift)
#jira UE-45002
Change 3486039 by Michael.Noland
PR #3495: UE-44014: Refreshing node error fixes (Contributed by projectgheist)
- Empty out the ErrorMsg when a node gets refreshed to prevent the same error messages from compounding
- Added support for split pins in UK2Node_Event::IsFunctionEntryCompatible
- Added a missing check for the delegate pin name on the entry node part of UK2Node_Event::IsFunctionEntryCompatible
#jira UE-44014
Change 3486093 by Michael.Noland
PR #3379: Added GAMEPLAYABILITIES_API to all Ability Tasks. (Contributed by ryanjon2040)
#jira UE-42903
Change 3486139 by Michael.Noland
Blueprints: Added new config options for execution wire thickness when not debugging (DefaultExecutionWireThickness) and data wire thicknesses (DefaultDataWireThickness) to the Graph Editor Settings page
#rn
Change 3486154 by Michael.Noland
Framework: Speculative fix for CIS error about FStructOnScope
#rnx
Change 3486180 by Dan.Oconnor
Better match old logic for determining when to skip data only compile
#jira UE-45830
Change 3487276 by Marc.Audy
Fix crash when using Setter with a locally scoped variable
#rnx
Change 3487278 by Marc.Audy
Ensure that pin change notifications occur on all pin breaks unless it is part of a node being garbage collected
Change 3487658 by Marc.Audy
Ensure that child actor template is created for subclasses
#jira UE-45985
Change 3487699 by Marc.Audy
Move non-templated elements out of FArchiveReplaceObjectRef and put them in FArchiveReplaceObjectRefBase
Change 3487813 by Dan.Oconnor
Asset demonstrating a crash
Change 3488101 by Marc.Audy
Fix crash with spawn/construct actor/object from class nodes when they no longer had any pins.
Correctly orphan pins when a node goes to 0 pins.
Change 3488337 by Marc.Audy
Editable pin base should not manually remove pin and let reconstruct node and rewire pins do their job
#jira UE-46020
Change 3488512 by Dan.Oconnor
ConstructObject nodes and SubInstances nodes use skeleton class when compilation manager can provide it
#jira UE-45830, UE-45965
#rnx
Change 3488631 by Michael.Noland
Framework: Fixed a crash when loading a blueprint with a parent class of ALevelBounds caused by trying to register the class default object with a non-existent level
#jira UE-45630
Change 3488665 by Michael.Noland
Blueprints: Improve the details panel customization for optional pin nodes like Struct Member Get/Set
- The category, raw name, and tooltip of the property are now included as part of the filter text as well
- The property tooltip is now displayed when hovering over the property name
- Code updated to use GET_MEMBER_NAME_CHECKED() where appropriate
Change 3489324 by Marc.Audy
Fix recursion causing stack crash
#jira UE-46038
#rnx
Change 3489326 by Marc.Audy
Fix cooking crash
#jira UE-46031
#rnx
Change 3489687 by mason.seay
Assets for testing orphan pins
Change 3489701 by Marc.Audy
Back out changelist 3487278 and 3489443 and make targetted changes for fixing up orphan pin cases where changing connections doesn't remove the pin.
#jira UE-46051
#jira UE-46052
#rnx
Change 3490352 by Dan.Oconnor
Fix for missing WidgetTree on Skeleton class - just look directly at the WidgetBlueprint
#jira UE-46062
Change 3490814 by Marc.Audy
Make callfunction/macro instances save all pins in orphan state more similar to previous behavior
#rnx
Change 3491022 by Dan.Oconnor
Properly clean up 'Key' property when we fail to create a value property
#jira UE-45279
Change 3491071 by Ben.Zeigler
#jira UE-45981 Fix rotation issues, vector/rotator pins with empty strings were not matching due to uninitialized memory.
Change 3491244 by Michael.Noland
Blueprints: Add compile time message back to the output log (will not auto-open the output log if there were no warnings/errors)
#jira UE-32948
Change 3491276 by Michael.Noland
Blueprints: Fixed some bugs where a newly added item would fail show up in the "My Blueprints" tree if there was a filter active (e.g., when promoting a variable)
- Centralized the logic for clearing the filter so it happens when we try and fail to select the item, rather than ad hoc in various other places
- Made it only clear the filter if necessary, rather than (almost) always clearing it when adding an item
#jira UE-43372
Change 3491562 by Marc.Audy
Put back pin removal in to editable pin base and instead modify the pin destroy implementation to take down child split pins with it
#jira UE-46020
#rnx
Change 3491658 by Marc.Audy
Unify RemoveUserDefinedPin implementations. Use version that has break to avoid size change assert
#rnx
Change 3491946 by Marc.Audy
ReconstructSinglePin no longer destroys OldPin (avoids oprhaned sub pins being destroyed before reparented)
RewireOldPinsToNewPins now destroys OldPins at the end (calling code no longer reponsible)
DestroyImpl now prunes out SubPins that had already been trashed
#rnx
Change 3492040 by Marc.Audy
Discard exec/then pins from a callfunction that has been converted to a pure node
#rnx
Change 3492200 by Zak.Middleton
#ue4 - Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size.
Fixes possible regression from CL 3359561 that removed the Reset(...) entirely.
#jira UE-46012
Change 3492290 by Ben.Zeigler
#jira UE-46108 Fix StringLibrary Mid to never crash, Substring had already been fixed
Change 3492311 by Marc.Audy
Don't clear the pin type if what you're connecting to's pin type is wildcard
#rnx
Change 3492680 by Dan.Oconnor
Handle missing generated class when using compilation manager - tested by forcing compile of BP_ParentClassIsMissingType.uasset
Change 3492826 by Marc.Audy
Don't do pin connection list change notifications from DestroyPins while regenerating on load
#jira UE-46112
#rnx
Change 3492851 by Michael.Noland
Core: Fixed various crashes when using UObject::CallFunctionByNameWithArguments with non-trivial argument types by properly initializing the allocated parameters
Change 3492852 by Michael.Noland
Framework: Fixed a crash if ACharacter::FindComponentByClass was passed a nullptr class
Change 3492934 by Marc.Audy
Fix ensure and crash delete macro containing orphaned pin
#rnx
Change 3493079 by Dan.Oconnor
Fix for crash when opening ThirdPersonAnimBlueprint and ThirdPersonAnimBlueprint_Perf then clicking 'Compile' button in ThirdPersonAnimBlueprint editor. Make sure the convenience members in the derived compilers get set when we relink child classes (which requires making cdos, which requires PropagateValuesToCDO..)
#rnx
Change 3493346 by Phillip.Kavan
#jira UE-40560 - Fix a reported crash when pasting nodes between unrelated Blueprint graphs.
Change summary:
- Modified FEdGraphUtilities::PostProcessPastedNodes() to ensure() on a NULL pin entry; this will allow execution to continue while still alerting us since it is an unexpected result. Also added an 'else' case to then remove the NULL entry so that PostPasteNode() implementations don't all have to guard against NULL pin entries. When the node is reconstructed, the NULL entry will be replaced with the correct pin initialized to its default values.
- Modified UEdGraphPin::ImportTextItem() to add some additional logging to parse error cases when importing pin properties from source T3D text. Hopefully this gives us more information when this is encountered in the future.
Change 3493938 by Michael.Noland
Blueprints: Prevent issues with renaming event dispatchers to contain periods (this may be disallowed in the future, but they no longer become uneditable)
#jira UE-45780
Change 3493945 by Michael.Noland
Blueprints: Fixed GetDelegatePoperty typos
#rnx
Change 3493997 by Michael.Noland
Blueprints: Partially reverting changes from CL# 3319966 to reroute nodes, restoring their alignment but losing the symmetrical grab handle changes
#jira UE-45760
Change 3493998 by Dan.Oconnor
Fix rare crash in RefreshStandAloneDefaultsEditor when the blueprint editor is opened and a blueprint had errors in it
Note: I stumbled across this by running a unit test and then opening a blueprint in the BPE. CrashReporter indicates 3 crashes in the last 3 days
Change 3494025 by Michael.Noland
Engine: Deleted some dead code (DEBUGGING_VIEWPORT_SIZES)
#rnx
Change 3494026 by Michael.Noland
Blueprints: V0 of a BlueprintCallable/BlueprintPure function fuzzer
- Calls exposed methods with default parameters on classes it is able to spawn for now, which catches crashes due to null and /0 but not out of bounds issues or ones on classes it can't spawn due to classwithin, abstract, etc...
- Can be called using Test.ScriptFuzzing, won't be integrated into automated tests until it is more fully fleshed out and all known issues are addressed
#rnx
Change 3496382 by Ben.Zeigler
Fix ensure when launching editor with cook on the side and incremental cooking enabled. It now flushes the background asset gather when calling the sync load all assets if one is in progress
Change 3496688 by Marc.Audy
Avoid crashing in component instance data if (for some reason) the Actor's root component isn't properly set up
#jira UE-46073
Change 3496830 by Michael.Noland
Editor: Change FEditorCategoryUtils methods to take UStruct* instead of UClass*, as they are just reading metadata
#rnx
Change 3496840 by Michael.Noland
Framework: Remove the requirement for a local player in UCheatManager::CheatScript, so it can be be started from the server side (doesn't change the availability of the cheat manager, just allows things like the redundant "cheat cheatscript scriptname" to work)
Change 3497038 by Michael.Noland
Fortnite: Added UFortDeveloperSettings to allow developers to auto-run cheats in PIE (does not occur in -game or outside of WITH_EDITOR builds)
- You can specify a list of cheat commands to run when a pawn is possessed (also needs CL# 3496840 for cheatscripts)
- You can also specify a set of items to grant to your local inventory when it is created
Change 3497204 by Marc.Audy
Fix AbilitySystemComponent not being blueprint readable.
#rnx
Change 3497668 by Mieszko.Zielinski
Fixed a crash in BT editor when dealing with enum-typed Blackboard-keys pointing to enum values that have been deleted #UE4
#jira UE-43659
Change 3497677 by Mieszko.Zielinski
Added a community-suggested working solution to patching up dynamic navmesh after world offset #UE4
Also, fixed a crash related to navmesh rebuilding if generation was configured to lazily gather navigatble geometry
#jira UE-41293
Change 3497678 by Mieszko.Zielinski
Marked AbstractNavData class as transient #UE4
We never want to save it to levels
Change 3497679 by Mieszko.Zielinski
Made NavModifierVolume responsive to editor-time property changes #UE4
#jira UE-32831
Change 3497900 by Dan.Oconnor
Fix bad skel reference when using construct object from class, just limiting scope of 3491946. To reproduce the bug just nativize QA Game, including the TM-Gameplay level
#rnx
Change 3497904 by Dan.Oconnor
Use K2Node_Event::FindEventSignatureFunction in order when directly generating the skeleton generated class to get event params correct
#jira UE-46153
#rnx
Change 3497907 by Dan.Oconnor
Correctly set blueprint visibility flags on params for inherited functions when generating the skeleton class
#rnx
#jira UE-46186
Change 3498218 by mason.seay
Updates to pin testing BP's
Change 3498323 by Mieszko.Zielinski
Made UNavCollision instance assigned to StaticMesh not get re-created from scratch every single time any StaticMesh property changes #UE4
Recreation was resulting in some of the UNavCollision's properties not getting saved and the way we were recreating the nav collision could also interfere with undo buffers
#jira UE-44891
Change 3499007 by Marc.Audy
Allow systems to hook Pre and PostCompile to do custom behaviors
Change 3499013 by Mieszko.Zielinski
Made AbstractNavData class non-transient again #UE4
Implemented AbstractNavData instances' transientness in a different manner.
#jira UE-46194
Change 3499204 by Mieszko.Zielinski
Introduced CrowdManagerBase, an engine-level class that can be extended to implement custom crowd management #Orion
Extracted FRecastQueryFilter into a separate file, which will break some peoples' compilation.
#jira UE-43799
Change 3499321 by mason.seay
Updated bp for struct testing
Change 3499388 by Marc.Audy
Allow the compiler log to store off potential messages from earlier in the compile cycle (early validation), that can be committed later (for example once pruning is completed).
Change 3499390 by Marc.Audy
Generate the orphan pin error messages during EarlyValidation, but cache until the regular validation phase. This ensures all are generated, but only those that aren't pruned will be emitted.
#rnx
Change 3499420 by Michael.Noland
Engine: Introduced a new version of UEngine::GetWorldFromContextObject which takes an enum specifying the behavior on failures and updated all existing uses
The new version intentionally does not have a default value for ErrorMode, callers need to think about which variant of behavior they want:
- ReturnNull: Silently returns nullptr, the calling code is expected to handle this gracefully
- LogAndReturnNull: Raises a runtime error but still returns nullptr, the calling code is expected to handle this gracefully
- Assert: Asserts, the calling code is not expecting to handle a failure gracefully
- Deprecated UEngine::GetWorldFromContextObject(object, boolean) and changed the default behavior for the deprecated instances to do LogAndReturnNull rather than Assert, based on the real-world call pattern
- Introduced GetWorldFromContextObjectChecked(object) as a shorthand for passing in EGetWorldErrorMode::Assert
- Made UObject::GetWorldChecked() actually assert if it would return nullptr (under some cases the old function could silently return nullptr while reporting bSupported = true, so it neither ensured nor checked)
- Fixed a race condition in the 'is implemented' bookkeeping logic in GetWorld()/GetWorldChecked() by confining it to the game thread and added a check() to ImplementsGetWorld() to make it clear that it only works on the game thread
The typical recommended call pattern is to use something like:
if (UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull))
{
... Do something with World
}
Handling the failure case but requesting a log message (with BP call stack printed out) if it failed. This is now also the default behavior for old calls to UEngine::GetWorldFromContextObject(Object) (using the default value of bChecked=true), which is a behavior change but it matches how the function was being used in practice; the vast majority of call sites actually expected it to potentially fail and handled the nullptr case gracefully; very few places used the return value unguarded and wanted it to assert when passed a nullptr.
#jira UE-42458
Change 3499429 by Michael.Noland
Engine: Removed a bogus TODO (the problematic code had already been reworked)
#rnx
Change 3499470 by Michael.Noland
Core: Improved and corrected the comment for ensure()
- It doesn't crash when checking is disabled (and hasn't since UE3, maybe ever?)
- It now only fires once per ensure() by default, added a note about ensureAlways()
#rnx
Change 3499643 by Marc.Audy
Use TGuardValue instead of manually managing it
#rnx
Change 3499874 by Marc.Audy
Display <Unnamed> instead of nothing for Pins with blank display name in the compiler log
Change 3499875 by Marc.Audy
When changing function parameter types, don't orphan a pin on the function entry/exit nodes (but do at the call sites)
#jira UE-46224
Change 3499927 by Dan.Oconnor
UField::Serialize no longer serialize's its next ptr, UStruct::Serialize serializes all Children properties instead. This resolves a hard circular dependency between function libraries that EDL detected. It was resolved in an ad hoc way by the old linker
#jira UE-43458
Change 3499953 by Michael.Noland
Core: Created a variant of ensure that does runtime error logging without stopping in the debugger and some related functions that print a warning or error and may trigger a BP callstack (under the same rules as FFrame::KismetExecutionMessage)
- These are WIP and the API may change in the future, but are being used to fix various crashes found by fuzzing BP exposed functions
Change 3499957 by Michael.Noland
Animation: Added runtime errors for nullptr ControlRigs passed into BP methods
#rnx
Change 3499958 by Michael.Noland
Blueprints: Changed an ensure in UKismetNodeHelperLibrary::GetValidValue to a runtime error
#rnx
Change 3499959 by Michael.Noland
Engine: Downgrade various checks() to ensures() in the runtime asset cache functions exposed to Blueprints
Change 3499960 by Michael.Noland
AI: Changed UBTFunctionLibrary to not check/ensure if passed a null world context object
Change 3499968 by Michael.Noland
Editor: Fixed a couple of crashes in UEditorLevelUtils when passed nullptr arguments, and reformatted the entire file to fix widespread indentation issues
#rnx
Change 3499969 by Michael.Noland
Engine: Changed the verbosity of the failure log message of UEngine::GetWorldFromContextObject(..., LogAndReturnNull) from Warning to Error, so it always prints out a BP callstack
#rnx
Change 3499973 by Michael.Noland
Rendering: Fixed asserts in various UKismetRenderingLibrary methods if passed a nullptr for the WorldContextObject
- Also fixed flipped warnings in the failure cases for EndDrawCanvasToRenderTarget
Change 3499979 by Michael.Noland
Editor: Prevented a crash in UMaterialEditingLibrary::RecompileMaterial when passed a nullptr material
Change 3499984 by Michael.Noland
Physics: Prevented a crash in UTraceQueryTestResults::AssertEqual when passed in nullptr for Expected
Change 3499993 by Michael.Noland
Blueprints: Added validation when renaming variables, functions, components, multicast delegates, etc... to prevent names from containing some unacceptable characters
- This validation only kicks in when trying to rename an item, so bad names in existing content are 'grandfathered in'
- These bad names can cause bugs when working with content that contains these characters (e.g., names that contain a period cannot be found via FindObject<T>)
- Currently only . is banned, but eventually we may expand it to include all of INVALID_OBJECTNAME_CHARACTERS
Change 3500009 by Michael.Noland
Blueprints: Made the fuzzer skip classes declared in UnrealEd for now (some of the exposed methods change global state that can cause other tests to fail as the fuzzer isn't particularly sandboxed ATM)
#rnx
Change 3500011 by Michael.Noland
Android: Fixed a crash in UAndroidPermissionFunctionLibrary::AcquirePermissions when called with an empty array on non-Android platforms
Change 3500012 by Michael.Noland
Editor: Prevent a crash in UEditorTutorial::OpenAsset when passed a nullptr Asset
Change 3500014 by Michael.Noland
Engine: Changed FRuntimeAssetCacheFilesystemBackend::ClearCache(NAME_None) to not try to clear all cache directories (there is a separate no-args method for that)
Change 3500019 by Michael.Noland
Core: Fixed some more issues with CallFunctionByNameWithArguments and initializing / destroying parameters
- It was skipping the return value and incorrectly relying on the FirstPropertyToInit list which isn't set for by ref arguments
Change 3500020 by Michael.Noland
Automation: Prevent UFunctionalTestingManager::RunAllFunctionalTests and UFunctionalTestingManager* UFunctionalTestingManager::GetManager from crashing when a manager cannot be created (because we can't route to a world)
Change 3501062 by Marc.Audy
MakeArray AddInputPin is often used as part of node expansion, so need to move the transaction out of the function
Fix inability to undo/redo pin additions to sequence node
Add a K2Node_AddPinInterface to generalize the interface that K2Nodes implement to interact with SGraphNodeK2Sequence so it can be more generally used
#jira UE-46164
#jira UE-46270
Change 3501330 by Michael.Noland
AI: Fix an error on shutdown when the CDO of UAIPerceptionComponent tries to clean up (as it was never registered in the first place)
#jira UE-46271
Change 3501356 by Marc.Audy
Fix crash when multi-editing actor blueprints
#jira UE-46248
Change 3501408 by Michael.Noland
Core: Improve 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)
Change 3501457 by Phillip.Kavan
#jira UE-46054 - Fix crash when launching a packaged build that includes a nativized Blueprint instance with a ChildActorComponent instanced via an AddComponent node.
Change summary:
- Removed UK2Node_AddComponent::PostDuplicate(). This eliminates the creation of redundant component templates that were being unnecessarily created during the Blueprint duplication that precedes the nativization pass.
- Modified SMyBlueprint::OnDuplicateAction() to call MakeNewComponentTemplate() in response to a graph duplication action within the same Blueprint context (replaces previous UK2Node_AddComponent::PostDuplicate() impl).
- Modified FEmitDefaultValueHelper::HandleSpecialTypes() to force AddComponent-based CAC-owned template objects in the emitted codegen to use the UDynamicClass as the Outer when instancing. This matches what we already do for SCS-based CAC-owned template objects - that logic was added in CL# 3270456, and this matches up with FBlueprintNativeCodeGenModule::FindReplacedNameAndOuter(), where we specifically handle CAC-owned template objects.
Change 3502741 by Phillip.Kavan
#jira UE-45782 - Fix undo for index pin type changes.
Change summary:
- Modified SGraphPinIndex::OnTypeChanged() to call Modify() on the pin that was changed.
Change 3502939 by Michael.Noland
Back out changelist 3499927
Change 3503087 by Marc.Audy
Re-fixed ocean content as editor had also changed so had to take theirs and redo
#rnx
Change 3503266 by Ben.Zeigler
#jira UE-46335 Fix regression added in 4.16 where AssetRegistry GetAncesorClassNames/GetDerivedClassNames were not working properly in cooked builds for classes not in memory
Change 3503325 by mason.seay
updated Anim BP to prep for pin testing
Change 3503445 by Marc.Audy
Fix crash caused by OldPins being destroyed before rewiring
#rnx
Change 3505024 by Marc.Audy
Fix NodeEffectsPanel blueprint as it was using pins that no longer existed
#rnx
Change 3505254 by Marc.Audy
Don't include orphan pins when gather source property names
If a property doesn't exist for a source property name just skip the property rather than crashing
#jira UE-46345
#rnx
Change 3506125 by Ben.Zeigler
#jira UE-46311 Fix issues when blueprints are reloaded in place, it needs to remove them from root properly and sanitize the old class. It's still not clear why they are being reloaded in place
Change 3506334 by Dan.Oconnor
Move UAnimGraphNode_Base::PreloadRequiredAssets up to K2Node, make sure nodes get a chance to preload data before compilation manager compiles newly loaded blueprints
#jira UE-46411
Change 3506439 by Dan.Oconnor
Return to pre 3488512 behavior for construct object nodes. This means that we can still get warnings on load when users compile after saving a blueprint, but the current behavior loses default values because it's lookng at the skeleton cdo
#jira UE-46308
Change 3506468 by Dan.Oconnor
Return to pre 3488512 behavior, as it causes bad default values
#jira UE-46414
#rnx
Change 3506733 by Marc.Audy
Use the most up to date class to determine whether a property still exists when adding pins during reconstruction
#jira UE-45965
#author Dan.OConnor
#rnx
Change 3507531 by Ben.Zeigler
#jira UE-46449 Better fix to flush the asset registry queue when the editor requests a synchronous scan at startup. Sometimes it can take a few frames because of file handle delays
Change 3507924 by mason.seay
Sanity save of TM-Gameplay and sublevels to maybe resolve level streaming issues
Change 3507962 by Marc.Audy
Remake changes from CL# 3150796 wiped out by WEX-Staging merge to Main in CL# 3479958
#rnx
Change 3509131 by Dan.Oconnor
Compilation manager compile on load flow never called FindExportsInMemoryFirst, which is critical to prevent reloading of UBlueprintGeneratedClasses when Rename clears the export table
#jira UE-46311
Change 3509345 by Marc.Audy
CVar to disable orphan pins if necessary
#rnx
Change 3509959 by Marc.Audy
Protect against crashing due to large values in Timespan From functions
#jira UE-43840
Change 3510040 by Marc.Audy
Remove all the old unneeded ShooterGame test maps
#rnx
[CL 3510073 by Marc Audy in Main branch]
2017-06-26 15:07:18 -04:00
for ( ULevel * Level : WorldAsset - > GetLevels ( ) )
2015-04-11 10:23:56 -04:00
{
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3620134)
#lockdown Nick.Penwarden
#rb none
============================
MAJOR FEATURES & CHANGES
============================
Change 3550452 by Ben.Marsh
UAT: Improve readability of error message when an editor commandlet fails with an error code.
Change 3551179 by Ben.Marsh
Add methods for reading text files into an array of strings.
Change 3551260 by Ben.Marsh
Core: Change FFileHelper routines to use enum classes for flags.
Change 3555697 by Gil.Gribb
Fixed a rare crash when the asset registry scanner found old cooked files with package level compression.
#jira UE-47668
Change 3556464 by Ben.Marsh
UGS: If working in a virtual stream, use the name of the first non-virtual ancestor for writing version files.
Change 3557630 by Ben.Marsh
Allow the network version to be set via Build.version if it's not overriden from Version.h.
Change 3561357 by Gil.Gribb
Fixed crashes related to loading old unversioned files in the editor.
#jira UE-47806
Change 3565711 by Graeme.Thornton
PR #3839: Make non-encoding specific Base64 functions accessible (Contributed by stfx)
Change 3565864 by Robert.Manuszewski
Temp fix for a race condition with the async loading thread enabled - caching the linker in case it gets removed (but not deleted) from super class object.
Change 3569022 by Ben.Marsh
PR #3849: Update gitignore (Contributed by mhutch)
Change 3569113 by Ben.Marsh
Fix Japanese errors not displaying correctly in the cook output log.
#jira UE-47746
Change 3569486 by Ben.Marsh
UGS: Always sync the Enterprise folder if the selected .uproject file has the "Enterprise" flag set.
Change 3570483 by Graeme.Thornton
Minor C# cleanups. Removing some redundant "using" calls which also cause dotnetcore compile errors
Change 3570513 by Robert.Manuszewski
Fix for a race condition with async loading thread enabled.
Change 3570664 by Ben.Marsh
UBT: Use P/Invoke to determine number of physical processors on Windows rather than using WMI. Starting up WMIC adds 2.5 seconds to build times, and is not compatible with .NET core.
Change 3570708 by Robert.Manuszewski
Added ENABLE_GC_OBJECT_CHECKS macro to be able to quickly toggle UObject pointer checks in shipping builds when the garbage collector is running.
Change 3571592 by Ben.Marsh
UBT: Allow running with -installed without creating [InstalledPlatforms] entries in BaseEngine.ini. If there is no HasInstalledPlatformInfo=true setting, assume that all platforms are still available.
Change 3572215 by Graeme.Thornton
UBT
- Remove some unnecessary using directives
- Point SN-DBS code at the new Utils.GetPhysicalProcessorCount call, rather than trying to calculate it itself
Change 3572437 by Robert.Manuszewski
Game-specific fix for lazy object pointer issues in one of the test levels. The previous fix had to be partially reverted due to side-effects.
#jira UE-44996
Change 3572480 by Robert.Manuszewski
MaterialInstanceCollections will no longer be added to GC clusters to prevent materials staying around in memory for too long
Change 3573547 by Ben.Marsh
Add support for displaying log timestamps in local time. Set LogTimes=Local in *Engine.ini, or pass -LocalLogTimes on the command line.
Change 3574562 by Robert.Manuszewski
PR #3847: Add GC callbacks for script integrations (Contributed by mhutch)
Change 3575017 by Ben.Marsh
Move some functions related to generating window resolutions out of Core (FParse::Resolution, GenerateConvenientWindowedResolutions). Also remove a few headers from shared PCHs prior to splitting application functionality out of Core.
Change 3575689 by Ben.Marsh
Add a fixed URL for opening the API documentation, so it works correctly in "internal" and "perforce" builds.
Change 3575934 by Steve.Robb
Fix for nested preprocessor definitions.
Change 3575961 by Steve.Robb
Fix for nested zeros.
Change 3576297 by Robert.Manuszewski
Material resources will now be discarded in PostLoad (Game Thread) instead of in Serialize (potentially Async Loading Thread) so that shader deregistration doesn't assert when done from a different thread than the game thread.
#jira FORT-38977
Change 3576366 by Ben.Marsh
Add shim functions to allow redirecting FPlatformMisc::ClipboardCopy()/ClipboardPaste() to FPlatformApplicationMisc::ClipboardCopy()/ClipboardPaste() while they are deprecated.
Change 3578290 by Graeme.Thornton
Changes to Ionic zip library to allow building on dot net core
Change 3578291 by Graeme.Thornton
Ionic zip library binaries built for .NET Core
Change 3578354 by Graeme.Thornton
Added FBase64::GetDecodedDataSize() to determine the size of bytes of a decoded base64 string
Change 3578674 by Robert.Manuszewski
After loading packages flush linker cache on uncooked platforms to free precache memory
Change 3579068 by Steve.Robb
Fix for CLASS_Intrinsic getting stomped.
Fix to EClassFlags so that they are visible in the debugger.
Re-added mysteriously-removed comments.
Change 3579228 by Steve.Robb
BOM removed.
Change 3579297 by Ben.Marsh
Fix exception if a plugin lists the same module twice.
#jira UE-48232
Change 3579898 by Robert.Manuszewski
When creating GC clusters and asserting due to objects still being pending load, the object name and cluster name will now be logged with the assert.
Change 3579983 by Robert.Manuszewski
More fixes for freeing linker cache memory in the editor.
Change 3580012 by Graeme.Thornton
Remove redundant copy of FileReference.cs
Change 3580408 by Ben.Marsh
Validate that arguments passed to the checkf macro are valid sprintf types, and fix up a few places which are currently incorrect.
Change 3582104 by Graeme.Thornton
Added a dynamic compilation path that uses the latest roslyn apis. Currently only used by the .NET Core path.
Change 3582131 by Graeme.Thornton
#define out some PerformanceCounter calls that don't exist in .NET Core. They're only used by mono-specific calls anyway.
Change 3582645 by Ben.Marsh
PR #3879: fix bug when creating a new VS2017 C++ project (Contributed by mnannola)
#jira UE-48192
Change 3583955 by Robert.Manuszewski
Support for EDL cooked packages in the editor
Change 3584035 by Graeme.Thornton
Split RunExternalExecutable into RunExternaNativelExecutable and RunExternalDotNETExecutable. When running under .NET Core, externally launched DotNET utilities must be launched via the 'dotnet' proxy to work correctly.
Change 3584177 by Robert.Manuszewski
Removed unused member variable (FArchiveAsync2::bKeepRestOfFilePrecached)
Change 3584315 by Ben.Marsh
Move Android JNI accessor functions into separate header, to decouple it from the FAndroidApplication class.
Change 3584370 by Ben.Marsh
Move hooks which allow platforms to load any modules into the FPlatformApplicationMisc classes.
Change 3584498 by Ben.Marsh
Move functions for getting and setting the hardware window pointer onto the appropriate platform window classes.
Change 3585003 by Steve.Robb
Fix for TChunkedArray ranged-for iteration.
#jira UE-48297
Change 3585235 by Ben.Marsh
Remove LogEngine extern from Core; use the platform log channels instead.
Change 3585942 by Ben.Marsh
Move MessageBoxExt() implementation into application layer for platforms that require it.
Change 3587071 by Ben.Marsh
Move Linux's UngrabAllInput() function into a callback, so DebugBreak still works without SDL.
Change 3587161 by Ben.Marsh
Remove headers which will be stripped out of the Core module from Core.h and PlatformIncludes.h.
Change 3587579 by Steve.Robb
Fix for Children list not being rebuilt after hot reload.
Change 3587584 by Graeme.Thornton
Logging improvements for pak signature check failures
- Added "PakCorrupt" console command which corrupts the master signature table
- Added some extra log information about which block failed
- Re-hash the master signature table and to make sure that it hasn't changed since startup
- Moved the ensure around so that some extra logging messages can make it out before the ensure is hit
- Added PAK_SIGNATURE_CHECK_FAILS_ARE_FATAL to IPlatformFilePak.h so we have a single place to make signature check failures fatal again
Change 3587586 by Graeme.Thornton
Changes to make UBT build and run on .NET Core
- Added *_DNC csproj files for DotNETUtilities and UnrealBuildTool projects which contain the .NET Core build setups
- VCSharpProjectFile can no be asked for the CsProjectInfo for a particular configuration, which is cached for future use
- After loading VCSharpProjectFiles, .NET Core based projects will be excluded unless generating VSCode projects
Change 3587953 by Steve.Robb
Allow arbitrary UENUM initializers for enumerators.
Editor-only data UENUM support.
Enumerators named MAX are now treated as the UENUM's maximum, and will not cause a MAX+1 value to be generated.
#jira UE-46274
Change 3589827 by Graeme.Thornton
More fixes for VSCode project generation and for UBT running on .NET Core
- Use a different file extension for rules assemblies when build on .NET Core, so they never get used by their counterparts
- UEConsoleTraceListener supports stdout/stderror constructor parameter and outputs to the appropriate channel
- Added documentation for UEConsoleTraceListener
- All platforms .NET project compilation tasks/launch configs now use "dotnet" and not the normal batch files
- Restored the default UBT log verbosity to "Log" rather than "VeryVeryVerbose"
- Renamed assemblies for .NETCore versions of DotNETUtilities and UnrealBuildTool so they don't conflict with the output of the existing .NET Desktop Framework stuff
Change 3589868 by Graeme.Thornton
Separate .NET Core projects for UBT and DotNETCommon out into their own directories so that their intermediates don't overlap with the standard .NET builds, causing failures.
UBT registers ONLY .NET Core C# projects when generating VSCode solutions, and ONLY standard C# projects in all other cases
Change 3589919 by Robert.Manuszewski
Fixing crash when cooking textures that have already been cooked for EDL (support for cooked content in the editor)
Change 3589940 by Graeme.Thornton
Force UBT to think it's running on mono when actually running on .NET Core. Disables a lot of windows specific code paths.
Change 3590078 by Graeme.Thornton
Fully disable automatic assembly info generation in .NET Core projects
Change 3590534 by Robert.Manuszewski
Marking UObject as intrinsic clas to fix a crash on UFE startup.
Change 3591498 by Gil.Gribb
UE4 - Fixed several edge cases in the low level async loading code, especially around cancellation. Also PakFileTest is a console command which can be used to stress test pak file loading.
Change 3591605 by Gil.Gribb
UE4 - Follow up to fixing several edge cases in the low level async loading code.
Change 3592577 by Graeme.Thornton
.NET Core C# projects now reference source files explicitly, to stop it accidentally compiling various intermediates
Change 3592684 by Steve.Robb
Fix for EObjectFlags being passed as the wrong argument to csgCopyBrush.
Change 3592710 by Steve.Robb
Fix for invalid casts in ListProps command.
Some name changes in command output.
Change 3592715 by Ben.Marsh
Move Windows event log code into cpp file, and expose it to other modules even if it's not enabled by default.
Change 3592767 by Gil.Gribb
UE4 - Changed the logic so that engine UObjects boot before anything else. The engine classes are known to be cycle-free, so we will get them done before moving onto game modules.
Change 3592770 by Gil.Gribb
UE4 - Fixed a race condition with async read completion in the prescence of cancels.
Change 3593090 by Steve.Robb
Better error message when there two clashing type names are found.
Change 3593697 by Steve.Robb
VisitTupleElements function, which calls a functor for each element in the tuple.
Change 3595206 by Ben.Marsh
Include additional diagnostics for missing imports when a module load fails.
Change 3596140 by Graeme.Thornton
Batch file for running MSBuild
Change 3596267 by Steve.Robb
Thread safety fix to FPaths::GetProjectFilePath().
Change 3596271 by Robert.Manuszewski
Added code to verify compression flags in package file summary to avoid cases where corrupt packages are crashing the editor
#jira UE-47535
Change 3596283 by Steve.Robb
Redundant casts removed from UHT.
Change 3596303 by Ben.Marsh
EC: Improve parsing of Android Clang errors and warnings, which are formatted as MSVC diagnostics to allow go-to-line clicking in the Output Window.
Change 3596337 by Ben.Marsh
UBT: Format messages about incorrect headers in a way that makes them clickable from Visual Studio.
Change 3596367 by Steve.Robb
Iterator checks in ranged-for on TMap, TSet and TSparseArray.
Change 3596410 by Gil.Gribb
UE4 - Improved some error messages on runtime failures in the EDL.
Change 3596532 by Ben.Marsh
UnrealVS: Fix setting command line to empty not affecting property sheet. Also remove support for VS2013.
#jira UE-48119
Change 3596631 by Steve.Robb
Tool which takes a .map file and a .objmap file (from UBT) and creates a report which shows the size of all the symbols contributed by the source code per-folder.
Change 3596807 by Ben.Marsh
Improve Intellisense when generated headers are missing or out of date (eg. line numbers changed, etc...). These errors seem to be masked by VAX, but are present when using the default Visual Studio Intellisense.
* UCLASS macro is defined to empty when __INTELLISENSE__ is defined. Previous macro was preventing any following class declaration being parsed correctly if generated code was out of date, causing squiggles over all class methods/variables.
* Insert a semicolon after each expanded GENERATED_BODY macro, so that if it parses incorrectly, the compiler can still continue parsing the next declaration.
Change 3596957 by Steve.Robb
UBT can be used to write out an .objsrcmap file for use with the MapFileParser.
Renaming of ObjMap to ObjSrcMap in MapFileParser.
Change 3597213 by Ben.Marsh
Remove AutoReporter. We don't support this any more.
Change 3597558 by Ben.Marsh
UGS: Allow adding custom actions to the context menu for right clicking on a changelist. Actions are specified in the project's UnrealEngine.ini file, with the following syntax:
+ContextMenu=(Label="This is the menu item", Execute="foo.exe", Arguments="bar")
The standard set of variables for custom tools is expanded in each parameter (eg. $(ProjectDir), $(EditorConfig), etc...), plus the $(Change) variable.
Change 3597982 by Ben.Marsh
Add an option to allow overriding the local DDC path from the editor (under Editor Preferences > Global > Local Derived Data Cache).
#jira UE-47173
Change 3598045 by Ben.Marsh
UGS: Add variables for stream and client name, and the ability to escape any variables for URIs using the syntax $(VariableName:URI).
Change 3599214 by Ben.Marsh
Avoid string duplication when comparing extensions.
Change 3600038 by Steve.Robb
Fix for maps being modified during iteration in cache compaction.
Change 3600136 by Steve.Robb
GitHub #3538 : Fixed a bug with the handling of 'TMap' key/value types in the UnrealHeaderTool
Change 3600214 by Steve.Robb
More accurate error message when unsupported template parameters are provided in a TSet property.
Change 3600232 by Ben.Marsh
UBT: Force UHT to run again if the .build.cs file for a module has changed.
#jira UE-46119
Change 3600246 by Steve.Robb
GitHub #3045 : allow multiple interface definition in a file
Change 3600645 by Ben.Marsh
Convert QAGame to Include-What-You-Use.
Change 3600897 by Ben.Marsh
Fix invalid path (multiple slashes) in LibCurl.build.cs. Causes exception when scanning for includes.
Change 3601558 by Graeme.Thornton
Simple first pass VSCode editor integration plugin
Change 3601658 by Graeme.Thornton
Enable intellisense generation for VS Code project files and setup include paths properly
Change 3601762 by Ben.Marsh
UBT: Add support for adaptive non-unity builds when working from a Git repository.
The ISourceFileWorkingSet interface is now used to query files belonging to the working set, and has separate implementations for Perforce (PerforceSourceFileWorkingSet) and Git (GitSourceFileWorkingSet). The Git implementation is used if a .git directory is found in the directory containing the Engine folder, the directory containing the project file, or the parent directory of the project file, and spawns a "git status" process in the background to determine which files are untracked or staged.
Several new settings are supported in BuildConfiguration.xml to allow modifying default behavior:
<SourceFileWorkingSet>
<Provider>Default</Provider> <!-- May be None, Default, Git or Perforce -->
<RepositoryPath></RepositoryPath> <!-- Specifies the path to the repository, relative to the directory containing the Engine folder. If not set, tries to find a .git directory in the locations listed above. -->
<GitPath>git</GitPath> <!-- Specifies the path to the Git executable. Defaults to "git", which assumes that it will be on the PATH -->
</SourceFileWorkingSet>
Change 3604032 by Graeme.Thornton
First attempt at automatically detecting the existance and location of visual studio code in the source code accessor module. Only works for windows.
Change 3604038 by Graeme.Thornton
Added FSourceCodeNavigation::GetSelectedSourceCodeIDE() which returns the name of the selected source code accessor.
Replaced all usages of FSourceCodeNavigation::GetSuggestedSourceCodeIDE() with GetSelectedSourceCodeIDE(), where the message is referring to the opening or editing of code.
Change 3604106 by Steve.Robb
GitHub #3561 : UE-44950: Don't see all caps struct constructor as macro
Change 3604192 by Steve.Robb
GitHub #3911 : Improving ToUpper/ToLower efficiency
Change 3604273 by Graeme.Thornton
IWYU build fixes when malloc profiler is enabled
Change 3605457 by Ben.Marsh
Fix race for intiialization of ThreadID variable on FRunnableThreadWin, and restore a previous check that was working around it.
Change 3606720 by James.Hopkin
Dave Ratti's fix to character base recursion protection code - was missing a GetOwner call, instead attempting to cast a component to a pawn.
Change 3606807 by Graeme.Thornton
Disabled optimizations around FShooterStyle::Create(), which was crashing in Win64 shipping game builds due to some known compiler issue. Same variety of fix as BenZ did in CL 3567741.
Change 3607026 by James.Hopkin
Fixed incorrect ABrush cast - was attempting to cast a UModel to ABrush, which can never succeed
Change 3607142 by Graeme.Thornton
UBT - Minor refactor of BackgroundProcess shutdown in SourceFileWorkingSet. Check whether the process has already exited before trying to kill it during Dispose.
Change 3607146 by Ben.Marsh
UGS: Fix exception due to formatting string when Perforce throws an error.
Change 3607147 by Steve.Robb
Efficiency fix for integer properties, which were causing a property mismatch and thus a tag lookup every time.
Float and double conversion support added to int properties.
NAME_DoubleProperty added.
Fix for converting enum class enumerators > 255 to int properties.
Change 3607516 by Ben.Marsh
PR #3935: Fix DECLARE_DELEGATE_NineParams, DECLARE_MULTICAST_DELEGATE_NineParams. (Contributed by enginevividgames)
Change 3610421 by Ben.Marsh
UAT: Move help for RebuildLightMapsCommand into attributes, so they display when running with -help.
Change 3610657 by Ben.Marsh
UAT: Unify initialization of command environment for build machines and local execution. Always derive parameters which aren't manually set via environment variables.
Change 3611000 by Ben.Marsh
UAT: Remove the -ForceLocal command line option. Settings are now determined automatically, independently of the -Buildmachine argument.
Change 3612471 by Ben.Marsh
UBT: Move FastJSON into DotNETUtilities.
Change 3613479 by Ben.Marsh
UBT: Remove the bIsCodeProject flag from UProjectInfo. This was only really being used to determine which projects to generate an IDE project for, so it is now checked in the project file generator.
Change 3613910 by Ben.Marsh
UBT: Remove unnecessary code to guess a project from the target name; doesn't work due to init order, actual project is determined later.
Change 3614075 by Ben.Marsh
UBT: Remove hacks for testing project file attributes by name.
Change 3614090 by Ben.Marsh
UBT: Remove global lookup of project by name. Projects should be explicitly specified by path when necessary.
Change 3614488 by Ben.Marsh
UBT: Prevent annoying (but handled) exception when constructing SQLiteModuleSupport objects with -precompile enabled.
Change 3614490 by Ben.Marsh
UBT: Simplify generation of arguments for building intellisense; determine the platform/configuration to build from the project file generation code, rather than inside the target itself.
Change 3614962 by Ben.Marsh
UBT: Move the VS2017 strict conformance mode (/permissive-) behind a command line option (-Strict), and disable it by default. Building with this mode is not guaranteed to work correctly without updated Windows headers.
Change 3615416 by Ben.Marsh
EC: Include an icon showing the overall status of a build in the grid view.
Change 3615713 by Ben.Marsh
UBT: Delete any files in output directories which match output files in other directories. Allows automatically deleting build products which are moved into another folder.
#jira UE-48987
Change 3616652 by Ben.Marsh
Plugins: Fix incorrect dialog when binaries for a plugin are missing. Should only prompt to disable if starting a content-only project.
#jira UE-49007
Change 3616680 by Ben.Marsh
Add the CodeAPI-HTML.tgz file into the installed engine build.
Change 3616767 by Ben.Marsh
Plugins: Tweak error message if the FModuleManager::IsUpToDate() function returns false for a plugin module; the module may be missing, not just incompatible.
Change 3616864 by Ben.Marsh
Cap the length of the temporary package name during save, to prevent excessively long filenames going over the limit once a GUID is appended.
#jira UE-48711
Change 3619964 by Ben.Marsh
UnrealVS: Fix single file compile for foreign projects, where the command line contains $(SolutionDir) and $(ProjectName) variables.
Change 3548930 by Ben.Marsh
UBT: Remove UEBuildModuleCSDLL; there is no codepath that still supports creating them. Remove the remaining UEBuildModule/UEBuildModuleCPP abstraction.
Change 3558056 by Ben.Marsh
Deprecate FString::Trim() and FString::TrimTrailing(), and replace them with separate versions to mutate (TrimStartInline(), TrimEndInline()) or return by copy (TrimStart(), TrimEnd()). Also add a functions to trim whitespace from both ends of a string (TrimStartAndEnd(), TrimStartAndEndInline()).
Change 3563309 by Graeme.Thornton
Moved some common C# classes into the DotNETCommon assembly
Change 3570283 by Graeme.Thornton
Move some code out of RPCUtility and into DotNETCommon, removing the dependency between the two projects
Added UEConsoleTraceListener to replace ConsoleTraceListener, which doesn't exist in DotNetCore
Change 3572811 by Ben.Marsh
UBT: Add -enableasan / -enabletsan command line options and bEnableAddressSanitizer / bEnableThreadSanitizer settings in BuildConfiguration.xml (and remove environment variables).
Change 3573397 by Ben.Marsh
UBT: Create a <ExeName>.version file for every target built by UBT, in the same JSON format as Engine/Build/Build.version. This allows monolithic targets to read a version number at runtime, unlike when it's embedded in a modules file, and allows creating versioned client executables that will work with versioned servers when syncing through UGS.
Change 3575659 by Ben.Marsh
Remove CHM API documentation.
Change 3582103 by Graeme.Thornton
Simple ResX writer implemetation that the xbox deloyment code can use instead of the one from the windows forms assembly, which isn't supported on .NET Core
Removed reference to System.Windows.Form from UBT.
Change 3584113 by Ben.Marsh
Move key-mapping functionality into the InputCore module.
Change 3584278 by Ben.Marsh
Move FPlatformMisc::RequestMinimize() into FPlatformApplicationMisc.
Change 3584453 by Ben.Marsh
Move functionality for querying device display density to FApplicationMisc, due to dependence on application-level functionality on mobile platforms.
Change 3585301 by Ben.Marsh
Move PlatformPostInit() into an FPlatformApplicationMisc function.
Change 3587050 by Ben.Marsh
Move IsThisApplicationForeground() into FPlatformApplicationMisc.
Change 3587059 by Ben.Marsh
Move RequiresVirtualKeyboard() into FPlatformApplicationMisc.
Change 3587119 by Ben.Marsh
Move GetAbsoluteLogFilename() into FPlatformMisc.
Change 3587800 by Steve.Robb
Fixes to container visualizers for types whose pointer type isn't simply Type*.
Change 3588393 by Ben.Marsh
Move platform output devices into their own headers.
Change 3588868 by Ben.Marsh
Move creation of console, error and warning output devices int PlatformApplicationMisc.
Change 3589879 by Graeme.Thornton
All automation projects now have a reference to DotNETUtilities
Fixed a build error in the WEX automation library
Change 3590034 by Ben.Marsh
Move functionality related to windowing and input out of the Core module and into an ApplicationCore module, so it is possible to build utilities with Core without adding dependencies on XInput (Windows), SDL (Linux), and OpenGL (Mac).
Change 3593754 by Steve.Robb
Fix for tuple debugger visualization.
Change 3597208 by Ben.Marsh
Move CrashReporter out of a public folder; it's not in a form that is usable by subscribers and licensees.
Change 3600163 by Ben.Marsh
UBT: Simplify how targets are cleaned. Delete all intermediate folders for a platform/configuration, and delete any build products matching the UE4 naming convention for that target, rather than relying on the current build configuration or list of previous build products. This will ensure that build products which are no longer being generated will also be cleaned.
#jira UE-46725
Change 3604279 by Graeme.Thornton
Move pre/post garbage collection delegates into accessor functions so they can be used by globally constructed objects
Change 3606685 by James.Hopkin
Removed redundant 'Cast's (casting to either the same type or a base).
In SClassViewer, replaced cast with TAssetPtr::operator* call to get the wrapped UClass.
Also removed redundant 'IsA's from AnimationRetargetContent::AddRemappedAsset in EditorAnimUtils.cpp.
Change 3610950 by Ben.Marsh
UAT: Simplify logic for detecting Perforce settings, using environment variables if they are set, otherwise falling back to detecting them. Removes special cases for build machines, and makes it simpler to set up UAT commands on builders outside Epic.
Change 3610991 by Ben.Marsh
UAT: Use the correct P4 settings to detect settings if only some parameters are specified on the command line.
Change 3612342 by Ben.Marsh
UBT: Change JsonObject.Read() to take a FileReference parameter.
Change 3612362 by Ben.Marsh
UBT: Remove some more cases of paths being passed as strings rather than using FileReference objects.
Change 3619128 by Ben.Marsh
Include builder warnings and errors in the notification emails for automated tests, otherwise it's difficult to track down non-test failures.
[CL 3620189 by Ben Marsh in Main branch]
2017-08-31 12:08:38 -04:00
UBlueprint * LevelScript = Level - > GetLevelScriptBlueprint ( true ) ;
Copying //UE4/Dev-Blueprints to //UE4/Dev-Main (Source: //UE4/Dev-Blueprints @ 3152873)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3131279 on 2016/09/19 by Mike.Beach
Fixing FText::Format warning for the Sub-Level Blueprints menu - Was using {LevelName} tag when there was no value for {LevelName} (defaulted to the first argument).
#jira UE-36097
Change 3131318 on 2016/09/19 by Phillip.Kavan
[UE-35690] Minor revisions to Blueprint SCS execution to improve efficiency and address an out-of-order registration issue.
change summary:
- modified AActor::PostSpawnInitialize() to defer native component registration if there is no native scene root component set and if the actor is a BP type (i.e. will invoke SCS). this means that native actor classes with only non-scene components will now defer registration/post-registration until after SCS execution has established a valid scene root.
- modified AActor::ExecuteConstruction() to gather the set of native scene components that SCS nodes can attach to before invoking the SCS. this was previously being done redundantly within the SCS itself at each level of the BP class inheritance hierarchy.
- modified AActor::ExecuteConstruction() to do a final registration pass over all components after the all SCS levels have been executed. this was also previously being done within the SCS at each level. this avoids some extra redundancy.
- modified USCS_Node::ExecuteNodeOnActor() to call RegisterAllComponents() on the given actor instance after establishing a valid scene root component if it was previously deferred at spawn time.
- modified USCS_Node::ExecuteNodeOnActor() to now register components after they're created. since SCS execution goes from parent to child, parent scene components will always be registered before their children. non-native, non-scene component registration will also be deferred until a scene root component has been established.
- added AActor::HasDeferredComponentRegistration()
- modified AActor::RegisterAllComponents() to reset the actor's deferred component registration flag when called
- modified AActor::AddComponent() to check the 'bAutoRegister' flag before calling RegisterComponent() (for consistency)
- moved the RegisterInstancedComponent() utility method into USimpleConstructionScript and modified it to ensure that parent attachments are registered before their children.
- modified USimpleConstructionScript::ExecuteScriptOnActor() to include an additional input parameter for passing in the set of native scene components that can be attached to.
- modified USimpleConstructionScript::ExecuteScriptOnActor() to remove redundant/unnecessary work as noted above.
#jira UE-35690
Change 3131842 on 2016/09/20 by Maciej.Mroz
#jira UE-34984 Broken (weak) object params on Blueprint function (cannot add plain reference)
Change 3131847 on 2016/09/20 by Maciej.Mroz
SPropertyEditorAsset doesn't display UClass with "_C" prefix anymore.
Change 3131923 on 2016/09/20 by Maciej.Mroz
#jira UE-33812 Crash while closing Create Blank New Blueprint window after attempting to name blueprint the same name as another blueprint
Change 3132348 on 2016/09/20 by Phillip.Kavan
Fix CIS build issue (SA).
Change 3132383 on 2016/09/20 by Maciej.Mroz
#jira UE-35830 Float Curve that is set as a local variable in an actor's function is garbage collected when in Standalone, causing a crash
Array UStruct::ScriptObjectReferences is filled while compilation. GC doesn't serialize script bytecode in editor anymore.
Change 3133072 on 2016/09/20 by Maciej.Mroz
#jira UE-34388 Crash upon deleting Blueprints folder
Change 3133216 on 2016/09/20 by Dan.Oconnor
+ BlueprintSetLibrary (add, remove, find, etc)
+ HasGetTypeHash compile time function for detecting types that have GetTypeHish (modeled after HasOperatorEquals)
= SPinTypeSelector can now disable container types based on current primary type, required transition to SComboButtton/SListView from SComboBox
= Hide blueprint set library via BaseEditor.ini
#jira UE-2114
Change 3133227 on 2016/09/20 by Dan.Oconnor
Test assets for TSet
Change 3133804 on 2016/09/21 by Maciej.Mroz
#jira UE-34069 ObjectLibrary stores UBlueprint instead of BPGC
In UObjectLibrary, when bHasBlueprintClasses is true, BP references are automatically replaced by BPGC references.
Change 3133817 on 2016/09/21 by Maciej.Mroz
Fixed static Static Analysis warning
Change 3134377 on 2016/09/21 by Dan.Oconnor
ShowWorldContextObject is now inherited
#jira UE-35674
Change 3134955 on 2016/09/21 by Mike.Beach
Making it so AdvancedDisplay metadata is taken into consideration and used in MakeStruct nodes.
Change 3134965 on 2016/09/21 by Dan.Oconnor
Fix for crash in FCDODiffControl when CDOs have different numbers of properties. First branch in the while loop would incorrectly advance Iter past the end of the array. Comments courtesy of Jon.Nabozny
#jira UE-36263
Change 3135523 on 2016/09/22 by Dan.Oconnor
PR #2755: Master (Contributed by jeremyyeung)
Notable change: searching for Vector in BP editor context menu now gives different default result, prior result was mediocre, though (vector - vector)
#jira UE-35450
Change 3136508 on 2016/09/22 by Mike.Beach
Removing a bIsVisible guard for level Blueprint menu actions - this was causing level BP options to disappear when you hid sub-levels. The guard doesn't seem to matter, as those actions will be removed with the world (when it is updated, or unloaded).
#jira UE-34019
Change 3137587 on 2016/09/23 by Maciej.Mroz
#jira ODIN-1017 [Nativization] Crash while loading Hub_env level
Merged cl#3137578 from Odin branch
Change 3137666 on 2016/09/23 by Ben.Cosh
This adds the ability to map composite graph instances in the same way we map macro instances for blueprint debug data and improves the quality of the debug data providing correct information for nested macro/composite instances at any script location in instrumented blueprint compilations.
#Jira UE-33396 - Nested macro nodes don't map correctly if you place multiple instances in the same graph
#Proj KismetCompiler, BlueprintGraph, UnrealEd
- This is the first part of a two part change, the subsequent change will make use of the debug output to resolve complex trees of tunnel instances in the blueprint profiler.
Change 3137800 on 2016/09/23 by Phillip.Kavan
[UE-34896] Properties are now generated for client-only Blueprint components in an uncooked server-only context.
change summary:
- bumped BlueprintObjectsVersion
- added a new 'ComponentClass' property to USCS_Node
- added a new 'ComponentClass' field to the FComponentOverrideRecord struct (UInheritableComponentHandler)
- added a USCS_Node::Serialize() override to fix up 'ComponentClass' on load (so that it's set prior to compile-on-load)
- modified USimpleConstructionScript::CreateNodeImpl() to set the ComponentClass property in a new SCS node
- modified USimpleConstructionScript::ValidateNodeTemplates() to consider the node to be valid if ComponentClass is set and is known to be filtered (i.e. the node will not be removed in this case)
- modified USimpleConstructionScript::ValidateNodeTemplates() to emit a warning message in an uncooked client-only or server-only context if the ComponentClass could not be set in an existing package (i.e. if a resave is needed)
- modified UInheritableComponentHandler::PostLoad() to fix up 'ComponentClass' on load
- modified UInheritableComponentHandler::CreateOverridenComponentTemplate() to set the ComponentClass field in a new override record
- modified UInheritableComponentHandler::IsRecordValid() to consider the record to be valid if ComponentClass is set (when ComponentTemplate is NULL)
- modified UInheritableComponentHandler::IsRecordNecessary() to consider the record to be necessary if ComponentClass is set and is known to be filtered
- modified FKismetCompilerContext::CreateClassVariablesFromBlueprint() to use 'ComponentClass' rather than 'ComponentTemplate' to infer the property subtype
#jira UE-34896
Change 3137851 on 2016/09/23 by Phillip.Kavan
[UE-36079] Component overrides in a child blueprint will no longer trigger a warning message when the original component is removed from its parent.
change summary:
- modified UInheritableComponentHandler::IsRecordValid() to no longer consider a NULL OriginalTemplate to be invalid (so that the warning message is suppressed)
- modified UInheritableComponentHandler::IsRecordNecessary() to consider a NULL OriginalTemplate to be unnecessary (so that the record is still removed in this case)
#jira UE-36079
Change 3137948 on 2016/09/23 by Ben.Cosh
CIS warning fix on mac for out of order initialisation.
Change 3139351 on 2016/09/25 by Ben.Cosh
Updates the blueprint profiler to make use of the recent changes to macro/composite tunnel mapping and enhanced debug data.
#Jira UE-33396 - Nested macro nodes don't map correctly if you place multiple instances in the same graph
#Proj BlueprintProfiler, Engine
- This is the second part of a two part change enabling multiple instances of nested macro/composite graphs in the blueprint profiler.
Change 3139376 on 2016/09/25 by Ben.Cosh
CIS static analysis fix for CL 3137666
Change 3139377 on 2016/09/25 by Ben.Cosh
Adding script code location checking for pure nodes that was missed in CL 3139351
#Jira UE-33396 - Nested macro nodes don't map correctly if you place multiple instances in the same graph
#Proj BlueprintProfiler
- Fixes a missed issue with pure nodes inside macros/tunnels
Change 3139624 on 2016/09/26 by Maciej.Mroz
Fixed const local variables in Nativized code
Merged cl#3139622 from Odin branch.
Change 3139641 on 2016/09/26 by Maciej.Mroz
#jira UE-31099 Renaming an input mapping does not generate a warning when compile a blueprint using that input
Since we cannot distinguish which nodes are isolated by users (and shouldn't be validated) and which nodes are isolated during expansion step (and should be validated), the isolated nodes are pruned both before and after expantion step (and validation).
Change 3139961 on 2016/09/26 by Ben.Cosh
CIS static analysis fix for CL 3137666
- missed one of the warnings in a previous attempt.
Change 3140143 on 2016/09/26 by Dan.Oconnor
Fix for component property clearing on load, submitted on behalf of Mike.Beach
#jira UE-36395
Change 3140694 on 2016/09/26 by Dan.Oconnor
Fix for GLEO when duplicating levels that have knots that reference delegates (specifically custom events)
#jira UE-34954
Change 3140772 on 2016/09/26 by Dan.Oconnor
Further hardening SGraphPin::GraphPinObj access
#jira UE-36280
Change 3140812 on 2016/09/26 by Dan.Oconnor
Corrected overzealous warning. Codepath is expected when functions are deleted but breakpoints aren't updated
#jira UE-32736
Change 3140869 on 2016/09/26 by Dan.Oconnor
Update check to handle nested DSOs
#jira UE-34568
Change 3141125 on 2016/09/27 by Maciej.Mroz
#jira UE-36326 Attempting to generate abstract class from blueprint crashes editor on compile
While reinstancing the CLASS_Abstract is cleared (just like the CLASS_Deprecated flag)
Change 3142715 on 2016/09/27 by Dan.Oconnor
Fix for crash when pasting nodes that have connections to nodes that aren't in the clipboard from one graph into another
#jira OR-29584
Change 3143469 on 2016/09/28 by Ryan.Rauschkolb
BP Profiler: Fixed Assert when profiling parent/child Blueprint
#jira UE-35487
Change 3145215 on 2016/09/29 by Maciej.Mroz
#jira UE-36494 [CrashReport] UE4Editor_KismetCompiler!FKismetCompilerContext::CreatePinEventNodeForTimelineFunction() [kismetcompiler.cpp:2062]
Change 3145580 on 2016/09/29 by Dan.Oconnor
Collapse secondary image instead of hiding it, allowing x button to be closer to primary image when secondary type image isn't present
#jira UE-36577
Change 3146470 on 2016/09/30 by Maciej.Mroz
#jira UE-36655 Failed ensure when TIleline is pasted
Restored cl#3085572 - it was lost while merging.
Change 3147046 on 2016/09/30 by Maciej.Mroz
#jira UE-34961 Assert when calling BP function with weak object parameter.
BP doesn;t support weak obj ptr as parameters - Validation added. Function, created from colappsed nodes, cannot have a parameter of weakptr type.
Change 3148022 on 2016/10/01 by Phillip.Kavan
[UE-21109] Fix component instance data loss after renaming SCS component nodes at the Blueprint class level.
change summary:
- deprecated the public USCS_Node::VariableName member and replaced it with an internal-only member accessible via Get/Set method (i need to be in control of the set logic)
- changed all occurrences of direct access to USCS_Node::VariableName to use a GetVariableName() call (since it's now internal)
- simplified USCS_Node::GetVariableName() as what it used to do was legacy and thus is no longer necessary (it's been handled by USimpleConstructionScript::PostLoad for awhile now)
- added USCS_Node::SetVariableName(); this now renames the component template (if valid) and all instances of it prior to changing the internal variable name. this ensures that archetype lookups will continue to function after a rename.
- added USCS_Node::RenameComponentTemplate() to handle SCS node component template rename logic on a variable name change
- switched the AActor::CheckComponentInstanceName() API to be publically-accessible; need to call this when renaming instanced components to match a new variable name in order to ensure that we rename any instance-only components out of the way first (this is the same logic that we run when constructing component instances on map load/RRCS, so it's consistent)
- modified UInheritableComponentHandler::PostLoad() to fix up the component template within each record to match the original template object name. this ensures that ICH-specific archetype lookups will continue to function after a rename. it also ensures that any mismatched template names in existing assets will now be fixed up on load.
- moved UActorComponent::ComponentTemplateSuffixName into the USimpleConstructionScript class (since the association is tied to templates created by that class specifically). note: this revises a change from a recent PR submission.
- modified UpdateAttachedIsEditorOnly() to check the RF_ArchetypeObject flag rather than the ComponentTemplateSuffixName (part of the revision to the recent PR submission noted above)
#jira UE-21109
Change 3148023 on 2016/10/01 by Phillip.Kavan
[UE-35562] Fix inherited Blueprinted component template defaults data loss in child Blueprint classes after recompiling the Blueprinted component class.
change summary:
- added a local FArchetypeReinstanceHelper struct + GetArchetypeObjects()/FindUniqueArchetypeObjectName() utility method implementations to KismetReinstanceUtilities.cpp
- modified FBlueprintCompileReinstancer::ReplaceInstancesOfClass_Inner() to ensure that the full inherited component template (archetype) ancestry is renamed along with the base template when we rename the base template object away from its original name in order to make way for the new (reinstanced) template. the names must match the base template along the entire inheritance hierarchy in order for forward/reverse inherited component archetype lookups to succeed.
notes:
- BP (non-native) component templates (e.g. SCS/AddComponent nodes) that belong to the class being reinstanced (i.e. whose templates are not inherited from a parent BP) always inherit directly from the component CDO, and thus do not require this code path (that is, archetype lookups are not dependent on matching the CDO by name). similarly, native components (defined in C++) are included as part of the CDO defaults data, and thus also do not require this code path.
#jira UE-35562
Change 3148030 on 2016/10/01 by Phillip.Kavan
UT fixes for CIS warnings related to SCS node API changes.
Change 3148256 on 2016/10/02 by Ben.Cosh
This change adds the ability to filter debug/wire trace instrumenation and tracks expansion nodes for future use.
#Jira UE-34866 - No profiler timings listed for nodes executed after an interface message
#Proj KismetCompiler, BlueprintGraph, UnrealEd
Change 3148261 on 2016/10/02 by Ben.Cosh
CIS fix, some code from another changelist leaked into CL 3148256
Change 3148480 on 2016/10/03 by Ben.Cosh
This change attempts to address some profiler issues with class function context switching in the blueprint profiler.
#Jira UE-35819 - Crash occurs when instrumenting an event from a member actor
#Proj BlueprintProfiler, BlueprintGraph
Change 3148545 on 2016/10/03 by Phillip.Kavan
Skip unnecessary component validation work to fix invalid warnings when duplicating a BP class for reinstancing.
Change 3149001 on 2016/10/03 by Ben.Cosh
This fixes an issue found with the instrumented blueprint compilations in which a certain compilation path would not provide the extended composite tunnel node heararchy in debug data and removes an unneceassary check that was causing problems.
#Jira UE-36704 - Crash on PIE while profiling TestBP_ProfilerEvents in QAGame
#Proj KismetCompiler, BlueprintProfiler
Change 3149031 on 2016/10/03 by Maciej.Mroz
#jira UE-36687, UE-36691
Tunnel nodes without exec pin are not pruned before expansion.
Change 3149150 on 2016/10/03 by Maciej.Mroz
#jira UE-36685
UGameplayTagsK2Node_LiteralGameplayTag is pure.
Change 3149290 on 2016/10/03 by Maciej.Mroz
#jira UE-36750
GetBlueprintContext node is Pure.
Change 3149595 on 2016/10/03 by Mike.Beach
Fixing up some Orion content errors/warnings that should have been issues a while ago (error reporting was broken for a time, now fixed).
#jira UE-36758, UE-36759
Change 3149667 on 2016/10/03 by Mike.Beach
Fixing up some Ocean content errors as fallout from a change in Dev-Blueprints - the errors properly identified a node that was using a culled input that was uninitialized.
#jira UE-36770
Change 3149777 on 2016/10/03 by Mike.Beach
Fixing up an Orion content warning - disconnecting a cast path in Hero_Automation, now that the node is producing a warning (the cast is impossible, and therefore the path is superfluous).
#jira UE-36759
Change 3149988 on 2016/10/04 by Maciej.Mroz
#jira UE-36750, UE-36685
Fixed IsNodePure functions.
Change 3150146 on 2016/10/04 by Maciej.Mroz
#jira UE-36759
First pruning pass in done after ExpandTunnelsAndMacros is called.
Isolated tunnels are pruned just like regular nodes.
Change 3150743 on 2016/10/04 by Mike.Beach
Mirroring CL 3150661 from Dev-VREditor
Fix for crash on editor close after VR Foliage Editing.
#jira UE-36754
Change 3151104 on 2016/10/04 by Maciej.Mroz
Added comment.
Change 3151979 on 2016/10/05 by Mike.Beach
Adding the keyword "custom" to K2Node_CustomEvent, so that it is prioritized when searching the Blueprint menu.
#jira UE-35512
Change 3152286 on 2016/10/05 by Maciej.Mroz
Make sure, that an isolated node, that should be pure (but is not) won't be pruned.
[CL 3152997 by Mike Beach in Main branch]
2016-10-05 23:32:35 -04:00
if ( LevelScript ! = nullptr )
2015-04-11 10:23:56 -04:00
{
AddBlueprintGraphActions ( LevelScript , AssetActionList ) ;
if ( UClass * SkeletonClass = LevelScript - > SkeletonGeneratedClass )
{
GetClassMemberActions ( SkeletonClass , AssetActionList ) ;
}
// Register for change and compilation notifications
2015-04-14 09:16:22 -04:00
if ( ! LevelScript - > OnChanged ( ) . IsBoundToObject ( this ) )
2015-04-11 10:23:56 -04:00
{
LevelScript - > OnChanged ( ) . AddRaw ( this , & FBlueprintActionDatabase : : OnBlueprintChanged ) ;
}
2015-04-14 09:16:22 -04:00
if ( ! LevelScript - > OnCompiled ( ) . IsBoundToObject ( this ) )
2015-04-11 10:23:56 -04:00
{
LevelScript - > OnCompiled ( ) . AddRaw ( this , & FBlueprintActionDatabase : : OnBlueprintChanged ) ;
}
}
}
}
2014-09-26 11:31:34 -04:00
FBlueprintActionDatabaseRegistrar Registrar ( ActionRegistry , UnloadedActionRegistry , ActionPrimingQueue ) ;
2014-08-23 20:16:29 -04:00
Registrar . ActionKeyFilter = AssetObject ; // make sure actions only associated with this asset get added
// nodes may have actions they wish to add actions for this asset
RegisterAllNodeActions ( Registrar ) ;
2014-09-26 11:31:34 -04:00
// Will clear up any unloaded asset actions associated with this object, if any
2022-09-07 01:06:47 -04:00
ClearUnloadedAssetActions ( FSoftObjectPath ( AssetObject ) ) ;
2014-09-26 11:31:34 -04:00
2021-09-06 12:23:53 -04:00
if ( ! IsValid ( AssetObject ) )
2014-12-01 19:02:24 -05:00
{
ClearAssetActions ( AssetObject ) ;
}
else if ( AssetActionList . Num ( ) > 0 )
2014-08-23 20:16:29 -04:00
{
// queue these assets for priming
ActionPrimingQueue . Add ( AssetObject , 0 ) ;
}
2014-09-19 18:20:43 -04:00
// we don't want to clear entries for blueprints, mainly because we
// use the presence of an entry to know if we've set the blueprint's
// OnChanged(), but also because most blueprints will have actions at some
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3510040)
#lockdown Nick.Penwarden
=====================================
MAJOR FEATURES + CHANGES
=====================================
Change 3459524 by Marc.Audy
Get/Set of properties that were previously BPRW/BPRO should error when used
#jira UE-20993
Change 3460004 by Phillip.Kavan
#jira UE-45171 - Fix C++ compilation failures during packaging caused by nativizing a Blueprint that overrides a native function with a 'TSubclassOf' parameter or return value.
Change summary:
- Modified FKismetCompilerContext::CreateParametersForFunction() to pass the 'CPF_UObjectWrapper' flag through to new function parameter properties during Blueprint compilation.
Change 3461210 by Phillip.Kavan
#jira UE-44505 - Fix occasional Blueprint editor crashes that could occur while rebuilding the context menu from the action registry.
Change summary:
- Modified FBlueprintActionDatabase::FActionRegistry to use an FObjectKey as the key type. This allows us to test entries for UObject validity before rebuilding context menu items based on the action database.
- Changed FBlueprintActionInfo::CachedOwnerClass to be a TWeakObjectPtr rather than a raw UClass* since it's based on the ActionOwner, which could potentially become invalid after the OwnerClass has been cached.
- Modified FBlueprintActionDatabase::RefreshAssetActions() to exclude World assets if the WorldType is not EWorldType::Editor. This eliminates an issue with unreferenced "inactive" GC'd world objects being left in the BP action registry after cooking, at which point the keys could become invalid.
- Added FBlueprintActionDatabase::DeferredRemoveEntry() to allow for scheduling removal of entries from outside of the database if they are known to be invalid.
- Modified FBlueprintActionDatabase::Tick() to handle deferred entry removals.
- Modified FBlueprintActionMenuBuilder::RebuildActionList() to both test actions for validity before building menu items and schedule removal of invalid actions on the next tick.
Notes:
- Alternatively we could just include UObject keys in the database's AddReferencedObject impl, but that would then prevent objects from ever being GC'd if they are not explicitly removed. For most entries the action database takes the approach of explicitly removing entries via delegate when the UObject is destroyed, so I chose to use a TWeakObjectPtr instead so that any entries that may not be getting explicitly removed via delegate will now simply become invalidated if the UObject key is GC'd due to not being referenced. I also set it up to clean and remove any entries (along with any associated node spawners) that are found to be invalid the next time we open the BP editor.
Change 3461373 by Lukasz.Furman
fixed async navmesh rebuilds not kicking in for requests from navdata.bForceRebuildOnLoad
#jira UE-44231
Change 3461409 by Lukasz.Furman
fixed reenabling automatic navmesh generation in Editor Preferences
#ue4
Change 3461550 by Ben.Zeigler
#jira UE-45328 Fix local variable support for Redirectors and other save-time validation. We need to run the local variables to UProperty and back at save time
Add new flag PPF_SerializedAsImportText which is used for BP pins/default values and indicates that something has been serialized as import text and so needs to handle string asset redirectors
Change 3462625 by Zak.Middleton
#ue4 - Fix InterpToMovementComponent not setting velocity on the object it moves. Fix movement rate when substepping enabled (other related fixes to come).
github PR #3620
Change 3462796 by Dan.Oconnor
Fix for spamming BroadcastBlueprintReinstanced and for creating CDO at wrong time when compiling FrontEnd.uasset in OrionGame
#jira UE-45434
Change 3462995 by Ben.Zeigler
#jira UE-16941 Fix it so Load Asset node works with a literal value as well as a connected pin
Change 3463099 by Ben.Zeigler
#jira UE-45471 Allow abstract base classes for primary assets
Change 3464809 by Marc.Audy
Expose FVector2D / FVector2D to blueprints
#jira UE-45427
Change 3467254 by Mieszko.Zielinski
Added an AI helper BP function that supplies caller with a copy of navigation path given controller is currently following #UE4
Change 3467644 by Dan.Oconnor
Fix for cook issues in ocean when using compilation manager, one issue caused by bad dependencies list, one issue caused by lack of subobject mapping in archetype reinstancing.
#jira UE-45443, UE-45444
Change 3468176 by Dan.Oconnor
Fix dependent blueprints being marked dirty when a blueprint is compiled
Change 3468353 by Michael.Noland
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
Change 3470532 by Dan.Oconnor
Re-enable compilation manager
Change 3470572 by Dan.Oconnor
Fix for pin paramters resetting when an archetype was reinstanced
#jira UE-45619
#rnx
Change 3471949 by Mason.Seay
Adding Primary Assets for testing
Change 3472074 by Ben.Zeigler
#jira UE-45140 Convert iterative cooking to use the Asset Registry as it's only mode, remove old hash and timestamp versions. This allows deleting the entire PackageDependencyInfo module
Change the asset registry iteration to not compute a hash at all, and instead store the script package guids in it's cache.
Expose bIgnoreIniSettingsOutOfDateForIteration and bIgnoreScriptPackagesOutOfDateForIteration in cooker settings, affects rather to listen to ini/script changes when doing iterative cooking
Change 3472079 by Ben.Zeigler
With new incremental cook options, change Fortnite to never care about ini settings, but do care about code changes. This can be changed but from previous discussions we wanted to be more safe than fast here
Change 3473429 by Lukasz.Furman
changed path following update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473476 by Lukasz.Furman
changed crowd simulation path update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473663 by Ben.Zeigler
Fix it so base k2node registers framework version, this is needed for the assetptr fixup I previously added
Change 3473679 by Mason.Seay
Slight cleanup of test map and added ability to teleport across level for easy navigation
Change 3473712 by Marc.Audy
Do default value validation against the actual value of the default entry of an enum rather than the serialized empty autogenerated default value
Change 3474055 by Marc.Audy
When nodes are reconstructed any pins that were previously linked or set to non-default values that have been removed will no longer simply vanish, but instead will remain in an Orphaned state until dealt with.
#jira UE-41828
Change 3474119 by mason.seay
Tweaked Force Feedback test
Change 3474156 by Marc.Audy
Actually enable orphan pin retention
Change 3474382 by Ben.Zeigler
Class.h Header and comment cleanup. Started this because IsChildOf did not have a comment and it's usage is a bit confusing
Change 3474386 by Ben.Zeigler
Close popup window when adding asset class to audit window
Change 3474491 by Ben.Zeigler
Remove ability for Worlds to not be saved as assets, this has been the default since 2014.
Change 3475363 by Marc.Audy
Alt-click now works with orphaned pins
#jira UE-45699
Change 3475523 by Marc.Audy
Fixup Fortnite and Paragon content for orphaned pin errors and warnings
Change 3475623 by Phillip.Kavan
#jira UE-45477 - Fix an EDL assertion on load in a nativized build with one or more Actor subobjects instanced via the EditInlineNew UI in the BP class defaults property editor.
Change summary:
- Modified FEmitDefaultValueHelper::OuterGenerate() to emit code to construct/initialize instanced subobject values that do not have the RF_DefaultSubObject flag set, and also to recursively handle nested subobjects for those values.
- Modified FEmitDefaultValueHelper::HandleInstancedSubobject() to alternatively emit a 'NewObject' assignment statement rather than a 'CreateDefaultSubobject' statement if only RF_ArchetypeObject is set on the source object value.
Change 3476008 by Dan.Oconnor
Fix for failing to preload our super class's subobjects. Effectively moving UBlueprint::ForceLoad calls earlier in loading process. This only results in data resetting to your parent's parent's default value from your parent's default value.
#jira UE-18765
Change 3476115 by Dan.Oconnor
Fix missing category information for inherited functions when using compilation manager
#jira UE-45660
#rnx
Change 3476577 by Lukasz.Furman
added early outs from navmesh layer generation when there's no walkable cells or contours to avoid allocating 0 bytes by next generation steps (behavior differs between platforms)
#ue4
Change 3476587 by Phillip.Kavan
#jira UE-45517 - Fix a regression in which dragging UMG widgets around in the designer view results in redundantly-compounded BP class properties and context menu actions.
Change summary:
- Modified SDesignerView::ClearDropPreviews() to move the widget that was removed from the tree into the transient package. This ensures that FWidgetBlueprintCompiler::CreateClassVariablesFromBlueprint() won't pick them up.
- Modified SDesignerView::ProcessDropAndAddWidget() to also consider any widgets not added to the 'DropPreviews' array as being transient (i.e. also move them into the transient package since they were not added to the tree).
Notes:
- The regression was introduced by the changes in CL# 3410168, and was merged to Main at CL# 3431398.
#rnx
Change 3476723 by Dan.Oconnor
Match old behavior wrt updating implemented interfaces in blueprints - this logic from FKismetEditorUtilities::CompileBlueprint was missing in compilation manager
#jira UE-45468
#rnx
Change 3476948 by Michael.Noland
Framework: Changed AActor::FindComponentByClass (and AActor::GetComponentByClass by extension) to return nullptr when passed a nullptr class, rather than crashing
Change 3476970 by Ben.Zeigler
Fix bug I introduced in 4.16 where assigning assets to multiple chunks did not work properly
Change 3477536 by Marc.Audy
Don't display default value box on linked orphaned input pins
Change 3477835 by Marc.Audy
Fix pins orphaned by deletion of an entry in a user-defined enum disappearing instead of remaining connected
#jira UE-45754
Change 3478027 by Marc.Audy
Minor performance optimization
#rnx
Change 3478198 by Phillip.Kavan
#jira UE-42431 - Remove an unnecessary ensure() when pasting an event node.
Change summary:
- Modified UEdGraphSchema_K2::CreateSubstituteNode() to no longer ensure() that we have a valid PreExistingNode; it's only used for logging when a substitute node is created in response to a conflict with an existing node.
Change 3478485 by Marc.Audy
Eliminate extraneous error messages about orphaned pins on get/set nodes
#jira UE-45749
#rnx
Change 3478756 by Marc.Audy
Fix fallout from changes to DoesDefaultValueMatchAutogenerated for user defined enums
#jira UE-45721
#rnx
Change 3478926 by Marc.Audy
Non-blueprint type structs can no longer be made/broken
Non-blueprint visible properties in structs will no longer have pins created for them
#jira UE-43122
Change 3478988 by Marc.Audy
DeltaTime for a tick function with a tick interval is now correct after disabling and then reenabling the tick function.
#jira UE-45524
Change 3479818 by Marc.Audy
Allow ctrl-drag off of orphan pins
#jira UE-45803
Change 3480214 by Marc.Audy
Modifications to user defined enumerations are now transacted
#jira UE-43866
Change 3480579 by Marc.Audy
Maintain all pin properties through transactions.
#rn Reference pins that are removed and then restored via undo now correctly have the diamond icon instead of the standard circle.
Change 3481043 by Marc.Audy
Make/Break of structs does not depend on having blueprint exposed properties.
Splitting of a struct pin still requires blueprint exposed properties.
#jira UE-45840
#jira UE-45831
Change 3481271 by Ben.Zeigler
Fix the AssetManager chunking code to use ChunkDependencyInfo instead of a hardcoded check for chunk 0
Clean up ChunkDependencyInfo and make it properly public
Move ShouldSetManager to be WITH_EDITOR
Ported from WEX branch
#RB peter.sauerbrei
Change 3481373 by Dan.Oconnor
Reduce reliance on expensive FindDelegateSignature. 3275922 made warnings about a ambiguous search more likely as it preserved names of members on the REINST_ classes
#jira UE-45704
Change 3481380 by Ben.Zeigler
Change it so Struct and Object AssetRegistrySearchable properties do not show up in content browser, they are not helpful
Change 3482362 by Marc.Audy
Fix properties not exposed to blueprint warnings for input properties on function graphs.
#jira UE-45824
Change 3482406 by Ben.Zeigler
#jira UE-45883 Fix Switch On Gameplay Tag Container node, and add switch nodes to TagCheck map
Change 3482498 by Ben.Zeigler
Attempt to fix hot reload issues with Asset Manager. We need to reset and re-acquire the asset classes when rescanning, as they may be pointing to the replaced class
Change 3482517 by Lukasz.Furman
fixed smart navlink update functions removing important flag
#jira UE-45875
Change 3482538 by Marc.Audy
When comparing float, vector, and rotator values for whether the the default matches the autogenerated do not use the string compare because differences in use of decimal or number of 0s after decimal are then considered not the same float
#jira UE-45846
Change 3482773 by Marc.Audy
Don't show default value or pass by reference for exec pins
#jira UE-45868
Change 3482791 by Ben.Zeigler
#jira UE-45800 Correctly dirty game mode blueprint when changing player controller/etc classes from game mode customization
Fix it so MarkBlueprintAsStructurallyModified calls MarkBlueprintAsModified as several fixes were only in the second function
Change 3483131 by Zak.Middleton
#ue4 - InterpToMovementComponent:
- Fix velocity not zeroed when interpolation stops.
- Various fixes when calculating velocity and time when substepping is enabled.
- Improve accuracy of interpolation when looping and there is time remaining after the loop event is hit. Consume the remainder of the time after the event back in the loop (similar to handling a blocking impact).
#jira UE-45690
Change 3483146 by Phillip.Kavan
#jira UE-38358 - Propagate 'const' function flag from interface Blueprint to implementing Blueprints.
Change summary:
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() to call SkeletalRecompileChildren() on dependent BPs when the target is an interface BP.
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified::FRefreshHelper::SkeletalRecompileChildren() to set child BP status to BS_Dirty after compiling.
- Modified ConformInterfaceByName() (FBlueprintEditorUtils) to use the interface's skeleton class for function iteration as well as to match the Function Entry node's 'const' setting to the interface UFunction's signature.
Change 3483340 by Ben.Zeigler
Fix issue querying asset registry after a hot reload, make sure pending kill objects are never considered to be Assets
Change 3483548 by Michael.Noland
Epic Friday: Playing around with some prototype traps
Change 3483700 by Phillip.Kavan
Fix CIS cook crash introduced by last submit.
#rnx
Change 3485217 by Ben.Zeigler
#jira UE-45519 Fix regression introduced in 4.16 where it would no longer cook all maps when no explicit maps were specified in ini or game callback. Moved the code that detects changes before culture/default map code and hardened it to deal with the case where some engine packages were already in the list before it entered the function
Change 3485367 by Dan.Oconnor
Avoid adding mappings to anim node when creating variables on the skeleton class and using the compilation manager
#jira UE-45756
Change 3485565 by Ben.Zeigler
#jira UE-45948 Fix compilation manager to properly reset variable default values after promoting a pin to local variable
Change 3485566 by Marc.Audy
Fix crashes caused by undo/redo of user defined struct changes
#jira UE-45775
#jira UE-45781
Change 3485805 by Michael.Noland
PR #3459: Fix for world origin shifting and SpringArmComponent location lag (Contributed by michail-nikolaev)
#jira UE-43747
Change 3485807 by Michael.Noland
PR #3485: Added additional textures field to paper 2d tileset class (Contributed by gryphonmyers)
#jira UE-44041
Change 3485811 by Michael.Noland
Framework: Fixed a bug in FStreamLevelAction::MakeSafeLevelName to avoid appending the PIE prefix multiple times (fixes functions like Unload Streaming Level when passed a full package name from an instanced streaming level)
Change 3485829 by Michael.Noland
Framework: Made GetWorldAssetPackageFName BlueprintCallable so instanced levels can be unloaded
Change 3485830 by Michael.Noland
PR #3568: add API declarations to ALevelStreamingVolume methods (Contributed by kayama-shift)
#jira UE-45002
Change 3486039 by Michael.Noland
PR #3495: UE-44014: Refreshing node error fixes (Contributed by projectgheist)
- Empty out the ErrorMsg when a node gets refreshed to prevent the same error messages from compounding
- Added support for split pins in UK2Node_Event::IsFunctionEntryCompatible
- Added a missing check for the delegate pin name on the entry node part of UK2Node_Event::IsFunctionEntryCompatible
#jira UE-44014
Change 3486093 by Michael.Noland
PR #3379: Added GAMEPLAYABILITIES_API to all Ability Tasks. (Contributed by ryanjon2040)
#jira UE-42903
Change 3486139 by Michael.Noland
Blueprints: Added new config options for execution wire thickness when not debugging (DefaultExecutionWireThickness) and data wire thicknesses (DefaultDataWireThickness) to the Graph Editor Settings page
#rn
Change 3486154 by Michael.Noland
Framework: Speculative fix for CIS error about FStructOnScope
#rnx
Change 3486180 by Dan.Oconnor
Better match old logic for determining when to skip data only compile
#jira UE-45830
Change 3487276 by Marc.Audy
Fix crash when using Setter with a locally scoped variable
#rnx
Change 3487278 by Marc.Audy
Ensure that pin change notifications occur on all pin breaks unless it is part of a node being garbage collected
Change 3487658 by Marc.Audy
Ensure that child actor template is created for subclasses
#jira UE-45985
Change 3487699 by Marc.Audy
Move non-templated elements out of FArchiveReplaceObjectRef and put them in FArchiveReplaceObjectRefBase
Change 3487813 by Dan.Oconnor
Asset demonstrating a crash
Change 3488101 by Marc.Audy
Fix crash with spawn/construct actor/object from class nodes when they no longer had any pins.
Correctly orphan pins when a node goes to 0 pins.
Change 3488337 by Marc.Audy
Editable pin base should not manually remove pin and let reconstruct node and rewire pins do their job
#jira UE-46020
Change 3488512 by Dan.Oconnor
ConstructObject nodes and SubInstances nodes use skeleton class when compilation manager can provide it
#jira UE-45830, UE-45965
#rnx
Change 3488631 by Michael.Noland
Framework: Fixed a crash when loading a blueprint with a parent class of ALevelBounds caused by trying to register the class default object with a non-existent level
#jira UE-45630
Change 3488665 by Michael.Noland
Blueprints: Improve the details panel customization for optional pin nodes like Struct Member Get/Set
- The category, raw name, and tooltip of the property are now included as part of the filter text as well
- The property tooltip is now displayed when hovering over the property name
- Code updated to use GET_MEMBER_NAME_CHECKED() where appropriate
Change 3489324 by Marc.Audy
Fix recursion causing stack crash
#jira UE-46038
#rnx
Change 3489326 by Marc.Audy
Fix cooking crash
#jira UE-46031
#rnx
Change 3489687 by mason.seay
Assets for testing orphan pins
Change 3489701 by Marc.Audy
Back out changelist 3487278 and 3489443 and make targetted changes for fixing up orphan pin cases where changing connections doesn't remove the pin.
#jira UE-46051
#jira UE-46052
#rnx
Change 3490352 by Dan.Oconnor
Fix for missing WidgetTree on Skeleton class - just look directly at the WidgetBlueprint
#jira UE-46062
Change 3490814 by Marc.Audy
Make callfunction/macro instances save all pins in orphan state more similar to previous behavior
#rnx
Change 3491022 by Dan.Oconnor
Properly clean up 'Key' property when we fail to create a value property
#jira UE-45279
Change 3491071 by Ben.Zeigler
#jira UE-45981 Fix rotation issues, vector/rotator pins with empty strings were not matching due to uninitialized memory.
Change 3491244 by Michael.Noland
Blueprints: Add compile time message back to the output log (will not auto-open the output log if there were no warnings/errors)
#jira UE-32948
Change 3491276 by Michael.Noland
Blueprints: Fixed some bugs where a newly added item would fail show up in the "My Blueprints" tree if there was a filter active (e.g., when promoting a variable)
- Centralized the logic for clearing the filter so it happens when we try and fail to select the item, rather than ad hoc in various other places
- Made it only clear the filter if necessary, rather than (almost) always clearing it when adding an item
#jira UE-43372
Change 3491562 by Marc.Audy
Put back pin removal in to editable pin base and instead modify the pin destroy implementation to take down child split pins with it
#jira UE-46020
#rnx
Change 3491658 by Marc.Audy
Unify RemoveUserDefinedPin implementations. Use version that has break to avoid size change assert
#rnx
Change 3491946 by Marc.Audy
ReconstructSinglePin no longer destroys OldPin (avoids oprhaned sub pins being destroyed before reparented)
RewireOldPinsToNewPins now destroys OldPins at the end (calling code no longer reponsible)
DestroyImpl now prunes out SubPins that had already been trashed
#rnx
Change 3492040 by Marc.Audy
Discard exec/then pins from a callfunction that has been converted to a pure node
#rnx
Change 3492200 by Zak.Middleton
#ue4 - Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size.
Fixes possible regression from CL 3359561 that removed the Reset(...) entirely.
#jira UE-46012
Change 3492290 by Ben.Zeigler
#jira UE-46108 Fix StringLibrary Mid to never crash, Substring had already been fixed
Change 3492311 by Marc.Audy
Don't clear the pin type if what you're connecting to's pin type is wildcard
#rnx
Change 3492680 by Dan.Oconnor
Handle missing generated class when using compilation manager - tested by forcing compile of BP_ParentClassIsMissingType.uasset
Change 3492826 by Marc.Audy
Don't do pin connection list change notifications from DestroyPins while regenerating on load
#jira UE-46112
#rnx
Change 3492851 by Michael.Noland
Core: Fixed various crashes when using UObject::CallFunctionByNameWithArguments with non-trivial argument types by properly initializing the allocated parameters
Change 3492852 by Michael.Noland
Framework: Fixed a crash if ACharacter::FindComponentByClass was passed a nullptr class
Change 3492934 by Marc.Audy
Fix ensure and crash delete macro containing orphaned pin
#rnx
Change 3493079 by Dan.Oconnor
Fix for crash when opening ThirdPersonAnimBlueprint and ThirdPersonAnimBlueprint_Perf then clicking 'Compile' button in ThirdPersonAnimBlueprint editor. Make sure the convenience members in the derived compilers get set when we relink child classes (which requires making cdos, which requires PropagateValuesToCDO..)
#rnx
Change 3493346 by Phillip.Kavan
#jira UE-40560 - Fix a reported crash when pasting nodes between unrelated Blueprint graphs.
Change summary:
- Modified FEdGraphUtilities::PostProcessPastedNodes() to ensure() on a NULL pin entry; this will allow execution to continue while still alerting us since it is an unexpected result. Also added an 'else' case to then remove the NULL entry so that PostPasteNode() implementations don't all have to guard against NULL pin entries. When the node is reconstructed, the NULL entry will be replaced with the correct pin initialized to its default values.
- Modified UEdGraphPin::ImportTextItem() to add some additional logging to parse error cases when importing pin properties from source T3D text. Hopefully this gives us more information when this is encountered in the future.
Change 3493938 by Michael.Noland
Blueprints: Prevent issues with renaming event dispatchers to contain periods (this may be disallowed in the future, but they no longer become uneditable)
#jira UE-45780
Change 3493945 by Michael.Noland
Blueprints: Fixed GetDelegatePoperty typos
#rnx
Change 3493997 by Michael.Noland
Blueprints: Partially reverting changes from CL# 3319966 to reroute nodes, restoring their alignment but losing the symmetrical grab handle changes
#jira UE-45760
Change 3493998 by Dan.Oconnor
Fix rare crash in RefreshStandAloneDefaultsEditor when the blueprint editor is opened and a blueprint had errors in it
Note: I stumbled across this by running a unit test and then opening a blueprint in the BPE. CrashReporter indicates 3 crashes in the last 3 days
Change 3494025 by Michael.Noland
Engine: Deleted some dead code (DEBUGGING_VIEWPORT_SIZES)
#rnx
Change 3494026 by Michael.Noland
Blueprints: V0 of a BlueprintCallable/BlueprintPure function fuzzer
- Calls exposed methods with default parameters on classes it is able to spawn for now, which catches crashes due to null and /0 but not out of bounds issues or ones on classes it can't spawn due to classwithin, abstract, etc...
- Can be called using Test.ScriptFuzzing, won't be integrated into automated tests until it is more fully fleshed out and all known issues are addressed
#rnx
Change 3496382 by Ben.Zeigler
Fix ensure when launching editor with cook on the side and incremental cooking enabled. It now flushes the background asset gather when calling the sync load all assets if one is in progress
Change 3496688 by Marc.Audy
Avoid crashing in component instance data if (for some reason) the Actor's root component isn't properly set up
#jira UE-46073
Change 3496830 by Michael.Noland
Editor: Change FEditorCategoryUtils methods to take UStruct* instead of UClass*, as they are just reading metadata
#rnx
Change 3496840 by Michael.Noland
Framework: Remove the requirement for a local player in UCheatManager::CheatScript, so it can be be started from the server side (doesn't change the availability of the cheat manager, just allows things like the redundant "cheat cheatscript scriptname" to work)
Change 3497038 by Michael.Noland
Fortnite: Added UFortDeveloperSettings to allow developers to auto-run cheats in PIE (does not occur in -game or outside of WITH_EDITOR builds)
- You can specify a list of cheat commands to run when a pawn is possessed (also needs CL# 3496840 for cheatscripts)
- You can also specify a set of items to grant to your local inventory when it is created
Change 3497204 by Marc.Audy
Fix AbilitySystemComponent not being blueprint readable.
#rnx
Change 3497668 by Mieszko.Zielinski
Fixed a crash in BT editor when dealing with enum-typed Blackboard-keys pointing to enum values that have been deleted #UE4
#jira UE-43659
Change 3497677 by Mieszko.Zielinski
Added a community-suggested working solution to patching up dynamic navmesh after world offset #UE4
Also, fixed a crash related to navmesh rebuilding if generation was configured to lazily gather navigatble geometry
#jira UE-41293
Change 3497678 by Mieszko.Zielinski
Marked AbstractNavData class as transient #UE4
We never want to save it to levels
Change 3497679 by Mieszko.Zielinski
Made NavModifierVolume responsive to editor-time property changes #UE4
#jira UE-32831
Change 3497900 by Dan.Oconnor
Fix bad skel reference when using construct object from class, just limiting scope of 3491946. To reproduce the bug just nativize QA Game, including the TM-Gameplay level
#rnx
Change 3497904 by Dan.Oconnor
Use K2Node_Event::FindEventSignatureFunction in order when directly generating the skeleton generated class to get event params correct
#jira UE-46153
#rnx
Change 3497907 by Dan.Oconnor
Correctly set blueprint visibility flags on params for inherited functions when generating the skeleton class
#rnx
#jira UE-46186
Change 3498218 by mason.seay
Updates to pin testing BP's
Change 3498323 by Mieszko.Zielinski
Made UNavCollision instance assigned to StaticMesh not get re-created from scratch every single time any StaticMesh property changes #UE4
Recreation was resulting in some of the UNavCollision's properties not getting saved and the way we were recreating the nav collision could also interfere with undo buffers
#jira UE-44891
Change 3499007 by Marc.Audy
Allow systems to hook Pre and PostCompile to do custom behaviors
Change 3499013 by Mieszko.Zielinski
Made AbstractNavData class non-transient again #UE4
Implemented AbstractNavData instances' transientness in a different manner.
#jira UE-46194
Change 3499204 by Mieszko.Zielinski
Introduced CrowdManagerBase, an engine-level class that can be extended to implement custom crowd management #Orion
Extracted FRecastQueryFilter into a separate file, which will break some peoples' compilation.
#jira UE-43799
Change 3499321 by mason.seay
Updated bp for struct testing
Change 3499388 by Marc.Audy
Allow the compiler log to store off potential messages from earlier in the compile cycle (early validation), that can be committed later (for example once pruning is completed).
Change 3499390 by Marc.Audy
Generate the orphan pin error messages during EarlyValidation, but cache until the regular validation phase. This ensures all are generated, but only those that aren't pruned will be emitted.
#rnx
Change 3499420 by Michael.Noland
Engine: Introduced a new version of UEngine::GetWorldFromContextObject which takes an enum specifying the behavior on failures and updated all existing uses
The new version intentionally does not have a default value for ErrorMode, callers need to think about which variant of behavior they want:
- ReturnNull: Silently returns nullptr, the calling code is expected to handle this gracefully
- LogAndReturnNull: Raises a runtime error but still returns nullptr, the calling code is expected to handle this gracefully
- Assert: Asserts, the calling code is not expecting to handle a failure gracefully
- Deprecated UEngine::GetWorldFromContextObject(object, boolean) and changed the default behavior for the deprecated instances to do LogAndReturnNull rather than Assert, based on the real-world call pattern
- Introduced GetWorldFromContextObjectChecked(object) as a shorthand for passing in EGetWorldErrorMode::Assert
- Made UObject::GetWorldChecked() actually assert if it would return nullptr (under some cases the old function could silently return nullptr while reporting bSupported = true, so it neither ensured nor checked)
- Fixed a race condition in the 'is implemented' bookkeeping logic in GetWorld()/GetWorldChecked() by confining it to the game thread and added a check() to ImplementsGetWorld() to make it clear that it only works on the game thread
The typical recommended call pattern is to use something like:
if (UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull))
{
... Do something with World
}
Handling the failure case but requesting a log message (with BP call stack printed out) if it failed. This is now also the default behavior for old calls to UEngine::GetWorldFromContextObject(Object) (using the default value of bChecked=true), which is a behavior change but it matches how the function was being used in practice; the vast majority of call sites actually expected it to potentially fail and handled the nullptr case gracefully; very few places used the return value unguarded and wanted it to assert when passed a nullptr.
#jira UE-42458
Change 3499429 by Michael.Noland
Engine: Removed a bogus TODO (the problematic code had already been reworked)
#rnx
Change 3499470 by Michael.Noland
Core: Improved and corrected the comment for ensure()
- It doesn't crash when checking is disabled (and hasn't since UE3, maybe ever?)
- It now only fires once per ensure() by default, added a note about ensureAlways()
#rnx
Change 3499643 by Marc.Audy
Use TGuardValue instead of manually managing it
#rnx
Change 3499874 by Marc.Audy
Display <Unnamed> instead of nothing for Pins with blank display name in the compiler log
Change 3499875 by Marc.Audy
When changing function parameter types, don't orphan a pin on the function entry/exit nodes (but do at the call sites)
#jira UE-46224
Change 3499927 by Dan.Oconnor
UField::Serialize no longer serialize's its next ptr, UStruct::Serialize serializes all Children properties instead. This resolves a hard circular dependency between function libraries that EDL detected. It was resolved in an ad hoc way by the old linker
#jira UE-43458
Change 3499953 by Michael.Noland
Core: Created a variant of ensure that does runtime error logging without stopping in the debugger and some related functions that print a warning or error and may trigger a BP callstack (under the same rules as FFrame::KismetExecutionMessage)
- These are WIP and the API may change in the future, but are being used to fix various crashes found by fuzzing BP exposed functions
Change 3499957 by Michael.Noland
Animation: Added runtime errors for nullptr ControlRigs passed into BP methods
#rnx
Change 3499958 by Michael.Noland
Blueprints: Changed an ensure in UKismetNodeHelperLibrary::GetValidValue to a runtime error
#rnx
Change 3499959 by Michael.Noland
Engine: Downgrade various checks() to ensures() in the runtime asset cache functions exposed to Blueprints
Change 3499960 by Michael.Noland
AI: Changed UBTFunctionLibrary to not check/ensure if passed a null world context object
Change 3499968 by Michael.Noland
Editor: Fixed a couple of crashes in UEditorLevelUtils when passed nullptr arguments, and reformatted the entire file to fix widespread indentation issues
#rnx
Change 3499969 by Michael.Noland
Engine: Changed the verbosity of the failure log message of UEngine::GetWorldFromContextObject(..., LogAndReturnNull) from Warning to Error, so it always prints out a BP callstack
#rnx
Change 3499973 by Michael.Noland
Rendering: Fixed asserts in various UKismetRenderingLibrary methods if passed a nullptr for the WorldContextObject
- Also fixed flipped warnings in the failure cases for EndDrawCanvasToRenderTarget
Change 3499979 by Michael.Noland
Editor: Prevented a crash in UMaterialEditingLibrary::RecompileMaterial when passed a nullptr material
Change 3499984 by Michael.Noland
Physics: Prevented a crash in UTraceQueryTestResults::AssertEqual when passed in nullptr for Expected
Change 3499993 by Michael.Noland
Blueprints: Added validation when renaming variables, functions, components, multicast delegates, etc... to prevent names from containing some unacceptable characters
- This validation only kicks in when trying to rename an item, so bad names in existing content are 'grandfathered in'
- These bad names can cause bugs when working with content that contains these characters (e.g., names that contain a period cannot be found via FindObject<T>)
- Currently only . is banned, but eventually we may expand it to include all of INVALID_OBJECTNAME_CHARACTERS
Change 3500009 by Michael.Noland
Blueprints: Made the fuzzer skip classes declared in UnrealEd for now (some of the exposed methods change global state that can cause other tests to fail as the fuzzer isn't particularly sandboxed ATM)
#rnx
Change 3500011 by Michael.Noland
Android: Fixed a crash in UAndroidPermissionFunctionLibrary::AcquirePermissions when called with an empty array on non-Android platforms
Change 3500012 by Michael.Noland
Editor: Prevent a crash in UEditorTutorial::OpenAsset when passed a nullptr Asset
Change 3500014 by Michael.Noland
Engine: Changed FRuntimeAssetCacheFilesystemBackend::ClearCache(NAME_None) to not try to clear all cache directories (there is a separate no-args method for that)
Change 3500019 by Michael.Noland
Core: Fixed some more issues with CallFunctionByNameWithArguments and initializing / destroying parameters
- It was skipping the return value and incorrectly relying on the FirstPropertyToInit list which isn't set for by ref arguments
Change 3500020 by Michael.Noland
Automation: Prevent UFunctionalTestingManager::RunAllFunctionalTests and UFunctionalTestingManager* UFunctionalTestingManager::GetManager from crashing when a manager cannot be created (because we can't route to a world)
Change 3501062 by Marc.Audy
MakeArray AddInputPin is often used as part of node expansion, so need to move the transaction out of the function
Fix inability to undo/redo pin additions to sequence node
Add a K2Node_AddPinInterface to generalize the interface that K2Nodes implement to interact with SGraphNodeK2Sequence so it can be more generally used
#jira UE-46164
#jira UE-46270
Change 3501330 by Michael.Noland
AI: Fix an error on shutdown when the CDO of UAIPerceptionComponent tries to clean up (as it was never registered in the first place)
#jira UE-46271
Change 3501356 by Marc.Audy
Fix crash when multi-editing actor blueprints
#jira UE-46248
Change 3501408 by Michael.Noland
Core: Improve 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)
Change 3501457 by Phillip.Kavan
#jira UE-46054 - Fix crash when launching a packaged build that includes a nativized Blueprint instance with a ChildActorComponent instanced via an AddComponent node.
Change summary:
- Removed UK2Node_AddComponent::PostDuplicate(). This eliminates the creation of redundant component templates that were being unnecessarily created during the Blueprint duplication that precedes the nativization pass.
- Modified SMyBlueprint::OnDuplicateAction() to call MakeNewComponentTemplate() in response to a graph duplication action within the same Blueprint context (replaces previous UK2Node_AddComponent::PostDuplicate() impl).
- Modified FEmitDefaultValueHelper::HandleSpecialTypes() to force AddComponent-based CAC-owned template objects in the emitted codegen to use the UDynamicClass as the Outer when instancing. This matches what we already do for SCS-based CAC-owned template objects - that logic was added in CL# 3270456, and this matches up with FBlueprintNativeCodeGenModule::FindReplacedNameAndOuter(), where we specifically handle CAC-owned template objects.
Change 3502741 by Phillip.Kavan
#jira UE-45782 - Fix undo for index pin type changes.
Change summary:
- Modified SGraphPinIndex::OnTypeChanged() to call Modify() on the pin that was changed.
Change 3502939 by Michael.Noland
Back out changelist 3499927
Change 3503087 by Marc.Audy
Re-fixed ocean content as editor had also changed so had to take theirs and redo
#rnx
Change 3503266 by Ben.Zeigler
#jira UE-46335 Fix regression added in 4.16 where AssetRegistry GetAncesorClassNames/GetDerivedClassNames were not working properly in cooked builds for classes not in memory
Change 3503325 by mason.seay
updated Anim BP to prep for pin testing
Change 3503445 by Marc.Audy
Fix crash caused by OldPins being destroyed before rewiring
#rnx
Change 3505024 by Marc.Audy
Fix NodeEffectsPanel blueprint as it was using pins that no longer existed
#rnx
Change 3505254 by Marc.Audy
Don't include orphan pins when gather source property names
If a property doesn't exist for a source property name just skip the property rather than crashing
#jira UE-46345
#rnx
Change 3506125 by Ben.Zeigler
#jira UE-46311 Fix issues when blueprints are reloaded in place, it needs to remove them from root properly and sanitize the old class. It's still not clear why they are being reloaded in place
Change 3506334 by Dan.Oconnor
Move UAnimGraphNode_Base::PreloadRequiredAssets up to K2Node, make sure nodes get a chance to preload data before compilation manager compiles newly loaded blueprints
#jira UE-46411
Change 3506439 by Dan.Oconnor
Return to pre 3488512 behavior for construct object nodes. This means that we can still get warnings on load when users compile after saving a blueprint, but the current behavior loses default values because it's lookng at the skeleton cdo
#jira UE-46308
Change 3506468 by Dan.Oconnor
Return to pre 3488512 behavior, as it causes bad default values
#jira UE-46414
#rnx
Change 3506733 by Marc.Audy
Use the most up to date class to determine whether a property still exists when adding pins during reconstruction
#jira UE-45965
#author Dan.OConnor
#rnx
Change 3507531 by Ben.Zeigler
#jira UE-46449 Better fix to flush the asset registry queue when the editor requests a synchronous scan at startup. Sometimes it can take a few frames because of file handle delays
Change 3507924 by mason.seay
Sanity save of TM-Gameplay and sublevels to maybe resolve level streaming issues
Change 3507962 by Marc.Audy
Remake changes from CL# 3150796 wiped out by WEX-Staging merge to Main in CL# 3479958
#rnx
Change 3509131 by Dan.Oconnor
Compilation manager compile on load flow never called FindExportsInMemoryFirst, which is critical to prevent reloading of UBlueprintGeneratedClasses when Rename clears the export table
#jira UE-46311
Change 3509345 by Marc.Audy
CVar to disable orphan pins if necessary
#rnx
Change 3509959 by Marc.Audy
Protect against crashing due to large values in Timespan From functions
#jira UE-43840
Change 3510040 by Marc.Audy
Remove all the old unneeded ShooterGame test maps
#rnx
[CL 3510073 by Marc Audy in Main branch]
2017-06-26 15:07:18 -04:00
// later point. Same goes for in-editor world assets because they are used to manage level script blueprints.
else if ( ! BlueprintAsset & & ( ! WorldAsset | | WorldAsset - > WorldType ! = EWorldType : : Editor ) )
2014-08-23 20:16:29 -04:00
{
ClearAssetActions ( AssetObject ) ;
}
2014-10-10 17:48:56 -04:00
if ( ! bIsInitializing )
{
EntryRefreshDelegate . Broadcast ( AssetObject ) ;
}
2022-06-30 11:25:52 -04:00
if ( HasClassFiltering ( ) )
{
// Filter out actions by node class
AssetActionList . RemoveAllSwap ( [ this ] ( UBlueprintNodeSpawner * InAction )
{
return ! IsClassAllowed ( InAction - > NodeClass . Get ( ) , EPermissionsContext : : Node ) ;
} ) ;
}
2014-08-11 18:39:28 -04:00
}
2015-02-16 03:50:03 -05:00
//------------------------------------------------------------------------------
void FBlueprintActionDatabase : : RefreshComponentActions ( )
{
2022-07-01 14:16:41 -04:00
TRACE_CPUPROFILER_EVENT_SCOPE ( FBlueprintActionDatabase : : RefreshComponentActions ) ;
2015-02-16 03:50:03 -05:00
check ( ComponentTypes ) ;
FActionList & ClassActionList = ActionRegistry . FindOrAdd ( UBlueprintComponentNodeSpawner : : StaticClass ( ) ) ;
ClassActionList . Empty ( ComponentTypes - > Num ( ) ) ;
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3510040)
#lockdown Nick.Penwarden
=====================================
MAJOR FEATURES + CHANGES
=====================================
Change 3459524 by Marc.Audy
Get/Set of properties that were previously BPRW/BPRO should error when used
#jira UE-20993
Change 3460004 by Phillip.Kavan
#jira UE-45171 - Fix C++ compilation failures during packaging caused by nativizing a Blueprint that overrides a native function with a 'TSubclassOf' parameter or return value.
Change summary:
- Modified FKismetCompilerContext::CreateParametersForFunction() to pass the 'CPF_UObjectWrapper' flag through to new function parameter properties during Blueprint compilation.
Change 3461210 by Phillip.Kavan
#jira UE-44505 - Fix occasional Blueprint editor crashes that could occur while rebuilding the context menu from the action registry.
Change summary:
- Modified FBlueprintActionDatabase::FActionRegistry to use an FObjectKey as the key type. This allows us to test entries for UObject validity before rebuilding context menu items based on the action database.
- Changed FBlueprintActionInfo::CachedOwnerClass to be a TWeakObjectPtr rather than a raw UClass* since it's based on the ActionOwner, which could potentially become invalid after the OwnerClass has been cached.
- Modified FBlueprintActionDatabase::RefreshAssetActions() to exclude World assets if the WorldType is not EWorldType::Editor. This eliminates an issue with unreferenced "inactive" GC'd world objects being left in the BP action registry after cooking, at which point the keys could become invalid.
- Added FBlueprintActionDatabase::DeferredRemoveEntry() to allow for scheduling removal of entries from outside of the database if they are known to be invalid.
- Modified FBlueprintActionDatabase::Tick() to handle deferred entry removals.
- Modified FBlueprintActionMenuBuilder::RebuildActionList() to both test actions for validity before building menu items and schedule removal of invalid actions on the next tick.
Notes:
- Alternatively we could just include UObject keys in the database's AddReferencedObject impl, but that would then prevent objects from ever being GC'd if they are not explicitly removed. For most entries the action database takes the approach of explicitly removing entries via delegate when the UObject is destroyed, so I chose to use a TWeakObjectPtr instead so that any entries that may not be getting explicitly removed via delegate will now simply become invalidated if the UObject key is GC'd due to not being referenced. I also set it up to clean and remove any entries (along with any associated node spawners) that are found to be invalid the next time we open the BP editor.
Change 3461373 by Lukasz.Furman
fixed async navmesh rebuilds not kicking in for requests from navdata.bForceRebuildOnLoad
#jira UE-44231
Change 3461409 by Lukasz.Furman
fixed reenabling automatic navmesh generation in Editor Preferences
#ue4
Change 3461550 by Ben.Zeigler
#jira UE-45328 Fix local variable support for Redirectors and other save-time validation. We need to run the local variables to UProperty and back at save time
Add new flag PPF_SerializedAsImportText which is used for BP pins/default values and indicates that something has been serialized as import text and so needs to handle string asset redirectors
Change 3462625 by Zak.Middleton
#ue4 - Fix InterpToMovementComponent not setting velocity on the object it moves. Fix movement rate when substepping enabled (other related fixes to come).
github PR #3620
Change 3462796 by Dan.Oconnor
Fix for spamming BroadcastBlueprintReinstanced and for creating CDO at wrong time when compiling FrontEnd.uasset in OrionGame
#jira UE-45434
Change 3462995 by Ben.Zeigler
#jira UE-16941 Fix it so Load Asset node works with a literal value as well as a connected pin
Change 3463099 by Ben.Zeigler
#jira UE-45471 Allow abstract base classes for primary assets
Change 3464809 by Marc.Audy
Expose FVector2D / FVector2D to blueprints
#jira UE-45427
Change 3467254 by Mieszko.Zielinski
Added an AI helper BP function that supplies caller with a copy of navigation path given controller is currently following #UE4
Change 3467644 by Dan.Oconnor
Fix for cook issues in ocean when using compilation manager, one issue caused by bad dependencies list, one issue caused by lack of subobject mapping in archetype reinstancing.
#jira UE-45443, UE-45444
Change 3468176 by Dan.Oconnor
Fix dependent blueprints being marked dirty when a blueprint is compiled
Change 3468353 by Michael.Noland
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
Change 3470532 by Dan.Oconnor
Re-enable compilation manager
Change 3470572 by Dan.Oconnor
Fix for pin paramters resetting when an archetype was reinstanced
#jira UE-45619
#rnx
Change 3471949 by Mason.Seay
Adding Primary Assets for testing
Change 3472074 by Ben.Zeigler
#jira UE-45140 Convert iterative cooking to use the Asset Registry as it's only mode, remove old hash and timestamp versions. This allows deleting the entire PackageDependencyInfo module
Change the asset registry iteration to not compute a hash at all, and instead store the script package guids in it's cache.
Expose bIgnoreIniSettingsOutOfDateForIteration and bIgnoreScriptPackagesOutOfDateForIteration in cooker settings, affects rather to listen to ini/script changes when doing iterative cooking
Change 3472079 by Ben.Zeigler
With new incremental cook options, change Fortnite to never care about ini settings, but do care about code changes. This can be changed but from previous discussions we wanted to be more safe than fast here
Change 3473429 by Lukasz.Furman
changed path following update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473476 by Lukasz.Furman
changed crowd simulation path update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473663 by Ben.Zeigler
Fix it so base k2node registers framework version, this is needed for the assetptr fixup I previously added
Change 3473679 by Mason.Seay
Slight cleanup of test map and added ability to teleport across level for easy navigation
Change 3473712 by Marc.Audy
Do default value validation against the actual value of the default entry of an enum rather than the serialized empty autogenerated default value
Change 3474055 by Marc.Audy
When nodes are reconstructed any pins that were previously linked or set to non-default values that have been removed will no longer simply vanish, but instead will remain in an Orphaned state until dealt with.
#jira UE-41828
Change 3474119 by mason.seay
Tweaked Force Feedback test
Change 3474156 by Marc.Audy
Actually enable orphan pin retention
Change 3474382 by Ben.Zeigler
Class.h Header and comment cleanup. Started this because IsChildOf did not have a comment and it's usage is a bit confusing
Change 3474386 by Ben.Zeigler
Close popup window when adding asset class to audit window
Change 3474491 by Ben.Zeigler
Remove ability for Worlds to not be saved as assets, this has been the default since 2014.
Change 3475363 by Marc.Audy
Alt-click now works with orphaned pins
#jira UE-45699
Change 3475523 by Marc.Audy
Fixup Fortnite and Paragon content for orphaned pin errors and warnings
Change 3475623 by Phillip.Kavan
#jira UE-45477 - Fix an EDL assertion on load in a nativized build with one or more Actor subobjects instanced via the EditInlineNew UI in the BP class defaults property editor.
Change summary:
- Modified FEmitDefaultValueHelper::OuterGenerate() to emit code to construct/initialize instanced subobject values that do not have the RF_DefaultSubObject flag set, and also to recursively handle nested subobjects for those values.
- Modified FEmitDefaultValueHelper::HandleInstancedSubobject() to alternatively emit a 'NewObject' assignment statement rather than a 'CreateDefaultSubobject' statement if only RF_ArchetypeObject is set on the source object value.
Change 3476008 by Dan.Oconnor
Fix for failing to preload our super class's subobjects. Effectively moving UBlueprint::ForceLoad calls earlier in loading process. This only results in data resetting to your parent's parent's default value from your parent's default value.
#jira UE-18765
Change 3476115 by Dan.Oconnor
Fix missing category information for inherited functions when using compilation manager
#jira UE-45660
#rnx
Change 3476577 by Lukasz.Furman
added early outs from navmesh layer generation when there's no walkable cells or contours to avoid allocating 0 bytes by next generation steps (behavior differs between platforms)
#ue4
Change 3476587 by Phillip.Kavan
#jira UE-45517 - Fix a regression in which dragging UMG widgets around in the designer view results in redundantly-compounded BP class properties and context menu actions.
Change summary:
- Modified SDesignerView::ClearDropPreviews() to move the widget that was removed from the tree into the transient package. This ensures that FWidgetBlueprintCompiler::CreateClassVariablesFromBlueprint() won't pick them up.
- Modified SDesignerView::ProcessDropAndAddWidget() to also consider any widgets not added to the 'DropPreviews' array as being transient (i.e. also move them into the transient package since they were not added to the tree).
Notes:
- The regression was introduced by the changes in CL# 3410168, and was merged to Main at CL# 3431398.
#rnx
Change 3476723 by Dan.Oconnor
Match old behavior wrt updating implemented interfaces in blueprints - this logic from FKismetEditorUtilities::CompileBlueprint was missing in compilation manager
#jira UE-45468
#rnx
Change 3476948 by Michael.Noland
Framework: Changed AActor::FindComponentByClass (and AActor::GetComponentByClass by extension) to return nullptr when passed a nullptr class, rather than crashing
Change 3476970 by Ben.Zeigler
Fix bug I introduced in 4.16 where assigning assets to multiple chunks did not work properly
Change 3477536 by Marc.Audy
Don't display default value box on linked orphaned input pins
Change 3477835 by Marc.Audy
Fix pins orphaned by deletion of an entry in a user-defined enum disappearing instead of remaining connected
#jira UE-45754
Change 3478027 by Marc.Audy
Minor performance optimization
#rnx
Change 3478198 by Phillip.Kavan
#jira UE-42431 - Remove an unnecessary ensure() when pasting an event node.
Change summary:
- Modified UEdGraphSchema_K2::CreateSubstituteNode() to no longer ensure() that we have a valid PreExistingNode; it's only used for logging when a substitute node is created in response to a conflict with an existing node.
Change 3478485 by Marc.Audy
Eliminate extraneous error messages about orphaned pins on get/set nodes
#jira UE-45749
#rnx
Change 3478756 by Marc.Audy
Fix fallout from changes to DoesDefaultValueMatchAutogenerated for user defined enums
#jira UE-45721
#rnx
Change 3478926 by Marc.Audy
Non-blueprint type structs can no longer be made/broken
Non-blueprint visible properties in structs will no longer have pins created for them
#jira UE-43122
Change 3478988 by Marc.Audy
DeltaTime for a tick function with a tick interval is now correct after disabling and then reenabling the tick function.
#jira UE-45524
Change 3479818 by Marc.Audy
Allow ctrl-drag off of orphan pins
#jira UE-45803
Change 3480214 by Marc.Audy
Modifications to user defined enumerations are now transacted
#jira UE-43866
Change 3480579 by Marc.Audy
Maintain all pin properties through transactions.
#rn Reference pins that are removed and then restored via undo now correctly have the diamond icon instead of the standard circle.
Change 3481043 by Marc.Audy
Make/Break of structs does not depend on having blueprint exposed properties.
Splitting of a struct pin still requires blueprint exposed properties.
#jira UE-45840
#jira UE-45831
Change 3481271 by Ben.Zeigler
Fix the AssetManager chunking code to use ChunkDependencyInfo instead of a hardcoded check for chunk 0
Clean up ChunkDependencyInfo and make it properly public
Move ShouldSetManager to be WITH_EDITOR
Ported from WEX branch
#RB peter.sauerbrei
Change 3481373 by Dan.Oconnor
Reduce reliance on expensive FindDelegateSignature. 3275922 made warnings about a ambiguous search more likely as it preserved names of members on the REINST_ classes
#jira UE-45704
Change 3481380 by Ben.Zeigler
Change it so Struct and Object AssetRegistrySearchable properties do not show up in content browser, they are not helpful
Change 3482362 by Marc.Audy
Fix properties not exposed to blueprint warnings for input properties on function graphs.
#jira UE-45824
Change 3482406 by Ben.Zeigler
#jira UE-45883 Fix Switch On Gameplay Tag Container node, and add switch nodes to TagCheck map
Change 3482498 by Ben.Zeigler
Attempt to fix hot reload issues with Asset Manager. We need to reset and re-acquire the asset classes when rescanning, as they may be pointing to the replaced class
Change 3482517 by Lukasz.Furman
fixed smart navlink update functions removing important flag
#jira UE-45875
Change 3482538 by Marc.Audy
When comparing float, vector, and rotator values for whether the the default matches the autogenerated do not use the string compare because differences in use of decimal or number of 0s after decimal are then considered not the same float
#jira UE-45846
Change 3482773 by Marc.Audy
Don't show default value or pass by reference for exec pins
#jira UE-45868
Change 3482791 by Ben.Zeigler
#jira UE-45800 Correctly dirty game mode blueprint when changing player controller/etc classes from game mode customization
Fix it so MarkBlueprintAsStructurallyModified calls MarkBlueprintAsModified as several fixes were only in the second function
Change 3483131 by Zak.Middleton
#ue4 - InterpToMovementComponent:
- Fix velocity not zeroed when interpolation stops.
- Various fixes when calculating velocity and time when substepping is enabled.
- Improve accuracy of interpolation when looping and there is time remaining after the loop event is hit. Consume the remainder of the time after the event back in the loop (similar to handling a blocking impact).
#jira UE-45690
Change 3483146 by Phillip.Kavan
#jira UE-38358 - Propagate 'const' function flag from interface Blueprint to implementing Blueprints.
Change summary:
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() to call SkeletalRecompileChildren() on dependent BPs when the target is an interface BP.
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified::FRefreshHelper::SkeletalRecompileChildren() to set child BP status to BS_Dirty after compiling.
- Modified ConformInterfaceByName() (FBlueprintEditorUtils) to use the interface's skeleton class for function iteration as well as to match the Function Entry node's 'const' setting to the interface UFunction's signature.
Change 3483340 by Ben.Zeigler
Fix issue querying asset registry after a hot reload, make sure pending kill objects are never considered to be Assets
Change 3483548 by Michael.Noland
Epic Friday: Playing around with some prototype traps
Change 3483700 by Phillip.Kavan
Fix CIS cook crash introduced by last submit.
#rnx
Change 3485217 by Ben.Zeigler
#jira UE-45519 Fix regression introduced in 4.16 where it would no longer cook all maps when no explicit maps were specified in ini or game callback. Moved the code that detects changes before culture/default map code and hardened it to deal with the case where some engine packages were already in the list before it entered the function
Change 3485367 by Dan.Oconnor
Avoid adding mappings to anim node when creating variables on the skeleton class and using the compilation manager
#jira UE-45756
Change 3485565 by Ben.Zeigler
#jira UE-45948 Fix compilation manager to properly reset variable default values after promoting a pin to local variable
Change 3485566 by Marc.Audy
Fix crashes caused by undo/redo of user defined struct changes
#jira UE-45775
#jira UE-45781
Change 3485805 by Michael.Noland
PR #3459: Fix for world origin shifting and SpringArmComponent location lag (Contributed by michail-nikolaev)
#jira UE-43747
Change 3485807 by Michael.Noland
PR #3485: Added additional textures field to paper 2d tileset class (Contributed by gryphonmyers)
#jira UE-44041
Change 3485811 by Michael.Noland
Framework: Fixed a bug in FStreamLevelAction::MakeSafeLevelName to avoid appending the PIE prefix multiple times (fixes functions like Unload Streaming Level when passed a full package name from an instanced streaming level)
Change 3485829 by Michael.Noland
Framework: Made GetWorldAssetPackageFName BlueprintCallable so instanced levels can be unloaded
Change 3485830 by Michael.Noland
PR #3568: add API declarations to ALevelStreamingVolume methods (Contributed by kayama-shift)
#jira UE-45002
Change 3486039 by Michael.Noland
PR #3495: UE-44014: Refreshing node error fixes (Contributed by projectgheist)
- Empty out the ErrorMsg when a node gets refreshed to prevent the same error messages from compounding
- Added support for split pins in UK2Node_Event::IsFunctionEntryCompatible
- Added a missing check for the delegate pin name on the entry node part of UK2Node_Event::IsFunctionEntryCompatible
#jira UE-44014
Change 3486093 by Michael.Noland
PR #3379: Added GAMEPLAYABILITIES_API to all Ability Tasks. (Contributed by ryanjon2040)
#jira UE-42903
Change 3486139 by Michael.Noland
Blueprints: Added new config options for execution wire thickness when not debugging (DefaultExecutionWireThickness) and data wire thicknesses (DefaultDataWireThickness) to the Graph Editor Settings page
#rn
Change 3486154 by Michael.Noland
Framework: Speculative fix for CIS error about FStructOnScope
#rnx
Change 3486180 by Dan.Oconnor
Better match old logic for determining when to skip data only compile
#jira UE-45830
Change 3487276 by Marc.Audy
Fix crash when using Setter with a locally scoped variable
#rnx
Change 3487278 by Marc.Audy
Ensure that pin change notifications occur on all pin breaks unless it is part of a node being garbage collected
Change 3487658 by Marc.Audy
Ensure that child actor template is created for subclasses
#jira UE-45985
Change 3487699 by Marc.Audy
Move non-templated elements out of FArchiveReplaceObjectRef and put them in FArchiveReplaceObjectRefBase
Change 3487813 by Dan.Oconnor
Asset demonstrating a crash
Change 3488101 by Marc.Audy
Fix crash with spawn/construct actor/object from class nodes when they no longer had any pins.
Correctly orphan pins when a node goes to 0 pins.
Change 3488337 by Marc.Audy
Editable pin base should not manually remove pin and let reconstruct node and rewire pins do their job
#jira UE-46020
Change 3488512 by Dan.Oconnor
ConstructObject nodes and SubInstances nodes use skeleton class when compilation manager can provide it
#jira UE-45830, UE-45965
#rnx
Change 3488631 by Michael.Noland
Framework: Fixed a crash when loading a blueprint with a parent class of ALevelBounds caused by trying to register the class default object with a non-existent level
#jira UE-45630
Change 3488665 by Michael.Noland
Blueprints: Improve the details panel customization for optional pin nodes like Struct Member Get/Set
- The category, raw name, and tooltip of the property are now included as part of the filter text as well
- The property tooltip is now displayed when hovering over the property name
- Code updated to use GET_MEMBER_NAME_CHECKED() where appropriate
Change 3489324 by Marc.Audy
Fix recursion causing stack crash
#jira UE-46038
#rnx
Change 3489326 by Marc.Audy
Fix cooking crash
#jira UE-46031
#rnx
Change 3489687 by mason.seay
Assets for testing orphan pins
Change 3489701 by Marc.Audy
Back out changelist 3487278 and 3489443 and make targetted changes for fixing up orphan pin cases where changing connections doesn't remove the pin.
#jira UE-46051
#jira UE-46052
#rnx
Change 3490352 by Dan.Oconnor
Fix for missing WidgetTree on Skeleton class - just look directly at the WidgetBlueprint
#jira UE-46062
Change 3490814 by Marc.Audy
Make callfunction/macro instances save all pins in orphan state more similar to previous behavior
#rnx
Change 3491022 by Dan.Oconnor
Properly clean up 'Key' property when we fail to create a value property
#jira UE-45279
Change 3491071 by Ben.Zeigler
#jira UE-45981 Fix rotation issues, vector/rotator pins with empty strings were not matching due to uninitialized memory.
Change 3491244 by Michael.Noland
Blueprints: Add compile time message back to the output log (will not auto-open the output log if there were no warnings/errors)
#jira UE-32948
Change 3491276 by Michael.Noland
Blueprints: Fixed some bugs where a newly added item would fail show up in the "My Blueprints" tree if there was a filter active (e.g., when promoting a variable)
- Centralized the logic for clearing the filter so it happens when we try and fail to select the item, rather than ad hoc in various other places
- Made it only clear the filter if necessary, rather than (almost) always clearing it when adding an item
#jira UE-43372
Change 3491562 by Marc.Audy
Put back pin removal in to editable pin base and instead modify the pin destroy implementation to take down child split pins with it
#jira UE-46020
#rnx
Change 3491658 by Marc.Audy
Unify RemoveUserDefinedPin implementations. Use version that has break to avoid size change assert
#rnx
Change 3491946 by Marc.Audy
ReconstructSinglePin no longer destroys OldPin (avoids oprhaned sub pins being destroyed before reparented)
RewireOldPinsToNewPins now destroys OldPins at the end (calling code no longer reponsible)
DestroyImpl now prunes out SubPins that had already been trashed
#rnx
Change 3492040 by Marc.Audy
Discard exec/then pins from a callfunction that has been converted to a pure node
#rnx
Change 3492200 by Zak.Middleton
#ue4 - Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size.
Fixes possible regression from CL 3359561 that removed the Reset(...) entirely.
#jira UE-46012
Change 3492290 by Ben.Zeigler
#jira UE-46108 Fix StringLibrary Mid to never crash, Substring had already been fixed
Change 3492311 by Marc.Audy
Don't clear the pin type if what you're connecting to's pin type is wildcard
#rnx
Change 3492680 by Dan.Oconnor
Handle missing generated class when using compilation manager - tested by forcing compile of BP_ParentClassIsMissingType.uasset
Change 3492826 by Marc.Audy
Don't do pin connection list change notifications from DestroyPins while regenerating on load
#jira UE-46112
#rnx
Change 3492851 by Michael.Noland
Core: Fixed various crashes when using UObject::CallFunctionByNameWithArguments with non-trivial argument types by properly initializing the allocated parameters
Change 3492852 by Michael.Noland
Framework: Fixed a crash if ACharacter::FindComponentByClass was passed a nullptr class
Change 3492934 by Marc.Audy
Fix ensure and crash delete macro containing orphaned pin
#rnx
Change 3493079 by Dan.Oconnor
Fix for crash when opening ThirdPersonAnimBlueprint and ThirdPersonAnimBlueprint_Perf then clicking 'Compile' button in ThirdPersonAnimBlueprint editor. Make sure the convenience members in the derived compilers get set when we relink child classes (which requires making cdos, which requires PropagateValuesToCDO..)
#rnx
Change 3493346 by Phillip.Kavan
#jira UE-40560 - Fix a reported crash when pasting nodes between unrelated Blueprint graphs.
Change summary:
- Modified FEdGraphUtilities::PostProcessPastedNodes() to ensure() on a NULL pin entry; this will allow execution to continue while still alerting us since it is an unexpected result. Also added an 'else' case to then remove the NULL entry so that PostPasteNode() implementations don't all have to guard against NULL pin entries. When the node is reconstructed, the NULL entry will be replaced with the correct pin initialized to its default values.
- Modified UEdGraphPin::ImportTextItem() to add some additional logging to parse error cases when importing pin properties from source T3D text. Hopefully this gives us more information when this is encountered in the future.
Change 3493938 by Michael.Noland
Blueprints: Prevent issues with renaming event dispatchers to contain periods (this may be disallowed in the future, but they no longer become uneditable)
#jira UE-45780
Change 3493945 by Michael.Noland
Blueprints: Fixed GetDelegatePoperty typos
#rnx
Change 3493997 by Michael.Noland
Blueprints: Partially reverting changes from CL# 3319966 to reroute nodes, restoring their alignment but losing the symmetrical grab handle changes
#jira UE-45760
Change 3493998 by Dan.Oconnor
Fix rare crash in RefreshStandAloneDefaultsEditor when the blueprint editor is opened and a blueprint had errors in it
Note: I stumbled across this by running a unit test and then opening a blueprint in the BPE. CrashReporter indicates 3 crashes in the last 3 days
Change 3494025 by Michael.Noland
Engine: Deleted some dead code (DEBUGGING_VIEWPORT_SIZES)
#rnx
Change 3494026 by Michael.Noland
Blueprints: V0 of a BlueprintCallable/BlueprintPure function fuzzer
- Calls exposed methods with default parameters on classes it is able to spawn for now, which catches crashes due to null and /0 but not out of bounds issues or ones on classes it can't spawn due to classwithin, abstract, etc...
- Can be called using Test.ScriptFuzzing, won't be integrated into automated tests until it is more fully fleshed out and all known issues are addressed
#rnx
Change 3496382 by Ben.Zeigler
Fix ensure when launching editor with cook on the side and incremental cooking enabled. It now flushes the background asset gather when calling the sync load all assets if one is in progress
Change 3496688 by Marc.Audy
Avoid crashing in component instance data if (for some reason) the Actor's root component isn't properly set up
#jira UE-46073
Change 3496830 by Michael.Noland
Editor: Change FEditorCategoryUtils methods to take UStruct* instead of UClass*, as they are just reading metadata
#rnx
Change 3496840 by Michael.Noland
Framework: Remove the requirement for a local player in UCheatManager::CheatScript, so it can be be started from the server side (doesn't change the availability of the cheat manager, just allows things like the redundant "cheat cheatscript scriptname" to work)
Change 3497038 by Michael.Noland
Fortnite: Added UFortDeveloperSettings to allow developers to auto-run cheats in PIE (does not occur in -game or outside of WITH_EDITOR builds)
- You can specify a list of cheat commands to run when a pawn is possessed (also needs CL# 3496840 for cheatscripts)
- You can also specify a set of items to grant to your local inventory when it is created
Change 3497204 by Marc.Audy
Fix AbilitySystemComponent not being blueprint readable.
#rnx
Change 3497668 by Mieszko.Zielinski
Fixed a crash in BT editor when dealing with enum-typed Blackboard-keys pointing to enum values that have been deleted #UE4
#jira UE-43659
Change 3497677 by Mieszko.Zielinski
Added a community-suggested working solution to patching up dynamic navmesh after world offset #UE4
Also, fixed a crash related to navmesh rebuilding if generation was configured to lazily gather navigatble geometry
#jira UE-41293
Change 3497678 by Mieszko.Zielinski
Marked AbstractNavData class as transient #UE4
We never want to save it to levels
Change 3497679 by Mieszko.Zielinski
Made NavModifierVolume responsive to editor-time property changes #UE4
#jira UE-32831
Change 3497900 by Dan.Oconnor
Fix bad skel reference when using construct object from class, just limiting scope of 3491946. To reproduce the bug just nativize QA Game, including the TM-Gameplay level
#rnx
Change 3497904 by Dan.Oconnor
Use K2Node_Event::FindEventSignatureFunction in order when directly generating the skeleton generated class to get event params correct
#jira UE-46153
#rnx
Change 3497907 by Dan.Oconnor
Correctly set blueprint visibility flags on params for inherited functions when generating the skeleton class
#rnx
#jira UE-46186
Change 3498218 by mason.seay
Updates to pin testing BP's
Change 3498323 by Mieszko.Zielinski
Made UNavCollision instance assigned to StaticMesh not get re-created from scratch every single time any StaticMesh property changes #UE4
Recreation was resulting in some of the UNavCollision's properties not getting saved and the way we were recreating the nav collision could also interfere with undo buffers
#jira UE-44891
Change 3499007 by Marc.Audy
Allow systems to hook Pre and PostCompile to do custom behaviors
Change 3499013 by Mieszko.Zielinski
Made AbstractNavData class non-transient again #UE4
Implemented AbstractNavData instances' transientness in a different manner.
#jira UE-46194
Change 3499204 by Mieszko.Zielinski
Introduced CrowdManagerBase, an engine-level class that can be extended to implement custom crowd management #Orion
Extracted FRecastQueryFilter into a separate file, which will break some peoples' compilation.
#jira UE-43799
Change 3499321 by mason.seay
Updated bp for struct testing
Change 3499388 by Marc.Audy
Allow the compiler log to store off potential messages from earlier in the compile cycle (early validation), that can be committed later (for example once pruning is completed).
Change 3499390 by Marc.Audy
Generate the orphan pin error messages during EarlyValidation, but cache until the regular validation phase. This ensures all are generated, but only those that aren't pruned will be emitted.
#rnx
Change 3499420 by Michael.Noland
Engine: Introduced a new version of UEngine::GetWorldFromContextObject which takes an enum specifying the behavior on failures and updated all existing uses
The new version intentionally does not have a default value for ErrorMode, callers need to think about which variant of behavior they want:
- ReturnNull: Silently returns nullptr, the calling code is expected to handle this gracefully
- LogAndReturnNull: Raises a runtime error but still returns nullptr, the calling code is expected to handle this gracefully
- Assert: Asserts, the calling code is not expecting to handle a failure gracefully
- Deprecated UEngine::GetWorldFromContextObject(object, boolean) and changed the default behavior for the deprecated instances to do LogAndReturnNull rather than Assert, based on the real-world call pattern
- Introduced GetWorldFromContextObjectChecked(object) as a shorthand for passing in EGetWorldErrorMode::Assert
- Made UObject::GetWorldChecked() actually assert if it would return nullptr (under some cases the old function could silently return nullptr while reporting bSupported = true, so it neither ensured nor checked)
- Fixed a race condition in the 'is implemented' bookkeeping logic in GetWorld()/GetWorldChecked() by confining it to the game thread and added a check() to ImplementsGetWorld() to make it clear that it only works on the game thread
The typical recommended call pattern is to use something like:
if (UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull))
{
... Do something with World
}
Handling the failure case but requesting a log message (with BP call stack printed out) if it failed. This is now also the default behavior for old calls to UEngine::GetWorldFromContextObject(Object) (using the default value of bChecked=true), which is a behavior change but it matches how the function was being used in practice; the vast majority of call sites actually expected it to potentially fail and handled the nullptr case gracefully; very few places used the return value unguarded and wanted it to assert when passed a nullptr.
#jira UE-42458
Change 3499429 by Michael.Noland
Engine: Removed a bogus TODO (the problematic code had already been reworked)
#rnx
Change 3499470 by Michael.Noland
Core: Improved and corrected the comment for ensure()
- It doesn't crash when checking is disabled (and hasn't since UE3, maybe ever?)
- It now only fires once per ensure() by default, added a note about ensureAlways()
#rnx
Change 3499643 by Marc.Audy
Use TGuardValue instead of manually managing it
#rnx
Change 3499874 by Marc.Audy
Display <Unnamed> instead of nothing for Pins with blank display name in the compiler log
Change 3499875 by Marc.Audy
When changing function parameter types, don't orphan a pin on the function entry/exit nodes (but do at the call sites)
#jira UE-46224
Change 3499927 by Dan.Oconnor
UField::Serialize no longer serialize's its next ptr, UStruct::Serialize serializes all Children properties instead. This resolves a hard circular dependency between function libraries that EDL detected. It was resolved in an ad hoc way by the old linker
#jira UE-43458
Change 3499953 by Michael.Noland
Core: Created a variant of ensure that does runtime error logging without stopping in the debugger and some related functions that print a warning or error and may trigger a BP callstack (under the same rules as FFrame::KismetExecutionMessage)
- These are WIP and the API may change in the future, but are being used to fix various crashes found by fuzzing BP exposed functions
Change 3499957 by Michael.Noland
Animation: Added runtime errors for nullptr ControlRigs passed into BP methods
#rnx
Change 3499958 by Michael.Noland
Blueprints: Changed an ensure in UKismetNodeHelperLibrary::GetValidValue to a runtime error
#rnx
Change 3499959 by Michael.Noland
Engine: Downgrade various checks() to ensures() in the runtime asset cache functions exposed to Blueprints
Change 3499960 by Michael.Noland
AI: Changed UBTFunctionLibrary to not check/ensure if passed a null world context object
Change 3499968 by Michael.Noland
Editor: Fixed a couple of crashes in UEditorLevelUtils when passed nullptr arguments, and reformatted the entire file to fix widespread indentation issues
#rnx
Change 3499969 by Michael.Noland
Engine: Changed the verbosity of the failure log message of UEngine::GetWorldFromContextObject(..., LogAndReturnNull) from Warning to Error, so it always prints out a BP callstack
#rnx
Change 3499973 by Michael.Noland
Rendering: Fixed asserts in various UKismetRenderingLibrary methods if passed a nullptr for the WorldContextObject
- Also fixed flipped warnings in the failure cases for EndDrawCanvasToRenderTarget
Change 3499979 by Michael.Noland
Editor: Prevented a crash in UMaterialEditingLibrary::RecompileMaterial when passed a nullptr material
Change 3499984 by Michael.Noland
Physics: Prevented a crash in UTraceQueryTestResults::AssertEqual when passed in nullptr for Expected
Change 3499993 by Michael.Noland
Blueprints: Added validation when renaming variables, functions, components, multicast delegates, etc... to prevent names from containing some unacceptable characters
- This validation only kicks in when trying to rename an item, so bad names in existing content are 'grandfathered in'
- These bad names can cause bugs when working with content that contains these characters (e.g., names that contain a period cannot be found via FindObject<T>)
- Currently only . is banned, but eventually we may expand it to include all of INVALID_OBJECTNAME_CHARACTERS
Change 3500009 by Michael.Noland
Blueprints: Made the fuzzer skip classes declared in UnrealEd for now (some of the exposed methods change global state that can cause other tests to fail as the fuzzer isn't particularly sandboxed ATM)
#rnx
Change 3500011 by Michael.Noland
Android: Fixed a crash in UAndroidPermissionFunctionLibrary::AcquirePermissions when called with an empty array on non-Android platforms
Change 3500012 by Michael.Noland
Editor: Prevent a crash in UEditorTutorial::OpenAsset when passed a nullptr Asset
Change 3500014 by Michael.Noland
Engine: Changed FRuntimeAssetCacheFilesystemBackend::ClearCache(NAME_None) to not try to clear all cache directories (there is a separate no-args method for that)
Change 3500019 by Michael.Noland
Core: Fixed some more issues with CallFunctionByNameWithArguments and initializing / destroying parameters
- It was skipping the return value and incorrectly relying on the FirstPropertyToInit list which isn't set for by ref arguments
Change 3500020 by Michael.Noland
Automation: Prevent UFunctionalTestingManager::RunAllFunctionalTests and UFunctionalTestingManager* UFunctionalTestingManager::GetManager from crashing when a manager cannot be created (because we can't route to a world)
Change 3501062 by Marc.Audy
MakeArray AddInputPin is often used as part of node expansion, so need to move the transaction out of the function
Fix inability to undo/redo pin additions to sequence node
Add a K2Node_AddPinInterface to generalize the interface that K2Nodes implement to interact with SGraphNodeK2Sequence so it can be more generally used
#jira UE-46164
#jira UE-46270
Change 3501330 by Michael.Noland
AI: Fix an error on shutdown when the CDO of UAIPerceptionComponent tries to clean up (as it was never registered in the first place)
#jira UE-46271
Change 3501356 by Marc.Audy
Fix crash when multi-editing actor blueprints
#jira UE-46248
Change 3501408 by Michael.Noland
Core: Improve 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)
Change 3501457 by Phillip.Kavan
#jira UE-46054 - Fix crash when launching a packaged build that includes a nativized Blueprint instance with a ChildActorComponent instanced via an AddComponent node.
Change summary:
- Removed UK2Node_AddComponent::PostDuplicate(). This eliminates the creation of redundant component templates that were being unnecessarily created during the Blueprint duplication that precedes the nativization pass.
- Modified SMyBlueprint::OnDuplicateAction() to call MakeNewComponentTemplate() in response to a graph duplication action within the same Blueprint context (replaces previous UK2Node_AddComponent::PostDuplicate() impl).
- Modified FEmitDefaultValueHelper::HandleSpecialTypes() to force AddComponent-based CAC-owned template objects in the emitted codegen to use the UDynamicClass as the Outer when instancing. This matches what we already do for SCS-based CAC-owned template objects - that logic was added in CL# 3270456, and this matches up with FBlueprintNativeCodeGenModule::FindReplacedNameAndOuter(), where we specifically handle CAC-owned template objects.
Change 3502741 by Phillip.Kavan
#jira UE-45782 - Fix undo for index pin type changes.
Change summary:
- Modified SGraphPinIndex::OnTypeChanged() to call Modify() on the pin that was changed.
Change 3502939 by Michael.Noland
Back out changelist 3499927
Change 3503087 by Marc.Audy
Re-fixed ocean content as editor had also changed so had to take theirs and redo
#rnx
Change 3503266 by Ben.Zeigler
#jira UE-46335 Fix regression added in 4.16 where AssetRegistry GetAncesorClassNames/GetDerivedClassNames were not working properly in cooked builds for classes not in memory
Change 3503325 by mason.seay
updated Anim BP to prep for pin testing
Change 3503445 by Marc.Audy
Fix crash caused by OldPins being destroyed before rewiring
#rnx
Change 3505024 by Marc.Audy
Fix NodeEffectsPanel blueprint as it was using pins that no longer existed
#rnx
Change 3505254 by Marc.Audy
Don't include orphan pins when gather source property names
If a property doesn't exist for a source property name just skip the property rather than crashing
#jira UE-46345
#rnx
Change 3506125 by Ben.Zeigler
#jira UE-46311 Fix issues when blueprints are reloaded in place, it needs to remove them from root properly and sanitize the old class. It's still not clear why they are being reloaded in place
Change 3506334 by Dan.Oconnor
Move UAnimGraphNode_Base::PreloadRequiredAssets up to K2Node, make sure nodes get a chance to preload data before compilation manager compiles newly loaded blueprints
#jira UE-46411
Change 3506439 by Dan.Oconnor
Return to pre 3488512 behavior for construct object nodes. This means that we can still get warnings on load when users compile after saving a blueprint, but the current behavior loses default values because it's lookng at the skeleton cdo
#jira UE-46308
Change 3506468 by Dan.Oconnor
Return to pre 3488512 behavior, as it causes bad default values
#jira UE-46414
#rnx
Change 3506733 by Marc.Audy
Use the most up to date class to determine whether a property still exists when adding pins during reconstruction
#jira UE-45965
#author Dan.OConnor
#rnx
Change 3507531 by Ben.Zeigler
#jira UE-46449 Better fix to flush the asset registry queue when the editor requests a synchronous scan at startup. Sometimes it can take a few frames because of file handle delays
Change 3507924 by mason.seay
Sanity save of TM-Gameplay and sublevels to maybe resolve level streaming issues
Change 3507962 by Marc.Audy
Remake changes from CL# 3150796 wiped out by WEX-Staging merge to Main in CL# 3479958
#rnx
Change 3509131 by Dan.Oconnor
Compilation manager compile on load flow never called FindExportsInMemoryFirst, which is critical to prevent reloading of UBlueprintGeneratedClasses when Rename clears the export table
#jira UE-46311
Change 3509345 by Marc.Audy
CVar to disable orphan pins if necessary
#rnx
Change 3509959 by Marc.Audy
Protect against crashing due to large values in Timespan From functions
#jira UE-43840
Change 3510040 by Marc.Audy
Remove all the old unneeded ShooterGame test maps
#rnx
[CL 3510073 by Marc Audy in Main branch]
2017-06-26 15:07:18 -04:00
for ( const FComponentTypeEntry & ComponentType : * ComponentTypes )
2015-02-16 03:50:03 -05:00
{
2022-06-30 11:25:52 -04:00
if ( ! IsClassAllowed ( ComponentType . ComponentClass , EPermissionsContext : : Node ) )
{
continue ;
}
2015-02-16 03:50:03 -05:00
if ( UBlueprintComponentNodeSpawner * NodeSpawner = UBlueprintComponentNodeSpawner : : Create ( ComponentType ) )
{
ClassActionList . Add ( NodeSpawner ) ;
}
}
2022-06-30 11:25:52 -04:00
if ( HasClassFiltering ( ) )
{
// Filter out actions by node class
ClassActionList . RemoveAllSwap ( [ this ] ( UBlueprintNodeSpawner * InAction )
{
return ! IsClassAllowed ( InAction - > NodeClass . Get ( ) , EPermissionsContext : : Node ) ;
} ) ;
}
2015-02-16 03:50:03 -05:00
}
2014-07-09 12:17:42 -04:00
//------------------------------------------------------------------------------
2015-04-01 15:47:23 -04:00
bool FBlueprintActionDatabase : : ClearAssetActions ( UObject * const AssetObject )
2014-08-23 20:16:29 -04:00
{
2019-10-18 16:15:19 -04:00
FObjectKey ObjectKey ( AssetObject ) ;
return ClearAssetActions ( ObjectKey ) ;
}
//------------------------------------------------------------------------------
bool FBlueprintActionDatabase : : ClearAssetActions ( const FObjectKey & AssetObjectKey )
{
FActionList * ActionList = ActionRegistry . Find ( AssetObjectKey ) ;
2014-10-10 17:48:56 -04:00
bool const bHasEntry = ( ActionList ! = nullptr ) ;
if ( bHasEntry )
{
for ( UBlueprintNodeSpawner * Action : * ActionList )
{
2019-10-18 16:15:19 -04:00
if ( Action ! = nullptr )
{
2019-12-13 11:07:03 -05:00
// because some asserts expect everything to be cleaned up in a
// single GC pass, we can't wait for the GC'd Action to release its
// template node from the cache
Action - > ClearCachedTemplateNode ( ) ;
}
2014-10-10 17:48:56 -04:00
}
2019-10-18 16:15:19 -04:00
ActionRegistry . Remove ( AssetObjectKey ) ;
2014-10-10 17:48:56 -04:00
}
2014-09-19 18:20:43 -04:00
2019-10-18 16:15:19 -04:00
if ( UObject * AssetObject = AssetObjectKey . ResolveObjectPtr ( ) )
2014-09-19 18:20:43 -04:00
{
2022-06-30 11:25:52 -04:00
if ( UBlueprint * BlueprintAsset = Cast < UBlueprint > ( AssetObject ) )
{
BlueprintAsset - > OnChanged ( ) . RemoveAll ( this ) ;
BlueprintAsset - > OnCompiled ( ) . RemoveAll ( this ) ;
}
2014-10-10 17:48:56 -04:00
2022-06-30 11:25:52 -04:00
if ( bHasEntry & & ( ActionList - > Num ( ) > 0 ) & & ! BlueprintActionDatabaseImpl : : bIsInitializing )
{
EntryRemovedDelegate . Broadcast ( AssetObject ) ;
}
2014-10-10 17:48:56 -04:00
}
2019-10-18 16:15:19 -04:00
2015-04-01 15:47:23 -04:00
return bHasEntry ;
2014-08-23 20:16:29 -04:00
}
2014-09-26 11:31:34 -04:00
//------------------------------------------------------------------------------
2022-09-07 01:06:47 -04:00
void FBlueprintActionDatabase : : ClearUnloadedAssetActions ( const FSoftObjectPath & ObjectPath )
2014-09-26 11:31:34 -04:00
{
// Check if the asset can be found in the unloaded action registry, if it can, we need to remove it
2023-05-16 10:52:49 -04:00
if ( auto * UnloadedActionList = UnloadedActionRegistry . Find ( ObjectPath ) )
2014-09-26 11:31:34 -04:00
{
for ( UBlueprintNodeSpawner * NodeSpawner : * UnloadedActionList )
{
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3510040)
#lockdown Nick.Penwarden
=====================================
MAJOR FEATURES + CHANGES
=====================================
Change 3459524 by Marc.Audy
Get/Set of properties that were previously BPRW/BPRO should error when used
#jira UE-20993
Change 3460004 by Phillip.Kavan
#jira UE-45171 - Fix C++ compilation failures during packaging caused by nativizing a Blueprint that overrides a native function with a 'TSubclassOf' parameter or return value.
Change summary:
- Modified FKismetCompilerContext::CreateParametersForFunction() to pass the 'CPF_UObjectWrapper' flag through to new function parameter properties during Blueprint compilation.
Change 3461210 by Phillip.Kavan
#jira UE-44505 - Fix occasional Blueprint editor crashes that could occur while rebuilding the context menu from the action registry.
Change summary:
- Modified FBlueprintActionDatabase::FActionRegistry to use an FObjectKey as the key type. This allows us to test entries for UObject validity before rebuilding context menu items based on the action database.
- Changed FBlueprintActionInfo::CachedOwnerClass to be a TWeakObjectPtr rather than a raw UClass* since it's based on the ActionOwner, which could potentially become invalid after the OwnerClass has been cached.
- Modified FBlueprintActionDatabase::RefreshAssetActions() to exclude World assets if the WorldType is not EWorldType::Editor. This eliminates an issue with unreferenced "inactive" GC'd world objects being left in the BP action registry after cooking, at which point the keys could become invalid.
- Added FBlueprintActionDatabase::DeferredRemoveEntry() to allow for scheduling removal of entries from outside of the database if they are known to be invalid.
- Modified FBlueprintActionDatabase::Tick() to handle deferred entry removals.
- Modified FBlueprintActionMenuBuilder::RebuildActionList() to both test actions for validity before building menu items and schedule removal of invalid actions on the next tick.
Notes:
- Alternatively we could just include UObject keys in the database's AddReferencedObject impl, but that would then prevent objects from ever being GC'd if they are not explicitly removed. For most entries the action database takes the approach of explicitly removing entries via delegate when the UObject is destroyed, so I chose to use a TWeakObjectPtr instead so that any entries that may not be getting explicitly removed via delegate will now simply become invalidated if the UObject key is GC'd due to not being referenced. I also set it up to clean and remove any entries (along with any associated node spawners) that are found to be invalid the next time we open the BP editor.
Change 3461373 by Lukasz.Furman
fixed async navmesh rebuilds not kicking in for requests from navdata.bForceRebuildOnLoad
#jira UE-44231
Change 3461409 by Lukasz.Furman
fixed reenabling automatic navmesh generation in Editor Preferences
#ue4
Change 3461550 by Ben.Zeigler
#jira UE-45328 Fix local variable support for Redirectors and other save-time validation. We need to run the local variables to UProperty and back at save time
Add new flag PPF_SerializedAsImportText which is used for BP pins/default values and indicates that something has been serialized as import text and so needs to handle string asset redirectors
Change 3462625 by Zak.Middleton
#ue4 - Fix InterpToMovementComponent not setting velocity on the object it moves. Fix movement rate when substepping enabled (other related fixes to come).
github PR #3620
Change 3462796 by Dan.Oconnor
Fix for spamming BroadcastBlueprintReinstanced and for creating CDO at wrong time when compiling FrontEnd.uasset in OrionGame
#jira UE-45434
Change 3462995 by Ben.Zeigler
#jira UE-16941 Fix it so Load Asset node works with a literal value as well as a connected pin
Change 3463099 by Ben.Zeigler
#jira UE-45471 Allow abstract base classes for primary assets
Change 3464809 by Marc.Audy
Expose FVector2D / FVector2D to blueprints
#jira UE-45427
Change 3467254 by Mieszko.Zielinski
Added an AI helper BP function that supplies caller with a copy of navigation path given controller is currently following #UE4
Change 3467644 by Dan.Oconnor
Fix for cook issues in ocean when using compilation manager, one issue caused by bad dependencies list, one issue caused by lack of subobject mapping in archetype reinstancing.
#jira UE-45443, UE-45444
Change 3468176 by Dan.Oconnor
Fix dependent blueprints being marked dirty when a blueprint is compiled
Change 3468353 by Michael.Noland
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
Change 3470532 by Dan.Oconnor
Re-enable compilation manager
Change 3470572 by Dan.Oconnor
Fix for pin paramters resetting when an archetype was reinstanced
#jira UE-45619
#rnx
Change 3471949 by Mason.Seay
Adding Primary Assets for testing
Change 3472074 by Ben.Zeigler
#jira UE-45140 Convert iterative cooking to use the Asset Registry as it's only mode, remove old hash and timestamp versions. This allows deleting the entire PackageDependencyInfo module
Change the asset registry iteration to not compute a hash at all, and instead store the script package guids in it's cache.
Expose bIgnoreIniSettingsOutOfDateForIteration and bIgnoreScriptPackagesOutOfDateForIteration in cooker settings, affects rather to listen to ini/script changes when doing iterative cooking
Change 3472079 by Ben.Zeigler
With new incremental cook options, change Fortnite to never care about ini settings, but do care about code changes. This can be changed but from previous discussions we wanted to be more safe than fast here
Change 3473429 by Lukasz.Furman
changed path following update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473476 by Lukasz.Furman
changed crowd simulation path update tick to allow working on "invalid, update pending" paths, solves AI getting stuck when navigation is rebuild very frequently (e.g. every tick from moving mesh)
#jira UE-41884
Change 3473663 by Ben.Zeigler
Fix it so base k2node registers framework version, this is needed for the assetptr fixup I previously added
Change 3473679 by Mason.Seay
Slight cleanup of test map and added ability to teleport across level for easy navigation
Change 3473712 by Marc.Audy
Do default value validation against the actual value of the default entry of an enum rather than the serialized empty autogenerated default value
Change 3474055 by Marc.Audy
When nodes are reconstructed any pins that were previously linked or set to non-default values that have been removed will no longer simply vanish, but instead will remain in an Orphaned state until dealt with.
#jira UE-41828
Change 3474119 by mason.seay
Tweaked Force Feedback test
Change 3474156 by Marc.Audy
Actually enable orphan pin retention
Change 3474382 by Ben.Zeigler
Class.h Header and comment cleanup. Started this because IsChildOf did not have a comment and it's usage is a bit confusing
Change 3474386 by Ben.Zeigler
Close popup window when adding asset class to audit window
Change 3474491 by Ben.Zeigler
Remove ability for Worlds to not be saved as assets, this has been the default since 2014.
Change 3475363 by Marc.Audy
Alt-click now works with orphaned pins
#jira UE-45699
Change 3475523 by Marc.Audy
Fixup Fortnite and Paragon content for orphaned pin errors and warnings
Change 3475623 by Phillip.Kavan
#jira UE-45477 - Fix an EDL assertion on load in a nativized build with one or more Actor subobjects instanced via the EditInlineNew UI in the BP class defaults property editor.
Change summary:
- Modified FEmitDefaultValueHelper::OuterGenerate() to emit code to construct/initialize instanced subobject values that do not have the RF_DefaultSubObject flag set, and also to recursively handle nested subobjects for those values.
- Modified FEmitDefaultValueHelper::HandleInstancedSubobject() to alternatively emit a 'NewObject' assignment statement rather than a 'CreateDefaultSubobject' statement if only RF_ArchetypeObject is set on the source object value.
Change 3476008 by Dan.Oconnor
Fix for failing to preload our super class's subobjects. Effectively moving UBlueprint::ForceLoad calls earlier in loading process. This only results in data resetting to your parent's parent's default value from your parent's default value.
#jira UE-18765
Change 3476115 by Dan.Oconnor
Fix missing category information for inherited functions when using compilation manager
#jira UE-45660
#rnx
Change 3476577 by Lukasz.Furman
added early outs from navmesh layer generation when there's no walkable cells or contours to avoid allocating 0 bytes by next generation steps (behavior differs between platforms)
#ue4
Change 3476587 by Phillip.Kavan
#jira UE-45517 - Fix a regression in which dragging UMG widgets around in the designer view results in redundantly-compounded BP class properties and context menu actions.
Change summary:
- Modified SDesignerView::ClearDropPreviews() to move the widget that was removed from the tree into the transient package. This ensures that FWidgetBlueprintCompiler::CreateClassVariablesFromBlueprint() won't pick them up.
- Modified SDesignerView::ProcessDropAndAddWidget() to also consider any widgets not added to the 'DropPreviews' array as being transient (i.e. also move them into the transient package since they were not added to the tree).
Notes:
- The regression was introduced by the changes in CL# 3410168, and was merged to Main at CL# 3431398.
#rnx
Change 3476723 by Dan.Oconnor
Match old behavior wrt updating implemented interfaces in blueprints - this logic from FKismetEditorUtilities::CompileBlueprint was missing in compilation manager
#jira UE-45468
#rnx
Change 3476948 by Michael.Noland
Framework: Changed AActor::FindComponentByClass (and AActor::GetComponentByClass by extension) to return nullptr when passed a nullptr class, rather than crashing
Change 3476970 by Ben.Zeigler
Fix bug I introduced in 4.16 where assigning assets to multiple chunks did not work properly
Change 3477536 by Marc.Audy
Don't display default value box on linked orphaned input pins
Change 3477835 by Marc.Audy
Fix pins orphaned by deletion of an entry in a user-defined enum disappearing instead of remaining connected
#jira UE-45754
Change 3478027 by Marc.Audy
Minor performance optimization
#rnx
Change 3478198 by Phillip.Kavan
#jira UE-42431 - Remove an unnecessary ensure() when pasting an event node.
Change summary:
- Modified UEdGraphSchema_K2::CreateSubstituteNode() to no longer ensure() that we have a valid PreExistingNode; it's only used for logging when a substitute node is created in response to a conflict with an existing node.
Change 3478485 by Marc.Audy
Eliminate extraneous error messages about orphaned pins on get/set nodes
#jira UE-45749
#rnx
Change 3478756 by Marc.Audy
Fix fallout from changes to DoesDefaultValueMatchAutogenerated for user defined enums
#jira UE-45721
#rnx
Change 3478926 by Marc.Audy
Non-blueprint type structs can no longer be made/broken
Non-blueprint visible properties in structs will no longer have pins created for them
#jira UE-43122
Change 3478988 by Marc.Audy
DeltaTime for a tick function with a tick interval is now correct after disabling and then reenabling the tick function.
#jira UE-45524
Change 3479818 by Marc.Audy
Allow ctrl-drag off of orphan pins
#jira UE-45803
Change 3480214 by Marc.Audy
Modifications to user defined enumerations are now transacted
#jira UE-43866
Change 3480579 by Marc.Audy
Maintain all pin properties through transactions.
#rn Reference pins that are removed and then restored via undo now correctly have the diamond icon instead of the standard circle.
Change 3481043 by Marc.Audy
Make/Break of structs does not depend on having blueprint exposed properties.
Splitting of a struct pin still requires blueprint exposed properties.
#jira UE-45840
#jira UE-45831
Change 3481271 by Ben.Zeigler
Fix the AssetManager chunking code to use ChunkDependencyInfo instead of a hardcoded check for chunk 0
Clean up ChunkDependencyInfo and make it properly public
Move ShouldSetManager to be WITH_EDITOR
Ported from WEX branch
#RB peter.sauerbrei
Change 3481373 by Dan.Oconnor
Reduce reliance on expensive FindDelegateSignature. 3275922 made warnings about a ambiguous search more likely as it preserved names of members on the REINST_ classes
#jira UE-45704
Change 3481380 by Ben.Zeigler
Change it so Struct and Object AssetRegistrySearchable properties do not show up in content browser, they are not helpful
Change 3482362 by Marc.Audy
Fix properties not exposed to blueprint warnings for input properties on function graphs.
#jira UE-45824
Change 3482406 by Ben.Zeigler
#jira UE-45883 Fix Switch On Gameplay Tag Container node, and add switch nodes to TagCheck map
Change 3482498 by Ben.Zeigler
Attempt to fix hot reload issues with Asset Manager. We need to reset and re-acquire the asset classes when rescanning, as they may be pointing to the replaced class
Change 3482517 by Lukasz.Furman
fixed smart navlink update functions removing important flag
#jira UE-45875
Change 3482538 by Marc.Audy
When comparing float, vector, and rotator values for whether the the default matches the autogenerated do not use the string compare because differences in use of decimal or number of 0s after decimal are then considered not the same float
#jira UE-45846
Change 3482773 by Marc.Audy
Don't show default value or pass by reference for exec pins
#jira UE-45868
Change 3482791 by Ben.Zeigler
#jira UE-45800 Correctly dirty game mode blueprint when changing player controller/etc classes from game mode customization
Fix it so MarkBlueprintAsStructurallyModified calls MarkBlueprintAsModified as several fixes were only in the second function
Change 3483131 by Zak.Middleton
#ue4 - InterpToMovementComponent:
- Fix velocity not zeroed when interpolation stops.
- Various fixes when calculating velocity and time when substepping is enabled.
- Improve accuracy of interpolation when looping and there is time remaining after the loop event is hit. Consume the remainder of the time after the event back in the loop (similar to handling a blocking impact).
#jira UE-45690
Change 3483146 by Phillip.Kavan
#jira UE-38358 - Propagate 'const' function flag from interface Blueprint to implementing Blueprints.
Change summary:
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() to call SkeletalRecompileChildren() on dependent BPs when the target is an interface BP.
- Modified FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified::FRefreshHelper::SkeletalRecompileChildren() to set child BP status to BS_Dirty after compiling.
- Modified ConformInterfaceByName() (FBlueprintEditorUtils) to use the interface's skeleton class for function iteration as well as to match the Function Entry node's 'const' setting to the interface UFunction's signature.
Change 3483340 by Ben.Zeigler
Fix issue querying asset registry after a hot reload, make sure pending kill objects are never considered to be Assets
Change 3483548 by Michael.Noland
Epic Friday: Playing around with some prototype traps
Change 3483700 by Phillip.Kavan
Fix CIS cook crash introduced by last submit.
#rnx
Change 3485217 by Ben.Zeigler
#jira UE-45519 Fix regression introduced in 4.16 where it would no longer cook all maps when no explicit maps were specified in ini or game callback. Moved the code that detects changes before culture/default map code and hardened it to deal with the case where some engine packages were already in the list before it entered the function
Change 3485367 by Dan.Oconnor
Avoid adding mappings to anim node when creating variables on the skeleton class and using the compilation manager
#jira UE-45756
Change 3485565 by Ben.Zeigler
#jira UE-45948 Fix compilation manager to properly reset variable default values after promoting a pin to local variable
Change 3485566 by Marc.Audy
Fix crashes caused by undo/redo of user defined struct changes
#jira UE-45775
#jira UE-45781
Change 3485805 by Michael.Noland
PR #3459: Fix for world origin shifting and SpringArmComponent location lag (Contributed by michail-nikolaev)
#jira UE-43747
Change 3485807 by Michael.Noland
PR #3485: Added additional textures field to paper 2d tileset class (Contributed by gryphonmyers)
#jira UE-44041
Change 3485811 by Michael.Noland
Framework: Fixed a bug in FStreamLevelAction::MakeSafeLevelName to avoid appending the PIE prefix multiple times (fixes functions like Unload Streaming Level when passed a full package name from an instanced streaming level)
Change 3485829 by Michael.Noland
Framework: Made GetWorldAssetPackageFName BlueprintCallable so instanced levels can be unloaded
Change 3485830 by Michael.Noland
PR #3568: add API declarations to ALevelStreamingVolume methods (Contributed by kayama-shift)
#jira UE-45002
Change 3486039 by Michael.Noland
PR #3495: UE-44014: Refreshing node error fixes (Contributed by projectgheist)
- Empty out the ErrorMsg when a node gets refreshed to prevent the same error messages from compounding
- Added support for split pins in UK2Node_Event::IsFunctionEntryCompatible
- Added a missing check for the delegate pin name on the entry node part of UK2Node_Event::IsFunctionEntryCompatible
#jira UE-44014
Change 3486093 by Michael.Noland
PR #3379: Added GAMEPLAYABILITIES_API to all Ability Tasks. (Contributed by ryanjon2040)
#jira UE-42903
Change 3486139 by Michael.Noland
Blueprints: Added new config options for execution wire thickness when not debugging (DefaultExecutionWireThickness) and data wire thicknesses (DefaultDataWireThickness) to the Graph Editor Settings page
#rn
Change 3486154 by Michael.Noland
Framework: Speculative fix for CIS error about FStructOnScope
#rnx
Change 3486180 by Dan.Oconnor
Better match old logic for determining when to skip data only compile
#jira UE-45830
Change 3487276 by Marc.Audy
Fix crash when using Setter with a locally scoped variable
#rnx
Change 3487278 by Marc.Audy
Ensure that pin change notifications occur on all pin breaks unless it is part of a node being garbage collected
Change 3487658 by Marc.Audy
Ensure that child actor template is created for subclasses
#jira UE-45985
Change 3487699 by Marc.Audy
Move non-templated elements out of FArchiveReplaceObjectRef and put them in FArchiveReplaceObjectRefBase
Change 3487813 by Dan.Oconnor
Asset demonstrating a crash
Change 3488101 by Marc.Audy
Fix crash with spawn/construct actor/object from class nodes when they no longer had any pins.
Correctly orphan pins when a node goes to 0 pins.
Change 3488337 by Marc.Audy
Editable pin base should not manually remove pin and let reconstruct node and rewire pins do their job
#jira UE-46020
Change 3488512 by Dan.Oconnor
ConstructObject nodes and SubInstances nodes use skeleton class when compilation manager can provide it
#jira UE-45830, UE-45965
#rnx
Change 3488631 by Michael.Noland
Framework: Fixed a crash when loading a blueprint with a parent class of ALevelBounds caused by trying to register the class default object with a non-existent level
#jira UE-45630
Change 3488665 by Michael.Noland
Blueprints: Improve the details panel customization for optional pin nodes like Struct Member Get/Set
- The category, raw name, and tooltip of the property are now included as part of the filter text as well
- The property tooltip is now displayed when hovering over the property name
- Code updated to use GET_MEMBER_NAME_CHECKED() where appropriate
Change 3489324 by Marc.Audy
Fix recursion causing stack crash
#jira UE-46038
#rnx
Change 3489326 by Marc.Audy
Fix cooking crash
#jira UE-46031
#rnx
Change 3489687 by mason.seay
Assets for testing orphan pins
Change 3489701 by Marc.Audy
Back out changelist 3487278 and 3489443 and make targetted changes for fixing up orphan pin cases where changing connections doesn't remove the pin.
#jira UE-46051
#jira UE-46052
#rnx
Change 3490352 by Dan.Oconnor
Fix for missing WidgetTree on Skeleton class - just look directly at the WidgetBlueprint
#jira UE-46062
Change 3490814 by Marc.Audy
Make callfunction/macro instances save all pins in orphan state more similar to previous behavior
#rnx
Change 3491022 by Dan.Oconnor
Properly clean up 'Key' property when we fail to create a value property
#jira UE-45279
Change 3491071 by Ben.Zeigler
#jira UE-45981 Fix rotation issues, vector/rotator pins with empty strings were not matching due to uninitialized memory.
Change 3491244 by Michael.Noland
Blueprints: Add compile time message back to the output log (will not auto-open the output log if there were no warnings/errors)
#jira UE-32948
Change 3491276 by Michael.Noland
Blueprints: Fixed some bugs where a newly added item would fail show up in the "My Blueprints" tree if there was a filter active (e.g., when promoting a variable)
- Centralized the logic for clearing the filter so it happens when we try and fail to select the item, rather than ad hoc in various other places
- Made it only clear the filter if necessary, rather than (almost) always clearing it when adding an item
#jira UE-43372
Change 3491562 by Marc.Audy
Put back pin removal in to editable pin base and instead modify the pin destroy implementation to take down child split pins with it
#jira UE-46020
#rnx
Change 3491658 by Marc.Audy
Unify RemoveUserDefinedPin implementations. Use version that has break to avoid size change assert
#rnx
Change 3491946 by Marc.Audy
ReconstructSinglePin no longer destroys OldPin (avoids oprhaned sub pins being destroyed before reparented)
RewireOldPinsToNewPins now destroys OldPins at the end (calling code no longer reponsible)
DestroyImpl now prunes out SubPins that had already been trashed
#rnx
Change 3492040 by Marc.Audy
Discard exec/then pins from a callfunction that has been converted to a pure node
#rnx
Change 3492200 by Zak.Middleton
#ue4 - Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size.
Fixes possible regression from CL 3359561 that removed the Reset(...) entirely.
#jira UE-46012
Change 3492290 by Ben.Zeigler
#jira UE-46108 Fix StringLibrary Mid to never crash, Substring had already been fixed
Change 3492311 by Marc.Audy
Don't clear the pin type if what you're connecting to's pin type is wildcard
#rnx
Change 3492680 by Dan.Oconnor
Handle missing generated class when using compilation manager - tested by forcing compile of BP_ParentClassIsMissingType.uasset
Change 3492826 by Marc.Audy
Don't do pin connection list change notifications from DestroyPins while regenerating on load
#jira UE-46112
#rnx
Change 3492851 by Michael.Noland
Core: Fixed various crashes when using UObject::CallFunctionByNameWithArguments with non-trivial argument types by properly initializing the allocated parameters
Change 3492852 by Michael.Noland
Framework: Fixed a crash if ACharacter::FindComponentByClass was passed a nullptr class
Change 3492934 by Marc.Audy
Fix ensure and crash delete macro containing orphaned pin
#rnx
Change 3493079 by Dan.Oconnor
Fix for crash when opening ThirdPersonAnimBlueprint and ThirdPersonAnimBlueprint_Perf then clicking 'Compile' button in ThirdPersonAnimBlueprint editor. Make sure the convenience members in the derived compilers get set when we relink child classes (which requires making cdos, which requires PropagateValuesToCDO..)
#rnx
Change 3493346 by Phillip.Kavan
#jira UE-40560 - Fix a reported crash when pasting nodes between unrelated Blueprint graphs.
Change summary:
- Modified FEdGraphUtilities::PostProcessPastedNodes() to ensure() on a NULL pin entry; this will allow execution to continue while still alerting us since it is an unexpected result. Also added an 'else' case to then remove the NULL entry so that PostPasteNode() implementations don't all have to guard against NULL pin entries. When the node is reconstructed, the NULL entry will be replaced with the correct pin initialized to its default values.
- Modified UEdGraphPin::ImportTextItem() to add some additional logging to parse error cases when importing pin properties from source T3D text. Hopefully this gives us more information when this is encountered in the future.
Change 3493938 by Michael.Noland
Blueprints: Prevent issues with renaming event dispatchers to contain periods (this may be disallowed in the future, but they no longer become uneditable)
#jira UE-45780
Change 3493945 by Michael.Noland
Blueprints: Fixed GetDelegatePoperty typos
#rnx
Change 3493997 by Michael.Noland
Blueprints: Partially reverting changes from CL# 3319966 to reroute nodes, restoring their alignment but losing the symmetrical grab handle changes
#jira UE-45760
Change 3493998 by Dan.Oconnor
Fix rare crash in RefreshStandAloneDefaultsEditor when the blueprint editor is opened and a blueprint had errors in it
Note: I stumbled across this by running a unit test and then opening a blueprint in the BPE. CrashReporter indicates 3 crashes in the last 3 days
Change 3494025 by Michael.Noland
Engine: Deleted some dead code (DEBUGGING_VIEWPORT_SIZES)
#rnx
Change 3494026 by Michael.Noland
Blueprints: V0 of a BlueprintCallable/BlueprintPure function fuzzer
- Calls exposed methods with default parameters on classes it is able to spawn for now, which catches crashes due to null and /0 but not out of bounds issues or ones on classes it can't spawn due to classwithin, abstract, etc...
- Can be called using Test.ScriptFuzzing, won't be integrated into automated tests until it is more fully fleshed out and all known issues are addressed
#rnx
Change 3496382 by Ben.Zeigler
Fix ensure when launching editor with cook on the side and incremental cooking enabled. It now flushes the background asset gather when calling the sync load all assets if one is in progress
Change 3496688 by Marc.Audy
Avoid crashing in component instance data if (for some reason) the Actor's root component isn't properly set up
#jira UE-46073
Change 3496830 by Michael.Noland
Editor: Change FEditorCategoryUtils methods to take UStruct* instead of UClass*, as they are just reading metadata
#rnx
Change 3496840 by Michael.Noland
Framework: Remove the requirement for a local player in UCheatManager::CheatScript, so it can be be started from the server side (doesn't change the availability of the cheat manager, just allows things like the redundant "cheat cheatscript scriptname" to work)
Change 3497038 by Michael.Noland
Fortnite: Added UFortDeveloperSettings to allow developers to auto-run cheats in PIE (does not occur in -game or outside of WITH_EDITOR builds)
- You can specify a list of cheat commands to run when a pawn is possessed (also needs CL# 3496840 for cheatscripts)
- You can also specify a set of items to grant to your local inventory when it is created
Change 3497204 by Marc.Audy
Fix AbilitySystemComponent not being blueprint readable.
#rnx
Change 3497668 by Mieszko.Zielinski
Fixed a crash in BT editor when dealing with enum-typed Blackboard-keys pointing to enum values that have been deleted #UE4
#jira UE-43659
Change 3497677 by Mieszko.Zielinski
Added a community-suggested working solution to patching up dynamic navmesh after world offset #UE4
Also, fixed a crash related to navmesh rebuilding if generation was configured to lazily gather navigatble geometry
#jira UE-41293
Change 3497678 by Mieszko.Zielinski
Marked AbstractNavData class as transient #UE4
We never want to save it to levels
Change 3497679 by Mieszko.Zielinski
Made NavModifierVolume responsive to editor-time property changes #UE4
#jira UE-32831
Change 3497900 by Dan.Oconnor
Fix bad skel reference when using construct object from class, just limiting scope of 3491946. To reproduce the bug just nativize QA Game, including the TM-Gameplay level
#rnx
Change 3497904 by Dan.Oconnor
Use K2Node_Event::FindEventSignatureFunction in order when directly generating the skeleton generated class to get event params correct
#jira UE-46153
#rnx
Change 3497907 by Dan.Oconnor
Correctly set blueprint visibility flags on params for inherited functions when generating the skeleton class
#rnx
#jira UE-46186
Change 3498218 by mason.seay
Updates to pin testing BP's
Change 3498323 by Mieszko.Zielinski
Made UNavCollision instance assigned to StaticMesh not get re-created from scratch every single time any StaticMesh property changes #UE4
Recreation was resulting in some of the UNavCollision's properties not getting saved and the way we were recreating the nav collision could also interfere with undo buffers
#jira UE-44891
Change 3499007 by Marc.Audy
Allow systems to hook Pre and PostCompile to do custom behaviors
Change 3499013 by Mieszko.Zielinski
Made AbstractNavData class non-transient again #UE4
Implemented AbstractNavData instances' transientness in a different manner.
#jira UE-46194
Change 3499204 by Mieszko.Zielinski
Introduced CrowdManagerBase, an engine-level class that can be extended to implement custom crowd management #Orion
Extracted FRecastQueryFilter into a separate file, which will break some peoples' compilation.
#jira UE-43799
Change 3499321 by mason.seay
Updated bp for struct testing
Change 3499388 by Marc.Audy
Allow the compiler log to store off potential messages from earlier in the compile cycle (early validation), that can be committed later (for example once pruning is completed).
Change 3499390 by Marc.Audy
Generate the orphan pin error messages during EarlyValidation, but cache until the regular validation phase. This ensures all are generated, but only those that aren't pruned will be emitted.
#rnx
Change 3499420 by Michael.Noland
Engine: Introduced a new version of UEngine::GetWorldFromContextObject which takes an enum specifying the behavior on failures and updated all existing uses
The new version intentionally does not have a default value for ErrorMode, callers need to think about which variant of behavior they want:
- ReturnNull: Silently returns nullptr, the calling code is expected to handle this gracefully
- LogAndReturnNull: Raises a runtime error but still returns nullptr, the calling code is expected to handle this gracefully
- Assert: Asserts, the calling code is not expecting to handle a failure gracefully
- Deprecated UEngine::GetWorldFromContextObject(object, boolean) and changed the default behavior for the deprecated instances to do LogAndReturnNull rather than Assert, based on the real-world call pattern
- Introduced GetWorldFromContextObjectChecked(object) as a shorthand for passing in EGetWorldErrorMode::Assert
- Made UObject::GetWorldChecked() actually assert if it would return nullptr (under some cases the old function could silently return nullptr while reporting bSupported = true, so it neither ensured nor checked)
- Fixed a race condition in the 'is implemented' bookkeeping logic in GetWorld()/GetWorldChecked() by confining it to the game thread and added a check() to ImplementsGetWorld() to make it clear that it only works on the game thread
The typical recommended call pattern is to use something like:
if (UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull))
{
... Do something with World
}
Handling the failure case but requesting a log message (with BP call stack printed out) if it failed. This is now also the default behavior for old calls to UEngine::GetWorldFromContextObject(Object) (using the default value of bChecked=true), which is a behavior change but it matches how the function was being used in practice; the vast majority of call sites actually expected it to potentially fail and handled the nullptr case gracefully; very few places used the return value unguarded and wanted it to assert when passed a nullptr.
#jira UE-42458
Change 3499429 by Michael.Noland
Engine: Removed a bogus TODO (the problematic code had already been reworked)
#rnx
Change 3499470 by Michael.Noland
Core: Improved and corrected the comment for ensure()
- It doesn't crash when checking is disabled (and hasn't since UE3, maybe ever?)
- It now only fires once per ensure() by default, added a note about ensureAlways()
#rnx
Change 3499643 by Marc.Audy
Use TGuardValue instead of manually managing it
#rnx
Change 3499874 by Marc.Audy
Display <Unnamed> instead of nothing for Pins with blank display name in the compiler log
Change 3499875 by Marc.Audy
When changing function parameter types, don't orphan a pin on the function entry/exit nodes (but do at the call sites)
#jira UE-46224
Change 3499927 by Dan.Oconnor
UField::Serialize no longer serialize's its next ptr, UStruct::Serialize serializes all Children properties instead. This resolves a hard circular dependency between function libraries that EDL detected. It was resolved in an ad hoc way by the old linker
#jira UE-43458
Change 3499953 by Michael.Noland
Core: Created a variant of ensure that does runtime error logging without stopping in the debugger and some related functions that print a warning or error and may trigger a BP callstack (under the same rules as FFrame::KismetExecutionMessage)
- These are WIP and the API may change in the future, but are being used to fix various crashes found by fuzzing BP exposed functions
Change 3499957 by Michael.Noland
Animation: Added runtime errors for nullptr ControlRigs passed into BP methods
#rnx
Change 3499958 by Michael.Noland
Blueprints: Changed an ensure in UKismetNodeHelperLibrary::GetValidValue to a runtime error
#rnx
Change 3499959 by Michael.Noland
Engine: Downgrade various checks() to ensures() in the runtime asset cache functions exposed to Blueprints
Change 3499960 by Michael.Noland
AI: Changed UBTFunctionLibrary to not check/ensure if passed a null world context object
Change 3499968 by Michael.Noland
Editor: Fixed a couple of crashes in UEditorLevelUtils when passed nullptr arguments, and reformatted the entire file to fix widespread indentation issues
#rnx
Change 3499969 by Michael.Noland
Engine: Changed the verbosity of the failure log message of UEngine::GetWorldFromContextObject(..., LogAndReturnNull) from Warning to Error, so it always prints out a BP callstack
#rnx
Change 3499973 by Michael.Noland
Rendering: Fixed asserts in various UKismetRenderingLibrary methods if passed a nullptr for the WorldContextObject
- Also fixed flipped warnings in the failure cases for EndDrawCanvasToRenderTarget
Change 3499979 by Michael.Noland
Editor: Prevented a crash in UMaterialEditingLibrary::RecompileMaterial when passed a nullptr material
Change 3499984 by Michael.Noland
Physics: Prevented a crash in UTraceQueryTestResults::AssertEqual when passed in nullptr for Expected
Change 3499993 by Michael.Noland
Blueprints: Added validation when renaming variables, functions, components, multicast delegates, etc... to prevent names from containing some unacceptable characters
- This validation only kicks in when trying to rename an item, so bad names in existing content are 'grandfathered in'
- These bad names can cause bugs when working with content that contains these characters (e.g., names that contain a period cannot be found via FindObject<T>)
- Currently only . is banned, but eventually we may expand it to include all of INVALID_OBJECTNAME_CHARACTERS
Change 3500009 by Michael.Noland
Blueprints: Made the fuzzer skip classes declared in UnrealEd for now (some of the exposed methods change global state that can cause other tests to fail as the fuzzer isn't particularly sandboxed ATM)
#rnx
Change 3500011 by Michael.Noland
Android: Fixed a crash in UAndroidPermissionFunctionLibrary::AcquirePermissions when called with an empty array on non-Android platforms
Change 3500012 by Michael.Noland
Editor: Prevent a crash in UEditorTutorial::OpenAsset when passed a nullptr Asset
Change 3500014 by Michael.Noland
Engine: Changed FRuntimeAssetCacheFilesystemBackend::ClearCache(NAME_None) to not try to clear all cache directories (there is a separate no-args method for that)
Change 3500019 by Michael.Noland
Core: Fixed some more issues with CallFunctionByNameWithArguments and initializing / destroying parameters
- It was skipping the return value and incorrectly relying on the FirstPropertyToInit list which isn't set for by ref arguments
Change 3500020 by Michael.Noland
Automation: Prevent UFunctionalTestingManager::RunAllFunctionalTests and UFunctionalTestingManager* UFunctionalTestingManager::GetManager from crashing when a manager cannot be created (because we can't route to a world)
Change 3501062 by Marc.Audy
MakeArray AddInputPin is often used as part of node expansion, so need to move the transaction out of the function
Fix inability to undo/redo pin additions to sequence node
Add a K2Node_AddPinInterface to generalize the interface that K2Nodes implement to interact with SGraphNodeK2Sequence so it can be more generally used
#jira UE-46164
#jira UE-46270
Change 3501330 by Michael.Noland
AI: Fix an error on shutdown when the CDO of UAIPerceptionComponent tries to clean up (as it was never registered in the first place)
#jira UE-46271
Change 3501356 by Marc.Audy
Fix crash when multi-editing actor blueprints
#jira UE-46248
Change 3501408 by Michael.Noland
Core: Improve 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)
Change 3501457 by Phillip.Kavan
#jira UE-46054 - Fix crash when launching a packaged build that includes a nativized Blueprint instance with a ChildActorComponent instanced via an AddComponent node.
Change summary:
- Removed UK2Node_AddComponent::PostDuplicate(). This eliminates the creation of redundant component templates that were being unnecessarily created during the Blueprint duplication that precedes the nativization pass.
- Modified SMyBlueprint::OnDuplicateAction() to call MakeNewComponentTemplate() in response to a graph duplication action within the same Blueprint context (replaces previous UK2Node_AddComponent::PostDuplicate() impl).
- Modified FEmitDefaultValueHelper::HandleSpecialTypes() to force AddComponent-based CAC-owned template objects in the emitted codegen to use the UDynamicClass as the Outer when instancing. This matches what we already do for SCS-based CAC-owned template objects - that logic was added in CL# 3270456, and this matches up with FBlueprintNativeCodeGenModule::FindReplacedNameAndOuter(), where we specifically handle CAC-owned template objects.
Change 3502741 by Phillip.Kavan
#jira UE-45782 - Fix undo for index pin type changes.
Change summary:
- Modified SGraphPinIndex::OnTypeChanged() to call Modify() on the pin that was changed.
Change 3502939 by Michael.Noland
Back out changelist 3499927
Change 3503087 by Marc.Audy
Re-fixed ocean content as editor had also changed so had to take theirs and redo
#rnx
Change 3503266 by Ben.Zeigler
#jira UE-46335 Fix regression added in 4.16 where AssetRegistry GetAncesorClassNames/GetDerivedClassNames were not working properly in cooked builds for classes not in memory
Change 3503325 by mason.seay
updated Anim BP to prep for pin testing
Change 3503445 by Marc.Audy
Fix crash caused by OldPins being destroyed before rewiring
#rnx
Change 3505024 by Marc.Audy
Fix NodeEffectsPanel blueprint as it was using pins that no longer existed
#rnx
Change 3505254 by Marc.Audy
Don't include orphan pins when gather source property names
If a property doesn't exist for a source property name just skip the property rather than crashing
#jira UE-46345
#rnx
Change 3506125 by Ben.Zeigler
#jira UE-46311 Fix issues when blueprints are reloaded in place, it needs to remove them from root properly and sanitize the old class. It's still not clear why they are being reloaded in place
Change 3506334 by Dan.Oconnor
Move UAnimGraphNode_Base::PreloadRequiredAssets up to K2Node, make sure nodes get a chance to preload data before compilation manager compiles newly loaded blueprints
#jira UE-46411
Change 3506439 by Dan.Oconnor
Return to pre 3488512 behavior for construct object nodes. This means that we can still get warnings on load when users compile after saving a blueprint, but the current behavior loses default values because it's lookng at the skeleton cdo
#jira UE-46308
Change 3506468 by Dan.Oconnor
Return to pre 3488512 behavior, as it causes bad default values
#jira UE-46414
#rnx
Change 3506733 by Marc.Audy
Use the most up to date class to determine whether a property still exists when adding pins during reconstruction
#jira UE-45965
#author Dan.OConnor
#rnx
Change 3507531 by Ben.Zeigler
#jira UE-46449 Better fix to flush the asset registry queue when the editor requests a synchronous scan at startup. Sometimes it can take a few frames because of file handle delays
Change 3507924 by mason.seay
Sanity save of TM-Gameplay and sublevels to maybe resolve level streaming issues
Change 3507962 by Marc.Audy
Remake changes from CL# 3150796 wiped out by WEX-Staging merge to Main in CL# 3479958
#rnx
Change 3509131 by Dan.Oconnor
Compilation manager compile on load flow never called FindExportsInMemoryFirst, which is critical to prevent reloading of UBlueprintGeneratedClasses when Rename clears the export table
#jira UE-46311
Change 3509345 by Marc.Audy
CVar to disable orphan pins if necessary
#rnx
Change 3509959 by Marc.Audy
Protect against crashing due to large values in Timespan From functions
#jira UE-43840
Change 3510040 by Marc.Audy
Remove all the old unneeded ShooterGame test maps
#rnx
[CL 3510073 by Marc Audy in Main branch]
2017-06-26 15:07:18 -04:00
FActionList * ActionList = ActionRegistry . Find ( NodeSpawner - > NodeClass . Get ( ) ) ;
2014-09-26 11:31:34 -04:00
// Remove the NodeSpawner from the main registry, it will be replaced with the loaded version of the action
ActionList - > Remove ( NodeSpawner ) ;
}
// Remove the asset's path from the unloaded registry, it is no longer needed
UnloadedActionRegistry . Remove ( ObjectPath ) ;
}
}
//------------------------------------------------------------------------------
2022-09-07 01:06:47 -04:00
void FBlueprintActionDatabase : : MoveUnloadedAssetActions ( const FSoftObjectPath & SourceObjectPath , const FSoftObjectPath & TargetObjectPath )
2014-09-26 11:31:34 -04:00
{
// Check if the asset can be found in the unloaded action registry, if it can, we need to remove it and re-add under the new name
2023-05-16 10:52:49 -04:00
if ( auto * UnloadedActionList = UnloadedActionRegistry . Find ( SourceObjectPath ) )
2014-09-26 11:31:34 -04:00
{
check ( ! UnloadedActionRegistry . Find ( TargetObjectPath ) ) ;
// Add the entire array to the database under the new path
UnloadedActionRegistry . Add ( TargetObjectPath , * UnloadedActionList ) ;
// Remove the old asset's path from the unloaded registry, it is no longer needed
UnloadedActionRegistry . Remove ( SourceObjectPath ) ;
}
}
2014-08-23 20:16:29 -04:00
//------------------------------------------------------------------------------
FBlueprintActionDatabase : : FActionRegistry const & FBlueprintActionDatabase : : GetAllActions ( )
2014-07-09 12:17:42 -04:00
{
// if this is the first time that we're querying for actions, generate the
// list before returning it
2014-08-23 20:16:29 -04:00
if ( ActionRegistry . Num ( ) = = 0 )
2014-07-09 12:17:42 -04:00
{
RefreshAll ( ) ;
}
2014-08-23 20:16:29 -04:00
return ActionRegistry ;
2014-07-09 12:17:42 -04:00
}
2014-08-13 16:29:51 -04:00
2014-08-23 20:16:29 -04:00
//------------------------------------------------------------------------------
void FBlueprintActionDatabase : : RegisterAllNodeActions ( FBlueprintActionDatabaseRegistrar & Registrar )
{
2022-07-01 14:16:41 -04:00
TRACE_CPUPROFILER_EVENT_SCOPE ( FBlueprintActionDatabase : : RegisterAllNodeActions ) ;
2014-08-23 20:16:29 -04:00
// nodes may have actions they wish to add for this asset
2018-05-30 14:47:08 -04:00
TArray < UClass * > NodeClassList ;
GetDerivedClasses ( UK2Node : : StaticClass ( ) , NodeClassList ) ;
2014-08-23 20:16:29 -04:00
2018-05-30 14:47:08 -04:00
for ( UClass * NodeClass : NodeClassList )
{
2014-08-23 20:16:29 -04:00
TGuardValue < TSubclassOf < UEdGraphNode > > ScopedNodeClass ( Registrar . GeneratingClass , NodeClass ) ;
BlueprintActionDatabaseImpl : : GetNodeSpecificActions ( NodeClass , Registrar ) ;
}
}
2015-01-15 15:57:51 -05:00
void FBlueprintActionDatabase : : OnBlueprintChanged ( UBlueprint * InBlueprint )
{
2015-04-11 10:23:56 -04:00
if ( InBlueprint - > BlueprintType = = BPTYPE_LevelScript )
{
// Levelscript blueprints are managed through their owning worlds.
RefreshWorlds ( ) ;
}
else
{
BlueprintActionDatabaseImpl : : OnBlueprintChanged ( InBlueprint ) ;
}
2015-01-15 15:57:51 -05:00
}
2023-08-17 13:25:12 -04:00
void FBlueprintActionDatabase : : PreRefresh ( bool bRefreshAll )
{
// Refresh other systems as necessary, doing it here avoids redundant work
FTypePromotion : : RefreshPromotionTables ( ) ;
}
2022-06-30 11:25:52 -04:00
bool FBlueprintActionDatabase : : IsClassAllowed ( UClass const * InClass , EPermissionsContext InContext )
{
if ( InClass = = nullptr )
{
return false ;
}
UBlueprintEditorSettings * BlueprintEditorSettings = GetMutableDefault < UBlueprintEditorSettings > ( ) ;
switch ( InContext )
{
case EPermissionsContext : : Property :
case EPermissionsContext : : Node :
case EPermissionsContext : : Asset :
if ( BlueprintEditorSettings - > HasClassFiltering ( ) )
{
return BlueprintEditorSettings - > IsClassAllowed ( InClass ) ;
}
break ;
case EPermissionsContext : : Pin :
if ( BlueprintEditorSettings - > HasClassOnPinFiltering ( ) )
{
return BlueprintEditorSettings - > IsClassAllowedOnPin ( InClass ) ;
}
break ;
default :
break ;
}
return true ;
}
bool FBlueprintActionDatabase : : IsClassAllowed ( const FTopLevelAssetPath & InClassPath , EPermissionsContext InContext )
{
if ( ! InClassPath . IsValid ( ) )
{
return false ;
}
UBlueprintEditorSettings * BlueprintEditorSettings = GetMutableDefault < UBlueprintEditorSettings > ( ) ;
switch ( InContext )
{
case EPermissionsContext : : Property :
case EPermissionsContext : : Node :
case EPermissionsContext : : Asset :
if ( BlueprintEditorSettings - > HasClassPathFiltering ( ) )
{
return BlueprintEditorSettings - > IsClassPathAllowed ( InClassPath ) ;
}
break ;
case EPermissionsContext : : Pin :
if ( BlueprintEditorSettings - > HasClassPathOnPinFiltering ( ) )
{
return BlueprintEditorSettings - > IsClassPathAllowedOnPin ( InClassPath ) ;
}
break ;
default :
break ;
}
return true ;
}
bool FBlueprintActionDatabase : : HasClassFiltering ( )
{
UBlueprintEditorSettings * BlueprintEditorSettings = GetMutableDefault < UBlueprintEditorSettings > ( ) ;
return BlueprintEditorSettings - > HasClassFiltering ( ) | |
BlueprintEditorSettings - > HasClassOnPinFiltering ( ) | |
BlueprintEditorSettings - > HasClassPathFiltering ( ) | |
BlueprintEditorSettings - > HasClassPathOnPinFiltering ( ) ;
}
bool FBlueprintActionDatabase : : IsFieldAllowed ( UField const * InField , EPermissionsContext InContext )
{
if ( UFunction const * Function = Cast < UFunction > ( InField ) )
{
return IsFunctionAllowed ( Function , InContext ) ;
}
else if ( UEnum const * Enum = Cast < UEnum > ( InField ) )
{
return IsEnumAllowed ( Enum , InContext ) ;
}
else if ( UScriptStruct const * ScriptStruct = Cast < UScriptStruct > ( InField ) )
{
return IsStructAllowed ( ScriptStruct , InContext ) ;
}
else if ( UClass const * Class = Cast < UClass > ( InField ) )
{
return IsClassAllowed ( Class , InContext ) ;
}
return true ;
}
bool FBlueprintActionDatabase : : IsFunctionAllowed ( UFunction const * InFunction , EPermissionsContext InContext )
{
UBlueprintEditorSettings * BlueprintEditorSettings = GetMutableDefault < UBlueprintEditorSettings > ( ) ;
const FPathPermissionList & FunctionPermissions = BlueprintEditorSettings - > GetFunctionPermissions ( ) ;
const FPathPermissionList & EnumPermissions = BlueprintEditorSettings - > GetEnumPermissions ( ) ;
const FPathPermissionList & StructPermissions = BlueprintEditorSettings - > GetStructPermissions ( ) ;
const FNamePermissionList & PinCategoryPermissions = BlueprintEditorSettings - > GetPinCategoryPermissions ( ) ;
// Apply general filtering for functions
if ( FunctionPermissions . HasFiltering ( ) )
{
TStringBuilder < 256 > ResultBuilder ;
InFunction - > GetPathName ( nullptr , ResultBuilder ) ;
if ( ! FunctionPermissions . PassesFilter ( ResultBuilder . ToView ( ) ) )
{
return false ;
}
}
if ( UClass * Class = InFunction - > GetOuterUClass ( ) )
{
if ( ! IsClassAllowed ( Class , EPermissionsContext : : Asset ) )
{
UE_LOG ( LogBlueprint , Warning , TEXT ( " Function %s was filtered because its class (%s) was filtered " ) , * InFunction - > GetPathName ( ) , * Class - > GetName ( ) ) ;
return false ;
}
}
// If we have filtering for other fields we need to check function parameters that might reference them
if ( EnumPermissions . HasFiltering ( ) | | StructPermissions . HasFiltering ( ) | | PinCategoryPermissions . HasFiltering ( ) )
{
for ( TFieldIterator < FProperty > PropertyIt ( InFunction ) ; PropertyIt ; + + PropertyIt )
{
FProperty * Property = * PropertyIt ;
if ( FStructProperty * StructProperty = CastField < FStructProperty > ( Property ) )
{
if ( StructProperty - > Struct )
{
if ( ! IsStructAllowed ( StructProperty - > Struct , EPermissionsContext : : Pin ) )
{
UE_LOG ( LogBlueprint , Warning , TEXT ( " Function %s was filtered because one of its parameters (struct %s) was filtered " ) , * InFunction - > GetPathName ( ) , * Property - > GetName ( ) , * StructProperty - > Struct - > GetPathName ( ) ) ;
return false ;
}
}
}
else if ( FEnumProperty * EnumProperty = CastField < FEnumProperty > ( Property ) )
{
if ( UEnum * Enum = EnumProperty - > GetEnum ( ) )
{
if ( ! IsEnumAllowed ( Enum , EPermissionsContext : : Pin ) )
{
UE_LOG ( LogBlueprint , Warning , TEXT ( " Function %s was filtered because one of its parameters %s (enum %s) was filtered " ) , * InFunction - > GetPathName ( ) , * Property - > GetName ( ) , * Enum - > GetPathName ( ) ) ;
return false ;
}
}
}
else
{
FEdGraphPinType PinType ;
if ( GetDefault < UEdGraphSchema_K2 > ( ) - > ConvertPropertyToPinType ( Property , PinType ) )
{
if ( ! IsPinTypeAllowed ( PinType ) )
{
UE_LOG ( LogBlueprint , Warning , TEXT ( " Function %s was filtered because one of its parameters %s (%s) was filtered " ) , * InFunction - > GetPathName ( ) , * Property - > GetName ( ) , * Property - > GetCPPType ( ) ) ;
return false ;
}
}
else
{
UE_LOG ( LogBlueprint , Warning , TEXT ( " Function %s was filtered because one of its parameters %s (%s) was not able to be converted to a pin " ) , * InFunction - > GetPathName ( ) , * Property - > GetName ( ) , * Property - > GetCPPType ( ) ) ;
return false ;
}
}
}
}
return true ;
}
bool FBlueprintActionDatabase : : IsEnumAllowed ( UEnum const * InEnum , EPermissionsContext InContext )
{
const FPathPermissionList & EnumPermissions = GetMutableDefault < UBlueprintEditorSettings > ( ) - > GetEnumPermissions ( ) ;
if ( EnumPermissions . HasFiltering ( ) )
{
TStringBuilder < 256 > ResultBuilder ;
InEnum - > GetPathName ( nullptr , ResultBuilder ) ;
return EnumPermissions . PassesFilter ( ResultBuilder . ToView ( ) ) ;
}
return true ;
}
bool FBlueprintActionDatabase : : IsEnumAllowed ( const FTopLevelAssetPath & InEnumPath , EPermissionsContext InContext )
{
const FPathPermissionList & EnumPermissions = GetMutableDefault < UBlueprintEditorSettings > ( ) - > GetEnumPermissions ( ) ;
if ( EnumPermissions . HasFiltering ( ) )
{
return EnumPermissions . PassesFilter ( InEnumPath . ToString ( ) ) ;
}
return true ;
}
bool FBlueprintActionDatabase : : IsStructAllowed ( UScriptStruct const * InStruct , EPermissionsContext InContext )
{
const FPathPermissionList & StructPermissions = GetMutableDefault < UBlueprintEditorSettings > ( ) - > GetStructPermissions ( ) ;
if ( StructPermissions . HasFiltering ( ) )
{
TStringBuilder < 256 > ResultBuilder ;
InStruct - > GetPathName ( nullptr , ResultBuilder ) ;
return StructPermissions . PassesFilter ( ResultBuilder . ToView ( ) ) ;
}
return true ;
}
bool FBlueprintActionDatabase : : IsStructAllowed ( const FTopLevelAssetPath & InStructPath , EPermissionsContext InContext )
{
const FPathPermissionList & StructPermissions = GetMutableDefault < UBlueprintEditorSettings > ( ) - > GetStructPermissions ( ) ;
if ( StructPermissions . HasFiltering ( ) )
{
return StructPermissions . PassesFilter ( InStructPath . ToString ( ) ) ;
}
return true ;
}
bool FBlueprintActionDatabase : : IsPinTypeAllowed ( const FEdGraphPinType & InPinType , const FTopLevelAssetPath & InUnloadedAssetPath )
{
// First check if the pin's category is allowed
const FNamePermissionList & PinCategoryPermissions = GetMutableDefault < UBlueprintEditorSettings > ( ) - > GetPinCategoryPermissions ( ) ;
if ( PinCategoryPermissions . HasFiltering ( ) )
{
if ( ! PinCategoryPermissions . PassesFilter ( InPinType . PinCategory ) )
{
return false ;
}
if ( InPinType . PinCategory = = UEdGraphSchema_K2 : : PC_Struct )
{
if ( InUnloadedAssetPath . IsValid ( ) )
{
return IsStructAllowed ( InUnloadedAssetPath , EPermissionsContext : : Pin ) ;
}
else if ( const UScriptStruct * ScriptStruct = Cast < UScriptStruct > ( InPinType . PinSubCategoryObject ) )
{
return IsStructAllowed ( ScriptStruct , EPermissionsContext : : Pin ) ;
}
}
else if ( InPinType . PinCategory = = UEdGraphSchema_K2 : : PC_Enum | | InPinType . PinCategory = = UEdGraphSchema_K2 : : PC_Byte )
{
if ( InUnloadedAssetPath . IsValid ( ) )
{
return IsEnumAllowed ( InUnloadedAssetPath , EPermissionsContext : : Pin ) ;
}
else if ( const UEnum * Enum = Cast < UEnum > ( InPinType . PinSubCategoryObject ) )
{
return IsEnumAllowed ( Enum , EPermissionsContext : : Pin ) ;
}
}
else if ( InPinType . PinCategory = = UEdGraphSchema_K2 : : AllObjectTypes | |
InPinType . PinCategory = = UEdGraphSchema_K2 : : PC_Class | |
InPinType . PinCategory = = UEdGraphSchema_K2 : : PC_Object | |
InPinType . PinCategory = = UEdGraphSchema_K2 : : PC_Interface | |
InPinType . PinCategory = = UEdGraphSchema_K2 : : PC_SoftClass | |
InPinType . PinCategory = = UEdGraphSchema_K2 : : PC_SoftObject )
{
if ( InUnloadedAssetPath . IsValid ( ) )
{
return IsClassAllowed ( InUnloadedAssetPath , EPermissionsContext : : Pin ) ;
}
else if ( const UClass * Class = Cast < UClass > ( InPinType . PinSubCategoryObject ) )
{
return IsClassAllowed ( Class , EPermissionsContext : : Pin ) ;
}
}
else if ( InPinType . PinCategory = = UEdGraphSchema_K2 : : PC_Delegate | |
InPinType . PinCategory = = UEdGraphSchema_K2 : : PC_MCDelegate )
{
if ( const UFunction * PinSignature = FMemberReference : : ResolveSimpleMemberReference < UFunction > ( InPinType . PinSubCategoryMemberReference ) )
{
return IsFunctionAllowed ( PinSignature , EPermissionsContext : : Pin ) ;
}
}
}
return true ;
}
2014-08-13 16:29:51 -04:00
# undef LOCTEXT_NAMESPACE