2016-12-08 08:52:44 -05:00
// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
2014-03-14 14:13:41 -04:00
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 "SGraphNode.h"
# include "EdGraph/EdGraph.h"
# include "Widgets/SBoxPanel.h"
# include "SlateOptMacros.h"
# include "Framework/Application/SlateApplication.h"
# include "Widgets/Layout/SSpacer.h"
# include "Widgets/Images/SImage.h"
# include "Widgets/Input/SButton.h"
# include "Widgets/Input/SCheckBox.h"
# include "GraphEditorSettings.h"
# include "SCommentBubble.h"
# include "SGraphPin.h"
# include "GraphEditorDragDropAction.h"
# include "EdGraphSchema_K2.h"
# include "K2Node_Literal.h"
2014-03-14 14:13:41 -04:00
# include "NodeFactory.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 "Logging/TokenizedMessage.h"
# include "DragAndDrop/ActorDragDropGraphEdOp.h"
# include "DragAndDrop/AssetDragDropOp.h"
2014-03-14 14:13:41 -04:00
# include "Editor/Persona/Public/BoneDragDropOp.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/BlueprintEditorUtils.h"
2014-03-14 14:13:41 -04:00
# include "SLevelOfDetailBranchNode.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 "Widgets/SToolTip.h"
2014-03-14 14:13:41 -04:00
# include "IDocumentation.h"
2014-09-05 07:39:52 -04:00
# include "TutorialMetaData.h"
2014-10-14 22:50:06 -04:00
# include "SGraphPanel.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 "Widgets/Text/SInlineEditableTextBlock.h"
Copying //UE4/Dev-Blueprints to //UE4/Dev-Main (Source: //UE4/Dev-Blueprints @ 3130440)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
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 3101549 on 2016/08/25 by Maciej.Mroz
BP nativization: fixed FEmitDefaultValueHelper::HandleInstancedSubobject
https://udn.unrealengine.com/questions/308800/nativized-blueprints-newobject-call-uses-incorrect.html
Change 3101811 on 2016/08/25 by Ryan.Rauschkolb
BP Profiler: Fixed stack overflow crash when compiling blueprints with nested macros
#jira UE-34503
Change 3102478 on 2016/08/26 by Maciej.Mroz
#jira UE-35135 - Odin compiles with errors when using Blueprint nativization
BP Nativization:
- improved native cast
- improved bool handling
Change 3102944 on 2016/08/26 by Phillip.Kavan
[UE-33017] Don't include transient properties when generating property lists at cook time for optimized runtime Blueprint component instancing. Also ensure that deprecated properties are serialized during load/instancing at runtime.
change summary:
- modified FBlueprintComponentInstanceDataLoader to append 'PPF_UseDeprecatedProperties' to the FArchive port flags.
- modified FBlueprintComponentInstanceDataWriter to append both 'PPF_Duplicate' and 'PPF_UseDeprecatedProperties" to the FArchive port flags (to ensure consistency w/ the instancing side).
- switched the RecursivePropertyGatherLambda helper to a static class method instead
- modified the RecursivePropertyGather utility method to exclude transient properties.
notes:
- the primary cause of UE-33017 was that UBodySetup can "share" the ShapeBodySetup object across all instances, but the shared object is not owned by the CDO, it's owned by the archetype. this caused the archetype to differ from the CDO, which caused us to emit the transient property at cook time. thsi threw off the serialization offset between read/write FArchive passes at runtime. since transient properties are not serialized as part of the template, there's no need to include them in the generated delta property list, so as a fix, i'm just excluding them altogether.
#jira UE-33017
Change 3103692 on 2016/08/27 by Mike.Beach
Merging //UE4/Dev-Main to Dev-Blueprints (//UE4/Dev-Blueprints)
Change 3104266 on 2016/08/29 by Ben.Marsh
Add test script to native assets for QAGame.
Change 3104399 on 2016/08/29 by Ben.Marsh
Fix missing property warning in build script.
Change 3104419 on 2016/08/29 by Maciej.Mroz
#jira UE-35135 Odin compiles with errors when using Blueprint nativization
- Reduced number of DynamicCLass instance dependencies
- Fixed UDS default values dependencies
- Improved WeakObjPtr handling
- Improved const parameters handling
Change 3104474 on 2016/08/29 by Ryan.Rauschkolb
BP Profiler: Fixed issue where collapsed nodes that share a name with a parent class collapsed node can cause a stack overflow
#jira UE-35245
Change 3105605 on 2016/08/30 by Maciej.Mroz
Temp change: CIS Test
Change 3105738 on 2016/08/30 by Maciej.Mroz
UAT, CIS: testing NoRecompileUAT switch.
Change 3105800 on 2016/08/30 by Maciej.Mroz
UAT, CIS, Nativization:
- reverted NoRecompileUAT switch.
- testing nativization with -nocompileeditor flag and without -compile flag
Change 3106162 on 2016/08/30 by Maciej.Mroz
UAT, CIS, Nativization:
-NoSubmit flag added. Otherwise UAT files are singed (when they are used by other process). It causes an error.
- Ugly hack removed.
Change 3106261 on 2016/08/30 by Phillip.Kavan
[UE-34705] Gracefully handle tunnel node entry exec pins that aren't internally linked during BP profiler tunnel boundary mapping.
change summary:
- added FBlueprintFunctionContext::GetTunnelBoundaryNode() (uncheckedl variant).
- moved FBlueprintFunctionContext::GetTunnelBoundaryNodeChecked() impl into GetTunnelBoundaryNode().
- re-implemented FBlueprintFunctionContext::GetTunnelBoundaryNodeChecked() to call GetTunnelBoundaryNode() and then assert on the result.
- changed the FBlueprintTunnelInstanceContext::GetTunnelBoundaryNodeChecked() impl to override GetTunnelBoundaryNode() instead.
- modified FBlueprintFunctionContext::MapTunnelBoundary() to only process the entry case if the TunnelBoundaryNode result is valid. this way we simply skip tunnel boundary mapping if an entry path was not previously mapped (rather than assert).
#jira UE-34705
Change 3106478 on 2016/08/30 by Ben.Marsh
Include *.uasset files on builders running the NativizeAssets job.
Change 3107514 on 2016/08/31 by Ben.Cosh
This set of changes is the result of a full pass on the blueprint profiler heat interface to try and bring them into a usable state.
#Jira UE-33465 - Stat heat colors and heat wire traces need a quick pass to ensure they are working as expected.
#Jira UE-33309 - FlipFlop node breaks hottest path wire heatmap
#Jira UE-33650 - Blueprint heatwire effects do not work when touching user macros
#Jira UE-33706 - BP Profiler - Macro instances not colored or reporting time
#Jira UE-33701 - BP Profiler: Hottest path wire heatmap doesn't appear to be working
#Jira UE-33083 - BP Profiler - (Exclusive) pure node heatmap missing from some nodes
#Jira UE-34855 - BP Profiler - Update heatmap coloration when switching between Default/Custom thresholds
#Jira UE-32218 - BP Profiler: Clear "inclusive" time entries from "avg. time" row.
#Proj GraphEditor, Kismet, BlueprintProfiler,
Change 3108268 on 2016/08/31 by Ben.Cosh
Minor change from profiler review sessions to move macro timing to average stats.
#Jira UE-33706 - BP Profiler - Macro instances not colored or reporting time
#Proj Kismet
Change 3108991 on 2016/08/31 by Maciej.Mroz
UAT, CIS, Nativization: Test separate cooking and compiling
Change 3110097 on 2016/09/01 by Ben.Cosh
Minor update to the blueprint profiler mapping functionality to ignore disabled nodes and a fix for the max timing white glow bug.
#Jira UE-35377 - Blueprint macros highlighting white in profiler
#Jira UE-34973 - Remove Ghost Nodes
#Proj Kismet, BlueprintProfiler
Change 3114553 on 2016/09/06 by Dan.Oconnor
Support for TMap/TSet in blueprint variable editor panel
#jira UE-2114
Change 3116367 on 2016/09/07 by Dan.Oconnor
Fixed Function/Macro inputs/outputs list (had become cramped with my last change) + misc. fixes for new container types, fixes uninitialized members in FTerminalType
#jira UE-2114, UE-35676
Change 3116663 on 2016/09/07 by Dan.Oconnor
Fix for array functions showing up with TSet and TMap pins
#jira UE-2114
Change 3118259 on 2016/09/08 by Ryan.Rauschkolb
BP Profiler: Fixed Assert when profiling parent/child Blueprint
#jira UE-35487
Change 3119023 on 2016/09/09 by Maciej.Mroz
Manually integrated (from Odin branch) recent changes related to BP and nativization:
3115713 UE-35448
3117590 UE-35697
3117742 ODIN-577
Change 3119058 on 2016/09/09 by Maciej.Mroz
#jira UE-32841 GitHub 2574 : fix typos
#2574 https://github.com/EpicGames/UnrealEngine/pull/2574
Renamed function CustomNativeInitilize to InitializeNativeClassData and made it private.
Change 3119302 on 2016/09/09 by Maciej.Mroz
#jira UE-35584 Orion - nativized server crashes
Global variable for WITH_PERFCOUNTERS definition in UEBuildConfiguration.
Previously the same header could be compiled with the WITH_PERFCOUNTERS flag enadles and disabled (during a single compilation) .
Change 3119502 on 2016/09/09 by Mike.Beach
When building a deterministic UUID for latent nodes, we now use expanded nodes' origin (node) to avoid collisions (latent node in macros, etc.)
#jira UE-35609
Change 3119517 on 2016/09/09 by Ryan.Rauschkolb
Added blueprint editor settings option to display unique names for blueprint nodes
Change 3119602 on 2016/09/09 by Maciej.Mroz
#jira UEBP-214 Implement Solution for Nativized AnimBlueprints Size Reduction
Added stats about nativized AnimBP
Mechanism to exlcude reducible AnimBP
Editor config option:[BlueprintNativizationSettings] bNativizeAnimBPOnlyWhenNonReducibleFuncitons=false
Change 3119615 on 2016/09/09 by Maciej.Mroz
Missing change (should be part of cl#3119602)
Change 3119619 on 2016/09/09 by Maciej.Mroz
#jira UEBP-214 Implement Solution for Nativized AnimBlueprints Size Reduction
Excluding all AnimBP from Orion nativization.
Change 3120752 on 2016/09/12 by Maciej.Mroz
#jira UE-35051 [CrashReport] UE4Editor_BlueprintNativeCodeGen!FBlueprintNativeCodeGenModule::GenerateSingleAsset()
Removed unnecessary ensure
Change 3121354 on 2016/09/12 by Dan.Oconnor
Fixed variable type width, required for TMap's extra combobox.
Change 3121626 on 2016/09/12 by Phillip.Kavan
[UE-35456] Fix crash on right-click in components tree view after copying one or more BSP actors to clipboard.
Note: This applies to the components tree view in both the Blueprint editor and the Level editor's Actor details panel.
change summary:
- modified FComponentObjectTextFactory::CanCreateClass() to exclude Actor/Component subtypes that are not Blueprint-compatible (e.g. ABrush).
#jira UE-35456
Change 3122712 on 2016/09/13 by Maciej.Mroz
#jira UE-35714 [CrashReport] UE4Editor_BlueprintGraph!UK2Node_CallArrayFunction::GetArrayPins() [k2node_callarrayfunction.cpp:141]
Replaced "check" with "ensure".
Change 3124398 on 2016/09/14 by Maciej.Mroz
More strict BP validation in UBlueprintThumbnailRenderer::Draw
#jira UE-35705
Change 3124405 on 2016/09/14 by Maciej.Mroz
#jira UE-35110 Packaged project crashes when playing sound from blueprint library with enum input after nativizing blueprints
Function Libraries are properly added to dependencies list while nativization.
Change 3124667 on 2016/09/14 by Maciej.Mroz
#jira UE-35262 Incompatible pins give generate warning, when error is necessary.
Fixed incompatible pins validation.
Change 3125245 on 2016/09/14 by Phillip.Kavan
[UE-33674] Fix missing stats for the ForEachElementInEnum node type in the Blueprint profiler tree view.
change summary:
- modified FScriptEventPlayback::Process() to not allow intermediate node exit pins to pollute the current trace path
- modified FBlueprintFunctionContext::DetermineGraphNodeCharacteristics() to handle the UK2Node_ForEachElementInEnum type as a special case and account for extra loop iterations in the sample frequency computed at mapping time
- exported UK2Node_ForEachElementInEnum::InsideLoopPinName and EnumOutputPinName string constants
#jira UE-33674
Change 3126211 on 2016/09/15 by Maciej.Mroz
#jira UE-36016 Struct pin can be connected to Object pin without error
Change 3126393 on 2016/09/15 by Maciej.Mroz
#jira UE-35936
Replace "check" by "ensure".
Change 3126623 on 2016/09/15 by Maciej.Mroz
#jira UE-35816 User defined struct array resets to defaults in blueprint after updating the struct
STRUCT_SerializeFromMismatchedTag is not necessary to serialize structure when guids match. Anyway STRUCT_SerializeFromMismatchedTag sholud precede SerializeFromMismatchedTag().
Change 3127288 on 2016/09/15 by Mike.Beach
Making the script VM overhead and native time stats threadsafe (to account for threaded anim Blueprints in Orion).
Change 3127375 on 2016/09/15 by Mike.Beach
Making sure Blueprint classes inherit the super's ClassConfigName properly (inherit the ID instead of the filename).
Change 3127381 on 2016/09/15 by Mike.Beach
Removing an overzealous ensure that certain users were hitting when a loading array property wasn't fully filled out yet (confirmed that it was populated with the proper objects by the end of the load).
Change 3127476 on 2016/09/15 by Dan.Oconnor
Build fix
#jira UE-36073
Change 3128335 on 2016/09/16 by Maciej.Mroz
#jira UE-36075 Odin: BP_DefaultHand and BigBotCharacter blueprints fail to compile
Fixed broken BP assets.
Change 3128589 on 2016/09/16 by Mike.Beach
Fixing a static analysis CIS warning (duplicated condition).
Change 3128630 on 2016/09/16 by Dan.Oconnor
Re-fix with engine version set
Change 3129338 on 2016/09/16 by Dan.Oconnor
=FScriptSet/FScriptSetHelper fleshed out (Add, Remove, and Find implemented)
+SetParam implemented for marking up sets for primitive Set functions (to be checked in once completed as BlueprintSetLibrary)
#jira UE-2114
[CL 3131171 by Mike Beach in Main branch]
2016-09-19 16:14:06 -04:00
# include "BlueprintEditorSettings.h"
2014-03-14 14:13:41 -04:00
/////////////////////////////////////////////////////
// SNodeTitle
void SNodeTitle : : Construct ( const FArguments & InArgs , UEdGraphNode * InNode )
{
GraphNode = InNode ;
ExtraLineStyle = InArgs . _ExtraLineStyle ;
2015-04-28 11:13:20 -04:00
CachedSize = FVector2D : : ZeroVector ;
2014-03-14 14:13:41 -04:00
// If the user set the text, use it, otherwise use the node title by default
if ( InArgs . _Text . IsSet ( ) )
{
TitleText = InArgs . _Text ;
}
else
{
2014-04-23 18:30:37 -04:00
TitleText = TAttribute < FText > ( this , & SNodeTitle : : GetNodeTitle ) ;
2014-03-14 14:13:41 -04:00
}
2015-04-10 14:37:56 -04:00
NodeTitleCache . SetCachedText ( TitleText . Get ( ) , GraphNode ) ;
2014-03-14 14:13:41 -04:00
RebuildWidget ( ) ;
}
---- Merging with SlateDev branch ----
Introduces the concept of "Active Ticking" to allow Slate to go to sleep when there is no need to update the UI.
While asleep, Slate will skip the Tick & Paint pass for that frame entirely.
- There are TWO ways to "wake" Slate and cause a Tick/Paint pass:
1. Provide some sort of input (mouse movement, clicks, and key presses). Slate will always tick when the user is active.
- Therefore, if the logic in a given widget's Tick is only relevant in response to user action, there is no need to register an active tick.
2. Register an Active Tick. Currently this is an all-or-nothing situation, so if a single active tick needs to execute, all of Slate will be ticked.
- The purpose of an Active Tick is to allow a widget to "drive" Slate and guarantee a Tick/Paint pass in the absence of any user action.
- Examples include animation, async operations that update periodically, progress updates, loading bars, etc.
- An empty active tick is registered for viewports when they are real-time, so game project widgets are unaffected by this change and should continue to work as before.
- An Active Tick is registered by creating an FWidgetActiveTickDelegate and passing it to SWidget::RegisterActiveTick()
- There are THREE ways to unregister an active tick:
1. Return EActiveTickReturnType::StopTicking from the active tick function
2. Pass the FActiveTickHandle returned by RegisterActiveTick() to SWidget::UnregisterActiveTick()
3. Destroy the widget responsible for the active tick
- Sleeping is currently disabled, can be enabled with Slate.AllowSlateToSleep cvar
- There is currently a little buffer time during which Slate continues to tick following any input. Long-term, this is planned to be removed.
- The duration of the buffer can be adjusted using Slate.SleepBufferPostInput cvar (defaults to 1.0f)
- The FCurveSequence API has been updated to work with the active tick system
- Playing a curve sequence now requires that you pass the widget being animated by the sequence
- The active tick will automatically be registered on behalf of the widget and unregister when the sequence is complete
- GetLerpLooping() has been removed. Instead, pass true as the second param to Play() to indicate that the animation will loop. This causes the active tick to be registered indefinitely until paused or jumped to the start/end.
[CL 2391669 by Dan Hertzka in Main branch]
2014-12-17 16:07:57 -05:00
void SNodeTitle : : Tick ( const FGeometry & AllottedGeometry , const double InCurrentTime , const float InDeltaTime )
2014-03-14 14:13:41 -04:00
{
2015-04-28 11:13:20 -04:00
CachedSize = AllottedGeometry . GetLocalSize ( ) ;
2014-03-14 14:13:41 -04:00
// Checks to see if the cached string is valid, and if not, updates it.
2015-04-10 14:37:56 -04:00
if ( NodeTitleCache . IsOutOfDate ( GraphNode ) )
2014-03-14 14:13:41 -04:00
{
2015-04-10 14:37:56 -04:00
NodeTitleCache . SetCachedText ( TitleText . Get ( ) , GraphNode ) ;
2014-03-14 14:13:41 -04:00
RebuildWidget ( ) ;
}
}
2014-04-23 18:30:37 -04:00
FText SNodeTitle : : GetNodeTitle ( ) const
2014-03-14 14:13:41 -04:00
{
Copying //UE4/Dev-Blueprints to //UE4/Dev-Main (Source: //UE4/Dev-Blueprints @ 3130440)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
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 3101549 on 2016/08/25 by Maciej.Mroz
BP nativization: fixed FEmitDefaultValueHelper::HandleInstancedSubobject
https://udn.unrealengine.com/questions/308800/nativized-blueprints-newobject-call-uses-incorrect.html
Change 3101811 on 2016/08/25 by Ryan.Rauschkolb
BP Profiler: Fixed stack overflow crash when compiling blueprints with nested macros
#jira UE-34503
Change 3102478 on 2016/08/26 by Maciej.Mroz
#jira UE-35135 - Odin compiles with errors when using Blueprint nativization
BP Nativization:
- improved native cast
- improved bool handling
Change 3102944 on 2016/08/26 by Phillip.Kavan
[UE-33017] Don't include transient properties when generating property lists at cook time for optimized runtime Blueprint component instancing. Also ensure that deprecated properties are serialized during load/instancing at runtime.
change summary:
- modified FBlueprintComponentInstanceDataLoader to append 'PPF_UseDeprecatedProperties' to the FArchive port flags.
- modified FBlueprintComponentInstanceDataWriter to append both 'PPF_Duplicate' and 'PPF_UseDeprecatedProperties" to the FArchive port flags (to ensure consistency w/ the instancing side).
- switched the RecursivePropertyGatherLambda helper to a static class method instead
- modified the RecursivePropertyGather utility method to exclude transient properties.
notes:
- the primary cause of UE-33017 was that UBodySetup can "share" the ShapeBodySetup object across all instances, but the shared object is not owned by the CDO, it's owned by the archetype. this caused the archetype to differ from the CDO, which caused us to emit the transient property at cook time. thsi threw off the serialization offset between read/write FArchive passes at runtime. since transient properties are not serialized as part of the template, there's no need to include them in the generated delta property list, so as a fix, i'm just excluding them altogether.
#jira UE-33017
Change 3103692 on 2016/08/27 by Mike.Beach
Merging //UE4/Dev-Main to Dev-Blueprints (//UE4/Dev-Blueprints)
Change 3104266 on 2016/08/29 by Ben.Marsh
Add test script to native assets for QAGame.
Change 3104399 on 2016/08/29 by Ben.Marsh
Fix missing property warning in build script.
Change 3104419 on 2016/08/29 by Maciej.Mroz
#jira UE-35135 Odin compiles with errors when using Blueprint nativization
- Reduced number of DynamicCLass instance dependencies
- Fixed UDS default values dependencies
- Improved WeakObjPtr handling
- Improved const parameters handling
Change 3104474 on 2016/08/29 by Ryan.Rauschkolb
BP Profiler: Fixed issue where collapsed nodes that share a name with a parent class collapsed node can cause a stack overflow
#jira UE-35245
Change 3105605 on 2016/08/30 by Maciej.Mroz
Temp change: CIS Test
Change 3105738 on 2016/08/30 by Maciej.Mroz
UAT, CIS: testing NoRecompileUAT switch.
Change 3105800 on 2016/08/30 by Maciej.Mroz
UAT, CIS, Nativization:
- reverted NoRecompileUAT switch.
- testing nativization with -nocompileeditor flag and without -compile flag
Change 3106162 on 2016/08/30 by Maciej.Mroz
UAT, CIS, Nativization:
-NoSubmit flag added. Otherwise UAT files are singed (when they are used by other process). It causes an error.
- Ugly hack removed.
Change 3106261 on 2016/08/30 by Phillip.Kavan
[UE-34705] Gracefully handle tunnel node entry exec pins that aren't internally linked during BP profiler tunnel boundary mapping.
change summary:
- added FBlueprintFunctionContext::GetTunnelBoundaryNode() (uncheckedl variant).
- moved FBlueprintFunctionContext::GetTunnelBoundaryNodeChecked() impl into GetTunnelBoundaryNode().
- re-implemented FBlueprintFunctionContext::GetTunnelBoundaryNodeChecked() to call GetTunnelBoundaryNode() and then assert on the result.
- changed the FBlueprintTunnelInstanceContext::GetTunnelBoundaryNodeChecked() impl to override GetTunnelBoundaryNode() instead.
- modified FBlueprintFunctionContext::MapTunnelBoundary() to only process the entry case if the TunnelBoundaryNode result is valid. this way we simply skip tunnel boundary mapping if an entry path was not previously mapped (rather than assert).
#jira UE-34705
Change 3106478 on 2016/08/30 by Ben.Marsh
Include *.uasset files on builders running the NativizeAssets job.
Change 3107514 on 2016/08/31 by Ben.Cosh
This set of changes is the result of a full pass on the blueprint profiler heat interface to try and bring them into a usable state.
#Jira UE-33465 - Stat heat colors and heat wire traces need a quick pass to ensure they are working as expected.
#Jira UE-33309 - FlipFlop node breaks hottest path wire heatmap
#Jira UE-33650 - Blueprint heatwire effects do not work when touching user macros
#Jira UE-33706 - BP Profiler - Macro instances not colored or reporting time
#Jira UE-33701 - BP Profiler: Hottest path wire heatmap doesn't appear to be working
#Jira UE-33083 - BP Profiler - (Exclusive) pure node heatmap missing from some nodes
#Jira UE-34855 - BP Profiler - Update heatmap coloration when switching between Default/Custom thresholds
#Jira UE-32218 - BP Profiler: Clear "inclusive" time entries from "avg. time" row.
#Proj GraphEditor, Kismet, BlueprintProfiler,
Change 3108268 on 2016/08/31 by Ben.Cosh
Minor change from profiler review sessions to move macro timing to average stats.
#Jira UE-33706 - BP Profiler - Macro instances not colored or reporting time
#Proj Kismet
Change 3108991 on 2016/08/31 by Maciej.Mroz
UAT, CIS, Nativization: Test separate cooking and compiling
Change 3110097 on 2016/09/01 by Ben.Cosh
Minor update to the blueprint profiler mapping functionality to ignore disabled nodes and a fix for the max timing white glow bug.
#Jira UE-35377 - Blueprint macros highlighting white in profiler
#Jira UE-34973 - Remove Ghost Nodes
#Proj Kismet, BlueprintProfiler
Change 3114553 on 2016/09/06 by Dan.Oconnor
Support for TMap/TSet in blueprint variable editor panel
#jira UE-2114
Change 3116367 on 2016/09/07 by Dan.Oconnor
Fixed Function/Macro inputs/outputs list (had become cramped with my last change) + misc. fixes for new container types, fixes uninitialized members in FTerminalType
#jira UE-2114, UE-35676
Change 3116663 on 2016/09/07 by Dan.Oconnor
Fix for array functions showing up with TSet and TMap pins
#jira UE-2114
Change 3118259 on 2016/09/08 by Ryan.Rauschkolb
BP Profiler: Fixed Assert when profiling parent/child Blueprint
#jira UE-35487
Change 3119023 on 2016/09/09 by Maciej.Mroz
Manually integrated (from Odin branch) recent changes related to BP and nativization:
3115713 UE-35448
3117590 UE-35697
3117742 ODIN-577
Change 3119058 on 2016/09/09 by Maciej.Mroz
#jira UE-32841 GitHub 2574 : fix typos
#2574 https://github.com/EpicGames/UnrealEngine/pull/2574
Renamed function CustomNativeInitilize to InitializeNativeClassData and made it private.
Change 3119302 on 2016/09/09 by Maciej.Mroz
#jira UE-35584 Orion - nativized server crashes
Global variable for WITH_PERFCOUNTERS definition in UEBuildConfiguration.
Previously the same header could be compiled with the WITH_PERFCOUNTERS flag enadles and disabled (during a single compilation) .
Change 3119502 on 2016/09/09 by Mike.Beach
When building a deterministic UUID for latent nodes, we now use expanded nodes' origin (node) to avoid collisions (latent node in macros, etc.)
#jira UE-35609
Change 3119517 on 2016/09/09 by Ryan.Rauschkolb
Added blueprint editor settings option to display unique names for blueprint nodes
Change 3119602 on 2016/09/09 by Maciej.Mroz
#jira UEBP-214 Implement Solution for Nativized AnimBlueprints Size Reduction
Added stats about nativized AnimBP
Mechanism to exlcude reducible AnimBP
Editor config option:[BlueprintNativizationSettings] bNativizeAnimBPOnlyWhenNonReducibleFuncitons=false
Change 3119615 on 2016/09/09 by Maciej.Mroz
Missing change (should be part of cl#3119602)
Change 3119619 on 2016/09/09 by Maciej.Mroz
#jira UEBP-214 Implement Solution for Nativized AnimBlueprints Size Reduction
Excluding all AnimBP from Orion nativization.
Change 3120752 on 2016/09/12 by Maciej.Mroz
#jira UE-35051 [CrashReport] UE4Editor_BlueprintNativeCodeGen!FBlueprintNativeCodeGenModule::GenerateSingleAsset()
Removed unnecessary ensure
Change 3121354 on 2016/09/12 by Dan.Oconnor
Fixed variable type width, required for TMap's extra combobox.
Change 3121626 on 2016/09/12 by Phillip.Kavan
[UE-35456] Fix crash on right-click in components tree view after copying one or more BSP actors to clipboard.
Note: This applies to the components tree view in both the Blueprint editor and the Level editor's Actor details panel.
change summary:
- modified FComponentObjectTextFactory::CanCreateClass() to exclude Actor/Component subtypes that are not Blueprint-compatible (e.g. ABrush).
#jira UE-35456
Change 3122712 on 2016/09/13 by Maciej.Mroz
#jira UE-35714 [CrashReport] UE4Editor_BlueprintGraph!UK2Node_CallArrayFunction::GetArrayPins() [k2node_callarrayfunction.cpp:141]
Replaced "check" with "ensure".
Change 3124398 on 2016/09/14 by Maciej.Mroz
More strict BP validation in UBlueprintThumbnailRenderer::Draw
#jira UE-35705
Change 3124405 on 2016/09/14 by Maciej.Mroz
#jira UE-35110 Packaged project crashes when playing sound from blueprint library with enum input after nativizing blueprints
Function Libraries are properly added to dependencies list while nativization.
Change 3124667 on 2016/09/14 by Maciej.Mroz
#jira UE-35262 Incompatible pins give generate warning, when error is necessary.
Fixed incompatible pins validation.
Change 3125245 on 2016/09/14 by Phillip.Kavan
[UE-33674] Fix missing stats for the ForEachElementInEnum node type in the Blueprint profiler tree view.
change summary:
- modified FScriptEventPlayback::Process() to not allow intermediate node exit pins to pollute the current trace path
- modified FBlueprintFunctionContext::DetermineGraphNodeCharacteristics() to handle the UK2Node_ForEachElementInEnum type as a special case and account for extra loop iterations in the sample frequency computed at mapping time
- exported UK2Node_ForEachElementInEnum::InsideLoopPinName and EnumOutputPinName string constants
#jira UE-33674
Change 3126211 on 2016/09/15 by Maciej.Mroz
#jira UE-36016 Struct pin can be connected to Object pin without error
Change 3126393 on 2016/09/15 by Maciej.Mroz
#jira UE-35936
Replace "check" by "ensure".
Change 3126623 on 2016/09/15 by Maciej.Mroz
#jira UE-35816 User defined struct array resets to defaults in blueprint after updating the struct
STRUCT_SerializeFromMismatchedTag is not necessary to serialize structure when guids match. Anyway STRUCT_SerializeFromMismatchedTag sholud precede SerializeFromMismatchedTag().
Change 3127288 on 2016/09/15 by Mike.Beach
Making the script VM overhead and native time stats threadsafe (to account for threaded anim Blueprints in Orion).
Change 3127375 on 2016/09/15 by Mike.Beach
Making sure Blueprint classes inherit the super's ClassConfigName properly (inherit the ID instead of the filename).
Change 3127381 on 2016/09/15 by Mike.Beach
Removing an overzealous ensure that certain users were hitting when a loading array property wasn't fully filled out yet (confirmed that it was populated with the proper objects by the end of the load).
Change 3127476 on 2016/09/15 by Dan.Oconnor
Build fix
#jira UE-36073
Change 3128335 on 2016/09/16 by Maciej.Mroz
#jira UE-36075 Odin: BP_DefaultHand and BigBotCharacter blueprints fail to compile
Fixed broken BP assets.
Change 3128589 on 2016/09/16 by Mike.Beach
Fixing a static analysis CIS warning (duplicated condition).
Change 3128630 on 2016/09/16 by Dan.Oconnor
Re-fix with engine version set
Change 3129338 on 2016/09/16 by Dan.Oconnor
=FScriptSet/FScriptSetHelper fleshed out (Add, Remove, and Find implemented)
+SetParam implemented for marking up sets for primitive Set functions (to be checked in once completed as BlueprintSetLibrary)
#jira UE-2114
[CL 3131171 by Mike Beach in Main branch]
2016-09-19 16:14:06 -04:00
if ( GetDefault < UBlueprintEditorSettings > ( ) - > bBlueprintNodeUniqueNames & & GraphNode )
{
return FText : : FromName ( GraphNode - > GetFName ( ) ) ;
}
else
{
return ( GraphNode ! = NULL )
? GraphNode - > GetNodeTitle ( ENodeTitleType : : FullTitle )
: NSLOCTEXT ( " GraphEditor " , " NullNode " , " Null Node " ) ;
}
2014-03-14 14:13:41 -04:00
}
FText SNodeTitle : : GetHeadTitle ( ) const
{
2015-07-20 04:26:18 -04:00
return ( GraphNode & & GraphNode - > bCanRenameNode ) ? GraphNode - > GetNodeTitle ( ENodeTitleType : : EditableTitle ) : CachedHeadTitle ;
2014-03-14 14:13:41 -04:00
}
2015-04-28 11:13:20 -04:00
FVector2D SNodeTitle : : GetTitleSize ( ) const
{
return CachedSize ;
}
2014-03-14 14:13:41 -04:00
void SNodeTitle : : RebuildWidget ( )
{
// Create the box to contain the lines
TSharedPtr < SVerticalBox > VerticalBox ;
this - > ChildSlot
[
SAssignNew ( VerticalBox , SVerticalBox )
] ;
// Break the title into lines
TArray < FString > Lines ;
2015-04-10 14:37:56 -04:00
const FString CachedTitleString = NodeTitleCache . GetCachedText ( ) . ToString ( ) . Replace ( TEXT ( " \r " ) , TEXT ( " " ) ) ;
2015-03-02 15:51:37 -05:00
CachedTitleString . ParseIntoArray ( Lines , TEXT ( " \n " ) , false ) ;
2014-03-14 14:13:41 -04:00
2014-09-15 19:53:19 -04:00
if ( Lines . Num ( ) )
2014-03-14 14:13:41 -04:00
{
CachedHeadTitle = FText : : FromString ( Lines [ 0 ] ) ;
}
2014-09-15 19:53:19 -04:00
// Pad the height of multi-line node titles to be a multiple of the graph snap grid taller than
// single-line nodes, so the pins will still line up if you place the node N cell snaps above
if ( Lines . Num ( ) > 1 )
{
// Note: This code a little fragile, and will need to be updated if the font or padding of titles
// changes in the future, but the failure mode is just a slight misalignment.
const int32 EstimatedExtraHeight = ( Lines . Num ( ) - 1 ) * 13 ;
const int32 SnapSize = ( int32 ) SNodePanel : : GetSnapGridSize ( ) ;
const int32 PadSize = SnapSize - ( EstimatedExtraHeight % SnapSize ) ;
if ( PadSize < SnapSize )
{
VerticalBox - > AddSlot ( )
[
SNew ( SSpacer )
. Size ( FVector2D ( 1.0f , PadSize ) )
] ;
}
}
2014-03-14 14:13:41 -04:00
// Make a separate widget for each line, using a less obvious style for subsequent lines
for ( int32 Index = 1 ; Index < Lines . Num ( ) ; + + Index )
{
VerticalBox - > AddSlot ( )
. AutoHeight ( )
[
SNew ( STextBlock )
. TextStyle ( FEditorStyle : : Get ( ) , ExtraLineStyle )
2015-01-07 09:52:40 -05:00
. Text ( FText : : FromString ( Lines [ Index ] ) )
2014-03-14 14:13:41 -04:00
] ;
}
}
/////////////////////////////////////////////////////
// SGraphNode
// Check whether drag and drop functionality is permitted on the given node
bool SGraphNode : : CanAllowInteractionUsingDragDropOp ( const UEdGraphNode * GraphNodePtr , const TSharedPtr < FActorDragDropOp > & DragDropOp )
{
bool bReturn = false ;
//Allow interaction only if this node is a literal type object.
//Only change actor reference if a single actor reference is dragged from the outliner.
if ( GraphNodePtr - > IsA ( UK2Node_Literal : : StaticClass ( ) ) & & DragDropOp - > Actors . Num ( ) = = 1 )
{
bReturn = true ;
}
return bReturn ;
}
void SGraphNode : : SetIsEditable ( TAttribute < bool > InIsEditable )
{
IsEditable = InIsEditable ;
}
2014-06-18 05:04:59 -04:00
bool SGraphNode : : IsNodeEditable ( ) const
{
2014-06-18 14:17:13 -04:00
bool bIsEditable = OwnerGraphPanelPtr . IsValid ( ) ? OwnerGraphPanelPtr . Pin ( ) - > IsGraphEditable ( ) : true ;
return IsEditable . Get ( ) & & bIsEditable ;
2014-06-18 05:04:59 -04:00
}
2014-03-14 14:13:41 -04:00
/** Set event when node is double clicked */
void SGraphNode : : SetDoubleClickEvent ( FSingleNodeEvent InDoubleClickEvent )
{
OnDoubleClick = InDoubleClickEvent ;
}
void SGraphNode : : SetVerifyTextCommitEvent ( FOnNodeVerifyTextCommit InOnVerifyTextCommit )
{
OnVerifyTextCommit = InOnVerifyTextCommit ;
}
void SGraphNode : : SetTextCommittedEvent ( FOnNodeTextCommitted InOnTextCommitted )
{
OnTextCommitted = InOnTextCommitted ;
}
2015-04-28 04:58:34 -04:00
void SGraphNode : : OnCommentTextCommitted ( const FText & NewComment , ETextCommit : : Type CommitInfo )
{
GetNodeObj ( ) - > OnUpdateCommentText ( NewComment . ToString ( ) ) ;
}
2015-05-29 15:18:47 -04:00
void SGraphNode : : OnCommentBubbleToggled ( bool bInCommentBubbleVisible )
2015-05-29 09:56:42 -04:00
{
2015-05-29 15:18:47 -04:00
GetNodeObj ( ) - > OnCommentBubbleToggled ( bInCommentBubbleVisible ) ;
2015-05-29 09:56:42 -04:00
}
2014-03-14 14:13:41 -04:00
void SGraphNode : : SetDisallowedPinConnectionEvent ( SGraphEditor : : FOnDisallowedPinConnection InOnDisallowedPinConnection )
{
OnDisallowedPinConnection = InOnDisallowedPinConnection ;
}
void SGraphNode : : OnDragEnter ( const FGeometry & MyGeometry , const FDragDropEvent & DragDropEvent )
{
2014-04-23 18:00:50 -04:00
TSharedPtr < FDragDropOperation > Operation = DragDropEvent . GetOperation ( ) ;
if ( ! Operation . IsValid ( ) )
{
return ;
}
2014-03-14 14:13:41 -04:00
// Is someone dragging a connection?
2014-04-23 18:00:50 -04:00
if ( Operation - > IsOfType < FGraphEditorDragDropAction > ( ) )
2014-03-14 14:13:41 -04:00
{
// Inform the Drag and Drop operation that we are hovering over this pin.
2014-04-23 18:00:50 -04:00
TSharedPtr < FGraphEditorDragDropAction > DragConnectionOp = StaticCastSharedPtr < FGraphEditorDragDropAction > ( Operation ) ;
2014-03-14 14:13:41 -04:00
DragConnectionOp - > SetHoveredNode ( SharedThis ( this ) ) ;
}
2014-04-23 18:00:50 -04:00
else if ( Operation - > IsOfType < FActorDragDropGraphEdOp > ( ) )
2014-03-14 14:13:41 -04:00
{
2014-04-23 18:00:50 -04:00
TSharedPtr < FActorDragDropGraphEdOp > DragConnectionOp = StaticCastSharedPtr < FActorDragDropGraphEdOp > ( Operation ) ;
2014-03-14 14:13:41 -04:00
if ( GraphNode - > IsA ( UK2Node_Literal : : StaticClass ( ) ) )
{
//Show tool tip only if a single actor is dragged
if ( DragConnectionOp - > Actors . Num ( ) = = 1 )
{
UK2Node_Literal * LiteralNode = CastChecked < UK2Node_Literal > ( GraphNode ) ;
//Check whether this node is already referencing the same actor dragged from outliner
if ( LiteralNode - > GetObjectRef ( ) ! = DragConnectionOp - > Actors [ 0 ] . Get ( ) )
{
DragConnectionOp - > SetToolTip ( FActorDragDropGraphEdOp : : ToolTip_Compatible ) ;
}
}
else
{
//For more that one actor dragged on to a literal node, show tooltip as incompatible
DragConnectionOp - > SetToolTip ( FActorDragDropGraphEdOp : : ToolTip_MultipleSelection_Incompatible ) ;
}
}
else
{
DragConnectionOp - > SetToolTip ( ( DragConnectionOp - > Actors . Num ( ) = = 1 ) ? FActorDragDropGraphEdOp : : ToolTip_Incompatible : FActorDragDropGraphEdOp : : ToolTip_MultipleSelection_Incompatible ) ;
}
}
2014-04-23 18:00:50 -04:00
else if ( Operation - > IsOfType < FBoneDragDropOp > ( ) )
2014-03-14 14:13:41 -04:00
{
//@TODO: A2REMOVAL: No support for A3 nodes handling this drag-drop op yet!
}
}
void SGraphNode : : OnDragLeave ( const FDragDropEvent & DragDropEvent )
{
2014-04-23 18:00:50 -04:00
TSharedPtr < FDragDropOperation > Operation = DragDropEvent . GetOperation ( ) ;
if ( ! Operation . IsValid ( ) )
{
return ;
}
2014-03-14 14:13:41 -04:00
// Is someone dragging a connection?
2014-04-23 18:00:50 -04:00
if ( Operation - > IsOfType < FGraphEditorDragDropAction > ( ) )
2014-03-14 14:13:41 -04:00
{
// Inform the Drag and Drop operation that we are not hovering any pins
2014-04-23 18:00:50 -04:00
TSharedPtr < FGraphEditorDragDropAction > DragConnectionOp = StaticCastSharedPtr < FGraphEditorDragDropAction > ( Operation ) ;
2014-03-14 14:13:41 -04:00
DragConnectionOp - > SetHoveredNode ( TSharedPtr < SGraphNode > ( NULL ) ) ;
}
2014-04-23 18:00:50 -04:00
else if ( Operation - > IsOfType < FActorDragDropGraphEdOp > ( ) )
2014-03-14 14:13:41 -04:00
{
//Default tool tip
2014-04-23 18:00:50 -04:00
TSharedPtr < FActorDragDropGraphEdOp > DragConnectionOp = StaticCastSharedPtr < FActorDragDropGraphEdOp > ( Operation ) ;
2014-03-14 14:13:41 -04:00
DragConnectionOp - > ResetToDefaultToolTip ( ) ;
}
2014-04-23 18:00:50 -04:00
else if ( Operation - > IsOfType < FAssetDragDropOp > ( ) )
2014-03-14 14:13:41 -04:00
{
2014-04-23 18:00:50 -04:00
TSharedPtr < FAssetDragDropOp > AssetOp = StaticCastSharedPtr < FAssetDragDropOp > ( Operation ) ;
2014-03-14 14:13:41 -04:00
AssetOp - > ResetToDefaultToolTip ( ) ;
}
2014-04-23 18:00:50 -04:00
else if ( Operation - > IsOfType < FBoneDragDropOp > ( ) )
2014-03-14 14:13:41 -04:00
{
//@TODO: A2REMOVAL: No support for A3 nodes handling this drag-drop op yet!
}
}
FReply SGraphNode : : OnDragOver ( const FGeometry & MyGeometry , const FDragDropEvent & DragDropEvent )
{
2014-04-23 18:00:50 -04:00
TSharedPtr < FAssetDragDropOp > AssetOp = DragDropEvent . GetOperationAs < FAssetDragDropOp > ( ) ;
if ( AssetOp . IsValid ( ) )
2014-03-14 14:13:41 -04:00
{
if ( GraphNode ! = NULL & & GraphNode - > GetSchema ( ) ! = NULL )
{
bool bOkIcon = false ;
FString TooltipText ;
GraphNode - > GetSchema ( ) - > GetAssetsNodeHoverMessage ( AssetOp - > AssetData , GraphNode , TooltipText , bOkIcon ) ;
2014-06-18 05:04:59 -04:00
bool bReadOnly = OwnerGraphPanelPtr . IsValid ( ) ? ! OwnerGraphPanelPtr . Pin ( ) - > IsGraphEditable ( ) : false ;
bOkIcon = bReadOnly ? false : bOkIcon ;
2014-03-14 14:13:41 -04:00
const FSlateBrush * TooltipIcon = bOkIcon ? FEditorStyle : : GetBrush ( TEXT ( " Graph.ConnectorFeedback.OK " ) ) : FEditorStyle : : GetBrush ( TEXT ( " Graph.ConnectorFeedback.Error " ) ) ; ;
2014-04-23 17:55:20 -04:00
AssetOp - > SetToolTip ( FText : : FromString ( TooltipText ) , TooltipIcon ) ;
2014-03-14 14:13:41 -04:00
}
return FReply : : Handled ( ) ;
}
return FReply : : Unhandled ( ) ;
}
/** Given a coordinate in SGraphPanel space (i.e. panel widget space), return the same coordinate in graph space while taking zoom and panning into account */
FVector2D SGraphNode : : NodeCoordToGraphCoord ( const FVector2D & NodeSpaceCoordinate ) const
{
TSharedPtr < SGraphPanel > OwnerCanvas = OwnerGraphPanelPtr . Pin ( ) ;
if ( OwnerCanvas . IsValid ( ) )
{
//@TODO: NodeSpaceCoordinate != PanelCoordinate
FVector2D PanelSpaceCoordinate = NodeSpaceCoordinate ;
return OwnerCanvas - > PanelCoordToGraphCoord ( PanelSpaceCoordinate ) ;
}
else
{
return FVector2D : : ZeroVector ;
}
}
FReply SGraphNode : : OnDrop ( const FGeometry & MyGeometry , const FDragDropEvent & DragDropEvent )
{
2014-06-18 05:04:59 -04:00
bool bReadOnly = OwnerGraphPanelPtr . IsValid ( ) ? ! OwnerGraphPanelPtr . Pin ( ) - > IsGraphEditable ( ) : false ;
2014-04-23 18:00:50 -04:00
TSharedPtr < FDragDropOperation > Operation = DragDropEvent . GetOperation ( ) ;
2014-06-18 05:04:59 -04:00
if ( ! Operation . IsValid ( ) | | bReadOnly )
2014-03-14 14:13:41 -04:00
{
2014-04-23 18:00:50 -04:00
return FReply : : Unhandled ( ) ;
}
// Is someone dropping a connection onto this node?
if ( Operation - > IsOfType < FGraphEditorDragDropAction > ( ) )
{
TSharedPtr < FGraphEditorDragDropAction > DragConnectionOp = StaticCastSharedPtr < FGraphEditorDragDropAction > ( Operation ) ;
2014-03-14 14:13:41 -04:00
const FVector2D NodeAddPosition = NodeCoordToGraphCoord ( MyGeometry . AbsoluteToLocal ( DragDropEvent . GetScreenSpacePosition ( ) ) ) ;
FReply Result = DragConnectionOp - > DroppedOnNode ( DragDropEvent . GetScreenSpacePosition ( ) , NodeAddPosition ) ;
if ( Result . IsEventHandled ( ) & & ( GraphNode ! = NULL ) )
{
GraphNode - > GetGraph ( ) - > NotifyGraphChanged ( ) ;
}
return Result ;
}
2014-04-23 18:00:50 -04:00
else if ( Operation - > IsOfType < FActorDragDropGraphEdOp > ( ) )
2014-03-14 14:13:41 -04:00
{
2014-04-23 18:00:50 -04:00
TSharedPtr < FActorDragDropGraphEdOp > DragConnectionOp = StaticCastSharedPtr < FActorDragDropGraphEdOp > ( Operation ) ;
2014-03-14 14:13:41 -04:00
if ( CanAllowInteractionUsingDragDropOp ( GraphNode , DragConnectionOp ) )
{
UK2Node_Literal * LiteralNode = CastChecked < UK2Node_Literal > ( GraphNode ) ;
//Check whether this node is already referencing the same actor
if ( LiteralNode - > GetObjectRef ( ) ! = DragConnectionOp - > Actors [ 0 ] . Get ( ) )
{
//Replace literal node's object reference
LiteralNode - > SetObjectRef ( DragConnectionOp - > Actors [ 0 ] . Get ( ) ) ;
2014-08-14 15:49:56 -04:00
UBlueprint * Blueprint = FBlueprintEditorUtils : : FindBlueprintForGraph ( CastChecked < UEdGraph > ( GraphNode - > GetOuter ( ) ) ) ;
2014-08-14 15:50:32 -04:00
if ( Blueprint ! = nullptr )
{
FBlueprintEditorUtils : : MarkBlueprintAsModified ( Blueprint ) ;
}
2014-03-14 14:13:41 -04:00
}
}
return FReply : : Handled ( ) ;
}
2014-04-23 18:00:50 -04:00
else if ( Operation - > IsOfType < FAssetDragDropOp > ( ) )
2014-03-14 14:13:41 -04:00
{
UEdGraphNode * Node = GetNodeObj ( ) ;
if ( Node ! = NULL & & Node - > GetSchema ( ) ! = NULL )
{
2014-04-23 18:00:50 -04:00
TSharedPtr < FAssetDragDropOp > AssetOp = StaticCastSharedPtr < FAssetDragDropOp > ( Operation ) ;
2014-03-14 14:13:41 -04:00
Node - > GetSchema ( ) - > DroppedAssetsOnNode ( AssetOp - > AssetData , DragDropEvent . GetScreenSpacePosition ( ) , Node ) ;
}
return FReply : : Handled ( ) ;
}
2014-04-23 18:00:50 -04:00
else if ( Operation - > IsOfType < FBoneDragDropOp > ( ) )
2014-03-14 14:13:41 -04:00
{
//@TODO: A2REMOVAL: No support for A3 nodes handling this drag-drop op yet!
}
return FReply : : Unhandled ( ) ;
}
/**
* The system calls this method to notify the widget that a mouse button was pressed within it . This event is bubbled .
*
* @ param MyGeometry The Geometry of the widget receiving the event
* @ param MouseEvent Information about the input event
*
* @ return Whether the event was handled along with possible requests for the system to take action .
*/
FReply SGraphNode : : OnMouseButtonDown ( const FGeometry & MyGeometry , const FPointerEvent & MouseEvent )
{
return FReply : : Unhandled ( ) ;
}
// The system calls this method to notify the widget that a mouse button was release within it. This event is bubbled.
FReply SGraphNode : : OnMouseButtonUp ( const FGeometry & MyGeometry , const FPointerEvent & MouseEvent )
{
return FReply : : Unhandled ( ) ;
}
// Called when a mouse button is double clicked. Override this in derived classes
FReply SGraphNode : : OnMouseButtonDoubleClick ( const FGeometry & InMyGeometry , const FPointerEvent & InMouseEvent )
{
2014-04-02 18:09:23 -04:00
if ( InMouseEvent . IsMouseButtonDown ( EKeys : : LeftMouseButton ) )
{
OnDoubleClick . ExecuteIfBound ( GraphNode ) ;
return FReply : : Handled ( ) ;
}
return FReply : : Unhandled ( ) ;
2014-03-14 14:13:41 -04:00
}
Slate: Refactored core Slate implementation into SlateCore module in preparation for UMG.
Other Updates:
- The WidgetReflector is now in its own module as well. It will be converted to a plug-in later.
- The Public API of both Slate and SlateCore has largely been reorganized for better discoverabilty. More cleanup work is needed.
- Added a lot of missing API documentation and fixed existing ones. More and better documentation is needed.
- Removed dead code, fixed a couple things I stubled upon, and conformed to coding guidelines (NULL vs nullptr, line breaks, etc.)
Upgrade Notes:
- The Slate Remote Server is currently disabled - will be re-enabled shortly!
- If your module previously had a module dependency to 'Slate', it now also needs a PrivateModuleDependency to 'SlateCore' in its Build.cs file.
- If your module exposes in any of its Public header files types that are now declared in SlateCore, it needs a PublicModuleDependency to 'SlateCore'
- The ToolTip property type on SWidget has changed from SToolTip to IToolTip; change local variables to TSharedPtr<IToolTip> instead of TSharedPtr<SToolTip> where needed
- IToolTip is not a widget. If you need access to the actual widget that represents the tool tip, use IToolTip::AsWidget(); If you need access to the tool tip's content, use IToolTip::GetContentWidget()
Troubleshooting:
- After syncing to this changelist you may have to clean your /Engine/Intermediate/Build/ directory and rebuild your entire project
- If in your project you are getting linker errors for unresolved types that are now declared in SlateCore, you may be missing a dependency to 'SlateCore'
- If in the Engine code you are getting linker errors for unresolved types that are now declared in SlateCore, you may need to rebuild the entire Engine
[CL 2057118 by Max Preussner in Main branch]
2014-04-26 15:07:24 -04:00
TSharedPtr < IToolTip > SGraphNode : : GetToolTip ( )
2014-03-14 14:13:41 -04:00
{
Slate: Refactored core Slate implementation into SlateCore module in preparation for UMG.
Other Updates:
- The WidgetReflector is now in its own module as well. It will be converted to a plug-in later.
- The Public API of both Slate and SlateCore has largely been reorganized for better discoverabilty. More cleanup work is needed.
- Added a lot of missing API documentation and fixed existing ones. More and better documentation is needed.
- Removed dead code, fixed a couple things I stubled upon, and conformed to coding guidelines (NULL vs nullptr, line breaks, etc.)
Upgrade Notes:
- The Slate Remote Server is currently disabled - will be re-enabled shortly!
- If your module previously had a module dependency to 'Slate', it now also needs a PrivateModuleDependency to 'SlateCore' in its Build.cs file.
- If your module exposes in any of its Public header files types that are now declared in SlateCore, it needs a PublicModuleDependency to 'SlateCore'
- The ToolTip property type on SWidget has changed from SToolTip to IToolTip; change local variables to TSharedPtr<IToolTip> instead of TSharedPtr<SToolTip> where needed
- IToolTip is not a widget. If you need access to the actual widget that represents the tool tip, use IToolTip::AsWidget(); If you need access to the tool tip's content, use IToolTip::GetContentWidget()
Troubleshooting:
- After syncing to this changelist you may have to clean your /Engine/Intermediate/Build/ directory and rebuild your entire project
- If in your project you are getting linker errors for unresolved types that are now declared in SlateCore, you may be missing a dependency to 'SlateCore'
- If in the Engine code you are getting linker errors for unresolved types that are now declared in SlateCore, you may need to rebuild the entire Engine
[CL 2057118 by Max Preussner in Main branch]
2014-04-26 15:07:24 -04:00
TSharedPtr < IToolTip > CurrentTooltip = SWidget : : GetToolTip ( ) ;
2014-03-14 14:13:41 -04:00
if ( ! CurrentTooltip . IsValid ( ) )
{
TSharedPtr < SToolTip > ComplexTooltip = GetComplexTooltip ( ) ;
if ( ComplexTooltip . IsValid ( ) )
{
SetToolTip ( ComplexTooltip ) ;
bProvidedComplexTooltip = true ;
}
}
return SWidget : : GetToolTip ( ) ;
}
void SGraphNode : : OnToolTipClosing ( )
{
if ( bProvidedComplexTooltip )
{
SetToolTip ( NULL ) ;
bProvidedComplexTooltip = false ;
}
}
void SGraphNode : : Tick ( const FGeometry & AllottedGeometry , const double InCurrentTime , const float InDeltaTime )
{
CachedUnscaledPosition = AllottedGeometry . AbsolutePosition / AllottedGeometry . Scale ;
SNodePanel : : SNode : : Tick ( AllottedGeometry , InCurrentTime , InDeltaTime ) ;
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
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3380068)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3358702 on 2017/03/22 by Marc.Audy
Always mark child actors pending kill when in PostLoad as often the World is too early to have a WorldContext which causes issues in DestroyActor
#jira UE-42679
Change 3358737 on 2017/03/22 by Mieszko.Zielinski
Exposed UBrainComponent::IsRunning() and UBrainComponent::IsPaused() to Blueprint #UE4
Change 3359062 on 2017/03/22 by Michael.Noland
Blueprints: Show the Save and Find in CB buttons when working with level script blueprints (they will save/show the map package)
#jira UE-30748
Change 3359066 on 2017/03/22 by Michael.Noland
PR #3348: Make fields of FAttributeMetaData editable (Contributed by hoelzl)
#jira UE-42620
Change 3359069 on 2017/03/22 by Michael.Noland
PR #3288: InverseLerp Blueprint Tooltips Clarification (Contributed by wunawuna)
#jira UE-42250
Change 3359108 on 2017/03/22 by Michael.Noland
Blueprints: Fix an issue where running the editor in a different culture could break pins on nodes that have optional arrays of pins (e.g., animation graph nodes like blend by layer)
#jira UE-36232
Change 3359235 on 2017/03/22 by Marc.Audy
Expose bShouldPerformFullTickWhenPaused to blueprints and details panel
#jira UE-17286
Change 3359324 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Disable collision on NavModifierVolumes. Previously they had an OverlapAll response and generated overlap events. They are only supposed to be used for preventing nav mesh generation, but overlap events could affect gameplay, and also are bad for performance.
(Integrate CL 3249525 from Odin).
Change 3359326 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Optimization during attachment to check bool before expensive casts and body instance fetching.
(Integrate CL 3261262 from Odin).
Change 3359327 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Make bSkipAgentHeightCheckWhenPickingNavData actually ignore height when picking data.
(Integrate CL 3231908 from Odin)
Change 3359328 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Make a static FName in UMovementComponent::OverlapTest const and move it to a namespace.
(Integrate CL 3259985 from Odin)
Change 3359329 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Fix ProjectileMovementComponent continuing to simulate (and generate hit events) after it is deactivated during simulation. HasStoppedSimulation() should check if bIsActive is false.
(Integrate CL 3260001 from Odin)
Change 3359330 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Fix accumulated forces in CharacterMovement when movement mode or activation changes.
- Added CharacterMovementComponent::ClearAccumulatedForces()
- AddForce() and related functions now avoid adding the force if in MovementMode "None". When ticking in "None", forces are cleared so they don't pile up until the next valid movement mode. Forces are also cleared if the updated component changes or when the capsule simulates physics.
- CharacterMovementComponent::Deactivate() implemented to stop movement and call ClearAccumulatedForces().
- ClearAccumulatedForces() now also clears pending launch velocity.
- Exposed ClearAccumulatedForces() to blueprints.
- AddForce() and AddImpulse() now also check that character movement is active (not deactivated, able to tick).
- ApplyAccumulatedForces() does not call ClearAccumulatedForces(), since that would prevent pending launch.
- SimulateMovement() handles pending launch and clears forces regardless of whether it's simulated proxy. Added note to investigate using ApplyAccumulatedForces() in SimulateMovement().
- Inlined ActorComponent::IsActive().
(Integrate CLs 3259933, 3266018 from Odin)
Change 3359338 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) TickCharacterPose() and clear root motion before abandoning tick in UCharacterMovementComponent::PerformMovement() when movement mode is None. Prevents root motion building up until next valid movement mode.
(Integrate CL 3271928 from Odin)
Change 3359345 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Fix characters sliding when landing on slanted surfaces or stairs, when aggressive "Perch" settings could cause a line trace (from the center of a capsule) instead of capsule trace and thereby screw up the floor distance checks.
(Integrate CL 3273026 from Odin)
Change 3359381 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Performance tweak to ApplyRadialDamageWithFalloff(). Don't rebuild FRadialDamageEvent each loop over hit actors. Added stats for BreakHitResult()/MakeHitResult() under "stat game".
(Integrate CLs 3275415, 3276810 from Odin).
Change 3359422 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Fix build (CollisionProfile included).
Change 3359442 on 2017/03/22 by Michael.Noland
Blueprints: Prevent comment boxes from clipping the last letter of some words at the edge by increasing the padding on the wrap-at position
Change 3359445 on 2017/03/22 by Michael.Noland
PR #2989: Improved BP comment nodes (Contributed by projectgheist)
#jira UE-36788
#jira UE-39118
Change 3359446 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Add support for FScopedMovementUpdate to be able to queue up overlaps that do not require reflexive bGenerateOverlapEvents. This allows custom inspection or processing of overlaps within a scoped move. Overlap events from the move will still only trigger in UpdateOverlaps() if bGenerateOverlapEvents is enabled on both components, as before.
(Integrate CL 3278307 from Odin)
Change 3359494 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Make some data in FScopedMovementUpdate protected rather than private so it can easily be subclassed, and expose a new helper SetWorldLocationAndRotation().
(Integrated CL 3280775 from Odin).
Change 3359506 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) MovementComponent::Deactivate() calls StopMovement() to clear cached velocity. It's silly that reactivation many seconds or frames later would restore that velocity. Some special handling in CharacterMovement to keep it acting as before (it cleared velocity, but did not clear the path request, leaving that alone).
(Integrate CL 3287026 from Odin).
Change 3359514 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Collision.ListComponentsWithResponseToProfile command includes pending kill objects.
(Integrate CL 3293322 from Odin)
Change 3359553 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Optimization in CharacterMovement tick to not extract transform values twice.
(Integrate CL 3299098 from Odin).
Change 3359554 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Perf: optimize UKismetMathLibrary::GetForwardVector() (converts Rotator to forward direction). This way we avoid building a matrix, and avoids 1 more SinCos call.
(Integrate CL 3296254 from Odin).
Change 3359555 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Add OnComponentCollisionSettingsChangedEvent delegate to PrimitiveComponent. Fixed SkeletalMeshComponent not calling Super implementation.
(Integrate CL 3295744 from Odin)
Change 3359561 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Perf: AActor::GetComponents() with generic type should *not* assume the output array needs space for the entire contents of OwnedComponents. If OwnedComponents.Num() > the array reserve size, this forces an allocation, even if few or no components of the requested type are found.
(Integrate CL 3299111 from Odin)
Change 3359573 on 2017/03/22 by dan.reynolds
Added BP log to the Passive Mix Modifier test platform BP
Change 3359593 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Perf: avoid allocations during creation in AAIController::PostInitializeComponents() (in development builds).
(Integrate CL 3299118 from Odin)
Change 3359595 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Perf: HasActiveCameraComponent() and HasActivePawnControlCameraComponent() don't need to fill in an array while searching for a certain component. Also see CL 3359561, which could cause each of these functions to always cause an allocation when filling in the array when num components > 24.
(Integrate CL 3299116 from Odin)
Change 3359602 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Clean up some of the new fast overlap code in PrimitiveComponent. Mostly some variable renaming, and CVar access optimization.
(Integrate CL 3340622 from Odin)
Change 3359616 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Added support for bIgnoreTouches to FCollisionQueryParams. MoveComponent uses this to avoid PhysX collision queries for overlaps in GeomSweepMulti when bGenerateOverlapEvents is off.
(Integrate CL 3340635 from Odin)
Change 3359864 on 2017/03/23 by Mieszko.Zielinski
Added a safeguard to prevent crashes resulting from people trying to name their BB keys things longer than 1024 characters #UE4
#jira UE-43120
Change 3360884 on 2017/03/23 by Zak.Middleton
#ue4 - (Merge) Audio: AUDIO_MIXER_ENABLE_DEBUG_MODE turned off in Test builds. Shipping already had it off.
(Integrate CL 3310724 from Odin)
Change 3361045 on 2017/03/23 by Zak.Middleton
#ue4 - (Merge) Audio: new cvars to help with optimization:
- au.DisableReverbSubmix
- au.DisableEQSubmix
- au.DisableParallelSourceProcessing
- au.SetAudioChannelCount
Also checked in some code to cut down on the amount of parameter setting in EQ
(Integrate of CL 3303165 in Odin by Aaron.Mcleran)
Change 3361172 on 2017/03/23 by Zak.Middleton
#ue4 - (Merge) Audio: added stat for HRTF.
(Integrate CL 3310728 from Odin)
Change 3361189 on 2017/03/23 by Zak.Middleton
#ue4 - (Merge) CVar to toggle HRTF for perf settings. Default is on.
(Integrate CL 3310926 from Odin).
Change 3361914 on 2017/03/23 by Aaron.McLeran
UE-42649 Fixing crash in cleaning up active sound in sound concurrency
-Handling edge case of an active sound not have a sound base ptr, which is possible.
Change 3361924 on 2017/03/23 by Aaron.McLeran
UE-41378 Fixing passive mix modifier bug
Change 3361978 on 2017/03/23 by Aaron.McLeran
UE-42627 Fix for when audio device is removed and getting a deadlock in computing audio clock
Change 3361989 on 2017/03/23 by Aaron.McLeran
PR #3010: Check for null GEngine on sound processing
Change 3362053 on 2017/03/23 by Zak.Middleton
#ue4 - (Merge) Audio: Perf: Avoid thousands of Array.Add() calls during processing, which on shipping still does checks to see if the allocator has to grow, and updates ArrayCount.
(Integrate CL 3311120 from Odin)
Change 3362102 on 2017/03/23 by Aaron.McLeran
PR #3182: Enabled SwitchOnEnum nodes for EAttenuationShape and EAttenuationDistanceModel
Change 3362153 on 2017/03/23 by Aaron.McLeran
UE-43286 Oculus audio plugin not working/available
Change 3362162 on 2017/03/23 by Aaron.McLeran
UE-42252 Frequent ensure in FLevelEditorViewportClient::UpdateAudioListener
Change 3362206 on 2017/03/23 by Aaron.McLeran
UE-43287 Fixing HRTF spatialization in editor viewport
- Steam Audio doesn't support multiple audio devices at the moment
- Instead of hard-coding all audio plugins to not work in main audio device (GDC temp fix), I allow audio plugins to specify if they should be used on main audio device
Change 3362775 on 2017/03/24 by mason.seay
Replaced deprecated node
Change 3363024 on 2017/03/24 by Ben.Zeigler
Fix regression in behavior of streamable manager where loading both a valid and null asset used to work but now fails. Instead added a warning for that case, but if only null are requested it still fails with an error
Change 3363030 on 2017/03/24 by Zak.Middleton
#ue4 - Lower default max sendrate for clients to 60Hz from 90Hz when net speed is high and player count is low. Throttled rate remains at 45Hz. This value has been tested in Paragon with no ill effect, and saves on bandwidth and server CPU when clients run at high framerate.
Change 3363036 on 2017/03/24 by Zak.Middleton
#ue4 - (Merge) Audio: Perf: turned a float divide into a multiply. It happens at least 32k times per audio update.
(Integrate CL 3311158 from Odin)
Change 3363541 on 2017/03/24 by Zak.Middleton
#ue4 - (Merge) Audio: Perf: remove pointer indirection, and successive TArray Add()s in GetChannelMap().
(Integrate CL 3311169 from Odin)
Change 3363642 on 2017/03/24 by Zak.Middleton
#ue4 - (Merge) Audio: Perf: Save ~5% total audio update time. Savings in "Source Output Buffers".
- Removed function call overhead to updating channel map. 64,000 function calls...
- Simplified FSourceParam::Update() to reduce branching and have 1 return site.
- Added alternative to GetChannelMap() called UpdateChannelMap() that avoids copying out values to an array. The values can then be fetched from the channel data directly.
(Integrate CL 3311235 from Odin)
Change 3364441 on 2017/03/24 by Ben.Zeigler
Fix issue where calling LoadLocalIniFile on a plugin file would result in an empty file. It was assuming engine/game dirs, now it instead pulls it out of GConfig if available.
This fixes issue where iterative cooking would fail on plugin config files
Add FindConfigFileWithBaseName to GConfig
Change 3364652 on 2017/03/25 by Phillip.Kavan
#jira UE-43210 - Fix a runtime VM crash upon removing an element from a set after consecutive add/remove iterations.
Change summary:
- Fixed FScriptSet::Add() to initialize the HashIndex member of the new element when the HashSize does not change.
Change 3365609 on 2017/03/27 by Richard.Hinckley
#jira UEDOC-4720
Fixed global enums being dropped from documentation after being extracted by Doxygen.
Change 3365737 on 2017/03/27 by Marc.Audy
Move setting of the ParentComponent property on an actor to PostRepNotifies instead of having a separate OnRep function.
Change 3365795 on 2017/03/27 by Marc.Audy
Fix compile error
Change 3365894 on 2017/03/27 by Phillip.Kavan
#jira UE-35507 - Fix for a GLEO when choosing an LSBP class as the default value for a class input pin in a non-LSBP graph.
Change summary:
- Modified FGraphPinFilter::IsClassAllowed() to disallow a given class if the type is contained within a map package that does not match the current graph context.
Change 3366067 on 2017/03/27 by Marc.Audy
Add UWorld* to PostLoadMap indicating which world has been loaded. Null if an error has occurred.
#jira UE-40228
Change 3366097 on 2017/03/27 by Marc.Audy
Fixed missed deprecation disable pairing for PostLadMap
Change 3366170 on 2017/03/27 by Aaron.McLeran
Fixing div by zero
Change 3366221 on 2017/03/27 by Aaron.McLeran
UE-43240 Removing dependency on component visualizers in runtime Phonon module.
Change 3366698 on 2017/03/27 by Marc.Audy
Fix Orion compile errors
Change 3366782 on 2017/03/27 by Aaron.McLeran
Bringing over optimizations from Odin to Dev-framework.
Original CL 3311435
Change 3366818 on 2017/03/27 by Aaron.McLeran
Bringing fix from Odin to Dev-Framework from CL 3304533
Fix for rare condition that stomps memory during source recycling.
Change 3366984 on 2017/03/27 by Michael.Noland
Blueprints: Downgraded a warning in the connection drawing policy to verbose to suppress it. It does no good to a typical user.
#jira UE-41638
Change 3367085 on 2017/03/27 by Brent.Pease
- Improve AudioMixer buffering so that only two buffers are needed instead of three, buffer submission and buffer processing are ovelapped, and a warning is issued if the audio processing thread can not keep up.
- Added time critical thread priority so that audio processing is not starved which would produce clicks and popping
- Allow the audio thread to not be created if a platform implements its own BeginGeneratingAudio() call (as happens on Android)
Change 3367434 on 2017/03/28 by Marc.Audy
Fix UT compile error
Change 3368587 on 2017/03/28 by Mike.Beach
Adding a "CookedOnly" plugin type (now used by the nativized Blueprint plugin).
Change 3368724 on 2017/03/28 by Zak.Middleton
#ue4 - MovementComponent does not ignore initial blocking overlaps when moving from SafeMoveUpdatedComponent(). Set "p.MoveIgnoreFirstBlockingOverlap" back to zero and add a new flag that prevents the depenetration test from generating hit events (to prevent the problem discovered in UE-39387).
#jira UE-41613, UE-28610
Change 3368748 on 2017/03/28 by Dan.Oconnor
Provide &FUObjectThreadContext::Get().ObjLoaded when using the compilation manager, add validation functions for finding REINST/TRASH references
Change 3368852 on 2017/03/28 by Mike.Beach
Fixing a CIS error before it happens - wrapping implementation in preprocessor defines to match declaration in header.
Change 3368873 on 2017/03/28 by Dan.Oconnor
Rather than collecting script object references, just use the ScriptObjectReferences array. This allows reference replacing archives to update ScriptObjectReferences.
Change 3368998 on 2017/03/28 by Dan.Oconnor
Setting CLASS_Interface early in the compilation process
Change 3369494 on 2017/03/29 by Marc.Audy
Fix UAT compile error
Change 3369924 on 2017/03/29 by Zak.Middleton
#ue4 - Allow CharacterMovement AdjustFloorHeight() to adjust using the line trace if in penetration. Force next floor check so it will check after it depenetrates.
#jira UE-36973
Change 3369932 on 2017/03/29 by Ben.Zeigler
#jira UE-19494 Finish asset auditing work by allowing reading back a cooked asset registry in the editor
Split off FAssetRegistryState as the struct to hold serialization and accessors, to allow loading multiple platform states at once.
Optimized runtime asset registry serialization to be around 1/3 as large as before. Dependencies are disabled by default for the runtime registry, you can re-enable with bSerializeDependencies in Engine.ini
Add FAssetPackageData which is explicitly per-package and only updated on save/load time. File size is stored in here and is computed for both editor and cooked data
Add code to AssetManagerEditorModule to allow loading pre-cooked asset registry files and reading cooked sizes. The Asset Audit window now has a platform drop down that allows reading from cooked data
Rename ChunkManifestGenerator to AssetRegistryGenerator and change it to directly hold an FAssetRegistryState internally
Add new experimental AssetRegistry mode for iterative cooking. This mode is much faster as it does not need to do it's own internal dependency checking and it can be enabled with bUseAssetRegistryForIteration
Change it so during cooking it doesn't directly load string asset references, but instead cues them for cook and uses the asset registry to find and add redirector mappings that are used during save time
Change 3370028 on 2017/03/29 by Ben.Zeigler
CIS fix
Change 3370360 on 2017/03/29 by Mike.Beach
Adding an extra field to FPlatformInfo; a 'UBTTarget' identifier intended to sync up with UBT's UnrealTargetPlatform enum (needed for programatically generating plugin platform whitelists).
Change 3370363 on 2017/03/29 by Ben.Zeigler
Fix issue where loading out of date editor asset registry cache would throw pointless errors
Change 3370414 on 2017/03/29 by Marc.Audy
Remove autos
Change 3370428 on 2017/03/29 by Ben.Zeigler
Fix linux CIS issue, remove implicit conversion from FSavePackageResultStruct back to enum result as it was creating ambiguous operators
Change 3370453 on 2017/03/29 by Marc.Audy
CIS fix
Change 3370548 on 2017/03/29 by Marc.Audy
#rn Fix issues with seamless travel in PIE and shared sub levels between different parents.
Change 3370564 on 2017/03/29 by Mieszko.Zielinski
PR #3429: fix comment typo (Contributed by kayama-shift)
Change 3370602 on 2017/03/29 by Mieszko.Zielinski
Fixed FRecastTileGenerator::Modifiers being erroneously counted twice when stating memory #UE4
Change 3370615 on 2017/03/29 by Phillip.Kavan
#jira UE-35515 - No longer crash when creating a new BP class from one or more selected Actors in which the root component is not Blueprint-spawnable.
Change summary:
- Modified FKismetEditorUtilities::AddComponentsToBlueprint() to handle deferred SceneComponent SCS node adds when the parent component was not also added (due to not being BP-spawnable).
Change 3370693 on 2017/03/29 by Michael.Noland
Fixing some bad indentation
#rnx
Change 3370740 on 2017/03/29 by Ben.Zeigler
DLC/Mod Cooking fixes, the list of packages from release build as in uncooked filename format so fixed code and made this more obvious
Fix Asset Registry to allow loading multiple source asset registries into the same state, by keeping a list of preallocated buffers
Change 3370792 on 2017/03/29 by Michael.Noland
Blueprints: Deleted some unversioned backwards compat. code that would only matter for assets older than VER_UE4_OLDEST_LOADABLE_PACKAGE
Change 3370794 on 2017/03/29 by Michael.Noland
PR #3190: Reduce some output logging
- Reduced an Oculus log from Log to Verbose because it spams quite a bit
- Corrected the spelling and the meaning of a blueprint warning when an invalid breakpoint is encountered
- Treat UInputComponent::GetAxisValue(None) as not a warning
- Switch FGenericSaveGameSystem::LoadGame to silently attempt to load the file, it returns success/failure and it isn't necessary to have a separate warning at the file i/o layer
#jira UE-41446
Change 3370831 on 2017/03/29 by Dan.Oconnor
Iteration on compilation manager
- Fix Skeleton class compilation order
- Pass ObjLoaded array to compilation manager to ensure all objects get PostLoaded
- Make sure data only classes get reinstanced, so that UpdateCustomPropertyListForPostConstruction is run correctly
Change 3370923 on 2017/03/29 by Michael.Noland
Blueprints: Added an icon to indicate whether or not a macro contains latent actions
- Note: The state of the icon is cached for performance reasons on request, with the cache being cleared when the BP containing the macro is modified or a macro graph is removed
- This does mean that editing the inner macro of a nested macro to add/remove a latent action will not show up in visualization for the outer node until the editor is restarted or the outer macro is modified
Change 3371039 on 2017/03/29 by Dan.Oconnor
Hacky fix for dropping return params when a function's return node is culled
Change 3371750 on 2017/03/30 by Richard.Hinckley
Stencil write mask exposed. Adds nine new options (all bits, plus each bit individually - write on pass or depth fail). This allows stencil overlaps to be detected by mixing masks.
Change 3372513 on 2017/03/30 by Ben.Zeigler
#jira UE-43475 Fix cooker issues with string asset references to null packages.
Fix redirector detection to follow recursive chains, and correctly strip object class from redirected string asset references.
Change 3372565 on 2017/03/30 by Richard.Hinckley
Rolling back stencil change, will be moved to Dev-Rendering.
Change 3372764 on 2017/03/30 by Marc.Audy
Do not create a duplicate sub object that is not in the annotation if a sub object of the same name and class already exists.
#jira UE-43328
#rn Fixed cases where the blueprint of a class used as a child actor could be dirtied when compiling the owning blueprint.
Change 3372847 on 2017/03/30 by Marc.Audy
Fix missing include
Change 3372994 on 2017/03/30 by Zak.Middleton
#ue4 - Fix build in Debug (checkSlow using incorrect function params).
Change 3373195 on 2017/03/30 by Mike.Beach
For nativization, changing it so we key off of the target platform-info struct instead of the platform (in preparation for defining the nativized plugin's platform whitelist).
Change 3373320 on 2017/03/30 by mason.seay
Basic for TM-Gameplay map (WIP)
Change 3373448 on 2017/03/30 by Ben.Zeigler
Fix recursive size display in audit window
Improve asset manager comments
Change 3373576 on 2017/03/30 by dan.reynolds
AEOverview Update:
Updated Passive Mix Modifier Test based on recent changes in behavior
Also added Initial Delay Time timer to test
Change 3373589 on 2017/03/30 by dan.reynolds
AEOverview Passive Mix Mod Test Map update
Change 3373624 on 2017/03/30 by Zak.Middleton
#ue4 - Increase Pawn location replication precision to 2 decimal places from 0. Prevents replicated pawns from being inside geometry by a large amount. Removed CVars controlling CharacterMovement proxy shrink amount and made those instanced properties on the component.
#jira UE-40420
Change 3374271 on 2017/03/31 by Marc.Audy
Fix deprecation warning in new UT code
Change 3374320 on 2017/03/31 by Marc.Audy
Fix HTML5 compile.
Change 3374413 on 2017/03/31 by Jeff.Farris
Added ENGINE_API to 2 functions in PlanarReflection, so projects can subclass it.
(Copied CL 3276454 from Robo Recall to Dev-Framework)
Change 3374414 on 2017/03/31 by Jeff.Farris
Added support for setting UNavigationSystem::bUpdateNavOctreeOnComponentChange
(Copied CL 3267903 from RoboRecall to Dev-Framework)
Change 3374616 on 2017/03/31 by Ben.Zeigler
Copy of Fortnite CL #3312058 to add a missing redirector. I do not understand why this is not erroring on Main, I guess my minor cook changes somehow exposed this
Change 3374664 on 2017/03/31 by Jeff.Farris
Consted AIController::GetBrainComponent()
(Copied 3239101 from Robo Recall to Dev-Framework)
Change 3374665 on 2017/03/31 by Jeff.Farris
PrimitiveComponent bIgnoreRadialImpulse and bIgnoreRadialForce are now exposed to BPs. bIgnoreRadialImpulse now respected when applying impulse to relevant movement components.
(Coped CL 3242355 from Robo Recall to Dev-Framework)
Change 3374779 on 2017/03/31 by Jeff.Farris
Exposed SetAllPhysicsAngularVelocity to blueprints
(Copied CL 3228390 from Robo Recall to Dev-Framework)
Change 3374792 on 2017/03/31 by Ben.Zeigler
#jira UE-42618
PR #3347: Improve support for FGameplayAttributeData properties in attribute sets (Contributed by hoelzl)
Change 3374844 on 2017/03/31 by Ben.Zeigler
#jira UE-42587 Fix issue where supressed gameplay effects that granted abilities would only work the first time, it now clears out of date ability handles
Change 3374925 on 2017/03/31 by Marc.Audy
Don't throw warning about missing world context for inactive worlds.
#jira UE-42679
Change 3374927 on 2017/03/31 by Michael.Noland
Editor: Added options for configuring the editor window background color and texture, which can be useful to visually distinguish the editor when switching between different branches or projects
Change 3374995 on 2017/03/31 by Michael.Noland
Editor: Rewrote CallInEditor support and promoted it so it can be used on functions in any class, not just blueprints derived from AActor:
- CallInEditor used on native UFUNCTION() declarations will now show up without having to make a BP subclass
- CallInEditor can now be used as a top-level keyword in the UFUNCTION() declaration (e.g., UFUNCTION(Category=CoolCommands, CallInEditor))
- Now shows each function as a separate button, placed in the category associated with the function
- The button strip entry is now searchable by function name or tooltip
- Prevented operating on functions that have parameters or return values, which would crash before
- Removed the duplicate copies of properties placed in the Blutility section
- Added a scoped transaction around CallInEditor execution
- Allowed functions to be marked as CallInEditor in addition to custom events (currently we don't allow editing category or tooltip on custom events...)
Editor: Moved Experimental/EarlyAccessPreview details customizations up to UObject so it can be used on any class, not just actors/components
Upgrade Note: Behavior has changed so that CallInEditor can be called on CDOs as well, this will probably be walked back in a subsequent update, at least for actors and components.
Change 3375005 on 2017/03/31 by Michael.Noland
Fixing incremental compilation error due to missing include
#rnx
Change 3375015 on 2017/03/31 by Michael.Noland
Fixing incremental compilation error due to missing include (for real)
#rnx
Change 3375045 on 2017/03/31 by Marc.Audy
Only calculate the streaming levels prefix during seamless travel if it is a PIE world
#jira UE-43485
Change 3375053 on 2017/03/31 by Ben.Zeigler
#jira UE-41988 Fix it so leaving PIE while gameplay debugger is active will disable HUD extensions properly, restoring ability to print messages to screen
Change 3375057 on 2017/03/31 by Ben.Zeigler
#jira UE-39226 Don't add to DrawDebug list for player controllers with no local player
Change 3375121 on 2017/03/31 by Michael.Noland
Added missing include for FScopedTransaction
#rnx
Change 3375222 on 2017/03/31 by mason.seay
Submitting work done to TM-Gameplay. Still WIP
Change 3375308 on 2017/03/31 by Michael.Noland
Editor: Added back CDO filtering to CallInEditor, it's too easy to explode in the BP editor. May consider allowing opt-in behavior when we revisit Blutilities
Change 3375321 on 2017/03/31 by Ben.Zeigler
#jira UE-39062 Fix issue where using the level editor toolbar to modify blueprints was not properly marking the blueprints as modified, so the constructor links weren't being updated until manually compiling or resaving
Always recompute post constructor links when calling MarkBlueprintAsModified, as it can be called from native and other places where we modified CDOs but don't have a property changed event
Change 3375372 on 2017/03/31 by Ben.Zeigler
#jira UE-39568 Change Components to specifically update LatentActions the same as Actors do, so they update properly if bUpdateWhilePaused is set
Change 3375380 on 2017/03/31 by Marc.Audy
Modify IsMainAudioDevice to deal with the case where no audio device has been created.
Change 3375402 on 2017/03/31 by Marc.Audy
Fix DuplicateWorldForPIE in the case that the OwningWorld is null.
Change 3376037 on 2017/04/02 by Phillip.Kavan
#jira UE-35332 - Preserve the least common ancestor pin type on object array function node inputs after a node refresh.
Change summary:
- Added UK2Node_CallArrayFunction::GetDynamicallyTypedPins() to consolidate the code that retrieves type-dependent parameter pins.
- Added FBlueprintEditorUtils::FindLinkedPinWithAuthoritativePinType() to consolidate the code that considers other linked pins when choosing which type to propagate to type-dependent parameter pins.
- Added FBlueprintEditorUtils::PropagatePinTypeInfo() to consolidate the common code from UK2Node_CallArrayFunction::PropagateArrayTypeInfo(); this eliminated a redundant retrieval of the target pin set.
- Refactored UK2Node_CallArrayFunction::PropagateArrayTypeInfo() to now call FBlueprintEditorUtils::PropagatePinTypeInfo() after retrieving the set of dynamically-typed pins.
- Refactored UK2Node_CallArrayFunction::NotifyPinConnectionListChanged() to remove some unnecessary iteration passes and to ensure that we propagate the authoritative (least common ancestor) pin type for object- and struct-based types.
Change 3376364 on 2017/04/03 by Richard.Hinckley
UE-40920 Fix to Paper2D flipbook timeline editor. Previously, the timeline shown was one frame shorter than the animation. Now, the timeline shows the correct frame count.
Change 3376366 on 2017/04/03 by Richard.Hinckley
UE-40920 Bugfix to Paper2D flipbook editor. The red line indicating the current frame now adjusts properly if the timeline is longer than the editor window and the scroll bar is moved to the right.
Change 3376517 on 2017/04/03 by Marc.Audy
PR #3195: Added support for GamePad on RawInput Plugin (Contributed by katze7514)
#jira UE-41499
Change 3376708 on 2017/04/03 by Mike.Beach
Moving nativized plugins into a centralized folder (so we can use it as an additional plugin lookup dir) - this is so we can ultimately keep the generated code around for debugging purposes.
Summary of changes:
- nativized plugins now moved to ...\Intermediate\Plugins\<PLATFORM>\NativizedAssets
- corresponding manifest files get saved inside the module and named to match the platform
- nativized modules now whitelisted only for the platform they were generated for
- cleanup on how we generate paths (now piping in platform name) and pass multi-cook process ids (for building manifest filenames)
- extending the 'NativizeAssets' command line, so you can use it to specify the target plugin path (utilized by UAT to coordinate the plugin path between cook & build - was previously hardcoded in multiple places).
Change 3376826 on 2017/04/03 by Phillip.Kavan
#jira UE-43330 - Fix a crash when adding an input parameter to a Custom Event node after deleting a Function Graph containing a Create Event node.
Change summary:
- Modified UK2Node_CreateDelegate::HandleAnyChangeWithoutNotifying() to check for a valid blueprint before accessing it (since the accessor is now a checked operation).
- Modified UK2Node_CreateDelegate::GetScopeClass() to also check for a valid blueprint before accessing it.
- Switched 'NULL' to 'nullptr' in a few spots.
Change 3376831 on 2017/04/03 by Ben.Zeigler
#jira UE-43500, clean up UPackage when EDL/async loading fails. This restores EDL LoadPackage to work the same as non EDL and return NULL instead of an invalid empty package
Change 3376846 on 2017/04/03 by Ben.Zeigler
#jira UE-38760 Properly refresh exec pins when removing pin from a Switch on Int node
Change 3376850 on 2017/04/03 by Dan.Oconnor
Use authoritative class to mitigate compilation order issues
Change 3376961 on 2017/04/03 by Ben.Zeigler
#jira UE-43127 Add struct ops implementations for FIntVector and FBox2d, any blueprint type needs struct ops to avoid crashes
Fix Box2d variable name in NoExportTypes
Change 3376985 on 2017/04/03 by Ben.Zeigler
#jira UE-43582 Remove Xbox-specific code from AssetRegistry because it won't work after my refactor. The serialization is much faster now and neither Bob nor I can conceive of a way this would take long enough to stall the main thread. If it it is somehow a problem, it should be wrapped in a slow task instead
Change 3377009 on 2017/04/03 by Ben.Zeigler
#jira UE-43036 Fix crash when right clicking blueprint with no parent class. Ensures are fine but crashes should be avoided so people can try to copy data out of them
Change 3377054 on 2017/04/03 by Zak.Middleton
#ue4 - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta.
#jira UE-40344
#udn https://udn.unrealengine.com/questions/310497/large-delta-time-for-first-player-movement-update.html
Change 3377061 on 2017/04/03 by Dan.Oconnor
Fixes for issues exposed by cooking with compilation manager. When cooking we end up with more blueprints compiling at a single time, which highlighted issues reading from generated classes while they were actively regenerating.
Note that EInternalCompilerFlags::PostponeLocalsGenerationUntilPhaseTwo has only been added to mitigate risk - there is no known reason that existing compilation flows can't postpone generatation of local variables.
Change 3377073 on 2017/04/03 by Mike.Beach
CIS fix - proper initialization ordering.
Change 3377371 on 2017/04/03 by Ben.Zeigler
#jira UE-43144 Disallow creating map of FText, like bool it is not hashable
Change 3377395 on 2017/04/03 by Dan.Oconnor
Build fix - make order in source match initialization order in artifact
Change 3377417 on 2017/04/03 by Dan.Oconnor
Speculative SA fix
Change 3377496 on 2017/04/03 by Aaron.McLeran
#jira UE-43558 Cleaning up shutdown code with audio plugins.
Change 3377608 on 2017/04/03 by Zak.Middleton
#ue4 - Added function ACharacter::CacheInitialMeshOffset() to cache initial mesh offset, used as the target for network smoothing. Added a call to this function from BeginPlay() in addition to the existing call from PostInitializeComponents(), and exposed this to blueprints as well. This fixes the case of people moving the mesh in BeginPlay rather than in the editor or construction script and not having the mesh offset reflected correctly in network games.
#jira UE-38966
Change 3377880 on 2017/04/03 by Aaron.McLeran
Audio bug fixes
#jira UE-43600 Fixing sounds played by playsoundatlocation for audio volume calculations
#jira UE-43601 Fixing listener volume interpolation
#jida UE-43602 Fixing reverb/eq interpolation
Change 3377908 on 2017/04/03 by Phillip.Kavan
#jira UE-43565 - Fix a regression on type-dependent array function node pins that have more than one link.
Change summary:
- Added FBlueprintEditorUtils::FindLinkedPinWithMostDerivedPinType()
- Modified FBlueprintEditorUtils::FindLinkedPinWithAuthoritativePinType() to properly handle pins that have multiple links.
Change 3377912 on 2017/04/03 by Dan.Oconnor
Fix for missing SUBINSTANCE variables on anim BP skeletons. I elected to force SUBINSTANCE variable creation for the compilation manager codepath
Change 3377946 on 2017/04/03 by Ben.Zeigler
#jira UE-43594 Fix issue with streamable manager where a failed load would leave bAsyncLoadRequestOutstanding, which would confuse later calls to stream the same asset
Lower some error verbosity now that I believe I have tracked down the issue
Change 3377950 on 2017/04/03 by Michael.Noland
Blueprints: Prevent merge tool from crashing in SVN when looking at a file with gaps in the revision history
(May still not work correctly, but it won't crash; full fix covered by UE-43603)
#jira UE-22428
Change 3377981 on 2017/04/03 by Michael.Noland
PR #3416: UE-43005: Prevent crash due to too long name (Contributed by projectgheist)
#jira UE-43291
#jira UE-43005
Change 3378039 on 2017/04/04 by Michael.Noland
PhysX: Allowed the editor to compile when bRuntimePhysicsCooking is disabled (WITH_EDITOR is used in every place in C++ to force it in already)
Change 3378041 on 2017/04/04 by Michael.Noland
Paper2D: Adjusted under what circumstances CreatePhysicsMeshes is called on various Paper2D types to match UProceduralMeshComponent
Change 3378081 on 2017/04/04 by Dan.Oconnor
Fix Blueprint Context nodes so that they don't rely on Ar.IsBeingSaved() call before compilation
3x because of copy/paste
Change 3378094 on 2017/04/04 by Dan.Oconnor
Add missing preload call for compilation manager
Change 3378917 on 2017/04/04 by Marc.Audy
Fix static analysis (which is very dumb)
Change 3378986 on 2017/04/04 by Dan.Oconnor
Fix bad merge
Change 3379100 on 2017/04/04 by Dan.Oconnor
Fix missing CPF_ConstParm/CPF_ReferenceParm/CPF_OutParm logic in 'fast' skeleton path
#jira UE-43629
Change 3379102 on 2017/04/04 by Ben.Zeigler
Actually fix StreamableManager issues with cancelling a request messing up things in the future. We now always queue a request, even if it failed before or there is one in progress. This has to be done to avoid issues with cancelling the existing request or mounting new files after it's failed once
Now that StreamableManager will retry missing files, add failed load packages to the known missing list so it won't spam errors over and over
Change 3379147 on 2017/04/04 by Zak.Middleton
#ue4 - Improve on CL 3377608: Made Character::CacheInitialMeshOffset() take location and rotation params so you can be explicit on the values, in case you try to change these during network smoothing, where reading the relative offsets would have been skewed.
Change 3379254 on 2017/04/04 by Aaron.McLeran
Fixing sounds in audio mixer when no EQ has been set.
Change 3379760 on 2017/04/04 by Ben.Zeigler
#jira UE-43647 Don't delete failed async packages that are rooted
[CL 3380073 by Dan Oconnor in Main branch]
2017-04-04 20:49:52 -04:00
const bool bNeedToUpdateCommentBubble = GetNodeObj ( ) - > ShouldMakeCommentBubbleVisible ( ) ;
if ( IsHovered ( ) | | bNeedToUpdateCommentBubble )
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
{
if ( FNodeSlot * CommentSlot = GetSlot ( ENodeZone : : TopCenter ) )
{
TSharedPtr < SCommentBubble > CommentBubble = StaticCastSharedRef < SCommentBubble > ( CommentSlot - > GetWidget ( ) ) ;
if ( CommentBubble . IsValid ( ) )
{
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3380068)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3358702 on 2017/03/22 by Marc.Audy
Always mark child actors pending kill when in PostLoad as often the World is too early to have a WorldContext which causes issues in DestroyActor
#jira UE-42679
Change 3358737 on 2017/03/22 by Mieszko.Zielinski
Exposed UBrainComponent::IsRunning() and UBrainComponent::IsPaused() to Blueprint #UE4
Change 3359062 on 2017/03/22 by Michael.Noland
Blueprints: Show the Save and Find in CB buttons when working with level script blueprints (they will save/show the map package)
#jira UE-30748
Change 3359066 on 2017/03/22 by Michael.Noland
PR #3348: Make fields of FAttributeMetaData editable (Contributed by hoelzl)
#jira UE-42620
Change 3359069 on 2017/03/22 by Michael.Noland
PR #3288: InverseLerp Blueprint Tooltips Clarification (Contributed by wunawuna)
#jira UE-42250
Change 3359108 on 2017/03/22 by Michael.Noland
Blueprints: Fix an issue where running the editor in a different culture could break pins on nodes that have optional arrays of pins (e.g., animation graph nodes like blend by layer)
#jira UE-36232
Change 3359235 on 2017/03/22 by Marc.Audy
Expose bShouldPerformFullTickWhenPaused to blueprints and details panel
#jira UE-17286
Change 3359324 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Disable collision on NavModifierVolumes. Previously they had an OverlapAll response and generated overlap events. They are only supposed to be used for preventing nav mesh generation, but overlap events could affect gameplay, and also are bad for performance.
(Integrate CL 3249525 from Odin).
Change 3359326 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Optimization during attachment to check bool before expensive casts and body instance fetching.
(Integrate CL 3261262 from Odin).
Change 3359327 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Make bSkipAgentHeightCheckWhenPickingNavData actually ignore height when picking data.
(Integrate CL 3231908 from Odin)
Change 3359328 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Make a static FName in UMovementComponent::OverlapTest const and move it to a namespace.
(Integrate CL 3259985 from Odin)
Change 3359329 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Fix ProjectileMovementComponent continuing to simulate (and generate hit events) after it is deactivated during simulation. HasStoppedSimulation() should check if bIsActive is false.
(Integrate CL 3260001 from Odin)
Change 3359330 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Fix accumulated forces in CharacterMovement when movement mode or activation changes.
- Added CharacterMovementComponent::ClearAccumulatedForces()
- AddForce() and related functions now avoid adding the force if in MovementMode "None". When ticking in "None", forces are cleared so they don't pile up until the next valid movement mode. Forces are also cleared if the updated component changes or when the capsule simulates physics.
- CharacterMovementComponent::Deactivate() implemented to stop movement and call ClearAccumulatedForces().
- ClearAccumulatedForces() now also clears pending launch velocity.
- Exposed ClearAccumulatedForces() to blueprints.
- AddForce() and AddImpulse() now also check that character movement is active (not deactivated, able to tick).
- ApplyAccumulatedForces() does not call ClearAccumulatedForces(), since that would prevent pending launch.
- SimulateMovement() handles pending launch and clears forces regardless of whether it's simulated proxy. Added note to investigate using ApplyAccumulatedForces() in SimulateMovement().
- Inlined ActorComponent::IsActive().
(Integrate CLs 3259933, 3266018 from Odin)
Change 3359338 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) TickCharacterPose() and clear root motion before abandoning tick in UCharacterMovementComponent::PerformMovement() when movement mode is None. Prevents root motion building up until next valid movement mode.
(Integrate CL 3271928 from Odin)
Change 3359345 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Fix characters sliding when landing on slanted surfaces or stairs, when aggressive "Perch" settings could cause a line trace (from the center of a capsule) instead of capsule trace and thereby screw up the floor distance checks.
(Integrate CL 3273026 from Odin)
Change 3359381 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Performance tweak to ApplyRadialDamageWithFalloff(). Don't rebuild FRadialDamageEvent each loop over hit actors. Added stats for BreakHitResult()/MakeHitResult() under "stat game".
(Integrate CLs 3275415, 3276810 from Odin).
Change 3359422 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Fix build (CollisionProfile included).
Change 3359442 on 2017/03/22 by Michael.Noland
Blueprints: Prevent comment boxes from clipping the last letter of some words at the edge by increasing the padding on the wrap-at position
Change 3359445 on 2017/03/22 by Michael.Noland
PR #2989: Improved BP comment nodes (Contributed by projectgheist)
#jira UE-36788
#jira UE-39118
Change 3359446 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Add support for FScopedMovementUpdate to be able to queue up overlaps that do not require reflexive bGenerateOverlapEvents. This allows custom inspection or processing of overlaps within a scoped move. Overlap events from the move will still only trigger in UpdateOverlaps() if bGenerateOverlapEvents is enabled on both components, as before.
(Integrate CL 3278307 from Odin)
Change 3359494 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Make some data in FScopedMovementUpdate protected rather than private so it can easily be subclassed, and expose a new helper SetWorldLocationAndRotation().
(Integrated CL 3280775 from Odin).
Change 3359506 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) MovementComponent::Deactivate() calls StopMovement() to clear cached velocity. It's silly that reactivation many seconds or frames later would restore that velocity. Some special handling in CharacterMovement to keep it acting as before (it cleared velocity, but did not clear the path request, leaving that alone).
(Integrate CL 3287026 from Odin).
Change 3359514 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Collision.ListComponentsWithResponseToProfile command includes pending kill objects.
(Integrate CL 3293322 from Odin)
Change 3359553 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Optimization in CharacterMovement tick to not extract transform values twice.
(Integrate CL 3299098 from Odin).
Change 3359554 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Perf: optimize UKismetMathLibrary::GetForwardVector() (converts Rotator to forward direction). This way we avoid building a matrix, and avoids 1 more SinCos call.
(Integrate CL 3296254 from Odin).
Change 3359555 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Add OnComponentCollisionSettingsChangedEvent delegate to PrimitiveComponent. Fixed SkeletalMeshComponent not calling Super implementation.
(Integrate CL 3295744 from Odin)
Change 3359561 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Perf: AActor::GetComponents() with generic type should *not* assume the output array needs space for the entire contents of OwnedComponents. If OwnedComponents.Num() > the array reserve size, this forces an allocation, even if few or no components of the requested type are found.
(Integrate CL 3299111 from Odin)
Change 3359573 on 2017/03/22 by dan.reynolds
Added BP log to the Passive Mix Modifier test platform BP
Change 3359593 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Perf: avoid allocations during creation in AAIController::PostInitializeComponents() (in development builds).
(Integrate CL 3299118 from Odin)
Change 3359595 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Perf: HasActiveCameraComponent() and HasActivePawnControlCameraComponent() don't need to fill in an array while searching for a certain component. Also see CL 3359561, which could cause each of these functions to always cause an allocation when filling in the array when num components > 24.
(Integrate CL 3299116 from Odin)
Change 3359602 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Clean up some of the new fast overlap code in PrimitiveComponent. Mostly some variable renaming, and CVar access optimization.
(Integrate CL 3340622 from Odin)
Change 3359616 on 2017/03/22 by Zak.Middleton
#ue4 - (Merge) Added support for bIgnoreTouches to FCollisionQueryParams. MoveComponent uses this to avoid PhysX collision queries for overlaps in GeomSweepMulti when bGenerateOverlapEvents is off.
(Integrate CL 3340635 from Odin)
Change 3359864 on 2017/03/23 by Mieszko.Zielinski
Added a safeguard to prevent crashes resulting from people trying to name their BB keys things longer than 1024 characters #UE4
#jira UE-43120
Change 3360884 on 2017/03/23 by Zak.Middleton
#ue4 - (Merge) Audio: AUDIO_MIXER_ENABLE_DEBUG_MODE turned off in Test builds. Shipping already had it off.
(Integrate CL 3310724 from Odin)
Change 3361045 on 2017/03/23 by Zak.Middleton
#ue4 - (Merge) Audio: new cvars to help with optimization:
- au.DisableReverbSubmix
- au.DisableEQSubmix
- au.DisableParallelSourceProcessing
- au.SetAudioChannelCount
Also checked in some code to cut down on the amount of parameter setting in EQ
(Integrate of CL 3303165 in Odin by Aaron.Mcleran)
Change 3361172 on 2017/03/23 by Zak.Middleton
#ue4 - (Merge) Audio: added stat for HRTF.
(Integrate CL 3310728 from Odin)
Change 3361189 on 2017/03/23 by Zak.Middleton
#ue4 - (Merge) CVar to toggle HRTF for perf settings. Default is on.
(Integrate CL 3310926 from Odin).
Change 3361914 on 2017/03/23 by Aaron.McLeran
UE-42649 Fixing crash in cleaning up active sound in sound concurrency
-Handling edge case of an active sound not have a sound base ptr, which is possible.
Change 3361924 on 2017/03/23 by Aaron.McLeran
UE-41378 Fixing passive mix modifier bug
Change 3361978 on 2017/03/23 by Aaron.McLeran
UE-42627 Fix for when audio device is removed and getting a deadlock in computing audio clock
Change 3361989 on 2017/03/23 by Aaron.McLeran
PR #3010: Check for null GEngine on sound processing
Change 3362053 on 2017/03/23 by Zak.Middleton
#ue4 - (Merge) Audio: Perf: Avoid thousands of Array.Add() calls during processing, which on shipping still does checks to see if the allocator has to grow, and updates ArrayCount.
(Integrate CL 3311120 from Odin)
Change 3362102 on 2017/03/23 by Aaron.McLeran
PR #3182: Enabled SwitchOnEnum nodes for EAttenuationShape and EAttenuationDistanceModel
Change 3362153 on 2017/03/23 by Aaron.McLeran
UE-43286 Oculus audio plugin not working/available
Change 3362162 on 2017/03/23 by Aaron.McLeran
UE-42252 Frequent ensure in FLevelEditorViewportClient::UpdateAudioListener
Change 3362206 on 2017/03/23 by Aaron.McLeran
UE-43287 Fixing HRTF spatialization in editor viewport
- Steam Audio doesn't support multiple audio devices at the moment
- Instead of hard-coding all audio plugins to not work in main audio device (GDC temp fix), I allow audio plugins to specify if they should be used on main audio device
Change 3362775 on 2017/03/24 by mason.seay
Replaced deprecated node
Change 3363024 on 2017/03/24 by Ben.Zeigler
Fix regression in behavior of streamable manager where loading both a valid and null asset used to work but now fails. Instead added a warning for that case, but if only null are requested it still fails with an error
Change 3363030 on 2017/03/24 by Zak.Middleton
#ue4 - Lower default max sendrate for clients to 60Hz from 90Hz when net speed is high and player count is low. Throttled rate remains at 45Hz. This value has been tested in Paragon with no ill effect, and saves on bandwidth and server CPU when clients run at high framerate.
Change 3363036 on 2017/03/24 by Zak.Middleton
#ue4 - (Merge) Audio: Perf: turned a float divide into a multiply. It happens at least 32k times per audio update.
(Integrate CL 3311158 from Odin)
Change 3363541 on 2017/03/24 by Zak.Middleton
#ue4 - (Merge) Audio: Perf: remove pointer indirection, and successive TArray Add()s in GetChannelMap().
(Integrate CL 3311169 from Odin)
Change 3363642 on 2017/03/24 by Zak.Middleton
#ue4 - (Merge) Audio: Perf: Save ~5% total audio update time. Savings in "Source Output Buffers".
- Removed function call overhead to updating channel map. 64,000 function calls...
- Simplified FSourceParam::Update() to reduce branching and have 1 return site.
- Added alternative to GetChannelMap() called UpdateChannelMap() that avoids copying out values to an array. The values can then be fetched from the channel data directly.
(Integrate CL 3311235 from Odin)
Change 3364441 on 2017/03/24 by Ben.Zeigler
Fix issue where calling LoadLocalIniFile on a plugin file would result in an empty file. It was assuming engine/game dirs, now it instead pulls it out of GConfig if available.
This fixes issue where iterative cooking would fail on plugin config files
Add FindConfigFileWithBaseName to GConfig
Change 3364652 on 2017/03/25 by Phillip.Kavan
#jira UE-43210 - Fix a runtime VM crash upon removing an element from a set after consecutive add/remove iterations.
Change summary:
- Fixed FScriptSet::Add() to initialize the HashIndex member of the new element when the HashSize does not change.
Change 3365609 on 2017/03/27 by Richard.Hinckley
#jira UEDOC-4720
Fixed global enums being dropped from documentation after being extracted by Doxygen.
Change 3365737 on 2017/03/27 by Marc.Audy
Move setting of the ParentComponent property on an actor to PostRepNotifies instead of having a separate OnRep function.
Change 3365795 on 2017/03/27 by Marc.Audy
Fix compile error
Change 3365894 on 2017/03/27 by Phillip.Kavan
#jira UE-35507 - Fix for a GLEO when choosing an LSBP class as the default value for a class input pin in a non-LSBP graph.
Change summary:
- Modified FGraphPinFilter::IsClassAllowed() to disallow a given class if the type is contained within a map package that does not match the current graph context.
Change 3366067 on 2017/03/27 by Marc.Audy
Add UWorld* to PostLoadMap indicating which world has been loaded. Null if an error has occurred.
#jira UE-40228
Change 3366097 on 2017/03/27 by Marc.Audy
Fixed missed deprecation disable pairing for PostLadMap
Change 3366170 on 2017/03/27 by Aaron.McLeran
Fixing div by zero
Change 3366221 on 2017/03/27 by Aaron.McLeran
UE-43240 Removing dependency on component visualizers in runtime Phonon module.
Change 3366698 on 2017/03/27 by Marc.Audy
Fix Orion compile errors
Change 3366782 on 2017/03/27 by Aaron.McLeran
Bringing over optimizations from Odin to Dev-framework.
Original CL 3311435
Change 3366818 on 2017/03/27 by Aaron.McLeran
Bringing fix from Odin to Dev-Framework from CL 3304533
Fix for rare condition that stomps memory during source recycling.
Change 3366984 on 2017/03/27 by Michael.Noland
Blueprints: Downgraded a warning in the connection drawing policy to verbose to suppress it. It does no good to a typical user.
#jira UE-41638
Change 3367085 on 2017/03/27 by Brent.Pease
- Improve AudioMixer buffering so that only two buffers are needed instead of three, buffer submission and buffer processing are ovelapped, and a warning is issued if the audio processing thread can not keep up.
- Added time critical thread priority so that audio processing is not starved which would produce clicks and popping
- Allow the audio thread to not be created if a platform implements its own BeginGeneratingAudio() call (as happens on Android)
Change 3367434 on 2017/03/28 by Marc.Audy
Fix UT compile error
Change 3368587 on 2017/03/28 by Mike.Beach
Adding a "CookedOnly" plugin type (now used by the nativized Blueprint plugin).
Change 3368724 on 2017/03/28 by Zak.Middleton
#ue4 - MovementComponent does not ignore initial blocking overlaps when moving from SafeMoveUpdatedComponent(). Set "p.MoveIgnoreFirstBlockingOverlap" back to zero and add a new flag that prevents the depenetration test from generating hit events (to prevent the problem discovered in UE-39387).
#jira UE-41613, UE-28610
Change 3368748 on 2017/03/28 by Dan.Oconnor
Provide &FUObjectThreadContext::Get().ObjLoaded when using the compilation manager, add validation functions for finding REINST/TRASH references
Change 3368852 on 2017/03/28 by Mike.Beach
Fixing a CIS error before it happens - wrapping implementation in preprocessor defines to match declaration in header.
Change 3368873 on 2017/03/28 by Dan.Oconnor
Rather than collecting script object references, just use the ScriptObjectReferences array. This allows reference replacing archives to update ScriptObjectReferences.
Change 3368998 on 2017/03/28 by Dan.Oconnor
Setting CLASS_Interface early in the compilation process
Change 3369494 on 2017/03/29 by Marc.Audy
Fix UAT compile error
Change 3369924 on 2017/03/29 by Zak.Middleton
#ue4 - Allow CharacterMovement AdjustFloorHeight() to adjust using the line trace if in penetration. Force next floor check so it will check after it depenetrates.
#jira UE-36973
Change 3369932 on 2017/03/29 by Ben.Zeigler
#jira UE-19494 Finish asset auditing work by allowing reading back a cooked asset registry in the editor
Split off FAssetRegistryState as the struct to hold serialization and accessors, to allow loading multiple platform states at once.
Optimized runtime asset registry serialization to be around 1/3 as large as before. Dependencies are disabled by default for the runtime registry, you can re-enable with bSerializeDependencies in Engine.ini
Add FAssetPackageData which is explicitly per-package and only updated on save/load time. File size is stored in here and is computed for both editor and cooked data
Add code to AssetManagerEditorModule to allow loading pre-cooked asset registry files and reading cooked sizes. The Asset Audit window now has a platform drop down that allows reading from cooked data
Rename ChunkManifestGenerator to AssetRegistryGenerator and change it to directly hold an FAssetRegistryState internally
Add new experimental AssetRegistry mode for iterative cooking. This mode is much faster as it does not need to do it's own internal dependency checking and it can be enabled with bUseAssetRegistryForIteration
Change it so during cooking it doesn't directly load string asset references, but instead cues them for cook and uses the asset registry to find and add redirector mappings that are used during save time
Change 3370028 on 2017/03/29 by Ben.Zeigler
CIS fix
Change 3370360 on 2017/03/29 by Mike.Beach
Adding an extra field to FPlatformInfo; a 'UBTTarget' identifier intended to sync up with UBT's UnrealTargetPlatform enum (needed for programatically generating plugin platform whitelists).
Change 3370363 on 2017/03/29 by Ben.Zeigler
Fix issue where loading out of date editor asset registry cache would throw pointless errors
Change 3370414 on 2017/03/29 by Marc.Audy
Remove autos
Change 3370428 on 2017/03/29 by Ben.Zeigler
Fix linux CIS issue, remove implicit conversion from FSavePackageResultStruct back to enum result as it was creating ambiguous operators
Change 3370453 on 2017/03/29 by Marc.Audy
CIS fix
Change 3370548 on 2017/03/29 by Marc.Audy
#rn Fix issues with seamless travel in PIE and shared sub levels between different parents.
Change 3370564 on 2017/03/29 by Mieszko.Zielinski
PR #3429: fix comment typo (Contributed by kayama-shift)
Change 3370602 on 2017/03/29 by Mieszko.Zielinski
Fixed FRecastTileGenerator::Modifiers being erroneously counted twice when stating memory #UE4
Change 3370615 on 2017/03/29 by Phillip.Kavan
#jira UE-35515 - No longer crash when creating a new BP class from one or more selected Actors in which the root component is not Blueprint-spawnable.
Change summary:
- Modified FKismetEditorUtilities::AddComponentsToBlueprint() to handle deferred SceneComponent SCS node adds when the parent component was not also added (due to not being BP-spawnable).
Change 3370693 on 2017/03/29 by Michael.Noland
Fixing some bad indentation
#rnx
Change 3370740 on 2017/03/29 by Ben.Zeigler
DLC/Mod Cooking fixes, the list of packages from release build as in uncooked filename format so fixed code and made this more obvious
Fix Asset Registry to allow loading multiple source asset registries into the same state, by keeping a list of preallocated buffers
Change 3370792 on 2017/03/29 by Michael.Noland
Blueprints: Deleted some unversioned backwards compat. code that would only matter for assets older than VER_UE4_OLDEST_LOADABLE_PACKAGE
Change 3370794 on 2017/03/29 by Michael.Noland
PR #3190: Reduce some output logging
- Reduced an Oculus log from Log to Verbose because it spams quite a bit
- Corrected the spelling and the meaning of a blueprint warning when an invalid breakpoint is encountered
- Treat UInputComponent::GetAxisValue(None) as not a warning
- Switch FGenericSaveGameSystem::LoadGame to silently attempt to load the file, it returns success/failure and it isn't necessary to have a separate warning at the file i/o layer
#jira UE-41446
Change 3370831 on 2017/03/29 by Dan.Oconnor
Iteration on compilation manager
- Fix Skeleton class compilation order
- Pass ObjLoaded array to compilation manager to ensure all objects get PostLoaded
- Make sure data only classes get reinstanced, so that UpdateCustomPropertyListForPostConstruction is run correctly
Change 3370923 on 2017/03/29 by Michael.Noland
Blueprints: Added an icon to indicate whether or not a macro contains latent actions
- Note: The state of the icon is cached for performance reasons on request, with the cache being cleared when the BP containing the macro is modified or a macro graph is removed
- This does mean that editing the inner macro of a nested macro to add/remove a latent action will not show up in visualization for the outer node until the editor is restarted or the outer macro is modified
Change 3371039 on 2017/03/29 by Dan.Oconnor
Hacky fix for dropping return params when a function's return node is culled
Change 3371750 on 2017/03/30 by Richard.Hinckley
Stencil write mask exposed. Adds nine new options (all bits, plus each bit individually - write on pass or depth fail). This allows stencil overlaps to be detected by mixing masks.
Change 3372513 on 2017/03/30 by Ben.Zeigler
#jira UE-43475 Fix cooker issues with string asset references to null packages.
Fix redirector detection to follow recursive chains, and correctly strip object class from redirected string asset references.
Change 3372565 on 2017/03/30 by Richard.Hinckley
Rolling back stencil change, will be moved to Dev-Rendering.
Change 3372764 on 2017/03/30 by Marc.Audy
Do not create a duplicate sub object that is not in the annotation if a sub object of the same name and class already exists.
#jira UE-43328
#rn Fixed cases where the blueprint of a class used as a child actor could be dirtied when compiling the owning blueprint.
Change 3372847 on 2017/03/30 by Marc.Audy
Fix missing include
Change 3372994 on 2017/03/30 by Zak.Middleton
#ue4 - Fix build in Debug (checkSlow using incorrect function params).
Change 3373195 on 2017/03/30 by Mike.Beach
For nativization, changing it so we key off of the target platform-info struct instead of the platform (in preparation for defining the nativized plugin's platform whitelist).
Change 3373320 on 2017/03/30 by mason.seay
Basic for TM-Gameplay map (WIP)
Change 3373448 on 2017/03/30 by Ben.Zeigler
Fix recursive size display in audit window
Improve asset manager comments
Change 3373576 on 2017/03/30 by dan.reynolds
AEOverview Update:
Updated Passive Mix Modifier Test based on recent changes in behavior
Also added Initial Delay Time timer to test
Change 3373589 on 2017/03/30 by dan.reynolds
AEOverview Passive Mix Mod Test Map update
Change 3373624 on 2017/03/30 by Zak.Middleton
#ue4 - Increase Pawn location replication precision to 2 decimal places from 0. Prevents replicated pawns from being inside geometry by a large amount. Removed CVars controlling CharacterMovement proxy shrink amount and made those instanced properties on the component.
#jira UE-40420
Change 3374271 on 2017/03/31 by Marc.Audy
Fix deprecation warning in new UT code
Change 3374320 on 2017/03/31 by Marc.Audy
Fix HTML5 compile.
Change 3374413 on 2017/03/31 by Jeff.Farris
Added ENGINE_API to 2 functions in PlanarReflection, so projects can subclass it.
(Copied CL 3276454 from Robo Recall to Dev-Framework)
Change 3374414 on 2017/03/31 by Jeff.Farris
Added support for setting UNavigationSystem::bUpdateNavOctreeOnComponentChange
(Copied CL 3267903 from RoboRecall to Dev-Framework)
Change 3374616 on 2017/03/31 by Ben.Zeigler
Copy of Fortnite CL #3312058 to add a missing redirector. I do not understand why this is not erroring on Main, I guess my minor cook changes somehow exposed this
Change 3374664 on 2017/03/31 by Jeff.Farris
Consted AIController::GetBrainComponent()
(Copied 3239101 from Robo Recall to Dev-Framework)
Change 3374665 on 2017/03/31 by Jeff.Farris
PrimitiveComponent bIgnoreRadialImpulse and bIgnoreRadialForce are now exposed to BPs. bIgnoreRadialImpulse now respected when applying impulse to relevant movement components.
(Coped CL 3242355 from Robo Recall to Dev-Framework)
Change 3374779 on 2017/03/31 by Jeff.Farris
Exposed SetAllPhysicsAngularVelocity to blueprints
(Copied CL 3228390 from Robo Recall to Dev-Framework)
Change 3374792 on 2017/03/31 by Ben.Zeigler
#jira UE-42618
PR #3347: Improve support for FGameplayAttributeData properties in attribute sets (Contributed by hoelzl)
Change 3374844 on 2017/03/31 by Ben.Zeigler
#jira UE-42587 Fix issue where supressed gameplay effects that granted abilities would only work the first time, it now clears out of date ability handles
Change 3374925 on 2017/03/31 by Marc.Audy
Don't throw warning about missing world context for inactive worlds.
#jira UE-42679
Change 3374927 on 2017/03/31 by Michael.Noland
Editor: Added options for configuring the editor window background color and texture, which can be useful to visually distinguish the editor when switching between different branches or projects
Change 3374995 on 2017/03/31 by Michael.Noland
Editor: Rewrote CallInEditor support and promoted it so it can be used on functions in any class, not just blueprints derived from AActor:
- CallInEditor used on native UFUNCTION() declarations will now show up without having to make a BP subclass
- CallInEditor can now be used as a top-level keyword in the UFUNCTION() declaration (e.g., UFUNCTION(Category=CoolCommands, CallInEditor))
- Now shows each function as a separate button, placed in the category associated with the function
- The button strip entry is now searchable by function name or tooltip
- Prevented operating on functions that have parameters or return values, which would crash before
- Removed the duplicate copies of properties placed in the Blutility section
- Added a scoped transaction around CallInEditor execution
- Allowed functions to be marked as CallInEditor in addition to custom events (currently we don't allow editing category or tooltip on custom events...)
Editor: Moved Experimental/EarlyAccessPreview details customizations up to UObject so it can be used on any class, not just actors/components
Upgrade Note: Behavior has changed so that CallInEditor can be called on CDOs as well, this will probably be walked back in a subsequent update, at least for actors and components.
Change 3375005 on 2017/03/31 by Michael.Noland
Fixing incremental compilation error due to missing include
#rnx
Change 3375015 on 2017/03/31 by Michael.Noland
Fixing incremental compilation error due to missing include (for real)
#rnx
Change 3375045 on 2017/03/31 by Marc.Audy
Only calculate the streaming levels prefix during seamless travel if it is a PIE world
#jira UE-43485
Change 3375053 on 2017/03/31 by Ben.Zeigler
#jira UE-41988 Fix it so leaving PIE while gameplay debugger is active will disable HUD extensions properly, restoring ability to print messages to screen
Change 3375057 on 2017/03/31 by Ben.Zeigler
#jira UE-39226 Don't add to DrawDebug list for player controllers with no local player
Change 3375121 on 2017/03/31 by Michael.Noland
Added missing include for FScopedTransaction
#rnx
Change 3375222 on 2017/03/31 by mason.seay
Submitting work done to TM-Gameplay. Still WIP
Change 3375308 on 2017/03/31 by Michael.Noland
Editor: Added back CDO filtering to CallInEditor, it's too easy to explode in the BP editor. May consider allowing opt-in behavior when we revisit Blutilities
Change 3375321 on 2017/03/31 by Ben.Zeigler
#jira UE-39062 Fix issue where using the level editor toolbar to modify blueprints was not properly marking the blueprints as modified, so the constructor links weren't being updated until manually compiling or resaving
Always recompute post constructor links when calling MarkBlueprintAsModified, as it can be called from native and other places where we modified CDOs but don't have a property changed event
Change 3375372 on 2017/03/31 by Ben.Zeigler
#jira UE-39568 Change Components to specifically update LatentActions the same as Actors do, so they update properly if bUpdateWhilePaused is set
Change 3375380 on 2017/03/31 by Marc.Audy
Modify IsMainAudioDevice to deal with the case where no audio device has been created.
Change 3375402 on 2017/03/31 by Marc.Audy
Fix DuplicateWorldForPIE in the case that the OwningWorld is null.
Change 3376037 on 2017/04/02 by Phillip.Kavan
#jira UE-35332 - Preserve the least common ancestor pin type on object array function node inputs after a node refresh.
Change summary:
- Added UK2Node_CallArrayFunction::GetDynamicallyTypedPins() to consolidate the code that retrieves type-dependent parameter pins.
- Added FBlueprintEditorUtils::FindLinkedPinWithAuthoritativePinType() to consolidate the code that considers other linked pins when choosing which type to propagate to type-dependent parameter pins.
- Added FBlueprintEditorUtils::PropagatePinTypeInfo() to consolidate the common code from UK2Node_CallArrayFunction::PropagateArrayTypeInfo(); this eliminated a redundant retrieval of the target pin set.
- Refactored UK2Node_CallArrayFunction::PropagateArrayTypeInfo() to now call FBlueprintEditorUtils::PropagatePinTypeInfo() after retrieving the set of dynamically-typed pins.
- Refactored UK2Node_CallArrayFunction::NotifyPinConnectionListChanged() to remove some unnecessary iteration passes and to ensure that we propagate the authoritative (least common ancestor) pin type for object- and struct-based types.
Change 3376364 on 2017/04/03 by Richard.Hinckley
UE-40920 Fix to Paper2D flipbook timeline editor. Previously, the timeline shown was one frame shorter than the animation. Now, the timeline shows the correct frame count.
Change 3376366 on 2017/04/03 by Richard.Hinckley
UE-40920 Bugfix to Paper2D flipbook editor. The red line indicating the current frame now adjusts properly if the timeline is longer than the editor window and the scroll bar is moved to the right.
Change 3376517 on 2017/04/03 by Marc.Audy
PR #3195: Added support for GamePad on RawInput Plugin (Contributed by katze7514)
#jira UE-41499
Change 3376708 on 2017/04/03 by Mike.Beach
Moving nativized plugins into a centralized folder (so we can use it as an additional plugin lookup dir) - this is so we can ultimately keep the generated code around for debugging purposes.
Summary of changes:
- nativized plugins now moved to ...\Intermediate\Plugins\<PLATFORM>\NativizedAssets
- corresponding manifest files get saved inside the module and named to match the platform
- nativized modules now whitelisted only for the platform they were generated for
- cleanup on how we generate paths (now piping in platform name) and pass multi-cook process ids (for building manifest filenames)
- extending the 'NativizeAssets' command line, so you can use it to specify the target plugin path (utilized by UAT to coordinate the plugin path between cook & build - was previously hardcoded in multiple places).
Change 3376826 on 2017/04/03 by Phillip.Kavan
#jira UE-43330 - Fix a crash when adding an input parameter to a Custom Event node after deleting a Function Graph containing a Create Event node.
Change summary:
- Modified UK2Node_CreateDelegate::HandleAnyChangeWithoutNotifying() to check for a valid blueprint before accessing it (since the accessor is now a checked operation).
- Modified UK2Node_CreateDelegate::GetScopeClass() to also check for a valid blueprint before accessing it.
- Switched 'NULL' to 'nullptr' in a few spots.
Change 3376831 on 2017/04/03 by Ben.Zeigler
#jira UE-43500, clean up UPackage when EDL/async loading fails. This restores EDL LoadPackage to work the same as non EDL and return NULL instead of an invalid empty package
Change 3376846 on 2017/04/03 by Ben.Zeigler
#jira UE-38760 Properly refresh exec pins when removing pin from a Switch on Int node
Change 3376850 on 2017/04/03 by Dan.Oconnor
Use authoritative class to mitigate compilation order issues
Change 3376961 on 2017/04/03 by Ben.Zeigler
#jira UE-43127 Add struct ops implementations for FIntVector and FBox2d, any blueprint type needs struct ops to avoid crashes
Fix Box2d variable name in NoExportTypes
Change 3376985 on 2017/04/03 by Ben.Zeigler
#jira UE-43582 Remove Xbox-specific code from AssetRegistry because it won't work after my refactor. The serialization is much faster now and neither Bob nor I can conceive of a way this would take long enough to stall the main thread. If it it is somehow a problem, it should be wrapped in a slow task instead
Change 3377009 on 2017/04/03 by Ben.Zeigler
#jira UE-43036 Fix crash when right clicking blueprint with no parent class. Ensures are fine but crashes should be avoided so people can try to copy data out of them
Change 3377054 on 2017/04/03 by Zak.Middleton
#ue4 - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta.
#jira UE-40344
#udn https://udn.unrealengine.com/questions/310497/large-delta-time-for-first-player-movement-update.html
Change 3377061 on 2017/04/03 by Dan.Oconnor
Fixes for issues exposed by cooking with compilation manager. When cooking we end up with more blueprints compiling at a single time, which highlighted issues reading from generated classes while they were actively regenerating.
Note that EInternalCompilerFlags::PostponeLocalsGenerationUntilPhaseTwo has only been added to mitigate risk - there is no known reason that existing compilation flows can't postpone generatation of local variables.
Change 3377073 on 2017/04/03 by Mike.Beach
CIS fix - proper initialization ordering.
Change 3377371 on 2017/04/03 by Ben.Zeigler
#jira UE-43144 Disallow creating map of FText, like bool it is not hashable
Change 3377395 on 2017/04/03 by Dan.Oconnor
Build fix - make order in source match initialization order in artifact
Change 3377417 on 2017/04/03 by Dan.Oconnor
Speculative SA fix
Change 3377496 on 2017/04/03 by Aaron.McLeran
#jira UE-43558 Cleaning up shutdown code with audio plugins.
Change 3377608 on 2017/04/03 by Zak.Middleton
#ue4 - Added function ACharacter::CacheInitialMeshOffset() to cache initial mesh offset, used as the target for network smoothing. Added a call to this function from BeginPlay() in addition to the existing call from PostInitializeComponents(), and exposed this to blueprints as well. This fixes the case of people moving the mesh in BeginPlay rather than in the editor or construction script and not having the mesh offset reflected correctly in network games.
#jira UE-38966
Change 3377880 on 2017/04/03 by Aaron.McLeran
Audio bug fixes
#jira UE-43600 Fixing sounds played by playsoundatlocation for audio volume calculations
#jira UE-43601 Fixing listener volume interpolation
#jida UE-43602 Fixing reverb/eq interpolation
Change 3377908 on 2017/04/03 by Phillip.Kavan
#jira UE-43565 - Fix a regression on type-dependent array function node pins that have more than one link.
Change summary:
- Added FBlueprintEditorUtils::FindLinkedPinWithMostDerivedPinType()
- Modified FBlueprintEditorUtils::FindLinkedPinWithAuthoritativePinType() to properly handle pins that have multiple links.
Change 3377912 on 2017/04/03 by Dan.Oconnor
Fix for missing SUBINSTANCE variables on anim BP skeletons. I elected to force SUBINSTANCE variable creation for the compilation manager codepath
Change 3377946 on 2017/04/03 by Ben.Zeigler
#jira UE-43594 Fix issue with streamable manager where a failed load would leave bAsyncLoadRequestOutstanding, which would confuse later calls to stream the same asset
Lower some error verbosity now that I believe I have tracked down the issue
Change 3377950 on 2017/04/03 by Michael.Noland
Blueprints: Prevent merge tool from crashing in SVN when looking at a file with gaps in the revision history
(May still not work correctly, but it won't crash; full fix covered by UE-43603)
#jira UE-22428
Change 3377981 on 2017/04/03 by Michael.Noland
PR #3416: UE-43005: Prevent crash due to too long name (Contributed by projectgheist)
#jira UE-43291
#jira UE-43005
Change 3378039 on 2017/04/04 by Michael.Noland
PhysX: Allowed the editor to compile when bRuntimePhysicsCooking is disabled (WITH_EDITOR is used in every place in C++ to force it in already)
Change 3378041 on 2017/04/04 by Michael.Noland
Paper2D: Adjusted under what circumstances CreatePhysicsMeshes is called on various Paper2D types to match UProceduralMeshComponent
Change 3378081 on 2017/04/04 by Dan.Oconnor
Fix Blueprint Context nodes so that they don't rely on Ar.IsBeingSaved() call before compilation
3x because of copy/paste
Change 3378094 on 2017/04/04 by Dan.Oconnor
Add missing preload call for compilation manager
Change 3378917 on 2017/04/04 by Marc.Audy
Fix static analysis (which is very dumb)
Change 3378986 on 2017/04/04 by Dan.Oconnor
Fix bad merge
Change 3379100 on 2017/04/04 by Dan.Oconnor
Fix missing CPF_ConstParm/CPF_ReferenceParm/CPF_OutParm logic in 'fast' skeleton path
#jira UE-43629
Change 3379102 on 2017/04/04 by Ben.Zeigler
Actually fix StreamableManager issues with cancelling a request messing up things in the future. We now always queue a request, even if it failed before or there is one in progress. This has to be done to avoid issues with cancelling the existing request or mounting new files after it's failed once
Now that StreamableManager will retry missing files, add failed load packages to the known missing list so it won't spam errors over and over
Change 3379147 on 2017/04/04 by Zak.Middleton
#ue4 - Improve on CL 3377608: Made Character::CacheInitialMeshOffset() take location and rotation params so you can be explicit on the values, in case you try to change these during network smoothing, where reading the relative offsets would have been skewed.
Change 3379254 on 2017/04/04 by Aaron.McLeran
Fixing sounds in audio mixer when no EQ has been set.
Change 3379760 on 2017/04/04 by Ben.Zeigler
#jira UE-43647 Don't delete failed async packages that are rooted
[CL 3380073 by Dan Oconnor in Main branch]
2017-04-04 20:49:52 -04:00
if ( bNeedToUpdateCommentBubble )
{
CommentBubble - > SetCommentBubbleVisibility ( true ) ;
GetNodeObj ( ) - > SetMakeCommentBubbleVisible ( false ) ;
}
else
{
CommentBubble - > TickVisibility ( InCurrentTime , InDeltaTime ) ;
}
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
}
}
}
2014-03-14 14:13:41 -04:00
}
bool SGraphNode : : IsSelectedExclusively ( ) const
{
TSharedPtr < SGraphPanel > OwnerPanel = OwnerGraphPanelPtr . Pin ( ) ;
2014-10-17 05:01:49 -04:00
if ( ! OwnerPanel - > HasKeyboardFocus ( ) | | OwnerPanel - > SelectionManager . GetSelectedNodes ( ) . Num ( ) > 1 )
2014-03-14 14:13:41 -04:00
{
return false ;
}
return OwnerPanel - > SelectionManager . IsNodeSelected ( GraphNode ) ;
}
/** @param OwnerPanel The GraphPanel that this node belongs to */
void SGraphNode : : SetOwner ( const TSharedRef < SGraphPanel > & OwnerPanel )
{
check ( ! OwnerGraphPanelPtr . IsValid ( ) ) ;
2015-01-14 19:04:45 -05:00
SetParentPanel ( OwnerPanel ) ;
2014-03-14 14:13:41 -04:00
OwnerGraphPanelPtr = OwnerPanel ;
2015-06-30 22:14:13 -04:00
GraphNode - > DEPRECATED_NodeWidget = SharedThis ( this ) ;
2014-03-14 14:13:41 -04:00
/*Once we have an owner, and if hide Unused pins is enabled, we need to remake our pins to drop the hidden ones*/
if ( OwnerGraphPanelPtr . Pin ( ) - > GetPinVisibility ( ) ! = SGraphEditor : : Pin_Show
& & LeftNodeBox . IsValid ( )
& & RightNodeBox . IsValid ( ) )
{
this - > LeftNodeBox - > ClearChildren ( ) ;
this - > RightNodeBox - > ClearChildren ( ) ;
CreatePinWidgets ( ) ;
}
}
/** @param NewPosition The Node should be relocated to this position in the graph panel */
2014-05-06 04:45:44 -04:00
void SGraphNode : : MoveTo ( const FVector2D & NewPosition , FNodeSet & NodeFilter )
2014-03-14 14:13:41 -04:00
{
2014-05-06 04:45:44 -04:00
if ( ! NodeFilter . Find ( SharedThis ( this ) ) )
2014-03-14 14:13:41 -04:00
{
2014-05-06 04:45:44 -04:00
if ( GraphNode & & ! RequiresSecondPassLayout ( ) )
2014-03-14 14:13:41 -04:00
{
2014-05-06 04:45:44 -04:00
NodeFilter . Add ( SharedThis ( this ) ) ;
2014-04-02 18:09:23 -04:00
GraphNode - > Modify ( ) ;
2014-03-14 14:13:41 -04:00
GraphNode - > NodePosX = NewPosition . X ;
GraphNode - > NodePosY = NewPosition . Y ;
}
}
}
/** @return the Node's position within the graph */
FVector2D SGraphNode : : GetPosition ( ) const
{
return FVector2D ( GraphNode - > NodePosX , GraphNode - > NodePosY ) ;
}
FString SGraphNode : : GetEditableNodeTitle ( ) const
{
if ( GraphNode ! = NULL )
{
// Trying to catch a non-reproducible crash in this function
check ( GraphNode - > IsValidLowLevel ( ) ) ;
}
if ( GraphNode )
{
2014-04-23 18:30:37 -04:00
return GraphNode - > GetNodeTitle ( ENodeTitleType : : EditableTitle ) . ToString ( ) ;
2014-03-14 14:13:41 -04:00
}
return NSLOCTEXT ( " GraphEditor " , " NullNode " , " Null Node " ) . ToString ( ) ;
// Get the portion of the node that is actually editable text (may be a subsection of the title, or something else entirely)
return ( GraphNode ! = NULL )
2014-04-23 18:30:37 -04:00
? GraphNode - > GetNodeTitle ( ENodeTitleType : : EditableTitle ) . ToString ( )
2014-03-14 14:13:41 -04:00
: NSLOCTEXT ( " GraphEditor " , " NullNode " , " Null Node " ) . ToString ( ) ;
}
FText SGraphNode : : GetEditableNodeTitleAsText ( ) const
{
FString NewString = GetEditableNodeTitle ( ) ;
return FText : : FromString ( NewString ) ;
}
FString SGraphNode : : GetNodeComment ( ) const
{
return GetNodeObj ( ) - > NodeComment ;
}
UObject * SGraphNode : : GetObjectBeingDisplayed ( ) const
{
return GetNodeObj ( ) ;
}
FSlateColor SGraphNode : : GetNodeTitleColor ( ) const
{
2015-02-17 11:23:23 -05:00
FLinearColor ReturnTitleColor = GraphNode - > IsDeprecated ( ) ? FLinearColor : : Red : GetNodeObj ( ) - > GetNodeTitleColor ( ) ;
2015-08-19 14:13:40 -04:00
if ( ! GraphNode - > IsNodeEnabled ( ) )
2015-02-17 11:23:23 -05:00
{
ReturnTitleColor * = FLinearColor ( 0.5f , 0.5f , 0.5f , 0.4f ) ;
}
else
{
ReturnTitleColor . A = FadeCurve . GetLerp ( ) ;
}
return ReturnTitleColor ;
}
FSlateColor SGraphNode : : GetNodeBodyColor ( ) const
{
FLinearColor ReturnBodyColor = FLinearColor : : White ;
2015-08-19 14:13:40 -04:00
if ( ! GraphNode - > IsNodeEnabled ( ) )
2015-02-17 11:23:23 -05:00
{
ReturnBodyColor * = FLinearColor ( 1.0f , 1.0f , 1.0f , 0.5f ) ;
}
return ReturnBodyColor ;
}
FSlateColor SGraphNode : : GetNodeTitleIconColor ( ) const
{
FLinearColor ReturnIconColor = IconColor ;
2015-08-19 14:13:40 -04:00
if ( ! GraphNode - > IsNodeEnabled ( ) )
2015-02-17 11:23:23 -05:00
{
ReturnIconColor * = FLinearColor ( 1.0f , 1.0f , 1.0f , 0.3f ) ;
}
return ReturnIconColor ;
}
FLinearColor SGraphNode : : GetNodeTitleTextColor ( ) const
{
FLinearColor ReturnTextColor = FLinearColor : : White ;
2015-08-19 14:13:40 -04:00
if ( ! GraphNode - > IsNodeEnabled ( ) )
2015-02-17 11:23:23 -05:00
{
ReturnTextColor * = FLinearColor ( 1.0f , 1.0f , 1.0f , 0.3f ) ;
}
return ReturnTextColor ;
2014-03-14 14:13:41 -04:00
}
FSlateColor SGraphNode : : GetNodeCommentColor ( ) const
{
return GetNodeObj ( ) - > GetNodeCommentColor ( ) ;
}
/** @return the tooltip to display when over the node */
FText SGraphNode : : GetNodeTooltip ( ) const
{
if ( GraphNode ! = NULL )
{
2014-04-23 18:30:37 -04:00
// Display the native title of the node when alt is held
if ( FSlateApplication : : Get ( ) . GetModifierKeys ( ) . IsAltDown ( ) )
{
2014-06-23 15:36:50 -04:00
return FText : : FromString ( GraphNode - > GetNodeTitle ( ENodeTitleType : : ListView ) . BuildSourceString ( ) ) ;
2014-04-23 18:30:37 -04:00
}
2014-09-03 18:14:09 -04:00
FText TooltipText = GraphNode - > GetTooltipText ( ) ;
2014-03-14 14:13:41 -04:00
if ( UEdGraph * Graph = GraphNode - > GetGraph ( ) )
{
// If the node resides in an intermediate graph, show the UObject name for debug purposes
if ( Graph - > HasAnyFlags ( RF_Transient ) )
{
2014-04-23 18:30:37 -04:00
FFormatNamedArguments Args ;
Args . Add ( TEXT ( " NodeName " ) , FText : : FromString ( GraphNode - > GetName ( ) ) ) ;
Args . Add ( TEXT ( " TooltipText " ) , TooltipText ) ;
TooltipText = FText : : Format ( NSLOCTEXT ( " GraphEditor " , " GraphNodeTooltip " , " {NodeName} \n \n {TooltipText} " ) , Args ) ;
2014-03-14 14:13:41 -04:00
}
}
if ( TooltipText . IsEmpty ( ) )
{
2014-04-23 18:30:37 -04:00
TooltipText = GraphNode - > GetNodeTitle ( ENodeTitleType : : FullTitle ) ;
2014-03-14 14:13:41 -04:00
}
return TooltipText ;
}
else
{
return NSLOCTEXT ( " GraphEditor " , " InvalidGraphNode " , " <Invalid graph node> " ) ;
}
}
/** @return the node being observed by this widget*/
UEdGraphNode * SGraphNode : : GetNodeObj ( ) const
{
return GraphNode ;
}
2014-09-11 07:02:40 -04:00
TSharedRef < SGraphNode > SGraphNode : : GetNodeUnderMouse ( const FGeometry & MyGeometry , const FPointerEvent & MouseEvent )
{
return StaticCastSharedRef < SGraphNode > ( AsShared ( ) ) ;
}
2014-03-14 14:13:41 -04:00
TSharedPtr < SGraphPanel > SGraphNode : : GetOwnerPanel ( ) const
{
return OwnerGraphPanelPtr . Pin ( ) ;
}
void SGraphNode : : UpdateErrorInfo ( )
{
//Check for node errors/warnings
if ( GraphNode - > bHasCompilerMessage )
{
if ( GraphNode - > ErrorType < = EMessageSeverity : : Error )
{
ErrorMsg = FString ( TEXT ( " ERROR! " ) ) ;
ErrorColor = FEditorStyle : : GetColor ( " ErrorReporting.BackgroundColor " ) ;
}
else if ( GraphNode - > ErrorType < = EMessageSeverity : : Warning )
{
ErrorMsg = FString ( TEXT ( " WARNING! " ) ) ;
ErrorColor = FEditorStyle : : GetColor ( " ErrorReporting.WarningBackgroundColor " ) ;
}
else
{
ErrorMsg = FString ( TEXT ( " NOTE " ) ) ;
ErrorColor = FEditorStyle : : GetColor ( " InfoReporting.BackgroundColor " ) ;
}
}
2016-02-26 16:58:26 -05:00
else if ( ! GraphNode - > NodeUpgradeMessage . IsEmpty ( ) )
{
ErrorMsg = FString ( TEXT ( " UPGRADE NOTE " ) ) ;
ErrorColor = FEditorStyle : : GetColor ( " InfoReporting.BackgroundColor " ) ;
}
2014-03-14 14:13:41 -04:00
else
{
ErrorColor = FLinearColor ( 0 , 0 , 0 ) ;
ErrorMsg . Empty ( ) ;
}
}
2015-01-15 15:57:51 -05:00
void SGraphNode : : SetupErrorReporting ( )
2014-03-14 14:13:41 -04:00
{
UpdateErrorInfo ( ) ;
2015-01-15 15:57:51 -05:00
if ( ! ErrorReporting . IsValid ( ) )
{
TSharedPtr < SErrorText > ErrorTextWidget ;
2014-03-14 14:13:41 -04:00
2015-01-15 15:57:51 -05:00
// generate widget
SAssignNew ( ErrorTextWidget , SErrorText )
. BackgroundColor ( this , & SGraphNode : : GetErrorColor )
. ToolTipText ( this , & SGraphNode : : GetErrorMsgToolTip ) ;
ErrorReporting = ErrorTextWidget ;
}
2014-03-14 14:13:41 -04:00
ErrorReporting - > SetError ( ErrorMsg ) ;
}
TSharedRef < SWidget > SGraphNode : : CreateTitleWidget ( TSharedPtr < SNodeTitle > NodeTitle )
{
2015-02-17 11:23:23 -05:00
SAssignNew ( InlineEditableText , SInlineEditableTextBlock )
2014-03-14 14:13:41 -04:00
. Style ( FEditorStyle : : Get ( ) , " Graph.Node.NodeTitleInlineEditableText " )
. Text ( NodeTitle . Get ( ) , & SNodeTitle : : GetHeadTitle )
. OnVerifyTextChanged ( this , & SGraphNode : : OnVerifyNameTextChanged )
. OnTextCommitted ( this , & SGraphNode : : OnNameTextCommited )
. IsReadOnly ( this , & SGraphNode : : IsNameReadOnly )
. IsSelected ( this , & SGraphNode : : IsSelectedExclusively ) ;
2015-02-17 11:23:23 -05:00
InlineEditableText - > SetColorAndOpacity ( TAttribute < FLinearColor > : : Create ( TAttribute < FLinearColor > : : FGetter : : CreateSP ( this , & SGraphNode : : GetNodeTitleTextColor ) ) ) ;
return InlineEditableText . ToSharedRef ( ) ;
2014-03-14 14:13:41 -04:00
}
/**
* Update this GraphNode to match the data that it is observing
*/
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
void SGraphNode : : UpdateGraphNode ( )
{
InputPins . Empty ( ) ;
OutputPins . Empty ( ) ;
// Reset variables that are going to be exposed, in case we are refreshing an already setup node.
RightNodeBox . Reset ( ) ;
LeftNodeBox . Reset ( ) ;
//
// ______________________
// | TITLE AREA |
// +-------+------+-------+
// | (>) L | | R (>) |
// | (>) E | | I (>) |
// | (>) F | | G (>) |
// | (>) T | | H (>) |
// | | | T (>) |
// |_______|______|_______|
//
TSharedPtr < SVerticalBox > MainVerticalBox ;
2015-01-15 15:57:51 -05:00
SetupErrorReporting ( ) ;
2014-03-14 14:13:41 -04:00
TSharedPtr < SNodeTitle > NodeTitle = SNew ( SNodeTitle , GraphNode ) ;
// Get node icon
2015-02-17 11:23:23 -05:00
IconColor = FLinearColor : : White ;
2014-03-14 14:13:41 -04:00
const FSlateBrush * IconBrush = NULL ;
if ( GraphNode ! = NULL & & GraphNode - > ShowPaletteIconOnNode ( ) )
{
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
IconBrush = GraphNode - > GetIconAndTint ( IconColor ) . GetOptionalIcon ( ) ;
2014-03-14 14:13:41 -04:00
}
TSharedRef < SOverlay > DefaultTitleAreaWidget =
SNew ( SOverlay )
+ SOverlay : : Slot ( )
[
SNew ( SImage )
. Image ( FEditorStyle : : GetBrush ( " Graph.Node.TitleGloss " ) )
2015-02-17 11:23:23 -05:00
. ColorAndOpacity ( this , & SGraphNode : : GetNodeTitleIconColor )
2014-03-14 14:13:41 -04:00
]
+ SOverlay : : Slot ( )
. HAlign ( HAlign_Left )
. VAlign ( VAlign_Center )
[
SNew ( SBorder )
. BorderImage ( FEditorStyle : : GetBrush ( " Graph.Node.ColorSpill " ) )
// The extra margin on the right
// is for making the color spill stretch well past the node title
. Padding ( FMargin ( 10 , 5 , 30 , 3 ) )
. BorderBackgroundColor ( this , & SGraphNode : : GetNodeTitleColor )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. VAlign ( VAlign_Top )
. Padding ( FMargin ( 0.f , 0.f , 4.f , 0.f ) )
. AutoWidth ( )
[
SNew ( SImage )
. Image ( IconBrush )
2015-02-17 11:23:23 -05:00
. ColorAndOpacity ( this , & SGraphNode : : GetNodeTitleIconColor )
2014-03-14 14:13:41 -04:00
]
+ SHorizontalBox : : Slot ( )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
CreateTitleWidget ( NodeTitle )
]
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
NodeTitle . ToSharedRef ( )
]
]
]
]
+ SOverlay : : Slot ( )
. VAlign ( VAlign_Top )
[
SNew ( SBorder )
. Visibility ( EVisibility : : HitTestInvisible )
. BorderImage ( FEditorStyle : : GetBrush ( " Graph.Node.TitleHighlight " ) )
2015-02-17 11:23:23 -05:00
. BorderBackgroundColor ( this , & SGraphNode : : GetNodeTitleIconColor )
2014-03-14 14:13:41 -04:00
[
SNew ( SSpacer )
. Size ( FVector2D ( 20 , 20 ) )
]
] ;
SetDefaultTitleAreaWidget ( DefaultTitleAreaWidget ) ;
TSharedRef < SWidget > TitleAreaWidget =
SNew ( SLevelOfDetailBranchNode )
. UseLowDetailSlot ( this , & SGraphNode : : UseLowDetailNodeTitles )
. LowDetail ( )
[
SNew ( SBorder )
. BorderImage ( FEditorStyle : : GetBrush ( " Graph.Node.ColorSpill " ) )
. Padding ( FMargin ( 75.0f , 22.0f ) ) // Saving enough space for a 'typical' title so the transition isn't quite so abrupt
. BorderBackgroundColor ( this , & SGraphNode : : GetNodeTitleColor )
]
. HighDetail ( )
[
DefaultTitleAreaWidget
] ;
if ( ! SWidget : : GetToolTip ( ) . IsValid ( ) )
{
TSharedRef < SToolTip > DefaultToolTip = IDocumentation : : Get ( ) - > CreateToolTip ( TAttribute < FText > ( this , & SGraphNode : : GetNodeTooltip ) , NULL , GraphNode - > GetDocumentationLink ( ) , GraphNode - > GetDocumentationExcerptName ( ) ) ;
SetToolTip ( DefaultToolTip ) ;
}
2014-09-05 07:39:52 -04:00
// Setup a meta tag for this node
FGraphNodeMetaData TagMeta ( TEXT ( " Graphnode " ) ) ;
PopulateMetaTag ( & TagMeta ) ;
2014-08-13 03:41:45 -04:00
2014-03-14 14:13:41 -04:00
TSharedPtr < SVerticalBox > InnerVerticalBox ;
this - > ContentScale . Bind ( this , & SGraphNode : : GetContentScale ) ;
2014-09-15 21:48:46 -04:00
2014-11-03 10:40:57 -05:00
this - > GetOrAddSlot ( ENodeZone : : Center )
2014-03-14 14:13:41 -04:00
. HAlign ( HAlign_Center )
. VAlign ( VAlign_Center )
[
SAssignNew ( MainVerticalBox , SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
2014-09-15 21:48:46 -04:00
SNew ( SOverlay )
2014-09-05 07:39:52 -04:00
. AddMetaData < FGraphNodeMetaData > ( TagMeta )
2014-09-15 21:48:46 -04:00
+ SOverlay : : Slot ( )
. Padding ( Settings - > GetNonPinNodeBodyPadding ( ) )
[
SNew ( SImage )
. Image ( FEditorStyle : : GetBrush ( " Graph.Node.Body " ) )
2015-02-17 11:23:23 -05:00
. ColorAndOpacity ( this , & SGraphNode : : GetNodeBodyColor )
2014-09-15 21:48:46 -04:00
]
+ SOverlay : : Slot ( )
2014-03-14 14:13:41 -04:00
[
SAssignNew ( InnerVerticalBox , SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. HAlign ( HAlign_Fill )
. VAlign ( VAlign_Top )
2014-09-15 21:48:46 -04:00
. Padding ( Settings - > GetNonPinNodeBodyPadding ( ) )
2014-03-14 14:13:41 -04:00
[
TitleAreaWidget
]
2014-09-15 21:48:46 -04:00
2014-03-14 14:13:41 -04:00
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. HAlign ( HAlign_Fill )
. VAlign ( VAlign_Top )
[
Copying //UE4/Dev-Blueprints to //UE4/Dev-Main (Source: //UE4/Dev-Blueprints @ 3099612)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
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 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 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 3081792 on 2016/08/08 by Dan.Oconnor
Widget and Animation blueprint diffing is no longer experimental, added warning explaining shortcomings. This is preferrable because the text diff is basically useless
#jira UE-1234
Change 3081865 on 2016/08/09 by Dan.Oconnor
build fix
#jria UE-1234
Change 3082839 on 2016/08/09 by Bob.Tellez
Duplicating CL#3082835 from //Fortnite/Main
#UE4 Fix an issue where changing an array property in the defaults will leave the custom property chain stale until it is compiled, causing a crash in some circumstances.
Change 3083367 on 2016/08/09 by Dan.Oconnor
Fix for actors detaching when compiling a blueprint, needed to read attachment data before actors are destroyed, in case we're attached to another instance of the same type. Deemed too risky for 4.13.
#jira UE-33278
Change 3083825 on 2016/08/10 by Maciej.Mroz
#jira UE-34372 [CrashReport] UE4Editor_CoreUObject!StaticAllocateObject() [uobjectglobals.cpp:2102]
VariableNames are validated at the begining of FKismetCompilerContext::Compile, because the validation requires CDO.
Removed legacy code from FBlueprintEditorUtils::RenameMemberVariable.
Change 3084313 on 2016/08/10 by Maciej.Mroz
#jira UE-33883 Packaging with Nativize Blueprint Assets Causes Uninitialized Defaults
Change 3085572 on 2016/08/11 by Maciej.Mroz
#jira UE-34436 Ensures when copy/pasting linked anim bp nodes
Redone cl#3085568 from 4.13 branch
FGraphObjectTextFactory doesn't call compilation (it is called later by FBlueprintEditor::PasteNodesHere, when all nodes are pasted). CallFunction can be pasted even when it's function doesn't exist. The function could be created from a CustomEvent node, that was also pasted (so it wasn't compiled yet).
Change 3087171 on 2016/08/12 by Maciej.Mroz
BP Nativization:
- FCustomThunkTemplates functions have the same declarations as original functions in Kismet Array Library
- Properly declared scope of final functions
- "AdditionalPublicDependencyModuleNames" option in "BlueprintNativizationSettings" (applied in Orion)
Change 3088713 on 2016/08/15 by Ben.Cosh
This updates the tunnel boundary compile time code to catch end of thread execution inside tunnels and provide instrumentation for it.
#Jira UE-33563 - Macros without any outputs do not have their stats listed when called from a Keypress Event when profiling.
#Proj BlueprintGraph, BlueprintProfiler, Kismet, KismetCompiler, UnrealEd
Change 3088734 on 2016/08/15 by Ben.Cosh
Minor change to the changes submitted in CL 3088713 after finding an issue during use.
#Jira UE-33563 - Macros without any outputs do not have their stats listed when called from a Keypress Event when profiling.
#Proj BlueprintGraph, BlueprintProfiler, Kismet, KismetCompiler, UnrealEd
Change 3091248 on 2016/08/16 by Dan.Oconnor
Removing unused function
Change 3091555 on 2016/08/17 by Maciej.Mroz
#jira UE-34745 [CrashReport] UE4Editor_BlueprintGraph!UEdGraphSchema_K2::CreateSubstituteNode() [edgraphschema_k2.cpp:5601]
Fixed unsafe code.
Change 3091767 on 2016/08/17 by Ben.Cosh
Minor refresh on the threshold settings interface to allow more immediate visualisation of thresholds.
#Jira UE-33572 - BP Profiler - Refresh heatmap coloring when thresholds changed.
#Jira UE-33702 - BP Profiler - Custom heatmap thresholds appear to be broken
#Jira UE-33698 - BP Profiler: Default heatmaps to on
#Proj Kismet, BlueprintProfiler
Reviewer notes:
- Added an interfacel to indicate if performance thresholds have changed in BlueprintProfilerSettings so we can action changes
- Added code to force update heat interfaces in the blueprintprofiler if thresholds are dirty.
- Modified the BlueprintProfilerToolbar to reflect the above changes and only save settings when the combo dialog is closed ( saving on change makes the sliders unusable )
- Fixed the custom thresholds ( made them reciprical ) for testing.
- Node heatmaps default to average
- Heatmap display modes now get saved to the config
Change 3091770 on 2016/08/17 by Ben.Cosh
Refresh on the blueprint profiler node heatmaps
#Jira UE-34802 - Fix the blueprint profiler node heatmaps, the current visualisation is first pass prototype.
#Proj GraphEditor, EditorStyle
Reviewer notes:
- Quick update on the node heatmaps moving to a more graph editor sympathetic approach in code
- Removed the old interfaces and added a new overlay pass in the grapheditor processed before the node shadow brushes.
- Now the nodes have an outline/glow heatmap that doesn't color the node body ( I have an alternate set of images that also color the body if we decide on we still want that )
Change 3091972 on 2016/08/17 by Ben.Cosh
Changing the blueprint profiler heatmap displays to be full node colorisation.
#Jira none
Change 3092515 on 2016/08/17 by Ryan.Rauschkolb
Fixed Struct Ref pin in UK2Node_SetFieldsInStruct can be split when optional pins are visible
#UE-34060
Change 3093644 on 2016/08/18 by Maciej.Mroz
#jira UE-31754 BP interface signature change doesn't update child Blueprint
- Introduced FCustomCompilationSettingsMap. FKismetEditorUtilities::CompileBlueprint can compile many blueprints (due to reinstaning), now we can specify separate compilation settings for each BP.
- Simplified FKismetEditorUtilities::CompileBlueprint parameters list
- FunctionEntry and FunctionResult nodes depends on Interface (if they implement a function , that was declared in the interface).
- Interface is primary source of function signature (previously it was parent class)
- When an Interface is compiled all BPs, that implement it, have refreshed nodes in proper order.
- FBlueprintEditor::Compile ensures, that all parent classes of current BP are up-to-date
Change 3093694 on 2016/08/18 by samuel.proctor
Adding members to QA Test UDS
Change 3096778 on 2016/08/22 by Mike.Beach
Fixing Dev-BP CIS - closing bracket was mistakenly removed (thanks auto-merge).
Change 3097150 on 2016/08/22 by Mike.Beach
When converting function entry/exit nodes from an interface, set the replacement user-defined pins "DesiredDirection" properly (we now reject pins that don't match the expected direction, and user-defined pins created this way were setup wrong).
#jira UE-34985
Change 3097878 on 2016/08/23 by Ryan.Rauschkolb
BP Profiler: Fixed stack overflow when compiling tunnels that contain loops
#jira UE-34767
Change 3098294 on 2016/08/23 by Maciej.Mroz
#jira UE-30031, UE-34760, UE-34761
- Use Delta Serialization when exporting UDS value as text
- Default Values of Local Variables (of UDS type) are refreshed while BP regeneration
- Importing struct from text uses property guid (see CustomFindProperty)
Change 3098599 on 2016/08/23 by Ryan.Rauschkolb
Fixed option for split struct pin not appearing in context menu
#jira UE-35108
[CL 3100065 by Mike Beach in Main branch]
2016-08-24 16:19:07 -04:00
CreateNodeContentArea ( )
2014-03-14 14:13:41 -04:00
]
2014-09-15 21:48:46 -04:00
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. Padding ( Settings - > GetNonPinNodeBodyPadding ( ) )
[
2015-01-15 15:57:51 -05:00
ErrorReporting - > AsWidget ( )
2014-09-15 21:48:46 -04:00
]
2014-03-14 14:13:41 -04:00
]
]
] ;
2014-11-03 10:40:57 -05:00
// Create comment bubble
TSharedPtr < SCommentBubble > CommentBubble ;
2015-04-08 14:48:01 -04:00
const FSlateColor CommentColor = GetDefault < UGraphEditorSettings > ( ) - > DefaultCommentNodeTitleColor ;
2014-11-03 10:40:57 -05:00
SAssignNew ( CommentBubble , SCommentBubble )
. GraphNode ( GraphNode )
. Text ( this , & SGraphNode : : GetNodeComment )
2015-04-28 04:58:34 -04:00
. OnTextCommitted ( this , & SGraphNode : : OnCommentTextCommitted )
2015-05-29 09:56:42 -04:00
. OnToggled ( this , & SGraphNode : : OnCommentBubbleToggled )
2015-04-08 14:48:01 -04:00
. ColorAndOpacity ( CommentColor )
2014-11-03 10:40:57 -05:00
. AllowPinning ( true )
. EnableTitleBarBubble ( true )
. EnableBubbleCtrls ( true )
. GraphLOD ( this , & SGraphNode : : GetCurrentLOD )
. IsGraphNodeHovered ( this , & SGraphNode : : IsHovered ) ;
GetOrAddSlot ( ENodeZone : : TopCenter )
. SlotOffset ( TAttribute < FVector2D > ( CommentBubble . Get ( ) , & SCommentBubble : : GetOffset ) )
. SlotSize ( TAttribute < FVector2D > ( CommentBubble . Get ( ) , & SCommentBubble : : GetSize ) )
. AllowScaling ( TAttribute < bool > ( CommentBubble . Get ( ) , & SCommentBubble : : IsScalingAllowed ) )
. VAlign ( VAlign_Top )
[
CommentBubble . ToSharedRef ( )
] ;
2014-03-14 14:13:41 -04:00
CreateBelowWidgetControls ( MainVerticalBox ) ;
CreatePinWidgets ( ) ;
2014-04-02 18:09:23 -04:00
CreateInputSideAddButton ( LeftNodeBox ) ;
CreateOutputSideAddButton ( RightNodeBox ) ;
2014-03-14 14:13:41 -04:00
CreateBelowPinControls ( InnerVerticalBox ) ;
CreateAdvancedViewArrow ( InnerVerticalBox ) ;
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
TSharedRef < SWidget > SGraphNode : : CreateNodeContentArea ( )
{
// NODE CONTENT AREA
return SNew ( SBorder )
. BorderImage ( FEditorStyle : : GetBrush ( " NoBorder " ) )
. HAlign ( HAlign_Fill )
. VAlign ( VAlign_Fill )
. Padding ( FMargin ( 0 , 3 ) )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. HAlign ( HAlign_Left )
. FillWidth ( 1.0f )
[
// LEFT
SAssignNew ( LeftNodeBox , SVerticalBox )
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. HAlign ( HAlign_Right )
[
// RIGHT
SAssignNew ( RightNodeBox , SVerticalBox )
]
] ;
}
/** Returns visibility of AdvancedViewButton */
EVisibility SGraphNode : : AdvancedViewArrowVisibility ( ) const
{
const bool bShowAdvancedViewArrow = GraphNode & & ( ENodeAdvancedPins : : NoPins ! = GraphNode - > AdvancedPinDisplay ) ;
return bShowAdvancedViewArrow ? EVisibility : : Visible : EVisibility : : Collapsed ;
}
2014-12-10 14:24:09 -05:00
void SGraphNode : : OnAdvancedViewChanged ( const ECheckBoxState NewCheckedState )
2014-03-14 14:13:41 -04:00
{
if ( GraphNode & & ( ENodeAdvancedPins : : NoPins ! = GraphNode - > AdvancedPinDisplay ) )
{
2014-12-10 14:24:09 -05:00
const bool bAdvancedPinsHidden = ( NewCheckedState ! = ECheckBoxState : : Checked ) ;
2014-03-14 14:13:41 -04:00
GraphNode - > AdvancedPinDisplay = bAdvancedPinsHidden ? ENodeAdvancedPins : : Hidden : ENodeAdvancedPins : : Shown ;
}
}
2014-12-10 14:24:09 -05:00
ECheckBoxState SGraphNode : : IsAdvancedViewChecked ( ) const
2014-03-14 14:13:41 -04:00
{
const bool bAdvancedPinsHidden = GraphNode & & ( ENodeAdvancedPins : : Hidden = = GraphNode - > AdvancedPinDisplay ) ;
2014-12-10 14:24:09 -05:00
return bAdvancedPinsHidden ? ECheckBoxState : : Unchecked : ECheckBoxState : : Checked ;
2014-03-14 14:13:41 -04:00
}
const FSlateBrush * SGraphNode : : GetAdvancedViewArrow ( ) const
{
const bool bAdvancedPinsHidden = GraphNode & & ( ENodeAdvancedPins : : Hidden = = GraphNode - > AdvancedPinDisplay ) ;
return FEditorStyle : : GetBrush ( bAdvancedPinsHidden ? TEXT ( " Kismet.TitleBarEditor.ArrowDown " ) : TEXT ( " Kismet.TitleBarEditor.ArrowUp " ) ) ;
}
/** Create widget to show/hide advanced pins */
void SGraphNode : : CreateAdvancedViewArrow ( TSharedPtr < SVerticalBox > MainBox )
{
const bool bHidePins = OwnerGraphPanelPtr . IsValid ( ) & & ( OwnerGraphPanelPtr . Pin ( ) - > GetPinVisibility ( ) ! = SGraphEditor : : Pin_Show ) ;
const bool bAnyAdvancedPin = GraphNode & & ( ENodeAdvancedPins : : NoPins ! = GraphNode - > AdvancedPinDisplay ) ;
if ( ! bHidePins & & GraphNode & & MainBox . IsValid ( ) )
{
MainBox - > AddSlot ( )
. AutoHeight ( )
. HAlign ( HAlign_Fill )
. VAlign ( VAlign_Top )
. Padding ( 3 , 0 , 3 , 3 )
[
SNew ( SCheckBox )
. Visibility ( this , & SGraphNode : : AdvancedViewArrowVisibility )
. OnCheckStateChanged ( this , & SGraphNode : : OnAdvancedViewChanged )
. IsChecked ( this , & SGraphNode : : IsAdvancedViewChecked )
. Cursor ( EMouseCursor : : Default )
. Style ( FEditorStyle : : Get ( ) , " Graph.Node.AdvancedView " )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. VAlign ( VAlign_Center )
. HAlign ( HAlign_Center )
[
SNew ( SImage )
. Image ( this , & SGraphNode : : GetAdvancedViewArrow )
]
]
] ;
}
}
2016-03-11 09:55:03 -05:00
bool SGraphNode : : ShouldPinBeHidden ( const UEdGraphPin * InPin ) const
2014-03-14 14:13:41 -04:00
{
const UEdGraphSchema_K2 * K2Schema = Cast < const UEdGraphSchema_K2 > ( GraphNode - > GetSchema ( ) ) ;
bool bHideNoConnectionPins = false ;
bool bHideNoConnectionNoDefaultPins = false ;
// Not allowed to hide exec pins
2016-03-11 09:55:03 -05:00
const bool bCanHidePin = ( K2Schema & & ( InPin - > PinType . PinCategory ! = K2Schema - > PC_Exec ) ) ;
2014-03-14 14:13:41 -04:00
if ( OwnerGraphPanelPtr . IsValid ( ) & & bCanHidePin )
{
bHideNoConnectionPins = OwnerGraphPanelPtr . Pin ( ) - > GetPinVisibility ( ) = = SGraphEditor : : Pin_HideNoConnection ;
bHideNoConnectionNoDefaultPins = OwnerGraphPanelPtr . Pin ( ) - > GetPinVisibility ( ) = = SGraphEditor : : Pin_HideNoConnectionNoDefault ;
}
2016-03-11 09:55:03 -05:00
const bool bIsOutputPin = InPin - > Direction = = EGPD_Output ;
const bool bPinHasDefaultValue = ! InPin - > DefaultValue . IsEmpty ( ) | | ( InPin - > DefaultObject ! = NULL ) ;
const bool bIsSelfTarget = K2Schema & & ( InPin - > PinType . PinCategory = = K2Schema - > PC_Object ) & & ( InPin - > PinName = = K2Schema - > PN_Self ) ;
2014-03-14 14:13:41 -04:00
const bool bPinHasValidDefault = ! bIsOutputPin & & ( bPinHasDefaultValue | | bIsSelfTarget ) ;
2016-03-11 09:55:03 -05:00
const bool bPinHasConections = InPin - > LinkedTo . Num ( ) > 0 ;
2014-03-14 14:13:41 -04:00
2016-03-11 09:55:03 -05:00
const bool bPinDesiresToBeHidden = InPin - > bHidden | | ( bHideNoConnectionPins & & ! bPinHasConections ) | | ( bHideNoConnectionNoDefaultPins & & ! bPinHasConections & & ! bPinHasValidDefault ) ;
2014-03-14 14:13:41 -04:00
// No matter how strong the desire, a pin with connections can never be hidden!
const bool bShowPin = ! bPinDesiresToBeHidden | | bPinHasConections ;
2016-03-11 09:55:03 -05:00
return bShowPin ;
}
void SGraphNode : : CreateStandardPinWidget ( UEdGraphPin * CurPin )
{
const bool bShowPin = ShouldPinBeHidden ( CurPin ) ;
2014-03-14 14:13:41 -04:00
if ( bShowPin )
{
TSharedPtr < SGraphPin > NewPin = CreatePinWidget ( CurPin ) ;
check ( NewPin . IsValid ( ) ) ;
this - > AddPin ( NewPin . ToSharedRef ( ) ) ;
}
}
void SGraphNode : : CreatePinWidgets ( )
{
// Create Pin widgets for each of the pins.
for ( int32 PinIndex = 0 ; PinIndex < GraphNode - > Pins . Num ( ) ; + + PinIndex )
{
UEdGraphPin * CurPin = GraphNode - > Pins [ PinIndex ] ;
Copying //UE4/Dev-Blueprints to //UE4/Dev-Main (Source: //UE4/Dev-Blueprints @ 2967759)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2919729 on 2016/03/23 by Ben.Cosh
Support for macros in the profiler
#UEBP-177 - Macro instance handling
#Proj Kismet, BlueprintProfiler
- Adds support for timings inside macro calls
- Extends the tunnel graph support to handle multiple entry/exit sites
Change 2938064 on 2016/04/08 by Phillip.Kavan
[UE-17794] The "Delete Unused Variable" feature now considers the GetClassDefaults node as well.
change summary:
- added external linkage to UK2Node_GetClassDefaults::FindClassPin().
- added an include for the K2Node_GetClassDefaults header file to BlueprintGraphDefinitions.h.
- added UK2Node_GetClassDefaults::GetInputClass() as a public API w/ external linkage; moved default 'nullptr' param logic into this impl.
- modified FBlueprintEditorUtils::IsVariableUsed() to add an extra check for a GetClassDefaults node with a visible output pin for the variable that's also connected.
- modified UK2Node_GetClassDefaults::GetInputClass() to return the generated skeleton class for Blueprint class types.
Change 2938088 on 2016/04/08 by Mike.Beach
Making bytecode produced by latent action nodes deterministic.
Change 2938101 on 2016/04/08 by Mike.Beach
Fixing a bug where the compile summary was not being reported because another compiler log was lingering - making it so the MathExpression node compiler log is not initialized with intent to report its own summary (it gets folded into the primary log).
Change 2938121 on 2016/04/08 by Phillip.Kavan
Remove a few redundant MBASM calls on variable type change.
Change 2940295 on 2016/04/11 by Dan.Oconnor
We now 'tag subobjects' of a blueprint even if it's part of the rootset, this means we correctly detect references to the BPGC in FPendingDelete::CheckForReferences(). Original rootset check dates to 2012 and I can find no justification for it currently.
#jira UE-29216
Change 2943227 on 2016/04/13 by Dan.Oconnor
Fixed improper detection of functions from interfaces that themselves inherit from some other interface
#jira UE-29440
Change 2944270 on 2016/04/14 by Phillip.Kavan
[UEBP-176] First pass at BP graph node heat map visualization while profiling.
change summary:
- added an "indicator overlay" to graph node widget layouts
- added a heat mode "mode" selector widget to the BP profiler view panel
- extended IBlueprintProfilerInterface to include APIs for accessing current heat map mode state
- added FScriptNodePerfData::GetBlueprintPerfDataForAllTracePaths() (tentative - may need revisiting)
- added SGraphNode::GetNodeIndicatorOverlayColor() and GetNodeIndicatorOverlayVisibility() delegates
- added BP-specific delegate overrides to SGraphNodeK2Base; extended to include both compact and variable nodes
Change 2946932 on 2016/04/18 by Mike.Beach
Guarding against invalid EdGraphPins (ones that have been moved to the transient package) when constructing the widget - prevents a crash that we've been unable to repro or determine the cause of (turns it instead into an ensure, so we can collect more contextual information on the issue).
#jira UE-26998
Change 2949968 on 2016/04/20 by Dan.Oconnor
Array access out of bounds by value is a warning again, added ability to elevate individual warnings on a per project basis (or supress them)
#jira UE-28971
Change 2950113 on 2016/04/20 by Dan.Oconnor
Removed GBlueprintCompileTime, it was not accurate. Printing BlueprintCompileAndLoadTimerData.GetTime() at start instead
Change 2951086 on 2016/04/21 by Ben.Cosh
This change addresses the edge case in the blueprint profiler that caused stats to fail when tunnel nodes were linked through to other tunnel nodes.
#jira UE-28750 - Crash compiling a Blueprint that contains a For Loop with profiler active
#Proj Kismet, BlueprintProfiler
Change 2951336 on 2016/04/21 by Ben.Cosh
This change enables blueprint breakpoints during instrumented conditions.
#jira UEBP-178 - Fix breakpoints under profiling conditions
#Proj CoreUObject, BlueprintProfiler, UnrealEd, KismetCompiler
Change 2951406 on 2016/04/21 by Ben.Cosh
Fix for blueprint profiler stats for the top level blueprint stat entry not updating correctly.
#Proj Kismet
Change 2951832 on 2016/04/21 by Ben.Cosh
Fix for certain blueprint profiler stats not being updated and collected at the blueprint container level due to incorrect tracepaths.
#Proj Kismet
#info This should fix the node heatmaps as a side effect.
#Codereview Phillip.Kavan
Change 2956696 on 2016/04/26 by Dan.Oconnor
Tweak fix for macros being BS_Dirty after loading. The current fix had the side effect of not recompiling clients of the macro after making a change to the macro and entering PIE
#jira UE-29495
Change 2957564 on 2016/04/27 by Maciej.Mroz
Various fixes related to nativized enums.
#jira UE-27735 Enumerators are not set correctly in packaged games if Nativize Blueprint Assets is set to true
Change 2961626 on 2016/04/29 by Mike.Beach
Merging //UE4/Dev-Main to Dev-Blueprints (//UE4/Dev-Blueprints)
Change 2962747 on 2016/05/02 by Maciej.Mroz
#jira UE-30123 Cannot use abilities in nativized Orion build
GameplayAbility handles BPGC and DynamicClass the same way.
C++ backend do not assumes that some literal objects are UserDefinesEnum/UserDefinedStruct/BlueprintGeneratedClass.
Change 2965679 on 2016/05/04 by Maciej.Mroz
Increased stack size (384k) of threads spawned by Task Graph.
(Temporary?) fix for stack overflow, when amination in Orion are evaluated.
Change 2965758 on 2016/05/04 by Maciej.Mroz
#jira UE-30300 "ReturnToBase" ability does not work in nativized Orion.
Fixed CDO creation in async loaded Dynamic Class.
Fixed too restrict cast assertions.
Change 2966543 on 2016/05/04 by Maciej.Mroz
#jira UE-30235 Mac QAGame fails to package with nativization
#jira UE-30282 Match3 nativized android package fails to build
Change 2966839 on 2016/05/04 by Dan.Oconnor
Typo IMPLEMENT_MODULE creates weird linking error, also may need entry in Target.cs to get BlueprintRuntime to build. Copying that pattern from ___LoadingScreen modules
#jira UE-30333
Change 2967347 on 2016/05/05 by Maciej.Mroz
#jira UE-30196 Unable to package a copy of project with Nativize Blueprints enabled
CommandUtils.GetDirectoryName should not be used with directory path (but only with file path), because it cannot handle paths like "e:\My11Project 4.13" (containing '.'). It seems useless with directory path anyway.
[CL 2968184 by Dan Oconnor in Main branch]
2016-05-05 18:28:40 -04:00
if ( ! ensureMsgf ( CurPin - > GetOuter ( ) = = GraphNode
, TEXT ( " Graph node ('%s' - %s) has an invalid %s pin: '%s'; (with a bad %s outer: '%s'); skiping creation of a widget for this pin. " )
, * GraphNode - > GetNodeTitle ( ENodeTitleType : : ListView ) . ToString ( )
, * GraphNode - > GetPathName ( )
, ( CurPin - > Direction = = EEdGraphPinDirection : : EGPD_Input ) ? TEXT ( " input " ) : TEXT ( " output " )
, CurPin - > PinFriendlyName . IsEmpty ( ) ? * CurPin - > PinName : * CurPin - > PinFriendlyName . ToString ( )
, CurPin - > GetOuter ( ) ? * CurPin - > GetOuter ( ) - > GetClass ( ) - > GetName ( ) : TEXT ( " UNKNOWN " )
, CurPin - > GetOuter ( ) ? * CurPin - > GetOuter ( ) - > GetPathName ( ) : TEXT ( " NULL " ) ) )
{
continue ;
}
2014-03-14 14:13:41 -04:00
CreateStandardPinWidget ( CurPin ) ;
}
}
TSharedPtr < SGraphPin > SGraphNode : : CreatePinWidget ( UEdGraphPin * Pin ) const
{
return FNodeFactory : : CreatePinWidget ( Pin ) ;
}
2014-09-15 19:53:19 -04:00
void SGraphNode : : AddPin ( const TSharedRef < SGraphPin > & PinToAdd )
2014-03-14 14:13:41 -04:00
{
2014-09-15 19:53:19 -04:00
PinToAdd - > SetOwner ( SharedThis ( this ) ) ;
2014-03-14 14:13:41 -04:00
const UEdGraphPin * PinObj = PinToAdd - > GetPinObj ( ) ;
2014-09-15 21:48:46 -04:00
const bool bAdvancedParameter = ( PinObj ! = nullptr ) & & PinObj - > bAdvancedView ;
if ( bAdvancedParameter )
2014-03-14 14:13:41 -04:00
{
PinToAdd - > SetVisibility ( TAttribute < EVisibility > ( PinToAdd , & SGraphPin : : IsPinVisibleAsAdvanced ) ) ;
}
2014-09-15 21:48:46 -04:00
2014-03-14 14:13:41 -04:00
if ( PinToAdd - > GetDirection ( ) = = EEdGraphPinDirection : : EGPD_Input )
{
LeftNodeBox - > AddSlot ( )
. AutoHeight ( )
. HAlign ( HAlign_Left )
. VAlign ( VAlign_Center )
2014-09-15 21:48:46 -04:00
. Padding ( Settings - > GetInputPinPadding ( ) )
2014-03-14 14:13:41 -04:00
[
PinToAdd
] ;
InputPins . Add ( PinToAdd ) ;
}
else // Direction == EEdGraphPinDirection::EGPD_Output
{
RightNodeBox - > AddSlot ( )
. AutoHeight ( )
. HAlign ( HAlign_Right )
. VAlign ( VAlign_Center )
2014-09-15 21:48:46 -04:00
. Padding ( Settings - > GetOutputPinPadding ( ) )
2014-03-14 14:13:41 -04:00
[
PinToAdd
] ;
OutputPins . Add ( PinToAdd ) ;
}
}
/**
* Get all the pins found on this node .
*
* @ param AllPins The set of pins found on this node .
*/
void SGraphNode : : GetPins ( TSet < TSharedRef < SWidget > > & AllPins ) const
{
for ( int32 PinIndex = 0 ; PinIndex < this - > InputPins . Num ( ) ; + + PinIndex )
{
AllPins . Add ( InputPins [ PinIndex ] ) ;
}
for ( int32 PinIndex = 0 ; PinIndex < this - > OutputPins . Num ( ) ; + + PinIndex )
{
AllPins . Add ( OutputPins [ PinIndex ] ) ;
}
}
void SGraphNode : : GetPins ( TArray < TSharedRef < SWidget > > & AllPins ) const
{
for ( int32 PinIndex = 0 ; PinIndex < this - > InputPins . Num ( ) ; + + PinIndex )
{
AllPins . Add ( InputPins [ PinIndex ] ) ;
}
for ( int32 PinIndex = 0 ; PinIndex < this - > OutputPins . Num ( ) ; + + PinIndex )
{
AllPins . Add ( OutputPins [ PinIndex ] ) ;
}
}
TSharedPtr < SGraphPin > SGraphNode : : GetHoveredPin ( const FGeometry & MyGeometry , const FPointerEvent & MouseEvent ) const
{
// We just need to find the one WidgetToFind among our descendants.
TSet < TSharedRef < SWidget > > MyPins ;
{
GetPins ( MyPins ) ;
}
TMap < TSharedRef < SWidget > , FArrangedWidget > Result ;
FindChildGeometries ( MyGeometry , MyPins , Result ) ;
if ( Result . Num ( ) > 0 )
{
FArrangedChildren ArrangedPins ( EVisibility : : Visible ) ;
Result . GenerateValueArray ( ArrangedPins . GetInternalArray ( ) ) ;
int32 HoveredPinIndex = SWidget : : FindChildUnderMouse ( ArrangedPins , MouseEvent ) ;
if ( HoveredPinIndex ! = INDEX_NONE )
{
2014-08-25 12:51:49 -04:00
return StaticCastSharedRef < SGraphPin > ( ArrangedPins [ HoveredPinIndex ] . Widget ) ;
2014-03-14 14:13:41 -04:00
}
}
return TSharedPtr < SGraphPin > ( ) ;
}
TSharedPtr < SGraphPin > SGraphNode : : FindWidgetForPin ( UEdGraphPin * ThePin ) const
{
// Search input or output pins?
const TArray < TSharedRef < SGraphPin > > & PinsToSearch = ( ThePin - > Direction = = EGPD_Input ) ? InputPins : OutputPins ;
// Actually search for the widget
for ( int32 PinIndex = 0 ; PinIndex < PinsToSearch . Num ( ) ; + + PinIndex )
{
if ( PinsToSearch [ PinIndex ] - > GetPinObj ( ) = = ThePin )
{
return PinsToSearch [ PinIndex ] ;
}
}
return TSharedPtr < SGraphPin > ( NULL ) ;
}
void SGraphNode : : PlaySpawnEffect ( )
{
---- Merging with SlateDev branch ----
Introduces the concept of "Active Ticking" to allow Slate to go to sleep when there is no need to update the UI.
While asleep, Slate will skip the Tick & Paint pass for that frame entirely.
- There are TWO ways to "wake" Slate and cause a Tick/Paint pass:
1. Provide some sort of input (mouse movement, clicks, and key presses). Slate will always tick when the user is active.
- Therefore, if the logic in a given widget's Tick is only relevant in response to user action, there is no need to register an active tick.
2. Register an Active Tick. Currently this is an all-or-nothing situation, so if a single active tick needs to execute, all of Slate will be ticked.
- The purpose of an Active Tick is to allow a widget to "drive" Slate and guarantee a Tick/Paint pass in the absence of any user action.
- Examples include animation, async operations that update periodically, progress updates, loading bars, etc.
- An empty active tick is registered for viewports when they are real-time, so game project widgets are unaffected by this change and should continue to work as before.
- An Active Tick is registered by creating an FWidgetActiveTickDelegate and passing it to SWidget::RegisterActiveTick()
- There are THREE ways to unregister an active tick:
1. Return EActiveTickReturnType::StopTicking from the active tick function
2. Pass the FActiveTickHandle returned by RegisterActiveTick() to SWidget::UnregisterActiveTick()
3. Destroy the widget responsible for the active tick
- Sleeping is currently disabled, can be enabled with Slate.AllowSlateToSleep cvar
- There is currently a little buffer time during which Slate continues to tick following any input. Long-term, this is planned to be removed.
- The duration of the buffer can be adjusted using Slate.SleepBufferPostInput cvar (defaults to 1.0f)
- The FCurveSequence API has been updated to work with the active tick system
- Playing a curve sequence now requires that you pass the widget being animated by the sequence
- The active tick will automatically be registered on behalf of the widget and unregister when the sequence is complete
- GetLerpLooping() has been removed. Instead, pass true as the second param to Play() to indicate that the animation will loop. This causes the active tick to be registered indefinitely until paused or jumped to the start/end.
[CL 2391669 by Dan Hertzka in Main branch]
2014-12-17 16:07:57 -05:00
SpawnAnim . Play ( this - > AsShared ( ) ) ;
2014-03-14 14:13:41 -04:00
}
FVector2D SGraphNode : : GetContentScale ( ) const
{
const float CurZoomValue = ZoomCurve . GetLerp ( ) ;
return FVector2D ( CurZoomValue , CurZoomValue ) ;
}
FLinearColor SGraphNode : : GetColorAndOpacity ( ) const
{
return FLinearColor ( 1 , 1 , 1 , FadeCurve . GetLerp ( ) ) ;
}
FLinearColor SGraphNode : : GetPinLabelColorAndOpacity ( ) const
{
return FLinearColor ( 0 , 0 , 0 , FadeCurve . GetLerp ( ) ) ;
}
SGraphNode : : SGraphNode ( )
2016-02-19 13:49:13 -05:00
: IsEditable ( true )
, bProvidedComplexTooltip ( false )
2014-03-14 14:13:41 -04:00
, bRenameIsPending ( false )
2014-07-30 14:51:27 -04:00
, ErrorColor ( FLinearColor : : White )
2014-03-14 14:13:41 -04:00
, CachedUnscaledPosition ( FVector2D : : ZeroVector )
2014-09-15 21:48:46 -04:00
, Settings ( GetDefault < UGraphEditorSettings > ( ) )
2014-03-14 14:13:41 -04:00
{
// Set up animation
{
ZoomCurve = SpawnAnim . AddCurve ( 0 , 0.1f ) ;
FadeCurve = SpawnAnim . AddCurve ( 0.15f , 0.15f ) ;
SpawnAnim . JumpToEnd ( ) ;
}
}
void SGraphNode : : PositionThisNodeBetweenOtherNodes ( const TMap < UObject * , TSharedRef < SNode > > & NodeToWidgetLookup , UEdGraphNode * PreviousNode , UEdGraphNode * NextNode , float HeightAboveWire ) const
{
if ( ( PreviousNode ! = NULL ) & & ( NextNode ! = NULL ) )
{
TSet < UEdGraphNode * > PrevNodes ;
PrevNodes . Add ( PreviousNode ) ;
TSet < UEdGraphNode * > NextNodes ;
NextNodes . Add ( NextNode ) ;
PositionThisNodeBetweenOtherNodes ( NodeToWidgetLookup , PrevNodes , NextNodes , HeightAboveWire ) ;
}
}
void SGraphNode : : PositionThisNodeBetweenOtherNodes ( const TMap < UObject * , TSharedRef < SNode > > & NodeToWidgetLookup , TSet < UEdGraphNode * > & PreviousNodes , TSet < UEdGraphNode * > & NextNodes , float HeightAboveWire ) const
{
// Find the previous position centroid
FVector2D PrevPos ( 0.0f , 0.0f ) ;
for ( auto NodeIt = PreviousNodes . CreateConstIterator ( ) ; NodeIt ; + + NodeIt )
{
UEdGraphNode * PreviousNode = * NodeIt ;
const FVector2D CornerPos ( PreviousNode - > NodePosX , PreviousNode - > NodePosY ) ;
PrevPos + = CornerPos + NodeToWidgetLookup . FindChecked ( PreviousNode ) - > GetDesiredSize ( ) * 0.5f ;
}
// Find the next position centroid
FVector2D NextPos ( 0.0f , 0.0f ) ;
for ( auto NodeIt = NextNodes . CreateConstIterator ( ) ; NodeIt ; + + NodeIt )
{
UEdGraphNode * NextNode = * NodeIt ;
const FVector2D CornerPos ( NextNode - > NodePosX , NextNode - > NodePosY ) ;
NextPos + = CornerPos + NodeToWidgetLookup . FindChecked ( NextNode ) - > GetDesiredSize ( ) * 0.5f ;
}
PositionThisNodeBetweenOtherNodes ( PrevPos , NextPos , HeightAboveWire ) ;
}
void SGraphNode : : PositionThisNodeBetweenOtherNodes ( const FVector2D & PrevPos , const FVector2D & NextPos , float HeightAboveWire ) const
{
2016-05-10 16:00:39 -04:00
const FVector2D DesiredNodeSize = GetDesiredSize ( ) ;
2014-03-14 14:13:41 -04:00
FVector2D DeltaPos ( NextPos - PrevPos ) ;
if ( DeltaPos . IsNearlyZero ( ) )
{
DeltaPos = FVector2D ( 10.0f , 0.0f ) ;
}
2014-11-26 10:01:12 -05:00
const FVector2D Normal = FVector2D ( DeltaPos . Y , - DeltaPos . X ) . GetSafeNormal ( ) ;
2014-03-14 14:13:41 -04:00
2016-05-10 16:00:39 -04:00
const FVector2D SlidingCapsuleBias = FVector2D : : ZeroVector ; //(0.5f * FMath::Sin(Normal.X * (float)HALF_PI) * DesiredNodeSize.X, 0.0f);
2014-03-14 14:13:41 -04:00
const FVector2D NewCenter = PrevPos + ( 0.5f * DeltaPos ) + ( HeightAboveWire * Normal ) + SlidingCapsuleBias ;
// Now we need to adjust the new center by the node size and zoom factor
2016-05-10 16:00:39 -04:00
const FVector2D NewCorner = NewCenter - ( 0.5f * DesiredNodeSize ) ;
2014-03-14 14:13:41 -04:00
GraphNode - > NodePosX = NewCorner . X ;
GraphNode - > NodePosY = NewCorner . Y ;
}
2015-01-08 11:35:01 -05:00
FText SGraphNode : : GetErrorMsgToolTip ( ) const
2014-03-14 14:13:41 -04:00
{
2016-02-26 16:58:26 -05:00
FText Result ;
// Append the node's upgrade message, if any.
if ( ! GraphNode - > NodeUpgradeMessage . IsEmpty ( ) )
{
if ( Result . IsEmpty ( ) )
{
Result = GraphNode - > NodeUpgradeMessage ;
}
else
{
Result = FText : : Format ( FText : : FromString ( TEXT ( " {0} \n \n {1} " ) ) , Result , GraphNode - > NodeUpgradeMessage ) ;
}
}
else
{
Result = FText : : FromString ( GraphNode - > ErrorMsg ) ;
}
return Result ;
2014-03-14 14:13:41 -04:00
}
bool SGraphNode : : IsNameReadOnly ( ) const
{
return ! GraphNode - > bCanRenameNode ;
}
2014-05-15 17:34:14 -04:00
bool SGraphNode : : OnVerifyNameTextChanged ( const FText & InText , FText & OutErrorMessage )
2014-03-14 14:13:41 -04:00
{
bool bValid ( true ) ;
2014-05-15 17:34:14 -04:00
if ( ( GetEditableNodeTitle ( ) ! = InText . ToString ( ) ) & & OnVerifyTextCommit . IsBound ( ) )
2014-03-14 14:13:41 -04:00
{
2015-06-10 13:53:25 -04:00
bValid = OnVerifyTextCommit . Execute ( InText , GraphNode , OutErrorMessage ) ;
2014-03-14 14:13:41 -04:00
}
2015-06-10 13:53:25 -04:00
if ( OutErrorMessage . IsEmpty ( ) )
{
OutErrorMessage = FText : : FromString ( TEXT ( " Error " ) ) ;
}
2014-03-14 14:13:41 -04:00
//UpdateErrorInfo();
//ErrorReporting->SetError(ErrorMsg);
return bValid ;
}
2014-05-15 17:34:14 -04:00
void SGraphNode : : OnNameTextCommited ( const FText & InText , ETextCommit : : Type CommitInfo )
2014-03-14 14:13:41 -04:00
{
OnTextCommitted . ExecuteIfBound ( InText , CommitInfo , GraphNode ) ;
UpdateErrorInfo ( ) ;
2014-05-15 17:34:14 -04:00
if ( ErrorReporting . IsValid ( ) )
{
ErrorReporting - > SetError ( ErrorMsg ) ;
}
2014-03-14 14:13:41 -04:00
}
void SGraphNode : : RequestRename ( )
{
if ( ( GraphNode ! = NULL ) & & GraphNode - > bCanRenameNode )
{
bRenameIsPending = true ;
}
}
void SGraphNode : : ApplyRename ( )
{
if ( bRenameIsPending )
{
bRenameIsPending = false ;
InlineEditableText - > EnterEditingMode ( ) ;
}
}
FSlateRect SGraphNode : : GetTitleRect ( ) const
{
const FVector2D NodePosition = GetPosition ( ) ;
const FVector2D NodeSize = GraphNode ? InlineEditableText - > GetDesiredSize ( ) : GetDesiredSize ( ) ;
return FSlateRect ( NodePosition . X , NodePosition . Y + NodeSize . Y , NodePosition . X + NodeSize . X , NodePosition . Y ) ;
}
void SGraphNode : : NotifyDisallowedPinConnection ( const UEdGraphPin * PinA , const UEdGraphPin * PinB ) const
{
OnDisallowedPinConnection . ExecuteIfBound ( PinA , PinB ) ;
}
bool SGraphNode : : UseLowDetailNodeTitles ( ) const
{
if ( const SGraphPanel * MyOwnerPanel = GetOwnerPanel ( ) . Get ( ) )
{
return ( MyOwnerPanel - > GetCurrentLOD ( ) < = EGraphRenderingLOD : : LowestDetail ) & & ! InlineEditableText - > IsInEditMode ( ) ;
}
else
{
return false ;
}
}
2014-04-02 18:09:23 -04:00
TSharedRef < SWidget > SGraphNode : : AddPinButtonContent ( FText PinText , FText PinTooltipText , bool bRightSide , FString DocumentationExcerpt , TSharedPtr < SToolTip > CustomTooltip )
{
TSharedPtr < SWidget > ButtonContent ;
if ( bRightSide )
{
SAssignNew ( ButtonContent , SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. HAlign ( HAlign_Left )
[
SNew ( STextBlock )
. Text ( PinText )
. ColorAndOpacity ( FLinearColor : : White )
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. VAlign ( VAlign_Center )
. Padding ( 7 , 0 , 0 , 0 )
[
SNew ( SImage )
. Image ( FEditorStyle : : GetBrush ( TEXT ( " PropertyWindow.Button_AddToArray " ) ) )
] ;
}
else
{
SAssignNew ( ButtonContent , SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. VAlign ( VAlign_Center )
. Padding ( 0 , 0 , 7 , 0 )
[
SNew ( SImage )
. Image ( FEditorStyle : : GetBrush ( TEXT ( " PropertyWindow.Button_AddToArray " ) ) )
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. HAlign ( HAlign_Left )
[
SNew ( STextBlock )
. Text ( PinText )
. ColorAndOpacity ( FLinearColor : : White )
] ;
}
TSharedPtr < SToolTip > Tooltip ;
if ( CustomTooltip . IsValid ( ) )
{
Tooltip = CustomTooltip ;
}
else if ( ! DocumentationExcerpt . IsEmpty ( ) )
{
Tooltip = IDocumentation : : Get ( ) - > CreateToolTip ( PinTooltipText , NULL , GraphNode - > GetDocumentationLink ( ) , DocumentationExcerpt ) ;
}
TSharedRef < SButton > AddPinButton = SNew ( SButton )
. ContentPadding ( 0.0f )
. ButtonStyle ( FEditorStyle : : Get ( ) , " NoBorder " )
. OnClicked ( this , & SGraphNode : : OnAddPin )
2015-02-24 06:02:55 -05:00
. IsEnabled ( this , & SGraphNode : : IsNodeEditable )
2014-04-02 18:09:23 -04:00
. ToolTipText ( PinTooltipText )
. ToolTip ( Tooltip )
. Visibility ( this , & SGraphNode : : IsAddPinButtonVisible )
[
ButtonContent . ToSharedRef ( )
] ;
AddPinButton - > SetCursor ( EMouseCursor : : Hand ) ;
return AddPinButton ;
}
EVisibility SGraphNode : : IsAddPinButtonVisible ( ) const
{
bool bIsHidden = false ;
auto OwnerGraphPanel = OwnerGraphPanelPtr . Pin ( ) ;
if ( OwnerGraphPanel . IsValid ( ) )
{
bIsHidden | = ( SGraphEditor : : EPinVisibility : : Pin_Show ! = OwnerGraphPanel - > GetPinVisibility ( ) ) ;
bIsHidden | = ( OwnerGraphPanel - > GetCurrentLOD ( ) < = EGraphRenderingLOD : : LowDetail ) ;
}
return bIsHidden ? EVisibility : : Collapsed : EVisibility : : Visible ;
}
2014-09-05 07:39:52 -04:00
void SGraphNode : : PopulateMetaTag ( FGraphNodeMetaData * TagMeta ) const
{
if ( GraphNode ! = nullptr )
{
// We want the name of the blueprint as our name - we can find the node from the GUID
UObject * Package = GraphNode - > GetOutermost ( ) ;
UObject * LastOuter = GraphNode - > GetOuter ( ) ;
while ( LastOuter - > GetOuter ( ) ! = Package )
{
LastOuter = LastOuter - > GetOuter ( ) ;
}
TagMeta - > Tag = FName ( * FString : : Printf ( TEXT ( " GraphNode_%s_%s " ) , * LastOuter - > GetFullName ( ) , * GraphNode - > NodeGuid . ToString ( ) ) ) ;
TagMeta - > OuterName = LastOuter - > GetFullName ( ) ;
TagMeta - > GUID = GraphNode - > NodeGuid ;
TagMeta - > FriendlyName = FString : : Printf ( TEXT ( " %s in %s " ) , * GraphNode - > GetNodeTitle ( ENodeTitleType : : ListView ) . ToString ( ) , * TagMeta - > OuterName ) ;
}
2014-11-03 10:40:57 -05:00
}
EGraphRenderingLOD : : Type SGraphNode : : GetCurrentLOD ( ) const
{
return OwnerGraphPanelPtr . IsValid ( ) ? OwnerGraphPanelPtr . Pin ( ) - > GetCurrentLOD ( ) : EGraphRenderingLOD : : DefaultDetail ;
2015-01-15 15:57:51 -05:00
}
void SGraphNode : : RefreshErrorInfo ( )
{
SetupErrorReporting ( ) ;
}