2019-12-26 15:33:43 -05:00
// Copyright Epic Games, Inc. All Rights Reserved.
2014-03-14 14:13:41 -04:00
# include "CollisionProfileDetails.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 "Misc/MessageDialog.h"
# include "Widgets/SWindow.h"
# include "SlateOptMacros.h"
# include "Widgets/Layout/SSeparator.h"
# include "Widgets/Images/SImage.h"
# include "Widgets/Input/SEditableTextBox.h"
# include "Widgets/Input/SButton.h"
# include "Widgets/Input/SCheckBox.h"
# include "EditorStyleSet.h"
# include "Editor.h"
# include "DetailLayoutBuilder.h"
# include "DetailWidgetRow.h"
# include "DetailCategoryBuilder.h"
# include "Widgets/Input/SComboBox.h"
2014-03-14 14:13:41 -04:00
# include "BodyInstanceCustomization.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"
2018-09-26 08:22:54 -04:00
# include "Widgets/Layout/SScrollBox.h"
2014-03-14 14:13:41 -04:00
# define LOCTEXT_NAMESPACE "CollsiionProfileDetails"
DECLARE_DELEGATE_RetVal_OneParam ( bool , FOnValidateChannel , const FCustomChannelSetup * )
DECLARE_DELEGATE_RetVal_TwoParams ( bool , FOnValidateProfile , const FCollisionResponseTemplate * , int32 )
# define MAX_CUSTOMCOLLISION_CHANNEL (ECC_GameTraceChannel18-ECC_GameTraceChannel1+1)
# define MAX_COLLISION_CHANNEL 32
# define COLLIISION_COLUMN_WIDTH 50
# define PROFILE_WINDOW_WIDTH 300
2014-08-15 12:02:48 -04:00
# define PROFILE_WINDOW_HEIGHT 540
2014-03-14 14:13:41 -04:00
# define CHANNEL_WINDOW_WIDTH 200
2014-08-15 12:02:48 -04:00
# define CHANNEL_WINDOW_HEIGHT 93
2014-03-14 14:13:41 -04:00
# define RowWidth_Customization 50
//====================================================================================
// SChannelEditDialog
//=====================================================================================
2015-01-30 10:13:53 -05:00
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
2014-03-14 14:13:41 -04:00
class SChannelEditDialog : public SCompoundWidget
{
public :
SLATE_BEGIN_ARGS ( SChannelEditDialog )
: _ChannelSetup ( NULL )
, _CollisionChannel ( ECC_MAX )
{ }
SLATE_ARGUMENT ( FCustomChannelSetup * , ChannelSetup )
SLATE_ARGUMENT ( ECollisionChannel , CollisionChannel )
SLATE_ARGUMENT ( bool , bTraceType )
SLATE_ARGUMENT ( TSharedPtr < SWindow > , WidgetWindow )
SLATE_EVENT ( FOnValidateChannel , OnValidateChannel )
SLATE_END_ARGS ( )
public :
void Construct ( const FArguments & InArgs ) ;
// widget event handlers
TSharedRef < SWidget > HandleResponseComboBoxGenerateWidget ( TSharedPtr < FString > StringItem ) ;
void HandleResponseComboBoxSelectionChanged ( TSharedPtr < FString > StringItem , ESelectInfo : : Type SelectInfo ) ;
2014-04-23 18:06:41 -04:00
FText HandleResponseComboBoxContentText ( ) const ;
2014-03-14 14:13:41 -04:00
FText GetName ( ) const ;
void NewNameEntered ( const FText & NewText , ETextCommit : : Type CommitInfo ) ;
void OnTextChanged ( const FText & NewText ) ;
// window handler
FReply OnAccept ( ) ;
FReply OnCancel ( ) ;
bool IsAcceptAvailable ( ) const ;
void CloseWindow ( ) ;
// utility functions
FCustomChannelSetup GetChannelSetup ( )
{
return ChannelSetup ;
}
// data to return
bool bApplyChange ;
FCustomChannelSetup ChannelSetup ;
private :
TWeakPtr < SWindow > WidgetWindow ;
FOnValidateChannel OnValidateChannel ;
TSharedPtr < SComboBox < TSharedPtr < FString > > > ResponseComboBox ;
TArray < TSharedPtr < FString > > ResponseComboBoxString ;
TSharedPtr < SEditableTextBox > NameBox ;
} ;
void SChannelEditDialog : : Construct ( const FArguments & InArgs )
{
bApplyChange = false ;
if ( InArgs . _ChannelSetup )
{
ChannelSetup = * InArgs . _ChannelSetup ;
}
else
{
ChannelSetup . Channel = InArgs . _CollisionChannel ;
ChannelSetup . bTraceType = InArgs . _bTraceType ;
}
check ( ChannelSetup . Channel > = ECC_GameTraceChannel1 & & ChannelSetup . Channel < = ECC_GameTraceChannel18 ) ;
OnValidateChannel = InArgs . _OnValidateChannel ;
WidgetWindow = InArgs . _WidgetWindow ;
ResponseComboBoxString . Empty ( ) ;
ResponseComboBoxString . Add ( MakeShareable ( new FString ( TEXT ( " Ignore " ) ) ) ) ;
ResponseComboBoxString . Add ( MakeShareable ( new FString ( TEXT ( " Overlap " ) ) ) ) ;
ResponseComboBoxString . Add ( MakeShareable ( new FString ( TEXT ( " Block " ) ) ) ) ;
this - > ChildSlot
[
2014-08-15 12:02:48 -04:00
SNew ( SVerticalBox )
// channel name
+ SVerticalBox : : Slot ( )
. FillHeight ( 1 )
. VAlign ( VAlign_Center )
. Padding ( 3.f , 1.f )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. HAlign ( HAlign_Left )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( SBox )
. WidthOverride ( 100 )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " SChannelEditDialog_Name " , " Name " ) )
. Font ( IDetailLayoutBuilder : : GetDetailFontBold ( ) )
]
]
+ SHorizontalBox : : Slot ( )
. FillWidth ( 1 )
. HAlign ( HAlign_Left )
[
SAssignNew ( NameBox , SEditableTextBox )
. MinDesiredWidth ( 64.0f )
. Text ( this , & SChannelEditDialog : : GetName )
2014-03-14 14:13:41 -04:00
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
2014-08-15 12:02:48 -04:00
. OnTextCommitted ( this , & SChannelEditDialog : : NewNameEntered )
. OnTextChanged ( this , & SChannelEditDialog : : OnTextChanged )
2014-03-14 14:13:41 -04:00
]
2014-08-15 12:02:48 -04:00
]
// default response
+ SVerticalBox : : Slot ( )
. FillHeight ( 1 )
. Padding ( 3.f , 1.f )
. VAlign ( VAlign_Center )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. HAlign ( HAlign_Left )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( SBox )
. WidthOverride ( 100 )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( STextBlock )
. Text ( LOCTEXT ( " SChannelEditDialog_DefaultResponse " , " Default Response " ) )
. Font ( IDetailLayoutBuilder : : GetDetailFontBold ( ) )
2014-03-14 14:13:41 -04:00
]
2014-08-15 12:02:48 -04:00
]
+ SHorizontalBox : : Slot ( )
. FillWidth ( 1 )
. HAlign ( HAlign_Left )
[
SAssignNew ( ResponseComboBox , SComboBox < TSharedPtr < FString > > )
. ContentPadding ( FMargin ( 6.0f , 2.0f ) )
. OptionsSource ( & ResponseComboBoxString )
. OnGenerateWidget ( this , & SChannelEditDialog : : HandleResponseComboBoxGenerateWidget )
. OnSelectionChanged ( this , & SChannelEditDialog : : HandleResponseComboBoxSelectionChanged )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( STextBlock )
. Text ( this , & SChannelEditDialog : : HandleResponseComboBoxContentText )
2014-03-14 14:13:41 -04:00
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
]
]
2014-08-15 12:02:48 -04:00
]
2014-03-14 14:13:41 -04:00
2014-08-15 12:02:48 -04:00
// accept or cancel button
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. Padding ( 0.f , 3.f )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. HAlign ( HAlign_Center )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( SButton )
. ContentPadding ( FEditorStyle : : GetMargin ( " StandardDialog.ContentPadding " ) )
. Text ( LOCTEXT ( " SChannelEditDialog_Accept " , " Accept " ) )
. OnClicked ( this , & SChannelEditDialog : : OnAccept )
. IsEnabled ( this , & SChannelEditDialog : : IsAcceptAvailable )
2014-03-14 14:13:41 -04:00
]
2014-08-15 12:02:48 -04:00
+ SHorizontalBox : : Slot ( )
. HAlign ( HAlign_Center )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( SButton )
. ContentPadding ( FEditorStyle : : GetMargin ( " StandardDialog.ContentPadding " ) )
. Text ( LOCTEXT ( " SChannelEditDialog_Cancel " , " Cancel " ) )
. OnClicked ( this , & SChannelEditDialog : : OnCancel )
2014-03-14 14:13:41 -04:00
]
]
] ;
}
bool SChannelEditDialog : : IsAcceptAvailable ( ) const
{
return ( ChannelSetup . Name ! = NAME_None & & ChannelSetup . Name . ToString ( ) . Find ( TEXT ( " " ) ) = = INDEX_NONE ) ;
}
FReply SChannelEditDialog : : OnAccept ( )
{
if ( OnValidateChannel . IsBound ( ) )
{
if ( OnValidateChannel . Execute ( & ChannelSetup ) )
{
bApplyChange = true ;
CloseWindow ( ) ;
}
else
{
// invalid setup
FMessageDialog : : Open ( EAppMsgType : : Ok , LOCTEXT ( " SChannelEditDialog_InvalidAccept " , " Duplicate Name found. " ) ) ;
}
}
else
{
// no validate test, just accept
CloseWindow ( ) ;
}
return FReply : : Handled ( ) ;
}
FReply SChannelEditDialog : : OnCancel ( )
{
CloseWindow ( ) ;
return FReply : : Handled ( ) ;
}
void SChannelEditDialog : : CloseWindow ( )
{
if ( WidgetWindow . IsValid ( ) )
{
WidgetWindow . Pin ( ) - > RequestDestroyWindow ( ) ;
}
}
void SChannelEditDialog : : OnTextChanged ( const FText & NewText )
{
FString NewName = NewText . ToString ( ) ;
if ( NewName . Find ( TEXT ( " " ) ) ! = INDEX_NONE )
{
// no white space
2014-04-23 18:06:41 -04:00
NameBox - > SetError ( LOCTEXT ( " ChannelNameValidationWhitespaceError " , " No white space is allowed " ) ) ;
2014-03-14 14:13:41 -04:00
}
else
{
2014-04-23 18:06:41 -04:00
NameBox - > SetError ( FText : : GetEmpty ( ) ) ;
2014-08-14 18:11:04 -04:00
NewNameEntered ( NewText , ETextCommit : : Default ) ;
2014-03-14 14:13:41 -04:00
}
}
void SChannelEditDialog : : NewNameEntered ( const FText & NewText , ETextCommit : : Type CommitInfo )
{
{
FName NewName = FName ( * NewText . ToString ( ) ) ;
// we should accept NAME_None, that will invalidate "accpet" button
if ( NewName ! = ChannelSetup . Name )
{
ChannelSetup . Name = NewName ;
2014-04-23 18:06:41 -04:00
NameBox - > SetError ( FText : : GetEmpty ( ) ) ;
2014-03-14 14:13:41 -04:00
}
}
}
FText SChannelEditDialog : : GetName ( ) const
{
if ( ChannelSetup . Name = = NAME_None )
{
2014-04-23 18:06:41 -04:00
return FText : : GetEmpty ( ) ;
2014-03-14 14:13:41 -04:00
}
return FText : : FromName ( ChannelSetup . Name ) ;
}
TSharedRef < SWidget > SChannelEditDialog : : HandleResponseComboBoxGenerateWidget ( TSharedPtr < FString > StringItem )
{
return SNew ( STextBlock )
2015-01-07 09:52:40 -05:00
. Text ( FText : : FromString ( * StringItem ) )
2014-03-14 14:13:41 -04:00
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) ) ;
}
void SChannelEditDialog : : HandleResponseComboBoxSelectionChanged ( TSharedPtr < FString > StringItem , ESelectInfo : : Type SelectInfo )
{
for ( auto Iter = ResponseComboBoxString . CreateConstIterator ( ) ; Iter ; + + Iter )
{
if ( * Iter = = StringItem )
{
ECollisionResponse NewResponse = ( ECollisionResponse ) Iter . GetIndex ( ) ;
check ( NewResponse > = ECR_Ignore & & NewResponse < = ECR_Block ) ;
ChannelSetup . DefaultResponse = NewResponse ;
return ;
}
}
// should not get here
check ( false ) ;
}
2014-04-23 18:06:41 -04:00
FText SChannelEditDialog : : HandleResponseComboBoxContentText ( ) const
2014-03-14 14:13:41 -04:00
{
int32 Index = ( int32 ) ChannelSetup . DefaultResponse ;
if ( ResponseComboBoxString . IsValidIndex ( Index ) )
{
2014-04-23 18:06:41 -04:00
return FText : : FromString ( * ResponseComboBoxString [ Index ] ) ;
2014-03-14 14:13:41 -04:00
}
2014-04-23 18:06:41 -04:00
return LOCTEXT ( " ChannelResponseTypeMessage " , " Select Response " ) ;
2014-03-14 14:13:41 -04:00
}
//====================================================================================
// SProfileEditDialog
//=====================================================================================
class SProfileEditDialog : public SCompoundWidget
{
public :
SLATE_BEGIN_ARGS ( SProfileEditDialog )
: _ProfileTemplate ( NULL )
, _CollisionProfile ( NULL )
, _ProfileIndex ( INDEX_NONE )
{ }
SLATE_ARGUMENT ( FCollisionResponseTemplate * , ProfileTemplate )
SLATE_ARGUMENT ( UCollisionProfile * , CollisionProfile )
SLATE_ARGUMENT ( int32 , ProfileIndex )
SLATE_ARGUMENT ( TSharedPtr < SWindow > , WidgetWindow )
SLATE_ARGUMENT ( TArray < ECollisionChannel > , ObjectTypeMapping )
SLATE_EVENT ( FOnValidateProfile , OnValidateProfile )
SLATE_END_ARGS ( )
public :
void Construct ( const FArguments & InArgs ) ;
// widget event handlers
TSharedRef < SWidget > HandleCollisionEnabledComboBoxGenerateWidget ( TSharedPtr < FString > StringItem ) ;
void HandleCollisionEnabledComboBoxSelectionChanged ( TSharedPtr < FString > StringItem , ESelectInfo : : Type SelectInfo ) ;
2014-04-23 18:06:41 -04:00
FText HandleCollisionEnabledComboBoxContentText ( ) const ;
2014-03-14 14:13:41 -04:00
TSharedRef < SWidget > HandleObjectTypeComboBoxGenerateWidget ( TSharedPtr < FString > StringItem ) ;
void HandleObjectTypeComboBoxSelectionChanged ( TSharedPtr < FString > StringItem , ESelectInfo : : Type SelectInfo ) ;
2014-04-23 18:06:41 -04:00
FText HandleObjectTypeComboBoxContentText ( ) const ;
2014-03-14 14:13:41 -04:00
FText GetName ( ) const ;
void NewNameEntered ( const FText & NewText , ETextCommit : : Type CommitInfo ) ;
void OnTextChanged ( const FText & NewText ) ;
FText GetDescription ( ) const ;
void NewDescriptionEntered ( const FText & NewText , ETextCommit : : Type CommitInfo ) ;
// window handler
FReply OnAccept ( ) ;
FReply OnCancel ( ) ;
bool IsAcceptAvailable ( ) const ;
void CloseWindow ( ) ;
bool CanModify ( )
{
return ProfileTemplate . bCanModify ;
}
// data to return
bool bApplyChange ;
FCollisionResponseTemplate ProfileTemplate ;
int32 ProfileIndex ;
private :
TWeakPtr < SWindow > WidgetWindow ;
FOnValidateProfile OnValidateProfile ;
TSharedPtr < SComboBox < TSharedPtr < FString > > > CollisionEnabledComboBox ;
TArray < TSharedPtr < FString > > CollisionEnabledComboBoxString ;
TSharedPtr < SComboBox < TSharedPtr < FString > > > ObjectTypeComboBox ;
TArray < TSharedPtr < FString > > ObjectTypeComboBoxString ;
TSharedPtr < SVerticalBox > SCollisionPanel ;
UCollisionProfile * CollisionProfile ;
TArray < ECollisionChannel > ObjectTypeMapping ;
TSharedPtr < SEditableTextBox > NameBox ;
void FillCollisionEnabledString ( ) ;
void FillObjectTypeString ( ) ;
void AddCollisionResponse ( ) ;
void AddCollisionChannel ( TArray < FCollisionChannelInfo > ValidCollisionChannels , bool bTraceType ) ;
// collision channel check boxes
2014-12-10 14:24:09 -05:00
void OnCollisionChannelChanged ( ECheckBoxState InNewValue , int32 ValidIndex , ECollisionResponse InCollisionResponse ) ;
ECheckBoxState IsCollisionChannelChecked ( int32 ValidIndex , ECollisionResponse InCollisionResponse ) const ;
2014-03-14 14:13:41 -04:00
// all collision channel check boxes
2014-12-10 14:24:09 -05:00
void OnAllCollisionChannelChanged ( ECheckBoxState InNewValue , ECollisionResponse InCollisionResponse ) ;
ECheckBoxState IsAllCollisionChannelChecked ( ECollisionResponse InCollisionResponse ) const ;
2014-03-14 14:13:41 -04:00
} ;
void SProfileEditDialog : : Construct ( const FArguments & InArgs )
{
bApplyChange = false ;
check ( InArgs . _CollisionProfile ) ;
if ( InArgs . _ProfileTemplate )
{
ProfileTemplate = * InArgs . _ProfileTemplate ;
}
CollisionProfile = InArgs . _CollisionProfile ;
ProfileIndex = InArgs . _ProfileIndex ;
OnValidateProfile = InArgs . _OnValidateProfile ;
WidgetWindow = InArgs . _WidgetWindow ;
ObjectTypeMapping = InArgs . _ObjectTypeMapping ;
FillObjectTypeString ( ) ;
FillCollisionEnabledString ( ) ;
this - > ChildSlot
[
2014-08-15 12:02:48 -04:00
SNew ( SVerticalBox )
// Profile name
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. VAlign ( VAlign_Center )
. Padding ( 3.f )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. HAlign ( HAlign_Left )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( SBox )
. WidthOverride ( 100 )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " SProfileEditDialog_Name " , " Name " ) )
. Font ( IDetailLayoutBuilder : : GetDetailFontBold ( ) )
]
]
+ SHorizontalBox : : Slot ( )
. FillWidth ( 1 )
. HAlign ( HAlign_Left )
[
SAssignNew ( NameBox , SEditableTextBox )
. MinDesiredWidth ( 64.0f )
. Text ( this , & SProfileEditDialog : : GetName )
2014-03-14 14:13:41 -04:00
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
2014-08-15 12:02:48 -04:00
. IsEnabled ( SProfileEditDialog : : CanModify ( ) )
. OnTextCommitted ( this , & SProfileEditDialog : : NewNameEntered )
. OnTextChanged ( this , & SProfileEditDialog : : OnTextChanged )
2014-03-14 14:13:41 -04:00
]
2014-08-15 12:02:48 -04:00
]
2014-03-14 14:13:41 -04:00
2014-08-15 12:02:48 -04:00
// default CollisionEnabled
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. VAlign ( VAlign_Center )
. Padding ( 3.f )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. HAlign ( HAlign_Left )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( SBox )
. WidthOverride ( 100 )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( STextBlock )
. Text ( LOCTEXT ( " SProfileEditDialog_CollisionEnabled " , " CollisionEnabled " ) )
. Font ( IDetailLayoutBuilder : : GetDetailFontBold ( ) )
2014-03-14 14:13:41 -04:00
]
2014-08-15 12:02:48 -04:00
]
+ SHorizontalBox : : Slot ( )
. FillWidth ( 1 )
. HAlign ( HAlign_Left )
[
SAssignNew ( CollisionEnabledComboBox , SComboBox < TSharedPtr < FString > > )
. ContentPadding ( FMargin ( 6.0f , 2.0f ) )
. OptionsSource ( & CollisionEnabledComboBoxString )
. OnGenerateWidget ( this , & SProfileEditDialog : : HandleCollisionEnabledComboBoxGenerateWidget )
. OnSelectionChanged ( this , & SProfileEditDialog : : HandleCollisionEnabledComboBoxSelectionChanged )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( STextBlock )
. Text ( this , & SProfileEditDialog : : HandleCollisionEnabledComboBoxContentText )
2014-03-14 14:13:41 -04:00
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
]
]
2014-08-15 12:02:48 -04:00
]
2014-03-14 14:13:41 -04:00
2014-08-15 12:02:48 -04:00
// default ObjectType
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. VAlign ( VAlign_Center )
. Padding ( 3.f )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. HAlign ( HAlign_Left )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( SBox )
. WidthOverride ( 100 )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( STextBlock )
. Text ( LOCTEXT ( " SProfileEditDialog_ObjectType " , " ObjectType " ) )
. Font ( IDetailLayoutBuilder : : GetDetailFontBold ( ) )
2014-03-14 14:13:41 -04:00
]
]
2014-08-15 12:02:48 -04:00
+ SHorizontalBox : : Slot ( )
. FillWidth ( 1 )
. HAlign ( HAlign_Left )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SAssignNew ( ObjectTypeComboBox , SComboBox < TSharedPtr < FString > > )
. ContentPadding ( FMargin ( 6.0f , 2.0f ) )
. OptionsSource ( & ObjectTypeComboBoxString )
. OnGenerateWidget ( this , & SProfileEditDialog : : HandleObjectTypeComboBoxGenerateWidget )
. OnSelectionChanged ( this , & SProfileEditDialog : : HandleObjectTypeComboBoxSelectionChanged )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( STextBlock )
. Text ( this , & SProfileEditDialog : : HandleObjectTypeComboBoxContentText )
2014-03-14 14:13:41 -04:00
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
]
]
2014-08-15 12:02:48 -04:00
]
2014-03-14 14:13:41 -04:00
2014-08-15 12:02:48 -04:00
// Profile Description
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. VAlign ( VAlign_Center )
. Padding ( 3.f )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. HAlign ( HAlign_Left )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( SBox )
. WidthOverride ( 100 )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " SProfileEditDialog_Description " , " Description " ) )
. Font ( IDetailLayoutBuilder : : GetDetailFontBold ( ) )
]
2014-03-14 14:13:41 -04:00
]
2014-08-15 12:02:48 -04:00
+ SHorizontalBox : : Slot ( )
. FillWidth ( 1 )
. HAlign ( HAlign_Left )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( SEditableTextBox )
. MinDesiredWidth ( 128.0f )
. Text ( this , & SProfileEditDialog : : GetDescription )
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
. OnTextCommitted ( this , & SProfileEditDialog : : NewDescriptionEntered )
]
]
+ SVerticalBox : : Slot ( )
. FillHeight ( 1 )
[
2018-09-26 08:22:54 -04:00
SNew ( SScrollBox )
+ SScrollBox : : Slot ( )
[
SAssignNew ( SCollisionPanel , SVerticalBox )
]
2014-08-15 12:02:48 -04:00
]
// accept or cancel button
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. Padding ( 1 , 3 )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. HAlign ( HAlign_Center )
[
SNew ( SButton )
. ContentPadding ( FEditorStyle : : GetMargin ( " StandardDialog.ContentPadding " ) )
2014-12-02 06:42:27 -05:00
. Text ( LOCTEXT ( " SProfileEditDialog_Accept " , " Accept " ) )
2014-08-15 12:02:48 -04:00
. OnClicked ( this , & SProfileEditDialog : : OnAccept )
. IsEnabled ( this , & SProfileEditDialog : : IsAcceptAvailable )
]
+ SHorizontalBox : : Slot ( )
. HAlign ( HAlign_Center )
[
SNew ( SButton )
. ContentPadding ( FEditorStyle : : GetMargin ( " StandardDialog.ContentPadding " ) )
2014-12-02 06:42:27 -05:00
. Text ( LOCTEXT ( " SProfileEditDialog_Cancel " , " Cancel " ) )
2014-08-15 12:02:48 -04:00
. OnClicked ( this , & SProfileEditDialog : : OnCancel )
2014-03-14 14:13:41 -04:00
]
]
] ;
AddCollisionResponse ( ) ;
}
void SProfileEditDialog : : FillObjectTypeString ( )
{
ObjectTypeComboBoxString . Empty ( ) ;
for ( auto Iter = ObjectTypeMapping . CreateConstIterator ( ) ; Iter ; + + Iter )
{
ECollisionChannel Channel = * Iter ;
FName ChannelName = CollisionProfile - > ReturnChannelNameFromContainerIndex ( ( int32 ) Channel ) ;
ObjectTypeComboBoxString . Add ( MakeShareable ( new FString ( ChannelName . ToString ( ) ) ) ) ;
}
}
void SProfileEditDialog : : FillCollisionEnabledString ( )
{
CollisionEnabledComboBoxString . Empty ( ) ;
CollisionEnabledComboBoxString . Add ( MakeShareable ( new FString ( TEXT ( " No Collision " ) ) ) ) ;
2015-04-27 13:50:58 -04:00
CollisionEnabledComboBoxString . Add ( MakeShareable ( new FString ( TEXT ( " Query Only (No Physics Collision) " ) ) ) ) ;
CollisionEnabledComboBoxString . Add ( MakeShareable ( new FString ( TEXT ( " Physics Only (No Query Collision) " ) ) ) ) ;
CollisionEnabledComboBoxString . Add ( MakeShareable ( new FString ( TEXT ( " Collision Enabled (Query and Physics) " ) ) ) ) ;
2014-03-14 14:13:41 -04:00
}
bool SProfileEditDialog : : IsAcceptAvailable ( ) const
{
return ( ProfileTemplate . Name ! = NAME_None & & ProfileTemplate . Name . ToString ( ) . Find ( TEXT ( " " ) ) = = INDEX_NONE ) ;
}
FReply SProfileEditDialog : : OnAccept ( )
{
if ( OnValidateProfile . IsBound ( ) )
{
if ( OnValidateProfile . Execute ( & ProfileTemplate , ProfileIndex ) )
{
bApplyChange = true ;
CloseWindow ( ) ;
}
else
{
// invalid setup
FMessageDialog : : Open ( EAppMsgType : : Ok , LOCTEXT ( " SProfileEditDialog_InvalidAccept " , " Duplicate Name found. " ) ) ;
}
}
else
{
// no validate test, just accept
CloseWindow ( ) ;
}
return FReply : : Handled ( ) ;
}
FReply SProfileEditDialog : : OnCancel ( )
{
CloseWindow ( ) ;
return FReply : : Handled ( ) ;
}
void SProfileEditDialog : : CloseWindow ( )
{
if ( WidgetWindow . IsValid ( ) )
{
WidgetWindow . Pin ( ) - > RequestDestroyWindow ( ) ;
}
}
void SProfileEditDialog : : OnTextChanged ( const FText & NewText )
{
FString NewName = NewText . ToString ( ) ;
if ( NewName . Find ( TEXT ( " " ) ) ! = INDEX_NONE )
{
// no white space
NameBox - > SetError ( TEXT ( " No white space is allowed " ) ) ;
}
else
{
NameBox - > SetError ( TEXT ( " " ) ) ;
2014-08-14 18:11:04 -04:00
NewNameEntered ( NewText , ETextCommit : : Default ) ;
2014-03-14 14:13:41 -04:00
}
}
void SProfileEditDialog : : NewNameEntered ( const FText & NewText , ETextCommit : : Type CommitInfo )
{
// Don't digest the number if we just clicked away from the pop-up
{
FName NewName = FName ( * NewText . ToString ( ) ) ;
// we should accept NAME_None, that will invalidate "accpet" button
if ( NewName ! = ProfileTemplate . Name )
{
ProfileTemplate . Name = NewName ;
NameBox - > SetError ( TEXT ( " " ) ) ;
}
}
}
FText SProfileEditDialog : : GetName ( ) const
{
if ( ProfileTemplate . Name = = NAME_None )
{
return FText : : FromString ( TEXT ( " " ) ) ;
}
return FText : : FromName ( ProfileTemplate . Name ) ;
}
void SProfileEditDialog : : NewDescriptionEntered ( const FText & NewText , ETextCommit : : Type CommitInfo )
{
// Don't digest the number if we just clicked away from the pop-up
if ( ( CommitInfo = = ETextCommit : : OnEnter ) | | ( CommitInfo = = ETextCommit : : OnUserMovedFocus ) )
{
ProfileTemplate . HelpMessage = * NewText . ToString ( ) ;
}
}
FText SProfileEditDialog : : GetDescription ( ) const
{
return FText : : FromString ( ProfileTemplate . HelpMessage ) ;
}
TSharedRef < SWidget > SProfileEditDialog : : HandleCollisionEnabledComboBoxGenerateWidget ( TSharedPtr < FString > StringItem )
{
return SNew ( STextBlock )
2015-01-07 09:52:40 -05:00
. Text ( FText : : FromString ( * StringItem ) )
2014-03-14 14:13:41 -04:00
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) ) ;
}
void SProfileEditDialog : : HandleCollisionEnabledComboBoxSelectionChanged ( TSharedPtr < FString > StringItem , ESelectInfo : : Type SelectInfo )
{
for ( auto Iter = CollisionEnabledComboBoxString . CreateConstIterator ( ) ; Iter ; + + Iter )
{
if ( * Iter = = StringItem )
{
ECollisionEnabled : : Type NewCollisionEnabled = ( ECollisionEnabled : : Type ) Iter . GetIndex ( ) ;
2015-04-27 13:50:58 -04:00
check ( NewCollisionEnabled > = ECollisionEnabled : : NoCollision & & NewCollisionEnabled < = ECollisionEnabled : : QueryAndPhysics ) ;
2014-03-14 14:13:41 -04:00
ProfileTemplate . CollisionEnabled = NewCollisionEnabled ;
return ;
}
}
// should not get here
check ( false ) ;
}
2014-04-23 18:06:41 -04:00
FText SProfileEditDialog : : HandleCollisionEnabledComboBoxContentText ( ) const
2014-03-14 14:13:41 -04:00
{
int32 Index = ( int32 ) ProfileTemplate . CollisionEnabled ;
if ( CollisionEnabledComboBoxString . IsValidIndex ( Index ) )
{
2014-04-23 18:06:41 -04:00
return FText : : FromString ( * CollisionEnabledComboBoxString [ Index ] ) ;
2014-03-14 14:13:41 -04:00
}
2014-04-23 18:06:41 -04:00
return LOCTEXT ( " ProfileCollisionEnabledMessage " , " Select CollisionEnabled " ) ;
2014-03-14 14:13:41 -04:00
}
TSharedRef < SWidget > SProfileEditDialog : : HandleObjectTypeComboBoxGenerateWidget ( TSharedPtr < FString > StringItem )
{
return SNew ( STextBlock )
2015-01-07 09:52:40 -05:00
. Text ( FText : : FromString ( * StringItem ) )
2014-03-14 14:13:41 -04:00
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) ) ;
}
void SProfileEditDialog : : HandleObjectTypeComboBoxSelectionChanged ( TSharedPtr < FString > StringItem , ESelectInfo : : Type SelectInfo )
{
for ( auto Iter = ObjectTypeComboBoxString . CreateConstIterator ( ) ; Iter ; + + Iter )
{
if ( * Iter = = StringItem )
{
int32 Index = Iter . GetIndex ( ) ;
if ( ObjectTypeMapping . IsValidIndex ( Index ) )
{
FName ObjectTypeName = CollisionProfile - > ReturnChannelNameFromContainerIndex ( ObjectTypeMapping [ Index ] ) ;
ProfileTemplate . ObjectTypeName = ObjectTypeName ;
ProfileTemplate . ObjectType = ObjectTypeMapping [ Index ] ;
}
else
{
// error, warn user?
}
return ;
}
}
// should not get here
check ( false ) ;
}
2014-04-23 18:06:41 -04:00
FText SProfileEditDialog : : HandleObjectTypeComboBoxContentText ( ) const
2014-03-14 14:13:41 -04:00
{
for ( auto Iter = ObjectTypeMapping . CreateConstIterator ( ) ; Iter ; + + Iter )
{
if ( * Iter = = ProfileTemplate . ObjectType )
{
int32 Index = Iter . GetIndex ( ) ;
if ( ObjectTypeComboBoxString . IsValidIndex ( Index ) )
{
2014-04-23 18:06:41 -04:00
return FText : : FromString ( * ObjectTypeComboBoxString [ Index ] ) ;
2014-03-14 14:13:41 -04:00
}
}
}
2014-04-23 18:06:41 -04:00
return LOCTEXT ( " ProfileObjectTypeMessage " , " Select ObjectType " ) ;
2014-03-14 14:13:41 -04:00
}
void SProfileEditDialog : : AddCollisionResponse ( )
{
check ( SCollisionPanel . IsValid ( ) ) ;
// find the enum
TArray < FCollisionChannelInfo > ValidCollisionChannels ;
2018-11-26 02:38:35 -05:00
UEnum * Enum = StaticEnum < ECollisionChannel > ( ) ;
2014-03-14 14:13:41 -04:00
// we need this Enum
check ( Enum ) ;
const FString KeyName = TEXT ( " DisplayName " ) ;
const FString TraceType = TEXT ( " TraceQuery " ) ;
// need to initialize displaynames separate
int32 NumEnum = Enum - > NumEnums ( ) ;
ValidCollisionChannels . Empty ( NumEnum ) ;
// first go through enum entry, and add suffix to displaynames
for ( int32 EnumIndex = 0 ; EnumIndex < NumEnum ; + + EnumIndex )
{
2016-05-10 16:00:39 -04:00
const FString & EnumMetaData = Enum - > GetMetaData ( * KeyName , EnumIndex ) ;
if ( EnumMetaData . Len ( ) > 0 )
2014-03-14 14:13:41 -04:00
{
FCollisionChannelInfo Info ;
2016-05-10 16:00:39 -04:00
Info . DisplayName = EnumMetaData ;
2014-03-14 14:13:41 -04:00
Info . CollisionChannel = ( ECollisionChannel ) EnumIndex ;
if ( Enum - > GetMetaData ( * TraceType , EnumIndex ) = = TEXT ( " 1 " ) )
{
Info . TraceType = true ;
}
else
{
Info . TraceType = false ;
}
ValidCollisionChannels . Add ( Info ) ;
}
}
SCollisionPanel - > AddSlot ( )
. AutoHeight ( )
[
SNew ( SSeparator )
. Orientation ( Orient_Horizontal )
] ;
// Add All check box
SCollisionPanel - > AddSlot ( )
. Padding ( 3.f )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. VAlign ( VAlign_Center )
. FillWidth ( 1 )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " SProfileEditDialog_CR_Label " , " Collision Responses " ) )
. Font ( IDetailLayoutBuilder : : GetDetailFontBold ( ) )
. ToolTipText ( LOCTEXT ( " SProfileEditDialog_CR_LabelToolTip " , " When trace by channel, this information will be used for filtering. " ) )
]
+ SHorizontalBox : : Slot ( )
. HAlign ( HAlign_Left )
. VAlign ( VAlign_Center )
[
IDocumentation : : Get ( ) - > CreateAnchor ( TEXT ( " Engine/Physics/Collision " ) )
]
]
+ SHorizontalBox : : Slot ( )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SBox )
. WidthOverride ( RowWidth_Customization )
. HAlign ( HAlign_Left )
. Content ( )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " IgnoreCollisionLabel " , " Ignore " ) )
. Font ( IDetailLayoutBuilder : : GetDetailFontBold ( ) )
]
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SBox )
. HAlign ( HAlign_Left )
. WidthOverride ( RowWidth_Customization )
. Content ( )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " OverlapCollisionLabel " , " Overlap " ) )
. Font ( IDetailLayoutBuilder : : GetDetailFontBold ( ) )
]
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SBox )
. WidthOverride ( RowWidth_Customization )
. HAlign ( HAlign_Left )
. Content ( )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " BlockCollisionLabel " , " Block " ) )
. Font ( IDetailLayoutBuilder : : GetDetailFontBold ( ) )
]
]
]
] ;
SCollisionPanel - > AddSlot ( )
. Padding ( 3.f )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
[
SNew ( STextBlock )
. Text ( FText : : FromString ( TEXT ( " " ) ) )
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
]
+ SHorizontalBox : : Slot ( )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SBox )
. WidthOverride ( COLLIISION_COLUMN_WIDTH )
. Content ( )
[
SNew ( SCheckBox )
. OnCheckStateChanged ( this , & SProfileEditDialog : : OnAllCollisionChannelChanged , ECR_Ignore )
. IsChecked ( this , & SProfileEditDialog : : IsAllCollisionChannelChecked , ECR_Ignore )
]
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SBox )
. WidthOverride ( COLLIISION_COLUMN_WIDTH )
. Content ( )
[
SNew ( SCheckBox )
. OnCheckStateChanged ( this , & SProfileEditDialog : : OnAllCollisionChannelChanged , ECR_Overlap )
. IsChecked ( this , & SProfileEditDialog : : IsAllCollisionChannelChecked , ECR_Overlap )
]
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SBox )
. WidthOverride ( COLLIISION_COLUMN_WIDTH )
. Content ( )
[
SNew ( SCheckBox )
. OnCheckStateChanged ( this , & SProfileEditDialog : : OnAllCollisionChannelChanged , ECR_Block )
. IsChecked ( this , & SProfileEditDialog : : IsAllCollisionChannelChecked , ECR_Block )
]
]
]
] ;
SCollisionPanel - > AddSlot ( )
. AutoHeight ( )
[
SNew ( SSeparator )
. Orientation ( Orient_Horizontal )
] ;
AddCollisionChannel ( ValidCollisionChannels , true ) ;
AddCollisionChannel ( ValidCollisionChannels , false ) ;
}
void SProfileEditDialog : : AddCollisionChannel ( TArray < FCollisionChannelInfo > ValidCollisionChannels , bool bTraceType )
{
FText TitleText , TitleToolTip ;
if ( bTraceType )
{
TitleText = LOCTEXT ( " SProfileEditDialog_CR_TraceType " , " Trace Type " ) ;
TitleToolTip = LOCTEXT ( " SProfileEditDialog_CR_TraceTypeTooltip " , " Trace Type Channels " ) ;
}
else
{
TitleText = LOCTEXT ( " SProfileEditDialog_CR_ObjectType " , " Object Type " ) ;
TitleToolTip = LOCTEXT ( " SProfileEditDialog_CR_ObjectTypeTooltip " , " Object Type Channels " ) ;
}
SCollisionPanel - > AddSlot ( )
. Padding ( 3.f )
[
SNew ( STextBlock )
. Text ( TitleText )
. Font ( IDetailLayoutBuilder : : GetDetailFontBold ( ) )
. ToolTipText ( TitleToolTip )
] ;
// Add Title
for ( int32 Index = 0 ; Index < ValidCollisionChannels . Num ( ) ; + + Index )
{
if ( ValidCollisionChannels [ Index ] . TraceType = = bTraceType )
{
2016-05-10 16:00:39 -04:00
const FString & DisplayName = ValidCollisionChannels [ Index ] . DisplayName ;
2014-03-14 14:13:41 -04:00
int32 ChannelIndex = ( int32 ) ValidCollisionChannels [ Index ] . CollisionChannel ;
SCollisionPanel - > AddSlot ( )
. Padding ( 6.f , 3.f )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
[
SNew ( STextBlock )
2015-01-07 09:52:40 -05:00
. Text ( FText : : FromString ( DisplayName ) )
2014-03-14 14:13:41 -04:00
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
. ToolTipText ( LOCTEXT ( " SProfileEditDialog_CR_ToolTip " , " When trace by channel, this information will be used for filtering. " ) )
]
+ SHorizontalBox : : Slot ( )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SBox )
. WidthOverride ( COLLIISION_COLUMN_WIDTH )
. Content ( )
[
SNew ( SCheckBox )
. OnCheckStateChanged ( this , & SProfileEditDialog : : OnCollisionChannelChanged , ChannelIndex , ECR_Ignore )
. IsChecked ( this , & SProfileEditDialog : : IsCollisionChannelChecked , ChannelIndex , ECR_Ignore )
]
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SBox )
. WidthOverride ( COLLIISION_COLUMN_WIDTH )
. Content ( )
[
SNew ( SCheckBox )
. OnCheckStateChanged ( this , & SProfileEditDialog : : OnCollisionChannelChanged , ChannelIndex , ECR_Overlap )
. IsChecked ( this , & SProfileEditDialog : : IsCollisionChannelChecked , ChannelIndex , ECR_Overlap )
]
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SBox )
. WidthOverride ( COLLIISION_COLUMN_WIDTH )
. Content ( )
[
SNew ( SCheckBox )
. OnCheckStateChanged ( this , & SProfileEditDialog : : OnCollisionChannelChanged , ChannelIndex , ECR_Block )
. IsChecked ( this , & SProfileEditDialog : : IsCollisionChannelChecked , ChannelIndex , ECR_Block )
]
]
]
] ;
}
}
}
2014-12-10 14:24:09 -05:00
void SProfileEditDialog : : OnCollisionChannelChanged ( ECheckBoxState InNewValue , int32 ValidIndex , ECollisionResponse InCollisionResponse )
2014-03-14 14:13:41 -04:00
{
if ( ValidIndex > = 0 & & ValidIndex < MAX_COLLISION_CHANNEL )
{
ProfileTemplate . ResponseToChannels . EnumArray [ ValidIndex ] = InCollisionResponse ;
}
}
2014-12-10 14:24:09 -05:00
ECheckBoxState SProfileEditDialog : : IsCollisionChannelChecked ( int32 ValidIndex , ECollisionResponse InCollisionResponse ) const
2014-03-14 14:13:41 -04:00
{
TArray < uint8 > CollisionResponses ;
if ( ValidIndex > = 0 & & ValidIndex < MAX_COLLISION_CHANNEL )
{
if ( ProfileTemplate . ResponseToChannels . EnumArray [ ValidIndex ] = = InCollisionResponse )
{
2014-12-10 14:24:09 -05:00
return ECheckBoxState : : Checked ;
2014-03-14 14:13:41 -04:00
}
}
2014-12-10 14:24:09 -05:00
return ECheckBoxState : : Unchecked ;
2014-03-14 14:13:41 -04:00
}
2014-12-10 14:24:09 -05:00
void SProfileEditDialog : : OnAllCollisionChannelChanged ( ECheckBoxState InNewValue , ECollisionResponse InCollisionResponse )
2014-03-14 14:13:41 -04:00
{
for ( int32 Index = 0 ; Index < MAX_COLLISION_CHANNEL ; + + Index )
{
ProfileTemplate . ResponseToChannels . EnumArray [ Index ] = InCollisionResponse ;
}
}
2014-12-10 14:24:09 -05:00
ECheckBoxState SProfileEditDialog : : IsAllCollisionChannelChecked ( ECollisionResponse InCollisionResponse ) const
2014-03-14 14:13:41 -04:00
{
for ( int32 Index = 0 ; Index < MAX_COLLISION_CHANNEL ; + + Index )
{
if ( ProfileTemplate . ResponseToChannels . EnumArray [ Index ] ! = InCollisionResponse )
{
2014-12-10 14:24:09 -05:00
return ECheckBoxState : : Unchecked ;
2014-03-14 14:13:41 -04:00
}
}
2014-12-10 14:24:09 -05:00
return ECheckBoxState : : Checked ;
2014-03-14 14:13:41 -04:00
}
//====================================================================================
// SChannelListItem
//=====================================================================================
void SChannelListItem : : Construct ( const FArguments & InArgs , const TSharedRef < STableViewBase > & InOwnerTableView )
{
ChannelSetup = InArgs . _ChannelSetup ;
check ( ChannelSetup . IsValid ( ) ) ;
SMultiColumnTableRow < TSharedPtr < FChannelListItem > > : : Construct ( FSuperRowType : : FArguments ( ) , InOwnerTableView ) ;
}
2015-01-07 09:52:40 -05:00
FText SChannelListItem : : GetDefaultResponse ( ) const
2014-03-14 14:13:41 -04:00
{
switch ( ChannelSetup - > DefaultResponse )
{
case ECR_Ignore :
2015-01-07 09:52:40 -05:00
return LOCTEXT ( " ECR_Ignore " , " Ignore " ) ;
2014-03-14 14:13:41 -04:00
case ECR_Overlap :
2015-01-07 09:52:40 -05:00
return LOCTEXT ( " ECR_Overlap " , " Overlap " ) ;
2014-03-14 14:13:41 -04:00
case ECR_Block :
2015-01-07 09:52:40 -05:00
return LOCTEXT ( " ECR_Block " , " Block " ) ;
2014-03-14 14:13:41 -04:00
}
2015-01-07 09:52:40 -05:00
return LOCTEXT ( " ECR_Error " , " ERROR " ) ;
2014-03-14 14:13:41 -04:00
}
TSharedRef < SWidget > SChannelListItem : : GenerateWidgetForColumn ( const FName & ColumnName )
{
if ( ColumnName = = TEXT ( " Name " ) )
{
return SNew ( SBox )
. HeightOverride ( 20 )
2014-08-15 12:02:48 -04:00
. Padding ( FMargin ( 3 , 0 ) )
2014-03-14 14:13:41 -04:00
. VAlign ( VAlign_Center )
[
SNew ( STextBlock )
2014-12-02 06:42:27 -05:00
. Text ( FText : : FromName ( ChannelSetup - > Name ) )
2014-03-14 14:13:41 -04:00
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
] ;
}
else if ( ColumnName = = TEXT ( " DefaultResponse " ) )
{
return SNew ( SBox )
. HeightOverride ( 20 )
2014-08-15 12:02:48 -04:00
. Padding ( FMargin ( 3 , 0 ) )
2014-03-14 14:13:41 -04:00
. VAlign ( VAlign_Center )
[
SNew ( STextBlock )
. Text ( SChannelListItem : : GetDefaultResponse ( ) )
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
] ;
}
return SNullWidget : : NullWidget ;
}
//====================================================================================
// SProfileListItem
//=====================================================================================
void SProfileListItem : : Construct ( const FArguments & InArgs , const TSharedRef < STableViewBase > & InOwnerTableView )
{
ProfileTemplate = InArgs . _ProfileTemplate ;
check ( ProfileTemplate . IsValid ( ) ) ;
SMultiColumnTableRow < TSharedPtr < FProfileListItem > > : : Construct ( FSuperRowType : : FArguments ( ) , InOwnerTableView ) ;
}
2015-01-07 09:52:40 -05:00
FText SProfileListItem : : GetObjectType ( ) const
2014-03-14 14:13:41 -04:00
{
2015-01-07 09:52:40 -05:00
return FText : : FromName ( ProfileTemplate - > ObjectTypeName ) ;
2014-03-14 14:13:41 -04:00
}
2015-01-07 09:52:40 -05:00
FText SProfileListItem : : GetCollsionEnabled ( ) const
2014-03-14 14:13:41 -04:00
{
switch ( ProfileTemplate - > CollisionEnabled )
{
case ECollisionEnabled : : NoCollision :
2015-01-07 09:52:40 -05:00
return LOCTEXT ( " ECollisionEnabled_NoCollision " , " No Collision " ) ;
2014-03-14 14:13:41 -04:00
case ECollisionEnabled : : QueryOnly :
2015-04-27 13:50:58 -04:00
return LOCTEXT ( " ECollisionEnabled_QueryOnly " , " Query Only (No Physics Collision) " ) ;
case ECollisionEnabled : : PhysicsOnly :
return LOCTEXT ( " ECollisionEnabled_PhysicsOnly " , " Physics Only (No Query Collision) " ) ;
2014-03-14 14:13:41 -04:00
case ECollisionEnabled : : QueryAndPhysics :
2015-04-27 13:50:58 -04:00
return LOCTEXT ( " ECollisionEnabled_QueryAndPhysics " , " Collision Enabled (Query and Physics) " ) ;
2014-03-14 14:13:41 -04:00
}
2015-01-07 09:52:40 -05:00
return LOCTEXT ( " ECollisionEnabled_Error " , " ERROR " ) ;
2014-03-14 14:13:41 -04:00
}
TSharedRef < SWidget > SProfileListItem : : GenerateWidgetForColumn ( const FName & ColumnName )
{
if ( ColumnName = = TEXT ( " Engine " ) )
{
if ( ProfileTemplate - > bCanModify = = false )
{
return SNew ( SBox )
. HeightOverride ( 20 )
. VAlign ( VAlign_Center )
[
SNew ( SImage )
. Image ( FEditorStyle : : GetBrush ( " SettingsEditor.Collision_Engine " ) )
2014-12-02 06:42:27 -05:00
. ToolTipText ( LOCTEXT ( " CantModify_Tooltip " , " You can't modify the name of Engine profiles " ) )
2014-03-14 14:13:41 -04:00
] ;
}
else
{
return SNew ( SBox )
. HeightOverride ( 20 )
. VAlign ( VAlign_Center )
[
SNew ( SImage )
. Image ( FEditorStyle : : GetBrush ( " SettingsEditor.Collision_Game " ) )
2020-01-15 16:28:04 -05:00
. ToolTipText ( LOCTEXT ( " CanModify_Tooltip " , " This is your custom project profile " ) )
2014-03-14 14:13:41 -04:00
] ;
}
}
else if ( ColumnName = = TEXT ( " Name " ) )
{
return SNew ( SBox )
. HeightOverride ( 20 )
. VAlign ( VAlign_Center )
[
SNew ( STextBlock )
2014-12-02 06:42:27 -05:00
. Text ( FText : : FromName ( ProfileTemplate - > Name ) )
2014-03-14 14:13:41 -04:00
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
] ;
}
else if ( ColumnName = = TEXT ( " Collision " ) )
{
return SNew ( SBox )
. HeightOverride ( 20 )
. VAlign ( VAlign_Center )
[
SNew ( STextBlock )
. Text ( SProfileListItem : : GetCollsionEnabled ( ) )
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
] ;
}
else if ( ColumnName = = TEXT ( " ObjectType " ) )
{
return SNew ( SBox )
. HeightOverride ( 20 )
. VAlign ( VAlign_Center )
[
SNew ( STextBlock )
. Text ( SProfileListItem : : GetObjectType ( ) )
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
] ;
}
else if ( ColumnName = = TEXT ( " Description " ) )
{
return SNew ( SBox )
. HeightOverride ( 20 )
. VAlign ( VAlign_Center )
[
SNew ( STextBlock )
2015-01-07 09:52:40 -05:00
. Text ( FText : : FromString ( ProfileTemplate - > HelpMessage ) )
2014-03-14 14:13:41 -04:00
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
] ;
}
return SNullWidget : : NullWidget ;
}
//====================================================================================
// FCollisionProfileDetails
//=====================================================================================
TSharedRef < IDetailCustomization > FCollisionProfileDetails : : MakeInstance ( )
{
return MakeShareable ( new FCollisionProfileDetails ) ;
}
void FCollisionProfileDetails : : CustomizeDetails ( IDetailLayoutBuilder & DetailBuilder )
{
IDetailCategoryBuilder & ObjectChannelCategory = DetailBuilder . EditCategory ( " Object Channels " ) ;
IDetailCategoryBuilder & TraceChannelCategory = DetailBuilder . EditCategory ( " Trace Channels " ) ;
IDetailCategoryBuilder & PresetCategory = DetailBuilder . EditCategory ( " Preset " ) ;
CollisionProfile = UCollisionProfile : : Get ( ) ;
check ( CollisionProfile ) ;
// save currently loaded data
2014-04-02 18:09:23 -04:00
SavedData . Save ( CollisionProfile ) ;
2014-03-14 14:13:41 -04:00
RefreshChannelList ( true ) ;
RefreshChannelList ( false ) ;
RefreshProfileList ( ) ;
PresetCategory . InitiallyCollapsed ( true ) ;
PresetCategory . RestoreExpansionState ( false ) ;
const FString ObjectChannelDocLink = TEXT ( " Shared/Collision " ) ;
const FString TraceChannelDocLink = TEXT ( " Shared/Collision " ) ;
const FString PresetsDocLink = TEXT ( " Shared/Collision " ) ;
TSharedPtr < SToolTip > ObjectChannelTooltip = IDocumentation : : Get ( ) - > CreateToolTip ( LOCTEXT ( " EditCollisionObject " , " Edit collision object types. " ) , NULL , ObjectChannelDocLink , TEXT ( " ObjectChannel " ) ) ;
TSharedPtr < SToolTip > TraceChannelTooltip = IDocumentation : : Get ( ) - > CreateToolTip ( LOCTEXT ( " EditCollisionChannel " , " Edit collision trace channels. " ) , NULL , TraceChannelDocLink , TEXT ( " TraceChannel " ) ) ;
TSharedPtr < SToolTip > ProfileTooltip = IDocumentation : : Get ( ) - > CreateToolTip ( LOCTEXT ( " EditCollisionPreset " , " Edit collision presets. " ) , NULL , PresetsDocLink , TEXT ( " Preset " ) ) ;
// Customize collision section
2014-12-01 11:19:41 -05:00
ObjectChannelCategory . AddCustomRow ( LOCTEXT ( " CustomCollisionObjectChannels " , " ObjectChannels " ) )
2014-03-14 14:13:41 -04:00
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. Padding ( 5 )
. AutoHeight ( )
[
2014-08-15 12:02:48 -04:00
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. Padding ( 2 , 10 )
. FillWidth ( 1 )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( STextBlock )
. AutoWrapText ( true )
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
. ToolTip ( ObjectChannelTooltip )
2019-06-08 17:15:34 -04:00
. Text ( LOCTEXT ( " ObjectChannel_Menu_Description " , " You can have up to 18 custom channels including object and trace channels. This is the list of object types for your project. If you delete an object type that is being used by the game, any uses of that type will revert to WorldStatic. " ) )
2014-08-15 12:02:48 -04:00
]
2014-03-14 14:13:41 -04:00
2014-08-15 12:02:48 -04:00
+ SHorizontalBox : : Slot ( )
. Padding ( 2 , 10 )
. AutoWidth ( )
. VAlign ( VAlign_Center )
[
SNew ( SButton )
. ContentPadding ( FEditorStyle : : GetMargin ( " StandardDialog.ContentPadding " ) )
2014-12-02 06:42:27 -05:00
. Text ( LOCTEXT ( " ChannelMenu_NewObject " , " New Object Channel... " ) )
2014-08-15 12:02:48 -04:00
. OnClicked ( this , & FCollisionProfileDetails : : OnNewChannel , false )
. IsEnabled ( this , & FCollisionProfileDetails : : IsNewChannelAvailable )
]
2014-03-14 14:13:41 -04:00
2014-08-15 12:02:48 -04:00
+ SHorizontalBox : : Slot ( )
. Padding ( 2 , 10 )
. AutoWidth ( )
. VAlign ( VAlign_Center )
[
SNew ( SButton )
. ContentPadding ( FEditorStyle : : GetMargin ( " StandardDialog.ContentPadding " ) )
2014-12-02 06:42:27 -05:00
. Text ( LOCTEXT ( " ChannelMenu_Edit " , " Edit... " ) )
2014-08-15 12:02:48 -04:00
. OnClicked ( this , & FCollisionProfileDetails : : OnEditChannel , false )
. IsEnabled ( this , & FCollisionProfileDetails : : IsAnyChannelSelected , false )
]
2014-03-14 14:13:41 -04:00
2014-08-15 12:02:48 -04:00
+ SHorizontalBox : : Slot ( )
. Padding ( 2 , 10 )
. AutoWidth ( )
. VAlign ( VAlign_Center )
[
SNew ( SButton )
. ContentPadding ( FEditorStyle : : GetMargin ( " StandardDialog.ContentPadding " ) )
2014-12-02 06:42:27 -05:00
. Text ( LOCTEXT ( " ChannelMenu_Delete " , " Delete... " ) )
2014-08-15 12:02:48 -04:00
. OnClicked ( this , & FCollisionProfileDetails : : OnDeleteChannel , false )
. IsEnabled ( this , & FCollisionProfileDetails : : IsAnyChannelSelected , false )
2014-03-14 14:13:41 -04:00
]
]
+ SVerticalBox : : Slot ( )
. Padding ( 5 )
. FillHeight ( 1 )
[
2018-09-26 08:22:54 -04:00
SNew ( SBox )
. MaxDesiredHeight ( 200.f )
[
SAssignNew ( ObjectChannelListView , SChannelListView )
. ItemHeight ( 15.f )
. ListItemsSource ( & ObjectChannelList )
. OnGenerateRow ( this , & FCollisionProfileDetails : : HandleGenerateChannelWidget )
. OnMouseButtonDoubleClick ( this , & FCollisionProfileDetails : : OnObjectChannelListItemDoubleClicked )
. SelectionMode ( ESelectionMode : : Single )
2014-03-14 14:13:41 -04:00
2018-09-26 08:22:54 -04:00
. HeaderRow (
SNew ( SHeaderRow )
// Name
+ SHeaderRow : : Column ( " Name " )
. HAlignCell ( HAlign_Left )
. FillWidth ( 1 )
. HeaderContentPadding ( FMargin ( 0 , 3 ) )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " ChannelListHeader_Name " , " Name " ) )
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
]
// Default Response
+ SHeaderRow : : Column ( " DefaultResponse " )
. HAlignCell ( HAlign_Left )
. FillWidth ( 1 )
. HeaderContentPadding ( FMargin ( 0 , 3 ) )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " ChannelListHeader_DefaultResponse " , " Default Response " ) )
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
]
)
]
2014-03-14 14:13:41 -04:00
]
] ;
2014-12-01 11:19:41 -05:00
TraceChannelCategory . AddCustomRow ( LOCTEXT ( " CustomCollisionTraceChannels " , " TraceChannels " ) )
2014-03-14 14:13:41 -04:00
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. Padding ( 5 )
. AutoHeight ( )
[
2014-08-15 12:02:48 -04:00
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. Padding ( 2 , 10 )
. FillWidth ( 1 )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( STextBlock )
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
. AutoWrapText ( true )
. ToolTip ( TraceChannelTooltip )
2019-06-08 17:15:34 -04:00
. Text ( LOCTEXT ( " TraceChannel_Menu_Description " , " You can have up to 18 custom channels including object and trace channels. This is the list of trace channels for your project. If you delete a trace channel that is being used by the game, the behavior of the trace is undefined. " ) )
2014-08-15 12:02:48 -04:00
]
2014-03-14 14:13:41 -04:00
2014-08-15 12:02:48 -04:00
+ SHorizontalBox : : Slot ( )
. Padding ( 2 , 10 )
. AutoWidth ( )
. VAlign ( VAlign_Center )
[
SNew ( SButton )
. ContentPadding ( FEditorStyle : : GetMargin ( " StandardDialog.ContentPadding " ) )
2014-12-02 06:42:27 -05:00
. Text ( LOCTEXT ( " ChannelMenu_NewTrace " , " New Trace Channel... " ) )
2014-08-15 12:02:48 -04:00
. OnClicked ( this , & FCollisionProfileDetails : : OnNewChannel , true )
. IsEnabled ( this , & FCollisionProfileDetails : : IsNewChannelAvailable )
]
2014-03-14 14:13:41 -04:00
2014-08-15 12:02:48 -04:00
+ SHorizontalBox : : Slot ( )
. Padding ( 2 , 10 )
. AutoWidth ( )
. VAlign ( VAlign_Center )
[
SNew ( SButton )
. ContentPadding ( FEditorStyle : : GetMargin ( " StandardDialog.ContentPadding " ) )
2014-12-02 06:42:27 -05:00
. Text ( LOCTEXT ( " ChannelMenu_Edit " , " Edit... " ) )
2014-08-15 12:02:48 -04:00
. OnClicked ( this , & FCollisionProfileDetails : : OnEditChannel , true )
. IsEnabled ( this , & FCollisionProfileDetails : : IsAnyChannelSelected , true )
]
2014-03-14 14:13:41 -04:00
2014-08-15 12:02:48 -04:00
+ SHorizontalBox : : Slot ( )
. Padding ( 2 , 10 )
. AutoWidth ( )
. VAlign ( VAlign_Center )
[
SNew ( SButton )
. ContentPadding ( FEditorStyle : : GetMargin ( " StandardDialog.ContentPadding " ) )
2014-12-02 06:42:27 -05:00
. Text ( LOCTEXT ( " ChannelMenu_Delete " , " Delete... " ) )
2014-08-15 12:02:48 -04:00
. OnClicked ( this , & FCollisionProfileDetails : : OnDeleteChannel , true )
. IsEnabled ( this , & FCollisionProfileDetails : : IsAnyChannelSelected , true )
2014-03-14 14:13:41 -04:00
]
]
+ SVerticalBox : : Slot ( )
. Padding ( 5 )
. FillHeight ( 1 )
[
2018-09-26 08:22:54 -04:00
SNew ( SBox )
. MaxDesiredHeight ( 400.f )
[
SAssignNew ( TraceChannelListView , SChannelListView )
. ItemHeight ( 15.0f )
. ListItemsSource ( & TraceChannelList )
. OnGenerateRow ( this , & FCollisionProfileDetails : : HandleGenerateChannelWidget )
. OnMouseButtonDoubleClick ( this , & FCollisionProfileDetails : : OnTraceChannelListItemDoubleClicked )
. SelectionMode ( ESelectionMode : : Single )
2014-03-14 14:13:41 -04:00
2018-09-26 08:22:54 -04:00
. HeaderRow (
SNew ( SHeaderRow )
// Name
+ SHeaderRow : : Column ( " Name " )
. HAlignCell ( HAlign_Left )
. FillWidth ( 1 )
. HeaderContentPadding ( FMargin ( 0 , 3 ) )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " ChannelListHeader_Name " , " Name " ) )
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
]
// Default Response
+ SHeaderRow : : Column ( " DefaultResponse " )
. HAlignCell ( HAlign_Left )
. FillWidth ( 1 )
. HeaderContentPadding ( FMargin ( 0 , 3 ) )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " ChannelListHeader_DefaultResponse " , " Default Response " ) )
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
]
)
]
2014-03-14 14:13:41 -04:00
]
] ;
2014-12-01 11:19:41 -05:00
PresetCategory . AddCustomRow ( LOCTEXT ( " CustomCollisionProfiles " , " Presets " ) )
2014-03-14 14:13:41 -04:00
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. Padding ( 5 )
. AutoHeight ( )
[
2014-08-15 12:02:48 -04:00
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. Padding ( 2 , 2 )
. FillWidth ( 1 )
2014-03-14 14:13:41 -04:00
[
2014-08-15 12:02:48 -04:00
SNew ( STextBlock )
. AutoWrapText ( true )
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
. ToolTip ( ProfileTooltip )
. Text ( LOCTEXT ( " Profile_Menu_Description " , " You can modify any of your project profiles. Please note that if you modify profile, it can change collision behavior. Please be careful when you change currently exisiting (used) collision profiles. " ) )
]
2014-03-14 14:13:41 -04:00
2014-08-15 12:02:48 -04:00
+ SHorizontalBox : : Slot ( )
. Padding ( 2 , 2 )
. AutoWidth ( )
. VAlign ( VAlign_Center )
[
SNew ( SButton )
. ContentPadding ( FEditorStyle : : GetMargin ( " StandardDialog.ContentPadding " ) )
2014-12-02 06:42:27 -05:00
. Text ( LOCTEXT ( " ProfileMenu_New " , " New... " ) )
2014-08-15 12:02:48 -04:00
. OnClicked ( this , & FCollisionProfileDetails : : OnNewProfile )
]
2014-03-14 14:13:41 -04:00
2014-08-15 12:02:48 -04:00
+ SHorizontalBox : : Slot ( )
. Padding ( 2 , 2 )
. AutoWidth ( )
. VAlign ( VAlign_Center )
[
SNew ( SButton )
. ContentPadding ( FEditorStyle : : GetMargin ( " StandardDialog.ContentPadding " ) )
2014-12-02 06:42:27 -05:00
. Text ( LOCTEXT ( " ProfileMenu_Edit " , " Edit... " ) )
2014-08-15 12:02:48 -04:00
. OnClicked ( this , & FCollisionProfileDetails : : OnEditProfile )
. IsEnabled ( this , & FCollisionProfileDetails : : IsAnyProfileSelected )
]
2014-03-14 14:13:41 -04:00
2014-08-15 12:02:48 -04:00
+ SHorizontalBox : : Slot ( )
. Padding ( 2 , 2 )
. AutoWidth ( )
. VAlign ( VAlign_Center )
[
SNew ( SButton )
. ContentPadding ( FEditorStyle : : GetMargin ( " StandardDialog.ContentPadding " ) )
2014-12-02 06:42:27 -05:00
. Text ( LOCTEXT ( " ProfileMenu_Delete " , " Delete... " ) )
2014-08-15 12:02:48 -04:00
. OnClicked ( this , & FCollisionProfileDetails : : OnDeleteProfile )
. IsEnabled ( this , & FCollisionProfileDetails : : IsAnyProfileSelected )
2014-03-14 14:13:41 -04:00
]
]
+ SVerticalBox : : Slot ( )
. Padding ( 5 )
. FillHeight ( 1 )
[
2018-09-26 08:22:54 -04:00
SNew ( SBox )
. MaxDesiredHeight ( 600.f )
[
SAssignNew ( ProfileListView , SProfileListView )
. ItemHeight ( 20.0f )
. ListItemsSource ( & ProfileList )
. OnGenerateRow ( this , & FCollisionProfileDetails : : HandleGenerateProfileWidget )
. OnMouseButtonDoubleClick ( this , & FCollisionProfileDetails : : OnProfileListItemDoubleClicked )
. SelectionMode ( ESelectionMode : : Single )
2014-03-14 14:13:41 -04:00
2018-09-26 08:22:54 -04:00
. HeaderRow (
SNew ( SHeaderRow )
// Name
+ SHeaderRow : : Column ( " Engine " )
. HAlignCell ( HAlign_Left )
. FixedWidth ( 30 )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( STextBlock )
. Text ( FText : : GetEmpty ( ) )
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
]
]
// Name
+ SHeaderRow : : Column ( " Name " )
. HAlignCell ( HAlign_Left )
. FillWidth ( 1 )
. HeaderContentPadding ( FMargin ( 0 , 3 ) )
2014-03-14 14:13:41 -04:00
[
SNew ( STextBlock )
2018-09-26 08:22:54 -04:00
. Text ( LOCTEXT ( " ProfileListHeader_Name " , " Name " ) )
2014-03-14 14:13:41 -04:00
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
]
2018-09-26 08:22:54 -04:00
// Default Response
+ SHeaderRow : : Column ( " Collision " )
. HAlignCell ( HAlign_Left )
. FillWidth ( 1 )
. HeaderContentPadding ( FMargin ( 0 , 3 ) )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " ProfileListHeader_Collision " , " Collision " ) )
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
]
// Trace Type
+ SHeaderRow : : Column ( " ObjectType " )
. HAlignCell ( HAlign_Left )
. FillWidth ( 1 )
. HeaderContentPadding ( FMargin ( 0 , 3 ) )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " ProfileListHeader_ObjectType " , " Object Type " ) )
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
]
// Static Object
+ SHeaderRow : : Column ( " Description " )
. HAlignCell ( HAlign_Left )
. FillWidth ( 2 )
. HeaderContentPadding ( FMargin ( 0 , 3 ) )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " ProfileListHeader_Description " , " Description " ) )
. Font ( IDetailLayoutBuilder : : GetDetailFont ( ) )
]
)
]
2014-03-14 14:13:41 -04:00
]
] ;
}
void FCollisionProfileDetails : : CommitProfileChange ( int32 ProfileIndex , FCollisionResponseTemplate & NewProfile )
{
2014-04-02 18:09:23 -04:00
FCollisionResponseTemplate & SourceProfile = CollisionProfile - > Profiles [ ProfileIndex ] ;
2014-03-14 14:13:41 -04:00
2014-04-02 18:09:23 -04:00
// if name changed, we need to add redirect
if ( SourceProfile . Name ! = NewProfile . Name )
{
CollisionProfile - > AddProfileRedirect ( SourceProfile . Name , NewProfile . Name ) ;
}
if ( SourceProfile . bCanModify )
{
// if you can modify, overwrites everything
CollisionProfile - > SaveCustomResponses ( NewProfile ) ;
SourceProfile = ( NewProfile ) ;
}
else
{
// copy everything else but not the response
// we add that to EditProfile
SourceProfile . CollisionEnabled = NewProfile . CollisionEnabled ;
SourceProfile . ObjectTypeName = NewProfile . ObjectTypeName ;
SourceProfile . HelpMessage = NewProfile . HelpMessage ;
// now update EditProfiles
// look at the saved profile, and collect different responses first
FCollisionResponseTemplate & SavedProfile = SavedData . Profiles [ ProfileIndex ] ;
TArray < FResponseChannel > NewCustomResponses ;
struct FFindByName
{
FName Name ;
FFindByName ( FName InName ) : Name ( InName ) { }
bool operator ( ) ( const FResponseChannel & Element ) const
{
return ( Name = = Element . Channel ) ;
}
2014-10-01 14:45:23 -04:00
bool operator ( ) ( const FCustomProfile & Element ) const
2014-04-02 18:09:23 -04:00
{
return ( Name = = Element . Name ) ;
}
} ;
for ( int32 Index = 0 ; Index < MAX_COLLISION_CHANNEL ; + + Index )
{
if ( NewProfile . ResponseToChannels . EnumArray [ Index ] ! = SavedProfile . ResponseToChannels . EnumArray [ Index ] )
{
FName ChannelName = CollisionProfile - > ChannelDisplayNames [ Index ] ;
NewCustomResponses . Add ( FResponseChannel ( ChannelName , ( ECollisionResponse ) NewProfile . ResponseToChannels . EnumArray [ Index ] ) ) ;
}
}
// we have new list, merge with existing ones
if ( NewCustomResponses . Num ( ) > 0 )
{
FCustomProfile * CurrentProfile = CollisionProfile - > EditProfiles . FindByPredicate ( FFindByName ( NewProfile . Name ) ) ;
if ( ! CurrentProfile )
{
// need to add new one, and just copy NewCustomResponses
FCustomProfile NewCustomProfile ;
NewCustomProfile . Name = NewProfile . Name ;
NewCustomProfile . CustomResponses = NewCustomResponses ;
CollisionProfile - > EditProfiles . Add ( NewCustomProfile ) ;
}
else
{
// need to merge previous list and new list
for ( auto & Iter : NewCustomResponses )
{
FResponseChannel * CurrentChannel = CurrentProfile - > CustomResponses . FindByPredicate ( FFindByName ( Iter . Channel ) ) ;
if ( CurrentChannel )
{
if ( CurrentChannel - > Response ! = Iter . Response )
{
CurrentChannel - > Response = Iter . Response ;
}
}
else
{
// just add new one
CurrentProfile - > CustomResponses . Add ( Iter ) ;
}
}
}
}
}
2014-03-14 14:13:41 -04:00
}
void FCollisionProfileDetails : : UpdateChannel ( bool bTraceType )
{
RefreshChannelList ( bTraceType ) ;
if ( bTraceType )
{
TraceChannelListView - > RequestListRefresh ( ) ;
}
else
{
ObjectChannelListView - > RequestListRefresh ( ) ;
}
Copying //UE4/Dev-AnimPhys to //UE4/Dev-Main (Source: //UE4/Dev-AnimPhys @ 3384744)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3294073 on 2017/02/09 by Thomas.Sarkanen
Delete old location of FriendViewModel.h that did not get picked up correctly in the merge
Change 3354003 on 2017/03/20 by Thomas.Sarkanen
Back out changelist 3353914
Change 3355932 on 2017/03/21 by Thomas.Sarkanen
Back out changelist 3354003
Reinstating merge from Main:
Merging //UE4/Dev-Main to Dev-AnimPhys (//UE4/Dev-AnimPhys) @ CL 3353839
Change 3358776 on 2017/03/22 by Ori.Cohen
Recreate physics when changing mobility of components - fixes debug rendering issue
#JIRA UE-39328
Change 3360075 on 2017/03/23 by James.Golding
Back out changelist 3358776, as it was made after smoke testing. Will re-submit after copy to main.
Change 3362695 on 2017/03/24 by Thomas.Sarkanen
Use correct extender when building menus for AnimationEditor, SkeletalMeshEditor & SkeletonEditor
#jira UE-41100 - Persona code calling incorrect extenders when building menus.
Change 3362696 on 2017/03/24 by Thomas.Sarkanen
Facial animation experimental feature now pops up restart editor toast
#jira UE-40989 - User is not prompted to restart the editor when enabling the Facial Animation Importer
Change 3362699 on 2017/03/24 by Thomas.Sarkanen
Enable snapping for translation in animation viewports
#jira UE-39747 - Translating sockets in Persona is not affected by Snap Options
#jira UE-39748 - Translating bones in Persona is not affected by Snap Options
Change 3362700 on 2017/03/24 by Thomas.Sarkanen
Curve source nodes now dont update their source title if the source is a pin
The title of the node is not recached when the pin default changes, so we cant display it in the title
#jira UE-40108 - When changing a Curve Source Node doesn't update source binding name when typed in
Change 3362721 on 2017/03/24 by Thomas.Sarkanen
CVar r.SkeletalMeshLODBias no longer affects meshes in animation viewports
#jira UE-35733 - GSkeletalMeshLODBias affects render LOD in Persona
Change 3362724 on 2017/03/24 by Thomas.Sarkanen
Fix animation preview scene keyboard bindings
Also moved advanced preview scene into its own module
#jira UE-41505 - Pressing the hotkey I and O do not hide the floor and environment if the Preview Scene Settings tab isn't opened.
Change 3362783 on 2017/03/24 by Ori.Cohen
Fix incorrect locking and check when an editor static shape is changed. Originally this code assumed it would only get called at runtime, where there is only 1 shape. In the case of the async scene and static shapes - there are two shapes and if you update the body setup in the editor this will crash.
Change 3362796 on 2017/03/24 by Ori.Cohen
Fix welded capsules not using the right rotation
#JIRA UE-41546
Change 3362803 on 2017/03/24 by Ori.Cohen
Recreate physics when changing mobility of components - fixes debug rendering issue
#JIRA UE-39328
Change 3363013 on 2017/03/24 by Thomas.Sarkanen
Fix CIS issue
Change 3363202 on 2017/03/24 by Ori.Cohen
Fix bad #endif
Change 3363295 on 2017/03/24 by Ori.Cohen
Remove bWelded and use WeldParent everywhere. This fixes a bad case where a kinematic is returned as the root welded of simulated children.
#JIRA UE-40783
Change 3363435 on 2017/03/24 by Jon.Nabozny
Fix infinite jump on client when Jump Max Hold Time is not 0.
#jira UE-41004
Change 3363451 on 2017/03/24 by Jon.Nabozny
Fix USkeletalMeshComponent::PoseTickedThisFrame to use a frame counter instead of world time (which isn't changed while paused).
#jira UE-39567
Change 3363504 on 2017/03/24 by Jon.Nabozny
Fix SCE_NP_MATCHING2_REQUEST_EVENT_SEARCH_ROOM_A to treat result data as linked list instead of array.
(Code originally came from SCE via UDN)
#jira UE-41049
Change 3363532 on 2017/03/24 by Ori.Cohen
Change default to SkipSimulatedBones.
#JIRA UE-41404
Change 3363537 on 2017/03/24 by Ori.Cohen
Remove the unsupported option of HideBone with DisableCollision. If we want this in the future we can add it.
#JIRA UE-30826
Change 3363681 on 2017/03/24 by Jon.Nabozny
Reapply 3292286 after it was clobbered by 3360002
(Only clobbered in Ocean).
#jira UE-37512
Change 3363722 on 2017/03/24 by mason.seay
Updated map to improve testing
Change 3365351 on 2017/03/27 by Thomas.Sarkanen
Fix non-PCH CIS errors
#jira UE-43335 - CIS fail: 'FAdvancedPreviewSceneCommands is not a class name
Change 3365422 on 2017/03/27 by Thomas.Sarkanen
Fixed skinned mesh LOD not updating in editor under various physics-related circumstances
#jira UE-42013 - Skeletal meshes with recently generated LODs will not change LODs in viewport
Change 3365423 on 2017/03/27 by Thomas.Sarkanen
Fix ensure when setting Spline IK Bone Axis to 'None'
Node is currently not in use, so I've avoided deprecating this for now. Values should be preserved.
#jira UE-39723 - Ensure when setting Bone Axis to None in Spline IK
Change 3365424 on 2017/03/27 by Thomas.Sarkanen
Fix control rigs being convertable to possessables
Also prevent 'export to anim sequence' button from appearing on standard level sequences
#jira UE-42070 - Crash converting a control rig to Possessable
Change 3365425 on 2017/03/27 by Thomas.Sarkanen
When selecting bones that are non-required, we dont render gizmos or text labels
#jira UE-35737 - Bone labels flicker between two locations when removing from LOD levels in Persona
Change 3365426 on 2017/03/27 by Thomas.Sarkanen
Fixed foot placement IK doing line traces on worker threads
Also exposed const access to required bones array (the proxy already does this, so I figure the instance should get it too).
Note: Node is not actually used
#jira UE-43179 - Fix FAnimNode_FootPlacementIK doing line trace on worker thread
Change 3365428 on 2017/03/27 by Thomas.Sarkanen
Skeleton selection no does not lag behind choice made in viewport
#jira UE-42236 - Mesh Overlay always lags behind actual selection
Change 3365429 on 2017/03/27 by Thomas.Sarkanen
Fix anim BPs that contain state machines having blank palettes
#jira UE-42172 - AnimBP Palette is blank on existing AnimBPs
Change 3365435 on 2017/03/27 by Jurre.deBaare
Undoing Channel selection in Paint mode does not work
#fix use duplicated CDO object instead of CDO directly
#jira UE-42621
Change 3365436 on 2017/03/27 by Jurre.deBaare
Functionless undo/redo transactions created when importing Alembic file and changing conversion settings
#fix use duplicated CDO object instead of CDO directly
#jira UE-40347
Change 3365437 on 2017/03/27 by Jurre.deBaare
Ensure that HLOD cannot be set up in sub-levels
#fix added functionality to check whether or not a level is used as a sub/streaming level in any other content, and if so show a widget similar to the checkout notice to inform the user why the hlod outliner is disabled
#jira UE-40301
Change 3365438 on 2017/03/27 by Jurre.deBaare
2D Blendspace breaks when aligning samples in a straight line
#fix for some reason the number of samples to considerate was limit to 3 (old code) so removed it since it doesn't make sense
#jira UE-42744
Change 3365439 on 2017/03/27 by Jurre.deBaare
Color View Mode doesn't reset when closing/reopening editor
#fix added a delegate to OnEditorClose to ensure we can reset the viewport modes while they still exist, this issue would happen if the user closes the editor with mesh paint mode open, exiting the mode would only happen after destructing most of the editor
#jira UE-42466
Change 3365440 on 2017/03/27 by Jurre.deBaare
LOD Model field scrubbing is very sensitive
#fix made sure that max slider value is also driven by data
#jira UE-42980
Change 3365441 on 2017/03/27 by Jurre.deBaare
Replacing an asset in a sequence player node does not register in undo history
#fix added transaction for dropping anim assets on player nodes
#jira UE-39152
Change 3365442 on 2017/03/27 by Jurre.deBaare
Crash on Mac importing some alembic files
#fix disable multithread abc file reading with HDF5 backend
#jira UE-39783
Change 3365443 on 2017/03/27 by Jurre.deBaare
Moving over Alembic feature: "Add support for 'finding' materials according to the face-set names in abc files"
Change 3365444 on 2017/03/27 by Jurre.deBaare
Moving over Alembic fixes:
- Time offset issues > changed how we determine frame indices and frame steps
- Incorrect tangent issues > enforce tangent calculation during skeletal mesh import
- Automatically set recompute tangent flag on skeletal mesh sections
Change 3365451 on 2017/03/27 by Jurre.deBaare
CIS: include needed for GetTransientPackage
Change 3365460 on 2017/03/27 by Jurre.deBaare
CIS: apparently CIS wants explicit cast to UObject
Change 3365463 on 2017/03/27 by Jurre.deBaare
CIS: final fix, was actually UPackage include missing ugh
Change 3365486 on 2017/03/27 by Thomas.Sarkanen
Fix case error in include for Linux builds
Change 3365499 on 2017/03/27 by James.Golding
Fix editing collision settings sometimes not 'sticking' - wait until after LoadProfileConfig (which modified Profiles array) to copy to 'SavedData'
Fix FCollsiionProfileData typo
#jira UE-42490
Change 3365500 on 2017/03/27 by Jurre.deBaare
Turning on LOD Model Painting does not copy paint to other LODs on Skeletal Mesh
#fix neede to pre edit / post edit the skeletal mesh to ensure the color buffers were re-initialised
#jira UE-42637
Change 3365501 on 2017/03/27 by James.Golding
Disable rather than hide anim picker when no mesh assigned
#jira UE-35537
Change 3365505 on 2017/03/27 by James.Golding
Fix USkinnedMeshComponent::FindClosestBone ignoring bRequirePhysicsAsset, because BodySetupIndexMap.FindRef would return 0 if bone not present
https://udn.unrealengine.com/questions/353125/uskinnedmeshcomponentfindclosestbone-does-not-resp.html
#jira UE-43061
Change 3365515 on 2017/03/27 by Jurre.deBaare
Using Alt+Click to break Transition node connections cannot be undone using the Undo command
#fix added transactions to breaking node links
#jira UE-39068
Change 3365528 on 2017/03/27 by Jurre.deBaare
Blendspaces don't update to reflect sync marker changes that have occurred on animations in the blend
#fix added validation on blendspaces when removing or adding sync markers in animation editor
#jira UE-39814
Change 3365535 on 2017/03/27 by Jurre.deBaare
Camera moves at the same time as erasing paint when clicking Paint settings and back into Viewport
#fix lock camera if erasing as well
#jira UE-42474
Change 3365539 on 2017/03/27 by Jurre.deBaare
Painting on animation sequence paints on invisible T-pose skeleton
#fix during painting enforce bUseRefPoseOnInitAnim so you're always painting on a ref-pose skeletal mesh
#jira UE-42484
Change 3365545 on 2017/03/27 by Jurre.deBaare
Fill Tool does not fill the mesh with the selected Texture Weight Index when used in Weight Vertex Painting
#fix added function to generate color according to texture weight settings and index, and fill using that color when the editor is in texture weight mode
#jira UE-43091
Change 3365549 on 2017/03/27 by Jurre.deBaare
CIS: include fix
Change 3365555 on 2017/03/27 by Jurre.deBaare
Missing change from 3365545
Change 3365561 on 2017/03/27 by Jurre.deBaare
Missing change from 3365545
Change 3365918 on 2017/03/27 by Ori.Cohen
PR #3424: fix compile error when PHYSX_MEMORY_STATS=1 (Contributed by kayama-shift)
#JIRA UE-43337
Change 3366234 on 2017/03/27 by Ori.Cohen
Moved call to UpdateHasValidBodies into OnRegister. Original suggested fix came from github, but I think the bounds need to update even if OnCreatePhysics isn't called.
#JIRA UE-43339
#pr 3427
Change 3367252 on 2017/03/28 by Jurre.deBaare
Vertex Weight Painting options are no longer present in MeshPaint mode
#fix implemented singleton pattern for paint mode settings to ensure customization works correctly
#jira UE-43357
Change 3367340 on 2017/03/28 by Jurre.deBaare
GC fix for recent changes to painting / alembic settings
Change 3367445 on 2017/03/28 by Thomas.Sarkanen
Fix fallout from Main merge
OrionEditor needs to depend on the new AdvancedPreviewScene module.
Change 3367741 on 2017/03/28 by Ori.Cohen
Remove unused physics warning when moving simulated object during physics
#jira UE-41465
Change 3368072 on 2017/03/28 by Ori.Cohen
Removed collision aggregates from ISMC collision. This is not a good candidate for aggregates as the bounding boxes generated could be huge (for example several trees that are very far away). This fixes perf regression from the PhysX 3.4 upgrade
#JIRA UE-42956
Change 3368479 on 2017/03/28 by Ori.Cohen
Fix GetClosestPoint incorrectly considering welded bodies.
#JIRA UE-39329
Change 3368620 on 2017/03/28 by Lina.Halper
Added code comment
#rb:none
#jira: UE-38836
Change 3368752 on 2017/03/28 by mason.seay
Updated test map since UE-338836 came back as by design
Change 3369370 on 2017/03/29 by James.Golding
Fix StaticMesh Editor drawing complex collision if 'use simple as complex' is enabled
Add separate options for showing simple and complex collision in StaticMesh Editor
#jira UE-42844
Change 3369438 on 2017/03/29 by Lina.Halper
Fix issue where it updates more often when you give too high update rate - i.e. 60
#jira: UE-38844
#code review: Laurent.Delayen
Change 3369462 on 2017/03/29 by Thomas.Sarkanen
Add preview mesh to animation blueprints
Auto set preview mesh for animation assets and animation blueprints based off meshes.
#jira UE-40032 - Creating animation assets from right-clicking skel mesh results in showing incorrect mesh in Persona
Change 3369463 on 2017/03/29 by Thomas.Sarkanen
We now select current preview mesh in the preview mesh dropdown
Change 3369464 on 2017/03/29 by Thomas.Sarkanen
Ticks now appear properly on anim sequence scrub bar
#jira UE-41197 - No additional ticks appear on the timeline when you zoom in
Change 3369465 on 2017/03/29 by Thomas.Sarkanen
Persona now depends publicly on SkeletonEditor
GitHub PR #3431 from kayama-shift
#jira UE-43344 - GitHub 3431 : Persona module must depend on SkeletonEditor publically
Change 3369466 on 2017/03/29 by Thomas.Sarkanen
Blueprints are now only dirtied if edited properties are from objects in the Blueprint's package
#jira UE-38956 - Changing Bone Transform between World and Local Location dirties Anim Blueprints
Change 3369467 on 2017/03/29 by Thomas.Sarkanen
Tweaked combo box alignment for world/local transform
Appearance is now closer to that of the level editor
Change 3369469 on 2017/03/29 by Thomas.Sarkanen
Prevent switching to unsupported widget modes when editing control rigs
#jira UE-42557 - When in Animation Mode, if you select a controller with the translation gizmo active, when you select a non animation controller the gizmo renders incorrectly
Change 3369588 on 2017/03/29 by Thomas.Sarkanen
Make import data and thumbnail data transactional
#jira UE-41579 - Undo not working for several Asset Details options in Skeletal Mesh editor (Persona)
Change 3369609 on 2017/03/29 by Thomas.Sarkanen
Montages are now correctly initialized when created
They can be used straight away without first opening them in the montage edtior.
Moved initialization of composite sections from SMontageEditor to AnimMontageFactory.
#jira UE-41219 - Animation montages created via Right click Create montage, that aren't opened in persona will not animate when used in an AnimBP
Change 3369610 on 2017/03/29 by Thomas.Sarkanen
Fixed anim class being set by name, causing duplicate-named anim BPs to be incorrectly resolved
#jira UE-39833 - SkelMesh Component > Anim Class does not handle identical AnimBP names
Change 3369647 on 2017/03/29 by Ori.Cohen
Fix mass debug not working when moving components in the editor.
#JIRA UE-43437
Change 3369875 on 2017/03/29 by Ori.Cohen
Added the call into overlap instead of computePenetration when possible. There are edge cases that exist when computePenetration returns false but overlap returns true. Originally we were using computePenetration for all overlaps to make it consistent. However, computePenetration doesn't handle trimeshes correctly in certain cases. The reason for this is so that we can at least resolve a known issue with overlap events with complex collision. Nvidia may give us a flag for computePenetration to not do back-face culling which would give us a more consistent result.
#JIRA UE-25923
Change 3370144 on 2017/03/29 by Lina.Halper
Fix on the retargeting child anim BP
#rb: Martin.Wilson
#jira: UE-39928
Change 3371480 on 2017/03/30 by James.Golding
Changes by BryanG at Nvidia required to get them up and running with plugins that override some skeletal mesh stuff.
#jira UE-42132
Change 3371484 on 2017/03/30 by Thomas.Sarkanen
We now propagate thread safety flags to child Animation Blueprints
Change 3371486 on 2017/03/30 by Thomas.Sarkanen
Fixed crash and effector selection issues for two bone IK
Crash occured when selecting the root bone as the end of the chain.
Viewport selection was not working at all as we werent creating any selection proxy actors any more.
Change 3371497 on 2017/03/30 by Thomas.Sarkanen
Added warning when Sequencer tries to write to properties that have changed type
#jira UE-42098 - Sequencer writes rotation data to transform properties, causes assert
Change 3371614 on 2017/03/30 by Martin.Wilson
Clean up deprecated property value after load so we dont get extra anim blueprint references
#jira UE-42501
Change 3371619 on 2017/03/30 by James.Golding
Fix CIS by removing unneeded UNREALED_API from FImportSkeletalMeshArgs
Change 3372452 on 2017/03/30 by Jon.Nabozny
Add flag to CharacterMovementComponent to determine whether or not character should Sweep while using NavWalking, instead of relying on GenerateOverlaps flag.
#jira UE-36546
Change 3373043 on 2017/03/30 by Lina.Halper
- Consolidating to FastLerp to simply code
- Added comment on FastLerp as the result is not normalized
#rb: Michael.Noland, David.Hill
Change 3373292 on 2017/03/30 by Jeff.Farris
Made Actor.DispatchPhysicsCollisionHit virtual.
(Copied CL 3261103 from Robo Recall to Dev-AnimPhys)
Change 3373293 on 2017/03/30 by Jeff.Farris
Added PhysicalAnimationComponent.GetBodyTargetTransform
(Copied 3256175 from RoboRecall to Dev-AnimPhys)
Change 3373318 on 2017/03/30 by Jeff.Farris
Added option for components to opt out of physics impulses on damage.
(Copied CL 3282585 from RoboRecall to Dev-AnimPhys)
Change 3374064 on 2017/03/31 by Thomas.Sarkanen
Renaming curves in animations is now saved properly
Guids were not being set, so loading code obliterated the rename after an editor restart
#jira UE-40582 - Curve name is not updated when user changes it in persona editor.
Change 3374175 on 2017/03/31 by Thomas.Sarkanen
Two bone IK UI consistency fixes
Completely removed all bone select actors. They have a terrible UX anyway.
We now rely only on our custom hit proxy and use a unified path to generate effector locations to draw and manipulate.
#jira UE-42359 - Two Bone IK modifying effector location from viewport when bone is not set
Change 3374216 on 2017/03/31 by Martin.Wilson
Clear raw curve data during cooking + change Paragon game code so that it reads from the compressed curve data on Anim Sequences, not the raw data
#jira UE-37897
Change 3374253 on 2017/03/31 by Thomas.Sarkanen
Supplementary fix to CL 3371497
Adding name exposure for property types that we support
Change 3374298 on 2017/03/31 by Jeff.Farris
Code change from nVidia that improves physX perf (afterIntegration time).
(Copied CL 3302239 from Robo Recall to Dev-AnimPhys)
Change 3374432 on 2017/03/31 by Lina.Halper
Make sure AcitveBoneIndices contains parent
#jira: UE-14597
#rb: Martin.Wilson
#code review: Benn.Gallagher, Alexis.Matte, James.Golding
Change 3374836 on 2017/03/31 by Jon.Nabozny
Fixup hits returned before start of trace in raycast_capsule.
This change is copied from CL-3297212
#jira UE-42532
Change 3375195 on 2017/03/31 by Lina.Halper
resave animation sequence for increasing info to warning
#code review: Thomas.Sarkanen
#jira: UE-40643
Change 3375282 on 2017/03/31 by Lina.Halper
Fix odin content for animation : resave animation sequence for increasing info to warning
#code review: Thomas.Sarkanen
#jira: UE-40643
Change 3375288 on 2017/03/31 by Lina.Halper
reverting code of degrading warning to info to avoid warning
#jira: UE-40643
Change 3375865 on 2017/04/01 by Lina.Halper
fix build error
Change 3375868 on 2017/04/01 by Lina.Halper
fix build warning on shadow var
#code review: Thomas.Sarkanen
Change 3376283 on 2017/04/03 by Thomas.Sarkanen
Reworked, more generic property path handling in object change listener
This allows all paths (auto vs manual key) to use the same code path, as well as regularizing the special-case handling of structs and arrays (and combinations thereof).
The gist of the new implementation is to traverse the property path until we come across any property that satisfies our crirtera (exposed function, Interp flag etc.)
Tweaked PropertyHandleToPropertyPath to correctly handle the slightly different way FPropertyNodes are arranged inside IPropertyHandle chains.
IPropertyHandle chains contain arrays in a manner designed for display in the property editor, e.g. Container.Array.Array[ArrayIndex].StructInner. We need to collapse adjacent array properties as we are looking for Container.Array[ArrayIndex].StructInner to form a well-formed 'property path'.
Small tweak to FPropertyChangedParams::GetPropertyValue. This is to handle property paths that end in an array (e.g. Struct.Array[0]).
#jira UE-42271 - Pressing enter while the spine is in IK doesn't set any keys
Change 3376320 on 2017/04/03 by Benn.Gallagher
Merging from OR39 - Fix for clothing perf regressions due to LOD switching leaving simulation enties in the clothing solver
#jira OR-36926
Change 3376413 on 2017/04/03 by Benn.Gallagher
Merge from OR - Fixes to stability due to component space being the simulation space, games like Paragon treat the mesh and component transforms differently and cause issues with added energy in the system.
#jira OR-36927
Change 3376421 on 2017/04/03 by Benn.Gallagher
Missed file from OR cloth fixes merge
Change 3376456 on 2017/04/03 by Lina.Halper
Resave fortnite animation to remove warning
#rb: none
Change 3376479 on 2017/04/03 by Jon.Nabozny
Touch PhysXLibs to ensure physx links properly.
(Needed for CL-3374836)
Change 3376610 on 2017/04/03 by Martin.Wilson
Fix for crash when reimporting lodded mesh with virtual bones
#jira UE-43557
Change 3376618 on 2017/04/03 by Jurre.deBaare
Mesh Paint decrement rate is too slow when used with hotkeys
#fix change way we increase/decrease brush value
#jira UE-43402
Change 3376650 on 2017/04/03 by Benn.Gallagher
Converted clothing asset editor warnings into toasts + logs so they are more discoverable by the user.
#jira UE-41739
Change 3376771 on 2017/04/03 by Benn.Gallagher
Fixed clothing selection dropdowns to no longer get out of sync with actual state (if the binding fails it falls back to the "None" selection correctly internally)
#jira UE-41737
Change 3378117 on 2017/04/04 by Thomas.Sarkanen
Prevented ensure by reverting to default unit vectors if zero-sized lookat/lookup vectors are specified
Also added a warning to inform users of the issue.
#jira UE-43360 - Enabling Use LookUp Axis causes handled ensure to occur
Change 3378118 on 2017/04/04 by Thomas.Sarkanen
Fix 2-bone IK flickering
First changed non-triangular range check to be >= instead of >. Also removed fallback to doubled-back as this singularity also occurs at min stretch + float epsilon (which caused the flicker). We are OK to call ACos with out-of-range values as it clamps internally and the subsequent calculations work in these degenerate cases.
#jira UE-43525 - Mesh Flicker when Two Bone IK is stretched
Change 3378192 on 2017/04/04 by Benn.Gallagher
Trivial fix to clothing dropdowns to unbind clothing assets when switching
Change 3378206 on 2017/04/04 by Thomas.Sarkanen
Fix IncludeTool static analysis errors
Traced this back to the checkin that moved advanced preview scene into its own module. Further refined this to be the dependency on SharedSettingsWidgets. Simplest solution was to move the details customization back into the DetailsCustomizations module.
#jira UE-43563 - //UE4/Dev-AnimPhys: Compile IncludeTool Static analysis Win64 completed with 1 error
Change 3378207 on 2017/04/04 by Thomas.Sarkanen
Fix static analysis warning
Change 3378267 on 2017/04/04 by Benn.Gallagher
Disabled "Accurate" wind mode selection for 4.16 by hiding enum option for windmode. Looks like there are some simulation issues that need resolved. Wind will act as it always has for 4.16.
Change 3378268 on 2017/04/04 by Benn.Gallagher
Fixed bounds calculation on clothing to stop dissapearances or flickering at the edge of the screen.
#jira UE-40407
Change 3378342 on 2017/04/04 by Jurre.deBaare
Bone LOD preview doesn't get update if change removed bones array directly in Skeletalmesh editor
#fix ensure that we update the skeleton tree when changes to the bones are made
#misc made sure the reapply button its visibility is dynamic
#misc made sure we always re-add previously removed bones when necessary
#jira UE-40500
Change 3378374 on 2017/04/04 by Thomas.Sarkanen
Fixed animation not working for dynamically-bound wheeled-vehicle anim instances
Vehicle anim instance now looks for a wheeled vehicle component when it initializes.
#jira UE-41048 - Set Anim Instance Class no longer works with Wheeled Vehicle Pawns
Change 3378518 on 2017/04/04 by Jon.Nabozny
Fix jump height becoming frame dependent when JumpMaxHoldTime > 0.
#jira UE-23695
Change 3378538 on 2017/04/04 by Martin.Wilson
Speculative fix for unreproducable crash on loading animations
#jira OR-37157
Change 3378592 on 2017/04/04 by Jurre.deBaare
Mesh painting tools not working outside of QAGame
#fix required a direct loadmodule call
Change 3378622 on 2017/04/04 by Jurre.deBaare
CIS shadow variable fix
Change 3378742 on 2017/04/04 by Thomas.Sarkanen
Fixed crash entering PIE in Orion
Change 3378907 on 2017/04/04 by Benn.Gallagher
Re-added wind adaptiive effects to legacy wind path.
Fixed math error in damping calculations (log2/loge).
#jira UE-42044
Change 3379240 on 2017/04/04 by Jon.Nabozny
Fix SkeletalMeshComponent GetWeldedBodies not returning actual Skeletal Bodies
Change 3379415 on 2017/04/04 by Jon.Nabozny
Fix Skeletal Meshes imported with non-identity transform from reapplying transform when simulation is enabled / disabled.
#JIRA UE-32598
Change 3379502 on 2017/04/04 by Lina.Halper
Mirroring issue with flipping rotation due to not counting scale
#jira: UE-33646, UE-34489
#rb: Ori.Cohen
#code review: Zak.Middleton
Change 3380544 on 2017/04/05 by Thomas.Sarkanen
Fix warning spam when playing back UMG sequences animating visibility
Reduced runtime overhead to a simple size check. This catches 90% of problem issues with much less runtime overhead. It would be well worth getting an FName-based type check working at some point, although we would need speciall case enum handling.
Also removed message log usage in shipping/test builds.
#jira UE-43621 - Large number of Sequencer warnings occur after opening Paragon in Pie - Property type mismatch for property 'Visibility'. Expected 'uint8', found 'ESlateVisibility'.
Change 3380605 on 2017/04/05 by Benn.Gallagher
Fix clothing simulation to correctly index a master pose component for clothing pose data. Fixes integration blocking crash in UT when picking up the flag which sets a master pose mid-game.
#jira UE-43624
Change 3381025 on 2017/04/05 by Jon.Nabozny
Change ensure in UpdateKinematicBonesToAnim to ensureMsgf so we can track down potential content issues.
Change 3381475 on 2017/04/05 by Lina.Halper
Fix crash on creating montage and setting slot node
#jira: UE-43698
#rb: Ori.Cohen
Change 3381558 on 2017/04/05 by Lina.Halper
Better clean up of flipping issue of quaternion issue
#jira: UE-33646, UE-34489
#rb: Zak.Middleton
Change 3381789 on 2017/04/05 by Jon.Nabozny
Revert InitAnim changes from CL-3379415 to fix cook warnings.
(Will have proper fix for 4.17 instead).
Change 3381978 on 2017/04/05 by Aaron.McLeran
#jira UE-43654 Fixing oculus audio SDK sample rate issue
Change 3383181 on 2017/04/06 by Lina.Halper
Remove copy right of Dual quaternion since we no longer uses
#code review:Leslie.Nivison
Change 3383283 on 2017/04/06 by Ori.Cohen
Fixed missing invalidation for body setup when modifying materials
#JIRA UE-43680
Change 3383602 on 2017/04/06 by Lina.Halper
Fixed scroller in retargeting window
#jira: UE-43736
Change 3384369 on 2017/04/07 by Jurre.deBaare
Wrong bone is sometimes highlighted in skeleton editor
#fix new behaviour caused the user to try and select a bone if we didn't find on through hit proxies
#jira UE-43735
Change 3384744 on 2017/04/07 by Jon.Nabozny
Fix body rotation being killed on load.
#JIRA UE-43771
[CL 3385232 by Thomas Sarkanen in Main branch]
2017-04-07 16:51:51 -04:00
UpdateProfile ( ) ;
2014-03-14 14:13:41 -04:00
}
void FCollisionProfileDetails : : UpdateProfile ( )
{
CollisionProfile - > LoadProfileConfig ( true ) ;
2021-11-01 15:07:40 -04:00
const FString SpecificFileLocation ;
const bool bWarnIfFail = false ;
CollisionProfile - > TryUpdateDefaultConfigFile ( SpecificFileLocation , bWarnIfFail ) ;
Copying //UE4/Dev-AnimPhys to //UE4/Dev-Main (Source: //UE4/Dev-AnimPhys @ 3384744)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3294073 on 2017/02/09 by Thomas.Sarkanen
Delete old location of FriendViewModel.h that did not get picked up correctly in the merge
Change 3354003 on 2017/03/20 by Thomas.Sarkanen
Back out changelist 3353914
Change 3355932 on 2017/03/21 by Thomas.Sarkanen
Back out changelist 3354003
Reinstating merge from Main:
Merging //UE4/Dev-Main to Dev-AnimPhys (//UE4/Dev-AnimPhys) @ CL 3353839
Change 3358776 on 2017/03/22 by Ori.Cohen
Recreate physics when changing mobility of components - fixes debug rendering issue
#JIRA UE-39328
Change 3360075 on 2017/03/23 by James.Golding
Back out changelist 3358776, as it was made after smoke testing. Will re-submit after copy to main.
Change 3362695 on 2017/03/24 by Thomas.Sarkanen
Use correct extender when building menus for AnimationEditor, SkeletalMeshEditor & SkeletonEditor
#jira UE-41100 - Persona code calling incorrect extenders when building menus.
Change 3362696 on 2017/03/24 by Thomas.Sarkanen
Facial animation experimental feature now pops up restart editor toast
#jira UE-40989 - User is not prompted to restart the editor when enabling the Facial Animation Importer
Change 3362699 on 2017/03/24 by Thomas.Sarkanen
Enable snapping for translation in animation viewports
#jira UE-39747 - Translating sockets in Persona is not affected by Snap Options
#jira UE-39748 - Translating bones in Persona is not affected by Snap Options
Change 3362700 on 2017/03/24 by Thomas.Sarkanen
Curve source nodes now dont update their source title if the source is a pin
The title of the node is not recached when the pin default changes, so we cant display it in the title
#jira UE-40108 - When changing a Curve Source Node doesn't update source binding name when typed in
Change 3362721 on 2017/03/24 by Thomas.Sarkanen
CVar r.SkeletalMeshLODBias no longer affects meshes in animation viewports
#jira UE-35733 - GSkeletalMeshLODBias affects render LOD in Persona
Change 3362724 on 2017/03/24 by Thomas.Sarkanen
Fix animation preview scene keyboard bindings
Also moved advanced preview scene into its own module
#jira UE-41505 - Pressing the hotkey I and O do not hide the floor and environment if the Preview Scene Settings tab isn't opened.
Change 3362783 on 2017/03/24 by Ori.Cohen
Fix incorrect locking and check when an editor static shape is changed. Originally this code assumed it would only get called at runtime, where there is only 1 shape. In the case of the async scene and static shapes - there are two shapes and if you update the body setup in the editor this will crash.
Change 3362796 on 2017/03/24 by Ori.Cohen
Fix welded capsules not using the right rotation
#JIRA UE-41546
Change 3362803 on 2017/03/24 by Ori.Cohen
Recreate physics when changing mobility of components - fixes debug rendering issue
#JIRA UE-39328
Change 3363013 on 2017/03/24 by Thomas.Sarkanen
Fix CIS issue
Change 3363202 on 2017/03/24 by Ori.Cohen
Fix bad #endif
Change 3363295 on 2017/03/24 by Ori.Cohen
Remove bWelded and use WeldParent everywhere. This fixes a bad case where a kinematic is returned as the root welded of simulated children.
#JIRA UE-40783
Change 3363435 on 2017/03/24 by Jon.Nabozny
Fix infinite jump on client when Jump Max Hold Time is not 0.
#jira UE-41004
Change 3363451 on 2017/03/24 by Jon.Nabozny
Fix USkeletalMeshComponent::PoseTickedThisFrame to use a frame counter instead of world time (which isn't changed while paused).
#jira UE-39567
Change 3363504 on 2017/03/24 by Jon.Nabozny
Fix SCE_NP_MATCHING2_REQUEST_EVENT_SEARCH_ROOM_A to treat result data as linked list instead of array.
(Code originally came from SCE via UDN)
#jira UE-41049
Change 3363532 on 2017/03/24 by Ori.Cohen
Change default to SkipSimulatedBones.
#JIRA UE-41404
Change 3363537 on 2017/03/24 by Ori.Cohen
Remove the unsupported option of HideBone with DisableCollision. If we want this in the future we can add it.
#JIRA UE-30826
Change 3363681 on 2017/03/24 by Jon.Nabozny
Reapply 3292286 after it was clobbered by 3360002
(Only clobbered in Ocean).
#jira UE-37512
Change 3363722 on 2017/03/24 by mason.seay
Updated map to improve testing
Change 3365351 on 2017/03/27 by Thomas.Sarkanen
Fix non-PCH CIS errors
#jira UE-43335 - CIS fail: 'FAdvancedPreviewSceneCommands is not a class name
Change 3365422 on 2017/03/27 by Thomas.Sarkanen
Fixed skinned mesh LOD not updating in editor under various physics-related circumstances
#jira UE-42013 - Skeletal meshes with recently generated LODs will not change LODs in viewport
Change 3365423 on 2017/03/27 by Thomas.Sarkanen
Fix ensure when setting Spline IK Bone Axis to 'None'
Node is currently not in use, so I've avoided deprecating this for now. Values should be preserved.
#jira UE-39723 - Ensure when setting Bone Axis to None in Spline IK
Change 3365424 on 2017/03/27 by Thomas.Sarkanen
Fix control rigs being convertable to possessables
Also prevent 'export to anim sequence' button from appearing on standard level sequences
#jira UE-42070 - Crash converting a control rig to Possessable
Change 3365425 on 2017/03/27 by Thomas.Sarkanen
When selecting bones that are non-required, we dont render gizmos or text labels
#jira UE-35737 - Bone labels flicker between two locations when removing from LOD levels in Persona
Change 3365426 on 2017/03/27 by Thomas.Sarkanen
Fixed foot placement IK doing line traces on worker threads
Also exposed const access to required bones array (the proxy already does this, so I figure the instance should get it too).
Note: Node is not actually used
#jira UE-43179 - Fix FAnimNode_FootPlacementIK doing line trace on worker thread
Change 3365428 on 2017/03/27 by Thomas.Sarkanen
Skeleton selection no does not lag behind choice made in viewport
#jira UE-42236 - Mesh Overlay always lags behind actual selection
Change 3365429 on 2017/03/27 by Thomas.Sarkanen
Fix anim BPs that contain state machines having blank palettes
#jira UE-42172 - AnimBP Palette is blank on existing AnimBPs
Change 3365435 on 2017/03/27 by Jurre.deBaare
Undoing Channel selection in Paint mode does not work
#fix use duplicated CDO object instead of CDO directly
#jira UE-42621
Change 3365436 on 2017/03/27 by Jurre.deBaare
Functionless undo/redo transactions created when importing Alembic file and changing conversion settings
#fix use duplicated CDO object instead of CDO directly
#jira UE-40347
Change 3365437 on 2017/03/27 by Jurre.deBaare
Ensure that HLOD cannot be set up in sub-levels
#fix added functionality to check whether or not a level is used as a sub/streaming level in any other content, and if so show a widget similar to the checkout notice to inform the user why the hlod outliner is disabled
#jira UE-40301
Change 3365438 on 2017/03/27 by Jurre.deBaare
2D Blendspace breaks when aligning samples in a straight line
#fix for some reason the number of samples to considerate was limit to 3 (old code) so removed it since it doesn't make sense
#jira UE-42744
Change 3365439 on 2017/03/27 by Jurre.deBaare
Color View Mode doesn't reset when closing/reopening editor
#fix added a delegate to OnEditorClose to ensure we can reset the viewport modes while they still exist, this issue would happen if the user closes the editor with mesh paint mode open, exiting the mode would only happen after destructing most of the editor
#jira UE-42466
Change 3365440 on 2017/03/27 by Jurre.deBaare
LOD Model field scrubbing is very sensitive
#fix made sure that max slider value is also driven by data
#jira UE-42980
Change 3365441 on 2017/03/27 by Jurre.deBaare
Replacing an asset in a sequence player node does not register in undo history
#fix added transaction for dropping anim assets on player nodes
#jira UE-39152
Change 3365442 on 2017/03/27 by Jurre.deBaare
Crash on Mac importing some alembic files
#fix disable multithread abc file reading with HDF5 backend
#jira UE-39783
Change 3365443 on 2017/03/27 by Jurre.deBaare
Moving over Alembic feature: "Add support for 'finding' materials according to the face-set names in abc files"
Change 3365444 on 2017/03/27 by Jurre.deBaare
Moving over Alembic fixes:
- Time offset issues > changed how we determine frame indices and frame steps
- Incorrect tangent issues > enforce tangent calculation during skeletal mesh import
- Automatically set recompute tangent flag on skeletal mesh sections
Change 3365451 on 2017/03/27 by Jurre.deBaare
CIS: include needed for GetTransientPackage
Change 3365460 on 2017/03/27 by Jurre.deBaare
CIS: apparently CIS wants explicit cast to UObject
Change 3365463 on 2017/03/27 by Jurre.deBaare
CIS: final fix, was actually UPackage include missing ugh
Change 3365486 on 2017/03/27 by Thomas.Sarkanen
Fix case error in include for Linux builds
Change 3365499 on 2017/03/27 by James.Golding
Fix editing collision settings sometimes not 'sticking' - wait until after LoadProfileConfig (which modified Profiles array) to copy to 'SavedData'
Fix FCollsiionProfileData typo
#jira UE-42490
Change 3365500 on 2017/03/27 by Jurre.deBaare
Turning on LOD Model Painting does not copy paint to other LODs on Skeletal Mesh
#fix neede to pre edit / post edit the skeletal mesh to ensure the color buffers were re-initialised
#jira UE-42637
Change 3365501 on 2017/03/27 by James.Golding
Disable rather than hide anim picker when no mesh assigned
#jira UE-35537
Change 3365505 on 2017/03/27 by James.Golding
Fix USkinnedMeshComponent::FindClosestBone ignoring bRequirePhysicsAsset, because BodySetupIndexMap.FindRef would return 0 if bone not present
https://udn.unrealengine.com/questions/353125/uskinnedmeshcomponentfindclosestbone-does-not-resp.html
#jira UE-43061
Change 3365515 on 2017/03/27 by Jurre.deBaare
Using Alt+Click to break Transition node connections cannot be undone using the Undo command
#fix added transactions to breaking node links
#jira UE-39068
Change 3365528 on 2017/03/27 by Jurre.deBaare
Blendspaces don't update to reflect sync marker changes that have occurred on animations in the blend
#fix added validation on blendspaces when removing or adding sync markers in animation editor
#jira UE-39814
Change 3365535 on 2017/03/27 by Jurre.deBaare
Camera moves at the same time as erasing paint when clicking Paint settings and back into Viewport
#fix lock camera if erasing as well
#jira UE-42474
Change 3365539 on 2017/03/27 by Jurre.deBaare
Painting on animation sequence paints on invisible T-pose skeleton
#fix during painting enforce bUseRefPoseOnInitAnim so you're always painting on a ref-pose skeletal mesh
#jira UE-42484
Change 3365545 on 2017/03/27 by Jurre.deBaare
Fill Tool does not fill the mesh with the selected Texture Weight Index when used in Weight Vertex Painting
#fix added function to generate color according to texture weight settings and index, and fill using that color when the editor is in texture weight mode
#jira UE-43091
Change 3365549 on 2017/03/27 by Jurre.deBaare
CIS: include fix
Change 3365555 on 2017/03/27 by Jurre.deBaare
Missing change from 3365545
Change 3365561 on 2017/03/27 by Jurre.deBaare
Missing change from 3365545
Change 3365918 on 2017/03/27 by Ori.Cohen
PR #3424: fix compile error when PHYSX_MEMORY_STATS=1 (Contributed by kayama-shift)
#JIRA UE-43337
Change 3366234 on 2017/03/27 by Ori.Cohen
Moved call to UpdateHasValidBodies into OnRegister. Original suggested fix came from github, but I think the bounds need to update even if OnCreatePhysics isn't called.
#JIRA UE-43339
#pr 3427
Change 3367252 on 2017/03/28 by Jurre.deBaare
Vertex Weight Painting options are no longer present in MeshPaint mode
#fix implemented singleton pattern for paint mode settings to ensure customization works correctly
#jira UE-43357
Change 3367340 on 2017/03/28 by Jurre.deBaare
GC fix for recent changes to painting / alembic settings
Change 3367445 on 2017/03/28 by Thomas.Sarkanen
Fix fallout from Main merge
OrionEditor needs to depend on the new AdvancedPreviewScene module.
Change 3367741 on 2017/03/28 by Ori.Cohen
Remove unused physics warning when moving simulated object during physics
#jira UE-41465
Change 3368072 on 2017/03/28 by Ori.Cohen
Removed collision aggregates from ISMC collision. This is not a good candidate for aggregates as the bounding boxes generated could be huge (for example several trees that are very far away). This fixes perf regression from the PhysX 3.4 upgrade
#JIRA UE-42956
Change 3368479 on 2017/03/28 by Ori.Cohen
Fix GetClosestPoint incorrectly considering welded bodies.
#JIRA UE-39329
Change 3368620 on 2017/03/28 by Lina.Halper
Added code comment
#rb:none
#jira: UE-38836
Change 3368752 on 2017/03/28 by mason.seay
Updated test map since UE-338836 came back as by design
Change 3369370 on 2017/03/29 by James.Golding
Fix StaticMesh Editor drawing complex collision if 'use simple as complex' is enabled
Add separate options for showing simple and complex collision in StaticMesh Editor
#jira UE-42844
Change 3369438 on 2017/03/29 by Lina.Halper
Fix issue where it updates more often when you give too high update rate - i.e. 60
#jira: UE-38844
#code review: Laurent.Delayen
Change 3369462 on 2017/03/29 by Thomas.Sarkanen
Add preview mesh to animation blueprints
Auto set preview mesh for animation assets and animation blueprints based off meshes.
#jira UE-40032 - Creating animation assets from right-clicking skel mesh results in showing incorrect mesh in Persona
Change 3369463 on 2017/03/29 by Thomas.Sarkanen
We now select current preview mesh in the preview mesh dropdown
Change 3369464 on 2017/03/29 by Thomas.Sarkanen
Ticks now appear properly on anim sequence scrub bar
#jira UE-41197 - No additional ticks appear on the timeline when you zoom in
Change 3369465 on 2017/03/29 by Thomas.Sarkanen
Persona now depends publicly on SkeletonEditor
GitHub PR #3431 from kayama-shift
#jira UE-43344 - GitHub 3431 : Persona module must depend on SkeletonEditor publically
Change 3369466 on 2017/03/29 by Thomas.Sarkanen
Blueprints are now only dirtied if edited properties are from objects in the Blueprint's package
#jira UE-38956 - Changing Bone Transform between World and Local Location dirties Anim Blueprints
Change 3369467 on 2017/03/29 by Thomas.Sarkanen
Tweaked combo box alignment for world/local transform
Appearance is now closer to that of the level editor
Change 3369469 on 2017/03/29 by Thomas.Sarkanen
Prevent switching to unsupported widget modes when editing control rigs
#jira UE-42557 - When in Animation Mode, if you select a controller with the translation gizmo active, when you select a non animation controller the gizmo renders incorrectly
Change 3369588 on 2017/03/29 by Thomas.Sarkanen
Make import data and thumbnail data transactional
#jira UE-41579 - Undo not working for several Asset Details options in Skeletal Mesh editor (Persona)
Change 3369609 on 2017/03/29 by Thomas.Sarkanen
Montages are now correctly initialized when created
They can be used straight away without first opening them in the montage edtior.
Moved initialization of composite sections from SMontageEditor to AnimMontageFactory.
#jira UE-41219 - Animation montages created via Right click Create montage, that aren't opened in persona will not animate when used in an AnimBP
Change 3369610 on 2017/03/29 by Thomas.Sarkanen
Fixed anim class being set by name, causing duplicate-named anim BPs to be incorrectly resolved
#jira UE-39833 - SkelMesh Component > Anim Class does not handle identical AnimBP names
Change 3369647 on 2017/03/29 by Ori.Cohen
Fix mass debug not working when moving components in the editor.
#JIRA UE-43437
Change 3369875 on 2017/03/29 by Ori.Cohen
Added the call into overlap instead of computePenetration when possible. There are edge cases that exist when computePenetration returns false but overlap returns true. Originally we were using computePenetration for all overlaps to make it consistent. However, computePenetration doesn't handle trimeshes correctly in certain cases. The reason for this is so that we can at least resolve a known issue with overlap events with complex collision. Nvidia may give us a flag for computePenetration to not do back-face culling which would give us a more consistent result.
#JIRA UE-25923
Change 3370144 on 2017/03/29 by Lina.Halper
Fix on the retargeting child anim BP
#rb: Martin.Wilson
#jira: UE-39928
Change 3371480 on 2017/03/30 by James.Golding
Changes by BryanG at Nvidia required to get them up and running with plugins that override some skeletal mesh stuff.
#jira UE-42132
Change 3371484 on 2017/03/30 by Thomas.Sarkanen
We now propagate thread safety flags to child Animation Blueprints
Change 3371486 on 2017/03/30 by Thomas.Sarkanen
Fixed crash and effector selection issues for two bone IK
Crash occured when selecting the root bone as the end of the chain.
Viewport selection was not working at all as we werent creating any selection proxy actors any more.
Change 3371497 on 2017/03/30 by Thomas.Sarkanen
Added warning when Sequencer tries to write to properties that have changed type
#jira UE-42098 - Sequencer writes rotation data to transform properties, causes assert
Change 3371614 on 2017/03/30 by Martin.Wilson
Clean up deprecated property value after load so we dont get extra anim blueprint references
#jira UE-42501
Change 3371619 on 2017/03/30 by James.Golding
Fix CIS by removing unneeded UNREALED_API from FImportSkeletalMeshArgs
Change 3372452 on 2017/03/30 by Jon.Nabozny
Add flag to CharacterMovementComponent to determine whether or not character should Sweep while using NavWalking, instead of relying on GenerateOverlaps flag.
#jira UE-36546
Change 3373043 on 2017/03/30 by Lina.Halper
- Consolidating to FastLerp to simply code
- Added comment on FastLerp as the result is not normalized
#rb: Michael.Noland, David.Hill
Change 3373292 on 2017/03/30 by Jeff.Farris
Made Actor.DispatchPhysicsCollisionHit virtual.
(Copied CL 3261103 from Robo Recall to Dev-AnimPhys)
Change 3373293 on 2017/03/30 by Jeff.Farris
Added PhysicalAnimationComponent.GetBodyTargetTransform
(Copied 3256175 from RoboRecall to Dev-AnimPhys)
Change 3373318 on 2017/03/30 by Jeff.Farris
Added option for components to opt out of physics impulses on damage.
(Copied CL 3282585 from RoboRecall to Dev-AnimPhys)
Change 3374064 on 2017/03/31 by Thomas.Sarkanen
Renaming curves in animations is now saved properly
Guids were not being set, so loading code obliterated the rename after an editor restart
#jira UE-40582 - Curve name is not updated when user changes it in persona editor.
Change 3374175 on 2017/03/31 by Thomas.Sarkanen
Two bone IK UI consistency fixes
Completely removed all bone select actors. They have a terrible UX anyway.
We now rely only on our custom hit proxy and use a unified path to generate effector locations to draw and manipulate.
#jira UE-42359 - Two Bone IK modifying effector location from viewport when bone is not set
Change 3374216 on 2017/03/31 by Martin.Wilson
Clear raw curve data during cooking + change Paragon game code so that it reads from the compressed curve data on Anim Sequences, not the raw data
#jira UE-37897
Change 3374253 on 2017/03/31 by Thomas.Sarkanen
Supplementary fix to CL 3371497
Adding name exposure for property types that we support
Change 3374298 on 2017/03/31 by Jeff.Farris
Code change from nVidia that improves physX perf (afterIntegration time).
(Copied CL 3302239 from Robo Recall to Dev-AnimPhys)
Change 3374432 on 2017/03/31 by Lina.Halper
Make sure AcitveBoneIndices contains parent
#jira: UE-14597
#rb: Martin.Wilson
#code review: Benn.Gallagher, Alexis.Matte, James.Golding
Change 3374836 on 2017/03/31 by Jon.Nabozny
Fixup hits returned before start of trace in raycast_capsule.
This change is copied from CL-3297212
#jira UE-42532
Change 3375195 on 2017/03/31 by Lina.Halper
resave animation sequence for increasing info to warning
#code review: Thomas.Sarkanen
#jira: UE-40643
Change 3375282 on 2017/03/31 by Lina.Halper
Fix odin content for animation : resave animation sequence for increasing info to warning
#code review: Thomas.Sarkanen
#jira: UE-40643
Change 3375288 on 2017/03/31 by Lina.Halper
reverting code of degrading warning to info to avoid warning
#jira: UE-40643
Change 3375865 on 2017/04/01 by Lina.Halper
fix build error
Change 3375868 on 2017/04/01 by Lina.Halper
fix build warning on shadow var
#code review: Thomas.Sarkanen
Change 3376283 on 2017/04/03 by Thomas.Sarkanen
Reworked, more generic property path handling in object change listener
This allows all paths (auto vs manual key) to use the same code path, as well as regularizing the special-case handling of structs and arrays (and combinations thereof).
The gist of the new implementation is to traverse the property path until we come across any property that satisfies our crirtera (exposed function, Interp flag etc.)
Tweaked PropertyHandleToPropertyPath to correctly handle the slightly different way FPropertyNodes are arranged inside IPropertyHandle chains.
IPropertyHandle chains contain arrays in a manner designed for display in the property editor, e.g. Container.Array.Array[ArrayIndex].StructInner. We need to collapse adjacent array properties as we are looking for Container.Array[ArrayIndex].StructInner to form a well-formed 'property path'.
Small tweak to FPropertyChangedParams::GetPropertyValue. This is to handle property paths that end in an array (e.g. Struct.Array[0]).
#jira UE-42271 - Pressing enter while the spine is in IK doesn't set any keys
Change 3376320 on 2017/04/03 by Benn.Gallagher
Merging from OR39 - Fix for clothing perf regressions due to LOD switching leaving simulation enties in the clothing solver
#jira OR-36926
Change 3376413 on 2017/04/03 by Benn.Gallagher
Merge from OR - Fixes to stability due to component space being the simulation space, games like Paragon treat the mesh and component transforms differently and cause issues with added energy in the system.
#jira OR-36927
Change 3376421 on 2017/04/03 by Benn.Gallagher
Missed file from OR cloth fixes merge
Change 3376456 on 2017/04/03 by Lina.Halper
Resave fortnite animation to remove warning
#rb: none
Change 3376479 on 2017/04/03 by Jon.Nabozny
Touch PhysXLibs to ensure physx links properly.
(Needed for CL-3374836)
Change 3376610 on 2017/04/03 by Martin.Wilson
Fix for crash when reimporting lodded mesh with virtual bones
#jira UE-43557
Change 3376618 on 2017/04/03 by Jurre.deBaare
Mesh Paint decrement rate is too slow when used with hotkeys
#fix change way we increase/decrease brush value
#jira UE-43402
Change 3376650 on 2017/04/03 by Benn.Gallagher
Converted clothing asset editor warnings into toasts + logs so they are more discoverable by the user.
#jira UE-41739
Change 3376771 on 2017/04/03 by Benn.Gallagher
Fixed clothing selection dropdowns to no longer get out of sync with actual state (if the binding fails it falls back to the "None" selection correctly internally)
#jira UE-41737
Change 3378117 on 2017/04/04 by Thomas.Sarkanen
Prevented ensure by reverting to default unit vectors if zero-sized lookat/lookup vectors are specified
Also added a warning to inform users of the issue.
#jira UE-43360 - Enabling Use LookUp Axis causes handled ensure to occur
Change 3378118 on 2017/04/04 by Thomas.Sarkanen
Fix 2-bone IK flickering
First changed non-triangular range check to be >= instead of >. Also removed fallback to doubled-back as this singularity also occurs at min stretch + float epsilon (which caused the flicker). We are OK to call ACos with out-of-range values as it clamps internally and the subsequent calculations work in these degenerate cases.
#jira UE-43525 - Mesh Flicker when Two Bone IK is stretched
Change 3378192 on 2017/04/04 by Benn.Gallagher
Trivial fix to clothing dropdowns to unbind clothing assets when switching
Change 3378206 on 2017/04/04 by Thomas.Sarkanen
Fix IncludeTool static analysis errors
Traced this back to the checkin that moved advanced preview scene into its own module. Further refined this to be the dependency on SharedSettingsWidgets. Simplest solution was to move the details customization back into the DetailsCustomizations module.
#jira UE-43563 - //UE4/Dev-AnimPhys: Compile IncludeTool Static analysis Win64 completed with 1 error
Change 3378207 on 2017/04/04 by Thomas.Sarkanen
Fix static analysis warning
Change 3378267 on 2017/04/04 by Benn.Gallagher
Disabled "Accurate" wind mode selection for 4.16 by hiding enum option for windmode. Looks like there are some simulation issues that need resolved. Wind will act as it always has for 4.16.
Change 3378268 on 2017/04/04 by Benn.Gallagher
Fixed bounds calculation on clothing to stop dissapearances or flickering at the edge of the screen.
#jira UE-40407
Change 3378342 on 2017/04/04 by Jurre.deBaare
Bone LOD preview doesn't get update if change removed bones array directly in Skeletalmesh editor
#fix ensure that we update the skeleton tree when changes to the bones are made
#misc made sure the reapply button its visibility is dynamic
#misc made sure we always re-add previously removed bones when necessary
#jira UE-40500
Change 3378374 on 2017/04/04 by Thomas.Sarkanen
Fixed animation not working for dynamically-bound wheeled-vehicle anim instances
Vehicle anim instance now looks for a wheeled vehicle component when it initializes.
#jira UE-41048 - Set Anim Instance Class no longer works with Wheeled Vehicle Pawns
Change 3378518 on 2017/04/04 by Jon.Nabozny
Fix jump height becoming frame dependent when JumpMaxHoldTime > 0.
#jira UE-23695
Change 3378538 on 2017/04/04 by Martin.Wilson
Speculative fix for unreproducable crash on loading animations
#jira OR-37157
Change 3378592 on 2017/04/04 by Jurre.deBaare
Mesh painting tools not working outside of QAGame
#fix required a direct loadmodule call
Change 3378622 on 2017/04/04 by Jurre.deBaare
CIS shadow variable fix
Change 3378742 on 2017/04/04 by Thomas.Sarkanen
Fixed crash entering PIE in Orion
Change 3378907 on 2017/04/04 by Benn.Gallagher
Re-added wind adaptiive effects to legacy wind path.
Fixed math error in damping calculations (log2/loge).
#jira UE-42044
Change 3379240 on 2017/04/04 by Jon.Nabozny
Fix SkeletalMeshComponent GetWeldedBodies not returning actual Skeletal Bodies
Change 3379415 on 2017/04/04 by Jon.Nabozny
Fix Skeletal Meshes imported with non-identity transform from reapplying transform when simulation is enabled / disabled.
#JIRA UE-32598
Change 3379502 on 2017/04/04 by Lina.Halper
Mirroring issue with flipping rotation due to not counting scale
#jira: UE-33646, UE-34489
#rb: Ori.Cohen
#code review: Zak.Middleton
Change 3380544 on 2017/04/05 by Thomas.Sarkanen
Fix warning spam when playing back UMG sequences animating visibility
Reduced runtime overhead to a simple size check. This catches 90% of problem issues with much less runtime overhead. It would be well worth getting an FName-based type check working at some point, although we would need speciall case enum handling.
Also removed message log usage in shipping/test builds.
#jira UE-43621 - Large number of Sequencer warnings occur after opening Paragon in Pie - Property type mismatch for property 'Visibility'. Expected 'uint8', found 'ESlateVisibility'.
Change 3380605 on 2017/04/05 by Benn.Gallagher
Fix clothing simulation to correctly index a master pose component for clothing pose data. Fixes integration blocking crash in UT when picking up the flag which sets a master pose mid-game.
#jira UE-43624
Change 3381025 on 2017/04/05 by Jon.Nabozny
Change ensure in UpdateKinematicBonesToAnim to ensureMsgf so we can track down potential content issues.
Change 3381475 on 2017/04/05 by Lina.Halper
Fix crash on creating montage and setting slot node
#jira: UE-43698
#rb: Ori.Cohen
Change 3381558 on 2017/04/05 by Lina.Halper
Better clean up of flipping issue of quaternion issue
#jira: UE-33646, UE-34489
#rb: Zak.Middleton
Change 3381789 on 2017/04/05 by Jon.Nabozny
Revert InitAnim changes from CL-3379415 to fix cook warnings.
(Will have proper fix for 4.17 instead).
Change 3381978 on 2017/04/05 by Aaron.McLeran
#jira UE-43654 Fixing oculus audio SDK sample rate issue
Change 3383181 on 2017/04/06 by Lina.Halper
Remove copy right of Dual quaternion since we no longer uses
#code review:Leslie.Nivison
Change 3383283 on 2017/04/06 by Ori.Cohen
Fixed missing invalidation for body setup when modifying materials
#JIRA UE-43680
Change 3383602 on 2017/04/06 by Lina.Halper
Fixed scroller in retargeting window
#jira: UE-43736
Change 3384369 on 2017/04/07 by Jurre.deBaare
Wrong bone is sometimes highlighted in skeleton editor
#fix new behaviour caused the user to try and select a bone if we didn't find on through hit proxies
#jira UE-43735
Change 3384744 on 2017/04/07 by Jon.Nabozny
Fix body rotation being killed on load.
#JIRA UE-43771
[CL 3385232 by Thomas Sarkanen in Main branch]
2017-04-07 16:51:51 -04:00
SavedData . Save ( CollisionProfile ) ;
RefreshProfileList ( ) ;
ProfileListView - > RequestListRefresh ( ) ;
2014-03-14 14:13:41 -04:00
}
void FCollisionProfileDetails : : RefreshChannelList ( bool bTraceType )
{
if ( bTraceType )
{
TraceChannelList . Empty ( ) ;
for ( auto Iter = CollisionProfile - > DefaultChannelResponses . CreateIterator ( ) ; Iter ; + + Iter )
{
2014-11-19 18:02:06 -05:00
// only display game channels
if ( Iter - > Channel > = ECC_GameTraceChannel1 & & Iter - > bTraceType )
2014-03-14 14:13:41 -04:00
{
TraceChannelList . Add ( MakeShareable ( new FChannelListItem ( MakeShareable ( new FCustomChannelSetup ( * Iter ) ) ) ) ) ;
}
}
}
else
{
ObjectChannelList . Empty ( ) ;
for ( auto Iter = CollisionProfile - > DefaultChannelResponses . CreateIterator ( ) ; Iter ; + + Iter )
{
2014-11-19 18:02:06 -05:00
// only display game channels
if ( Iter - > Channel > = ECC_GameTraceChannel1 & & ! Iter - > bTraceType )
2014-03-14 14:13:41 -04:00
{
ObjectChannelList . Add ( MakeShareable ( new FChannelListItem ( MakeShareable ( new FCustomChannelSetup ( * Iter ) ) ) ) ) ;
}
}
}
}
void FCollisionProfileDetails : : RefreshProfileList ( )
{
ProfileList . Empty ( ) ;
for ( auto Iter = CollisionProfile - > Profiles . CreateIterator ( ) ; Iter ; + + Iter )
{
ProfileList . Add ( MakeShareable ( new FProfileListItem ( MakeShareable ( new FCollisionResponseTemplate ( * Iter ) ) ) ) ) ;
}
}
TSharedRef < ITableRow > FCollisionProfileDetails : : HandleGenerateChannelWidget ( TSharedPtr < FChannelListItem > InItem , const TSharedRef < STableViewBase > & OwnerTable )
{
return SNew ( SChannelListItem , OwnerTable )
. ChannelSetup ( InItem - > ChannelSetup ) ;
}
TSharedRef < ITableRow > FCollisionProfileDetails : : HandleGenerateProfileWidget ( TSharedPtr < FProfileListItem > InItem , const TSharedRef < STableViewBase > & OwnerTable )
{
return SNew ( SProfileListItem , OwnerTable )
. ProfileTemplate ( InItem - > ProfileTemplate ) ;
}
void FCollisionProfileDetails : : RemoveChannel ( ECollisionChannel CollisionChannel ) const
{
for ( auto Iter = CollisionProfile - > DefaultChannelResponses . CreateIterator ( ) ; Iter ; + + Iter )
{
if ( Iter - > Channel = = CollisionChannel )
{
CollisionProfile - > DefaultChannelResponses . RemoveAt ( Iter . GetIndex ( ) ) ;
break ;
}
}
}
int32 FCollisionProfileDetails : : FindProfileIndexFromName ( FName Name ) const
{
for ( auto Iter = CollisionProfile - > Profiles . CreateIterator ( ) ; Iter ; + + Iter )
{
if ( Iter - > Name = = Name )
{
return Iter . GetIndex ( ) ;
}
}
return INDEX_NONE ;
}
FCustomChannelSetup * FCollisionProfileDetails : : FindFromChannel ( ECollisionChannel CollisionChannel ) const
{
for ( auto Iter = CollisionProfile - > DefaultChannelResponses . CreateIterator ( ) ; Iter ; + + Iter )
{
if ( Iter - > Channel = = CollisionChannel )
{
return & ( * Iter ) ;
}
}
return NULL ;
}
ECollisionChannel FCollisionProfileDetails : : FindAvailableChannel ( ) const
{
if ( CollisionProfile - > DefaultChannelResponses . Num ( ) < MAX_CUSTOMCOLLISION_CHANNEL )
{
// this is very inefficient
for ( int32 ChannelIndex = ECC_GameTraceChannel1 ; ChannelIndex < ECC_GameTraceChannel1 + MAX_CUSTOMCOLLISION_CHANNEL ; + + ChannelIndex )
{
if ( FindFromChannel ( ( ECollisionChannel ) ChannelIndex ) = = NULL )
{
return ( ECollisionChannel ) ChannelIndex ;
}
}
}
return ECC_MAX ;
}
2014-10-01 14:45:23 -04:00
bool FCollisionProfileDetails : : IsValidChannelSetup ( const FCustomChannelSetup * Channel ) const
2014-03-14 14:13:41 -04:00
{
for ( auto Iter = CollisionProfile - > DefaultChannelResponses . CreateConstIterator ( ) ; Iter ; + + Iter )
{
if ( Iter - > Channel ! = Channel - > Channel )
{
// make sure name isn't same
if ( Iter - > Name = = Channel - > Name )
{
return false ;
}
}
}
return true ;
}
2014-10-01 14:45:23 -04:00
bool FCollisionProfileDetails : : IsValidProfileSetup ( const FCollisionResponseTemplate * Template , int32 ProfileIndex ) const
2014-03-14 14:13:41 -04:00
{
for ( auto Iter = CollisionProfile - > Profiles . CreateConstIterator ( ) ; Iter ; + + Iter )
{
if ( ProfileIndex ! = Iter . GetIndex ( ) )
{
// make sure name isn't same
if ( Iter - > Name = = Template - > Name )
{
return false ;
}
}
}
return true ;
}
bool FCollisionProfileDetails : : IsNewChannelAvailable ( ) const
{
return ( CollisionProfile & & CollisionProfile - > DefaultChannelResponses . Num ( ) < MAX_CUSTOMCOLLISION_CHANNEL ) ;
}
FReply FCollisionProfileDetails : : OnNewChannel ( bool bTraceType )
{
// find empty channel and see if we can add it.
ECollisionChannel NewChannel = FindAvailableChannel ( ) ;
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3420477)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3386262 on 2017/04/10 by Ben.Marsh
Add app-local deployment of DirectX components that are no longer included with newer versions of Windows by default (XAudio 2.7, XInput 1.3). Also add a one-click button to the packaging settings to include the default app-local dependencies, rather than having to specify the path.
Change 3386999 on 2017/04/10 by Ben.Marsh
Plugins: Add support for explicit dependencies from one plugin onto another. Required plugins can be configured in an identical manner to project files, by adding a "Plugins" key to the .uplugin file. Dependencies are automatically built and loaded, and the plugin browser will warn if you try to disable a plugin that something else has a dependency on.
Change 3387073 on 2017/04/10 by Ben.Marsh
Move FLightPropagationRuntimeSettings into the Renderer module, to remove engine dependency on a plugin.
Change 3387988 on 2017/04/11 by Steve.Robb
Comments added to clarify the role of DestructItem and DestructItems.
Change 3388085 on 2017/04/11 by Ben.Marsh
UBT: Fix bEnabled flag on plugin references being ignored. Now collect up all the plugin references in order of priority before creating plugin instances for them. Fixes CIS fail for UT.
Change 3390048 on 2017/04/12 by Richard.Hinckley
#jira UE-43876
Fixed description of Streaming settings (within Project Settings).
Change 3390697 on 2017/04/12 by Steve.Robb
CLASS_PointersDefaultToAutoWeak and CLASS_PointersDefaultToWeak removed.
Change 3390711 on 2017/04/12 by Steve.Robb
AGRESSIVE_ARRAY_FORCEINLINE removed.
Change 3392167 on 2017/04/13 by Robert.Manuszewski
UObject can be added to GC cluster only if all of its Outers can also be added to it.
Fixing asserts caused by components that are added to GC clusters even if their owner actors that can't be in GC clusters.
#jira UE-42948
Change 3392309 on 2017/04/13 by Robert.Manuszewski
When adding objects to clusters after these clusters have been created it's possible to come across objects that are already in the cluster we're adding the object to so instead of crashing, allow it.
Change 3392620 on 2017/04/13 by Ben.Marsh
UGS: Only check for updates every 5 minutes.
Change 3392623 on 2017/04/13 by Ben.Marsh
UGS: Only poll for new changes every 60 seconds.
Change 3392744 on 2017/04/13 by Ben.Marsh
UGS: Query changelist descriptions individually to determine whether changes affect code or content, to hopefully reduce Perforce server load.
Change 3392874 on 2017/04/13 by Ben.Marsh
UGS: Allow specifying regexes in the project config file which filters which changes to be displayed. Useful for changes submitted by build machines, updates to collections, etc...
Change 3392878 on 2017/04/13 by Ben.Marsh
Update UGS to version 1.96
Change 3395635 on 2017/04/17 by Ben.Marsh
UAT: Prefix log output from executing UAT commands through BuildGraph with the name of that command.
Change 3395655 on 2017/04/17 by Ben.Marsh
UAT: Add a command for syncing a DDC over the network (SyncDDC). Allows specifying a maximum size to copy, number of days worth of modified files to copy, and time limit not to be exceeded.
Change 3396989 on 2017/04/17 by Wes.Hunt
CrashReporter configurable tweaks.
* Added QueueWaitingTimeAlertThreshold (used to be hardcoded to 1 min).
- When the queue waiting time gets beyond this many seconds, trigger a slack alert message. Default is 10 min.
- Zero means never alert.
* Added DiskSpaceAvailableAlertInterval (used to be hardcoded to 1 day).
- Interval by which to report disk space availability.
- Default is never (Zero)
* Updated config file to match production config.
#codereview:jin.zhang
Change 3397656 on 2017/04/18 by Ben.Marsh
UBT: Allow modules to opt-out of getting the default include paths from being added, by setting bAddDefaultIncludePaths = false from their build.cs file.
Change 3397677 on 2017/04/18 by Robert.Manuszewski
PR #3167 : Adding more descriptive error text to DetatchLinker error check (by rooneym)
Change 3397722 on 2017/04/18 by Robert.Manuszewski
PR #2252: Increase linker reporting for failed imports (Contributed by FineRedMist)
Change 3397739 on 2017/04/18 by Richard.Hinckley
#jira UE-44100
Fixed SanitizePackageName() to remove double-slash, triple-slash, etc. from package names. Also updated CreatePackage() to call SanitizePackageName() before creating.
Change 3398023 on 2017/04/18 by Ben.Marsh
PR #3105: Cook/package with editor and debugger attached (Contributed by projectgheist)
Change 3398095 on 2017/04/18 by Ben.Marsh
PR #3051: Generate map file from UAT (Contributed by projectgheist)
Change 3398212 on 2017/04/18 by Ben.Marsh
PR #2915: UE-38232: Removed duplicate stats (Contributed by projectgheist)
Change 3399304 on 2017/04/19 by Ben.Marsh
UGS: Prevent editor target files being removed when running custom tools.
Change 3399306 on 2017/04/19 by Robert.Manuszewski
Moved InitPropertiesFromCustomList to UbLueprintGeneratedClass and made it thread safe
Change 3399729 on 2017/04/19 by Steve.Robb
Simple optimization to TBitArray::RemoveAt() when all removed bits are at the end of the array.
RemoveAtSwap() now simply decrements the count instead of calling RemoveAt().
Checks for a positive count added to RemoveAt() and RemoveAtSwap().
Change 3399750 on 2017/04/19 by Jin.Zhang
Order branch alphabetically #RB
Change 3400186 on 2017/04/19 by Steve.Robb
Per-header generated code.
Change 3401458 on 2017/04/20 by Steve.Robb
Static log categories moved out of headers to prevent duplicates when the header is included multiple times.
#jira UE-37507
Change 3401657 on 2017/04/20 by Gil.Gribb
UE4 - Simplified and reworked lock free lists and the task graph bringing all platforms under the same scheme.
Change 3401735 on 2017/04/20 by Gil.Gribb
UE4 - Updated apple platform atomics with a new clang version which is intended to be shared among all clang platforms.
Change 3403362 on 2017/04/21 by Steve.Robb
Algo::Sort() fixed to support C arrays.
Size+count versions of Also::IsSorted() deprecated.
Algo::IsSortedBy() added.
Algo::FindBy() added to allow an element to be found by projection.
Simplifications and generalizations.
Change 3404017 on 2017/04/21 by Ben.Marsh
Fix issue where referenced plugin descriptors were missing from console builds, and prevent monolithic builds from offering to disable missing plugins.
Change 3405299 on 2017/04/24 by Steve.Robb
Clarified the class of the incompatible function in the error message about incompatible BP event specifiers.
#jira UE-35106
Change 3405302 on 2017/04/24 by Ben.Marsh
UBT: Allow excluding documentation from generated project files, by setting <ProjectFileGenerator><bIncludeDocumentation>false</bIncludeDocumentation></ProjectFileGenerator> in the XML configuration file.
Change 3405629 on 2017/04/24 by Ben.Marsh
Rename CPPEnvironment to CppCompileEnvironment, to reflect the class name.
Change 3406431 on 2017/04/24 by Ben.Marsh
UAT: Fix incorrect handling of P4SubmitOptions when multiple values are present.
Change 3406670 on 2017/04/24 by Ben.Marsh
UBT: Enable warnings for classes with virtual functions and no virtual destructor (C4265 on Windows, -fdelete-non-virtual-dtor on Clang).
Change 3407080 on 2017/04/25 by Gil.Gribb
UE4 - Critical fix: Propoerly disambiguate imports with the same name and the same outer name. This fixes an assert: LocalExportIndex.IsNull.
Change 3407486 on 2017/04/25 by Gil.Gribb
UE4 - Made changes so that servers, programs and non-engine executables do not create background or high priority threads.
Change 3407495 on 2017/04/25 by Gil.Gribb
UE4 - Tweaked out XBox and Windows low level file IO.
Change 3407497 on 2017/04/25 by Gil.Gribb
UE4 - Fixed bug in the pak precacher that would result in blocks being discarded too soon, which, in turn, resulted in redudnant reads.
Change 3407705 on 2017/04/25 by Ben.Marsh
Removing most of the junk in DotNETUtilities.
Change 3409701 on 2017/04/26 by Ben.Marsh
Disable another static analyzer warning for third party libraries.
Change 3410074 on 2017/04/26 by Daniel.Lamb
Network platform file runs heart beats and responds to modified file changes.
Cook on the fly server in the editor (COTS) now detects changes to content and notifies client.
Fixed issue with network platform file not using correct sandbox.
#test cook on the side shootergame
Change 3411131 on 2017/04/27 by Steve.Robb
TIsTriviallyDestructible now supports forward-declared enums.
Change 3411186 on 2017/04/27 by Steve.Robb
Fix for #includes in generated code for Within classes which are in a different module from the generated class.
Change 3411917 on 2017/04/27 by Steve.Robb
Fixes to pushing/popping the CPP macro.
Change 3411966 on 2017/04/27 by Steve.Robb
Include spam reduced in generated code.
Change 3412155 on 2017/04/27 by Ben.Marsh
Fix for PVS Studio warning: VFOVInRadians used instead of HFOVInRadians.
Change 3412223 on 2017/04/27 by Ben.Marsh
Fix for PVS-Studio warning: Calling SetHelperA.Num() twice.
Change 3412273 on 2017/04/27 by Ben.Marsh
Fix for PVS-Studio warning: Duplicated variable name.
Change 3412511 on 2017/04/27 by Ben.Marsh
PR #3462: Fixed PVS-Studio issues (Part 1) (Contributed by PaulEremeeff)
Change 3412582 on 2017/04/27 by Ben.Marsh
Fix for PVS-Studio warning: Incorrect variable name in copy/pasted code
Change 3413136 on 2017/04/28 by Robert.Manuszewski
Helper functions for dissolving specific GC clusters
Change 3413310 on 2017/04/28 by Ben.Marsh
Fix for PVS-Studio warning: Incorrect variable name in copy/pasted code.
Change 3413341 on 2017/04/28 by Gil.Gribb
UE4 - Add prestream capability to allow us to preload always loaded sublevels. Only turned on for Shootergame.
Change 3413351 on 2017/04/28 by Ben.Marsh
Include code analysis macros directly from Platform.h, so that macros are available to everything.
Change 3413352 on 2017/04/28 by Ben.Marsh
Fixing a few more PVS studio warnings.
Change 3413437 on 2017/04/28 by Ben.Marsh
Fix for PVS-Studio warning: Comparison is always true.
Change 3413759 on 2017/04/28 by Ben.Marsh
Suppressing warnings for PVS-Studio.
Change 3413784 on 2017/04/28 by Ben.Marsh
Fix PVS-Studio warning.
Change 3413898 on 2017/04/28 by Ben.Marsh
Fix PVS-Studio warning: Same conditional is checked twice.
Change 3413915 on 2017/04/28 by Ben.Marsh
Fix PVS-Studio warning: LHS of expression is identical to RHS.
Change 3413989 on 2017/04/28 by Ben.Marsh
Fix for PVS-Studio warning: If CurrentGraph->SubGraphs.Num() == 1, it will always enter the first conditional block.
Change 3414053 on 2017/04/28 by Ben.Marsh
More PVS-Studio fixes.
Change 3414062 on 2017/04/28 by Ben.Marsh
Fix for PVS-Studio warning: Pointer to object goes out of scope without being freed.
Change 3414070 on 2017/04/28 by Ben.Marsh
Fix for PVS-Studio warning: Fix incorrect condition.
Change 3414071 on 2017/04/28 by Ben.Marsh
Fix for PVS-Studio warning: Array index is always zero.
Change 3414116 on 2017/04/28 by Ben.Marsh
BuildGraph: Allow marking compile tasks as unsuitable for use with the parallel executor, via an AllowParallelExecutor="false" attribute.
Change 3414160 on 2017/04/28 by Ben.Marsh
Add support for running PVS-Studio through UnrealBuildTool. To use, pass -StaticAnalyzer=PVSStudio to the build command line (similarly, the Visual C++ analyzer can now be invoked using -StaticAnalyzer=VisualCpp). A log file will be written to the Engine/Saved/PVS-Studio or <Project>/Saved/PVS-Studio directory containing diagnostics, which can be opened using the "unparsed output" filter in the PVS-Studio standalone application. High priority warnings are printed to stdout.
Change 3414237 on 2017/04/28 by Ben.Marsh
EC: Allow disabling and enabling the log preprocessor via special markers in the log.
To disable: <-- Suspend Log Parsing -->
To enable: <-- Resume Log Parsing -->
Change 3414343 on 2017/04/28 by Ben.Marsh
UBT: Exclude ThirdParty folders from PVS output.
Change 3414392 on 2017/04/28 by Ben.Marsh
Fix regular strings being casted to BSTRs; BSTRs have a hidden length prefix in the two bytes before the first character, so passing a regular TCHAR* is reading random memory.
Change 3414459 on 2017/04/28 by Ben.Marsh
Fix for PVS-Studio warning: Object goes out of scope without being freed.
Change 3414495 on 2017/04/28 by Ben.Marsh
Suppress some more PVS-Studio warnings.
Change 3414514 on 2017/04/28 by Ben.Marsh
Fix for PVS-Studio warning: Testing WorldType being equal to EditorPreview and not equal to Inactive is redundant; changing to match description in comment instead.
Change 3414526 on 2017/04/28 by Ben.Marsh
Fix for PVS-Studio warning: Variable assigned to itself has no effect.
Change 3415183 on 2017/04/29 by Ben.Marsh
Fix conflict in macro definitions for ENABLE_HTTP_FOR_NFS - rename the macro defined by NetworkFile to ENABLE_HTTP_FOR_NF. Hopefully fix CIS.
Change 3415765 on 2017/05/01 by Ben.Marsh
Suppressing PVS-Studio warning to get things building cleanly. Not sure if FContentHelper is being leaked or not.
Change 3415853 on 2017/05/01 by Ben.Marsh
EC: Fix jobs never completing if a "Sync & Build" step fails. Dependent jobs should evaluate their run conditions as soon as the parent step finishes, rather than waiting for child job steps to be created.
Change 3416138 on 2017/05/01 by Ben.Marsh
Fix Fortnite cook failures. Not sure what the exact problem is here, but my hunch is that discarded "const" causes blueprint compile failures due to not being able to connect output pins between nodes for overloaded functions, or something like that.
Change 3416309 on 2017/05/01 by Ben.Marsh
Build: Fix node names for static analysis.
Change 3416360 on 2017/05/01 by Ben.Marsh
UBT: Remove unused arguments to PrepForUATPackageOrDeploy for Windows.
Change 3416398 on 2017/05/01 by Daniel.Lamb
Cook on the fly NetworkFileServerConnection Remove FileModifiedCallback delegate when the connection is closed.
#test Cook on the side shootergame.
Change 3416826 on 2017/05/01 by Daniel.Lamb
Added callback to game when files are requested reload from networkfileserver.
Game will need to unload / reload effected objects.
Working on simple reload capability in shootergame.
#test Cook on the side shootergame with reloading
Change 3417983 on 2017/05/02 by Ben.Marsh
EC: Remove warning for lines not matching p4 tag syntax when running preflights; multi-line descriptions in shelved changelists break this pattern.
Change 3418747 on 2017/05/02 by Steve.Robb
Fix for const pointer properties.
Fix for UHT debugging manifest.
Test added for pointer properties.
Change 3420477 on 2017/05/03 by Gil.Gribb
UE4 - Removed check from windows async IO layer.
[CL 3421020 by Ben Marsh in Main branch]
2017-05-03 14:18:32 -04:00
if ( ensure ( NewChannel > = ECC_GameTraceChannel1 & & NewChannel < = ECC_GameTraceChannel18 ) ) //-V547
2014-03-14 14:13:41 -04:00
{
// Create modal window for modification
TSharedRef < SWindow > WidgetWindow = SNew ( SWindow )
. Title ( LOCTEXT ( " CollisionProfileDetail_NewChannelTitle " , " New Channel " ) )
. ClientSize ( FVector2D ( CHANNEL_WINDOW_WIDTH , CHANNEL_WINDOW_HEIGHT ) )
. SupportsMaximize ( false )
. SupportsMinimize ( false )
. SizingRule ( ESizingRule : : UserSized ) ;
TSharedPtr < SChannelEditDialog > ChannelEditor ;
WidgetWindow - > SetContent
(
SNew ( SBorder )
. BorderImage ( FEditorStyle : : GetBrush ( " ToolPanel.GroupBorder " ) )
[
SAssignNew ( ChannelEditor , SChannelEditDialog )
. ChannelSetup ( NULL )
. CollisionChannel ( NewChannel )
. WidgetWindow ( WidgetWindow )
. bTraceType ( bTraceType )
. OnValidateChannel ( this , & FCollisionProfileDetails : : IsValidChannelSetup )
]
) ;
GEditor - > EditorAddModalWindow ( WidgetWindow ) ;
// add to collision profile
if ( ChannelEditor - > bApplyChange & &
ensure ( IsValidChannelSetup ( & ( ChannelEditor - > ChannelSetup ) ) ) )
{
CollisionProfile - > DefaultChannelResponses . Add ( ChannelEditor - > ChannelSetup ) ;
UpdateChannel ( bTraceType ) ;
}
}
return FReply : : Handled ( ) ;
}
FReply FCollisionProfileDetails : : OnEditChannel ( bool bTraceType )
{
TArray < TSharedPtr < FChannelListItem > > SelectedItems = ( bTraceType ) ? TraceChannelListView - > GetSelectedItems ( ) : ObjectChannelListView - > GetSelectedItems ( ) ;
if ( SelectedItems . Num ( ) = = 1 )
{
TSharedRef < SWindow > WidgetWindow = SNew ( SWindow )
. Title ( LOCTEXT ( " CollisionProfileDetail_EditChannelTitle " , " Edit Channel " ) )
. ClientSize ( FVector2D ( CHANNEL_WINDOW_WIDTH , CHANNEL_WINDOW_HEIGHT ) )
. SupportsMaximize ( false )
. SupportsMinimize ( false )
. SizingRule ( ESizingRule : : UserSized ) ;
TSharedPtr < FChannelListItem > SelectedItem = SelectedItems [ 0 ] ;
TSharedPtr < SChannelEditDialog > ChannelEditor ;
WidgetWindow - > SetContent
(
SNew ( SBorder )
. BorderImage ( FEditorStyle : : GetBrush ( " ToolPanel.GroupBorder " ) )
[
SAssignNew ( ChannelEditor , SChannelEditDialog )
. ChannelSetup ( SelectedItem - > ChannelSetup . Get ( ) )
. WidgetWindow ( WidgetWindow )
. OnValidateChannel ( this , & FCollisionProfileDetails : : IsValidChannelSetup )
]
) ;
GEditor - > EditorAddModalWindow ( WidgetWindow ) ;
// add to collision profile
if ( ChannelEditor - > bApplyChange & &
ensure ( IsValidChannelSetup ( & ( ChannelEditor - > ChannelSetup ) ) ) )
{
FCustomChannelSetup * Item = FindFromChannel ( ChannelEditor - > ChannelSetup . Channel ) ;
if ( Item )
{
// if name changed, we need to add to redirect
if ( Item - > Name ! = ChannelEditor - > ChannelSetup . Name )
{
CollisionProfile - > AddChannelRedirect ( Item - > Name , ChannelEditor - > ChannelSetup . Name ) ;
}
* Item = ChannelEditor - > ChannelSetup ;
// refresh view
UpdateChannel ( Item - > bTraceType ) ;
}
}
}
return FReply : : Handled ( ) ;
}
bool FCollisionProfileDetails : : IsAnyChannelSelected ( bool bTraceType ) const
{
return ( bTraceType ) ? TraceChannelListView - > GetNumItemsSelected ( ) > 0 : ObjectChannelListView - > GetNumItemsSelected ( ) > 0 ;
}
FReply FCollisionProfileDetails : : OnDeleteChannel ( bool bInTraceType )
{
TArray < TSharedPtr < FChannelListItem > > SelectedItems = ( bInTraceType ) ? TraceChannelListView - > GetSelectedItems ( ) : ObjectChannelListView - > GetSelectedItems ( ) ;
if ( SelectedItems . Num ( ) = = 1 )
{
if ( FMessageDialog : : Open ( EAppMsgType : : YesNo , LOCTEXT ( " FCollisionProfileDetails_DeleteChannel " , " If you delete this channel, all the objects that use this channel will be set to default. \n Would you like to continue? " ) ) = = EAppReturnType : : Yes )
{
TSharedPtr < FChannelListItem > SelectedItem = SelectedItems [ 0 ] ;
bool bTraceType = SelectedItem - > ChannelSetup - > bTraceType ;
RemoveChannel ( SelectedItem - > ChannelSetup - > Channel ) ;
UpdateChannel ( bTraceType ) ;
}
}
return FReply : : Handled ( ) ;
}
FReply FCollisionProfileDetails : : OnNewProfile ( )
{
// Create modal window for modification
TSharedRef < SWindow > WidgetWindow = SNew ( SWindow )
. Title ( LOCTEXT ( " CollisionProfileDetail_NewProfileTitle " , " New Profile " ) )
. ClientSize ( FVector2D ( PROFILE_WINDOW_WIDTH , PROFILE_WINDOW_HEIGHT ) )
. SupportsMaximize ( false )
. SupportsMinimize ( false )
. SizingRule ( ESizingRule : : UserSized ) ;
TSharedPtr < SProfileEditDialog > ProfileEditor ;
WidgetWindow - > SetContent
(
SNew ( SBorder )
. BorderImage ( FEditorStyle : : GetBrush ( " ToolPanel.GroupBorder " ) )
[
SAssignNew ( ProfileEditor , SProfileEditDialog )
. ProfileTemplate ( NULL )
. CollisionProfile ( CollisionProfile )
. ProfileIndex ( INDEX_NONE )
. WidgetWindow ( WidgetWindow )
. ObjectTypeMapping ( CollisionProfile - > ObjectTypeMapping )
. OnValidateProfile ( this , & FCollisionProfileDetails : : IsValidProfileSetup )
]
) ;
GEditor - > EditorAddModalWindow ( WidgetWindow ) ;
// add to collision profile
if ( ProfileEditor - > bApplyChange & &
ensure ( IsValidProfileSetup ( & ( ProfileEditor - > ProfileTemplate ) , ProfileEditor - > ProfileIndex ) ) )
{
CollisionProfile - > SaveCustomResponses ( ProfileEditor - > ProfileTemplate ) ;
CollisionProfile - > Profiles . Add ( ProfileEditor - > ProfileTemplate ) ;
UpdateProfile ( ) ;
}
return FReply : : Handled ( ) ;
}
FReply FCollisionProfileDetails : : OnEditProfile ( )
{
TArray < TSharedPtr < FProfileListItem > > SelectedItems = ProfileListView - > GetSelectedItems ( ) ;
if ( SelectedItems . Num ( ) = = 1 )
{
// find which profile it's trying to edit
TSharedPtr < FProfileListItem > SelectedItem = SelectedItems [ 0 ] ;
int32 ProfileIndex = FindProfileIndexFromName ( SelectedItem - > ProfileTemplate - > Name ) ;
if ( ProfileIndex ! = INDEX_NONE )
{
// Create modal window for modification
TSharedRef < SWindow > WidgetWindow = SNew ( SWindow )
. Title ( LOCTEXT ( " CollisionProfileDetail_EditProfileTitle " , " Edit Profile " ) )
. ClientSize ( FVector2D ( PROFILE_WINDOW_WIDTH , PROFILE_WINDOW_HEIGHT ) )
. SupportsMaximize ( false )
. SupportsMinimize ( false )
. SizingRule ( ESizingRule : : UserSized ) ;
TSharedPtr < SProfileEditDialog > ProfileEditor ;
WidgetWindow - > SetContent
(
SNew ( SBorder )
. BorderImage ( FEditorStyle : : GetBrush ( " ToolPanel.GroupBorder " ) )
[
SAssignNew ( ProfileEditor , SProfileEditDialog )
. ProfileTemplate ( & CollisionProfile - > Profiles [ ProfileIndex ] )
. CollisionProfile ( CollisionProfile )
. ProfileIndex ( ProfileIndex )
. WidgetWindow ( WidgetWindow )
. ObjectTypeMapping ( CollisionProfile - > ObjectTypeMapping )
. OnValidateProfile ( this , & FCollisionProfileDetails : : IsValidProfileSetup )
]
) ;
GEditor - > EditorAddModalWindow ( WidgetWindow ) ;
// add to collision profile
if ( ProfileEditor - > bApplyChange & &
ensure ( IsValidProfileSetup ( & ( ProfileEditor - > ProfileTemplate ) , ProfileIndex ) ) )
{
CommitProfileChange ( ProfileIndex , ProfileEditor - > ProfileTemplate ) ;
UpdateProfile ( ) ;
}
}
else
{
// invalid profile
}
}
return FReply : : Handled ( ) ;
}
FReply FCollisionProfileDetails : : OnDeleteProfile ( )
{
TArray < TSharedPtr < FProfileListItem > > SelectedItems = ProfileListView - > GetSelectedItems ( ) ;
if ( SelectedItems . Num ( ) = = 1 )
{
if ( FMessageDialog : : Open ( EAppMsgType : : YesNo , LOCTEXT ( " FCollisionProfileDetails_DeletePreset " , " If you delete this preset, all the objects that use this preset will be set to default. \n Would you like to continue? " ) ) = = EAppReturnType : : Yes )
{
TSharedPtr < FProfileListItem > SelectedItem = SelectedItems [ 0 ] ;
int32 ProfileIndex = FindProfileIndexFromName ( SelectedItem - > ProfileTemplate - > Name ) ;
if ( ProfileIndex ! = INDEX_NONE )
{
CollisionProfile - > Profiles . RemoveAt ( ProfileIndex ) ;
UpdateProfile ( ) ;
}
}
}
return FReply : : Handled ( ) ;
}
bool FCollisionProfileDetails : : IsAnyProfileSelected ( ) const
{
return ProfileListView - > GetNumItemsSelected ( ) > 0 ;
}
/** SListView item double clicked */
void FCollisionProfileDetails : : OnObjectChannelListItemDoubleClicked ( TSharedPtr < FChannelListItem > )
{
OnEditChannel ( false ) ;
}
void FCollisionProfileDetails : : OnTraceChannelListItemDoubleClicked ( TSharedPtr < FChannelListItem > )
{
OnEditChannel ( true ) ;
}
void FCollisionProfileDetails : : OnProfileListItemDoubleClicked ( TSharedPtr < FProfileListItem > )
{
OnEditProfile ( ) ;
}
//====================================================================================
// FCollsiionProfileData
//=====================================================================================
Copying //UE4/Dev-AnimPhys to //UE4/Dev-Main (Source: //UE4/Dev-AnimPhys @ 3384744)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3294073 on 2017/02/09 by Thomas.Sarkanen
Delete old location of FriendViewModel.h that did not get picked up correctly in the merge
Change 3354003 on 2017/03/20 by Thomas.Sarkanen
Back out changelist 3353914
Change 3355932 on 2017/03/21 by Thomas.Sarkanen
Back out changelist 3354003
Reinstating merge from Main:
Merging //UE4/Dev-Main to Dev-AnimPhys (//UE4/Dev-AnimPhys) @ CL 3353839
Change 3358776 on 2017/03/22 by Ori.Cohen
Recreate physics when changing mobility of components - fixes debug rendering issue
#JIRA UE-39328
Change 3360075 on 2017/03/23 by James.Golding
Back out changelist 3358776, as it was made after smoke testing. Will re-submit after copy to main.
Change 3362695 on 2017/03/24 by Thomas.Sarkanen
Use correct extender when building menus for AnimationEditor, SkeletalMeshEditor & SkeletonEditor
#jira UE-41100 - Persona code calling incorrect extenders when building menus.
Change 3362696 on 2017/03/24 by Thomas.Sarkanen
Facial animation experimental feature now pops up restart editor toast
#jira UE-40989 - User is not prompted to restart the editor when enabling the Facial Animation Importer
Change 3362699 on 2017/03/24 by Thomas.Sarkanen
Enable snapping for translation in animation viewports
#jira UE-39747 - Translating sockets in Persona is not affected by Snap Options
#jira UE-39748 - Translating bones in Persona is not affected by Snap Options
Change 3362700 on 2017/03/24 by Thomas.Sarkanen
Curve source nodes now dont update their source title if the source is a pin
The title of the node is not recached when the pin default changes, so we cant display it in the title
#jira UE-40108 - When changing a Curve Source Node doesn't update source binding name when typed in
Change 3362721 on 2017/03/24 by Thomas.Sarkanen
CVar r.SkeletalMeshLODBias no longer affects meshes in animation viewports
#jira UE-35733 - GSkeletalMeshLODBias affects render LOD in Persona
Change 3362724 on 2017/03/24 by Thomas.Sarkanen
Fix animation preview scene keyboard bindings
Also moved advanced preview scene into its own module
#jira UE-41505 - Pressing the hotkey I and O do not hide the floor and environment if the Preview Scene Settings tab isn't opened.
Change 3362783 on 2017/03/24 by Ori.Cohen
Fix incorrect locking and check when an editor static shape is changed. Originally this code assumed it would only get called at runtime, where there is only 1 shape. In the case of the async scene and static shapes - there are two shapes and if you update the body setup in the editor this will crash.
Change 3362796 on 2017/03/24 by Ori.Cohen
Fix welded capsules not using the right rotation
#JIRA UE-41546
Change 3362803 on 2017/03/24 by Ori.Cohen
Recreate physics when changing mobility of components - fixes debug rendering issue
#JIRA UE-39328
Change 3363013 on 2017/03/24 by Thomas.Sarkanen
Fix CIS issue
Change 3363202 on 2017/03/24 by Ori.Cohen
Fix bad #endif
Change 3363295 on 2017/03/24 by Ori.Cohen
Remove bWelded and use WeldParent everywhere. This fixes a bad case where a kinematic is returned as the root welded of simulated children.
#JIRA UE-40783
Change 3363435 on 2017/03/24 by Jon.Nabozny
Fix infinite jump on client when Jump Max Hold Time is not 0.
#jira UE-41004
Change 3363451 on 2017/03/24 by Jon.Nabozny
Fix USkeletalMeshComponent::PoseTickedThisFrame to use a frame counter instead of world time (which isn't changed while paused).
#jira UE-39567
Change 3363504 on 2017/03/24 by Jon.Nabozny
Fix SCE_NP_MATCHING2_REQUEST_EVENT_SEARCH_ROOM_A to treat result data as linked list instead of array.
(Code originally came from SCE via UDN)
#jira UE-41049
Change 3363532 on 2017/03/24 by Ori.Cohen
Change default to SkipSimulatedBones.
#JIRA UE-41404
Change 3363537 on 2017/03/24 by Ori.Cohen
Remove the unsupported option of HideBone with DisableCollision. If we want this in the future we can add it.
#JIRA UE-30826
Change 3363681 on 2017/03/24 by Jon.Nabozny
Reapply 3292286 after it was clobbered by 3360002
(Only clobbered in Ocean).
#jira UE-37512
Change 3363722 on 2017/03/24 by mason.seay
Updated map to improve testing
Change 3365351 on 2017/03/27 by Thomas.Sarkanen
Fix non-PCH CIS errors
#jira UE-43335 - CIS fail: 'FAdvancedPreviewSceneCommands is not a class name
Change 3365422 on 2017/03/27 by Thomas.Sarkanen
Fixed skinned mesh LOD not updating in editor under various physics-related circumstances
#jira UE-42013 - Skeletal meshes with recently generated LODs will not change LODs in viewport
Change 3365423 on 2017/03/27 by Thomas.Sarkanen
Fix ensure when setting Spline IK Bone Axis to 'None'
Node is currently not in use, so I've avoided deprecating this for now. Values should be preserved.
#jira UE-39723 - Ensure when setting Bone Axis to None in Spline IK
Change 3365424 on 2017/03/27 by Thomas.Sarkanen
Fix control rigs being convertable to possessables
Also prevent 'export to anim sequence' button from appearing on standard level sequences
#jira UE-42070 - Crash converting a control rig to Possessable
Change 3365425 on 2017/03/27 by Thomas.Sarkanen
When selecting bones that are non-required, we dont render gizmos or text labels
#jira UE-35737 - Bone labels flicker between two locations when removing from LOD levels in Persona
Change 3365426 on 2017/03/27 by Thomas.Sarkanen
Fixed foot placement IK doing line traces on worker threads
Also exposed const access to required bones array (the proxy already does this, so I figure the instance should get it too).
Note: Node is not actually used
#jira UE-43179 - Fix FAnimNode_FootPlacementIK doing line trace on worker thread
Change 3365428 on 2017/03/27 by Thomas.Sarkanen
Skeleton selection no does not lag behind choice made in viewport
#jira UE-42236 - Mesh Overlay always lags behind actual selection
Change 3365429 on 2017/03/27 by Thomas.Sarkanen
Fix anim BPs that contain state machines having blank palettes
#jira UE-42172 - AnimBP Palette is blank on existing AnimBPs
Change 3365435 on 2017/03/27 by Jurre.deBaare
Undoing Channel selection in Paint mode does not work
#fix use duplicated CDO object instead of CDO directly
#jira UE-42621
Change 3365436 on 2017/03/27 by Jurre.deBaare
Functionless undo/redo transactions created when importing Alembic file and changing conversion settings
#fix use duplicated CDO object instead of CDO directly
#jira UE-40347
Change 3365437 on 2017/03/27 by Jurre.deBaare
Ensure that HLOD cannot be set up in sub-levels
#fix added functionality to check whether or not a level is used as a sub/streaming level in any other content, and if so show a widget similar to the checkout notice to inform the user why the hlod outliner is disabled
#jira UE-40301
Change 3365438 on 2017/03/27 by Jurre.deBaare
2D Blendspace breaks when aligning samples in a straight line
#fix for some reason the number of samples to considerate was limit to 3 (old code) so removed it since it doesn't make sense
#jira UE-42744
Change 3365439 on 2017/03/27 by Jurre.deBaare
Color View Mode doesn't reset when closing/reopening editor
#fix added a delegate to OnEditorClose to ensure we can reset the viewport modes while they still exist, this issue would happen if the user closes the editor with mesh paint mode open, exiting the mode would only happen after destructing most of the editor
#jira UE-42466
Change 3365440 on 2017/03/27 by Jurre.deBaare
LOD Model field scrubbing is very sensitive
#fix made sure that max slider value is also driven by data
#jira UE-42980
Change 3365441 on 2017/03/27 by Jurre.deBaare
Replacing an asset in a sequence player node does not register in undo history
#fix added transaction for dropping anim assets on player nodes
#jira UE-39152
Change 3365442 on 2017/03/27 by Jurre.deBaare
Crash on Mac importing some alembic files
#fix disable multithread abc file reading with HDF5 backend
#jira UE-39783
Change 3365443 on 2017/03/27 by Jurre.deBaare
Moving over Alembic feature: "Add support for 'finding' materials according to the face-set names in abc files"
Change 3365444 on 2017/03/27 by Jurre.deBaare
Moving over Alembic fixes:
- Time offset issues > changed how we determine frame indices and frame steps
- Incorrect tangent issues > enforce tangent calculation during skeletal mesh import
- Automatically set recompute tangent flag on skeletal mesh sections
Change 3365451 on 2017/03/27 by Jurre.deBaare
CIS: include needed for GetTransientPackage
Change 3365460 on 2017/03/27 by Jurre.deBaare
CIS: apparently CIS wants explicit cast to UObject
Change 3365463 on 2017/03/27 by Jurre.deBaare
CIS: final fix, was actually UPackage include missing ugh
Change 3365486 on 2017/03/27 by Thomas.Sarkanen
Fix case error in include for Linux builds
Change 3365499 on 2017/03/27 by James.Golding
Fix editing collision settings sometimes not 'sticking' - wait until after LoadProfileConfig (which modified Profiles array) to copy to 'SavedData'
Fix FCollsiionProfileData typo
#jira UE-42490
Change 3365500 on 2017/03/27 by Jurre.deBaare
Turning on LOD Model Painting does not copy paint to other LODs on Skeletal Mesh
#fix neede to pre edit / post edit the skeletal mesh to ensure the color buffers were re-initialised
#jira UE-42637
Change 3365501 on 2017/03/27 by James.Golding
Disable rather than hide anim picker when no mesh assigned
#jira UE-35537
Change 3365505 on 2017/03/27 by James.Golding
Fix USkinnedMeshComponent::FindClosestBone ignoring bRequirePhysicsAsset, because BodySetupIndexMap.FindRef would return 0 if bone not present
https://udn.unrealengine.com/questions/353125/uskinnedmeshcomponentfindclosestbone-does-not-resp.html
#jira UE-43061
Change 3365515 on 2017/03/27 by Jurre.deBaare
Using Alt+Click to break Transition node connections cannot be undone using the Undo command
#fix added transactions to breaking node links
#jira UE-39068
Change 3365528 on 2017/03/27 by Jurre.deBaare
Blendspaces don't update to reflect sync marker changes that have occurred on animations in the blend
#fix added validation on blendspaces when removing or adding sync markers in animation editor
#jira UE-39814
Change 3365535 on 2017/03/27 by Jurre.deBaare
Camera moves at the same time as erasing paint when clicking Paint settings and back into Viewport
#fix lock camera if erasing as well
#jira UE-42474
Change 3365539 on 2017/03/27 by Jurre.deBaare
Painting on animation sequence paints on invisible T-pose skeleton
#fix during painting enforce bUseRefPoseOnInitAnim so you're always painting on a ref-pose skeletal mesh
#jira UE-42484
Change 3365545 on 2017/03/27 by Jurre.deBaare
Fill Tool does not fill the mesh with the selected Texture Weight Index when used in Weight Vertex Painting
#fix added function to generate color according to texture weight settings and index, and fill using that color when the editor is in texture weight mode
#jira UE-43091
Change 3365549 on 2017/03/27 by Jurre.deBaare
CIS: include fix
Change 3365555 on 2017/03/27 by Jurre.deBaare
Missing change from 3365545
Change 3365561 on 2017/03/27 by Jurre.deBaare
Missing change from 3365545
Change 3365918 on 2017/03/27 by Ori.Cohen
PR #3424: fix compile error when PHYSX_MEMORY_STATS=1 (Contributed by kayama-shift)
#JIRA UE-43337
Change 3366234 on 2017/03/27 by Ori.Cohen
Moved call to UpdateHasValidBodies into OnRegister. Original suggested fix came from github, but I think the bounds need to update even if OnCreatePhysics isn't called.
#JIRA UE-43339
#pr 3427
Change 3367252 on 2017/03/28 by Jurre.deBaare
Vertex Weight Painting options are no longer present in MeshPaint mode
#fix implemented singleton pattern for paint mode settings to ensure customization works correctly
#jira UE-43357
Change 3367340 on 2017/03/28 by Jurre.deBaare
GC fix for recent changes to painting / alembic settings
Change 3367445 on 2017/03/28 by Thomas.Sarkanen
Fix fallout from Main merge
OrionEditor needs to depend on the new AdvancedPreviewScene module.
Change 3367741 on 2017/03/28 by Ori.Cohen
Remove unused physics warning when moving simulated object during physics
#jira UE-41465
Change 3368072 on 2017/03/28 by Ori.Cohen
Removed collision aggregates from ISMC collision. This is not a good candidate for aggregates as the bounding boxes generated could be huge (for example several trees that are very far away). This fixes perf regression from the PhysX 3.4 upgrade
#JIRA UE-42956
Change 3368479 on 2017/03/28 by Ori.Cohen
Fix GetClosestPoint incorrectly considering welded bodies.
#JIRA UE-39329
Change 3368620 on 2017/03/28 by Lina.Halper
Added code comment
#rb:none
#jira: UE-38836
Change 3368752 on 2017/03/28 by mason.seay
Updated test map since UE-338836 came back as by design
Change 3369370 on 2017/03/29 by James.Golding
Fix StaticMesh Editor drawing complex collision if 'use simple as complex' is enabled
Add separate options for showing simple and complex collision in StaticMesh Editor
#jira UE-42844
Change 3369438 on 2017/03/29 by Lina.Halper
Fix issue where it updates more often when you give too high update rate - i.e. 60
#jira: UE-38844
#code review: Laurent.Delayen
Change 3369462 on 2017/03/29 by Thomas.Sarkanen
Add preview mesh to animation blueprints
Auto set preview mesh for animation assets and animation blueprints based off meshes.
#jira UE-40032 - Creating animation assets from right-clicking skel mesh results in showing incorrect mesh in Persona
Change 3369463 on 2017/03/29 by Thomas.Sarkanen
We now select current preview mesh in the preview mesh dropdown
Change 3369464 on 2017/03/29 by Thomas.Sarkanen
Ticks now appear properly on anim sequence scrub bar
#jira UE-41197 - No additional ticks appear on the timeline when you zoom in
Change 3369465 on 2017/03/29 by Thomas.Sarkanen
Persona now depends publicly on SkeletonEditor
GitHub PR #3431 from kayama-shift
#jira UE-43344 - GitHub 3431 : Persona module must depend on SkeletonEditor publically
Change 3369466 on 2017/03/29 by Thomas.Sarkanen
Blueprints are now only dirtied if edited properties are from objects in the Blueprint's package
#jira UE-38956 - Changing Bone Transform between World and Local Location dirties Anim Blueprints
Change 3369467 on 2017/03/29 by Thomas.Sarkanen
Tweaked combo box alignment for world/local transform
Appearance is now closer to that of the level editor
Change 3369469 on 2017/03/29 by Thomas.Sarkanen
Prevent switching to unsupported widget modes when editing control rigs
#jira UE-42557 - When in Animation Mode, if you select a controller with the translation gizmo active, when you select a non animation controller the gizmo renders incorrectly
Change 3369588 on 2017/03/29 by Thomas.Sarkanen
Make import data and thumbnail data transactional
#jira UE-41579 - Undo not working for several Asset Details options in Skeletal Mesh editor (Persona)
Change 3369609 on 2017/03/29 by Thomas.Sarkanen
Montages are now correctly initialized when created
They can be used straight away without first opening them in the montage edtior.
Moved initialization of composite sections from SMontageEditor to AnimMontageFactory.
#jira UE-41219 - Animation montages created via Right click Create montage, that aren't opened in persona will not animate when used in an AnimBP
Change 3369610 on 2017/03/29 by Thomas.Sarkanen
Fixed anim class being set by name, causing duplicate-named anim BPs to be incorrectly resolved
#jira UE-39833 - SkelMesh Component > Anim Class does not handle identical AnimBP names
Change 3369647 on 2017/03/29 by Ori.Cohen
Fix mass debug not working when moving components in the editor.
#JIRA UE-43437
Change 3369875 on 2017/03/29 by Ori.Cohen
Added the call into overlap instead of computePenetration when possible. There are edge cases that exist when computePenetration returns false but overlap returns true. Originally we were using computePenetration for all overlaps to make it consistent. However, computePenetration doesn't handle trimeshes correctly in certain cases. The reason for this is so that we can at least resolve a known issue with overlap events with complex collision. Nvidia may give us a flag for computePenetration to not do back-face culling which would give us a more consistent result.
#JIRA UE-25923
Change 3370144 on 2017/03/29 by Lina.Halper
Fix on the retargeting child anim BP
#rb: Martin.Wilson
#jira: UE-39928
Change 3371480 on 2017/03/30 by James.Golding
Changes by BryanG at Nvidia required to get them up and running with plugins that override some skeletal mesh stuff.
#jira UE-42132
Change 3371484 on 2017/03/30 by Thomas.Sarkanen
We now propagate thread safety flags to child Animation Blueprints
Change 3371486 on 2017/03/30 by Thomas.Sarkanen
Fixed crash and effector selection issues for two bone IK
Crash occured when selecting the root bone as the end of the chain.
Viewport selection was not working at all as we werent creating any selection proxy actors any more.
Change 3371497 on 2017/03/30 by Thomas.Sarkanen
Added warning when Sequencer tries to write to properties that have changed type
#jira UE-42098 - Sequencer writes rotation data to transform properties, causes assert
Change 3371614 on 2017/03/30 by Martin.Wilson
Clean up deprecated property value after load so we dont get extra anim blueprint references
#jira UE-42501
Change 3371619 on 2017/03/30 by James.Golding
Fix CIS by removing unneeded UNREALED_API from FImportSkeletalMeshArgs
Change 3372452 on 2017/03/30 by Jon.Nabozny
Add flag to CharacterMovementComponent to determine whether or not character should Sweep while using NavWalking, instead of relying on GenerateOverlaps flag.
#jira UE-36546
Change 3373043 on 2017/03/30 by Lina.Halper
- Consolidating to FastLerp to simply code
- Added comment on FastLerp as the result is not normalized
#rb: Michael.Noland, David.Hill
Change 3373292 on 2017/03/30 by Jeff.Farris
Made Actor.DispatchPhysicsCollisionHit virtual.
(Copied CL 3261103 from Robo Recall to Dev-AnimPhys)
Change 3373293 on 2017/03/30 by Jeff.Farris
Added PhysicalAnimationComponent.GetBodyTargetTransform
(Copied 3256175 from RoboRecall to Dev-AnimPhys)
Change 3373318 on 2017/03/30 by Jeff.Farris
Added option for components to opt out of physics impulses on damage.
(Copied CL 3282585 from RoboRecall to Dev-AnimPhys)
Change 3374064 on 2017/03/31 by Thomas.Sarkanen
Renaming curves in animations is now saved properly
Guids were not being set, so loading code obliterated the rename after an editor restart
#jira UE-40582 - Curve name is not updated when user changes it in persona editor.
Change 3374175 on 2017/03/31 by Thomas.Sarkanen
Two bone IK UI consistency fixes
Completely removed all bone select actors. They have a terrible UX anyway.
We now rely only on our custom hit proxy and use a unified path to generate effector locations to draw and manipulate.
#jira UE-42359 - Two Bone IK modifying effector location from viewport when bone is not set
Change 3374216 on 2017/03/31 by Martin.Wilson
Clear raw curve data during cooking + change Paragon game code so that it reads from the compressed curve data on Anim Sequences, not the raw data
#jira UE-37897
Change 3374253 on 2017/03/31 by Thomas.Sarkanen
Supplementary fix to CL 3371497
Adding name exposure for property types that we support
Change 3374298 on 2017/03/31 by Jeff.Farris
Code change from nVidia that improves physX perf (afterIntegration time).
(Copied CL 3302239 from Robo Recall to Dev-AnimPhys)
Change 3374432 on 2017/03/31 by Lina.Halper
Make sure AcitveBoneIndices contains parent
#jira: UE-14597
#rb: Martin.Wilson
#code review: Benn.Gallagher, Alexis.Matte, James.Golding
Change 3374836 on 2017/03/31 by Jon.Nabozny
Fixup hits returned before start of trace in raycast_capsule.
This change is copied from CL-3297212
#jira UE-42532
Change 3375195 on 2017/03/31 by Lina.Halper
resave animation sequence for increasing info to warning
#code review: Thomas.Sarkanen
#jira: UE-40643
Change 3375282 on 2017/03/31 by Lina.Halper
Fix odin content for animation : resave animation sequence for increasing info to warning
#code review: Thomas.Sarkanen
#jira: UE-40643
Change 3375288 on 2017/03/31 by Lina.Halper
reverting code of degrading warning to info to avoid warning
#jira: UE-40643
Change 3375865 on 2017/04/01 by Lina.Halper
fix build error
Change 3375868 on 2017/04/01 by Lina.Halper
fix build warning on shadow var
#code review: Thomas.Sarkanen
Change 3376283 on 2017/04/03 by Thomas.Sarkanen
Reworked, more generic property path handling in object change listener
This allows all paths (auto vs manual key) to use the same code path, as well as regularizing the special-case handling of structs and arrays (and combinations thereof).
The gist of the new implementation is to traverse the property path until we come across any property that satisfies our crirtera (exposed function, Interp flag etc.)
Tweaked PropertyHandleToPropertyPath to correctly handle the slightly different way FPropertyNodes are arranged inside IPropertyHandle chains.
IPropertyHandle chains contain arrays in a manner designed for display in the property editor, e.g. Container.Array.Array[ArrayIndex].StructInner. We need to collapse adjacent array properties as we are looking for Container.Array[ArrayIndex].StructInner to form a well-formed 'property path'.
Small tweak to FPropertyChangedParams::GetPropertyValue. This is to handle property paths that end in an array (e.g. Struct.Array[0]).
#jira UE-42271 - Pressing enter while the spine is in IK doesn't set any keys
Change 3376320 on 2017/04/03 by Benn.Gallagher
Merging from OR39 - Fix for clothing perf regressions due to LOD switching leaving simulation enties in the clothing solver
#jira OR-36926
Change 3376413 on 2017/04/03 by Benn.Gallagher
Merge from OR - Fixes to stability due to component space being the simulation space, games like Paragon treat the mesh and component transforms differently and cause issues with added energy in the system.
#jira OR-36927
Change 3376421 on 2017/04/03 by Benn.Gallagher
Missed file from OR cloth fixes merge
Change 3376456 on 2017/04/03 by Lina.Halper
Resave fortnite animation to remove warning
#rb: none
Change 3376479 on 2017/04/03 by Jon.Nabozny
Touch PhysXLibs to ensure physx links properly.
(Needed for CL-3374836)
Change 3376610 on 2017/04/03 by Martin.Wilson
Fix for crash when reimporting lodded mesh with virtual bones
#jira UE-43557
Change 3376618 on 2017/04/03 by Jurre.deBaare
Mesh Paint decrement rate is too slow when used with hotkeys
#fix change way we increase/decrease brush value
#jira UE-43402
Change 3376650 on 2017/04/03 by Benn.Gallagher
Converted clothing asset editor warnings into toasts + logs so they are more discoverable by the user.
#jira UE-41739
Change 3376771 on 2017/04/03 by Benn.Gallagher
Fixed clothing selection dropdowns to no longer get out of sync with actual state (if the binding fails it falls back to the "None" selection correctly internally)
#jira UE-41737
Change 3378117 on 2017/04/04 by Thomas.Sarkanen
Prevented ensure by reverting to default unit vectors if zero-sized lookat/lookup vectors are specified
Also added a warning to inform users of the issue.
#jira UE-43360 - Enabling Use LookUp Axis causes handled ensure to occur
Change 3378118 on 2017/04/04 by Thomas.Sarkanen
Fix 2-bone IK flickering
First changed non-triangular range check to be >= instead of >. Also removed fallback to doubled-back as this singularity also occurs at min stretch + float epsilon (which caused the flicker). We are OK to call ACos with out-of-range values as it clamps internally and the subsequent calculations work in these degenerate cases.
#jira UE-43525 - Mesh Flicker when Two Bone IK is stretched
Change 3378192 on 2017/04/04 by Benn.Gallagher
Trivial fix to clothing dropdowns to unbind clothing assets when switching
Change 3378206 on 2017/04/04 by Thomas.Sarkanen
Fix IncludeTool static analysis errors
Traced this back to the checkin that moved advanced preview scene into its own module. Further refined this to be the dependency on SharedSettingsWidgets. Simplest solution was to move the details customization back into the DetailsCustomizations module.
#jira UE-43563 - //UE4/Dev-AnimPhys: Compile IncludeTool Static analysis Win64 completed with 1 error
Change 3378207 on 2017/04/04 by Thomas.Sarkanen
Fix static analysis warning
Change 3378267 on 2017/04/04 by Benn.Gallagher
Disabled "Accurate" wind mode selection for 4.16 by hiding enum option for windmode. Looks like there are some simulation issues that need resolved. Wind will act as it always has for 4.16.
Change 3378268 on 2017/04/04 by Benn.Gallagher
Fixed bounds calculation on clothing to stop dissapearances or flickering at the edge of the screen.
#jira UE-40407
Change 3378342 on 2017/04/04 by Jurre.deBaare
Bone LOD preview doesn't get update if change removed bones array directly in Skeletalmesh editor
#fix ensure that we update the skeleton tree when changes to the bones are made
#misc made sure the reapply button its visibility is dynamic
#misc made sure we always re-add previously removed bones when necessary
#jira UE-40500
Change 3378374 on 2017/04/04 by Thomas.Sarkanen
Fixed animation not working for dynamically-bound wheeled-vehicle anim instances
Vehicle anim instance now looks for a wheeled vehicle component when it initializes.
#jira UE-41048 - Set Anim Instance Class no longer works with Wheeled Vehicle Pawns
Change 3378518 on 2017/04/04 by Jon.Nabozny
Fix jump height becoming frame dependent when JumpMaxHoldTime > 0.
#jira UE-23695
Change 3378538 on 2017/04/04 by Martin.Wilson
Speculative fix for unreproducable crash on loading animations
#jira OR-37157
Change 3378592 on 2017/04/04 by Jurre.deBaare
Mesh painting tools not working outside of QAGame
#fix required a direct loadmodule call
Change 3378622 on 2017/04/04 by Jurre.deBaare
CIS shadow variable fix
Change 3378742 on 2017/04/04 by Thomas.Sarkanen
Fixed crash entering PIE in Orion
Change 3378907 on 2017/04/04 by Benn.Gallagher
Re-added wind adaptiive effects to legacy wind path.
Fixed math error in damping calculations (log2/loge).
#jira UE-42044
Change 3379240 on 2017/04/04 by Jon.Nabozny
Fix SkeletalMeshComponent GetWeldedBodies not returning actual Skeletal Bodies
Change 3379415 on 2017/04/04 by Jon.Nabozny
Fix Skeletal Meshes imported with non-identity transform from reapplying transform when simulation is enabled / disabled.
#JIRA UE-32598
Change 3379502 on 2017/04/04 by Lina.Halper
Mirroring issue with flipping rotation due to not counting scale
#jira: UE-33646, UE-34489
#rb: Ori.Cohen
#code review: Zak.Middleton
Change 3380544 on 2017/04/05 by Thomas.Sarkanen
Fix warning spam when playing back UMG sequences animating visibility
Reduced runtime overhead to a simple size check. This catches 90% of problem issues with much less runtime overhead. It would be well worth getting an FName-based type check working at some point, although we would need speciall case enum handling.
Also removed message log usage in shipping/test builds.
#jira UE-43621 - Large number of Sequencer warnings occur after opening Paragon in Pie - Property type mismatch for property 'Visibility'. Expected 'uint8', found 'ESlateVisibility'.
Change 3380605 on 2017/04/05 by Benn.Gallagher
Fix clothing simulation to correctly index a master pose component for clothing pose data. Fixes integration blocking crash in UT when picking up the flag which sets a master pose mid-game.
#jira UE-43624
Change 3381025 on 2017/04/05 by Jon.Nabozny
Change ensure in UpdateKinematicBonesToAnim to ensureMsgf so we can track down potential content issues.
Change 3381475 on 2017/04/05 by Lina.Halper
Fix crash on creating montage and setting slot node
#jira: UE-43698
#rb: Ori.Cohen
Change 3381558 on 2017/04/05 by Lina.Halper
Better clean up of flipping issue of quaternion issue
#jira: UE-33646, UE-34489
#rb: Zak.Middleton
Change 3381789 on 2017/04/05 by Jon.Nabozny
Revert InitAnim changes from CL-3379415 to fix cook warnings.
(Will have proper fix for 4.17 instead).
Change 3381978 on 2017/04/05 by Aaron.McLeran
#jira UE-43654 Fixing oculus audio SDK sample rate issue
Change 3383181 on 2017/04/06 by Lina.Halper
Remove copy right of Dual quaternion since we no longer uses
#code review:Leslie.Nivison
Change 3383283 on 2017/04/06 by Ori.Cohen
Fixed missing invalidation for body setup when modifying materials
#JIRA UE-43680
Change 3383602 on 2017/04/06 by Lina.Halper
Fixed scroller in retargeting window
#jira: UE-43736
Change 3384369 on 2017/04/07 by Jurre.deBaare
Wrong bone is sometimes highlighted in skeleton editor
#fix new behaviour caused the user to try and select a bone if we didn't find on through hit proxies
#jira UE-43735
Change 3384744 on 2017/04/07 by Jon.Nabozny
Fix body rotation being killed on load.
#JIRA UE-43771
[CL 3385232 by Thomas Sarkanen in Main branch]
2017-04-07 16:51:51 -04:00
void FCollisionProfileDetails : : FCollisionProfileData : : Save ( UCollisionProfile * Profile )
2014-04-02 18:09:23 -04:00
{
Profiles = Profile - > Profiles ;
DefaultChannelResponses = Profile - > DefaultChannelResponses ;
EditProfiles = Profile - > EditProfiles ;
}
2014-03-14 14:13:41 -04:00
//=====================================================================================
# undef LOCTEXT_NAMESPACE
# undef RowWidth_Customization
2015-01-30 10:13:53 -05: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
END_SLATE_FUNCTION_BUILD_OPTIMIZATION