Files
UnrealEngineUWP/Engine/Source/Editor/BlueprintGraph/Private/K2Node_CustomEvent.cpp

543 lines
18 KiB
C++
Raw Normal View History

// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
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_CustomEvent.h"
#include "Engine/BlueprintGeneratedClass.h"
#include "EdGraphSchema_K2.h"
#include "K2Node_BaseMCDelegate.h"
#include "Kismet2/BlueprintEditorUtils.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 "Kismet2/Kismet2NameValidators.h"
#include "Kismet2/CompilerResultsLog.h"
#include "BlueprintNodeSpawner.h"
#include "BlueprintEventNodeSpawner.h"
#include "BlueprintActionDatabaseRegistrar.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 "FindInBlueprintManager.h"
#define LOCTEXT_NAMESPACE "K2Node_CustomEvent"
#define SNAP_GRID (16) // @todo ensure this is the same as SNodePanel::GetSnapGridSize()
/**
* Attempts to find a CustomEvent node associated with the specified function.
*
* @param CustomEventFunc The function you want to find an associated node for.
* @return A pointer to the found node (NULL if a corresponding node wasn't found)
*/
static UK2Node_CustomEvent const* FindCustomEventNodeFromFunction(UFunction* CustomEventFunc)
{
UK2Node_CustomEvent const* FoundEventNode = NULL;
if (CustomEventFunc != NULL)
{
UObject const* const FuncOwner = CustomEventFunc->GetOuter();
check(FuncOwner != NULL);
// if the found function is a NOT a native function (it's user generated)
if (FuncOwner->IsA(UBlueprintGeneratedClass::StaticClass()))
{
UBlueprintGeneratedClass* FuncClass = Cast<UBlueprintGeneratedClass>(CustomEventFunc->GetOuter());
check(FuncClass != NULL);
UBlueprint* FuncBlueprint = Cast<UBlueprint>(FuncClass->ClassGeneratedBy);
check(FuncBlueprint != NULL);
TArray<UK2Node_CustomEvent*> BpCustomEvents;
FBlueprintEditorUtils::GetAllNodesOfClass<UK2Node_CustomEvent>(FuncBlueprint, BpCustomEvents);
// look to see if the function that this is overriding is a custom-event
for (UK2Node_CustomEvent const* const UserEvent : BpCustomEvents)
{
if (UserEvent->CustomFunctionName == CustomEventFunc->GetFName())
{
FoundEventNode = UserEvent;
break;
}
}
}
}
return FoundEventNode;
}
/**
* Custom handler for validating CustomEvent renames
*/
class FCustomEventNameValidator : public FKismetNameValidator
{
public:
FCustomEventNameValidator(UK2Node_CustomEvent const* CustomEventIn)
: FKismetNameValidator(CustomEventIn->GetBlueprint(), CustomEventIn->CustomFunctionName)
, CustomEvent(CustomEventIn)
{
check(CustomEvent != NULL);
}
// Begin INameValidatorInterface
virtual EValidatorResult IsValid(FString const& Name, bool bOriginal = false) override
{
EValidatorResult NameValidity = FKismetNameValidator::IsValid(Name, bOriginal);
if ((NameValidity == EValidatorResult::Ok) || (NameValidity == EValidatorResult::ExistingName))
{
UBlueprint* Blueprint = CustomEvent->GetBlueprint();
check(Blueprint != NULL);
UFunction* ParentFunction = FindField<UFunction>(Blueprint->ParentClass, *Name);
// if this custom-event is overriding a function belonging to the blueprint's parent
if (ParentFunction != NULL)
{
UK2Node_CustomEvent const* OverriddenEvent = FindCustomEventNodeFromFunction(ParentFunction);
// if the function that we're overriding isn't another custom event,
// then we can't name it this (only allow custom-event to override other custom-events)
if (OverriddenEvent == NULL)
{
NameValidity = EValidatorResult::AlreadyInUse;
}
}
}
return NameValidity;
}
// End INameValidatorInterface
private:
UK2Node_CustomEvent const* CustomEvent;
};
UK2Node_CustomEvent::UK2Node_CustomEvent(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
bOverrideFunction = false;
bIsEditable = true;
bCanRenameNode = true;
Added the ability to flag custom events as CallInEditor and extended the main editor actor details view to provide a drop list in the blueprints to call valid meta tagged functions. #TTP 337860 - Expose flagged BlueprintEvents as buttons in the Details panel that can be run in-editor #Branch UE4 #Proj Engine, DetailsCustomization, Kismet, Kismetcompiler, BlueprintGraph #Change Added FName FBlueprintMetadata::MD_CallInEditor as "CallInEditor" #Change Added bool UProperty UK2Node_CustomEvent::bCallInEditor to enable call in editor states to be serialised with UK2Node_CustomEvent #Change Modified FBlueprintGraphActionDetails::CustomizeDetails to add support for the CallInEditor tickbox. #Change Modified UK2Node_CustomEvent::GetPaletteIcon to return a different node icon when call in editor is enabled. #Added new icon GraphEditor.CallInEditorEvent_16x for the node corner icons and the blutility combo menu. #Change Added FKismetUserDeclaredFunctionMetadata::bCallInEditorProperty to help propagate call in editor setting from customevent node's to compiler generated event function entry point #Change Modified FKismetCompilerContext::CreateFunctionStubForEvent to check customevent node bCallInEditor properties and mark the generated function entry nodes as CallInEditor. This was required as a transitional phase to so the setting could be observed later during meta data generation. #Change Modified FKismetCompilerContext::FinishCompilingFunction to check function entry points for call in editor flags in the attached FKismetUserDeclaredFunctionMetadata and add CallInEditor meta data if present. #Change Modified AActor::ProcessEvent to allow events to be processed by the actor instance if the Function has CallInEditor meta data set to true #Change Added a series of functions to FActorDetails to conditionally add a blutility category and a combo list ( displaying the available blutility functions from the current actor blueprint ) and a button to call the selected function on the actor selection. ReviewedBy Chris.Wood #codereview Nick.Whiting [CL 2230263 by Ben Cosh in Main branch]
2014-07-24 13:30:26 -04:00
bCallInEditor = false;
}
void UK2Node_CustomEvent::Serialize(FArchive& Ar)
{
Super::Serialize(Ar);
if (Ar.IsLoading())
{
CachedNodeTitle.MarkDirty();
[UE-22013] - Remove Blueprint compiler note/warning from custom event nodes bound to delegates with 'const&' and TArray input parameters. change summary: - added a new object version for fixup during serialization (VER_UE4_BLUEPRINT_CUSTOM_EVENT_CONST_INPUT) - modified FBlueprintGraphArgumentLayout::OnRefCheckStateChanged() to implicitly set PinType.bIsConst 'true' for Custom Event nodes when PinType.bIsArray or PinType.bIsReference is also 'true'; this mirrors how delegate signatures are handled by UHT - modified UK2Node_CustomEvent::Serialize() to fix up PinType.bIsConst for array and non-array reference parameter types - in BlueprintEditorUtils.h, added FCompilerRelevantNodeLink and updated array typedef for the GetCompilerRelevantNodes() API (expanded out to include which pin it's linked to in addition to the owning node) - modified the FBlueprintEditorUtils::GetCompilerRelevantNodes() API (renamed) to track linked pins in addition to owning nodes in the result. also modified FindFirstCompilerRelevantNode() to match. - added FBlueprintEditorUtils::FindFirstCompilerRelevantLinkedPin() to allow queries for the linked pin instead of the compiler-relevant node itself. this is now used by the Custom Event ReconstructNode() logic to "pass-through" reroute nodes on delegate pin connections to find the "correct" target pin - modified UK2Node_CustomEvent::ReconstructNode() to properly handle the case when the delegate pin might be connected to a reroute node (in which case the LinkedTo pin might resolve to the Custom Event's previously-compiled function, rather than the delegate signature function it's bound to) notes: - also addresses UE-20613 #codereview Mike.Beach,Maciej.Mroz [CL 2740152 by Phillip Kavan in Main branch]
2015-10-23 13:43:05 -04:00
const UEdGraphSchema_K2* K2Schema = GetDefault<UEdGraphSchema_K2>();
// Ensure that array type inputs and non-array type pass-by-reference inputs are also marked 'const' - since arrays
// are implicitly passed by reference, and since events do not have return values/outputs, this equates to marking
// the parameter as 'const Type&' in native code. Also note that since UHT already blocks non-const reference types
// from being compiled into a MC delegate signature, any existing custom event param pins that were implicitly
// created via "Assign" in the Blueprint editor's context menu will previously have had 'const' set for its pin type.
//
// This ensures that (a) we don't emit the "no reference will be returned" note on custom event nodes with array
// inputs added by the user via the Details panel, and (b) we don't emit the "no reference will be returned" warning
// on custom event nodes with struct/object inputs added by the user in the Details tab and also set to pass-by-reference.
//
// Blueprint details customization now sets 'bIsConst' in new custom event node placements - see OnRefCheckStateChanged().
for (auto Pin : Pins)
[UE-22013] - Remove Blueprint compiler note/warning from custom event nodes bound to delegates with 'const&' and TArray input parameters. change summary: - added a new object version for fixup during serialization (VER_UE4_BLUEPRINT_CUSTOM_EVENT_CONST_INPUT) - modified FBlueprintGraphArgumentLayout::OnRefCheckStateChanged() to implicitly set PinType.bIsConst 'true' for Custom Event nodes when PinType.bIsArray or PinType.bIsReference is also 'true'; this mirrors how delegate signatures are handled by UHT - modified UK2Node_CustomEvent::Serialize() to fix up PinType.bIsConst for array and non-array reference parameter types - in BlueprintEditorUtils.h, added FCompilerRelevantNodeLink and updated array typedef for the GetCompilerRelevantNodes() API (expanded out to include which pin it's linked to in addition to the owning node) - modified the FBlueprintEditorUtils::GetCompilerRelevantNodes() API (renamed) to track linked pins in addition to owning nodes in the result. also modified FindFirstCompilerRelevantNode() to match. - added FBlueprintEditorUtils::FindFirstCompilerRelevantLinkedPin() to allow queries for the linked pin instead of the compiler-relevant node itself. this is now used by the Custom Event ReconstructNode() logic to "pass-through" reroute nodes on delegate pin connections to find the "correct" target pin - modified UK2Node_CustomEvent::ReconstructNode() to properly handle the case when the delegate pin might be connected to a reroute node (in which case the LinkedTo pin might resolve to the Custom Event's previously-compiled function, rather than the delegate signature function it's bound to) notes: - also addresses UE-20613 #codereview Mike.Beach,Maciej.Mroz [CL 2740152 by Phillip Kavan in Main branch]
2015-10-23 13:43:05 -04:00
{
if (Pin)
[UE-22013] - Remove Blueprint compiler note/warning from custom event nodes bound to delegates with 'const&' and TArray input parameters. change summary: - added a new object version for fixup during serialization (VER_UE4_BLUEPRINT_CUSTOM_EVENT_CONST_INPUT) - modified FBlueprintGraphArgumentLayout::OnRefCheckStateChanged() to implicitly set PinType.bIsConst 'true' for Custom Event nodes when PinType.bIsArray or PinType.bIsReference is also 'true'; this mirrors how delegate signatures are handled by UHT - modified UK2Node_CustomEvent::Serialize() to fix up PinType.bIsConst for array and non-array reference parameter types - in BlueprintEditorUtils.h, added FCompilerRelevantNodeLink and updated array typedef for the GetCompilerRelevantNodes() API (expanded out to include which pin it's linked to in addition to the owning node) - modified the FBlueprintEditorUtils::GetCompilerRelevantNodes() API (renamed) to track linked pins in addition to owning nodes in the result. also modified FindFirstCompilerRelevantNode() to match. - added FBlueprintEditorUtils::FindFirstCompilerRelevantLinkedPin() to allow queries for the linked pin instead of the compiler-relevant node itself. this is now used by the Custom Event ReconstructNode() logic to "pass-through" reroute nodes on delegate pin connections to find the "correct" target pin - modified UK2Node_CustomEvent::ReconstructNode() to properly handle the case when the delegate pin might be connected to a reroute node (in which case the LinkedTo pin might resolve to the Custom Event's previously-compiled function, rather than the delegate signature function it's bound to) notes: - also addresses UE-20613 #codereview Mike.Beach,Maciej.Mroz [CL 2740152 by Phillip Kavan in Main branch]
2015-10-23 13:43:05 -04:00
{
if (Pin->Direction == EGPD_Output
Copying //UE4/Dev-Blueprints to //UE4/Dev-Main (Source: //UE4/Dev-Blueprints @ 3080732) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3058607 on 2016/07/20 by Mike.Beach Preventing a uneeded FStructOnScope allocation from happening - was causing issues with the memstomp allocator (internally, FStructOnScope was allocating mem of zero size and then asserting on the returned pointer). Change 3059586 on 2016/07/21 by Maciej.Mroz Added comments Change 3061614 on 2016/07/22 by Ben.Cosh Fix for a bug in the blueprint profiler tunnel mapping code that caused asserts when internal pure tunnel pins were linked to each other as pass thru. #Jira UE-33654 - Editor crash on compilation when feeding impure data to macros implemented via blueprint while profiling is enabled #Jira UE-33138 - BP Profiler: crash when trying to set child actor in profiler #Proj BlueprintProfiler Change 3061686 on 2016/07/22 by Mike.Beach Keeping cyclically dependent Blueprints from infinitely trying to recompile each other, when both have an unrelated error that will not be resolved by compiling the other. Change 3061760 on 2016/07/22 by Ben.Cosh Minor refactor of the delegate event code in the profiler to fix some stubborn issues. #Jira UE-33466 - Key events still have problems with recording event stats correctly #Proj BlueprintProfiler, Kismet Change 3061819 on 2016/07/22 by Maciej.Mroz #jira UE-26676 Blueprint native events give error when output ref params aren't in a specific order Force a overriden function to have the same parameter's order as the original one. Change 3061854 on 2016/07/22 by Bob.Tellez Duplicate CL#3058653 //Fortnite/Main #UE4 Now actually removing deprecated pins from non-blueprint graphs. Also MarkPendingKill now happens in UEdGraphNode's BeginDestroy instead of its destructor to ensure supporting code can safely access references to other UObjects. Change 3062634 on 2016/07/23 by Mike.Beach Accounting for EditablePinBase nodes whose UserDefinedPins have the wrong direction assigned to them (we now validate the direction, and expect it to reflect the EdGraphPin's). We already had made this fixup in CustomEvent nodes, but others (like collapsed tunnels, and math expression nodes) needed the fixup as well. Change 3062926 on 2016/07/25 by Ben.Cosh Added functionality to the blueprint compiler to detect local event function calls and handle them better in profiling conditions. #Jira UE-32869 - Nodes called after a custom event call do not record stats in the profiler #Proj CoreUObject, BlueprintProfiler, UnrealEd, KismetCompiler, BlueprintGraph - Added script emitted inline event start/stop calls for inline events so we can pull out and process these events discretely - Looked into adding something similar for all events but couldn't find a good place to put it/get it operational so it caught more standard events. Change 3063406 on 2016/07/25 by Ben.Cosh Modifying the execution graph selection highlight coloring. #Jira none #Proj EditorStyle Change 3063505 on 2016/07/25 by Ben.Cosh The blueprint profiler tunnel mapping was missing a call seek past reroute nodes #Jira UE-33670 - Reroute nodes used in 'for' loops break profiler communication #Proj BlueprintProfiler Change 3063508 on 2016/07/25 by Ben.Cosh Fixed a minor bug in the stat creation code that reported tunnel pure timings twice. #Jira UE-33707 - BP Profiler - Pure nodes internal to macro reported twice in tree view #Proj Kismet Change 3063511 on 2016/07/25 by Ben.Cosh Fix for a bug introduced that caused pie instances to mapped twice in the blueprint profiler. #Jira UE-33697 - BP Profiler: Extra instance showing up in the tree view #Proj BlueprintProfiler Change 3063627 on 2016/07/25 by Maciej.Mroz #jira UE-33027 Crash when implementing interface to child blueprint and then implementing it with parent blueprint Removed premature validation. Change 3064349 on 2016/07/26 by Maciej.Mroz #jira UE-32942 BP Nativization: Reduce the size of executable files Enabled and fixed local variables on event graph. Local variable can be only created as return value (so we're sure it doesn't require any resistency between calls.) It reduces size of executable file (2MB in Orion.exe dev config). It reduces number of member variables in nativized class (local varaibles in functions are not uproperties, so the number of generated of objects decreases). Change 3064788 on 2016/07/26 by Ryan.Rauschkolb Fixed Splitting a Rotation input struct pin results in any previously entered values shifting to a different axis #UE-31931 Change 3064828 on 2016/07/26 by Ryan.Rauschkolb Removed flag to disable Single Layout Blueprint Editor (no longer experimental feature) #jira UE-32038 Change 3064966 on 2016/07/26 by Ryan.Rauschkolb Fixed Comment bubbles don't handle widget visibility correctly #UE-21278 Change 3068095 on 2016/07/28 by Maciej.Mroz #jira UE-32942 BP Nativization: Reduce the size of executable files Private and protected properties have PrivatePropertyOffset (PPO) function in .generated.h. This function allows the nativized code to access the property without using UProperty. -It reduces the size of executable file (added by nativized plugin) about 10%. The OrionGame.exe (development config) is 6MB smaller. -It reduces the number of FindField function calls and stativ variables in the nativized code. List of inaccessible properties (that cannot be accessed using PPO) is logged while cooking (with nativization enabled). Change 3068122 on 2016/07/28 by Maciej.Mroz #jira UE-32942 BP Nativization: Reduce the size of executable files Hardcoded asset paths are split, so string literals can be better reused. Added UDynamicClass::FindStructPropertyChecked. It replaces FindFieldChecked<UStructProperty>, without inlining, and implicit FName constructor. It reduced the size of OrionGame.exe 1MB. Change 3068159 on 2016/07/28 by Maciej.Mroz #jira UE-32806 GitHub 2569 : Exposed GetComponentByClass to blueprint #2569: Exposed GetComponentByClass to blueprint (Contributed by Koderz) Change 3069715 on 2016/07/29 by Maciej.Mroz #jira UE-33460 [CrashReport] UE4Editor_CoreUObject!UObjectPropertyBase::ParseObjectPropertyValue() [propertybaseobject.cpp:237] UObjectPropertyBase::ParseObjectPropertyValue won;t crash when property is invalid. Property validation in UserDefinedStruct. THe struct is not recompiled on load, so it must be validated after serialization. Change 3070569 on 2016/07/29 by Bob.Tellez Duplicating CL#3070518 from //Fortnite/Main #UE4 Deprecated pin removal logic is now exclusively in UEdGraphNode::PostLoad. DeprecatedPinWatches fixup is now done in K2Node::PostLoad. Change 3071292 on 2016/07/30 by Mike.Beach Preventing the Blueprint reinstancer's Function/PropertyMap from being GC'd during compile. This was causing issues where new functions/properties were being allocated in the same pointer location, and UpdateBytecodeReferences() was replacing those references as well (specifically in unrelated class's Children->Next chain, linking in functions/properties that did not belong to that class). This was causing a multitude of problems (mainly bad property offset read/writes and endless field iterator loops). #jira UE-29631 Change 3072078 on 2016/08/01 by Maciej.Mroz #jira UE-33423, UE-33860 Removed too strint ensures. Fixed FGraphObjectTextFactory - After Custom Event nodes are pased, Skel Class is recompiled, because other pasted nodes may require its signature. Change 3072166 on 2016/08/01 by Dan.Oconnor PR #2589: fix EaseIn / EaseOut descriptions (Contributed by dsine-de) #jira UE-32997 Change 3072614 on 2016/08/01 by Mike.Beach Fixing an issue where hot-reloading a Blueprint parent class was not reinstancing skeleton CDOs. This caused problems later where the skel class layout didn't reflect the CDO object. #jira UE-29613 #codreview Maciej.Mroz, Phillip.Kavan Change 3073939 on 2016/08/02 by Dan.Oconnor Final fix for function graphs that cannot be deleted (bAllowDeletion erroneously set to false). Issue only manifests with assets created before 4.11, as the original bug was fixed in 2842578 #jira UE-19062 Change 3075793 on 2016/08/03 by Maciej.Mroz #jira UE-30473 Moving child component in child blueprint forces parent to become dirty Don't make parent BP package dirty, when a component in child BP was modified. Change 3076990 on 2016/08/04 by Ben.Cosh This fixes issues with mapping tunnel boundary pure nodes and addresses some asserts recently introduced. #Jira UE-33691 - Assert when compiling Blueprint with profiler instrumentation #Jira UE-33138 - BP Profiler: crash when trying to set child actor in profiler #Jira UE-33654 - Editor crash on compilation when feeding impure data to macros implemented via blueprint while profiling is enabled #Proj Kismet, BlueprintProfiler, BlueprintGraph - Fixed inline event detection ( it was causing function stats to fail, happened across it ) - Updated pure node lookup to use the entry pin, this was required because pure nodes span function contexts and lookup is a problem in nested tunnels. - Updated tunnel pure node code, added a stubbed pure chain early on external pure links add this and it maps at an appropriate time. - Changed the way nested tunnels are mapped, now only top level tunnels are gathered mapping the blueprint and these map nested tunnels and register them. - Updated pure node stat refreshes and heat level updates ( this was causing a bunch of extra cost with my changes ) - Fixed an issue with script perf data that caused nan's with no samples. - Updated pure node playback to cache pure nodes and avoid a second involved lookup when applying timings. - Renamed FScriptExecutionPureNode to FScriptExecutionPureChainNode to better reflect it's updated role. - Added extra editor stat collection for checking the cost breakdown of the profiler ( hottest path and heat level calcs now have discreet timings ) Change 3079235 on 2016/08/05 by Phillip.Kavan Fix for a bug in pi to pure node lookup functionality that caused pure nodes to be mapped more than once. #Jira UE-34254 - Crash compiling blueprint with instrumentation - !ScriptExecNode.IsValid() #Proj BlueprintProfiler, Kismet - Fixed the code to focus observed pins - Fixed event pin mapping code that was failing when linked directly to a tunnel node. Note: Submitting on behalf of BenC (per MikeB). Change 3080417 on 2016/08/08 by Ben.Cosh This fixes the way execution path stats are calculated. #Jira UE-34150 - Exec pin containers in the profiler are accumulating time incorrectly. #Proj Kismet Change 3080484 on 2016/08/08 by Maciej.Mroz #jira UE-28625 Direction of GetOverlapInfos parameter doesn't match Change 3080571 on 2016/08/08 by Ben.Cosh This addresses some flaws in the fix submitted in CL 3080417 that were discovered after submission. #Jira UE-34150 - Exec pin containers in the profiler are accumulating time incorrectly. #Proj Kismet [CL 3080751 by Mike Beach in Main branch]
2016-08-08 11:42:16 -04:00
&& !Pin->PinType.bIsConst
&& !K2Schema->IsExecPin(*Pin)
&& !K2Schema->IsDelegateCategory(Pin->PinType.PinCategory))
{
Copying //UE4/Dev-Blueprints to //UE4/Dev-Main (Source: //UE4/Dev-Blueprints @ 3057841) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3043219 on 2016/07/08 by Dan.Oconnor SKismetInspector was incoherently using it's property view's EditingEnabledDelegate. Now assigning it only in one place. This causes the kismet inspector in the diff tool to be read only as client code intends #jira UE-32932 Change 3044844 on 2016/07/11 by Ryan.Rauschkolb Fixed issue where older CustomEvents had incorrect UserDefinedPin directions associated with them #jira UE-32683 Change 3045508 on 2016/07/11 by Mike.Beach Ensuring the order in which we reinstance Blueprint components is correct (SCS templates need to come before their instances). #jira UE-32985 Change 3045986 on 2016/07/12 by Maciej.Mroz #jira UE-32942 BP Nativization: Reduce the size of executable files Reuse hardcoded paths. Reduce amount of generated strings. Change 3046188 on 2016/07/12 by Maciej.Mroz #jira UE-32942 BP Nativization: Reduce the size of executable files Reduce number of TArray::operator[] calls. Change 3046412 on 2016/07/12 by Maciej.Mroz #jira UE-32942 BP Nativization: Reduce the size of executable files Reduced size of FBlueprintDependencyData constructor (no inlined code). Reducednumber of TArray.Add calls. Change 3046608 on 2016/07/12 by Ryan.Rauschkolb Fixed crash when breaking all links when pins are split pins with an array type #jira UE-31919 Change 3046755 on 2016/07/12 by Ben.Cosh This improves handling of inherited functions and events in the blueprint profiler and adds the concept of class scope to the instrumented signals. #Jira UE-32873 - Crash profiling blueprint that has a child blueprint with an instance in the level #Proj BlueprintProfiler, Kismet - Renamed EScriptInstrumentationEvent to EScriptInstrumentationSignal for improved clarity - Minor tidy up/refactor in EScriptInstrumentationSignal, moved some of the code to scripcore.cpp for visibility of other object types and exported it under COREUOBJECT_API. - Added class scope tracking to capture context and EScriptInstrumentationSignal so we can emit signals when the scope changes. - Modified LatentActionManager to implement new EScriptInstrumentationSignal interfaces. - Added code in the blueprint profiler to create sub class contexts when a class scope switch is emitted. - Added option in the blueprint profiler toolbar to hide.show inherited events - Removed the code for expand all option from the blueprint profiler toolbar and ExecutionStatDisplay - Modified the node colors to use preferences where applicable and added new code to discover graphnode flags before exec node creation - Added Scoped function name and event name calls to FBlueprintExecutionContext and FBlueprintFunctionContext - Modified the compiler module to rebuild inherited classes with instumentation when a child is built. Change 3047035 on 2016/07/12 by Ben.Cosh This adds some functionality to correctly map nested tunnels and macro's in the blueprint compiler so that correct source nodes and tunnels can be identified from the blueprint debug data. #Jira UE-33114 - The blueprint compiler fails to create correct debug information for nested macros #Proj BlueprintGraph, KismetCompiler, UnrealEd, Engine - Modified FEdGraphUtilities::MergeChildrenGraphsIn to optionally create boundary nodes when recursively merging graphs, this is only active during instrumented blueprint compilation and will be refactored later as a more general solution. - Modified UK2Node_TunnelBoundary to find source node guids for the current graph and cache them away for use in the VM backend - Modified UK2Node_TunnelBoundary to locate the source tunnel instance (Macro or Composite Node) and cache away for use in the VM backend. - Removed some potentially problematic checks added into the KismetCompiler before 4.13 branch to avoid fallout, these will be added back in with care later. - Added some extra data into the CompilerResults log to make the above work and not get stomped on by recursive macro node injection, again will be refactored out later. Change 3047206 on 2016/07/12 by Ben.Cosh This updates the blueprint profiler to make use of the new boundary node code to get the nested tunnel stats working. #Jira UE-32863 - Timings inside nested tunnels are still not working 100% #Proj BlueprintProfiler - This should be the final piece bar a few minor issues. Updated the macro/tunnel mapping code and the event processing to make use of the new tunnel data brought in with CL 3047035 - Still a problem that needs to be looked at regarding tracepaths in the widgets and tunnels, it might actually be more general than that but I don't think it's a huge concern/will be difficult to fix Change 3047468 on 2016/07/13 by Phillip.Kavan [UE-32254] Add a normalized heatmap view mode to the Blueprint profiler. change summary: - added EBlueprintProfilerHeatLevelMetricsType and changed EBlueprintProfilerHeatMapDisplayMode to an enum class - renamed GetNodeHeat*() methods to GetExclusiveHeat*() - added UBlueprintProfilerSettings and relocated heat map display settings from IBlueprintProfilerInterface/FBlueprintProfiler - changed access to heat map display settings to route through UBlueprintProfilerSettings instead of FBlueprintProfiler - modified UEditorExperimentalSettings::PostEditChangeProperty() to remove calls to set static heat level threshold limits; this is being handled elsewhere - modified FBlueprintProfiler ctor to remove calls to set static heat level threshold limits; this is now being handled elsewhere - modified SBlueprintProfilerToolbar to include a toggle switch for heat level metrics type; user ability to customize threshold settings is now tied to the toggle switch - added IBlueprintProfilerInterface::GetProfilerDataForBlueprint() API and implementation in FBlueprintProfiler - modified FScriptPerfData to include fields for caching calculated heat level values (now returned by the Get*() accessor methods, rather than calculating on each access) - added FScriptHeatLevelMetrics struct - added FScriptPerfData::SetHeatLevels() - added FScriptExecutionNode::CalculateHeatLevelStats() - added FScriptExecutionBlueprint::UpdateHeatLevelMetrics(), now being called from FScriptExecutionBlueprint::RefreshStats() to update heat level thresholds based on user-selected type - now calling CalculateHeatLevelStats() on BP/instance exec nodes as part of FScriptExecutionBlueprint::RefreshStats() (i.e. heat levels are now precalculated and cached after updating stats) - modified SGraphNodeK2Base::GetNodeIndicatorOverlayColor() to calculate the appropriate heat levels for the local aggregated PerfNode based on the current toggle switch setting (relative or custom) #jira UE-32254 Change 3047513 on 2016/07/13 by Phillip.Kavan [UE-32254] Fix code merge oversight causing compile error. #jira UE-32254 Change 3048638 on 2016/07/13 by Phillip.Kavan [UE-33131] Fix crash when compiling a Blueprint with multiple event graphs with instrumentation enabled. change summary: - added FBlueprintEditorUtils::IsEventGraph() - modified FBlueprintExecutionContext::MapBlueprintExecution() to avoid stomping the ubergraph entry - modified FBlueprintExecutionContext::GetFunctionNameFromGraph() to map secondary event graphs to the ubergraph function name - modified FBlueprintExecutionContext::GetScopedFunctionNameFromGraph() to map secondary event graphs to the ubergraph function name notes: - will also address UE-33133 #jira UE-33131 Change 3048796 on 2016/07/13 by Maciej.Mroz FAnimNode_BlendListByBool constructor works the same way both in runtime and in editor. It is necessary for BP->C++ converter. To reduce size of code construction, a diff between a "default" structure instance is used (so the default instance must be the same in runtime). Change 3048797 on 2016/07/13 by Ryan.Rauschkolb Fixed issue where output nodes sometimes weren't being created when collapsing nodes to macros #jira UE-33124 Change 3048805 on 2016/07/13 by Maciej.Mroz #jira UE-32942 BP Nativization: Reduce the size of executable files Reduce size of struct construction. While generating code, structures are diff with default instances. FLatentActionInfo and FBodyInstance are handled in a special way. Change 3048988 on 2016/07/13 by Ben.Cosh Some fixes to the pure node stat code to start to adress asserts recently introduced and re-enable the profiler widgets for pure nodes. #Jira UE-33141 - Crash processing pure nodes in the blueprint profiler #Proj BlueprintProfiler, Kismet - Part 1 of these changes, this addresses standard pure node asserts in the profiler. - The second part which is underway will address problems inside macro and tunnel instances. Change 3050027 on 2016/07/14 by Ben.Cosh This fixes an issue adding instrumentation to blueprints that don't implement events #Jira UE-32063 - The blueprint profiler doesn't display any stats in the execution graph if no instance is placed in the current level. #Proj BlueprintProfiler - The profiler made an assumption that a blueprint has an ubergraph function, whicn apparently is incorrect. - Removed some stale ubergraph code and added some extra checks when looking up function names. Change 3050029 on 2016/07/14 by Ben.Cosh This modifies the blueprint instrumented compilation chain so only the the blueprint you compile and all dependencies are instrumented and the profiler is notified rather than waiting for event data. #Jira UE-32063 - The blueprint profiler doesn't display any stats in the execution graph if no instance is placed in the current level. #Proj BlueprintProfiler, Kismet, UnrelEd - This also improves the execution graph UI, notifying the user that no instances are available to display data from. Change 3050275 on 2016/07/14 by Ben.Cosh Updating the blueprint profiler connection policy to handle scoped function names and fix the wire heatmaps. #Jira UE-33287 - BP Profiler - Enabling wire heatmap crashes editor #Proj BlueprintProfiler Change 3050513 on 2016/07/14 by Ryan.Rauschkolb BP Profiler: Distinguish (by name) the top level event and the nested event node in the tree-view #jira UE-32293 Change 3050624 on 2016/07/14 by Ben.Cosh This switches off some blueprint profiler debug defines checked in errantly in CL 3048988 #Jira UE-33141 - Crash processing pure nodes in the blueprint profiler #Proj Kismet Change 3052034 on 2016/07/15 by Ben.Cosh This fixes some incorrect wording on a UI notification message warning about profiling data not being available because no instances are placed in the current level #Jira UE-32063 - The blueprint profiler doesn't display any stats in the execution graph if no instance is placed in the current level. #Proj Kismet Change 3052037 on 2016/07/15 by Mike.Beach To maintain functionality, and address fallout from CL 3041603 - removing a callback that was previously never used (not until CL 3041603). If a Blueprint graph is read-only, that is not enough to block us from editing properties when inside that graph (think interfaces, math experssion graphs, etc.). #jira UE-33330 Change 3052271 on 2016/07/15 by Ryan.Rauschkolb BP Profiler: Added persistence for display settings #jira UE-32929 Change 3052416 on 2016/07/15 by Ben.Cosh This change adds new functionality to map pure links through tunnel boundaries and fixes some asserts caused by missing profiler nodes. #Jira UE-33254 - Crash processing pure nodes on tunnel boundaries #Proj BlueprintProfiler, Kismet - Added map through tunnel functionality for pure nodes - Added some code to patch in pure exec nodes to the tunnel calling context, this is to support pure nodes wired to tunnel pure pins which are mapped by the tunnel but really in the calling function. - Changed the way simple tunnel entry nodes create child widgets to get rid of a visual error. - Changed the blueprint compiler to use the updated true source nodes when registering pure ranges for impure nodes. Change 3052791 on 2016/07/16 by Ben.Cosh Fix for the internal function appearance for profiler stats, it was failing to display function inner stats. #Jira UE-33085 - BP Profiler - Internal function not listed nor heatmapped #Proj BlueprintProfiler Change 3052794 on 2016/07/16 by Ben.Cosh This fixes function return stats to be colored correctly in the blueprint profiler #Jira UE-32635 - BP Profiler: Pure node chains wired to a result node in a function graph don't appear in the profiler view. #Proj BlueprintProfiler Change 3052957 on 2016/07/17 by Ben.Cosh Removing Sample Bias settings and the ability to disable pure node times in the blueprint profiler #Jira UE-32260 - BP Profiler: Remove "Pure Timings" option from profiler window #Jira UE-33366 - BP Profiler: Remove "Recent Sample Bias" options from profiler window #Proj BlueprintProfiler, Kismet, UnrealEd Change 3052964 on 2016/07/17 by Ben.Cosh Renaming exclusive timings internally inside the blueprint profiler. #Jira UE-32264 - BP Profiler: Clarify and polish language used in the profiler settings #Proj GraphEditor, Kismet, UnrealEd, BlueprintProfiler - Doesn't resolve UE-32264, its more of a supporting change - Refactoring node exclusive API naming conventions to reflect the decision to go with average. Change 3052979 on 2016/07/17 by Ben.Cosh This fixes problems with sequence and tunnel instances with sequences inside them showing extra samples in the blueprint profiler #Jira UE-33365 - Tunnel instances with sequence nodes wired to the tunnel exit show extra samples #Jira UE-32271 - Sequence node stats are recording a sample for every output pin. #Proj BlueprintProfiler, Kismet - Added SampleBase so the perfdata can account for re-entrant samples. - Fixed sequence node re-entrant/sample count stats - Added a second number format for times and made times work and display in Millisecs rather than seconds. - Added trace histories for the tunnel entry/exit sites. Change 3052986 on 2016/07/17 by Ben.Cosh This updates support for heatwires in the blueprint profiler connection drawing policy to support changes in the tunnel mapping. #Jia UE-30591 - Profiler Heatwires fail at times around macro nodes #Jira UE-33309 - FlipFlop node breaks hottest path wire heatmap #Proj BlueprintProfiler Change 3053027 on 2016/07/17 by Ben.Cosh Fix for some missing pure node entries that were causing and assert in certain blueprints when profiling. #Jira UE-30106 - Compiling QA_PhysVelocitySettleTest with the blueprint profiler results in a crash/assert #Proj BlueprintProfiler, Kismet - Fixes to the way we gather tunnel instance pure nodes and the way we patch them into calling function contexts. Change 3053886 on 2016/07/18 by Maciej.Mroz #jira UE-33389 Error Event node K2.. is out-of-date. Please refresh it. from Source: /Game/Maps/Menu/CharacterScreen.. Class- and asset-types are listed in UEdGraphSchema_K2::GetVariableTypeTree. Change 3053904 on 2016/07/18 by Ben.Cosh This fixes an issue found when mapping nested tunnels in the blueprint profiler that caused them to display incorrectly. #Jira UE-33399 - Nested tunnels do not display correctly, the exit sites are displayed incorrectly. #Proj BlueprintProfiler, Kismet - A minor update to the exit site mapping of tunnels to avoid the issue. Change 3053920 on 2016/07/18 by Ben.Cosh Disabling the heat display for the max time column in the blueprint profiler. #Jira UE-32290 - BP Profiler: Max time column should not be colored (it's too noisy) #Proj Kismet Change 3053985 on 2016/07/18 by Maciej.Mroz #jira UE-33035, UE-32951 BP Nativization: - Dependencies for UserDefinedStruct default values - Fixed array of class declaration. Change 3054266 on 2016/07/18 by Ben.Cosh Missed something in CL 3053904 that caused the tunnel exit mapping to cause asserts. This just corrects the oversight ( bad check ) #Jira UE-33399 - Nested tunnels do not display correctly, the exit sites are displayed incorrectly. #Proj BlueprintProfiler Change 3054357 on 2016/07/18 by Phillip.Kavan BP Profiler - misc. UI polish change summary: - stat columns are now right-justified; stats centered vertically within cells; samples column is centered - darkened the profiler view's content area a bit to help hotspot stats stand out a bit better - made it so that the columns will stretch to fill the content area when the BP editor window is maximized - exec node name column text now remains white when selected (to be consistent w/ stat text) - desaturated the tree view highlight to work better w/ the darker content area and light stat/name text Change 3054504 on 2016/07/18 by Ben.Cosh Removing the hottest endpoint profiler wire option from the blueprint profiler. #Jira UE-32258 - BP Profiler: Remove "Hottest Endpoints" wire heatmap visualization #Proj BlueprintProfiler, Kismet Change 3055145 on 2016/07/19 by Maciej.Mroz Fixed a missing header problem when "bDontNativizeDataOnlyBP=false" Change 3055187 on 2016/07/19 by Maciej.Mroz #jira UE-28448 Ensure occurs dragging a level from Levels window into Blueprint event graph Change 3055366 on 2016/07/19 by Maciej.Mroz #jira UE-30063 Compiling specific blueprints in user projects cause editor to freeze and become unresponsive Fixed FBlueprintEditorUtils::GetDependentBlueprints. BP is not dependent on itself. Change 3055415 on 2016/07/19 by Ben.Cosh Fixing up some average timing namings that regressed/were missed to exclusive. #Jira UE-32264 - BP Profiler: Clarify and polish language used in the profiler settings #Proj BlueprintProfiler, GraphEditor, Kismet Change 3055708 on 2016/07/19 by Phillip.Kavan [UE-32929] BP profiler tool - display/threshold options are now being saved. change summary: - added properties for stat display options to BP profiler settings. - moved custom threshold values from experimental editor settings to BP profiler settings object. - removed BP profiler settings accessor methods in favor of a direct get/set (to be consistent w/ other usages). - modified FBlueprintProfilerStatOptions ctor to sync display option flags w/ BP profiler settings (from config). - modified FBlueprintProfilerStatOptions::OnChecked() to sync BP profiler settings w/ display option flags (to config). - consolidated custom heat threshold value get/set UI delegate methods + added internal ECustomPerformanceThreshold type. - added global defaults for custom heat thresholds to BP profiler settings; these are currently being used to determine whether or not to show the "reset to default" button in the UI (previously was mirroring hard-coded values in the delegate methods). #jira UE-32929 Change 3055801 on 2016/07/19 by Mike.Beach Reverting a SButton change from WEX merge, as it caused noticable problems when repeatedly clicking certain buttons in the editor. #jira UE-33328 Change 3056088 on 2016/07/19 by Ben.Cosh This is a general update on the stat calculations for blueprint to bring them into line with recent changes. ( and fix them ) #Jira UE-30957 - "Pure Time" does not populate with data in the Blueprint Profiler #Jira UE-33451 - Stats issues with Sequence nodes #Jira UE-33105 - Stats issues with Sequence nodes #Proj BlueprintProfiler, Kismet - Did a pass through tunnel stats and got them working in the non instance view - Made tunnel stats inclusive rather than average and updated the code a little ( set average as 0.0, so the samples work but with no discrete timings ) - Fixed complex tunnel widget generation ( it was missig the input pin links ) - Fixed simple tunnel widget generation - Moved pure chain exec nodes over to being FScriptExecutionPureNode's - Fixed blueprint pure timings - Renamed the BaseSample in the scriptperfdata to SampleFrequency ( I couldn't think of a good name the other day ) - Fixed a couple of issues I introduced into the FScriptPerfData updates that blocked blueprint stat updates working. - Made average stats always show when samples are present. Change 3056373 on 2016/07/19 by Maciej.Mroz #jira UE-33464 Several Fornite assets fail to compile, Custom events out-of-date, array inputs must have input wired into them Change 3057320 on 2016/07/20 by Maciej.Mroz #jira UE-32305 Trying to compile a complex blueprint that has been upgraded from an older version of the engine could cause a stack overflow FArchiveReplaceObjectRef works without recursion (it caused Stack overflow for very big BP). Change 3057341 on 2016/07/20 by Maciej.Mroz #jira UE-33474 QAGame fails to package with Nativization - UMG_AllPaletteWidgets fails to compile after conversion Change 3057448 on 2016/07/20 by Maciej.Mroz #jira UE-28941 Contains node giving incorrect result with literal Enum Any literal, passed as parameter to any Custom Thunk function, will have a proper type. Change 3057764 on 2016/07/20 by Ben.Cosh This fixes a problem with the blueprint profiler mapping actor instances created at runtime to fail mapping and assert. #Jira UE-33444 - Crash spawning a new instance of a blueprint with a delay node attached to BeginPlay at runtime while profiling that blueprint #Proj BlueprintProfiler [CL 3058256 by Mike Beach in Main branch]
2016-07-20 15:38:03 -04:00
for (TSharedPtr<FUserPinInfo>& PinInfo : UserDefinedPins)
[UE-22013] - Remove Blueprint compiler note/warning from custom event nodes bound to delegates with 'const&' and TArray input parameters. change summary: - added a new object version for fixup during serialization (VER_UE4_BLUEPRINT_CUSTOM_EVENT_CONST_INPUT) - modified FBlueprintGraphArgumentLayout::OnRefCheckStateChanged() to implicitly set PinType.bIsConst 'true' for Custom Event nodes when PinType.bIsArray or PinType.bIsReference is also 'true'; this mirrors how delegate signatures are handled by UHT - modified UK2Node_CustomEvent::Serialize() to fix up PinType.bIsConst for array and non-array reference parameter types - in BlueprintEditorUtils.h, added FCompilerRelevantNodeLink and updated array typedef for the GetCompilerRelevantNodes() API (expanded out to include which pin it's linked to in addition to the owning node) - modified the FBlueprintEditorUtils::GetCompilerRelevantNodes() API (renamed) to track linked pins in addition to owning nodes in the result. also modified FindFirstCompilerRelevantNode() to match. - added FBlueprintEditorUtils::FindFirstCompilerRelevantLinkedPin() to allow queries for the linked pin instead of the compiler-relevant node itself. this is now used by the Custom Event ReconstructNode() logic to "pass-through" reroute nodes on delegate pin connections to find the "correct" target pin - modified UK2Node_CustomEvent::ReconstructNode() to properly handle the case when the delegate pin might be connected to a reroute node (in which case the LinkedTo pin might resolve to the Custom Event's previously-compiled function, rather than the delegate signature function it's bound to) notes: - also addresses UE-20613 #codereview Mike.Beach,Maciej.Mroz [CL 2740152 by Phillip Kavan in Main branch]
2015-10-23 13:43:05 -04:00
{
if (PinInfo->PinName == Pin->PinName)
[UE-22013] - Remove Blueprint compiler note/warning from custom event nodes bound to delegates with 'const&' and TArray input parameters. change summary: - added a new object version for fixup during serialization (VER_UE4_BLUEPRINT_CUSTOM_EVENT_CONST_INPUT) - modified FBlueprintGraphArgumentLayout::OnRefCheckStateChanged() to implicitly set PinType.bIsConst 'true' for Custom Event nodes when PinType.bIsArray or PinType.bIsReference is also 'true'; this mirrors how delegate signatures are handled by UHT - modified UK2Node_CustomEvent::Serialize() to fix up PinType.bIsConst for array and non-array reference parameter types - in BlueprintEditorUtils.h, added FCompilerRelevantNodeLink and updated array typedef for the GetCompilerRelevantNodes() API (expanded out to include which pin it's linked to in addition to the owning node) - modified the FBlueprintEditorUtils::GetCompilerRelevantNodes() API (renamed) to track linked pins in addition to owning nodes in the result. also modified FindFirstCompilerRelevantNode() to match. - added FBlueprintEditorUtils::FindFirstCompilerRelevantLinkedPin() to allow queries for the linked pin instead of the compiler-relevant node itself. this is now used by the Custom Event ReconstructNode() logic to "pass-through" reroute nodes on delegate pin connections to find the "correct" target pin - modified UK2Node_CustomEvent::ReconstructNode() to properly handle the case when the delegate pin might be connected to a reroute node (in which case the LinkedTo pin might resolve to the Custom Event's previously-compiled function, rather than the delegate signature function it's bound to) notes: - also addresses UE-20613 #codereview Mike.Beach,Maciej.Mroz [CL 2740152 by Phillip Kavan in Main branch]
2015-10-23 13:43:05 -04:00
{
Copying //UE4/Dev-Blueprints to //UE4/Dev-Main (Source: //UE4/Dev-Blueprints @ 3080732) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3058607 on 2016/07/20 by Mike.Beach Preventing a uneeded FStructOnScope allocation from happening - was causing issues with the memstomp allocator (internally, FStructOnScope was allocating mem of zero size and then asserting on the returned pointer). Change 3059586 on 2016/07/21 by Maciej.Mroz Added comments Change 3061614 on 2016/07/22 by Ben.Cosh Fix for a bug in the blueprint profiler tunnel mapping code that caused asserts when internal pure tunnel pins were linked to each other as pass thru. #Jira UE-33654 - Editor crash on compilation when feeding impure data to macros implemented via blueprint while profiling is enabled #Jira UE-33138 - BP Profiler: crash when trying to set child actor in profiler #Proj BlueprintProfiler Change 3061686 on 2016/07/22 by Mike.Beach Keeping cyclically dependent Blueprints from infinitely trying to recompile each other, when both have an unrelated error that will not be resolved by compiling the other. Change 3061760 on 2016/07/22 by Ben.Cosh Minor refactor of the delegate event code in the profiler to fix some stubborn issues. #Jira UE-33466 - Key events still have problems with recording event stats correctly #Proj BlueprintProfiler, Kismet Change 3061819 on 2016/07/22 by Maciej.Mroz #jira UE-26676 Blueprint native events give error when output ref params aren't in a specific order Force a overriden function to have the same parameter's order as the original one. Change 3061854 on 2016/07/22 by Bob.Tellez Duplicate CL#3058653 //Fortnite/Main #UE4 Now actually removing deprecated pins from non-blueprint graphs. Also MarkPendingKill now happens in UEdGraphNode's BeginDestroy instead of its destructor to ensure supporting code can safely access references to other UObjects. Change 3062634 on 2016/07/23 by Mike.Beach Accounting for EditablePinBase nodes whose UserDefinedPins have the wrong direction assigned to them (we now validate the direction, and expect it to reflect the EdGraphPin's). We already had made this fixup in CustomEvent nodes, but others (like collapsed tunnels, and math expression nodes) needed the fixup as well. Change 3062926 on 2016/07/25 by Ben.Cosh Added functionality to the blueprint compiler to detect local event function calls and handle them better in profiling conditions. #Jira UE-32869 - Nodes called after a custom event call do not record stats in the profiler #Proj CoreUObject, BlueprintProfiler, UnrealEd, KismetCompiler, BlueprintGraph - Added script emitted inline event start/stop calls for inline events so we can pull out and process these events discretely - Looked into adding something similar for all events but couldn't find a good place to put it/get it operational so it caught more standard events. Change 3063406 on 2016/07/25 by Ben.Cosh Modifying the execution graph selection highlight coloring. #Jira none #Proj EditorStyle Change 3063505 on 2016/07/25 by Ben.Cosh The blueprint profiler tunnel mapping was missing a call seek past reroute nodes #Jira UE-33670 - Reroute nodes used in 'for' loops break profiler communication #Proj BlueprintProfiler Change 3063508 on 2016/07/25 by Ben.Cosh Fixed a minor bug in the stat creation code that reported tunnel pure timings twice. #Jira UE-33707 - BP Profiler - Pure nodes internal to macro reported twice in tree view #Proj Kismet Change 3063511 on 2016/07/25 by Ben.Cosh Fix for a bug introduced that caused pie instances to mapped twice in the blueprint profiler. #Jira UE-33697 - BP Profiler: Extra instance showing up in the tree view #Proj BlueprintProfiler Change 3063627 on 2016/07/25 by Maciej.Mroz #jira UE-33027 Crash when implementing interface to child blueprint and then implementing it with parent blueprint Removed premature validation. Change 3064349 on 2016/07/26 by Maciej.Mroz #jira UE-32942 BP Nativization: Reduce the size of executable files Enabled and fixed local variables on event graph. Local variable can be only created as return value (so we're sure it doesn't require any resistency between calls.) It reduces size of executable file (2MB in Orion.exe dev config). It reduces number of member variables in nativized class (local varaibles in functions are not uproperties, so the number of generated of objects decreases). Change 3064788 on 2016/07/26 by Ryan.Rauschkolb Fixed Splitting a Rotation input struct pin results in any previously entered values shifting to a different axis #UE-31931 Change 3064828 on 2016/07/26 by Ryan.Rauschkolb Removed flag to disable Single Layout Blueprint Editor (no longer experimental feature) #jira UE-32038 Change 3064966 on 2016/07/26 by Ryan.Rauschkolb Fixed Comment bubbles don't handle widget visibility correctly #UE-21278 Change 3068095 on 2016/07/28 by Maciej.Mroz #jira UE-32942 BP Nativization: Reduce the size of executable files Private and protected properties have PrivatePropertyOffset (PPO) function in .generated.h. This function allows the nativized code to access the property without using UProperty. -It reduces the size of executable file (added by nativized plugin) about 10%. The OrionGame.exe (development config) is 6MB smaller. -It reduces the number of FindField function calls and stativ variables in the nativized code. List of inaccessible properties (that cannot be accessed using PPO) is logged while cooking (with nativization enabled). Change 3068122 on 2016/07/28 by Maciej.Mroz #jira UE-32942 BP Nativization: Reduce the size of executable files Hardcoded asset paths are split, so string literals can be better reused. Added UDynamicClass::FindStructPropertyChecked. It replaces FindFieldChecked<UStructProperty>, without inlining, and implicit FName constructor. It reduced the size of OrionGame.exe 1MB. Change 3068159 on 2016/07/28 by Maciej.Mroz #jira UE-32806 GitHub 2569 : Exposed GetComponentByClass to blueprint #2569: Exposed GetComponentByClass to blueprint (Contributed by Koderz) Change 3069715 on 2016/07/29 by Maciej.Mroz #jira UE-33460 [CrashReport] UE4Editor_CoreUObject!UObjectPropertyBase::ParseObjectPropertyValue() [propertybaseobject.cpp:237] UObjectPropertyBase::ParseObjectPropertyValue won;t crash when property is invalid. Property validation in UserDefinedStruct. THe struct is not recompiled on load, so it must be validated after serialization. Change 3070569 on 2016/07/29 by Bob.Tellez Duplicating CL#3070518 from //Fortnite/Main #UE4 Deprecated pin removal logic is now exclusively in UEdGraphNode::PostLoad. DeprecatedPinWatches fixup is now done in K2Node::PostLoad. Change 3071292 on 2016/07/30 by Mike.Beach Preventing the Blueprint reinstancer's Function/PropertyMap from being GC'd during compile. This was causing issues where new functions/properties were being allocated in the same pointer location, and UpdateBytecodeReferences() was replacing those references as well (specifically in unrelated class's Children->Next chain, linking in functions/properties that did not belong to that class). This was causing a multitude of problems (mainly bad property offset read/writes and endless field iterator loops). #jira UE-29631 Change 3072078 on 2016/08/01 by Maciej.Mroz #jira UE-33423, UE-33860 Removed too strint ensures. Fixed FGraphObjectTextFactory - After Custom Event nodes are pased, Skel Class is recompiled, because other pasted nodes may require its signature. Change 3072166 on 2016/08/01 by Dan.Oconnor PR #2589: fix EaseIn / EaseOut descriptions (Contributed by dsine-de) #jira UE-32997 Change 3072614 on 2016/08/01 by Mike.Beach Fixing an issue where hot-reloading a Blueprint parent class was not reinstancing skeleton CDOs. This caused problems later where the skel class layout didn't reflect the CDO object. #jira UE-29613 #codreview Maciej.Mroz, Phillip.Kavan Change 3073939 on 2016/08/02 by Dan.Oconnor Final fix for function graphs that cannot be deleted (bAllowDeletion erroneously set to false). Issue only manifests with assets created before 4.11, as the original bug was fixed in 2842578 #jira UE-19062 Change 3075793 on 2016/08/03 by Maciej.Mroz #jira UE-30473 Moving child component in child blueprint forces parent to become dirty Don't make parent BP package dirty, when a component in child BP was modified. Change 3076990 on 2016/08/04 by Ben.Cosh This fixes issues with mapping tunnel boundary pure nodes and addresses some asserts recently introduced. #Jira UE-33691 - Assert when compiling Blueprint with profiler instrumentation #Jira UE-33138 - BP Profiler: crash when trying to set child actor in profiler #Jira UE-33654 - Editor crash on compilation when feeding impure data to macros implemented via blueprint while profiling is enabled #Proj Kismet, BlueprintProfiler, BlueprintGraph - Fixed inline event detection ( it was causing function stats to fail, happened across it ) - Updated pure node lookup to use the entry pin, this was required because pure nodes span function contexts and lookup is a problem in nested tunnels. - Updated tunnel pure node code, added a stubbed pure chain early on external pure links add this and it maps at an appropriate time. - Changed the way nested tunnels are mapped, now only top level tunnels are gathered mapping the blueprint and these map nested tunnels and register them. - Updated pure node stat refreshes and heat level updates ( this was causing a bunch of extra cost with my changes ) - Fixed an issue with script perf data that caused nan's with no samples. - Updated pure node playback to cache pure nodes and avoid a second involved lookup when applying timings. - Renamed FScriptExecutionPureNode to FScriptExecutionPureChainNode to better reflect it's updated role. - Added extra editor stat collection for checking the cost breakdown of the profiler ( hottest path and heat level calcs now have discreet timings ) Change 3079235 on 2016/08/05 by Phillip.Kavan Fix for a bug in pi to pure node lookup functionality that caused pure nodes to be mapped more than once. #Jira UE-34254 - Crash compiling blueprint with instrumentation - !ScriptExecNode.IsValid() #Proj BlueprintProfiler, Kismet - Fixed the code to focus observed pins - Fixed event pin mapping code that was failing when linked directly to a tunnel node. Note: Submitting on behalf of BenC (per MikeB). Change 3080417 on 2016/08/08 by Ben.Cosh This fixes the way execution path stats are calculated. #Jira UE-34150 - Exec pin containers in the profiler are accumulating time incorrectly. #Proj Kismet Change 3080484 on 2016/08/08 by Maciej.Mroz #jira UE-28625 Direction of GetOverlapInfos parameter doesn't match Change 3080571 on 2016/08/08 by Ben.Cosh This addresses some flaws in the fix submitted in CL 3080417 that were discovered after submission. #Jira UE-34150 - Exec pin containers in the profiler are accumulating time incorrectly. #Proj Kismet [CL 3080751 by Mike Beach in Main branch]
2016-08-08 11:42:16 -04:00
Pin->PinType.bIsConst = PinInfo->PinType.bIsConst = PinInfo->PinType.bIsArray || PinInfo->PinType.bIsReference;
break;
[UE-22013] - Remove Blueprint compiler note/warning from custom event nodes bound to delegates with 'const&' and TArray input parameters. change summary: - added a new object version for fixup during serialization (VER_UE4_BLUEPRINT_CUSTOM_EVENT_CONST_INPUT) - modified FBlueprintGraphArgumentLayout::OnRefCheckStateChanged() to implicitly set PinType.bIsConst 'true' for Custom Event nodes when PinType.bIsArray or PinType.bIsReference is also 'true'; this mirrors how delegate signatures are handled by UHT - modified UK2Node_CustomEvent::Serialize() to fix up PinType.bIsConst for array and non-array reference parameter types - in BlueprintEditorUtils.h, added FCompilerRelevantNodeLink and updated array typedef for the GetCompilerRelevantNodes() API (expanded out to include which pin it's linked to in addition to the owning node) - modified the FBlueprintEditorUtils::GetCompilerRelevantNodes() API (renamed) to track linked pins in addition to owning nodes in the result. also modified FindFirstCompilerRelevantNode() to match. - added FBlueprintEditorUtils::FindFirstCompilerRelevantLinkedPin() to allow queries for the linked pin instead of the compiler-relevant node itself. this is now used by the Custom Event ReconstructNode() logic to "pass-through" reroute nodes on delegate pin connections to find the "correct" target pin - modified UK2Node_CustomEvent::ReconstructNode() to properly handle the case when the delegate pin might be connected to a reroute node (in which case the LinkedTo pin might resolve to the Custom Event's previously-compiled function, rather than the delegate signature function it's bound to) notes: - also addresses UE-20613 #codereview Mike.Beach,Maciej.Mroz [CL 2740152 by Phillip Kavan in Main branch]
2015-10-23 13:43:05 -04:00
}
}
}
}
}
}
}
FText UK2Node_CustomEvent::GetNodeTitle(ENodeTitleType::Type TitleType) const
{
if (TitleType != ENodeTitleType::FullTitle)
{
return FText::FromName(CustomFunctionName);
}
else if (CachedNodeTitle.IsOutOfDate(this))
{
FText RPCString = UK2Node_Event::GetLocalizedNetString(FunctionFlags, false);
FFormatNamedArguments Args;
Args.Add(TEXT("FunctionName"), FText::FromName(CustomFunctionName));
Args.Add(TEXT("RPCString"), RPCString);
// FText::Format() is slow, so we cache this to save on performance
CachedNodeTitle.SetCachedText(FText::Format(NSLOCTEXT("K2Node", "CustomEvent_Name", "{FunctionName}{RPCString}\nCustom Event"), Args), this);
}
return CachedNodeTitle;
}
bool UK2Node_CustomEvent::CanCreateUserDefinedPin(const FEdGraphPinType& InPinType, EEdGraphPinDirection InDesiredDirection, FText& OutErrorMessage)
{
if (!IsEditable())
{
return false;
}
// Make sure that if this is an exec node we are allowed one.
const UEdGraphSchema_K2* Schema = GetDefault<UEdGraphSchema_K2>();
if(InDesiredDirection == EGPD_Input)
{
Copying //UE4/Dev-Blueprints to //UE4/Dev-Main (Source: //UE4/Dev-Blueprints @ 3042808) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3026763 on 2016/06/24 by Phillip.Kavan [UE-32259] Fix missing heat map coloration on pure nodes. change summary: - modified FScriptExecutionNode::RefreshStats() to ensure that child nodes are updated for 'standard' exec node types. #jira UE-32259 Change 3026829 on 2016/06/24 by Mike.Beach Mirroring CL 3025832 from Release-4.12 Guarding GetClassDefault nodes against asserts while loading cyclically dependent content. Regenerating one Blueprint could trigger a ReconstructNode() in a separate Blueprint (that had already been regenerated). However, not all objects in that Blueprint's package have been post-loaded, so object Rename() will assert is you try to reset loaders with it. #jira UE-32356 Change 3026888 on 2016/06/24 by Mike.Beach PR #2460: Functionality to flag blueprint as abstract (Contributed by Pierdek) Change 3027245 on 2016/06/24 by Phillip.Kavan [UEBP-180] Alternate treatment for Blueprint profiler tree view node expander icon (to differentiate from exec pin icons). change summary: - added SProfilerStatExpander (from BenC) - modified original to replace indicator icons w/ FontAwesome glyphs (they're a bit clearer) - see screenshot attached to JIRA #jira UEBP-180 Change 3027279 on 2016/06/24 by Ryan.Rauschkolb Fixed issue where unsupported pins could be added to custom Event nodes which can lead to a crash #jira UE-31148 Change 3027606 on 2016/06/25 by Dan.Oconnor Back out changelist 3027279, this change breaks custom events coupled to multicast delegate nodes (see ProjRocket.uasset in shooter game for an example) Change 3028731 on 2016/06/27 by Ben.Cosh Minor change to the spacing around the new expander icons for the blueprint profiler. #Jira UEBP-180 - Pin icons are too similar to the tree expander icons in the node execution graph display. #Proj Kismet Change 3028740 on 2016/06/27 by Ben.Cosh This change modifies the way the blueprint profiler detects and maps delegate events that are created at blueprint compile time. #Jira UE-32055 - Assert when profiling timelines in the blueprint profiler #Proj BlueprintProfiler, KismetCompiler, BlueprintGraph, LiveEditor, Kismet, Engine Change 3028844 on 2016/06/27 by Maciej.Mroz #jira UE-32470 Nativized Orion: Sparrow has no Rentless ability. Better way to find Placeholder classes in BlueprintNativeCodeGenModule. Change 3029573 on 2016/06/27 by Ryan.Rauschkolb Fixed issue where Preview Connection would be drawn incorrectly when an input and output pin share the same name #jira UE-32211 Change 3030335 on 2016/06/28 by Maciej.Mroz #jira UE-30858 Nativized Orion - Some particle effects are not rendering List of AssetRegistrySearchable properties, that should be stored for DynamicClasses in moved to .ini file. Added SearchDynamicClassCues function in GameplayCueManager.cpp Change 3030492 on 2016/06/28 by Ben.Cosh CIS Mac Build fix Change 3030494 on 2016/06/28 by Ben.Cosh This change reworks the way the blueprint profiler maps latent re-entry points to address problems that could be triggered when multiple re-entries happenned within close proximity. #Jira UE-32452 - Blueprint profiler asserts when a second latent entry is triggered #Proj BlueprintProfiler, CoreUObject, Engine, Kismet Change 3030612 on 2016/06/28 by Maciej.Mroz typo fixed Change 3031461 on 2016/06/28 by Dan.Oconnor Fixed for crash involving a stale UEdGraphPin after performing an undo/redo operation inolving UEdGraphNode(s) #jira UE-32553 Change 3031537 on 2016/06/28 by Ben.Cosh Fix for a problem introduced in CL 3030494 and recent graph pin changes that caused problems uniquely naming tunnel entry/exit pins. #Jira UE-32578 - Crash when profiling blueprint containing a for-loop #Proj BlueprintProfiler Change 3031556 on 2016/06/28 by Ben.Cosh This fixes a problem with the profiler tracking of PIE actor instances adding a mechanism to refresh the actor references when a subsequent PIE session is started. #Jira UE-32595 - Running two subsequent PIE sessions with a latent entry point causes an assert. #Proj BlueprintProfiler, Kismet Change 3031588 on 2016/06/28 by Ryan.Rauschkolb Fixed issue where unsupported pins could be added to custom Event nodes which can lead to a crash #jira UE-31148 Change 3031887 on 2016/06/28 by Dan.Oconnor Fix for crash caused by stale pin access in SGraphPin, also fixes 'double opacity' effect when ctrl+dragging off of a macro #jira UE-32604 Change 3031932 on 2016/06/28 by Dan.Oconnor Fix for major regression in pin value visibility #jira UE-32614 Change 3032568 on 2016/06/29 by Phillip.Kavan [UE-31681] Ensure that cached component data cache template objects are referenced during garbage collection. change summary: - modified AActor::AddReferencedObjects() to include CurrentTransactionAnnotation - added UChildActorComponent::AddReferencedObjects() to include CachedInstanceData - also added FChildActorComponentInstanceData::AddReferencedObjects() to include ComponentInstanceData (just in case some future task happens to trigger a reference gather during its lifetime) additional notes: - should also resolve UE-32558 #jira UE-31681 Change 3032998 on 2016/06/29 by Dan.Oconnor Fixing shutdown crash after LinkedTo lists are corrupted. An ensure couldn't fire when a node had already been destroyed. UE-32631 tracks the actual ensure. #jira UE-32634 Change 3033448 on 2016/06/29 by Ryan.Rauschkolb Discard Return Nodes that have no outputs when collapsing to function #jira UE-23381 Change 3034407 on 2016/06/30 by Phillip.Kavan [UE-32675] Fix no-editor compile issue. Change 3034691 on 2016/06/30 by Ryan.Rauschkolb Fixed issue where Macro nodes with ambiguous links could be collapsed into a function Change 3034701 on 2016/06/30 by Ryan.Rauschkolb Cleaned up UEdGraphSchema_K2::GetVariableTypeTree to use a filter rather than several booleans Change 3035093 on 2016/06/30 by Maciej.Mroz #jira UE-32683 BP_Hero Blueprint failing to compile in Orion - K2Node_CustomEvent_1050 is out of date Temporary fix. Change 3035440 on 2016/07/01 by Maciej.Mroz #jira UE-32706 Nativized Orion crash - Cannot find "Root" subobject in ABP_HeroPedestal_C... Make sure, the CDO of DynamicClass (and its subobjects) have AsyncLoading flag cleared. Change 3035442 on 2016/07/01 by Maciej.Mroz Added UDynamicClass::FindArchetype #jira UE-30667 Ground material in Agora incorrect in Nativized Orion Change 3036233 on 2016/07/01 by Dan.Oconnor Proper handling of null pin references in compiler results logs Change 3036541 on 2016/07/01 by Dan.Oconnor Fix for more assymetry in LinkedTo after undo/redo. This solution addresses both UE-32645 and UE-32553. The key to correct behavior is to explictly detect the case where only one of the two nodes in a peer (LinkedTo) relationship are in the transaction buffer. Added IsObjectTransacting to transaction interface to detect this. #jira UE-32645 Change 3036581 on 2016/07/02 by Dan.Oconnor Non-editor fix Change 3036632 on 2016/07/02 by Maciej.Mroz Removed too strict check in BlueprintNativeCodeGenModule Change 3036715 on 2016/07/02 by Maciej.Mroz #jira UE-32612 Odin emits a error when nativized - attempting to access a hidden boolean bitfield property - Private bitfield can be used as LHS expression in generated code. - Refactoring. Introduced ENativizedTermUsage. Change 3037014 on 2016/07/04 by Maciej.Mroz #jira UE-32729 Orion failing to package for PS4 with Nativization Make sure that temporary variable used in ternary operator: "context ? context->variable : temp-variable", has exactly the same type as the wanted variable. Change 3037300 on 2016/07/05 by Maciej.Mroz #jira UE-31756 Fixup hardcoded function names in BP=>Cpp backend Change 3037303 on 2016/07/05 by Maciej.Mroz #jira UE-31756 Nativization - fixed hardcoded string. Change 3037307 on 2016/07/05 by Maciej.Mroz AutomationTool: Fixed issue: A nativized client was compiled with both client and server NativizedAssets plugins. Paths to nativized BP plugin is stored in a map. Change 3037712 on 2016/07/05 by Mike.Beach Adding a non-const version of MultiFindPointer() for TMultiMap. Change 3037790 on 2016/07/05 by Mike.Beach Fixing a bug where overridden components in Blueprints could load with cleared properties - this could happen in cyclically dependent parent/child Blueprints (where the child's component would be zeroed). In this case, the Blueprint's CDO would be deferred, so to solve this new issue we now defer the Blueprint's sub-object overrides as well. #jira UE-32693 Change 3038014 on 2016/07/05 by Ben.Cosh Refactor of the blueprint profiler tunnel mapping and playback to address issues blocking MVP #Jira UE-32056 - The blueprint profiler can still get hung up with cyclic links in the graph #Proj Kismet, BlueprintProfiler, KismetCompiler, BlueprintGraph, UnrealEd Change 3038533 on 2016/07/05 by Mike.Beach PR #2558: Stopping Zoom-to-Fit On User Input (Fixed) (Contributed by MichaelSchoell) Change 3038608 on 2016/07/05 by Dan.Oconnor Fix for crash when altering ConstructObjectFromClass nodes, removed now unused InvalidateAndTrash function from UEdGraphPin, removed subpin leak counter #jira FORT-26495 Change 3038770 on 2016/07/05 by Dan.Oconnor Hiding TThreadSingleton<FBlueprintExceptionTracker>::Get() to fix clang for windows link error #jira UE-31935 Change 3038841 on 2016/07/05 by Dan.Oconnor Simple null check to prevent crash after loading a blueprint to diff. The diff'd blueprint is ending up in other blueprint's DependentBlueprintsToRecompile, for now this is the safest fix #jira UE-31115 Change 3039179 on 2016/07/06 by Maciej.Mroz #jira UE-31987 Editor crashes when transforming actor after applying instances changes Selected (in Level editor) instance components are still selected after they are converted to regular components. Change 3039216 on 2016/07/06 by Maciej.Mroz #jira UE-31767 [CrashReport] UE4Editor_Engine!AActor::GetLevel() [actor.cpp:1663] FIxed unsafe code. Change 3040046 on 2016/07/06 by Ben.Cosh This fixes a problem found where tunnel instances inside tunnel graphs fail to map correctly in the blueprint profiler #Jira UE-32862 - Tunnel instances inside tunnels do not map correctly in the blueprint profiler #Proj BlueprintProfiler Change 3040061 on 2016/07/06 by Ben.Cosh fix for bad unshelve before submit in CL 3040046 - Phillip already reviewed this version of the file and not what was actually submitted. Change 3040346 on 2016/07/06 by Maciej.Mroz #jira UE-32840 //UE4/Dev-Blueprints: UE4_StaticAnalysis completed with Warnings - 2 Warnings Fix(?) for warning C28182 Change 3040349 on 2016/07/06 by Dan.Oconnor Updating test data Change 3040473 on 2016/07/06 by Dan.Oconnor Fix SMyBlueprint in blueprint diff tool so that kismet inspector is updated with the object selected in SMyBlueprint, needed to investigate UE-18200 Change 3040536 on 2016/07/06 by Dan.Oconnor Call to APITestFunction Change 3040565 on 2016/07/06 by Dan.Oconnor Clone saved GeneratedClass when not doing COL. Groundwork to fix for UE-17268. Change 3040603 on 2016/07/06 by Dan.Oconnor PR #2539: Option to disable Grid in the blueprint and material editor and change grid colors (Contributed by CelPlays) #jira UE-32497 Change 3040798 on 2016/07/07 by Maciej.Mroz Fixed warning C6011: Dereferencing NULL pointer 'Object'. Added some comments. #jira UE-32840 Change 3041185 on 2016/07/07 by Ben.Cosh This fixes problems with the blueprint profiler with name collisions for nodes in different graphs and improves nested tunnel detection. #Jira UE-32862 - Tunnel instances inside tunnels do not map correctly in the blueprint profiler #Jira UE-32889 - Name collisions can now occur in the blueprint profiler for stat nodes. #Proj BlueprintProfiler, Kismet Notes: This attempts to continue to address fall out from CL 3040046 to improve stability. Previously execution nodes were patched into the function contexts that called a tunnel instance. However this proved problematic after spotting a rare case where node names collide between between event and tunnel graphs and caused havok in the node mapping. This change moves to an approach that patches in tunnel contexts and any dependent contexts and instead attempts to locate critical path nodes using a new node search system making use of these child function contexts. CL 3040046 also modified TunnelContext's to be actually more representative of a tunnel instance context, I have updated naming conventions to reflect this for clarity. The changes here also add a single function context for tunnel graphs which contain the bulk of the nodes in the graph and the tunnel instance contexts reference this and make use of it to create non boundary / tunnel instance nodes so they are located in a single place for all instances of that tunnel graph. Change 3041603 on 2016/07/07 by Dan.Oconnor Fix for check failure: PreviousCDO != nullptr, when loading blueprints that have circularly dependent interfaces #jira UE-31639 Change 3042058 on 2016/07/07 by Dan.Oconnor Ensures that the correct ComponentClass is assigned to our template node. This pins are normally allocated lazilly in BlueprintActionFilterImpl::HasMatchingPin, so not a huge change #jira UE-32769 Change 3042468 on 2016/07/08 by Maciej.Mroz #jira UE-32882, UE-32887 Fixed Crash in UHT. Fixed "Ambiguous search" error, when delegate has owner class declared. Change 3042739 on 2016/07/08 by Maciej.Mroz Nativization. Included headers for native subobjects. Change 3042747 on 2016/07/08 by Maciej.Mroz Minor changes in Orion code, necessary to compile the project with nativized Blueprints Change 3042758 on 2016/07/08 by Maciej.Mroz "OrionGame.h" is included in NativizedAssets module. [CL 3043181 by Mike Beach in Main branch]
2016-07-08 14:59:19 -04:00
OutErrorMessage = NSLOCTEXT("K2Node", "AddInputPinError", "Cannot add input pins to custom event node!");
return false;
}
else if (InPinType.PinCategory == Schema->PC_Exec && !CanModifyExecutionWires())
{
OutErrorMessage = LOCTEXT("MultipleExecPinError", "Cannot support more exec pins!");
return false;
}
Copying //UE4/Dev-Blueprints to //UE4/Dev-Main (Source: //UE4/Dev-Blueprints @ 3042808) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3026763 on 2016/06/24 by Phillip.Kavan [UE-32259] Fix missing heat map coloration on pure nodes. change summary: - modified FScriptExecutionNode::RefreshStats() to ensure that child nodes are updated for 'standard' exec node types. #jira UE-32259 Change 3026829 on 2016/06/24 by Mike.Beach Mirroring CL 3025832 from Release-4.12 Guarding GetClassDefault nodes against asserts while loading cyclically dependent content. Regenerating one Blueprint could trigger a ReconstructNode() in a separate Blueprint (that had already been regenerated). However, not all objects in that Blueprint's package have been post-loaded, so object Rename() will assert is you try to reset loaders with it. #jira UE-32356 Change 3026888 on 2016/06/24 by Mike.Beach PR #2460: Functionality to flag blueprint as abstract (Contributed by Pierdek) Change 3027245 on 2016/06/24 by Phillip.Kavan [UEBP-180] Alternate treatment for Blueprint profiler tree view node expander icon (to differentiate from exec pin icons). change summary: - added SProfilerStatExpander (from BenC) - modified original to replace indicator icons w/ FontAwesome glyphs (they're a bit clearer) - see screenshot attached to JIRA #jira UEBP-180 Change 3027279 on 2016/06/24 by Ryan.Rauschkolb Fixed issue where unsupported pins could be added to custom Event nodes which can lead to a crash #jira UE-31148 Change 3027606 on 2016/06/25 by Dan.Oconnor Back out changelist 3027279, this change breaks custom events coupled to multicast delegate nodes (see ProjRocket.uasset in shooter game for an example) Change 3028731 on 2016/06/27 by Ben.Cosh Minor change to the spacing around the new expander icons for the blueprint profiler. #Jira UEBP-180 - Pin icons are too similar to the tree expander icons in the node execution graph display. #Proj Kismet Change 3028740 on 2016/06/27 by Ben.Cosh This change modifies the way the blueprint profiler detects and maps delegate events that are created at blueprint compile time. #Jira UE-32055 - Assert when profiling timelines in the blueprint profiler #Proj BlueprintProfiler, KismetCompiler, BlueprintGraph, LiveEditor, Kismet, Engine Change 3028844 on 2016/06/27 by Maciej.Mroz #jira UE-32470 Nativized Orion: Sparrow has no Rentless ability. Better way to find Placeholder classes in BlueprintNativeCodeGenModule. Change 3029573 on 2016/06/27 by Ryan.Rauschkolb Fixed issue where Preview Connection would be drawn incorrectly when an input and output pin share the same name #jira UE-32211 Change 3030335 on 2016/06/28 by Maciej.Mroz #jira UE-30858 Nativized Orion - Some particle effects are not rendering List of AssetRegistrySearchable properties, that should be stored for DynamicClasses in moved to .ini file. Added SearchDynamicClassCues function in GameplayCueManager.cpp Change 3030492 on 2016/06/28 by Ben.Cosh CIS Mac Build fix Change 3030494 on 2016/06/28 by Ben.Cosh This change reworks the way the blueprint profiler maps latent re-entry points to address problems that could be triggered when multiple re-entries happenned within close proximity. #Jira UE-32452 - Blueprint profiler asserts when a second latent entry is triggered #Proj BlueprintProfiler, CoreUObject, Engine, Kismet Change 3030612 on 2016/06/28 by Maciej.Mroz typo fixed Change 3031461 on 2016/06/28 by Dan.Oconnor Fixed for crash involving a stale UEdGraphPin after performing an undo/redo operation inolving UEdGraphNode(s) #jira UE-32553 Change 3031537 on 2016/06/28 by Ben.Cosh Fix for a problem introduced in CL 3030494 and recent graph pin changes that caused problems uniquely naming tunnel entry/exit pins. #Jira UE-32578 - Crash when profiling blueprint containing a for-loop #Proj BlueprintProfiler Change 3031556 on 2016/06/28 by Ben.Cosh This fixes a problem with the profiler tracking of PIE actor instances adding a mechanism to refresh the actor references when a subsequent PIE session is started. #Jira UE-32595 - Running two subsequent PIE sessions with a latent entry point causes an assert. #Proj BlueprintProfiler, Kismet Change 3031588 on 2016/06/28 by Ryan.Rauschkolb Fixed issue where unsupported pins could be added to custom Event nodes which can lead to a crash #jira UE-31148 Change 3031887 on 2016/06/28 by Dan.Oconnor Fix for crash caused by stale pin access in SGraphPin, also fixes 'double opacity' effect when ctrl+dragging off of a macro #jira UE-32604 Change 3031932 on 2016/06/28 by Dan.Oconnor Fix for major regression in pin value visibility #jira UE-32614 Change 3032568 on 2016/06/29 by Phillip.Kavan [UE-31681] Ensure that cached component data cache template objects are referenced during garbage collection. change summary: - modified AActor::AddReferencedObjects() to include CurrentTransactionAnnotation - added UChildActorComponent::AddReferencedObjects() to include CachedInstanceData - also added FChildActorComponentInstanceData::AddReferencedObjects() to include ComponentInstanceData (just in case some future task happens to trigger a reference gather during its lifetime) additional notes: - should also resolve UE-32558 #jira UE-31681 Change 3032998 on 2016/06/29 by Dan.Oconnor Fixing shutdown crash after LinkedTo lists are corrupted. An ensure couldn't fire when a node had already been destroyed. UE-32631 tracks the actual ensure. #jira UE-32634 Change 3033448 on 2016/06/29 by Ryan.Rauschkolb Discard Return Nodes that have no outputs when collapsing to function #jira UE-23381 Change 3034407 on 2016/06/30 by Phillip.Kavan [UE-32675] Fix no-editor compile issue. Change 3034691 on 2016/06/30 by Ryan.Rauschkolb Fixed issue where Macro nodes with ambiguous links could be collapsed into a function Change 3034701 on 2016/06/30 by Ryan.Rauschkolb Cleaned up UEdGraphSchema_K2::GetVariableTypeTree to use a filter rather than several booleans Change 3035093 on 2016/06/30 by Maciej.Mroz #jira UE-32683 BP_Hero Blueprint failing to compile in Orion - K2Node_CustomEvent_1050 is out of date Temporary fix. Change 3035440 on 2016/07/01 by Maciej.Mroz #jira UE-32706 Nativized Orion crash - Cannot find "Root" subobject in ABP_HeroPedestal_C... Make sure, the CDO of DynamicClass (and its subobjects) have AsyncLoading flag cleared. Change 3035442 on 2016/07/01 by Maciej.Mroz Added UDynamicClass::FindArchetype #jira UE-30667 Ground material in Agora incorrect in Nativized Orion Change 3036233 on 2016/07/01 by Dan.Oconnor Proper handling of null pin references in compiler results logs Change 3036541 on 2016/07/01 by Dan.Oconnor Fix for more assymetry in LinkedTo after undo/redo. This solution addresses both UE-32645 and UE-32553. The key to correct behavior is to explictly detect the case where only one of the two nodes in a peer (LinkedTo) relationship are in the transaction buffer. Added IsObjectTransacting to transaction interface to detect this. #jira UE-32645 Change 3036581 on 2016/07/02 by Dan.Oconnor Non-editor fix Change 3036632 on 2016/07/02 by Maciej.Mroz Removed too strict check in BlueprintNativeCodeGenModule Change 3036715 on 2016/07/02 by Maciej.Mroz #jira UE-32612 Odin emits a error when nativized - attempting to access a hidden boolean bitfield property - Private bitfield can be used as LHS expression in generated code. - Refactoring. Introduced ENativizedTermUsage. Change 3037014 on 2016/07/04 by Maciej.Mroz #jira UE-32729 Orion failing to package for PS4 with Nativization Make sure that temporary variable used in ternary operator: "context ? context->variable : temp-variable", has exactly the same type as the wanted variable. Change 3037300 on 2016/07/05 by Maciej.Mroz #jira UE-31756 Fixup hardcoded function names in BP=>Cpp backend Change 3037303 on 2016/07/05 by Maciej.Mroz #jira UE-31756 Nativization - fixed hardcoded string. Change 3037307 on 2016/07/05 by Maciej.Mroz AutomationTool: Fixed issue: A nativized client was compiled with both client and server NativizedAssets plugins. Paths to nativized BP plugin is stored in a map. Change 3037712 on 2016/07/05 by Mike.Beach Adding a non-const version of MultiFindPointer() for TMultiMap. Change 3037790 on 2016/07/05 by Mike.Beach Fixing a bug where overridden components in Blueprints could load with cleared properties - this could happen in cyclically dependent parent/child Blueprints (where the child's component would be zeroed). In this case, the Blueprint's CDO would be deferred, so to solve this new issue we now defer the Blueprint's sub-object overrides as well. #jira UE-32693 Change 3038014 on 2016/07/05 by Ben.Cosh Refactor of the blueprint profiler tunnel mapping and playback to address issues blocking MVP #Jira UE-32056 - The blueprint profiler can still get hung up with cyclic links in the graph #Proj Kismet, BlueprintProfiler, KismetCompiler, BlueprintGraph, UnrealEd Change 3038533 on 2016/07/05 by Mike.Beach PR #2558: Stopping Zoom-to-Fit On User Input (Fixed) (Contributed by MichaelSchoell) Change 3038608 on 2016/07/05 by Dan.Oconnor Fix for crash when altering ConstructObjectFromClass nodes, removed now unused InvalidateAndTrash function from UEdGraphPin, removed subpin leak counter #jira FORT-26495 Change 3038770 on 2016/07/05 by Dan.Oconnor Hiding TThreadSingleton<FBlueprintExceptionTracker>::Get() to fix clang for windows link error #jira UE-31935 Change 3038841 on 2016/07/05 by Dan.Oconnor Simple null check to prevent crash after loading a blueprint to diff. The diff'd blueprint is ending up in other blueprint's DependentBlueprintsToRecompile, for now this is the safest fix #jira UE-31115 Change 3039179 on 2016/07/06 by Maciej.Mroz #jira UE-31987 Editor crashes when transforming actor after applying instances changes Selected (in Level editor) instance components are still selected after they are converted to regular components. Change 3039216 on 2016/07/06 by Maciej.Mroz #jira UE-31767 [CrashReport] UE4Editor_Engine!AActor::GetLevel() [actor.cpp:1663] FIxed unsafe code. Change 3040046 on 2016/07/06 by Ben.Cosh This fixes a problem found where tunnel instances inside tunnel graphs fail to map correctly in the blueprint profiler #Jira UE-32862 - Tunnel instances inside tunnels do not map correctly in the blueprint profiler #Proj BlueprintProfiler Change 3040061 on 2016/07/06 by Ben.Cosh fix for bad unshelve before submit in CL 3040046 - Phillip already reviewed this version of the file and not what was actually submitted. Change 3040346 on 2016/07/06 by Maciej.Mroz #jira UE-32840 //UE4/Dev-Blueprints: UE4_StaticAnalysis completed with Warnings - 2 Warnings Fix(?) for warning C28182 Change 3040349 on 2016/07/06 by Dan.Oconnor Updating test data Change 3040473 on 2016/07/06 by Dan.Oconnor Fix SMyBlueprint in blueprint diff tool so that kismet inspector is updated with the object selected in SMyBlueprint, needed to investigate UE-18200 Change 3040536 on 2016/07/06 by Dan.Oconnor Call to APITestFunction Change 3040565 on 2016/07/06 by Dan.Oconnor Clone saved GeneratedClass when not doing COL. Groundwork to fix for UE-17268. Change 3040603 on 2016/07/06 by Dan.Oconnor PR #2539: Option to disable Grid in the blueprint and material editor and change grid colors (Contributed by CelPlays) #jira UE-32497 Change 3040798 on 2016/07/07 by Maciej.Mroz Fixed warning C6011: Dereferencing NULL pointer 'Object'. Added some comments. #jira UE-32840 Change 3041185 on 2016/07/07 by Ben.Cosh This fixes problems with the blueprint profiler with name collisions for nodes in different graphs and improves nested tunnel detection. #Jira UE-32862 - Tunnel instances inside tunnels do not map correctly in the blueprint profiler #Jira UE-32889 - Name collisions can now occur in the blueprint profiler for stat nodes. #Proj BlueprintProfiler, Kismet Notes: This attempts to continue to address fall out from CL 3040046 to improve stability. Previously execution nodes were patched into the function contexts that called a tunnel instance. However this proved problematic after spotting a rare case where node names collide between between event and tunnel graphs and caused havok in the node mapping. This change moves to an approach that patches in tunnel contexts and any dependent contexts and instead attempts to locate critical path nodes using a new node search system making use of these child function contexts. CL 3040046 also modified TunnelContext's to be actually more representative of a tunnel instance context, I have updated naming conventions to reflect this for clarity. The changes here also add a single function context for tunnel graphs which contain the bulk of the nodes in the graph and the tunnel instance contexts reference this and make use of it to create non boundary / tunnel instance nodes so they are located in a single place for all instances of that tunnel graph. Change 3041603 on 2016/07/07 by Dan.Oconnor Fix for check failure: PreviousCDO != nullptr, when loading blueprints that have circularly dependent interfaces #jira UE-31639 Change 3042058 on 2016/07/07 by Dan.Oconnor Ensures that the correct ComponentClass is assigned to our template node. This pins are normally allocated lazilly in BlueprintActionFilterImpl::HasMatchingPin, so not a huge change #jira UE-32769 Change 3042468 on 2016/07/08 by Maciej.Mroz #jira UE-32882, UE-32887 Fixed Crash in UHT. Fixed "Ambiguous search" error, when delegate has owner class declared. Change 3042739 on 2016/07/08 by Maciej.Mroz Nativization. Included headers for native subobjects. Change 3042747 on 2016/07/08 by Maciej.Mroz Minor changes in Orion code, necessary to compile the project with nativized Blueprints Change 3042758 on 2016/07/08 by Maciej.Mroz "OrionGame.h" is included in NativizedAssets module. [CL 3043181 by Mike Beach in Main branch]
2016-07-08 14:59:19 -04:00
else
{
TArray<TSharedPtr<UEdGraphSchema_K2::FPinTypeTreeInfo>> TypeTree;
Schema->GetVariableTypeTree(TypeTree, ETypeTreeFilter::RootTypesOnly);
bool bIsValid = false;
for (TSharedPtr<UEdGraphSchema_K2::FPinTypeTreeInfo>& TypeInfo : TypeTree)
{
FEdGraphPinType CurrentType = TypeInfo->GetPinType(false);
// only concerned with the list of categories
if (CurrentType.PinCategory == InPinType.PinCategory)
{
bIsValid = true;
break;
}
}
if (!bIsValid)
{
OutErrorMessage = LOCTEXT("AddInputPinError", "Cannot add pins of this type to custom event node!");
return false;
}
}
return true;
}
UEdGraphPin* UK2Node_CustomEvent::CreatePinFromUserDefinition(const TSharedPtr<FUserPinInfo> NewPinInfo)
{
UEdGraphPin* NewPin = CreatePin(EGPD_Output, NewPinInfo->PinType, NewPinInfo->PinName);
NewPin->DefaultValue = NewPin->AutogeneratedDefaultValue = NewPinInfo->PinDefaultValue;
return NewPin;
}
void UK2Node_CustomEvent::RenameCustomEventCloseToName(int32 StartIndex)
{
bool bFoundName = false;
const FString& BaseName = CustomFunctionName.ToString();
for (int32 NameIndex = StartIndex; !bFoundName; ++NameIndex)
{
const FString NewName = FString::Printf(TEXT("%s_%d"), *BaseName, NameIndex);
if (Rename(*NewName, GetOuter(), REN_Test))
{
UBlueprint* Blueprint = GetBlueprint();
CustomFunctionName = FName(NewName.GetCharArray().GetData());
Rename(*NewName, GetOuter(), (Blueprint->bIsRegeneratingOnLoad ? REN_ForceNoResetLoaders : 0) | REN_DontCreateRedirectors);
bFoundName = true;
}
}
}
void UK2Node_CustomEvent::OnRenameNode(const FString& NewName)
{
CustomFunctionName = *NewName;
CachedNodeTitle.MarkDirty();
FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified(GetBlueprint());
}
TSharedPtr<class INameValidatorInterface> UK2Node_CustomEvent::MakeNameValidator() const
{
return MakeShareable(new FCustomEventNameValidator(this));
}
bool UK2Node_CustomEvent::IsOverride() const
{
UBlueprint* Blueprint = GetBlueprint();
check(Blueprint != NULL);
UFunction* ParentFunction = FindField<UFunction>(Blueprint->ParentClass, CustomFunctionName);
UK2Node_CustomEvent const* OverriddenEvent = FindCustomEventNodeFromFunction(ParentFunction);
return (OverriddenEvent != NULL);
}
uint32 UK2Node_CustomEvent::GetNetFlags() const
{
uint32 NetFlags = (FunctionFlags & FUNC_NetFuncFlags);
if (IsOverride())
{
UBlueprint* Blueprint = GetBlueprint();
check(Blueprint != NULL);
UFunction* ParentFunction = FindField<UFunction>(Blueprint->ParentClass, CustomFunctionName);
check(ParentFunction != NULL);
// inherited net flags take precedence
NetFlags = (ParentFunction->FunctionFlags & FUNC_NetFuncFlags);
}
Copying //UE4/Dev-Blueprints to Dev-Main (//UE4/Dev-Main) ========================== MAJOR FEATURES + CHANGES ========================== Change 2781504 on 2015/11/25 by Mike.Beach Guarding against invalid nodes for deferred graph node actions (add, remove, select), by using TWeakObjectPtr instead of raw UEdGraphNode pointers. #jira UE-23371 #codereview Dan.OConnor Change 2781513 on 2015/11/25 by Michael.Schoell Find-in-Blueprints optimized gathering. Size of data has shrunk in the Asset Registry by up to one fifth the old size! Performance moderately improved. Load and save times of Blueprints increased, less redundant gathering of searchable data. #jira UE-22928 - Optimize Find-in-Blueprints Gathering of Searchable Data Change 2781517 on 2015/11/25 by Michael.Schoell Marked FTimerHandle::Handle as a UPROPERTY(transient) so that Blueprints can check the equality of two instances of the structure. #jira UE-23136 - Remove Item Node Removes All Objects in an Array Change 2781804 on 2015/11/26 by Maciej.Mroz Changed ConformImplementedEvents. #jira UE-23738 BP_RiftMage_Ultimate fails to convert during cooking #codereview Phillip.Kavan, Mike.Beach Change 2781821 on 2015/11/26 by Ben.Cosh This reinstates the blueprint debugging keymaps and adds additional functionality for step over and step out as key maps in the PIE world controls. #UEBP-66 - Blueprint debug keymappings #UE-16817 - Add step-in, step-over, and run until here functions for breakpoints #UE-12481 - The F10 key doesn't work for stepping blueprint debugging #Branch UE4 #Proj GraphEditor, Kismet, UnrealEd, CoreUObject, Slate reviewedby chris.wood Change 2781861 on 2015/11/26 by Maciej.Mroz UE-23626 Converted tower defense game - you cannot click to place towers CodeGenerator generates overriden exported names for events and functions. #codereview Dan.Oconnor, Steve.Robb Change 2782798 on 2015/11/30 by Maciej.Mroz BP C++ conversion: components from SCS calls AttachTo (with ParentSocket parameter). #jira UE-23862 Pawns in TowerDefenseGame don't move in converted build #codereview Phillip.Kavan, Mike.Beach, Dan.Oconnor Change 2782881 on 2015/11/30 by Michael.Schoell Fixed ensure when promoting function graphs from interfaces during interface removal. #jira UE-23717 - Ensure removing an implemented interface when transfering functions Change 2783041 on 2015/11/30 by Maciej.Mroz BP C++ conversion: All variables from Event Graph are listed as class properties. #jira UE-23629 Converted tower defense game - Cam scrolls to upper left when mouse leaves window #codereview Mike.Beach, Dan.Oconnor Change 2783080 on 2015/11/30 by Michael.Schoell Removing an interface function's output parameters will no longer cause Blueprints implementing the function to error. Functions expected as event overrides will accept function graph implementations and give a warning informing that it is unexpected. All function graphs (interfaces, interface implementations, overrides) can be duplicated. Parent function calls will be removed. Duplicating graphs will correct names of objects in child Blueprints. Function overrides of interfaces expected as an event can be deleted. Duplicating graphs while in PIE is no longer possible. When removing an interface, the operation can now be canceled. #jira UE-13335 - Inside a BP Interface, changing a Function output to an input will cause a compile error in the reference bp Change 2783338 on 2015/11/30 by Michael.Schoell New output pins on function result nodes will properly fill out with valid default values. All invalid pins will auto-validate themselves on node reconstruction when opening the Blueprint. #jira UE-1928 - BLUEPRINTS: Default value not supplied for output parameters of function Change 2783742 on 2015/11/30 by Phillip.Kavan [UE-15463] Add special-case handling for failed imports of BPGC-owned component archetype objects on level load. change summary: - modified FLinkerLoad::VerifyImport() to customize the load error messaging for missing component archetype objects Change 2784652 on 2015/12/01 by Ben.Cosh Fix for crash whilst undoing the creation of a macro and currently displaying the tooltip in the blueprint editor. #UE-23955 - Adding a macro graph through MyBlueprint and then calling undo causes a crash updating the macro tooltip. #Branch UE4 #Proj Kismet #CodeReview Chris.Wood Change 2784834 on 2015/12/01 by Michael.Schoell Added functions to convert from string to: Vector, Vector2D, Rotator, Color. #jira UE-23761 - GitHub 1795 : [KismetStringLibrary] Convert String Back Into Vector, Rotator, Float, Adding Support for 2 way conversion! ? Rama PR #1795
2015-12-16 17:17:43 -05:00
// Sanitize NetFlags, only allow replication flags that can be supported by the online system
// This mirrors logic in ProcessFunctionSpecifiers in HeaderParser.cpp. Basically if we want to
// replicate a function we need to know whether we're replicating on the client or the server.
if (!(NetFlags & FUNC_Net))
{
NetFlags = 0;
}
return NetFlags;
}
void UK2Node_CustomEvent::ValidateNodeDuringCompilation(class FCompilerResultsLog& MessageLog) const
{
Super::ValidateNodeDuringCompilation(MessageLog);
UBlueprint* Blueprint = GetBlueprint();
check(Blueprint != NULL);
UFunction* ParentFunction = FindField<UFunction>(Blueprint->ParentClass, CustomFunctionName);
// if this custom-event is overriding a function belonging to the blueprint's parent
if (ParentFunction != NULL)
{
UObject const* const FuncOwner = ParentFunction->GetOuter();
check(FuncOwner != NULL);
// if this custom-event is attempting to override a native function, we can't allow that
if (!FuncOwner->IsA(UBlueprintGeneratedClass::StaticClass()))
{
MessageLog.Error(*FString::Printf(*LOCTEXT("NativeFunctionConflict", "@@ name conflicts with a native '%s' function").ToString(), *FuncOwner->GetName()), this);
}
else
{
UK2Node_CustomEvent const* OverriddenEvent = FindCustomEventNodeFromFunction(ParentFunction);
// if the function that this is attempting to override is NOT another
// custom-event, then we want to error (a custom-event shouldn't override something different)
if (OverriddenEvent == NULL)
{
MessageLog.Error(*FString::Printf(*LOCTEXT("NonCustomEventOverride", "@@ name conflicts with a '%s' function").ToString(), *FuncOwner->GetName()), this);
}
// else, we assume the user was attempting to override the parent's custom-event
// the signatures could still be off, but FKismetCompilerContext::PrecompileFunction() should catch that
}
}
}
void UK2Node_CustomEvent::GetMenuActions(FBlueprintActionDatabaseRegistrar& ActionRegistrar) const
{
// actions get registered under specific object-keys; the idea is that
// actions might have to be updated (or deleted) if their object-key is
// mutated (or removed)... here we use the node's class (so if the node
// type disappears, then the action should go with it)
UClass* ActionKey = GetClass();
// to keep from needlessly instantiating a UBlueprintNodeSpawner, first
// check to make sure that the registrar is looking for actions of this type
// (could be regenerating actions for a specific asset, and therefore the
// registrar would only accept actions corresponding to that asset)
if (ActionRegistrar.IsOpenForRegistration(ActionKey))
{
UBlueprintNodeSpawner* NodeSpawner = UBlueprintEventNodeSpawner::Create(GetClass(), FName());
check(NodeSpawner != nullptr);
auto SetupCustomEventNodeLambda = [](UEdGraphNode* NewNode, bool bIsTemplateNode)
{
UK2Node_CustomEvent* EventNode = CastChecked<UK2Node_CustomEvent>(NewNode);
UBlueprint* Blueprint = EventNode->GetBlueprint();
// in GetNodeTitle(), we use an empty CustomFunctionName to identify a menu entry
if (!bIsTemplateNode)
{
EventNode->CustomFunctionName = FBlueprintEditorUtils::FindUniqueCustomEventName(Blueprint);
}
EventNode->bIsEditable = true;
};
NodeSpawner->CustomizeNodeDelegate = UBlueprintNodeSpawner::FCustomizeNodeDelegate::CreateStatic(SetupCustomEventNodeLambda);
ActionRegistrar.AddBlueprintAction(ActionKey, NodeSpawner);
}
}
void UK2Node_CustomEvent::ReconstructNode()
{
CachedNodeTitle.MarkDirty();
const UEdGraphSchema_K2* K2Schema = GetDefault<UEdGraphSchema_K2>();
const UEdGraphPin* DelegateOutPin = FindPin(DelegateOutputName);
[UE-22013] - Remove Blueprint compiler note/warning from custom event nodes bound to delegates with 'const&' and TArray input parameters. change summary: - added a new object version for fixup during serialization (VER_UE4_BLUEPRINT_CUSTOM_EVENT_CONST_INPUT) - modified FBlueprintGraphArgumentLayout::OnRefCheckStateChanged() to implicitly set PinType.bIsConst 'true' for Custom Event nodes when PinType.bIsArray or PinType.bIsReference is also 'true'; this mirrors how delegate signatures are handled by UHT - modified UK2Node_CustomEvent::Serialize() to fix up PinType.bIsConst for array and non-array reference parameter types - in BlueprintEditorUtils.h, added FCompilerRelevantNodeLink and updated array typedef for the GetCompilerRelevantNodes() API (expanded out to include which pin it's linked to in addition to the owning node) - modified the FBlueprintEditorUtils::GetCompilerRelevantNodes() API (renamed) to track linked pins in addition to owning nodes in the result. also modified FindFirstCompilerRelevantNode() to match. - added FBlueprintEditorUtils::FindFirstCompilerRelevantLinkedPin() to allow queries for the linked pin instead of the compiler-relevant node itself. this is now used by the Custom Event ReconstructNode() logic to "pass-through" reroute nodes on delegate pin connections to find the "correct" target pin - modified UK2Node_CustomEvent::ReconstructNode() to properly handle the case when the delegate pin might be connected to a reroute node (in which case the LinkedTo pin might resolve to the Custom Event's previously-compiled function, rather than the delegate signature function it's bound to) notes: - also addresses UE-20613 #codereview Mike.Beach,Maciej.Mroz [CL 2740152 by Phillip Kavan in Main branch]
2015-10-23 13:43:05 -04:00
const UEdGraphPin* LinkedPin = ( DelegateOutPin && DelegateOutPin->LinkedTo.Num() && DelegateOutPin->LinkedTo[0] ) ? FBlueprintEditorUtils::FindFirstCompilerRelevantLinkedPin(DelegateOutPin->LinkedTo[0]) : nullptr;
const UFunction* DelegateSignature = nullptr;
if ( LinkedPin )
{
if ( const UK2Node_BaseMCDelegate* OtherNode = Cast<const UK2Node_BaseMCDelegate>(LinkedPin->GetOwningNode()) )
{
DelegateSignature = OtherNode->GetDelegateSignature();
}
else if ( LinkedPin->PinType.PinCategory == K2Schema->PC_Delegate )
{
DelegateSignature = FMemberReference::ResolveSimpleMemberReference<UFunction>(LinkedPin->PinType.PinSubCategoryMemberReference);
}
}
const bool bUseDelegateSignature = (NULL == FindEventSignatureFunction()) && DelegateSignature;
if (bUseDelegateSignature)
{
UserDefinedPins.Empty();
for (TFieldIterator<UProperty> PropIt(DelegateSignature); PropIt && (PropIt->PropertyFlags & CPF_Parm); ++PropIt)
{
const UProperty* Param = *PropIt;
if (!Param->HasAnyPropertyFlags(CPF_OutParm) || Param->HasAnyPropertyFlags(CPF_ReferenceParm))
{
FEdGraphPinType PinType;
K2Schema->ConvertPropertyToPinType(Param, /*out*/ PinType);
FString NewPinName = Param->GetName();
int32 Index = 1;
while ((DelegateOutputName == NewPinName) || (K2Schema->PN_Then == NewPinName))
{
++Index;
NewPinName += FString::FromInt(Index);
}
TSharedPtr<FUserPinInfo> NewPinInfo = MakeShareable( new FUserPinInfo() );
NewPinInfo->PinName = NewPinName;
NewPinInfo->PinType = PinType;
Copying //UE4/Dev-Blueprints to //UE4/Dev-Main (Source: //UE4/Dev-Blueprints @ 3042808) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3026763 on 2016/06/24 by Phillip.Kavan [UE-32259] Fix missing heat map coloration on pure nodes. change summary: - modified FScriptExecutionNode::RefreshStats() to ensure that child nodes are updated for 'standard' exec node types. #jira UE-32259 Change 3026829 on 2016/06/24 by Mike.Beach Mirroring CL 3025832 from Release-4.12 Guarding GetClassDefault nodes against asserts while loading cyclically dependent content. Regenerating one Blueprint could trigger a ReconstructNode() in a separate Blueprint (that had already been regenerated). However, not all objects in that Blueprint's package have been post-loaded, so object Rename() will assert is you try to reset loaders with it. #jira UE-32356 Change 3026888 on 2016/06/24 by Mike.Beach PR #2460: Functionality to flag blueprint as abstract (Contributed by Pierdek) Change 3027245 on 2016/06/24 by Phillip.Kavan [UEBP-180] Alternate treatment for Blueprint profiler tree view node expander icon (to differentiate from exec pin icons). change summary: - added SProfilerStatExpander (from BenC) - modified original to replace indicator icons w/ FontAwesome glyphs (they're a bit clearer) - see screenshot attached to JIRA #jira UEBP-180 Change 3027279 on 2016/06/24 by Ryan.Rauschkolb Fixed issue where unsupported pins could be added to custom Event nodes which can lead to a crash #jira UE-31148 Change 3027606 on 2016/06/25 by Dan.Oconnor Back out changelist 3027279, this change breaks custom events coupled to multicast delegate nodes (see ProjRocket.uasset in shooter game for an example) Change 3028731 on 2016/06/27 by Ben.Cosh Minor change to the spacing around the new expander icons for the blueprint profiler. #Jira UEBP-180 - Pin icons are too similar to the tree expander icons in the node execution graph display. #Proj Kismet Change 3028740 on 2016/06/27 by Ben.Cosh This change modifies the way the blueprint profiler detects and maps delegate events that are created at blueprint compile time. #Jira UE-32055 - Assert when profiling timelines in the blueprint profiler #Proj BlueprintProfiler, KismetCompiler, BlueprintGraph, LiveEditor, Kismet, Engine Change 3028844 on 2016/06/27 by Maciej.Mroz #jira UE-32470 Nativized Orion: Sparrow has no Rentless ability. Better way to find Placeholder classes in BlueprintNativeCodeGenModule. Change 3029573 on 2016/06/27 by Ryan.Rauschkolb Fixed issue where Preview Connection would be drawn incorrectly when an input and output pin share the same name #jira UE-32211 Change 3030335 on 2016/06/28 by Maciej.Mroz #jira UE-30858 Nativized Orion - Some particle effects are not rendering List of AssetRegistrySearchable properties, that should be stored for DynamicClasses in moved to .ini file. Added SearchDynamicClassCues function in GameplayCueManager.cpp Change 3030492 on 2016/06/28 by Ben.Cosh CIS Mac Build fix Change 3030494 on 2016/06/28 by Ben.Cosh This change reworks the way the blueprint profiler maps latent re-entry points to address problems that could be triggered when multiple re-entries happenned within close proximity. #Jira UE-32452 - Blueprint profiler asserts when a second latent entry is triggered #Proj BlueprintProfiler, CoreUObject, Engine, Kismet Change 3030612 on 2016/06/28 by Maciej.Mroz typo fixed Change 3031461 on 2016/06/28 by Dan.Oconnor Fixed for crash involving a stale UEdGraphPin after performing an undo/redo operation inolving UEdGraphNode(s) #jira UE-32553 Change 3031537 on 2016/06/28 by Ben.Cosh Fix for a problem introduced in CL 3030494 and recent graph pin changes that caused problems uniquely naming tunnel entry/exit pins. #Jira UE-32578 - Crash when profiling blueprint containing a for-loop #Proj BlueprintProfiler Change 3031556 on 2016/06/28 by Ben.Cosh This fixes a problem with the profiler tracking of PIE actor instances adding a mechanism to refresh the actor references when a subsequent PIE session is started. #Jira UE-32595 - Running two subsequent PIE sessions with a latent entry point causes an assert. #Proj BlueprintProfiler, Kismet Change 3031588 on 2016/06/28 by Ryan.Rauschkolb Fixed issue where unsupported pins could be added to custom Event nodes which can lead to a crash #jira UE-31148 Change 3031887 on 2016/06/28 by Dan.Oconnor Fix for crash caused by stale pin access in SGraphPin, also fixes 'double opacity' effect when ctrl+dragging off of a macro #jira UE-32604 Change 3031932 on 2016/06/28 by Dan.Oconnor Fix for major regression in pin value visibility #jira UE-32614 Change 3032568 on 2016/06/29 by Phillip.Kavan [UE-31681] Ensure that cached component data cache template objects are referenced during garbage collection. change summary: - modified AActor::AddReferencedObjects() to include CurrentTransactionAnnotation - added UChildActorComponent::AddReferencedObjects() to include CachedInstanceData - also added FChildActorComponentInstanceData::AddReferencedObjects() to include ComponentInstanceData (just in case some future task happens to trigger a reference gather during its lifetime) additional notes: - should also resolve UE-32558 #jira UE-31681 Change 3032998 on 2016/06/29 by Dan.Oconnor Fixing shutdown crash after LinkedTo lists are corrupted. An ensure couldn't fire when a node had already been destroyed. UE-32631 tracks the actual ensure. #jira UE-32634 Change 3033448 on 2016/06/29 by Ryan.Rauschkolb Discard Return Nodes that have no outputs when collapsing to function #jira UE-23381 Change 3034407 on 2016/06/30 by Phillip.Kavan [UE-32675] Fix no-editor compile issue. Change 3034691 on 2016/06/30 by Ryan.Rauschkolb Fixed issue where Macro nodes with ambiguous links could be collapsed into a function Change 3034701 on 2016/06/30 by Ryan.Rauschkolb Cleaned up UEdGraphSchema_K2::GetVariableTypeTree to use a filter rather than several booleans Change 3035093 on 2016/06/30 by Maciej.Mroz #jira UE-32683 BP_Hero Blueprint failing to compile in Orion - K2Node_CustomEvent_1050 is out of date Temporary fix. Change 3035440 on 2016/07/01 by Maciej.Mroz #jira UE-32706 Nativized Orion crash - Cannot find "Root" subobject in ABP_HeroPedestal_C... Make sure, the CDO of DynamicClass (and its subobjects) have AsyncLoading flag cleared. Change 3035442 on 2016/07/01 by Maciej.Mroz Added UDynamicClass::FindArchetype #jira UE-30667 Ground material in Agora incorrect in Nativized Orion Change 3036233 on 2016/07/01 by Dan.Oconnor Proper handling of null pin references in compiler results logs Change 3036541 on 2016/07/01 by Dan.Oconnor Fix for more assymetry in LinkedTo after undo/redo. This solution addresses both UE-32645 and UE-32553. The key to correct behavior is to explictly detect the case where only one of the two nodes in a peer (LinkedTo) relationship are in the transaction buffer. Added IsObjectTransacting to transaction interface to detect this. #jira UE-32645 Change 3036581 on 2016/07/02 by Dan.Oconnor Non-editor fix Change 3036632 on 2016/07/02 by Maciej.Mroz Removed too strict check in BlueprintNativeCodeGenModule Change 3036715 on 2016/07/02 by Maciej.Mroz #jira UE-32612 Odin emits a error when nativized - attempting to access a hidden boolean bitfield property - Private bitfield can be used as LHS expression in generated code. - Refactoring. Introduced ENativizedTermUsage. Change 3037014 on 2016/07/04 by Maciej.Mroz #jira UE-32729 Orion failing to package for PS4 with Nativization Make sure that temporary variable used in ternary operator: "context ? context->variable : temp-variable", has exactly the same type as the wanted variable. Change 3037300 on 2016/07/05 by Maciej.Mroz #jira UE-31756 Fixup hardcoded function names in BP=>Cpp backend Change 3037303 on 2016/07/05 by Maciej.Mroz #jira UE-31756 Nativization - fixed hardcoded string. Change 3037307 on 2016/07/05 by Maciej.Mroz AutomationTool: Fixed issue: A nativized client was compiled with both client and server NativizedAssets plugins. Paths to nativized BP plugin is stored in a map. Change 3037712 on 2016/07/05 by Mike.Beach Adding a non-const version of MultiFindPointer() for TMultiMap. Change 3037790 on 2016/07/05 by Mike.Beach Fixing a bug where overridden components in Blueprints could load with cleared properties - this could happen in cyclically dependent parent/child Blueprints (where the child's component would be zeroed). In this case, the Blueprint's CDO would be deferred, so to solve this new issue we now defer the Blueprint's sub-object overrides as well. #jira UE-32693 Change 3038014 on 2016/07/05 by Ben.Cosh Refactor of the blueprint profiler tunnel mapping and playback to address issues blocking MVP #Jira UE-32056 - The blueprint profiler can still get hung up with cyclic links in the graph #Proj Kismet, BlueprintProfiler, KismetCompiler, BlueprintGraph, UnrealEd Change 3038533 on 2016/07/05 by Mike.Beach PR #2558: Stopping Zoom-to-Fit On User Input (Fixed) (Contributed by MichaelSchoell) Change 3038608 on 2016/07/05 by Dan.Oconnor Fix for crash when altering ConstructObjectFromClass nodes, removed now unused InvalidateAndTrash function from UEdGraphPin, removed subpin leak counter #jira FORT-26495 Change 3038770 on 2016/07/05 by Dan.Oconnor Hiding TThreadSingleton<FBlueprintExceptionTracker>::Get() to fix clang for windows link error #jira UE-31935 Change 3038841 on 2016/07/05 by Dan.Oconnor Simple null check to prevent crash after loading a blueprint to diff. The diff'd blueprint is ending up in other blueprint's DependentBlueprintsToRecompile, for now this is the safest fix #jira UE-31115 Change 3039179 on 2016/07/06 by Maciej.Mroz #jira UE-31987 Editor crashes when transforming actor after applying instances changes Selected (in Level editor) instance components are still selected after they are converted to regular components. Change 3039216 on 2016/07/06 by Maciej.Mroz #jira UE-31767 [CrashReport] UE4Editor_Engine!AActor::GetLevel() [actor.cpp:1663] FIxed unsafe code. Change 3040046 on 2016/07/06 by Ben.Cosh This fixes a problem found where tunnel instances inside tunnel graphs fail to map correctly in the blueprint profiler #Jira UE-32862 - Tunnel instances inside tunnels do not map correctly in the blueprint profiler #Proj BlueprintProfiler Change 3040061 on 2016/07/06 by Ben.Cosh fix for bad unshelve before submit in CL 3040046 - Phillip already reviewed this version of the file and not what was actually submitted. Change 3040346 on 2016/07/06 by Maciej.Mroz #jira UE-32840 //UE4/Dev-Blueprints: UE4_StaticAnalysis completed with Warnings - 2 Warnings Fix(?) for warning C28182 Change 3040349 on 2016/07/06 by Dan.Oconnor Updating test data Change 3040473 on 2016/07/06 by Dan.Oconnor Fix SMyBlueprint in blueprint diff tool so that kismet inspector is updated with the object selected in SMyBlueprint, needed to investigate UE-18200 Change 3040536 on 2016/07/06 by Dan.Oconnor Call to APITestFunction Change 3040565 on 2016/07/06 by Dan.Oconnor Clone saved GeneratedClass when not doing COL. Groundwork to fix for UE-17268. Change 3040603 on 2016/07/06 by Dan.Oconnor PR #2539: Option to disable Grid in the blueprint and material editor and change grid colors (Contributed by CelPlays) #jira UE-32497 Change 3040798 on 2016/07/07 by Maciej.Mroz Fixed warning C6011: Dereferencing NULL pointer 'Object'. Added some comments. #jira UE-32840 Change 3041185 on 2016/07/07 by Ben.Cosh This fixes problems with the blueprint profiler with name collisions for nodes in different graphs and improves nested tunnel detection. #Jira UE-32862 - Tunnel instances inside tunnels do not map correctly in the blueprint profiler #Jira UE-32889 - Name collisions can now occur in the blueprint profiler for stat nodes. #Proj BlueprintProfiler, Kismet Notes: This attempts to continue to address fall out from CL 3040046 to improve stability. Previously execution nodes were patched into the function contexts that called a tunnel instance. However this proved problematic after spotting a rare case where node names collide between between event and tunnel graphs and caused havok in the node mapping. This change moves to an approach that patches in tunnel contexts and any dependent contexts and instead attempts to locate critical path nodes using a new node search system making use of these child function contexts. CL 3040046 also modified TunnelContext's to be actually more representative of a tunnel instance context, I have updated naming conventions to reflect this for clarity. The changes here also add a single function context for tunnel graphs which contain the bulk of the nodes in the graph and the tunnel instance contexts reference this and make use of it to create non boundary / tunnel instance nodes so they are located in a single place for all instances of that tunnel graph. Change 3041603 on 2016/07/07 by Dan.Oconnor Fix for check failure: PreviousCDO != nullptr, when loading blueprints that have circularly dependent interfaces #jira UE-31639 Change 3042058 on 2016/07/07 by Dan.Oconnor Ensures that the correct ComponentClass is assigned to our template node. This pins are normally allocated lazilly in BlueprintActionFilterImpl::HasMatchingPin, so not a huge change #jira UE-32769 Change 3042468 on 2016/07/08 by Maciej.Mroz #jira UE-32882, UE-32887 Fixed Crash in UHT. Fixed "Ambiguous search" error, when delegate has owner class declared. Change 3042739 on 2016/07/08 by Maciej.Mroz Nativization. Included headers for native subobjects. Change 3042747 on 2016/07/08 by Maciej.Mroz Minor changes in Orion code, necessary to compile the project with nativized Blueprints Change 3042758 on 2016/07/08 by Maciej.Mroz "OrionGame.h" is included in NativizedAssets module. [CL 3043181 by Mike Beach in Main branch]
2016-07-08 14:59:19 -04:00
NewPinInfo->DesiredPinDirection = EGPD_Output;
UserDefinedPins.Add(NewPinInfo);
}
}
}
Super::ReconstructNode();
}
UK2Node_CustomEvent* UK2Node_CustomEvent::CreateFromFunction(FVector2D GraphPosition, UEdGraph* ParentGraph, const FString& Name, const UFunction* Function, bool bSelectNewNode/* = true*/)
{
UK2Node_CustomEvent* CustomEventNode = NULL;
if(ParentGraph && Function)
{
CustomEventNode = NewObject<UK2Node_CustomEvent>(ParentGraph);
CustomEventNode->CustomFunctionName = FName(*Name);
CustomEventNode->SetFlags(RF_Transactional);
ParentGraph->Modify();
ParentGraph->AddNode(CustomEventNode, true, bSelectNewNode);
CustomEventNode->CreateNewGuid();
CustomEventNode->PostPlacedNewNode();
CustomEventNode->AllocateDefaultPins();
const UEdGraphSchema_K2* K2Schema = GetDefault<UEdGraphSchema_K2>();
for (TFieldIterator<UProperty> PropIt(Function); PropIt && (PropIt->PropertyFlags & CPF_Parm); ++PropIt)
{
const UProperty* Param = *PropIt;
if (!Param->HasAnyPropertyFlags(CPF_OutParm) || Param->HasAnyPropertyFlags(CPF_ReferenceParm))
{
FEdGraphPinType PinType;
K2Schema->ConvertPropertyToPinType(Param, /*out*/ PinType);
CustomEventNode->CreateUserDefinedPin(Param->GetName(), PinType, EGPD_Output);
}
}
CustomEventNode->NodePosX = GraphPosition.X;
CustomEventNode->NodePosY = GraphPosition.Y;
CustomEventNode->SnapToGrid(SNAP_GRID);
}
return CustomEventNode;
}
bool UK2Node_CustomEvent::IsEditable() const
{
const UEdGraphPin* DelegateOutPin = FindPin(DelegateOutputName);
if(DelegateOutPin && DelegateOutPin->LinkedTo.Num())
{
return false;
}
return Super::IsEditable();
}
bool UK2Node_CustomEvent::IsUsedByAuthorityOnlyDelegate() const
{
if(const UEdGraphPin* DelegateOutPin = FindPin(DelegateOutputName))
{
for(auto PinIter = DelegateOutPin->LinkedTo.CreateConstIterator(); PinIter; ++PinIter)
{
const UEdGraphPin* LinkedPin = *PinIter;
const UK2Node_BaseMCDelegate* Node = LinkedPin ? Cast<const UK2Node_BaseMCDelegate>(LinkedPin->GetOwningNode()) : NULL;
if(Node && Node->IsAuthorityOnly())
{
return true;
}
}
}
return false;
}
FText UK2Node_CustomEvent::GetTooltipText() const
{
return LOCTEXT("AddCustomEvent_Tooltip", "An event with customizable name and parameters.");
}
FString UK2Node_CustomEvent::GetDocumentationLink() const
{
// Use the main k2 node doc
return UK2Node::GetDocumentationLink();
}
FString UK2Node_CustomEvent::GetDocumentationExcerptName() const
{
return TEXT("UK2Node_CustomEvent");
}
Copying //UE4/Dev-Editor to //UE4/Dev-Main (Source: //UE4/Dev-Editor @ 2973866) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2937390 on 2016/04/07 by Cody.Albert #jira UE-29211 Fixed slider to properly bubble unhandled OnKeyDown events Change 2939672 on 2016/04/11 by Richard.TalbotWatkin Made a change to how file check out notifications work. Now the dirty package state is processed at the end of every tick, meaning that packages which are dirtied and then cleaned again are not processed. This fixes an issue where a number of child blueprints were flagged as needing checkout when a parent blueprint was compiled. This also allows multiple packages which are dirtied at the same time to be treated as one transaction. #jira UE-29193 - "Files need check-out" prompt spams Blueprint users Change 2939686 on 2016/04/11 by Richard.TalbotWatkin A number of further improvements to mesh vertex color painting: * Lower LODs are now automatically fixed up for instances which were created in a previous bugged version of the engine. * Since lower LODs cannot currently have their vertex colors edited, their vertex colors are always derived from LOD0. * Fixed a bug when building lower LODs so that vertices in neighboring octree nodes are considered when looking for the nearest vertex from LOD0 which corresponds. * Fixed issue where static meshes with imported LODs would not have the lower LODs' override colors set when "Copy instance vertex colors to source mesh" was used (static meshes with generated LODs were always getting correct override colors). #jira UE-28563 - Incorrectly displayed LOD VertexColor until paint mode is selected Change 2939906 on 2016/04/11 by Nick.Darnell Automation - Adding several enhancements to the automation framework and improving the UI. * Tests in the UI now have a link to the source and line where they orginate. * There's now a general purpose latent lambda command you can use to run arbitrary code latently. * Added Inlined AddCommand for regular and networked commands to the base automation class, to avoid the use of the macro, which prevents breakpoints from working in lambda code. * Front end now has better column displays offering more room to the test name * Changed several events to the automation controller to multicast delegates so that many could hook them. * The UI now refreshes the selection after tests finish so that the output log updates. Change 2939908 on 2016/04/11 by Nick.Darnell Automation - The editor import/export tests are now a complex test and actually sperate out all the tests that can be run, some trickiness was required on the filenames so that they didn't expand into more child tests in the UI. (replacing .'s with _'s) Change 2940028 on 2016/04/11 by Nick.Darnell Automation - Removing the search box from the toolbar. It's now inlined above the test tree. Tweaking the padding to make it look more other windows and make everything not look so squished. Recursive expansion now works on tests. Change 2940066 on 2016/04/11 by Nick.Darnell Automation - Moving the filter group dropdown out of the toolbar and onto the line with the search box above the treeview - additional tweaks to it. Change 2940092 on 2016/04/11 by Jamie.Dale PR #2248: Datatable select next row (Contributed by FineRedMist) Change 2940093 on 2016/04/11 by Jamie.Dale PR #2248: Datatable select next row (Contributed by FineRedMist) Change 2940157 on 2016/04/11 by Jamie.Dale Fixing FTextTest due to some changes made to how currency is formatted Change 2940694 on 2016/04/12 by Richard.TalbotWatkin Fixed issue where vertex override colors were not being propagated correctly for generated lower LODs. #jira UE-29360 - Override Colors not propagated correctly to generated lower LODs Change 2942379 on 2016/04/13 by Richard.TalbotWatkin Fixed issue where entering PIE while selecting an actor in Mesh Paint mode could lead to a MeshPaintStaticMeshAdapter holding onto an invalid pointer to an old mesh component, and causing a crash upon leaving the mode. This can happen because, when loading a new streaming level, the proxy actor can be selected when starting PIE, which will subsequently be added to the tool's internal lists. This needs to be added as a GC reference so that it can be NULLed when forcibly destroyed. #jira UE-29345 - Crash occurs exiting the editor after enabling mesh paint mode and PIEing Change 2942947 on 2016/04/13 by Richard.TalbotWatkin Fixed crash when pasting a material function call node from one project to another in which it is not defined. #jira UE-27087 - Crash when pasting MaterialFunctionCall expressions into the material editor between projects Change 2943452 on 2016/04/14 by Richard.TalbotWatkin Updated F4 debug key binding to match what's in ShowFlags.cpp PR #2197 (contributed by mfortin-bhvr) Change 2943824 on 2016/04/14 by Alexis.Matte #jira UE-29090 Make sure we cannot open the color picker when a property is edit const Change 2943841 on 2016/04/14 by Alexis.Matte #jira UE-28924 tooltip was add for every hierarchy import option Change 2943927 on 2016/04/14 by Alexis.Matte #jira UE-29423 Add Obj support for scene importer Github PR #2272 Change 2943967 on 2016/04/14 by Richard.TalbotWatkin Added relevant fields from FBodyInstance to the FoliageType customizations. #jira UE-20138 - FoliageType has a FBodyInstance but only shows Collision Presets and not other FBodyInstance properties Change 2948397 on 2016/04/19 by Andrew.Rodham Moved FSlateIcon definition to SlateCore It was previously declared as SLATE_API, despite its header residing inside SlateCore. Reviewed by Jamie Dale. Change 2948805 on 2016/04/19 by Andrew.Rodham Editor: Deprecated FName UEdGraphNode::GetPaletteIcon(FLinearColor&); in favor of FSlateIcon UEdGraphNode::GetIconAndTint(FLinearColor&); to allow for icons in external style sets to be used. - Previously, all icons were assumed to reside within FEditorStyle, which is not the case and would create broken icons in the graph editor. All relevant code has been updated to use FSlateIcon structures instead of a simple name. - This change required a significant overhaul to FClassIconFinder to support FSlateIcons. To keep the API clean, FSlateIconFinder now deals with FSlateIcon class icon finding operations, and FClassIconFinder for the most part just adds actor specific logic. #jira UE-26502 Change 2950658 on 2016/04/20 by Alexis.Matte #jira UE-24333 Skinxx workflow, we now output an error if there is mix of material with skinxx and some with no skinxx suffix Change 2950663 on 2016/04/20 by Alexis.Matte #jira UE-29582 When exporting to fbx we have to export each material instance as one fbx material Change 2951240 on 2016/04/21 by Alexis.Matte #jira UE-28473 Make sure light are render properly after importing a fbx scene Change 2951421 on 2016/04/21 by Alexis.Matte #jira UE-29773 fbx skeletalmesh import now support mesh hierarchy Change 2955873 on 2016/04/26 by Richard.TalbotWatkin PR #2225: Fix working package directory from the launch profiles (Contributed by projectgheist) Change 2955965 on 2016/04/26 by Nick.Darnell Merging //UE4/Dev-Main to Dev-Editor (//UE4/Dev-Editor) Change 2956717 on 2016/04/26 by Andrew.Rodham Editor: World Outliner now correctly calls ProcessEditDelete on editor modes that have asked to process delete operations #jira UE-26968 Change 2956822 on 2016/04/26 by Andrew.Rodham Editor: Fixed actors not being removed from the scene outliner when they are added and removed on the same frame #jira UE-7777 Change 2956931 on 2016/04/26 by Nick.Darnell New Module - UATHelper - Moving the UAT launching code from the MainFrame module into a reusable module other modules can trigger. Change 2956932 on 2016/04/26 by Nick.Darnell Plugins - Now allowing you to package a plugin from the plugin browsing view. Still work in progress. Change 2957164 on 2016/04/26 by Nick.Darnell Hot Reload - Fixing hot reload, it no longer creates a temporary copy of the module manager. Making the copy constructor private on the module manager to prevent this in the future. Change 2957165 on 2016/04/26 by Nick.Darnell Fixing the Editor Mode plugin sample, it no longer provides a bad starting example for where to create your widgets. #jira UE-28456 Change 2957510 on 2016/04/27 by Nick.Darnell PR #2198: Git Plugin implement the Sync operation to update local files using the git pull --rebase command (Contributed by SRombauts) #jira UE-28763 Change 2957511 on 2016/04/27 by Andrew.Rodham Editor: Make favorites button on details panel non-focusable - This was preventing users being able to tab between value fields on the details panel Change 2957610 on 2016/04/27 by Nick.Darnell PR #1836: Git plugin: make initial commit when initializing new project (Contributed by SRombauts) #jira UE-24190 Change 2957667 on 2016/04/27 by Jamie.Dale Fixed crash that could happen in FTextLayout::GetLineViewIndexForTextLocation if passed a bad location #jira OR-18634 Change 2958035 on 2016/04/27 by Nick.Darnell Fixing the DesignerRebuild flag detection so that we can just refresh the slate widget without recreating the preview UObject, which causes the destruction of the details panel, and the slate widget recreation was the only part that was required. Change 2958272 on 2016/04/27 by Jamie.Dale Added FAssetData::GetTagValue to handle getting asset tag values in a type-correct way This allows type-conversion using LexicalConversion, and also has specializations for FString, FText, and FName. #jira UE-12096 Change 2958348 on 2016/04/27 by Jamie.Dale PR #2282: Slate font shutdown order fix (Contributed by FineRedMist) Change 2958352 on 2016/04/27 by Jamie.Dale Fixed the subtitle manager updating the wrong list of subtitles #jira UE-29511 Change 2958390 on 2016/04/27 by Jamie.Dale Removed some old placement-new style array insertions Change 2959360 on 2016/04/28 by Richard.TalbotWatkin Fixed potential crash when mesh painting actors whose geometry adapters are no longer registered. #jira UE-29615 - [CrashReport] UE4Editor_MeshPaint!FEdModeMeshPaint::DoPaint() [meshpaintedmode.cpp:1127] Change 2959724 on 2016/04/28 by Cody.Albert Merging hardware survey gating logic from 4.10 #jira UE-28666 Change 2959807 on 2016/04/28 by Cody.Albert Removed deprecated function call #jira UE-28666 Change 2959894 on 2016/04/28 by Cody.Albert Fix for scroll offset being clamped by content size, not scroll max #jira UE-20676 Change 2960048 on 2016/04/28 by Jamie.Dale Added FAssetData::GetTagValueRef to go along with FAssetData::GetTagValue #jira UE-12096 Change 2960782 on 2016/04/29 by Jamie.Dale Updating code to use the new FText aware asset registry tag functions #jira UE-12096 Change 2960885 on 2016/04/29 by Jamie.Dale Updating code to use the new FText aware asset registry tag functions #jira UE-12096 Change 2961170 on 2016/04/29 by Jamie.Dale Updating code to use the new FText aware asset registry tag functions #jira UE-12096 Change 2961171 on 2016/04/29 by Jamie.Dale Updating code to use the new FText aware asset registry tag functions #jira UE-12096 Change 2961173 on 2016/04/29 by Jamie.Dale Removed some inline duplication on the specialized template functions #jira UE-12096 Change 2963124 on 2016/05/02 by Jamie.Dale FExternalDragOperation can now contain both text and file data at the same time This better mirrors what the OS level drag-and-drop operations are capable of, and some applications will actually give you both bits of data at the same time. #jira UE-26585 Change 2963175 on 2016/05/02 by Jamie.Dale Updated some font editor tooltips to be more descriptive #jira UE-17429 Change 2963290 on 2016/05/02 by Jamie.Dale The Localise UAT command can now be run with a null localisation provider Change 2963305 on 2016/05/02 by Jamie.Dale Fixed minor typo Change 2963402 on 2016/05/02 by Jamie.Dale Cleaned up all the current localization key conflicts and warnings from gathering Engine code #jira UE-25833 Change 2963415 on 2016/05/02 by Jamie.Dale Rephrased a message that could generate a CIS warning #jira UE-25833 Change 2964184 on 2016/05/03 by Jamie.Dale Fixed duplicate "Font" entry in asset picker menu This was caused by PropertyCustomizationHelpers::GetNewAssetFactoriesForClasses using CanCreateNew rather than ShouldShowInNewMenu, as UFont has two factories, but one is supposed to be hidden from the UI. We also now make sure the factories are sorted by display name before being shown in the UI. #jira UE-24903 Change 2966108 on 2016/05/04 by Nick.Darnell Engine - Rearranging the order of ELoadingPhase's enums so that they match the loading order of modules. Change 2966113 on 2016/05/04 by Nick.Darnell [Engine Loop Change] UEngine now defines a Start() function, that subclasses can use to start game related things after initialization of the engine. This is done so that after the Init() call on UEngine, we can then perform a module load for the ELoadingPhase::PostEngineInit phase of loading, then inform the UEngine that it's time to start the game. Therefore, UGameEngine now tells the GameInstance to Start during this phase now. Change 2966121 on 2016/05/04 by Jamie.Dale Config writing improvements when dealing with property values This updates FConfigFile::ShouldExportQuotedString to make sure that a property value containing any characters that FParse::LineExtended will consume when parsing back in the config file (such as { and }, or a trailing \) cause the string to be quoted. This also adds FConfigFile::GenerateExportedPropertyLine to generate the INI key->value lines in a consistent and correctly escaped way, and makes sure that everything that writes out lines to a config file uses it. FConfigCacheIni::SetString and FConfigCacheIni::SetText have been updated to update the value even if it only differs by case. UObject::SaveConfig and UObject::LoadConfig have had some code whitespace fix-up (from a bad merge). Change 2966122 on 2016/05/04 by Jamie.Dale Added a setting to control dialogue wave audio filenames Change 2966481 on 2016/05/04 by Jamie.Dale PR #2336: BUGFIX: Selection of objects in the Content browser from WorldSettings (Contributed by projectgheist) Change 2966887 on 2016/05/04 by Jamie.Dale PR #2336: BUGFIX: Selection of objects in the Content browser from WorldSettings (Contributed by projectgheist) Change 2967488 on 2016/05/05 by Ben.Marsh Changes to support packaging plugins from the editor. * UBT now has an option to explicitly disable hot-reloading in any circumstances. * When running with -module arguments for a monolithic target, UBT will no longer try to relink the executable in source builds (so it's possible to compile plugin libs outside of an installed engine build without having already built UE4Game). * When packaging, a temporary host project is always generated in the output directory to avoid invalidating intermediates in the source directory. * An empty Config\FilterPlugin.ini file is written out with instructions on how to list additional files to package if it is not already present. Change 2967947 on 2016/05/05 by Nick.Darnell PR #2358: Properly display Mip Level Count and Format for UTexture2DDynamic Textures (Contributed by Allegorithmic) #jira UE-30371 Change 2968333 on 2016/05/05 by Jamie.Dale Fixed MultiLine not working with arrays of string or text properties - The detail customizations for FString and FText properties now read the meta-data off the correct property. - The UDS editor now lets you set the "MultiLine" meta-data on arrays of FString and FText properties. - Fixed changing the "MultiLine" flag on a UDS property not rebuilding the default value editor. - Fixed the default values panel in the UDS editor having a title area. #jira UE-30392 Change 2968999 on 2016/05/06 by Jamie.Dale Fixed infinite loop in the editor if a directory that is being watched is deleted #jira UE-30172 Change 2969105 on 2016/05/06 by Richard.TalbotWatkin Fixed issue where opening a submenu while the parent menu had a text box focused would lead to a crash. The graph node comment text widget now only dismisses all menus if the text commit info implies that it was committed by some user action. #jira UE-29086 - Crash When Typing a Node Comment and Hovering Over the Alignment Option Change 2969440 on 2016/05/06 by Jamie.Dale Significant performance improvements when pasting a large amount of text #jira UE-19712 Change 2969619 on 2016/05/06 by Andrew.Rodham Auto-reimport is now disabled inside an editor running in unattended mode Change 2969621 on 2016/05/06 by Jamie.Dale Added the ability to override the subtitle used on a dialogue wave This is useful for effort sounds, plus some other cases, such as characters speaking in a foreign language not known to the player. #jira UETOOL-795 Change 2970588 on 2016/05/09 by Chris.Wood Fix typo in operator expression in UEndUserSettings::SetSendAnonymousUsageDataToEpic() [UE-26958] - GitHub 2056 : Fixing typo in the operator #2056 Change 2971151 on 2016/05/09 by Chris.Wood Logging ensure fails as errors. Automated tests with ensure fails will be unsuccessful. [UE-19579] - If an ensure() fails within an automated test, the test can still show a positive result. [UE-26575] - GitHub 2030 : Add error-severity message to log on ensure. PR #2030 Change 2971267 on 2016/05/09 by Alexis.Matte Wrong parameter when calling GetImportOptions #jira UE-30299 Change 2972073 on 2016/05/10 by Richard.TalbotWatkin Fixed UModel methods which make surfaces as modified. #jira UE-28831 - Unable to undo material placement on BSP Change 2972329 on 2016/05/10 by Nick.Darnell Merging //UE4/Dev-Main to Dev-Editor (//UE4/Dev-Editor) Change 2972887 on 2016/05/10 by Alexis.Matte #jira UE-30167 We now import the geometric transform also when we uncheck the absolute transform in the vertex. Change 2973664 on 2016/05/11 by Nick.Darnell Merging //UE4/Dev-Main to Dev-Editor (//UE4/Dev-Editor) Change 2973717 on 2016/05/11 by Nick.Darnell Fixing compiler issues from main merge. #jira UE-30590 Change 2973846 on 2016/05/11 by Jamie.Dale Exposed FConfigValue::ExpandValue and added FConfigValue::CollapseValue These are both static and can be used to expand or collapse the macros used in our config files (mostly when dealing with paths), in code that has to deal with the config system, but isn't internal to the config system (mostly things that deal with default configs outside of UObjects). The old non-static version of FConfigValue::ExpandValue is now FConfigValue::ExpandValueInternal, which just calls FConfigValue::ExpandValue on SavedValue and ExpandedValue. This also changes some code that was using FString.Replace to use FString.ReplaceInline. This reduces allocations, and also allows us to avoid another string comparison to see whether the strings are identical (as ReplaceInline returns the number of replacements that were made). Change 2973847 on 2016/05/11 by Jamie.Dale Changing the loading phase in the localization dashboard now writes to the default config #jira UE-30482 Change 2973866 on 2016/05/11 by Jamie.Dale Deprecated some functions that were taking an unused position. These unused parameters caused confusion and lead to UE-30276. The old versions have been deprecated, and new versions without those parameters have been added. Existing code has been updated to call the non-deprecated version. - FViewportFrame::ResizeFrame - FSceneViewport::ResizeFrame - FSceneViewport::ResizeViewport [CL 2973886 by Nick Darnell in Main branch]
2016-05-11 11:05:13 -04:00
FSlateIcon UK2Node_CustomEvent::GetIconAndTint(FLinearColor& OutColor) const
Added the ability to flag custom events as CallInEditor and extended the main editor actor details view to provide a drop list in the blueprints to call valid meta tagged functions. #TTP 337860 - Expose flagged BlueprintEvents as buttons in the Details panel that can be run in-editor #Branch UE4 #Proj Engine, DetailsCustomization, Kismet, Kismetcompiler, BlueprintGraph #Change Added FName FBlueprintMetadata::MD_CallInEditor as "CallInEditor" #Change Added bool UProperty UK2Node_CustomEvent::bCallInEditor to enable call in editor states to be serialised with UK2Node_CustomEvent #Change Modified FBlueprintGraphActionDetails::CustomizeDetails to add support for the CallInEditor tickbox. #Change Modified UK2Node_CustomEvent::GetPaletteIcon to return a different node icon when call in editor is enabled. #Added new icon GraphEditor.CallInEditorEvent_16x for the node corner icons and the blutility combo menu. #Change Added FKismetUserDeclaredFunctionMetadata::bCallInEditorProperty to help propagate call in editor setting from customevent node's to compiler generated event function entry point #Change Modified FKismetCompilerContext::CreateFunctionStubForEvent to check customevent node bCallInEditor properties and mark the generated function entry nodes as CallInEditor. This was required as a transitional phase to so the setting could be observed later during meta data generation. #Change Modified FKismetCompilerContext::FinishCompilingFunction to check function entry points for call in editor flags in the attached FKismetUserDeclaredFunctionMetadata and add CallInEditor meta data if present. #Change Modified AActor::ProcessEvent to allow events to be processed by the actor instance if the Function has CallInEditor meta data set to true #Change Added a series of functions to FActorDetails to conditionally add a blutility category and a combo list ( displaying the available blutility functions from the current actor blueprint ) and a button to call the selected function on the actor selection. ReviewedBy Chris.Wood #codereview Nick.Whiting [CL 2230263 by Ben Cosh in Main branch]
2014-07-24 13:30:26 -04:00
{
Copying //UE4/Dev-Editor to //UE4/Dev-Main (Source: //UE4/Dev-Editor @ 2973866) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2937390 on 2016/04/07 by Cody.Albert #jira UE-29211 Fixed slider to properly bubble unhandled OnKeyDown events Change 2939672 on 2016/04/11 by Richard.TalbotWatkin Made a change to how file check out notifications work. Now the dirty package state is processed at the end of every tick, meaning that packages which are dirtied and then cleaned again are not processed. This fixes an issue where a number of child blueprints were flagged as needing checkout when a parent blueprint was compiled. This also allows multiple packages which are dirtied at the same time to be treated as one transaction. #jira UE-29193 - "Files need check-out" prompt spams Blueprint users Change 2939686 on 2016/04/11 by Richard.TalbotWatkin A number of further improvements to mesh vertex color painting: * Lower LODs are now automatically fixed up for instances which were created in a previous bugged version of the engine. * Since lower LODs cannot currently have their vertex colors edited, their vertex colors are always derived from LOD0. * Fixed a bug when building lower LODs so that vertices in neighboring octree nodes are considered when looking for the nearest vertex from LOD0 which corresponds. * Fixed issue where static meshes with imported LODs would not have the lower LODs' override colors set when "Copy instance vertex colors to source mesh" was used (static meshes with generated LODs were always getting correct override colors). #jira UE-28563 - Incorrectly displayed LOD VertexColor until paint mode is selected Change 2939906 on 2016/04/11 by Nick.Darnell Automation - Adding several enhancements to the automation framework and improving the UI. * Tests in the UI now have a link to the source and line where they orginate. * There's now a general purpose latent lambda command you can use to run arbitrary code latently. * Added Inlined AddCommand for regular and networked commands to the base automation class, to avoid the use of the macro, which prevents breakpoints from working in lambda code. * Front end now has better column displays offering more room to the test name * Changed several events to the automation controller to multicast delegates so that many could hook them. * The UI now refreshes the selection after tests finish so that the output log updates. Change 2939908 on 2016/04/11 by Nick.Darnell Automation - The editor import/export tests are now a complex test and actually sperate out all the tests that can be run, some trickiness was required on the filenames so that they didn't expand into more child tests in the UI. (replacing .'s with _'s) Change 2940028 on 2016/04/11 by Nick.Darnell Automation - Removing the search box from the toolbar. It's now inlined above the test tree. Tweaking the padding to make it look more other windows and make everything not look so squished. Recursive expansion now works on tests. Change 2940066 on 2016/04/11 by Nick.Darnell Automation - Moving the filter group dropdown out of the toolbar and onto the line with the search box above the treeview - additional tweaks to it. Change 2940092 on 2016/04/11 by Jamie.Dale PR #2248: Datatable select next row (Contributed by FineRedMist) Change 2940093 on 2016/04/11 by Jamie.Dale PR #2248: Datatable select next row (Contributed by FineRedMist) Change 2940157 on 2016/04/11 by Jamie.Dale Fixing FTextTest due to some changes made to how currency is formatted Change 2940694 on 2016/04/12 by Richard.TalbotWatkin Fixed issue where vertex override colors were not being propagated correctly for generated lower LODs. #jira UE-29360 - Override Colors not propagated correctly to generated lower LODs Change 2942379 on 2016/04/13 by Richard.TalbotWatkin Fixed issue where entering PIE while selecting an actor in Mesh Paint mode could lead to a MeshPaintStaticMeshAdapter holding onto an invalid pointer to an old mesh component, and causing a crash upon leaving the mode. This can happen because, when loading a new streaming level, the proxy actor can be selected when starting PIE, which will subsequently be added to the tool's internal lists. This needs to be added as a GC reference so that it can be NULLed when forcibly destroyed. #jira UE-29345 - Crash occurs exiting the editor after enabling mesh paint mode and PIEing Change 2942947 on 2016/04/13 by Richard.TalbotWatkin Fixed crash when pasting a material function call node from one project to another in which it is not defined. #jira UE-27087 - Crash when pasting MaterialFunctionCall expressions into the material editor between projects Change 2943452 on 2016/04/14 by Richard.TalbotWatkin Updated F4 debug key binding to match what's in ShowFlags.cpp PR #2197 (contributed by mfortin-bhvr) Change 2943824 on 2016/04/14 by Alexis.Matte #jira UE-29090 Make sure we cannot open the color picker when a property is edit const Change 2943841 on 2016/04/14 by Alexis.Matte #jira UE-28924 tooltip was add for every hierarchy import option Change 2943927 on 2016/04/14 by Alexis.Matte #jira UE-29423 Add Obj support for scene importer Github PR #2272 Change 2943967 on 2016/04/14 by Richard.TalbotWatkin Added relevant fields from FBodyInstance to the FoliageType customizations. #jira UE-20138 - FoliageType has a FBodyInstance but only shows Collision Presets and not other FBodyInstance properties Change 2948397 on 2016/04/19 by Andrew.Rodham Moved FSlateIcon definition to SlateCore It was previously declared as SLATE_API, despite its header residing inside SlateCore. Reviewed by Jamie Dale. Change 2948805 on 2016/04/19 by Andrew.Rodham Editor: Deprecated FName UEdGraphNode::GetPaletteIcon(FLinearColor&); in favor of FSlateIcon UEdGraphNode::GetIconAndTint(FLinearColor&); to allow for icons in external style sets to be used. - Previously, all icons were assumed to reside within FEditorStyle, which is not the case and would create broken icons in the graph editor. All relevant code has been updated to use FSlateIcon structures instead of a simple name. - This change required a significant overhaul to FClassIconFinder to support FSlateIcons. To keep the API clean, FSlateIconFinder now deals with FSlateIcon class icon finding operations, and FClassIconFinder for the most part just adds actor specific logic. #jira UE-26502 Change 2950658 on 2016/04/20 by Alexis.Matte #jira UE-24333 Skinxx workflow, we now output an error if there is mix of material with skinxx and some with no skinxx suffix Change 2950663 on 2016/04/20 by Alexis.Matte #jira UE-29582 When exporting to fbx we have to export each material instance as one fbx material Change 2951240 on 2016/04/21 by Alexis.Matte #jira UE-28473 Make sure light are render properly after importing a fbx scene Change 2951421 on 2016/04/21 by Alexis.Matte #jira UE-29773 fbx skeletalmesh import now support mesh hierarchy Change 2955873 on 2016/04/26 by Richard.TalbotWatkin PR #2225: Fix working package directory from the launch profiles (Contributed by projectgheist) Change 2955965 on 2016/04/26 by Nick.Darnell Merging //UE4/Dev-Main to Dev-Editor (//UE4/Dev-Editor) Change 2956717 on 2016/04/26 by Andrew.Rodham Editor: World Outliner now correctly calls ProcessEditDelete on editor modes that have asked to process delete operations #jira UE-26968 Change 2956822 on 2016/04/26 by Andrew.Rodham Editor: Fixed actors not being removed from the scene outliner when they are added and removed on the same frame #jira UE-7777 Change 2956931 on 2016/04/26 by Nick.Darnell New Module - UATHelper - Moving the UAT launching code from the MainFrame module into a reusable module other modules can trigger. Change 2956932 on 2016/04/26 by Nick.Darnell Plugins - Now allowing you to package a plugin from the plugin browsing view. Still work in progress. Change 2957164 on 2016/04/26 by Nick.Darnell Hot Reload - Fixing hot reload, it no longer creates a temporary copy of the module manager. Making the copy constructor private on the module manager to prevent this in the future. Change 2957165 on 2016/04/26 by Nick.Darnell Fixing the Editor Mode plugin sample, it no longer provides a bad starting example for where to create your widgets. #jira UE-28456 Change 2957510 on 2016/04/27 by Nick.Darnell PR #2198: Git Plugin implement the Sync operation to update local files using the git pull --rebase command (Contributed by SRombauts) #jira UE-28763 Change 2957511 on 2016/04/27 by Andrew.Rodham Editor: Make favorites button on details panel non-focusable - This was preventing users being able to tab between value fields on the details panel Change 2957610 on 2016/04/27 by Nick.Darnell PR #1836: Git plugin: make initial commit when initializing new project (Contributed by SRombauts) #jira UE-24190 Change 2957667 on 2016/04/27 by Jamie.Dale Fixed crash that could happen in FTextLayout::GetLineViewIndexForTextLocation if passed a bad location #jira OR-18634 Change 2958035 on 2016/04/27 by Nick.Darnell Fixing the DesignerRebuild flag detection so that we can just refresh the slate widget without recreating the preview UObject, which causes the destruction of the details panel, and the slate widget recreation was the only part that was required. Change 2958272 on 2016/04/27 by Jamie.Dale Added FAssetData::GetTagValue to handle getting asset tag values in a type-correct way This allows type-conversion using LexicalConversion, and also has specializations for FString, FText, and FName. #jira UE-12096 Change 2958348 on 2016/04/27 by Jamie.Dale PR #2282: Slate font shutdown order fix (Contributed by FineRedMist) Change 2958352 on 2016/04/27 by Jamie.Dale Fixed the subtitle manager updating the wrong list of subtitles #jira UE-29511 Change 2958390 on 2016/04/27 by Jamie.Dale Removed some old placement-new style array insertions Change 2959360 on 2016/04/28 by Richard.TalbotWatkin Fixed potential crash when mesh painting actors whose geometry adapters are no longer registered. #jira UE-29615 - [CrashReport] UE4Editor_MeshPaint!FEdModeMeshPaint::DoPaint() [meshpaintedmode.cpp:1127] Change 2959724 on 2016/04/28 by Cody.Albert Merging hardware survey gating logic from 4.10 #jira UE-28666 Change 2959807 on 2016/04/28 by Cody.Albert Removed deprecated function call #jira UE-28666 Change 2959894 on 2016/04/28 by Cody.Albert Fix for scroll offset being clamped by content size, not scroll max #jira UE-20676 Change 2960048 on 2016/04/28 by Jamie.Dale Added FAssetData::GetTagValueRef to go along with FAssetData::GetTagValue #jira UE-12096 Change 2960782 on 2016/04/29 by Jamie.Dale Updating code to use the new FText aware asset registry tag functions #jira UE-12096 Change 2960885 on 2016/04/29 by Jamie.Dale Updating code to use the new FText aware asset registry tag functions #jira UE-12096 Change 2961170 on 2016/04/29 by Jamie.Dale Updating code to use the new FText aware asset registry tag functions #jira UE-12096 Change 2961171 on 2016/04/29 by Jamie.Dale Updating code to use the new FText aware asset registry tag functions #jira UE-12096 Change 2961173 on 2016/04/29 by Jamie.Dale Removed some inline duplication on the specialized template functions #jira UE-12096 Change 2963124 on 2016/05/02 by Jamie.Dale FExternalDragOperation can now contain both text and file data at the same time This better mirrors what the OS level drag-and-drop operations are capable of, and some applications will actually give you both bits of data at the same time. #jira UE-26585 Change 2963175 on 2016/05/02 by Jamie.Dale Updated some font editor tooltips to be more descriptive #jira UE-17429 Change 2963290 on 2016/05/02 by Jamie.Dale The Localise UAT command can now be run with a null localisation provider Change 2963305 on 2016/05/02 by Jamie.Dale Fixed minor typo Change 2963402 on 2016/05/02 by Jamie.Dale Cleaned up all the current localization key conflicts and warnings from gathering Engine code #jira UE-25833 Change 2963415 on 2016/05/02 by Jamie.Dale Rephrased a message that could generate a CIS warning #jira UE-25833 Change 2964184 on 2016/05/03 by Jamie.Dale Fixed duplicate "Font" entry in asset picker menu This was caused by PropertyCustomizationHelpers::GetNewAssetFactoriesForClasses using CanCreateNew rather than ShouldShowInNewMenu, as UFont has two factories, but one is supposed to be hidden from the UI. We also now make sure the factories are sorted by display name before being shown in the UI. #jira UE-24903 Change 2966108 on 2016/05/04 by Nick.Darnell Engine - Rearranging the order of ELoadingPhase's enums so that they match the loading order of modules. Change 2966113 on 2016/05/04 by Nick.Darnell [Engine Loop Change] UEngine now defines a Start() function, that subclasses can use to start game related things after initialization of the engine. This is done so that after the Init() call on UEngine, we can then perform a module load for the ELoadingPhase::PostEngineInit phase of loading, then inform the UEngine that it's time to start the game. Therefore, UGameEngine now tells the GameInstance to Start during this phase now. Change 2966121 on 2016/05/04 by Jamie.Dale Config writing improvements when dealing with property values This updates FConfigFile::ShouldExportQuotedString to make sure that a property value containing any characters that FParse::LineExtended will consume when parsing back in the config file (such as { and }, or a trailing \) cause the string to be quoted. This also adds FConfigFile::GenerateExportedPropertyLine to generate the INI key->value lines in a consistent and correctly escaped way, and makes sure that everything that writes out lines to a config file uses it. FConfigCacheIni::SetString and FConfigCacheIni::SetText have been updated to update the value even if it only differs by case. UObject::SaveConfig and UObject::LoadConfig have had some code whitespace fix-up (from a bad merge). Change 2966122 on 2016/05/04 by Jamie.Dale Added a setting to control dialogue wave audio filenames Change 2966481 on 2016/05/04 by Jamie.Dale PR #2336: BUGFIX: Selection of objects in the Content browser from WorldSettings (Contributed by projectgheist) Change 2966887 on 2016/05/04 by Jamie.Dale PR #2336: BUGFIX: Selection of objects in the Content browser from WorldSettings (Contributed by projectgheist) Change 2967488 on 2016/05/05 by Ben.Marsh Changes to support packaging plugins from the editor. * UBT now has an option to explicitly disable hot-reloading in any circumstances. * When running with -module arguments for a monolithic target, UBT will no longer try to relink the executable in source builds (so it's possible to compile plugin libs outside of an installed engine build without having already built UE4Game). * When packaging, a temporary host project is always generated in the output directory to avoid invalidating intermediates in the source directory. * An empty Config\FilterPlugin.ini file is written out with instructions on how to list additional files to package if it is not already present. Change 2967947 on 2016/05/05 by Nick.Darnell PR #2358: Properly display Mip Level Count and Format for UTexture2DDynamic Textures (Contributed by Allegorithmic) #jira UE-30371 Change 2968333 on 2016/05/05 by Jamie.Dale Fixed MultiLine not working with arrays of string or text properties - The detail customizations for FString and FText properties now read the meta-data off the correct property. - The UDS editor now lets you set the "MultiLine" meta-data on arrays of FString and FText properties. - Fixed changing the "MultiLine" flag on a UDS property not rebuilding the default value editor. - Fixed the default values panel in the UDS editor having a title area. #jira UE-30392 Change 2968999 on 2016/05/06 by Jamie.Dale Fixed infinite loop in the editor if a directory that is being watched is deleted #jira UE-30172 Change 2969105 on 2016/05/06 by Richard.TalbotWatkin Fixed issue where opening a submenu while the parent menu had a text box focused would lead to a crash. The graph node comment text widget now only dismisses all menus if the text commit info implies that it was committed by some user action. #jira UE-29086 - Crash When Typing a Node Comment and Hovering Over the Alignment Option Change 2969440 on 2016/05/06 by Jamie.Dale Significant performance improvements when pasting a large amount of text #jira UE-19712 Change 2969619 on 2016/05/06 by Andrew.Rodham Auto-reimport is now disabled inside an editor running in unattended mode Change 2969621 on 2016/05/06 by Jamie.Dale Added the ability to override the subtitle used on a dialogue wave This is useful for effort sounds, plus some other cases, such as characters speaking in a foreign language not known to the player. #jira UETOOL-795 Change 2970588 on 2016/05/09 by Chris.Wood Fix typo in operator expression in UEndUserSettings::SetSendAnonymousUsageDataToEpic() [UE-26958] - GitHub 2056 : Fixing typo in the operator #2056 Change 2971151 on 2016/05/09 by Chris.Wood Logging ensure fails as errors. Automated tests with ensure fails will be unsuccessful. [UE-19579] - If an ensure() fails within an automated test, the test can still show a positive result. [UE-26575] - GitHub 2030 : Add error-severity message to log on ensure. PR #2030 Change 2971267 on 2016/05/09 by Alexis.Matte Wrong parameter when calling GetImportOptions #jira UE-30299 Change 2972073 on 2016/05/10 by Richard.TalbotWatkin Fixed UModel methods which make surfaces as modified. #jira UE-28831 - Unable to undo material placement on BSP Change 2972329 on 2016/05/10 by Nick.Darnell Merging //UE4/Dev-Main to Dev-Editor (//UE4/Dev-Editor) Change 2972887 on 2016/05/10 by Alexis.Matte #jira UE-30167 We now import the geometric transform also when we uncheck the absolute transform in the vertex. Change 2973664 on 2016/05/11 by Nick.Darnell Merging //UE4/Dev-Main to Dev-Editor (//UE4/Dev-Editor) Change 2973717 on 2016/05/11 by Nick.Darnell Fixing compiler issues from main merge. #jira UE-30590 Change 2973846 on 2016/05/11 by Jamie.Dale Exposed FConfigValue::ExpandValue and added FConfigValue::CollapseValue These are both static and can be used to expand or collapse the macros used in our config files (mostly when dealing with paths), in code that has to deal with the config system, but isn't internal to the config system (mostly things that deal with default configs outside of UObjects). The old non-static version of FConfigValue::ExpandValue is now FConfigValue::ExpandValueInternal, which just calls FConfigValue::ExpandValue on SavedValue and ExpandedValue. This also changes some code that was using FString.Replace to use FString.ReplaceInline. This reduces allocations, and also allows us to avoid another string comparison to see whether the strings are identical (as ReplaceInline returns the number of replacements that were made). Change 2973847 on 2016/05/11 by Jamie.Dale Changing the loading phase in the localization dashboard now writes to the default config #jira UE-30482 Change 2973866 on 2016/05/11 by Jamie.Dale Deprecated some functions that were taking an unused position. These unused parameters caused confusion and lead to UE-30276. The old versions have been deprecated, and new versions without those parameters have been added. Existing code has been updated to call the non-deprecated version. - FViewportFrame::ResizeFrame - FSceneViewport::ResizeFrame - FSceneViewport::ResizeViewport [CL 2973886 by Nick Darnell in Main branch]
2016-05-11 11:05:13 -04:00
return FSlateIcon("EditorStyle", bCallInEditor ? "GraphEditor.CallInEditorEvent_16x" : "GraphEditor.CustomEvent_16x");
Added the ability to flag custom events as CallInEditor and extended the main editor actor details view to provide a drop list in the blueprints to call valid meta tagged functions. #TTP 337860 - Expose flagged BlueprintEvents as buttons in the Details panel that can be run in-editor #Branch UE4 #Proj Engine, DetailsCustomization, Kismet, Kismetcompiler, BlueprintGraph #Change Added FName FBlueprintMetadata::MD_CallInEditor as "CallInEditor" #Change Added bool UProperty UK2Node_CustomEvent::bCallInEditor to enable call in editor states to be serialised with UK2Node_CustomEvent #Change Modified FBlueprintGraphActionDetails::CustomizeDetails to add support for the CallInEditor tickbox. #Change Modified UK2Node_CustomEvent::GetPaletteIcon to return a different node icon when call in editor is enabled. #Added new icon GraphEditor.CallInEditorEvent_16x for the node corner icons and the blutility combo menu. #Change Added FKismetUserDeclaredFunctionMetadata::bCallInEditorProperty to help propagate call in editor setting from customevent node's to compiler generated event function entry point #Change Modified FKismetCompilerContext::CreateFunctionStubForEvent to check customevent node bCallInEditor properties and mark the generated function entry nodes as CallInEditor. This was required as a transitional phase to so the setting could be observed later during meta data generation. #Change Modified FKismetCompilerContext::FinishCompilingFunction to check function entry points for call in editor flags in the attached FKismetUserDeclaredFunctionMetadata and add CallInEditor meta data if present. #Change Modified AActor::ProcessEvent to allow events to be processed by the actor instance if the Function has CallInEditor meta data set to true #Change Added a series of functions to FActorDetails to conditionally add a blutility category and a combo list ( displaying the available blutility functions from the current actor blueprint ) and a button to call the selected function on the actor selection. ReviewedBy Chris.Wood #codereview Nick.Whiting [CL 2230263 by Ben Cosh in Main branch]
2014-07-24 13:30:26 -04:00
}
void UK2Node_CustomEvent::AutowireNewNode(UEdGraphPin* FromPin)
{
Super::AutowireNewNode(FromPin);
if (auto DelegateOutPin = FindPin(DelegateOutputName))
{
if (DelegateOutPin->LinkedTo.Num())
{
ReconstructNode();
}
}
}
void UK2Node_CustomEvent::AddSearchMetaDataInfo(TArray<struct FSearchTagDataPair>& OutTaggedMetaData) const
{
Super::AddSearchMetaDataInfo(OutTaggedMetaData);
for (FSearchTagDataPair& SearchData : OutTaggedMetaData)
{
// Should always be the first item, but there is no guarantee
if (SearchData.Key.CompareTo(FFindInBlueprintSearchTags::FiB_Name) == 0)
{
SearchData.Value = FText::FromString(FName::NameToDisplayString(CustomFunctionName.ToString(), false));
break;
}
}
OutTaggedMetaData.Add(FSearchTagDataPair(FFindInBlueprintSearchTags::FiB_NativeName, FText::FromName(CustomFunctionName)));
}
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
FText UK2Node_CustomEvent::GetKeywords() const
{
FText ParentKeywords = Super::GetKeywords();
FFormatNamedArguments Args;
Args.Add(TEXT("ParentKeywords"), ParentKeywords);
return FText::Format(LOCTEXT("CustomEventKeywords", "{ParentKeywords} Custom"), Args);
}
#undef LOCTEXT_NAMESPACE