2016-01-07 08:17:16 -05:00
// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.
2014-03-14 14:13:41 -04:00
# include "NetworkFileSystemPrivatePCH.h"
# include "PackageName.h"
# include "TargetPlatform.h"
/* FNetworkFileServerClientConnection structors
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2014-06-12 17:02:52 -04:00
FNetworkFileServerClientConnection : : FNetworkFileServerClientConnection ( const FFileRequestDelegate & InFileRequestDelegate ,
2014-04-23 18:33:50 -04:00
const FRecompileShadersDelegate & InRecompileShadersDelegate , const TArray < ITargetPlatform * > & InActiveTargetPlatforms )
2014-03-14 14:13:41 -04:00
: LastHandleId ( 0 )
, Sandbox ( NULL )
2014-04-23 18:33:50 -04:00
, ActiveTargetPlatforms ( InActiveTargetPlatforms )
2014-03-14 14:13:41 -04:00
{
if ( InFileRequestDelegate . IsBound ( ) )
{
FileRequestDelegate = InFileRequestDelegate ;
}
if ( InRecompileShadersDelegate . IsBound ( ) )
{
RecompileShadersDelegate = InRecompileShadersDelegate ;
}
}
FNetworkFileServerClientConnection : : ~ FNetworkFileServerClientConnection ( )
{
// close all the files the client had opened through us when the client disconnects
for ( TMap < uint64 , IFileHandle * > : : TIterator It ( OpenFiles ) ; It ; + + It )
{
delete It . Value ( ) ;
}
delete Sandbox ;
Sandbox = NULL ;
}
/* FStreamingNetworkFileServerConnection implementation
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void FNetworkFileServerClientConnection : : ConvertClientFilenameToServerFilename ( FString & FilenameToConvert )
{
if ( FilenameToConvert . StartsWith ( ConnectedEngineDir ) )
{
FilenameToConvert = FilenameToConvert . Replace ( * ConnectedEngineDir , * ( FPaths : : EngineDir ( ) ) ) ;
}
else if ( FilenameToConvert . StartsWith ( ConnectedGameDir ) )
{
if ( FPaths : : IsProjectFilePathSet ( ) )
{
FilenameToConvert = FilenameToConvert . Replace ( * ConnectedGameDir , * ( FPaths : : GetPath ( FPaths : : GetProjectFilePath ( ) ) + TEXT ( " / " ) ) ) ;
}
else
{
# if !IS_PROGRAM
// UnrealFileServer has a GameDir of ../../../Engine/Programs/UnrealFileServer.
// We do *not* want to replace the directory in that case.
FilenameToConvert = FilenameToConvert . Replace ( * ConnectedGameDir , * ( FPaths : : GameDir ( ) ) ) ;
# endif
}
}
}
2014-05-29 17:27:31 -04:00
/**
* Fixup sandbox paths to match what package loading will request on the client side . e . g .
* Sandbox path : " ../../../Elemental/Content/Elemental/Effects/FX_Snow_Cracks/Crack_02/Materials/M_SnowBlast.uasset ->
* client path : " ../../../Samples/Showcases/Elemental/Content/Elemental/Effects/FX_Snow_Cracks/Crack_02/Materials/M_SnowBlast.uasset "
* This ensures that devicelocal - cached files will be properly timestamp checked before deletion .
*/
2014-11-19 14:20:49 -05:00
static TMap < FString , FDateTime > FixupSandboxPathsForClient ( FSandboxPlatformFile * Sandbox , const TMap < FString , FDateTime > & SandboxPaths , const FString & LocalEngineDir , const FString & LocalGameDir , bool bLowerCaseFiles )
2014-05-29 17:27:31 -04:00
{
TMap < FString , FDateTime > FixedFiletimes ;
2015-06-18 17:27:24 -04:00
FString SandboxEngine = Sandbox - > ConvertToSandboxPath ( * LocalEngineDir ) ;
2015-06-22 16:17:52 -04:00
if ( SandboxEngine . EndsWith ( TEXT ( " / " ) , ESearchCase : : CaseSensitive ) = = false )
2015-06-18 17:27:24 -04:00
{
SandboxEngine + = TEXT ( " / " ) ;
}
2014-05-29 17:27:31 -04:00
// we need to add an extra bit to the game path to make the sandbox convert it correctly (investigate?)
// @todo: double check this
FString SandboxGame = Sandbox - > ConvertToSandboxPath ( * ( LocalGameDir + TEXT ( " a.txt " ) ) ) . Replace ( TEXT ( " a.txt " ) , TEXT ( " " ) ) ;
2015-06-18 17:27:24 -04:00
2014-05-29 17:27:31 -04:00
// since the sandbox remaps from A/B/C to C, and the client has no idea of this, we need to put the files
// into terms of the actual LocalGameDir, which is all that the client knows about
for ( TMap < FString , FDateTime > : : TConstIterator It ( SandboxPaths ) ; It ; + + It )
{
FString Fixed = Sandbox - > ConvertToSandboxPath ( * It . Key ( ) ) ;
Fixed = Fixed . Replace ( * SandboxEngine , * LocalEngineDir ) ;
Fixed = Fixed . Replace ( * SandboxGame , * LocalGameDir ) ;
2014-11-19 14:20:49 -05:00
if ( bLowerCaseFiles )
{
Fixed = Fixed . ToLower ( ) ;
}
2014-05-29 17:27:31 -04:00
FixedFiletimes . Add ( Fixed , It . Value ( ) ) ;
}
return FixedFiletimes ;
}
2014-03-14 14:13:41 -04:00
void FNetworkFileServerClientConnection : : ConvertServerFilenameToClientFilename ( FString & FilenameToConvert )
{
if ( FilenameToConvert . StartsWith ( FPaths : : EngineDir ( ) ) )
{
FilenameToConvert = FilenameToConvert . Replace ( * ( FPaths : : EngineDir ( ) ) , * ConnectedEngineDir ) ;
}
else if ( FPaths : : IsProjectFilePathSet ( ) )
{
if ( FilenameToConvert . StartsWith ( FPaths : : GetPath ( FPaths : : GetProjectFilePath ( ) ) ) )
{
FilenameToConvert = FilenameToConvert . Replace ( * ( FPaths : : GetPath ( FPaths : : GetProjectFilePath ( ) ) + TEXT ( " / " ) ) , * ConnectedGameDir ) ;
}
}
# if !IS_PROGRAM
else if ( FilenameToConvert . StartsWith ( FPaths : : GameDir ( ) ) )
{
// UnrealFileServer has a GameDir of ../../../Engine/Programs/UnrealFileServer.
// We do *not* want to replace the directory in that case.
FilenameToConvert = FilenameToConvert . Replace ( * ( FPaths : : GameDir ( ) ) , * ConnectedGameDir ) ;
}
# endif
}
2014-03-15 01:14:25 -04:00
static FCriticalSection SocketCriticalSection ;
2014-08-08 19:46:54 -04:00
bool FNetworkFileServerClientConnection : : ProcessPayload ( FArchive & Ar )
2014-03-14 14:13:41 -04:00
{
2014-08-08 19:46:54 -04:00
FBufferArchive Out ;
2014-07-23 15:31:40 -04:00
bool Result = true ;
2014-03-14 14:13:41 -04:00
// first part of the payload is always the command
uint32 Cmd ;
Ar < < Cmd ;
UE_LOG ( LogFileServer , Verbose , TEXT ( " Processing payload with Cmd %d " ) , Cmd ) ;
// what type of message is this?
NFS_Messages : : Type Msg = NFS_Messages : : Type ( Cmd ) ;
// make sure the first thing is GetFileList which initializes the game/platform
2014-06-17 20:48:04 -04:00
checkf ( Msg = = NFS_Messages : : GetFileList | | Msg = = NFS_Messages : : Heartbeat | | Sandbox ! = NULL , TEXT ( " The first client message MUST be GetFileList, not %d " ) , ( int32 ) Msg ) ;
2014-03-14 14:13:41 -04:00
// process the message!
bool bSendUnsolicitedFiles = false ;
{
2014-03-15 01:14:25 -04:00
FScopeLock SocketLock ( & SocketCriticalSection ) ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
switch ( Msg )
{
case NFS_Messages : : OpenRead :
ProcessOpenFile ( Ar , Out , false ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : OpenWrite :
ProcessOpenFile ( Ar , Out , true ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : Read :
ProcessReadFile ( Ar , Out ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : Write :
ProcessWriteFile ( Ar , Out ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : Seek :
ProcessSeekFile ( Ar , Out ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : Close :
ProcessCloseFile ( Ar , Out ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : MoveFile :
ProcessMoveFile ( Ar , Out ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : DeleteFile :
ProcessDeleteFile ( Ar , Out ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : GetFileInfo :
ProcessGetFileInfo ( Ar , Out ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : CopyFile :
ProcessCopyFile ( Ar , Out ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : SetTimeStamp :
ProcessSetTimeStamp ( Ar , Out ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : SetReadOnly :
ProcessSetReadOnly ( Ar , Out ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : CreateDirectory :
ProcessCreateDirectory ( Ar , Out ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : DeleteDirectory :
ProcessDeleteDirectory ( Ar , Out ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : DeleteDirectoryRecursively :
ProcessDeleteDirectoryRecursively ( Ar , Out ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : ToAbsolutePathForRead :
ProcessToAbsolutePathForRead ( Ar , Out ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : ToAbsolutePathForWrite :
ProcessToAbsolutePathForWrite ( Ar , Out ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : ReportLocalFiles :
ProcessReportLocalFiles ( Ar , Out ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : GetFileList :
2014-07-23 15:31:40 -04:00
Result = ProcessGetFileList ( Ar , Out ) ;
2014-03-15 01:14:25 -04:00
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : Heartbeat :
ProcessHeartbeat ( Ar , Out ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : SyncFile :
ProcessSyncFile ( Ar , Out ) ;
bSendUnsolicitedFiles = true ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
case NFS_Messages : : RecompileShaders :
ProcessRecompileShaders ( Ar , Out ) ;
break ;
2014-03-14 14:13:41 -04:00
2014-03-15 01:14:25 -04:00
default :
UE_LOG ( LogFileServer , Error , TEXT ( " Bad incomming message tag (%d). " ) , ( int32 ) Msg ) ;
}
2014-03-14 14:13:41 -04:00
}
2014-08-08 19:46:54 -04:00
2014-03-14 14:13:41 -04:00
// send back a reply if the command wrote anything back out
2014-08-08 19:46:54 -04:00
if ( Out . Num ( ) & & Result )
2014-03-14 14:13:41 -04:00
{
Copying //UE4/Release-Staging-4.11 to //UE4/Main (Source: //UE4/Release-Staging-4.11 @ 2941426, //UE4/Release-4.11 @ 2927265)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2910079 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28293 Reworded some Sentences
Change 2910157 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28240 Rebuilt Lighting for Sanctuary
Change 2910317 on 2016/03/15 by Ben.Marsh
Fix crash trying to print out a message explaining that you need to install the Visual Studio 2015 toolchain, if the Visual Studio 2015 toolchain is not installed!
Change 2910425 on 2016/03/15 by Ori.Cohen
Fix crash and incorrect behavior when setting physical material on a welded body.
#JIRA UE-28399
#rb Marc.Audy
Change 2910525 on 2016/03/15 by Ori.Cohen
Fix player capsule not spawning at the right place due to float precision issues.
#JIRA UE-28438
#rb Zak.Middleton
Change 2910595 on 2016/03/15 by Chris.Babcock
Fixed issue with missing event location paired with IE_Pressed if IE_DoubleClick generated
#jira UE-28051
#ue4
#codereview Marc.Audy
Change 2911442 on 2016/03/16 by Andrew.Rodham
Sequencer: Fixed frame grabbers where hardware mapped surfaces to memory of a different stride
#jira UE-28434
Change 2911596 on 2016/03/16 by andrew.porter
Test content for blueprint vertex painting
#jira UE-24473
Change 2911860 on 2016/03/16 by Jamie.Dale
Allowed SViewport to (once again) be able to use non-pre-multiplied alpha blending
SViewport now has an PreMultipliedAlpha argument (default true), which can control whether to use pre-multiplied alpha when blending is enabled (blending is disabled by default). Note: This is a change in behavior from 4.10, as non-pre-multiplied alpha blending used to be the default, but pre-multiplied alpha blending better supports the pipeline used through Slate.
This change also cleans up the use of bool parameters in the FSlateDrawElement::MakeX functions to control the render behavior, instead favoring use of advanced ESlateDrawEffect flags.
API Breaking Changes
- FSlateDrawElement::MakeGradient no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInAllowBlending bool, instead pass ESlateDrawEffect::NoBlending as part of InDrawEffects to disable blending.
#jira UE-26797
Change 2912345 on 2016/03/16 by Olaf.Piesche
Removing the check that causes UE-28441, duplicating beam type data module from highest LOD in Cascade causes crash. The beam data module is the only one that explicitly checks to make sure it's always shared across LOD levels; there's no obvious reasons why duplicating beam data modules shouldn't be possible.
#codereview simon.tovey
#jira UE-28441
Change 2912526 on 2016/03/16 by Steve.Robb
Fix uninitialized variables.
#codereview robert.manuszewski
#jira UE-28391
Change 2913114 on 2016/03/17 by Steve.Robb
Fixed some private properties which caused UHT errors.
#codereview robert.manuszewski
#jira UE-28059
Change 2913295 on 2016/03/17 by Richard.TalbotWatkin
Replicated from Dev-Editor CL 2913224
Disallow assets from being deleted if PIE is active. This prevents various troubles which can occur when PIE is referencing asset objects.
#jira UE-12387 - [CrashReport] Crash when deleting assets needed for template
#RB Nick.Darnell, Frank.Fella
Change 2913310 on 2016/03/17 by Nick.Shin
merging from //UE4/Dev-Platform to //UE4/Release-4.11
--- original commit CL: #2913300 message ---
corrected VS 2015 websocket lib to look at the right offset
it is currently a high risk change to just update the libwebsocket wholesale for release-4.11.
this change is the most minimum invasive change with a lot of deep analysis (details will be put in jira: # UEPLAT-1221).
this fix will also be pushed up to release-4.11
#jira UE-22166 - HTML5 Cook on the fly will launch and then close browser
#jira UE-22513 - HTTP Network File System crashes randomly.
#jira UE-28003 - Fail to QuickLaunch HTML5 through UnrealFrontEnd
Change 2913593 on 2016/03/17 by Mark.Satterthwaite
For non-debug builds silence the warning about no deth/stencil when shader writes to depth in MetalRHI - the RHI implementation will create a temporary D/S buffer to cope but really this needs to be properly addressed elsewhere.
#jira UE-28491
Change 2913655 on 2016/03/17 by Taizyd.Korambayil
#jira UE-28492 Rebuilt Lighting For the Samples Listed
Change 2914025 on 2016/03/17 by Olaf.Piesche
Make sure ST primitives are added to NST draw list if in shader complexity mode
#codereview simon.tovey
#jira UE-28471
Change 2914027 on 2016/03/17 by Nick.Shin
[CL 2941462 by Ben Marsh in Main branch]
2016-04-12 17:04:39 -04:00
int32 NumUnsolictedFiles = 0 ;
2014-08-08 19:46:54 -04:00
if ( bSendUnsolicitedFiles )
2014-06-18 15:52:39 -04:00
{
Copying //UE4/Release-Staging-4.11 to //UE4/Main (Source: //UE4/Release-Staging-4.11 @ 2941426, //UE4/Release-4.11 @ 2927265)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2910079 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28293 Reworded some Sentences
Change 2910157 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28240 Rebuilt Lighting for Sanctuary
Change 2910317 on 2016/03/15 by Ben.Marsh
Fix crash trying to print out a message explaining that you need to install the Visual Studio 2015 toolchain, if the Visual Studio 2015 toolchain is not installed!
Change 2910425 on 2016/03/15 by Ori.Cohen
Fix crash and incorrect behavior when setting physical material on a welded body.
#JIRA UE-28399
#rb Marc.Audy
Change 2910525 on 2016/03/15 by Ori.Cohen
Fix player capsule not spawning at the right place due to float precision issues.
#JIRA UE-28438
#rb Zak.Middleton
Change 2910595 on 2016/03/15 by Chris.Babcock
Fixed issue with missing event location paired with IE_Pressed if IE_DoubleClick generated
#jira UE-28051
#ue4
#codereview Marc.Audy
Change 2911442 on 2016/03/16 by Andrew.Rodham
Sequencer: Fixed frame grabbers where hardware mapped surfaces to memory of a different stride
#jira UE-28434
Change 2911596 on 2016/03/16 by andrew.porter
Test content for blueprint vertex painting
#jira UE-24473
Change 2911860 on 2016/03/16 by Jamie.Dale
Allowed SViewport to (once again) be able to use non-pre-multiplied alpha blending
SViewport now has an PreMultipliedAlpha argument (default true), which can control whether to use pre-multiplied alpha when blending is enabled (blending is disabled by default). Note: This is a change in behavior from 4.10, as non-pre-multiplied alpha blending used to be the default, but pre-multiplied alpha blending better supports the pipeline used through Slate.
This change also cleans up the use of bool parameters in the FSlateDrawElement::MakeX functions to control the render behavior, instead favoring use of advanced ESlateDrawEffect flags.
API Breaking Changes
- FSlateDrawElement::MakeGradient no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInAllowBlending bool, instead pass ESlateDrawEffect::NoBlending as part of InDrawEffects to disable blending.
#jira UE-26797
Change 2912345 on 2016/03/16 by Olaf.Piesche
Removing the check that causes UE-28441, duplicating beam type data module from highest LOD in Cascade causes crash. The beam data module is the only one that explicitly checks to make sure it's always shared across LOD levels; there's no obvious reasons why duplicating beam data modules shouldn't be possible.
#codereview simon.tovey
#jira UE-28441
Change 2912526 on 2016/03/16 by Steve.Robb
Fix uninitialized variables.
#codereview robert.manuszewski
#jira UE-28391
Change 2913114 on 2016/03/17 by Steve.Robb
Fixed some private properties which caused UHT errors.
#codereview robert.manuszewski
#jira UE-28059
Change 2913295 on 2016/03/17 by Richard.TalbotWatkin
Replicated from Dev-Editor CL 2913224
Disallow assets from being deleted if PIE is active. This prevents various troubles which can occur when PIE is referencing asset objects.
#jira UE-12387 - [CrashReport] Crash when deleting assets needed for template
#RB Nick.Darnell, Frank.Fella
Change 2913310 on 2016/03/17 by Nick.Shin
merging from //UE4/Dev-Platform to //UE4/Release-4.11
--- original commit CL: #2913300 message ---
corrected VS 2015 websocket lib to look at the right offset
it is currently a high risk change to just update the libwebsocket wholesale for release-4.11.
this change is the most minimum invasive change with a lot of deep analysis (details will be put in jira: # UEPLAT-1221).
this fix will also be pushed up to release-4.11
#jira UE-22166 - HTML5 Cook on the fly will launch and then close browser
#jira UE-22513 - HTTP Network File System crashes randomly.
#jira UE-28003 - Fail to QuickLaunch HTML5 through UnrealFrontEnd
Change 2913593 on 2016/03/17 by Mark.Satterthwaite
For non-debug builds silence the warning about no deth/stencil when shader writes to depth in MetalRHI - the RHI implementation will create a temporary D/S buffer to cope but really this needs to be properly addressed elsewhere.
#jira UE-28491
Change 2913655 on 2016/03/17 by Taizyd.Korambayil
#jira UE-28492 Rebuilt Lighting For the Samples Listed
Change 2914025 on 2016/03/17 by Olaf.Piesche
Make sure ST primitives are added to NST draw list if in shader complexity mode
#codereview simon.tovey
#jira UE-28471
Change 2914027 on 2016/03/17 by Nick.Shin
[CL 2941462 by Ben Marsh in Main branch]
2016-04-12 17:04:39 -04:00
int64 MaxMemoryAllowed = 50 * 1024 * 1024 ;
for ( const auto & Filename : UnsolictedFiles )
{
// get file timestamp and send it to client
FDateTime ServerTimeStamp = Sandbox - > GetTimeStamp ( * Filename ) ;
TArray < uint8 > Contents ;
// open file
int64 FileSize = Sandbox - > FileSize ( * Filename ) ;
if ( MaxMemoryAllowed > FileSize )
{
MaxMemoryAllowed - = FileSize ;
+ + NumUnsolictedFiles ;
}
}
2014-08-08 19:46:54 -04:00
Out < < NumUnsolictedFiles ;
}
Copying //UE4/Release-Staging-4.11 to //UE4/Main (Source: //UE4/Release-Staging-4.11 @ 2941426, //UE4/Release-4.11 @ 2927265)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2910079 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28293 Reworded some Sentences
Change 2910157 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28240 Rebuilt Lighting for Sanctuary
Change 2910317 on 2016/03/15 by Ben.Marsh
Fix crash trying to print out a message explaining that you need to install the Visual Studio 2015 toolchain, if the Visual Studio 2015 toolchain is not installed!
Change 2910425 on 2016/03/15 by Ori.Cohen
Fix crash and incorrect behavior when setting physical material on a welded body.
#JIRA UE-28399
#rb Marc.Audy
Change 2910525 on 2016/03/15 by Ori.Cohen
Fix player capsule not spawning at the right place due to float precision issues.
#JIRA UE-28438
#rb Zak.Middleton
Change 2910595 on 2016/03/15 by Chris.Babcock
Fixed issue with missing event location paired with IE_Pressed if IE_DoubleClick generated
#jira UE-28051
#ue4
#codereview Marc.Audy
Change 2911442 on 2016/03/16 by Andrew.Rodham
Sequencer: Fixed frame grabbers where hardware mapped surfaces to memory of a different stride
#jira UE-28434
Change 2911596 on 2016/03/16 by andrew.porter
Test content for blueprint vertex painting
#jira UE-24473
Change 2911860 on 2016/03/16 by Jamie.Dale
Allowed SViewport to (once again) be able to use non-pre-multiplied alpha blending
SViewport now has an PreMultipliedAlpha argument (default true), which can control whether to use pre-multiplied alpha when blending is enabled (blending is disabled by default). Note: This is a change in behavior from 4.10, as non-pre-multiplied alpha blending used to be the default, but pre-multiplied alpha blending better supports the pipeline used through Slate.
This change also cleans up the use of bool parameters in the FSlateDrawElement::MakeX functions to control the render behavior, instead favoring use of advanced ESlateDrawEffect flags.
API Breaking Changes
- FSlateDrawElement::MakeGradient no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInAllowBlending bool, instead pass ESlateDrawEffect::NoBlending as part of InDrawEffects to disable blending.
#jira UE-26797
Change 2912345 on 2016/03/16 by Olaf.Piesche
Removing the check that causes UE-28441, duplicating beam type data module from highest LOD in Cascade causes crash. The beam data module is the only one that explicitly checks to make sure it's always shared across LOD levels; there's no obvious reasons why duplicating beam data modules shouldn't be possible.
#codereview simon.tovey
#jira UE-28441
Change 2912526 on 2016/03/16 by Steve.Robb
Fix uninitialized variables.
#codereview robert.manuszewski
#jira UE-28391
Change 2913114 on 2016/03/17 by Steve.Robb
Fixed some private properties which caused UHT errors.
#codereview robert.manuszewski
#jira UE-28059
Change 2913295 on 2016/03/17 by Richard.TalbotWatkin
Replicated from Dev-Editor CL 2913224
Disallow assets from being deleted if PIE is active. This prevents various troubles which can occur when PIE is referencing asset objects.
#jira UE-12387 - [CrashReport] Crash when deleting assets needed for template
#RB Nick.Darnell, Frank.Fella
Change 2913310 on 2016/03/17 by Nick.Shin
merging from //UE4/Dev-Platform to //UE4/Release-4.11
--- original commit CL: #2913300 message ---
corrected VS 2015 websocket lib to look at the right offset
it is currently a high risk change to just update the libwebsocket wholesale for release-4.11.
this change is the most minimum invasive change with a lot of deep analysis (details will be put in jira: # UEPLAT-1221).
this fix will also be pushed up to release-4.11
#jira UE-22166 - HTML5 Cook on the fly will launch and then close browser
#jira UE-22513 - HTTP Network File System crashes randomly.
#jira UE-28003 - Fail to QuickLaunch HTML5 through UnrealFrontEnd
Change 2913593 on 2016/03/17 by Mark.Satterthwaite
For non-debug builds silence the warning about no deth/stencil when shader writes to depth in MetalRHI - the RHI implementation will create a temporary D/S buffer to cope but really this needs to be properly addressed elsewhere.
#jira UE-28491
Change 2913655 on 2016/03/17 by Taizyd.Korambayil
#jira UE-28492 Rebuilt Lighting For the Samples Listed
Change 2914025 on 2016/03/17 by Olaf.Piesche
Make sure ST primitives are added to NST draw list if in shader complexity mode
#codereview simon.tovey
#jira UE-28471
Change 2914027 on 2016/03/17 by Nick.Shin
[CL 2941462 by Ben Marsh in Main branch]
2016-04-12 17:04:39 -04:00
2014-08-08 19:46:54 -04:00
UE_LOG ( LogFileServer , Verbose , TEXT ( " Returning payload with %d bytes " ) , Out . Num ( ) ) ;
// send back a reply
Result & = SendPayload ( Out ) ;
Copying //UE4/Release-Staging-4.11 to //UE4/Main (Source: //UE4/Release-Staging-4.11 @ 2941426, //UE4/Release-4.11 @ 2927265)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2910079 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28293 Reworded some Sentences
Change 2910157 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28240 Rebuilt Lighting for Sanctuary
Change 2910317 on 2016/03/15 by Ben.Marsh
Fix crash trying to print out a message explaining that you need to install the Visual Studio 2015 toolchain, if the Visual Studio 2015 toolchain is not installed!
Change 2910425 on 2016/03/15 by Ori.Cohen
Fix crash and incorrect behavior when setting physical material on a welded body.
#JIRA UE-28399
#rb Marc.Audy
Change 2910525 on 2016/03/15 by Ori.Cohen
Fix player capsule not spawning at the right place due to float precision issues.
#JIRA UE-28438
#rb Zak.Middleton
Change 2910595 on 2016/03/15 by Chris.Babcock
Fixed issue with missing event location paired with IE_Pressed if IE_DoubleClick generated
#jira UE-28051
#ue4
#codereview Marc.Audy
Change 2911442 on 2016/03/16 by Andrew.Rodham
Sequencer: Fixed frame grabbers where hardware mapped surfaces to memory of a different stride
#jira UE-28434
Change 2911596 on 2016/03/16 by andrew.porter
Test content for blueprint vertex painting
#jira UE-24473
Change 2911860 on 2016/03/16 by Jamie.Dale
Allowed SViewport to (once again) be able to use non-pre-multiplied alpha blending
SViewport now has an PreMultipliedAlpha argument (default true), which can control whether to use pre-multiplied alpha when blending is enabled (blending is disabled by default). Note: This is a change in behavior from 4.10, as non-pre-multiplied alpha blending used to be the default, but pre-multiplied alpha blending better supports the pipeline used through Slate.
This change also cleans up the use of bool parameters in the FSlateDrawElement::MakeX functions to control the render behavior, instead favoring use of advanced ESlateDrawEffect flags.
API Breaking Changes
- FSlateDrawElement::MakeGradient no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInAllowBlending bool, instead pass ESlateDrawEffect::NoBlending as part of InDrawEffects to disable blending.
#jira UE-26797
Change 2912345 on 2016/03/16 by Olaf.Piesche
Removing the check that causes UE-28441, duplicating beam type data module from highest LOD in Cascade causes crash. The beam data module is the only one that explicitly checks to make sure it's always shared across LOD levels; there's no obvious reasons why duplicating beam data modules shouldn't be possible.
#codereview simon.tovey
#jira UE-28441
Change 2912526 on 2016/03/16 by Steve.Robb
Fix uninitialized variables.
#codereview robert.manuszewski
#jira UE-28391
Change 2913114 on 2016/03/17 by Steve.Robb
Fixed some private properties which caused UHT errors.
#codereview robert.manuszewski
#jira UE-28059
Change 2913295 on 2016/03/17 by Richard.TalbotWatkin
Replicated from Dev-Editor CL 2913224
Disallow assets from being deleted if PIE is active. This prevents various troubles which can occur when PIE is referencing asset objects.
#jira UE-12387 - [CrashReport] Crash when deleting assets needed for template
#RB Nick.Darnell, Frank.Fella
Change 2913310 on 2016/03/17 by Nick.Shin
merging from //UE4/Dev-Platform to //UE4/Release-4.11
--- original commit CL: #2913300 message ---
corrected VS 2015 websocket lib to look at the right offset
it is currently a high risk change to just update the libwebsocket wholesale for release-4.11.
this change is the most minimum invasive change with a lot of deep analysis (details will be put in jira: # UEPLAT-1221).
this fix will also be pushed up to release-4.11
#jira UE-22166 - HTML5 Cook on the fly will launch and then close browser
#jira UE-22513 - HTTP Network File System crashes randomly.
#jira UE-28003 - Fail to QuickLaunch HTML5 through UnrealFrontEnd
Change 2913593 on 2016/03/17 by Mark.Satterthwaite
For non-debug builds silence the warning about no deth/stencil when shader writes to depth in MetalRHI - the RHI implementation will create a temporary D/S buffer to cope but really this needs to be properly addressed elsewhere.
#jira UE-28491
Change 2913655 on 2016/03/17 by Taizyd.Korambayil
#jira UE-28492 Rebuilt Lighting For the Samples Listed
Change 2914025 on 2016/03/17 by Olaf.Piesche
Make sure ST primitives are added to NST draw list if in shader complexity mode
#codereview simon.tovey
#jira UE-28471
Change 2914027 on 2016/03/17 by Nick.Shin
[CL 2941462 by Ben Marsh in Main branch]
2016-04-12 17:04:39 -04:00
TArray < FString > UnprocessedUnsolictedFiles ;
UnprocessedUnsolictedFiles . Empty ( NumUnsolictedFiles ) ;
2014-08-08 19:46:54 -04:00
if ( bSendUnsolicitedFiles & & Result )
{
for ( int32 Index = 0 ; Index < NumUnsolictedFiles ; Index + + )
{
FBufferArchive OutUnsolicitedFile ;
PackageFile ( UnsolictedFiles [ Index ] , OutUnsolicitedFile ) ;
UE_LOG ( LogFileServer , Display , TEXT ( " Returning unsolicited file %s with %d bytes " ) , * UnsolictedFiles [ Index ] , OutUnsolicitedFile . Num ( ) ) ;
Result & = SendPayload ( OutUnsolicitedFile ) ;
}
Copying //UE4/Release-Staging-4.11 to //UE4/Main (Source: //UE4/Release-Staging-4.11 @ 2941426, //UE4/Release-4.11 @ 2927265)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2910079 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28293 Reworded some Sentences
Change 2910157 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28240 Rebuilt Lighting for Sanctuary
Change 2910317 on 2016/03/15 by Ben.Marsh
Fix crash trying to print out a message explaining that you need to install the Visual Studio 2015 toolchain, if the Visual Studio 2015 toolchain is not installed!
Change 2910425 on 2016/03/15 by Ori.Cohen
Fix crash and incorrect behavior when setting physical material on a welded body.
#JIRA UE-28399
#rb Marc.Audy
Change 2910525 on 2016/03/15 by Ori.Cohen
Fix player capsule not spawning at the right place due to float precision issues.
#JIRA UE-28438
#rb Zak.Middleton
Change 2910595 on 2016/03/15 by Chris.Babcock
Fixed issue with missing event location paired with IE_Pressed if IE_DoubleClick generated
#jira UE-28051
#ue4
#codereview Marc.Audy
Change 2911442 on 2016/03/16 by Andrew.Rodham
Sequencer: Fixed frame grabbers where hardware mapped surfaces to memory of a different stride
#jira UE-28434
Change 2911596 on 2016/03/16 by andrew.porter
Test content for blueprint vertex painting
#jira UE-24473
Change 2911860 on 2016/03/16 by Jamie.Dale
Allowed SViewport to (once again) be able to use non-pre-multiplied alpha blending
SViewport now has an PreMultipliedAlpha argument (default true), which can control whether to use pre-multiplied alpha when blending is enabled (blending is disabled by default). Note: This is a change in behavior from 4.10, as non-pre-multiplied alpha blending used to be the default, but pre-multiplied alpha blending better supports the pipeline used through Slate.
This change also cleans up the use of bool parameters in the FSlateDrawElement::MakeX functions to control the render behavior, instead favoring use of advanced ESlateDrawEffect flags.
API Breaking Changes
- FSlateDrawElement::MakeGradient no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInAllowBlending bool, instead pass ESlateDrawEffect::NoBlending as part of InDrawEffects to disable blending.
#jira UE-26797
Change 2912345 on 2016/03/16 by Olaf.Piesche
Removing the check that causes UE-28441, duplicating beam type data module from highest LOD in Cascade causes crash. The beam data module is the only one that explicitly checks to make sure it's always shared across LOD levels; there's no obvious reasons why duplicating beam data modules shouldn't be possible.
#codereview simon.tovey
#jira UE-28441
Change 2912526 on 2016/03/16 by Steve.Robb
Fix uninitialized variables.
#codereview robert.manuszewski
#jira UE-28391
Change 2913114 on 2016/03/17 by Steve.Robb
Fixed some private properties which caused UHT errors.
#codereview robert.manuszewski
#jira UE-28059
Change 2913295 on 2016/03/17 by Richard.TalbotWatkin
Replicated from Dev-Editor CL 2913224
Disallow assets from being deleted if PIE is active. This prevents various troubles which can occur when PIE is referencing asset objects.
#jira UE-12387 - [CrashReport] Crash when deleting assets needed for template
#RB Nick.Darnell, Frank.Fella
Change 2913310 on 2016/03/17 by Nick.Shin
merging from //UE4/Dev-Platform to //UE4/Release-4.11
--- original commit CL: #2913300 message ---
corrected VS 2015 websocket lib to look at the right offset
it is currently a high risk change to just update the libwebsocket wholesale for release-4.11.
this change is the most minimum invasive change with a lot of deep analysis (details will be put in jira: # UEPLAT-1221).
this fix will also be pushed up to release-4.11
#jira UE-22166 - HTML5 Cook on the fly will launch and then close browser
#jira UE-22513 - HTTP Network File System crashes randomly.
#jira UE-28003 - Fail to QuickLaunch HTML5 through UnrealFrontEnd
Change 2913593 on 2016/03/17 by Mark.Satterthwaite
For non-debug builds silence the warning about no deth/stencil when shader writes to depth in MetalRHI - the RHI implementation will create a temporary D/S buffer to cope but really this needs to be properly addressed elsewhere.
#jira UE-28491
Change 2913655 on 2016/03/17 by Taizyd.Korambayil
#jira UE-28492 Rebuilt Lighting For the Samples Listed
Change 2914025 on 2016/03/17 by Olaf.Piesche
Make sure ST primitives are added to NST draw list if in shader complexity mode
#codereview simon.tovey
#jira UE-28471
Change 2914027 on 2016/03/17 by Nick.Shin
[CL 2941462 by Ben Marsh in Main branch]
2016-04-12 17:04:39 -04:00
UnsolictedFiles . RemoveAt ( 0 , NumUnsolictedFiles ) ;
2014-06-12 17:02:52 -04:00
}
2014-06-18 15:52:39 -04:00
}
2014-03-14 14:13:41 -04:00
2014-06-12 17:02:52 -04:00
UE_LOG ( LogFileServer , Verbose , TEXT ( " Done Processing payload with Cmd %d Total Size sending %d " ) , Cmd , Out . TotalSize ( ) ) ;
2014-07-23 15:31:40 -04:00
return Result ;
2014-03-14 14:13:41 -04:00
}
void FNetworkFileServerClientConnection : : ProcessOpenFile ( FArchive & In , FArchive & Out , bool bIsWriting )
{
// Get filename
FString Filename ;
In < < Filename ;
bool bAppend = false ;
bool bAllowRead = false ;
if ( bIsWriting )
{
In < < bAppend ;
In < < bAllowRead ;
}
2014-08-08 19:46:54 -04:00
// todo: clients from the same ip address "could" be trying to write to the same file in the same sandbox (for example multiple windows clients)
// should probably have the sandbox write to separate files for each client
// not important for now
2014-03-14 14:13:41 -04:00
ConvertClientFilenameToServerFilename ( Filename ) ;
if ( bIsWriting )
{
// Make sure the directory exists...
Sandbox - > CreateDirectoryTree ( * ( FPaths : : GetPath ( Filename ) ) ) ;
}
TArray < FString > NewUnsolictedFiles ;
2014-04-23 16:44:02 -04:00
FileRequestDelegate . ExecuteIfBound ( Filename , ConnectedPlatformName , NewUnsolictedFiles ) ;
2014-03-14 14:13:41 -04:00
FDateTime ServerTimeStamp = Sandbox - > GetTimeStamp ( * Filename ) ;
int64 ServerFileSize = 0 ;
IFileHandle * File = bIsWriting ? Sandbox - > OpenWrite ( * Filename , bAppend , bAllowRead ) : Sandbox - > OpenRead ( * Filename ) ;
if ( ! File )
{
UE_LOG ( LogFileServer , Display , TEXT ( " Open request for %s failed for file %s. " ) , bIsWriting ? TEXT ( " Writing " ) : TEXT ( " Reading " ) , * Filename ) ;
ServerTimeStamp = FDateTime : : MinValue ( ) ; // if this was a directory, this will make sure it is not confused with a zero byte file
}
else
{
ServerFileSize = File - > Size ( ) ;
}
uint64 HandleId = + + LastHandleId ;
OpenFiles . Add ( HandleId , File ) ;
2014-07-23 15:31:40 -04:00
2014-03-14 14:13:41 -04:00
Out < < HandleId ;
Out < < ServerTimeStamp ;
Out < < ServerFileSize ;
}
void FNetworkFileServerClientConnection : : ProcessReadFile ( FArchive & In , FArchive & Out )
{
// Get Handle ID
uint64 HandleId = 0 ;
In < < HandleId ;
int64 BytesToRead = 0 ;
In < < BytesToRead ;
int64 BytesRead = 0 ;
IFileHandle * File = FindOpenFile ( HandleId ) ;
if ( File )
{
uint8 * Dest = ( uint8 * ) FMemory : : Malloc ( BytesToRead ) ;
if ( File - > Read ( Dest , BytesToRead ) )
{
BytesRead = BytesToRead ;
Out < < BytesRead ;
Out . Serialize ( Dest , BytesRead ) ;
}
else
{
Out < < BytesRead ;
}
FMemory : : Free ( Dest ) ;
}
else
{
Out < < BytesRead ;
}
}
void FNetworkFileServerClientConnection : : ProcessWriteFile ( FArchive & In , FArchive & Out )
{
// Get Handle ID
uint64 HandleId = 0 ;
In < < HandleId ;
int64 BytesWritten = 0 ;
IFileHandle * File = FindOpenFile ( HandleId ) ;
if ( File )
{
int64 BytesToWrite = 0 ;
In < < BytesToWrite ;
uint8 * Source = ( uint8 * ) FMemory : : Malloc ( BytesToWrite ) ;
In . Serialize ( Source , BytesToWrite ) ;
if ( File - > Write ( Source , BytesToWrite ) )
{
BytesWritten = BytesToWrite ;
}
FMemory : : Free ( Source ) ;
}
Out < < BytesWritten ;
}
void FNetworkFileServerClientConnection : : ProcessSeekFile ( FArchive & In , FArchive & Out )
{
// Get Handle ID
uint64 HandleId = 0 ;
In < < HandleId ;
int64 NewPosition ;
In < < NewPosition ;
int64 SetPosition = - 1 ;
IFileHandle * File = FindOpenFile ( HandleId ) ;
if ( File & & File - > Seek ( NewPosition ) )
{
SetPosition = File - > Tell ( ) ;
}
Out < < SetPosition ;
}
void FNetworkFileServerClientConnection : : ProcessCloseFile ( FArchive & In , FArchive & Out )
{
// Get Handle ID
uint64 HandleId = 0 ;
In < < HandleId ;
uint32 Closed = 0 ;
IFileHandle * File = FindOpenFile ( HandleId ) ;
if ( File )
{
Closed = 1 ;
OpenFiles . Remove ( HandleId ) ;
delete File ;
}
Out < < Closed ;
}
void FNetworkFileServerClientConnection : : ProcessGetFileInfo ( FArchive & In , FArchive & Out )
{
// Get filename
FString Filename ;
In < < Filename ;
ConvertClientFilenameToServerFilename ( Filename ) ;
FFileInfo Info ;
Info . FileExists = Sandbox - > FileExists ( * Filename ) ;
// if the file exists, cook it if necessary (the FileExists flag won't change value based on this callback)
// without this, the server can return the uncooked file size, which can cause reads off the end
if ( Info . FileExists )
{
TArray < FString > NewUnsolictedFiles ;
2014-04-23 16:44:02 -04:00
FileRequestDelegate . ExecuteIfBound ( Filename , ConnectedPlatformName , NewUnsolictedFiles ) ;
2014-03-14 14:13:41 -04:00
}
// get the rest of the info
Info . ReadOnly = Sandbox - > IsReadOnly ( * Filename ) ;
Info . Size = Sandbox - > FileSize ( * Filename ) ;
Info . TimeStamp = Sandbox - > GetTimeStamp ( * Filename ) ;
Info . AccessTimeStamp = Sandbox - > GetAccessTimeStamp ( * Filename ) ;
Out < < Info . FileExists ;
Out < < Info . ReadOnly ;
Out < < Info . Size ;
Out < < Info . TimeStamp ;
Out < < Info . AccessTimeStamp ;
}
void FNetworkFileServerClientConnection : : ProcessMoveFile ( FArchive & In , FArchive & Out )
{
FString From ;
In < < From ;
FString To ;
In < < To ;
ConvertClientFilenameToServerFilename ( From ) ;
ConvertClientFilenameToServerFilename ( To ) ;
uint32 Success = Sandbox - > MoveFile ( * To , * From ) ;
Out < < Success ;
}
void FNetworkFileServerClientConnection : : ProcessDeleteFile ( FArchive & In , FArchive & Out )
{
FString Filename ;
In < < Filename ;
ConvertClientFilenameToServerFilename ( Filename ) ;
uint32 Success = Sandbox - > DeleteFile ( * Filename ) ;
Out < < Success ;
}
void FNetworkFileServerClientConnection : : ProcessReportLocalFiles ( FArchive & In , FArchive & Out )
{
// get the list of files on the other end
TMap < FString , FDateTime > ClientFileTimes ;
In < < ClientFileTimes ;
// go over them and compare times to this side
TArray < FString > OutOfDateFiles ;
for ( TMap < FString , FDateTime > : : TIterator It ( ClientFileTimes ) ; It ; + + It )
{
FString ClientFile = It . Key ( ) ;
ConvertClientFilenameToServerFilename ( ClientFile ) ;
// get the local timestamp
FDateTime Timestamp = Sandbox - > GetTimeStamp ( * ClientFile ) ;
// if it's newer than the client/remote timestamp, it's newer here, so tell the other side it's out of date
if ( Timestamp > It . Value ( ) )
{
OutOfDateFiles . Add ( ClientFile ) ;
}
}
UE_LOG ( LogFileServer , Display , TEXT ( " There were %d out of date files " ) , OutOfDateFiles . Num ( ) ) ;
}
/** Copies file. */
void FNetworkFileServerClientConnection : : ProcessCopyFile ( FArchive & In , FArchive & Out )
{
FString To ;
FString From ;
In < < To ;
In < < From ;
ConvertClientFilenameToServerFilename ( To ) ;
ConvertClientFilenameToServerFilename ( From ) ;
bool Success = Sandbox - > CopyFile ( * To , * From ) ;
Out < < Success ;
}
void FNetworkFileServerClientConnection : : ProcessSetTimeStamp ( FArchive & In , FArchive & Out )
{
FString Filename ;
FDateTime Timestamp ;
In < < Filename ;
In < < Timestamp ;
ConvertClientFilenameToServerFilename ( Filename ) ;
Sandbox - > SetTimeStamp ( * Filename , Timestamp ) ;
// Need to sends something back otherwise the response won't get sent at all.
bool Success = true ;
Out < < Success ;
}
void FNetworkFileServerClientConnection : : ProcessSetReadOnly ( FArchive & In , FArchive & Out )
{
FString Filename ;
bool bReadOnly ;
In < < Filename ;
In < < bReadOnly ;
ConvertClientFilenameToServerFilename ( Filename ) ;
bool Success = Sandbox - > SetReadOnly ( * Filename , bReadOnly ) ;
Out < < Success ;
}
void FNetworkFileServerClientConnection : : ProcessCreateDirectory ( FArchive & In , FArchive & Out )
{
FString Directory ;
In < < Directory ;
ConvertClientFilenameToServerFilename ( Directory ) ;
bool bSuccess = Sandbox - > CreateDirectory ( * Directory ) ;
Out < < bSuccess ;
}
void FNetworkFileServerClientConnection : : ProcessDeleteDirectory ( FArchive & In , FArchive & Out )
{
FString Directory ;
In < < Directory ;
ConvertClientFilenameToServerFilename ( Directory ) ;
bool bSuccess = Sandbox - > DeleteDirectory ( * Directory ) ;
Out < < bSuccess ;
}
void FNetworkFileServerClientConnection : : ProcessDeleteDirectoryRecursively ( FArchive & In , FArchive & Out )
{
FString Directory ;
In < < Directory ;
ConvertClientFilenameToServerFilename ( Directory ) ;
bool bSuccess = Sandbox - > DeleteDirectoryRecursively ( * Directory ) ;
Out < < bSuccess ;
}
void FNetworkFileServerClientConnection : : ProcessToAbsolutePathForRead ( FArchive & In , FArchive & Out )
{
FString Filename ;
In < < Filename ;
ConvertClientFilenameToServerFilename ( Filename ) ;
Filename = Sandbox - > ConvertToAbsolutePathForExternalAppForRead ( * Filename ) ;
Out < < Filename ;
}
void FNetworkFileServerClientConnection : : ProcessToAbsolutePathForWrite ( FArchive & In , FArchive & Out )
{
FString Filename ;
In < < Filename ;
ConvertClientFilenameToServerFilename ( Filename ) ;
Filename = Sandbox - > ConvertToAbsolutePathForExternalAppForWrite ( * Filename ) ;
Out < < Filename ;
}
2014-07-23 15:31:40 -04:00
bool FNetworkFileServerClientConnection : : ProcessGetFileList ( FArchive & In , FArchive & Out )
2014-03-14 14:13:41 -04:00
{
// get the list of directories to process
2015-06-18 17:27:24 -04:00
TArray < FString > TargetPlatformNames ;
2014-03-14 14:13:41 -04:00
FString GameName ;
FString EngineRelativePath ;
FString GameRelativePath ;
TArray < FString > RootDirectories ;
bool bIsStreamingRequest = false ;
In < < TargetPlatformNames ;
In < < GameName ;
In < < EngineRelativePath ;
In < < GameRelativePath ;
In < < RootDirectories ;
In < < bIsStreamingRequest ;
ConnectedPlatformName = TEXT ( " " ) ;
2014-09-08 11:51:08 -04:00
2014-11-19 14:20:49 -05:00
bool bSendLowerCase = false ;
2014-09-08 14:51:47 -04:00
// if we didn't find one (and this is a dumb server - no active platforms), then just use what was sent
if ( ActiveTargetPlatforms . Num ( ) = = 0 )
2014-03-14 14:13:41 -04:00
{
2014-09-08 14:51:47 -04:00
ConnectedPlatformName = TargetPlatformNames [ 0 ] ;
2014-03-14 14:13:41 -04:00
}
2014-09-08 14:51:47 -04:00
// we only need to care about validating the connected platform if there are active targetplatforms
else
2014-03-14 14:13:41 -04:00
{
2014-09-08 14:51:47 -04:00
// figure out the best matching target platform for the set of valid ones
for ( int32 TPIndex = 0 ; TPIndex < TargetPlatformNames . Num ( ) & & ConnectedPlatformName = = TEXT ( " " ) ; TPIndex + + )
2014-07-23 15:31:40 -04:00
{
2014-09-08 14:51:47 -04:00
UE_LOG ( LogFileServer , Display , TEXT ( " Possible Target Platform from client: %s " ) , * TargetPlatformNames [ TPIndex ] ) ;
2014-09-08 11:51:08 -04:00
2014-09-08 14:51:47 -04:00
// look for a matching target platform
2014-09-08 11:51:08 -04:00
for ( int32 ActiveTPIndex = 0 ; ActiveTPIndex < ActiveTargetPlatforms . Num ( ) ; ActiveTPIndex + + )
{
2014-09-08 14:51:47 -04:00
UE_LOG ( LogFileServer , Display , TEXT ( " Checking against: %s " ) , * ActiveTargetPlatforms [ ActiveTPIndex ] - > PlatformName ( ) ) ;
if ( ActiveTargetPlatforms [ ActiveTPIndex ] - > PlatformName ( ) = = TargetPlatformNames [ TPIndex ] )
{
2014-11-19 14:20:49 -05:00
bSendLowerCase = ActiveTargetPlatforms [ ActiveTPIndex ] - > SendLowerCaseFilePaths ( ) ;
2014-09-08 14:51:47 -04:00
ConnectedPlatformName = ActiveTargetPlatforms [ ActiveTPIndex ] - > PlatformName ( ) ;
break ;
}
}
2014-09-29 19:42:27 -04:00
}
2014-09-08 14:51:47 -04:00
2014-09-29 19:42:27 -04:00
// if we didn't find one, reject client and also print some warnings
if ( ConnectedPlatformName = = TEXT ( " " ) )
{
// reject client we can't cook/compile shaders for you!
UE_LOG ( LogFileServer , Warning , TEXT ( " Unable to find target platform for client, terminating client connection! " ) ) ;
for ( int32 TPIndex = 0 ; TPIndex < TargetPlatformNames . Num ( ) & & ConnectedPlatformName = = TEXT ( " " ) ; TPIndex + + )
2014-09-08 14:51:47 -04:00
{
2014-09-29 19:42:27 -04:00
UE_LOG ( LogFileServer , Warning , TEXT ( " Target platforms from client: %s " ) , * TargetPlatformNames [ TPIndex ] ) ;
2014-09-08 11:51:08 -04:00
}
2014-09-29 19:42:27 -04:00
for ( int32 ActiveTPIndex = 0 ; ActiveTPIndex < ActiveTargetPlatforms . Num ( ) ; ActiveTPIndex + + )
{
UE_LOG ( LogFileServer , Warning , TEXT ( " Active target platforms on server: %s " ) , * ActiveTargetPlatforms [ ActiveTPIndex ] - > PlatformName ( ) ) ;
}
return false ;
2014-09-08 11:51:08 -04:00
}
2014-03-14 14:13:41 -04:00
}
2014-07-23 15:31:40 -04:00
2014-03-14 14:13:41 -04:00
ConnectedEngineDir = EngineRelativePath ;
ConnectedGameDir = GameRelativePath ;
FString LocalEngineDir = FPaths : : EngineDir ( ) ;
FString LocalGameDir = FPaths : : GameDir ( ) ;
if ( FPaths : : IsProjectFilePathSet ( ) )
{
LocalGameDir = FPaths : : GetPath ( FPaths : : GetProjectFilePath ( ) ) + TEXT ( " / " ) ;
}
UE_LOG ( LogFileServer , Display , TEXT ( " Connected EngineDir = %s " ) , * ConnectedEngineDir ) ;
UE_LOG ( LogFileServer , Display , TEXT ( " Local EngineDir = %s " ) , * LocalEngineDir ) ;
UE_LOG ( LogFileServer , Display , TEXT ( " Connected GameDir = %s " ) , * ConnectedGameDir ) ;
UE_LOG ( LogFileServer , Display , TEXT ( " Local GameDir = %s " ) , * LocalGameDir ) ;
// Remap the root directories requested...
for ( int32 RootDirIdx = 0 ; RootDirIdx < RootDirectories . Num ( ) ; RootDirIdx + + )
{
FString CheckRootDir = RootDirectories [ RootDirIdx ] ;
ConvertClientFilenameToServerFilename ( CheckRootDir ) ;
RootDirectories [ RootDirIdx ] = CheckRootDir ;
}
// figure out the sandbox directory
// @todo: This should use FPlatformMisc::SavedDirectory(GameName)
FString SandboxDirectory ;
if ( FPaths : : IsProjectFilePathSet ( ) )
{
FString ProjectDir = FPaths : : GetPath ( FPaths : : GetProjectFilePath ( ) ) ;
2014-05-29 16:43:14 -04:00
SandboxDirectory = FPaths : : Combine ( * ProjectDir , TEXT ( " Saved " ) , TEXT ( " Cooked " ) , * ConnectedPlatformName ) ;
2014-03-14 14:13:41 -04:00
if ( bIsStreamingRequest )
{
RootDirectories . Add ( ProjectDir ) ;
}
}
else
{
2014-09-08 13:51:36 -04:00
if ( FPaths : : GetExtension ( GameName ) = = FProjectDescriptor : : GetExtension ( ) )
2014-03-14 14:13:41 -04:00
{
2014-05-29 16:43:14 -04:00
SandboxDirectory = FPaths : : Combine ( * FPaths : : GetPath ( GameName ) , TEXT ( " Saved " ) , TEXT ( " Cooked " ) , * ConnectedPlatformName ) ;
2014-03-14 14:13:41 -04:00
}
else
{
//@todo: This assumes the game is located in the UE4 Root directory
2014-05-29 16:43:14 -04:00
SandboxDirectory = FPaths : : Combine ( * FPaths : : GetRelativePathToRoot ( ) , * GameName , TEXT ( " Saved " ) , TEXT ( " Cooked " ) , * ConnectedPlatformName ) ;
2014-03-14 14:13:41 -04:00
}
}
2014-05-29 16:43:14 -04:00
// Convert to full path so that the sandbox wrapper doesn't re-base to Saved/Sandboxes
SandboxDirectory = FPaths : : ConvertRelativePathToFull ( SandboxDirectory ) ;
2014-03-14 14:13:41 -04:00
// delete any existing one first, in case game name somehow changed and client is re-asking for files (highly unlikely)
delete Sandbox ;
Sandbox = new FSandboxPlatformFile ( false ) ;
Sandbox - > Initialize ( & FPlatformFileManager : : Get ( ) . GetPlatformFile ( ) , * FString : : Printf ( TEXT ( " -sandbox= \" %s \" " ) , * SandboxDirectory ) ) ;
// make sure the global shaders are up to date before letting the client read any shaders
// @todo: This will probably add about 1/2 second to the boot-up time of the client while the server does this
// @note: We assume the delegate will write to the proper sandbox directory, should we pass in SandboxDirectory, or Sandbox?
FShaderRecompileData RecompileData ;
RecompileData . PlatformName = ConnectedPlatformName ;
// All target platforms
RecompileData . ShaderPlatform = - 1 ;
RecompileData . ModifiedFiles = NULL ;
RecompileData . MeshMaterialMaps = NULL ;
RecompileShadersDelegate . ExecuteIfBound ( RecompileData ) ;
UE_LOG ( LogFileServer , Display , TEXT ( " Getting files for %d directories, game = %s, platform = %s " ) , RootDirectories . Num ( ) , * GameName , * ConnectedPlatformName ) ;
UE_LOG ( LogFileServer , Display , TEXT ( " Sandbox dir = %s " ) , * SandboxDirectory ) ;
for ( int32 DumpIdx = 0 ; DumpIdx < RootDirectories . Num ( ) ; DumpIdx + + )
{
UE_LOG ( LogFileServer , Display , TEXT ( " \t %s " ) , * ( RootDirectories [ DumpIdx ] ) ) ;
}
2015-02-04 16:16:28 -05:00
TArray < FString > DirectoriesToAlwaysStageAsUFS ;
if ( GConfig - > GetArray ( TEXT ( " /Script/UnrealEd.ProjectPackagingSettings " ) , TEXT ( " DirectoriesToAlwaysStageAsUFS " ) , DirectoriesToAlwaysStageAsUFS , GGameIni ) )
{
for ( const auto & DirectoryToAlwaysStage : DirectoriesToAlwaysStageAsUFS )
{
RootDirectories . Add ( DirectoryToAlwaysStage ) ;
}
}
2014-03-14 14:13:41 -04:00
// list of directories to skip
TArray < FString > DirectoriesToSkip ;
TArray < FString > DirectoriesToNotRecurse ;
// @todo: This should really be FPlatformMisc::GetSavedDirForGame(ClientGameName), etc
for ( int32 DirIndex = 0 ; DirIndex < RootDirectories . Num ( ) ; DirIndex + + )
{
DirectoriesToSkip . Add ( FString ( RootDirectories [ DirIndex ] / TEXT ( " Saved/Backup " ) ) ) ;
DirectoriesToSkip . Add ( FString ( RootDirectories [ DirIndex ] / TEXT ( " Saved/Config " ) ) ) ;
DirectoriesToSkip . Add ( FString ( RootDirectories [ DirIndex ] / TEXT ( " Saved/Logs " ) ) ) ;
DirectoriesToSkip . Add ( FString ( RootDirectories [ DirIndex ] / TEXT ( " Saved/Sandboxes " ) ) ) ;
2014-05-29 17:46:11 -04:00
DirectoriesToSkip . Add ( FString ( RootDirectories [ DirIndex ] / TEXT ( " Saved/Cooked " ) ) ) ;
2014-05-08 20:13:47 -04:00
DirectoriesToSkip . Add ( FString ( RootDirectories [ DirIndex ] / TEXT ( " Saved/ShaderDebugInfo " ) ) ) ;
2014-10-13 18:54:04 -04:00
DirectoriesToSkip . Add ( FString ( RootDirectories [ DirIndex ] / TEXT ( " Saved/StagedBuilds " ) ) ) ;
2014-03-14 14:13:41 -04:00
DirectoriesToSkip . Add ( FString ( RootDirectories [ DirIndex ] / TEXT ( " Intermediate " ) ) ) ;
DirectoriesToSkip . Add ( FString ( RootDirectories [ DirIndex ] / TEXT ( " Documentation " ) ) ) ;
DirectoriesToSkip . Add ( FString ( RootDirectories [ DirIndex ] / TEXT ( " Extras " ) ) ) ;
DirectoriesToSkip . Add ( FString ( RootDirectories [ DirIndex ] / TEXT ( " Binaries " ) ) ) ;
DirectoriesToSkip . Add ( FString ( RootDirectories [ DirIndex ] / TEXT ( " Source " ) ) ) ;
DirectoriesToNotRecurse . Add ( FString ( RootDirectories [ DirIndex ] / TEXT ( " DerivedDataCache " ) ) ) ;
}
// use the timestamp grabbing visitor (include directories)
FLocalTimestampDirectoryVisitor Visitor ( * Sandbox , DirectoriesToSkip , DirectoriesToNotRecurse , true ) ;
for ( int32 DirIndex = 0 ; DirIndex < RootDirectories . Num ( ) ; DirIndex + + )
{
Sandbox - > IterateDirectory ( * RootDirectories [ DirIndex ] , Visitor ) ;
}
// report the package version information
// The downside of this is that ALL cooked data will get tossed on package version changes
2015-07-18 16:57:53 -04:00
int32 PackageFileUE4Version = GPackageFileUE4Version ;
Out < < PackageFileUE4Version ;
int32 PackageFileLicenseeUE4Version = GPackageFileLicenseeUE4Version ;
Out < < PackageFileLicenseeUE4Version ;
2014-03-14 14:13:41 -04:00
// Send *our* engine and game dirs
Out < < LocalEngineDir ;
Out < < LocalGameDir ;
// return the files and their timestamps
2014-11-19 14:20:49 -05:00
TMap < FString , FDateTime > FixedTimes = FixupSandboxPathsForClient ( Sandbox , Visitor . FileTimes , LocalEngineDir , LocalGameDir , bSendLowerCase ) ;
2014-05-29 17:27:31 -04:00
Out < < FixedTimes ;
2014-03-14 14:13:41 -04:00
// Do it again, preventing access to non-cooked files
if ( bIsStreamingRequest = = false )
{
2015-05-12 20:11:29 -04:00
TArray < FString > RootContentPaths ;
FPackageName : : QueryRootContentPaths ( RootContentPaths ) ;
TArray < FString > ContentFolders ;
for ( const auto & RootPath : RootContentPaths )
{
const FString & ContentFolder = FPackageName : : LongPackageNameToFilename ( RootPath ) ;
2015-05-13 17:09:06 -04:00
FString ConnectedContentFolder = ContentFolder ;
ConnectedContentFolder . ReplaceInline ( * LocalEngineDir , * ConnectedEngineDir ) ;
Copying //UE4/Dev-Platform to //UE4/Main (Source: //UE4/Dev-Platform @ 3008177)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2948322 on 2016/04/19 by Nick.Shin
update libwebsockets to v1.7.4
part 4 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
#jira UEPLAT-1204 - Rebuild libwebsockets with SSL
Change 2970016 on 2016/05/07 by Nick.Shin
undo all of the following upgrades:
- zlib
- openssl
- libcurl
- libwebsockets
and reset webrtc
#jira UE-30298 - Fortnite and Orion crash on login
#lockdown josh.adams
Change 2970373 on 2016/05/09 by Lee.Clark
PS4 - Fix NumInstances not getting reset after DrawIndirect calls
Change 2972873 on 2016/05/10 by Michael.Trepka
Correct initial position for SlateViewer windows on Mac
Change 2974363 on 2016/05/11 by Mark.Satterthwaite
Fix invoking buils using distcc from UFE - the command-line executed to access the number of parallel tasks was incorrect.
Change 2975921 on 2016/05/12 by Michael.Trepka
Removed unused AdjustWindowRegion declaration from LinuxWindow.h
#codereview Dmitry.Rekman
Change 2977002 on 2016/05/13 by Michael.Trepka
Make sure dSYM generation action in UBT on Mac does not start before the source dylib is ready
#codereview Ben.Marsh
Change 2977337 on 2016/05/13 by Brent.Pease
UE-27805 - Adding special characters into the BundleDisplayName or BundleName causes packaging error
+ Prevent illegal characters from being entered in the packaging UI
+ Report an error from iPhonePackager if a illegal bundle id is specified
+ Convert special characters to XML equivalents
- Correctly check for the presence of iTunes 12 when packaging iOS games on Windows
- Improve ios certificate and provision message in package settings UI
#codereview peter.sauerbrei
Change 2977509 on 2016/05/13 by Brent.Pease
+ Fix mac compile error
Change 2978036 on 2016/05/14 by Mark.Satterthwaite
One-line tweak that resolves incorrect rendering of the colour LUT because float imprecision allows -ve values to be passed into a call to pow which then generates NaN.
#jira UE-30777
Change 2978037 on 2016/05/14 by Mark.Satterthwaite
Fix a heap-use-after-free bug spotted by AddressSanitizer - you can't assume that the UObject system will be available in ShutdownModule() - on OS X it may have been killed a long time ago.
Change 2978333 on 2016/05/16 by Lee.Clark
Fix packaging of non-code projects when plugins are enabled
#codereview Peter.Sauerbrei
Change 2978780 on 2016/05/16 by Mark.Satterthwaite
Reduce temporary allocations required to set uniform parameters in Metal.
Change 2979680 on 2016/05/16 by Nick.Shin
editor's HTML5 platform settings was missing due to the emscripten SDK move
should have been included with CL: #2946251
Change 2979681 on 2016/05/16 by Nick.Shin
cleaned up websocket processing for HTML5
#jira UE-13657 - HTML5 plugin OnRawRecieve overflow
Change 2979701 on 2016/05/16 by Brent.Pease
UE-28421 - Message box cannot be closed after accessing the home screen on iOS
+ Implement a timeout when waiting for a reply after sending background/foreground/suspend events from the main thread to the game thread. This solves the immediate problem presented in the jira bug report, however, there are deeper issues with the consequences of blocking the game thread that are not addressed. Perhaps structuring the game thread loop to know about modal dialogs so that it can receive these events even when a modal dialog is up could be a better longer term solution
Change 2980766 on 2016/05/17 by Jeremiah.Waldron
Adding Android build support for HarfBuzz
- using a combination of android-cmake (from https://github.com/taka-no-me/android-cmake) to create the build files and Visual Studio 2015 to compile them
- Adding Debug and RelWithDebInfo compiled binaries to harfbuzz-1.2.4/Android/<arch>/<config>
Tested armv7 with TextShapingTest project on a GalaxyNote3 and text showed up correctly
#jira UE-28586
#codereview chris.babcock
Change 2980953 on 2016/05/17 by Jeremiah.Waldron
Changing HarfBuzz build script and libs to use Release instead of RelWithDebInfo
#jira UE-28586
Change 2981039 on 2016/05/17 by Jeff.Campeau
ICMP support disabled for Xbox One and basic address processing wrappers provided (needed for Oodle support)
Change 2981054 on 2016/05/17 by Jeff.Campeau
Enable Live OSS for Orion on Xbox One
Change 2981553 on 2016/05/18 by Jeff.Campeau
Enable Oodle for Xbox One
Change 2981555 on 2016/05/18 by Jeff.Campeau
Scalability settings for Xbox One
Change 2981774 on 2016/05/18 by Keith.Judge
Xbox One - Duplicating Movie Player fix from 4.12.
Change 2981789 on 2016/05/18 by Keith.Judge
Xbox One - Duplicate fast semantics rendertarget unbind/clear/rebind fix from 4.12.
Change 2981802 on 2016/05/18 by Keith.Judge
Xbox One - Duplicate of distance field AO/Shadow fixes from 4.12.
Change 2981875 on 2016/05/18 by Keith.Judge
Xbox One - Dynamic VB/IB refactor. Duplicated from 4.12.
Change 2981900 on 2016/05/18 by Keith.Judge
Xbox One - D3D11Query refactor. Duplicated from 4.12
Change 2981945 on 2016/05/18 by Nick.Shin
filled out response headers for HTML5 platform
#jira UE-26047 - HTML5 HTTP Response Headers not implemented
Change 2981981 on 2016/05/18 by Lee.Clark
PS4 - Fix COTF not updating files
#codereview Daniel.Lamb
Change 2982246 on 2016/05/18 by Michael.Trepka
Fixed Mono compile errors in UT build scripts
Change 2983869 on 2016/05/19 by Mark.Satterthwaite
Explicitly retain/release all the MTLTexture objects in FMetalSurface without the assumptions about them being the same object - the recent stencil & SRV related changes make those assumptions invalid and could lead to over-releasing some textures.
#jira UE-29557
Change 2983871 on 2016/05/19 by Mark.Satterthwaite
Pool Metal texture update buffers to reduce churn.
Change 2983892 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2972885: Enable Metal resource lifetime delay on all platforms, not just iOS to try and address intermittent invalid resource errors.
Change 2983898 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2982825: Correctly wait for the dispatch semaphore when clearing the Metal resource free lists.
Change 2983911 on 2016/05/19 by Mark.Satterthwaite
Change Metal SubmitCommandsHint to use an enum of flags rather than boolean variables to control behaviour so that its clearer to the reader what is going to happen.
Change 2983916 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2974765: Workaround for UE-30069 - on Nvidia Macs we are breaking the GMux swap the second time we run the engine and it isn't clear why, so instead explicitly select the Metal device ourselves and don't allow the OS to swap the GPU driving the display. This will potentially reduce performance a little if the discrete GPU isn't already driving the display but until we know how we are clobbering the GMux/driver it is all we can do. This only applies to 10.11.5 with the default OS X drivers where there is more than one GPU in the system, earlier versions of OS X and the Nvidia WebDrivers are unaffected.
Change 2984874 on 2016/05/20 by Keith.Judge
Xbox One - Re-enable shader DXBC intermediate bytecode stripping, except for geometry and hull shaders where there's a possibility of runtime recompilation in certain combinations. Saves ~2MB in TM-ShaderModels, will save more in larger maps.
#jira UEPLAT-1295
Change 2985446 on 2016/05/20 by Mark.Satterthwaite
Remove the non-functional -metaldebug option from MetalRHI.
Change 2985827 on 2016/05/20 by Nick.Shin
call EndSession() onbeforeunload()
note: API CHANGE
- HTML5JavaScripteFx.{js,h}
- UE_MakeHTTPDataRequest()
#jira UE-22285 - Session End events are not generated for HTML5
Change 2986013 on 2016/05/20 by Jeremiah.Waldron
PR #2387: In-App Purchases - parameters needed for Receipt Validation (Contributed by gameDNAstudio)
Also touches IOS because of added RawPrice member in FInAppPurchaseProductInfo
Pulled from Release-4.12 CL
#jira UE-30782
#codereview chris.babcock, Peter.Sauerbrei
Change 2986057 on 2016/05/20 by Mark.Satterthwaite
Further changes to ensure that UE-30710 really is fixed while also not live-leaking memory in MetalRHI.
Change 2986059 on 2016/05/20 by Mark.Satterthwaite
Move the Metal uniform buffers into the same resource pool as all the other buffers and add stats for how many buffers are in the pool, how much memory is in use, free and wasted (due to aligned-buffer sizes).
Change 2986060 on 2016/05/20 by Mark.Satterthwaite
Disable tiled-reflections on Nvidia & Intel Metal until they sort out the sample command on cube-arrays ignoring the lod level.
Change 2986063 on 2016/05/20 by Mark.Satterthwaite
Missing change from previous CL.
Change 2986066 on 2016/05/20 by Mark.Satterthwaite
More Metal stats tracking the number & memory size of id<MTLBuffer>'s allocated/released each frame.
Change 2986455 on 2016/05/23 by Keith.Judge
Xbox One - Fix precompile promise in shader compiler to not stop subsequent defines from being parsed by D3DCompiler.
Change 2986886 on 2016/05/23 by Mark.Satterthwaite
Duplicate 4.12 CL #2986880: Fix UE-31124 due to bad array iteration logic - amazing that this hadn't been seen earlier.
Change 2986955 on 2016/05/23 by Brent.Pease
+ Do not error out if "[PROJECT_NAME]" is in the bundle ID
#codereview peter.sauerbrei
Change 2987304 on 2016/05/23 by Chris.Babcock
Remove old Android platforms
#ue4
#android
#codeview Josh.Adams
Change 2987571 on 2016/05/23 by Mark.Satterthwaite
Duplicate CL #2967998: Integrate - MaterialParameterCollections now create default resources (uniform buffers) which are used when no valid FScene is present (eg DrawTile while exporting materials to lightmass)
#jira UE-31111
Change 2987591 on 2016/05/23 by Mark.Satterthwaite
Remove usage of MTLRender/ComputeEncoder setSamplerState/s calls that take Min & Max Lod overrides - they currently don't work as expected on some GPU drivers and as we don't use them anywhere and I can't see that we will removing them costs us nothing and fixes tiled reflections on Nvidia with Metal SM5.
Change 2987679 on 2016/05/23 by Mark.Satterthwaite
Re-enable tiled reflections on Nvidia by default now that they work.
Change 2987799 on 2016/05/24 by Mark.Satterthwaite
Add a shader compile option "r.Shaders.ZeroInitialise" that we can turn on to force explicit zero-initialisation of local & temporary variables in hlslcc - so far only implemented for Metal. The default behaviour remains to omit zero-initialisation but the option is helpful to eliminate or track down uninitialised access in shaders that are causing real bugs (e.g. POM material relying on zero-initialised loop counters causing hangs/bad rendering on Mac).
Change 2989395 on 2016/05/25 by Lee.Clark
PS4 - Fix shader output / render target format mismatch for sparse MRT.
Change 2990003 on 2016/05/25 by Jeremiah.Waldron
When creating our own ConfigCacheIni in GetConfigCacheIni_APL, do not assume that the Engine ini was requested. Instead use the baseIniName passed to the function.
Change 2990393 on 2016/05/25 by Mark.Satterthwaite
Back out changelist 2961310 - causes more problems than it solves. DistanceField rendering will still work on Intel Metal SM5 and may work on AMD but will be broken on Nvidia due to a bad access within the compute shader - there's no bounds checking in Metal...
Change 2990516 on 2016/05/25 by Brent.Pease
+ UEPLAT-1294 - Support for local notifications
+ UEPLAT-1254 - Add BP event for device orientation change
+ Added a new class based on UGameInstance for mobile device callbacks
+ Ensured IOSAppDelegate.cpp follows convention for lambda functions
Change 2991361 on 2016/05/26 by Jeremiah.Waldron
Move InAppPurchase class to StoreHelper.java so GooglePlay and Amazon store helpers can use it
Change 2992450 on 2016/05/27 by Mark.Satterthwaite
Optional r.Shaders.BoundsChecking flag to control whether shader platforms should manually enforce buffer access bounds - HLSL returns zero or ignores invalid reads & writes but Metal leaves the behaviour undefined and some drivers then fail. By default this is off and its whatever the native platform behaviour is, enabling it will cost some amount of performance as the shader translator inserts additional instructions to try and match D3D as accurately as possible. This is required to fix GPU restart errors on some Metal drivers when using SM5 rendering features including DistanceField shaders.
Change 2993027 on 2016/05/27 by Mark.Satterthwaite
Fix typo for new CFLAG_BoundsChecking enumeration value.
Change 2993594 on 2016/05/27 by Mark.Satterthwaite
Build fix - check not assert...
Change 2993595 on 2016/05/27 by Mark.Satterthwaite
Fix typo from Xcode hang...
Change 2993614 on 2016/05/28 by Mark.Satterthwaite
At least for now enable shader zero-initialisation and bounds-checking on Mac to ensure that Metal shaders are compiled with semantics that approximate those HLSL assumes. This may cost some performance but will avoid a few GPU restarts on some vendor drivers.
Change 2993747 on 2016/05/28 by Mark.Satterthwaite
Separate texture & buffer references in the Metal backend as they bind to separate arrays in the runtime to avoid giving the side-table buffer an innaccessible binding index. Also the side-table doesn't need to be emitted if no buffer SRV or UAV is used.
Change 2994256 on 2016/05/31 by Lee.Clark
PS4 - Fix unitialized Head Position from HMD tracker when tracking fails. Fixes a problem with A3D audio not working.
#codereview Chad.Taylor,Aaron.McLeran
Change 2994281 on 2016/05/31 by Rolando.Caloca
DP - Allow hlslcc to process type casts containing the 'const' keyword
- it isn't strictly complete as it will simply omit the type qualifier from the cast in the AST but it is sufficient for FortniteFoliage_MasterMaterial to compile.
#codereview Mark.Satterthwaite, Dmitry.Rekman
#jira UE-31411
Change 2994467 on 2016/05/31 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 2994493 on 2016/05/31 by Daniel.Lamb
Fixed issue with DDC commandlet not caching things from the startup packages list.
Change 2994644 on 2016/05/31 by Mark.Satterthwaite
Updated hlslcc Mac binaries with fix for UE-31411 which RCO accepted and submitted + script for building parsers on POSIX OSes hooked up to an Xcode scheme in the project.
Change 2996074 on 2016/06/01 by Lee.Clark
PS4 - Fix GS mode not getting disabled when using parallel contexts.
#codereview Marcus.Wassmer
Change 2996129 on 2016/06/01 by Brent.Pease
Manual merge of Pete's dsym generation fix (CL#2996089) from the 4.12 branch.
Change 2996130 on 2016/06/01 by Jeremiah.Waldron
PR #2387 part 2 (Contributed by gameDNAstudio)
Adding ability to consume purchases during GooglePlay RestorePurchases
This also touches IOS due to changes to base classes and function signatures
#codereview chris.babcock, Peter.Sauerbrei
Change 2996441 on 2016/06/01 by Jeremiah.Waldron
Relates to PR #2387: Adding ability to consume purchases during GooglePlay RestorePurchases (Contributed by gameDNAstudio)
Missing changes from part 2 reworked so that there is still only one RestorePurchases function which takes the product IDs and consumable flags. I reflected this in StoreHelper so no casting is necessary in GameActivity and the soon-to-be-added AmazonStoreHelper in the GameCircle plugin will still work dynamically with GameActivity since it will call StoreHelper functionality rather than a GooglePlayStoreHelper specific function.
#codereview chris.babcock
Change 2996514 on 2016/06/01 by Jeff.Campeau
Fix merge issue from main
#jira UE-31502
Change 2996740 on 2016/06/01 by Jonathan.Fitzpatrick
https://jira.ol.epicgames.net/browse/UE-31446
Two PS4 source files fail during unity builds due to name conflict with handleReserveFailed.
Renamed handleReserveFailed to handleReserveFailedLightweight
Change 2997235 on 2016/06/01 by Jeremiah.Waldron
RestorePurchases fix up in Match3 since the new Restore consumable stuff adds an additional pin to the Restore node.
The IAP product in Match3 is non-consumable so just passing an empty array where necessary
Change 2997241 on 2016/06/01 by Jeremiah.Waldron
OnlineSubsystemGameCircle Plugin
- Leaderboards
- Achievements
- Friends
- IAP
- External UI Interface
- Runtime Settings in Project Settings Plugin section when plugin is enabled
- Disabled by default
#jira UEPLAT-105
#codereview chris.babcock
Change 2997618 on 2016/06/02 by Lee.Clark
#UE4Docs: Removed PS4MapFileUtil info
Change 2997840 on 2016/06/02 by Jeremiah.Waldron
Removing trace logging from OnlineSubsystemGameCircle_APL
Change 2998754 on 2016/06/02 by Brent.Pease
Change BlueprintMobileLibrary to BlueprintPlatformLibrary
Change 3000762 on 2016/06/03 by Jeff.Campeau
Add example rating info to ShooterGame
Change 3001037 on 2016/06/04 by Brent.Pease
+ Add ui screens for delegate test, local notification test, and iap test
+ Implement delegate test
Change 3001250 on 2016/06/05 by Brent.Pease
+ Initial pass at IAP test screen
Change 3001639 on 2016/06/06 by Jeff.Campeau
Fix Xbox One build issue with DX12
#codereview Zabir.Hoque
Change 3002574 on 2016/06/06 by Jeremiah.Waldron
Adding Android Install Location to Android platform runtime settings and manifest generation
Change 3002780 on 2016/06/06 by Brent.Pease
+ Initial implementation of local notification test
Change 3003005 on 2016/06/06 by Jeremiah.Waldron
OnlineSubsystemGameCircle plugin - adding setting for Fire TV support. Using that specification in the APL to Add/Update android.hardware.touchscreen feature required attribute
Change 3004392 on 2016/06/07 by Jeremiah.Waldron
Fixing typo in APL comment :)
Change 3005768 on 2016/06/08 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3005929 on 2016/06/08 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3006151 on 2016/06/08 by Peter.Sauerbrei
fix for LocalNotifications not available on TVOS
#lockdown josh.adams
Change 3006183 on 2016/06/08 by Brent.Pease
Manual merge CL#3000242 from Release-4.12 into Dev-Platform
#lockdown josh.adams
Change 3006296 on 2016/06/08 by Peter.Sauerbrei
submit an updated iPhonePackager and support DLLs
#lockdown josh.adams
Change 3006378 on 2016/06/08 by Peter.Sauerbrei
fix for API update to RestorePurchases
#codereview brent.pease
#lockdown josh.adams
#lockdown nick.penwarden
[CL 3008183 by Josh Adams in Main branch]
2016-06-09 17:45:44 -04:00
int32 ReplaceCount = ConnectedContentFolder . ReplaceInline ( * LocalGameDir , * ConnectedGameDir ) ;
if ( ReplaceCount = = 0 )
{
int32 GameDirOffset = ConnectedContentFolder . Find ( ConnectedGameDir , ESearchCase : : IgnoreCase , ESearchDir : : FromEnd ) ;
if ( GameDirOffset ! = INDEX_NONE )
{
ConnectedContentFolder = ConnectedContentFolder . RightChop ( GameDirOffset ) ;
}
}
2015-05-13 17:09:06 -04:00
ContentFolders . Add ( ConnectedContentFolder ) ;
2015-05-12 20:11:29 -04:00
}
Out < < ContentFolders ;
2014-03-14 14:13:41 -04:00
// Do it again, preventing access to non-cooked files
const int32 NUM_EXCLUSION_WILDCARDS = 2 ;
FString ExclusionWildcard [ NUM_EXCLUSION_WILDCARDS ] ;
ExclusionWildcard [ 0 ] = FString ( TEXT ( " * " ) ) + FPackageName : : GetAssetPackageExtension ( ) ;
ExclusionWildcard [ 1 ] = FString ( TEXT ( " * " ) ) + FPackageName : : GetMapPackageExtension ( ) ;
for ( int32 i = 0 ; i < NUM_EXCLUSION_WILDCARDS ; + + i )
{
Sandbox - > AddExclusion ( * ExclusionWildcard [ i ] ) ;
UE_LOG ( LogFileServer , Display , TEXT ( " Excluding %s from non-sandboxed directories " ) ,
* ExclusionWildcard [ i ] ) ;
}
FLocalTimestampDirectoryVisitor VisitorForCacheDates ( * Sandbox , DirectoriesToSkip , DirectoriesToNotRecurse , true ) ;
for ( int32 DirIndex = 0 ; DirIndex < RootDirectories . Num ( ) ; DirIndex + + )
{
Sandbox - > IterateDirectory ( * RootDirectories [ DirIndex ] , VisitorForCacheDates ) ;
}
// return the cached files and their timestamps
2014-11-19 14:20:49 -05:00
FixedTimes = FixupSandboxPathsForClient ( Sandbox , VisitorForCacheDates . FileTimes , LocalEngineDir , LocalGameDir , bSendLowerCase ) ;
2014-05-29 17:27:31 -04:00
Out < < FixedTimes ;
2014-03-14 14:13:41 -04:00
}
2014-07-23 15:31:40 -04:00
return true ;
2014-03-14 14:13:41 -04:00
}
void FNetworkFileServerClientConnection : : ProcessHeartbeat ( FArchive & In , FArchive & Out )
{
// Protect the array
FScopeLock Lock ( & ModifiedFilesSection ) ;
// return the list of modified files
Out < < ModifiedFiles ;
// @todo: note the last received time, and toss clients that don't heartbeat enough!
// @todo: Right now, there is no directory watcher adding to ModifiedFiles. It had to be pulled from this thread (well, the ModuleManager part)
// We should have a single directory watcher that pushes the changes to all the connections - or possibly pass in a shared DirectoryWatcher
// and have each connection set up a delegate (see p4 history for HandleDirectoryWatcherDirectoryChanged)
}
/* FStreamingNetworkFileServerConnection callbacks
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
Copying //UE4/Release-Staging-4.11 to //UE4/Main (Source: //UE4/Release-Staging-4.11 @ 2941426, //UE4/Release-4.11 @ 2927265)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2910079 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28293 Reworded some Sentences
Change 2910157 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28240 Rebuilt Lighting for Sanctuary
Change 2910317 on 2016/03/15 by Ben.Marsh
Fix crash trying to print out a message explaining that you need to install the Visual Studio 2015 toolchain, if the Visual Studio 2015 toolchain is not installed!
Change 2910425 on 2016/03/15 by Ori.Cohen
Fix crash and incorrect behavior when setting physical material on a welded body.
#JIRA UE-28399
#rb Marc.Audy
Change 2910525 on 2016/03/15 by Ori.Cohen
Fix player capsule not spawning at the right place due to float precision issues.
#JIRA UE-28438
#rb Zak.Middleton
Change 2910595 on 2016/03/15 by Chris.Babcock
Fixed issue with missing event location paired with IE_Pressed if IE_DoubleClick generated
#jira UE-28051
#ue4
#codereview Marc.Audy
Change 2911442 on 2016/03/16 by Andrew.Rodham
Sequencer: Fixed frame grabbers where hardware mapped surfaces to memory of a different stride
#jira UE-28434
Change 2911596 on 2016/03/16 by andrew.porter
Test content for blueprint vertex painting
#jira UE-24473
Change 2911860 on 2016/03/16 by Jamie.Dale
Allowed SViewport to (once again) be able to use non-pre-multiplied alpha blending
SViewport now has an PreMultipliedAlpha argument (default true), which can control whether to use pre-multiplied alpha when blending is enabled (blending is disabled by default). Note: This is a change in behavior from 4.10, as non-pre-multiplied alpha blending used to be the default, but pre-multiplied alpha blending better supports the pipeline used through Slate.
This change also cleans up the use of bool parameters in the FSlateDrawElement::MakeX functions to control the render behavior, instead favoring use of advanced ESlateDrawEffect flags.
API Breaking Changes
- FSlateDrawElement::MakeGradient no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInAllowBlending bool, instead pass ESlateDrawEffect::NoBlending as part of InDrawEffects to disable blending.
#jira UE-26797
Change 2912345 on 2016/03/16 by Olaf.Piesche
Removing the check that causes UE-28441, duplicating beam type data module from highest LOD in Cascade causes crash. The beam data module is the only one that explicitly checks to make sure it's always shared across LOD levels; there's no obvious reasons why duplicating beam data modules shouldn't be possible.
#codereview simon.tovey
#jira UE-28441
Change 2912526 on 2016/03/16 by Steve.Robb
Fix uninitialized variables.
#codereview robert.manuszewski
#jira UE-28391
Change 2913114 on 2016/03/17 by Steve.Robb
Fixed some private properties which caused UHT errors.
#codereview robert.manuszewski
#jira UE-28059
Change 2913295 on 2016/03/17 by Richard.TalbotWatkin
Replicated from Dev-Editor CL 2913224
Disallow assets from being deleted if PIE is active. This prevents various troubles which can occur when PIE is referencing asset objects.
#jira UE-12387 - [CrashReport] Crash when deleting assets needed for template
#RB Nick.Darnell, Frank.Fella
Change 2913310 on 2016/03/17 by Nick.Shin
merging from //UE4/Dev-Platform to //UE4/Release-4.11
--- original commit CL: #2913300 message ---
corrected VS 2015 websocket lib to look at the right offset
it is currently a high risk change to just update the libwebsocket wholesale for release-4.11.
this change is the most minimum invasive change with a lot of deep analysis (details will be put in jira: # UEPLAT-1221).
this fix will also be pushed up to release-4.11
#jira UE-22166 - HTML5 Cook on the fly will launch and then close browser
#jira UE-22513 - HTTP Network File System crashes randomly.
#jira UE-28003 - Fail to QuickLaunch HTML5 through UnrealFrontEnd
Change 2913593 on 2016/03/17 by Mark.Satterthwaite
For non-debug builds silence the warning about no deth/stencil when shader writes to depth in MetalRHI - the RHI implementation will create a temporary D/S buffer to cope but really this needs to be properly addressed elsewhere.
#jira UE-28491
Change 2913655 on 2016/03/17 by Taizyd.Korambayil
#jira UE-28492 Rebuilt Lighting For the Samples Listed
Change 2914025 on 2016/03/17 by Olaf.Piesche
Make sure ST primitives are added to NST draw list if in shader complexity mode
#codereview simon.tovey
#jira UE-28471
Change 2914027 on 2016/03/17 by Nick.Shin
[CL 2941462 by Ben Marsh in Main branch]
2016-04-12 17:04:39 -04:00
bool FNetworkFileServerClientConnection : : PackageFile ( FString & Filename , FArchive & Out )
2014-03-14 14:13:41 -04:00
{
// get file timestamp and send it to client
FDateTime ServerTimeStamp = Sandbox - > GetTimeStamp ( * Filename ) ;
TArray < uint8 > Contents ;
// open file
IFileHandle * File = Sandbox - > OpenRead ( * Filename ) ;
if ( ! File )
{
ServerTimeStamp = FDateTime : : MinValue ( ) ; // if this was a directory, this will make sure it is not confused with a zero byte file
2014-07-23 15:31:40 -04:00
UE_LOG ( LogFileServer , Warning , TEXT ( " Request for missing file %s. " ) , * Filename ) ;
2014-03-14 14:13:41 -04:00
}
else
{
if ( ! File - > Size ( ) )
{
2015-01-19 11:46:28 -05:00
UE_LOG ( LogFileServer , Warning , TEXT ( " Sending empty file %s.... " ) , * Filename ) ;
2014-03-14 14:13:41 -04:00
}
else
{
// read it
Contents . AddUninitialized ( File - > Size ( ) ) ;
2014-09-29 04:23:44 -04:00
File - > Read ( Contents . GetData ( ) , Contents . Num ( ) ) ;
2014-03-14 14:13:41 -04:00
}
// close it
delete File ;
UE_LOG ( LogFileServer , Display , TEXT ( " Read %s, %d bytes " ) , * Filename , Contents . Num ( ) ) ;
}
Out < < Filename ;
Out < < ServerTimeStamp ;
uint64 FileSize = Contents . Num ( ) ;
Out < < FileSize ;
Out . Serialize ( Contents . GetData ( ) , FileSize ) ;
Copying //UE4/Release-Staging-4.11 to //UE4/Main (Source: //UE4/Release-Staging-4.11 @ 2941426, //UE4/Release-4.11 @ 2927265)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2910079 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28293 Reworded some Sentences
Change 2910157 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28240 Rebuilt Lighting for Sanctuary
Change 2910317 on 2016/03/15 by Ben.Marsh
Fix crash trying to print out a message explaining that you need to install the Visual Studio 2015 toolchain, if the Visual Studio 2015 toolchain is not installed!
Change 2910425 on 2016/03/15 by Ori.Cohen
Fix crash and incorrect behavior when setting physical material on a welded body.
#JIRA UE-28399
#rb Marc.Audy
Change 2910525 on 2016/03/15 by Ori.Cohen
Fix player capsule not spawning at the right place due to float precision issues.
#JIRA UE-28438
#rb Zak.Middleton
Change 2910595 on 2016/03/15 by Chris.Babcock
Fixed issue with missing event location paired with IE_Pressed if IE_DoubleClick generated
#jira UE-28051
#ue4
#codereview Marc.Audy
Change 2911442 on 2016/03/16 by Andrew.Rodham
Sequencer: Fixed frame grabbers where hardware mapped surfaces to memory of a different stride
#jira UE-28434
Change 2911596 on 2016/03/16 by andrew.porter
Test content for blueprint vertex painting
#jira UE-24473
Change 2911860 on 2016/03/16 by Jamie.Dale
Allowed SViewport to (once again) be able to use non-pre-multiplied alpha blending
SViewport now has an PreMultipliedAlpha argument (default true), which can control whether to use pre-multiplied alpha when blending is enabled (blending is disabled by default). Note: This is a change in behavior from 4.10, as non-pre-multiplied alpha blending used to be the default, but pre-multiplied alpha blending better supports the pipeline used through Slate.
This change also cleans up the use of bool parameters in the FSlateDrawElement::MakeX functions to control the render behavior, instead favoring use of advanced ESlateDrawEffect flags.
API Breaking Changes
- FSlateDrawElement::MakeGradient no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInAllowBlending bool, instead pass ESlateDrawEffect::NoBlending as part of InDrawEffects to disable blending.
#jira UE-26797
Change 2912345 on 2016/03/16 by Olaf.Piesche
Removing the check that causes UE-28441, duplicating beam type data module from highest LOD in Cascade causes crash. The beam data module is the only one that explicitly checks to make sure it's always shared across LOD levels; there's no obvious reasons why duplicating beam data modules shouldn't be possible.
#codereview simon.tovey
#jira UE-28441
Change 2912526 on 2016/03/16 by Steve.Robb
Fix uninitialized variables.
#codereview robert.manuszewski
#jira UE-28391
Change 2913114 on 2016/03/17 by Steve.Robb
Fixed some private properties which caused UHT errors.
#codereview robert.manuszewski
#jira UE-28059
Change 2913295 on 2016/03/17 by Richard.TalbotWatkin
Replicated from Dev-Editor CL 2913224
Disallow assets from being deleted if PIE is active. This prevents various troubles which can occur when PIE is referencing asset objects.
#jira UE-12387 - [CrashReport] Crash when deleting assets needed for template
#RB Nick.Darnell, Frank.Fella
Change 2913310 on 2016/03/17 by Nick.Shin
merging from //UE4/Dev-Platform to //UE4/Release-4.11
--- original commit CL: #2913300 message ---
corrected VS 2015 websocket lib to look at the right offset
it is currently a high risk change to just update the libwebsocket wholesale for release-4.11.
this change is the most minimum invasive change with a lot of deep analysis (details will be put in jira: # UEPLAT-1221).
this fix will also be pushed up to release-4.11
#jira UE-22166 - HTML5 Cook on the fly will launch and then close browser
#jira UE-22513 - HTTP Network File System crashes randomly.
#jira UE-28003 - Fail to QuickLaunch HTML5 through UnrealFrontEnd
Change 2913593 on 2016/03/17 by Mark.Satterthwaite
For non-debug builds silence the warning about no deth/stencil when shader writes to depth in MetalRHI - the RHI implementation will create a temporary D/S buffer to cope but really this needs to be properly addressed elsewhere.
#jira UE-28491
Change 2913655 on 2016/03/17 by Taizyd.Korambayil
#jira UE-28492 Rebuilt Lighting For the Samples Listed
Change 2914025 on 2016/03/17 by Olaf.Piesche
Make sure ST primitives are added to NST draw list if in shader complexity mode
#codereview simon.tovey
#jira UE-28471
Change 2914027 on 2016/03/17 by Nick.Shin
[CL 2941462 by Ben Marsh in Main branch]
2016-04-12 17:04:39 -04:00
return true ;
2014-03-14 14:13:41 -04:00
}
void FNetworkFileServerClientConnection : : ProcessRecompileShaders ( FArchive & In , FArchive & Out )
{
TArray < FString > RecompileModifiedFiles ;
TArray < uint8 > MeshMaterialMaps ;
FShaderRecompileData RecompileData ;
RecompileData . PlatformName = ConnectedPlatformName ;
RecompileData . ModifiedFiles = & RecompileModifiedFiles ;
RecompileData . MeshMaterialMaps = & MeshMaterialMaps ;
// tell other side all the materials to load, by pathname
In < < RecompileData . MaterialsToLoad ;
In < < RecompileData . ShaderPlatform ;
In < < RecompileData . SerializedShaderResources ;
2014-06-23 10:23:52 -04:00
In < < RecompileData . bCompileChangedShaders ;
2014-03-14 14:13:41 -04:00
RecompileShadersDelegate . ExecuteIfBound ( RecompileData ) ;
// tell other side what to do!
Out < < RecompileModifiedFiles ;
Out < < MeshMaterialMaps ;
}
void FNetworkFileServerClientConnection : : ProcessSyncFile ( FArchive & In , FArchive & Out )
{
// get filename
FString Filename ;
In < < Filename ;
2014-07-23 15:31:40 -04:00
2014-03-14 14:13:41 -04:00
ConvertClientFilenameToServerFilename ( Filename ) ;
2014-07-23 15:31:40 -04:00
2014-03-14 14:13:41 -04:00
//FString AbsFile(FString(*Sandbox->ConvertToAbsolutePathForExternalApp(*Filename)).MakeStandardFilename());
// ^^ we probably in general want that filename, but for cook on the fly, we want the un-sandboxed name
TArray < FString > NewUnsolictedFiles ;
2014-04-23 16:44:02 -04:00
FileRequestDelegate . ExecuteIfBound ( Filename , ConnectedPlatformName , NewUnsolictedFiles ) ;
2014-03-14 14:13:41 -04:00
for ( int32 Index = 0 ; Index < NewUnsolictedFiles . Num ( ) ; Index + + )
{
if ( NewUnsolictedFiles [ Index ] ! = Filename )
{
UnsolictedFiles . AddUnique ( NewUnsolictedFiles [ Index ] ) ;
}
}
PackageFile ( Filename , Out ) ;
2014-06-12 17:02:52 -04:00
}
FString FNetworkFileServerClientConnection : : GetDescription ( ) const
{
return FString ( " Client For " ) + ConnectedPlatformName ;
}