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
using System ;
using System.Collections.Generic ;
using System.IO ;
using System.Threading ;
using System.Reflection ;
2014-08-18 13:29:39 -04:00
using System.Linq ;
2014-03-14 14:13:41 -04:00
using AutomationTool ;
using UnrealBuildTool ;
/// <summary>
/// Helper command used for cooking.
/// </summary>
/// <remarks>
/// Command line parameters used by this command:
/// -clean
/// </remarks>
public partial class Project : CommandUtils
{
#region Cook Command
public static void Cook ( ProjectParams Params )
{
2014-09-18 18:55:01 -04:00
if ( ( ! Params . Cook & & ! ( Params . CookOnTheFly & & ! Params . SkipServer ) ) | | Params . SkipCook )
2014-03-14 14:13:41 -04:00
{
return ;
}
Params . ValidateAndLog ( ) ;
2015-08-20 09:37:11 -04:00
Log ( "********** COOK COMMAND STARTED **********" ) ;
2014-09-18 18:55:01 -04:00
2014-03-14 14:13:41 -04:00
string UE4EditorExe = HostPlatform . Current . GetUE4ExePath ( Params . UE4Exe ) ;
if ( ! FileExists ( UE4EditorExe ) )
{
2014-05-06 15:34:31 -04:00
throw new AutomationException ( "Missing " + UE4EditorExe + " executable. Needs to be built first." ) ;
2014-03-14 14:13:41 -04:00
}
2014-09-18 18:55:01 -04:00
if ( Params . CookOnTheFly & & ! Params . SkipServer )
2014-03-14 14:13:41 -04:00
{
2014-12-17 10:00:26 -05:00
if ( Params . HasDLCName )
{
throw new AutomationException ( "Cook on the fly doesn't support cooking dlc" ) ;
}
2014-09-18 18:55:01 -04:00
if ( Params . ClientTargetPlatforms . Count > 0 )
2014-03-14 14:13:41 -04:00
{
2014-09-18 18:55:01 -04:00
var LogFolderOutsideOfSandbox = GetLogFolderOutsideOfSandbox ( ) ;
if ( ! GlobalCommandLine . Installed )
{
// In the installed runs, this is the same folder as CmdEnv.LogFolder so delete only in not-installed
DeleteDirectory ( LogFolderOutsideOfSandbox ) ;
CreateDirectory ( LogFolderOutsideOfSandbox ) ;
}
2015-07-24 10:21:47 -04:00
String COTFCommandLine = Params . RunCommandline ;
if ( Params . IterativeCooking )
{
COTFCommandLine + = " -iterate" ;
}
2015-08-24 17:43:34 -04:00
if ( Params . UseDebugParamForEditorExe )
{
COTFCommandLine + = " -debug" ;
}
2015-07-24 10:21:47 -04:00
2014-09-18 18:55:01 -04:00
var ServerLogFile = CombinePaths ( LogFolderOutsideOfSandbox , "Server.log" ) ;
Platform ClientPlatformInst = Params . ClientTargetPlatformInstances [ 0 ] ;
2016-03-17 11:10:14 -04:00
string TargetCook = ClientPlatformInst . GetCookPlatform ( false , false , Params . CookFlavor ) ; // cook ont he fly doesn't support server cook platform...
2015-07-24 10:21:47 -04:00
ServerProcess = RunCookOnTheFlyServer ( Params . RawProjectPath , Params . NoClient ? "" : ServerLogFile , TargetCook , COTFCommandLine ) ;
2014-09-18 18:55:01 -04:00
if ( ServerProcess ! = null )
{
2015-08-20 09:37:11 -04:00
Log ( "Waiting a few seconds for the server to start..." ) ;
2014-09-18 18:55:01 -04:00
Thread . Sleep ( 5000 ) ;
}
}
else
{
throw new AutomationException ( "Failed to run, client target platform not specified" ) ;
2014-03-14 14:13:41 -04:00
}
}
2014-09-18 18:55:01 -04:00
else
2014-03-14 14:13:41 -04:00
{
2014-09-18 18:55:01 -04:00
var PlatformsToCook = new HashSet < string > ( ) ;
if ( ! Params . NoClient )
2014-03-14 14:13:41 -04:00
{
2014-09-18 18:55:01 -04:00
foreach ( var ClientPlatform in Params . ClientTargetPlatforms )
{
// Use the data platform, sometimes we will copy another platform's data
var DataPlatform = Params . GetCookedDataPlatformForClientTarget ( ClientPlatform ) ;
2015-08-26 14:17:28 -04:00
PlatformsToCook . Add ( Params . GetTargetPlatformInstance ( DataPlatform ) . GetCookPlatform ( false , Params . Client , Params . CookFlavor ) ) ;
2014-09-18 18:55:01 -04:00
}
}
if ( Params . DedicatedServer )
{
foreach ( var ServerPlatform in Params . ServerTargetPlatforms )
{
// Use the data platform, sometimes we will copy another platform's data
var DataPlatform = Params . GetCookedDataPlatformForServerTarget ( ServerPlatform ) ;
PlatformsToCook . Add ( Params . GetTargetPlatformInstance ( DataPlatform ) . GetCookPlatform ( true , false , Params . CookFlavor ) ) ;
}
}
if ( Params . Clean . HasValue & & Params . Clean . Value & & ! Params . IterativeCooking )
{
2015-08-20 09:37:11 -04:00
Log ( "Cleaning cooked data." ) ;
2014-09-18 18:55:01 -04:00
CleanupCookedData ( PlatformsToCook . ToList ( ) , Params ) ;
}
// cook the set of maps, or the run map, or nothing
string [ ] Maps = null ;
if ( Params . HasMapsToCook )
{
Maps = Params . MapsToCook . ToArray ( ) ;
2015-02-04 16:18:11 -05:00
foreach ( var M in Maps )
{
2015-08-20 09:37:11 -04:00
Log ( "HasMapsToCook " + M . ToString ( ) ) ;
2015-02-04 16:18:11 -05:00
}
foreach ( var M in Params . MapsToCook )
{
2015-08-20 09:37:11 -04:00
Log ( "Params.HasMapsToCook " + M . ToString ( ) ) ;
2015-02-04 16:18:11 -05:00
}
2014-09-18 18:55:01 -04:00
}
string [ ] Dirs = null ;
if ( Params . HasDirectoriesToCook )
{
Dirs = Params . DirectoriesToCook . ToArray ( ) ;
}
2014-10-27 19:33:51 -04:00
string InternationalizationPreset = null ;
if ( Params . HasInternationalizationPreset )
{
InternationalizationPreset = Params . InternationalizationPreset ;
}
Copying //UE4/Fortnite-Staging to //UE4/Main
#lockdown nick.penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2806454 on 2015/12/16 by Bob.Tellez
#UE4 Getting crash reporting working again on linux servers. Since -Unattended is now being passed BEFORE the target folder, the cmd line parsing code was failing so now it parses tokens and switches in a more general way. Also, diagnostics.txt had the incorrect case, since the d is supposed to be capitolized and the crash report processor is case sensitive.
#rb Ben.Zeigler
#codereview Dmitry.Rekman
Change 2805502 on 2015/12/16 by Ben.Zeigler
#UE4 Move ValidateEnumProperties into ValidateGeneratedClass, it was happening too early in the generation process so was being called at an invalid time.
As a result of this ValidateEnumProperties will not be called correctly for compile on load blueprints, that issue is covered in UE-24569
#codereview mike.beach, bob.tellez
Change 2805288 on 2015/12/16 by David.Nikdel
#HTTP #HttpRetry
- Add new Failed_ConnectionError code to EHttpRequestStatus to distinguish between connection errors and protocol errors.
- Changed HTTP retry logic a little bit
* If a response was received, retry on service-specific explicit HTTP codes (defaults to empty)
* If a response was not received and we did not send a full request, automatically retry
* If a response was not received and a request may have been sent, retry if the verb is GET or HEAD (should be idempotent)
- Adjusted Curl/IOS/Mac/PS4/WinInet to try and distinguish Failed_ConnectionError where possible
* Other systems will default to Failed which is ok (ConnectionError is an opportunistic categorization)
* Opened a PS4 ticket to try to improve detection, but unfortunately there's no way (currently) to distinguish between send timeout, connection timeout, and receive timeout, the latter being the problematic case.
- Removed the concept of global/default HTTP retry status codes. No system has enough knowledge to set those globally.
* Individual requests still specify explicit "retryable" codes and McpServiceBase sets that on each request on a per-service basis
#RB: Sam.Zamani
#CodeReview: Sam.Zamani, Josh.Markiewicz, Alex.Fennell, Dmitry.Rekman, Sam.Spiro
#Fixes: FORT-17804
Change 2803864 on 2015/12/15 by Bob.Tellez
#UE4 Changed usage of !UE_SERVER to !IsRunningDedicatedServer in cases where we are preventing load attempts on UFonts. This is so running an editor build with -server works the same as running a cooked server.
#rb Dmitry.Rekman
#codereview Nick.Darnell
Change 2803677 on 2015/12/15 by Billy.Bramer
- Expose equality and inequality operators for gameplay attributes
#rb Todd.Eckert
Change 2802881 on 2015/12/14 by Bob.Tellez
#UE4 InheritableComponentHandler no longer keeps records for components that we are no longer inheriting.
#rb Phillip.Kavan, Maciej.Mroz
#codereview Phillip.Kavan, Maciej.Mroz
Change 2801636 on 2015/12/14 by Bob.Tellez
#UE4 Returning package insert order for non-imports back to being after those of matching priorities unconditionally since this is what you want even when you are not using the asset registry to preload packages.
#codereview Graeme.Thornton
Change 2800400 on 2015/12/11 by Jonathan.Lindquist
Submitting a new Pivot Painter Edition
- now renders to textures
- improved workflow
- greater capabilities
Change 2799579 on 2015/12/11 by John.Abercrombie
[AUTOMERGE]
Fixed EQS BP query wrappers getting GCed before wrapped query finishes #UE4
Fixes FORT-18649 - Patrols don't spawn consistently
- The patrol blueprint was waiting (endlessly) for an EQS query to finish but because the wrapper could be GC-ed while the EQS query was running the delegate would never fire
#rb me (this code was written by MieszkoZ)
(removed code review for integration of Mieszko.Zielinski, Phil.Cole, Dominic.Barile)
--------
Integrated using branch UE4-Fortnite-To-UE4-FortniteReleases/0.10 (reversed) of change#2799575 by John.Abercrombie on 2015/12/11 09:55:11.
Change 2799018 on 2015/12/10 by Bob.Tellez
#UE4 The asset registry tags stripped from cooked builds is now a blacklist by default that includes only the FiB tag. You can opt-in to using the whitelist by flipping the bUseAssetRegistryTagsWhitelistInsteadOfBlacklist flag.
#rb Fred.Kimberley
#codereview Peter.Knepley
Change 2798926 on 2015/12/10 by Bob.Tellez
#UE4 Removed some showflags from the list of "Fixed" showflags since they were actually in use at runtime in Fortnite in a scene capture.
#jira FORT-18514
#codereview Martin.Mittring
Change 2797758 on 2015/12/10 by Mark.Satterthwaite
Defer calls to AUGraphUpdate into FCoreAudioDevice::UpdateHardware - this call will synchronise the calling thread with the CoreAudio thread/run-loop so that the CoreAudio graph is safe to modify and this may incur a significant stall. This means it is far more efficient to amortise the cost of all changes to the graph with a single call. To ensure correctness the audio format conversion components are cached and disposed of after the call to AUGraphUpdate so that any existing operations on the CoreAudio thread are completed prior to disposal.
Change 2781204 on 2015/11/25 by Dmitry.Rekman
Linux: use jemalloc by default if available.
- Alleviates one of the reasons for player disconnect (FORT-18048), which was machines running OOM.
#rb Bob.Tellez
#codereview Bob.Tellez, Ben.Zeigler
Change 2779398 on 2015/11/24 by Mark.Satterthwaite
Switch the default graphics API on Mac back to OpenGL, but allow Metal to run with -metal (or -metalsm5 for experimental SM5 support).
2016-01-08 19:10:43 -05:00
string [ ] CulturesToCook = null ;
2014-09-18 18:55:01 -04:00
if ( Params . HasCulturesToCook )
{
Copying //UE4/Fortnite-Staging to //UE4/Main
#lockdown nick.penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2806454 on 2015/12/16 by Bob.Tellez
#UE4 Getting crash reporting working again on linux servers. Since -Unattended is now being passed BEFORE the target folder, the cmd line parsing code was failing so now it parses tokens and switches in a more general way. Also, diagnostics.txt had the incorrect case, since the d is supposed to be capitolized and the crash report processor is case sensitive.
#rb Ben.Zeigler
#codereview Dmitry.Rekman
Change 2805502 on 2015/12/16 by Ben.Zeigler
#UE4 Move ValidateEnumProperties into ValidateGeneratedClass, it was happening too early in the generation process so was being called at an invalid time.
As a result of this ValidateEnumProperties will not be called correctly for compile on load blueprints, that issue is covered in UE-24569
#codereview mike.beach, bob.tellez
Change 2805288 on 2015/12/16 by David.Nikdel
#HTTP #HttpRetry
- Add new Failed_ConnectionError code to EHttpRequestStatus to distinguish between connection errors and protocol errors.
- Changed HTTP retry logic a little bit
* If a response was received, retry on service-specific explicit HTTP codes (defaults to empty)
* If a response was not received and we did not send a full request, automatically retry
* If a response was not received and a request may have been sent, retry if the verb is GET or HEAD (should be idempotent)
- Adjusted Curl/IOS/Mac/PS4/WinInet to try and distinguish Failed_ConnectionError where possible
* Other systems will default to Failed which is ok (ConnectionError is an opportunistic categorization)
* Opened a PS4 ticket to try to improve detection, but unfortunately there's no way (currently) to distinguish between send timeout, connection timeout, and receive timeout, the latter being the problematic case.
- Removed the concept of global/default HTTP retry status codes. No system has enough knowledge to set those globally.
* Individual requests still specify explicit "retryable" codes and McpServiceBase sets that on each request on a per-service basis
#RB: Sam.Zamani
#CodeReview: Sam.Zamani, Josh.Markiewicz, Alex.Fennell, Dmitry.Rekman, Sam.Spiro
#Fixes: FORT-17804
Change 2803864 on 2015/12/15 by Bob.Tellez
#UE4 Changed usage of !UE_SERVER to !IsRunningDedicatedServer in cases where we are preventing load attempts on UFonts. This is so running an editor build with -server works the same as running a cooked server.
#rb Dmitry.Rekman
#codereview Nick.Darnell
Change 2803677 on 2015/12/15 by Billy.Bramer
- Expose equality and inequality operators for gameplay attributes
#rb Todd.Eckert
Change 2802881 on 2015/12/14 by Bob.Tellez
#UE4 InheritableComponentHandler no longer keeps records for components that we are no longer inheriting.
#rb Phillip.Kavan, Maciej.Mroz
#codereview Phillip.Kavan, Maciej.Mroz
Change 2801636 on 2015/12/14 by Bob.Tellez
#UE4 Returning package insert order for non-imports back to being after those of matching priorities unconditionally since this is what you want even when you are not using the asset registry to preload packages.
#codereview Graeme.Thornton
Change 2800400 on 2015/12/11 by Jonathan.Lindquist
Submitting a new Pivot Painter Edition
- now renders to textures
- improved workflow
- greater capabilities
Change 2799579 on 2015/12/11 by John.Abercrombie
[AUTOMERGE]
Fixed EQS BP query wrappers getting GCed before wrapped query finishes #UE4
Fixes FORT-18649 - Patrols don't spawn consistently
- The patrol blueprint was waiting (endlessly) for an EQS query to finish but because the wrapper could be GC-ed while the EQS query was running the delegate would never fire
#rb me (this code was written by MieszkoZ)
(removed code review for integration of Mieszko.Zielinski, Phil.Cole, Dominic.Barile)
--------
Integrated using branch UE4-Fortnite-To-UE4-FortniteReleases/0.10 (reversed) of change#2799575 by John.Abercrombie on 2015/12/11 09:55:11.
Change 2799018 on 2015/12/10 by Bob.Tellez
#UE4 The asset registry tags stripped from cooked builds is now a blacklist by default that includes only the FiB tag. You can opt-in to using the whitelist by flipping the bUseAssetRegistryTagsWhitelistInsteadOfBlacklist flag.
#rb Fred.Kimberley
#codereview Peter.Knepley
Change 2798926 on 2015/12/10 by Bob.Tellez
#UE4 Removed some showflags from the list of "Fixed" showflags since they were actually in use at runtime in Fortnite in a scene capture.
#jira FORT-18514
#codereview Martin.Mittring
Change 2797758 on 2015/12/10 by Mark.Satterthwaite
Defer calls to AUGraphUpdate into FCoreAudioDevice::UpdateHardware - this call will synchronise the calling thread with the CoreAudio thread/run-loop so that the CoreAudio graph is safe to modify and this may incur a significant stall. This means it is far more efficient to amortise the cost of all changes to the graph with a single call. To ensure correctness the audio format conversion components are cached and disposed of after the call to AUGraphUpdate so that any existing operations on the CoreAudio thread are completed prior to disposal.
Change 2781204 on 2015/11/25 by Dmitry.Rekman
Linux: use jemalloc by default if available.
- Alleviates one of the reasons for player disconnect (FORT-18048), which was machines running OOM.
#rb Bob.Tellez
#codereview Bob.Tellez, Ben.Zeigler
Change 2779398 on 2015/11/24 by Mark.Satterthwaite
Switch the default graphics API on Mac back to OpenGL, but allow Metal to run with -metal (or -metalsm5 for experimental SM5 support).
2016-01-08 19:10:43 -05:00
CulturesToCook = Params . CulturesToCook . ToArray ( ) ;
2014-09-18 18:55:01 -04:00
}
2014-10-27 19:33:51 -04:00
try
2014-12-17 10:00:26 -05:00
{
2015-07-30 11:01:02 -04:00
var CommandletParams = IsBuildMachine ? "-buildmachine -fileopenlog" : "-fileopenlog" ;
2015-02-04 16:18:11 -05:00
if ( Params . UnversionedCookedContent )
{
CommandletParams + = " -unversioned" ;
}
2015-06-09 10:11:45 -04:00
if ( Params . FastCook )
{
CommandletParams + = " -FastCook" ;
}
2014-12-17 10:00:26 -05:00
if ( Params . UseDebugParamForEditorExe )
{
CommandletParams + = " -debug" ;
}
if ( Params . Manifests )
{
CommandletParams + = " -manifests" ;
}
if ( Params . IterativeCooking )
{
CommandletParams + = " -iterate" ;
}
2015-02-04 16:18:11 -05:00
if ( Params . CookMapsOnly )
{
CommandletParams + = " -mapsonly" ;
}
2014-12-15 11:35:52 -05:00
if ( Params . NewCook )
{
CommandletParams + = " -newcook" ;
2014-12-17 10:00:26 -05:00
}
2015-02-04 16:18:11 -05:00
if ( Params . OldCook )
{
CommandletParams + = " -oldcook" ;
}
if ( Params . CookAll )
{
CommandletParams + = " -cookall" ;
}
2014-12-15 11:35:52 -05:00
if ( Params . HasCreateReleaseVersion )
{
CommandletParams + = " -createreleaseversion=" + Params . CreateReleaseVersion ;
}
2015-07-06 10:03:34 -04:00
if ( Params . SkipCookingEditorContent )
{
CommandletParams + = " -skipeditorcontent" ;
}
if ( Params . NumCookersToSpawn ! = 0 )
{
CommandletParams + = " -numcookerstospawn=" + Params . NumCookersToSpawn ;
}
2014-12-17 10:00:26 -05:00
if ( Params . HasDLCName )
{
CommandletParams + = " -dlcname=" + Params . DLCName ;
2015-04-20 11:15:20 -04:00
if ( ! Params . DLCIncludeEngineContent )
{
CommandletParams + = " -errorOnEngineContentUse" ;
}
2014-12-17 10:00:26 -05:00
}
2015-03-30 11:56:48 -04:00
// don't include the based on release version unless we are cooking dlc or creating a new release version
// in this case the based on release version is used in packaging
if ( Params . HasBasedOnReleaseVersion & & ( Params . HasDLCName | | Params . HasCreateReleaseVersion ) )
{
CommandletParams + = " -basedonreleaseversion=" + Params . BasedOnReleaseVersion ;
}
2015-02-13 15:35:16 -05:00
// if we are not going to pak but we specified compressed then compress in the cooker ;)
// otherwise compress the pak files
if ( ! Params . Pak & & ! Params . SkipPak & & Params . Compressed )
{
CommandletParams + = " -compressed" ;
}
2015-09-29 15:29:44 -04:00
// we provide the option for users to run a conversion on certain (script) assets, translating them
Copying //UE4/Dev-Blueprints to Dev-Main (//UE4/Dev-Main) @ 2781164
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2716841 on 2015/10/05 by Mike.Beach
(WIP) Cleaning up how we setup script assets for replacement on cook (aligning more with the Blueprint conversion tool).
#codereview Maciej.Mroz
Change 2719089 on 2015/10/07 by Maciej.Mroz
ToValidCPPIdentifierChars handles propertly '?' char.
#codereview Dan.Oconnor
Change 2719361 on 2015/10/07 by Maciej.Mroz
Generated native code for AnimBPGC - some preliminary changes.
Refactor: UAnimBlueprintGeneratedClass is not accessed directly in runtime. It is accessed via UAnimClassInterface interface.
Properties USkeletalMeshComponent::AnimBlueprintGeneratedClass and UInterpTrackFloatAnimBPParam::AnimBlueprintClass were changed into "TSubclassOf<UAnimInstance> AnimClass"
The UDynamicClass also can deliver the IAnimClassInterface interface. See UAnimClassData, IAnimClassInterface::GetFromClass and UDynamicClass::AnimClassImplementation.
#codereview Lina.Halper, Thomas.Sarkanen
Change 2719383 on 2015/10/07 by Maciej.Mroz
Debug-only code removed
Change 2720528 on 2015/10/07 by Dan.Oconnor
Fix for determinsitc cooking of async tasks and load asset nodes
#codereview Mike.Beach, Maciej.Mroz
Change 2721273 on 2015/10/08 by Maciej.Mroz
Blueprint Compiler Cpp Backend
- Anim Blueprints can be converted
- Various fixes/improvements
Change 2721310 on 2015/10/08 by Maciej.Mroz
refactor (cl#2719361) - no "auto" keyword
Change 2721727 on 2015/10/08 by Mike.Beach
(WIP) Setup the cook commandlet so it handles converted assets, replacing them with generated classes.
- Refactored the conversion manifest (using a map over an array)
- Centralized destination paths into a helper struct (for the manifest)
- Generating an Editor module that automatically hooks into the cook process when enabled
- Loading and applying native replacments for the cook
Change 2723276 on 2015/10/09 by Michael.Schoell
Blueprints duplicated for PIE will no longer register as dependencies to other Blueprint.
#jira UE-16695 - Editor freezes then crashes while attempting to save during PIE
#jira UE-21614 - [CrashReport] Crash while saving during PIE - FKismetEditorUtilities::CompileBlueprint() kismet2.cpp:736
Change 2724345 on 2015/10/11 by Ben.Cosh
Blueprint profiler at first pass, this includes the ability to instrument specific blueprints with realtime editor stat display.
#UEBP-21 - Profiling data capture and storage
#UEBP-13 - Performance capture landing page
#Branch UE4
#Proj BlueprintProfiler, BlueprintGraph, EditorStyle, Kismet, UnrealEd, CoreUObject, Engine
Change 2724613 on 2015/10/12 by Ben.Cosh
Incremental update for blueprint profiler to fix the way some of the reported stats cascade through events and branches and additionally some missed bits of code are refactored/removed.
#Branch UE4
#Proj BlueprintProfiler
#info Whilst looking into this I spotted the reason why the stats seem so erratic, There appears to be an issue with FText's use of EXPERIMENTAL_TEXT_FAST_DECIMAL_FORMAT which I have reported, but ideally disable this locally until a fix is integrated.
Change 2724723 on 2015/10/12 by Maciej.Mroz
Constructor of a dynamic class creates CDO.
#codereview Robert.Manuszewski
Change 2725108 on 2015/10/12 by Mike.Beach
[UE-21891] Minor fix to the array shuffle() function; now processes the last entry like all the others.
Change 2726358 on 2015/10/13 by Maciej.Mroz
UDataTable is properly saved even if its RowStruct is null.
https://udn.unrealengine.com/questions/264064/crash-using-hotreload-in-custom-datatable-cdo-clas.html
Change 2727395 on 2015/10/13 by Mike.Beach
(WIP) Second pass on the Blueprint conversion pipeline; setting it up for more optimal (speedier) performance.
* Using stubs for replacements (rather than loading dynamic replacement).
* Giving the cook commandlet more control (so a conversion could be ran directly).
* Now logging replacements by old object path (to account for UPackage replacement queries).
* Fix for [UE-21947], unshelved from CL 2724944 (by Maciej.Mroz).
#codereview Maciej.Mroz
Change 2727484 on 2015/10/13 by Mike.Beach
[UE-22008] Fixing up comment/tooltip typo for UActorComponent::bAutoActivate.
Change 2727527 on 2015/10/13 by Mike.Beach
Downgrading an inactionable EdGraph warning, while adding more info so we could possibly determine what's happening.
Change 2727702 on 2015/10/13 by Dan.Oconnor
Fix for crash in UDelegateProperty::GetCPPType when called on a function with no OwnerClass (events)
Change 2727968 on 2015/10/14 by Maciej.Mroz
Since ConstructorHelpers::FClassFinder is usually static, the loaded class should be in root set, to prevent the pointer stored in ConstructorHelpers::FClassFinder from being obsolete.
FindOrLoadClass behaves now like FindOrLoadObject.
#codereview Robert.Manuszewski, Nick.Whiting
Change 2728139 on 2015/10/14 by Phillip.Kavan
2015-11-25 18:47:20 -05:00
// into native source code... the cooker needs to
if ( Params . RunAssetNativization )
2015-09-29 15:29:44 -04:00
{
Copying //UE4/Dev-Blueprints to Dev-Main (//UE4/Dev-Main)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2781504 on 2015/11/25 by Mike.Beach
Guarding against invalid nodes for deferred graph node actions (add, remove, select), by using TWeakObjectPtr instead of raw UEdGraphNode pointers.
#jira UE-23371
#codereview Dan.OConnor
Change 2781513 on 2015/11/25 by Michael.Schoell
Find-in-Blueprints optimized gathering.
Size of data has shrunk in the Asset Registry by up to one fifth the old size!
Performance moderately improved.
Load and save times of Blueprints increased, less redundant gathering of searchable data.
#jira UE-22928 - Optimize Find-in-Blueprints Gathering of Searchable Data
Change 2781517 on 2015/11/25 by Michael.Schoell
Marked FTimerHandle::Handle as a UPROPERTY(transient) so that Blueprints can check the equality of two instances of the structure.
#jira UE-23136 - Remove Item Node Removes All Objects in an Array
Change 2781804 on 2015/11/26 by Maciej.Mroz
Changed ConformImplementedEvents.
#jira UE-23738 BP_RiftMage_Ultimate fails to convert during cooking
#codereview Phillip.Kavan, Mike.Beach
Change 2781821 on 2015/11/26 by Ben.Cosh
This reinstates the blueprint debugging keymaps and adds additional functionality for step over and step out as key maps in the PIE world controls.
#UEBP-66 - Blueprint debug keymappings
#UE-16817 - Add step-in, step-over, and run until here functions for breakpoints
#UE-12481 - The F10 key doesn't work for stepping blueprint debugging
#Branch UE4
#Proj GraphEditor, Kismet, UnrealEd, CoreUObject, Slate
reviewedby chris.wood
Change 2781861 on 2015/11/26 by Maciej.Mroz
UE-23626 Converted tower defense game - you cannot click to place towers
CodeGenerator generates overriden exported names for events and functions.
#codereview Dan.Oconnor, Steve.Robb
Change 2782798 on 2015/11/30 by Maciej.Mroz
BP C++ conversion: components from SCS calls AttachTo (with ParentSocket parameter).
#jira UE-23862 Pawns in TowerDefenseGame don't move in converted build
#codereview Phillip.Kavan, Mike.Beach, Dan.Oconnor
Change 2782881 on 2015/11/30 by Michael.Schoell
Fixed ensure when promoting function graphs from interfaces during interface removal.
#jira UE-23717 - Ensure removing an implemented interface when transfering functions
Change 2783041 on 2015/11/30 by Maciej.Mroz
BP C++ conversion: All variables from Event Graph are listed as class properties.
#jira UE-23629 Converted tower defense game - Cam scrolls to upper left when mouse leaves window
#codereview Mike.Beach, Dan.Oconnor
Change 2783080 on 2015/11/30 by Michael.Schoell
Removing an interface function's output parameters will no longer cause Blueprints implementing the function to error.
Functions expected as event overrides will accept function graph implementations and give a warning informing that it is unexpected.
All function graphs (interfaces, interface implementations, overrides) can be duplicated. Parent function calls will be removed.
Duplicating graphs will correct names of objects in child Blueprints.
Function overrides of interfaces expected as an event can be deleted.
Duplicating graphs while in PIE is no longer possible.
When removing an interface, the operation can now be canceled.
#jira UE-13335 - Inside a BP Interface, changing a Function output to an input will cause a compile error in the reference bp
Change 2783338 on 2015/11/30 by Michael.Schoell
New output pins on function result nodes will properly fill out with valid default values.
All invalid pins will auto-validate themselves on node reconstruction when opening the Blueprint.
#jira UE-1928 - BLUEPRINTS: Default value not supplied for output parameters of function
Change 2783742 on 2015/11/30 by Phillip.Kavan
[UE-15463] Add special-case handling for failed imports of BPGC-owned component archetype objects on level load.
change summary:
- modified FLinkerLoad::VerifyImport() to customize the load error messaging for missing component archetype objects
Change 2784652 on 2015/12/01 by Ben.Cosh
Fix for crash whilst undoing the creation of a macro and currently displaying the tooltip in the blueprint editor.
#UE-23955 - Adding a macro graph through MyBlueprint and then calling undo causes a crash updating the macro tooltip.
#Branch UE4
#Proj Kismet
#CodeReview Chris.Wood
Change 2784834 on 2015/12/01 by Michael.Schoell
Added functions to convert from string to: Vector, Vector2D, Rotator, Color.
#jira UE-23761 - GitHub 1795 : [KismetStringLibrary] Convert String Back Into Vector, Rotator, Float, Adding Support for 2 way conversion! ? Rama
PR #1795
2015-12-16 17:17:43 -05:00
CommandletParams + = " -NativizeAssets" ;
// Store plugin paths now, it's easiest to do so while PlatformsToCook is still available:
Copying //UE4/Dev-Blueprints to Dev-Main (//UE4/Dev-Main) @ 2781164
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2716841 on 2015/10/05 by Mike.Beach
(WIP) Cleaning up how we setup script assets for replacement on cook (aligning more with the Blueprint conversion tool).
#codereview Maciej.Mroz
Change 2719089 on 2015/10/07 by Maciej.Mroz
ToValidCPPIdentifierChars handles propertly '?' char.
#codereview Dan.Oconnor
Change 2719361 on 2015/10/07 by Maciej.Mroz
Generated native code for AnimBPGC - some preliminary changes.
Refactor: UAnimBlueprintGeneratedClass is not accessed directly in runtime. It is accessed via UAnimClassInterface interface.
Properties USkeletalMeshComponent::AnimBlueprintGeneratedClass and UInterpTrackFloatAnimBPParam::AnimBlueprintClass were changed into "TSubclassOf<UAnimInstance> AnimClass"
The UDynamicClass also can deliver the IAnimClassInterface interface. See UAnimClassData, IAnimClassInterface::GetFromClass and UDynamicClass::AnimClassImplementation.
#codereview Lina.Halper, Thomas.Sarkanen
Change 2719383 on 2015/10/07 by Maciej.Mroz
Debug-only code removed
Change 2720528 on 2015/10/07 by Dan.Oconnor
Fix for determinsitc cooking of async tasks and load asset nodes
#codereview Mike.Beach, Maciej.Mroz
Change 2721273 on 2015/10/08 by Maciej.Mroz
Blueprint Compiler Cpp Backend
- Anim Blueprints can be converted
- Various fixes/improvements
Change 2721310 on 2015/10/08 by Maciej.Mroz
refactor (cl#2719361) - no "auto" keyword
Change 2721727 on 2015/10/08 by Mike.Beach
(WIP) Setup the cook commandlet so it handles converted assets, replacing them with generated classes.
- Refactored the conversion manifest (using a map over an array)
- Centralized destination paths into a helper struct (for the manifest)
- Generating an Editor module that automatically hooks into the cook process when enabled
- Loading and applying native replacments for the cook
Change 2723276 on 2015/10/09 by Michael.Schoell
Blueprints duplicated for PIE will no longer register as dependencies to other Blueprint.
#jira UE-16695 - Editor freezes then crashes while attempting to save during PIE
#jira UE-21614 - [CrashReport] Crash while saving during PIE - FKismetEditorUtilities::CompileBlueprint() kismet2.cpp:736
Change 2724345 on 2015/10/11 by Ben.Cosh
Blueprint profiler at first pass, this includes the ability to instrument specific blueprints with realtime editor stat display.
#UEBP-21 - Profiling data capture and storage
#UEBP-13 - Performance capture landing page
#Branch UE4
#Proj BlueprintProfiler, BlueprintGraph, EditorStyle, Kismet, UnrealEd, CoreUObject, Engine
Change 2724613 on 2015/10/12 by Ben.Cosh
Incremental update for blueprint profiler to fix the way some of the reported stats cascade through events and branches and additionally some missed bits of code are refactored/removed.
#Branch UE4
#Proj BlueprintProfiler
#info Whilst looking into this I spotted the reason why the stats seem so erratic, There appears to be an issue with FText's use of EXPERIMENTAL_TEXT_FAST_DECIMAL_FORMAT which I have reported, but ideally disable this locally until a fix is integrated.
Change 2724723 on 2015/10/12 by Maciej.Mroz
Constructor of a dynamic class creates CDO.
#codereview Robert.Manuszewski
Change 2725108 on 2015/10/12 by Mike.Beach
[UE-21891] Minor fix to the array shuffle() function; now processes the last entry like all the others.
Change 2726358 on 2015/10/13 by Maciej.Mroz
UDataTable is properly saved even if its RowStruct is null.
https://udn.unrealengine.com/questions/264064/crash-using-hotreload-in-custom-datatable-cdo-clas.html
Change 2727395 on 2015/10/13 by Mike.Beach
(WIP) Second pass on the Blueprint conversion pipeline; setting it up for more optimal (speedier) performance.
* Using stubs for replacements (rather than loading dynamic replacement).
* Giving the cook commandlet more control (so a conversion could be ran directly).
* Now logging replacements by old object path (to account for UPackage replacement queries).
* Fix for [UE-21947], unshelved from CL 2724944 (by Maciej.Mroz).
#codereview Maciej.Mroz
Change 2727484 on 2015/10/13 by Mike.Beach
[UE-22008] Fixing up comment/tooltip typo for UActorComponent::bAutoActivate.
Change 2727527 on 2015/10/13 by Mike.Beach
Downgrading an inactionable EdGraph warning, while adding more info so we could possibly determine what's happening.
Change 2727702 on 2015/10/13 by Dan.Oconnor
Fix for crash in UDelegateProperty::GetCPPType when called on a function with no OwnerClass (events)
Change 2727968 on 2015/10/14 by Maciej.Mroz
Since ConstructorHelpers::FClassFinder is usually static, the loaded class should be in root set, to prevent the pointer stored in ConstructorHelpers::FClassFinder from being obsolete.
FindOrLoadClass behaves now like FindOrLoadObject.
#codereview Robert.Manuszewski, Nick.Whiting
Change 2728139 on 2015/10/14 by Phillip.Kavan
2015-11-25 18:47:20 -05:00
string ProjectDir = Params . RawProjectPath . Directory . ToString ( ) ;
Copying //UE4/Dev-Blueprints to Dev-Main (//UE4/Dev-Main)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2781504 on 2015/11/25 by Mike.Beach
Guarding against invalid nodes for deferred graph node actions (add, remove, select), by using TWeakObjectPtr instead of raw UEdGraphNode pointers.
#jira UE-23371
#codereview Dan.OConnor
Change 2781513 on 2015/11/25 by Michael.Schoell
Find-in-Blueprints optimized gathering.
Size of data has shrunk in the Asset Registry by up to one fifth the old size!
Performance moderately improved.
Load and save times of Blueprints increased, less redundant gathering of searchable data.
#jira UE-22928 - Optimize Find-in-Blueprints Gathering of Searchable Data
Change 2781517 on 2015/11/25 by Michael.Schoell
Marked FTimerHandle::Handle as a UPROPERTY(transient) so that Blueprints can check the equality of two instances of the structure.
#jira UE-23136 - Remove Item Node Removes All Objects in an Array
Change 2781804 on 2015/11/26 by Maciej.Mroz
Changed ConformImplementedEvents.
#jira UE-23738 BP_RiftMage_Ultimate fails to convert during cooking
#codereview Phillip.Kavan, Mike.Beach
Change 2781821 on 2015/11/26 by Ben.Cosh
This reinstates the blueprint debugging keymaps and adds additional functionality for step over and step out as key maps in the PIE world controls.
#UEBP-66 - Blueprint debug keymappings
#UE-16817 - Add step-in, step-over, and run until here functions for breakpoints
#UE-12481 - The F10 key doesn't work for stepping blueprint debugging
#Branch UE4
#Proj GraphEditor, Kismet, UnrealEd, CoreUObject, Slate
reviewedby chris.wood
Change 2781861 on 2015/11/26 by Maciej.Mroz
UE-23626 Converted tower defense game - you cannot click to place towers
CodeGenerator generates overriden exported names for events and functions.
#codereview Dan.Oconnor, Steve.Robb
Change 2782798 on 2015/11/30 by Maciej.Mroz
BP C++ conversion: components from SCS calls AttachTo (with ParentSocket parameter).
#jira UE-23862 Pawns in TowerDefenseGame don't move in converted build
#codereview Phillip.Kavan, Mike.Beach, Dan.Oconnor
Change 2782881 on 2015/11/30 by Michael.Schoell
Fixed ensure when promoting function graphs from interfaces during interface removal.
#jira UE-23717 - Ensure removing an implemented interface when transfering functions
Change 2783041 on 2015/11/30 by Maciej.Mroz
BP C++ conversion: All variables from Event Graph are listed as class properties.
#jira UE-23629 Converted tower defense game - Cam scrolls to upper left when mouse leaves window
#codereview Mike.Beach, Dan.Oconnor
Change 2783080 on 2015/11/30 by Michael.Schoell
Removing an interface function's output parameters will no longer cause Blueprints implementing the function to error.
Functions expected as event overrides will accept function graph implementations and give a warning informing that it is unexpected.
All function graphs (interfaces, interface implementations, overrides) can be duplicated. Parent function calls will be removed.
Duplicating graphs will correct names of objects in child Blueprints.
Function overrides of interfaces expected as an event can be deleted.
Duplicating graphs while in PIE is no longer possible.
When removing an interface, the operation can now be canceled.
#jira UE-13335 - Inside a BP Interface, changing a Function output to an input will cause a compile error in the reference bp
Change 2783338 on 2015/11/30 by Michael.Schoell
New output pins on function result nodes will properly fill out with valid default values.
All invalid pins will auto-validate themselves on node reconstruction when opening the Blueprint.
#jira UE-1928 - BLUEPRINTS: Default value not supplied for output parameters of function
Change 2783742 on 2015/11/30 by Phillip.Kavan
[UE-15463] Add special-case handling for failed imports of BPGC-owned component archetype objects on level load.
change summary:
- modified FLinkerLoad::VerifyImport() to customize the load error messaging for missing component archetype objects
Change 2784652 on 2015/12/01 by Ben.Cosh
Fix for crash whilst undoing the creation of a macro and currently displaying the tooltip in the blueprint editor.
#UE-23955 - Adding a macro graph through MyBlueprint and then calling undo causes a crash updating the macro tooltip.
#Branch UE4
#Proj Kismet
#CodeReview Chris.Wood
Change 2784834 on 2015/12/01 by Michael.Schoell
Added functions to convert from string to: Vector, Vector2D, Rotator, Color.
#jira UE-23761 - GitHub 1795 : [KismetStringLibrary] Convert String Back Into Vector, Rotator, Float, Adding Support for 2 way conversion! ? Rama
PR #1795
2015-12-16 17:17:43 -05:00
foreach ( var Platform in PlatformsToCook )
{
// If you change this target path you must also update logic in CookOnTheFlyServer.cpp. Passing a single directory around is cumbersome for testing, so I have hard coded it.
// Similarly if you change the .uplugin name you must update DefaultPluginName in BlueprintNativeCodeGenModule.cpp
string GeneratedPluginPath = CombinePaths ( GetDirectoryName ( ProjectDir ) , "Intermediate" , Platform , "NativizedAssets/NativizedAssets.uplugin" ) ;
Params . BlueprintPluginPaths . Add ( new FileReference ( GeneratedPluginPath ) ) ;
}
2015-09-29 15:29:44 -04:00
}
2014-12-15 11:35:52 -05:00
if ( Params . HasAdditionalCookerOptions )
{
2014-12-17 10:00:26 -05:00
string FormatedAdditionalCookerParams = Params . AdditionalCookerOptions . TrimStart ( new char [ ] { '\"' , ' ' } ) . TrimEnd ( new char [ ] { '\"' , ' ' } ) ;
2015-03-30 11:56:48 -04:00
CommandletParams + = " " ;
2014-12-15 11:35:52 -05:00
CommandletParams + = FormatedAdditionalCookerParams ;
}
2015-04-02 14:54:35 -04:00
if ( ! Params . NoClient )
{
2015-04-02 18:38:41 -04:00
var MapsList = Maps = = null ? new List < string > ( ) : Maps . ToList ( ) ;
2015-04-02 14:54:35 -04:00
foreach ( var ClientPlatform in Params . ClientTargetPlatforms )
{
var DataPlatform = Params . GetCookedDataPlatformForClientTarget ( ClientPlatform ) ;
CommandletParams + = ( Params . GetTargetPlatformInstance ( DataPlatform ) . GetCookExtraCommandLine ( Params ) ) ;
MapsList . AddRange ( ( Params . GetTargetPlatformInstance ( ClientPlatform ) . GetCookExtraMaps ( ) ) ) ;
}
Maps = MapsList . ToArray ( ) ;
}
Copying //UE4/Fortnite-Staging to //UE4/Main
#lockdown nick.penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2806454 on 2015/12/16 by Bob.Tellez
#UE4 Getting crash reporting working again on linux servers. Since -Unattended is now being passed BEFORE the target folder, the cmd line parsing code was failing so now it parses tokens and switches in a more general way. Also, diagnostics.txt had the incorrect case, since the d is supposed to be capitolized and the crash report processor is case sensitive.
#rb Ben.Zeigler
#codereview Dmitry.Rekman
Change 2805502 on 2015/12/16 by Ben.Zeigler
#UE4 Move ValidateEnumProperties into ValidateGeneratedClass, it was happening too early in the generation process so was being called at an invalid time.
As a result of this ValidateEnumProperties will not be called correctly for compile on load blueprints, that issue is covered in UE-24569
#codereview mike.beach, bob.tellez
Change 2805288 on 2015/12/16 by David.Nikdel
#HTTP #HttpRetry
- Add new Failed_ConnectionError code to EHttpRequestStatus to distinguish between connection errors and protocol errors.
- Changed HTTP retry logic a little bit
* If a response was received, retry on service-specific explicit HTTP codes (defaults to empty)
* If a response was not received and we did not send a full request, automatically retry
* If a response was not received and a request may have been sent, retry if the verb is GET or HEAD (should be idempotent)
- Adjusted Curl/IOS/Mac/PS4/WinInet to try and distinguish Failed_ConnectionError where possible
* Other systems will default to Failed which is ok (ConnectionError is an opportunistic categorization)
* Opened a PS4 ticket to try to improve detection, but unfortunately there's no way (currently) to distinguish between send timeout, connection timeout, and receive timeout, the latter being the problematic case.
- Removed the concept of global/default HTTP retry status codes. No system has enough knowledge to set those globally.
* Individual requests still specify explicit "retryable" codes and McpServiceBase sets that on each request on a per-service basis
#RB: Sam.Zamani
#CodeReview: Sam.Zamani, Josh.Markiewicz, Alex.Fennell, Dmitry.Rekman, Sam.Spiro
#Fixes: FORT-17804
Change 2803864 on 2015/12/15 by Bob.Tellez
#UE4 Changed usage of !UE_SERVER to !IsRunningDedicatedServer in cases where we are preventing load attempts on UFonts. This is so running an editor build with -server works the same as running a cooked server.
#rb Dmitry.Rekman
#codereview Nick.Darnell
Change 2803677 on 2015/12/15 by Billy.Bramer
- Expose equality and inequality operators for gameplay attributes
#rb Todd.Eckert
Change 2802881 on 2015/12/14 by Bob.Tellez
#UE4 InheritableComponentHandler no longer keeps records for components that we are no longer inheriting.
#rb Phillip.Kavan, Maciej.Mroz
#codereview Phillip.Kavan, Maciej.Mroz
Change 2801636 on 2015/12/14 by Bob.Tellez
#UE4 Returning package insert order for non-imports back to being after those of matching priorities unconditionally since this is what you want even when you are not using the asset registry to preload packages.
#codereview Graeme.Thornton
Change 2800400 on 2015/12/11 by Jonathan.Lindquist
Submitting a new Pivot Painter Edition
- now renders to textures
- improved workflow
- greater capabilities
Change 2799579 on 2015/12/11 by John.Abercrombie
[AUTOMERGE]
Fixed EQS BP query wrappers getting GCed before wrapped query finishes #UE4
Fixes FORT-18649 - Patrols don't spawn consistently
- The patrol blueprint was waiting (endlessly) for an EQS query to finish but because the wrapper could be GC-ed while the EQS query was running the delegate would never fire
#rb me (this code was written by MieszkoZ)
(removed code review for integration of Mieszko.Zielinski, Phil.Cole, Dominic.Barile)
--------
Integrated using branch UE4-Fortnite-To-UE4-FortniteReleases/0.10 (reversed) of change#2799575 by John.Abercrombie on 2015/12/11 09:55:11.
Change 2799018 on 2015/12/10 by Bob.Tellez
#UE4 The asset registry tags stripped from cooked builds is now a blacklist by default that includes only the FiB tag. You can opt-in to using the whitelist by flipping the bUseAssetRegistryTagsWhitelistInsteadOfBlacklist flag.
#rb Fred.Kimberley
#codereview Peter.Knepley
Change 2798926 on 2015/12/10 by Bob.Tellez
#UE4 Removed some showflags from the list of "Fixed" showflags since they were actually in use at runtime in Fortnite in a scene capture.
#jira FORT-18514
#codereview Martin.Mittring
Change 2797758 on 2015/12/10 by Mark.Satterthwaite
Defer calls to AUGraphUpdate into FCoreAudioDevice::UpdateHardware - this call will synchronise the calling thread with the CoreAudio thread/run-loop so that the CoreAudio graph is safe to modify and this may incur a significant stall. This means it is far more efficient to amortise the cost of all changes to the graph with a single call. To ensure correctness the audio format conversion components are cached and disposed of after the call to AUGraphUpdate so that any existing operations on the CoreAudio thread are completed prior to disposal.
Change 2781204 on 2015/11/25 by Dmitry.Rekman
Linux: use jemalloc by default if available.
- Alleviates one of the reasons for player disconnect (FORT-18048), which was machines running OOM.
#rb Bob.Tellez
#codereview Bob.Tellez, Ben.Zeigler
Change 2779398 on 2015/11/24 by Mark.Satterthwaite
Switch the default graphics API on Mac back to OpenGL, but allow Metal to run with -metal (or -metalsm5 for experimental SM5 support).
2016-01-08 19:10:43 -05:00
CookCommandlet ( Params . RawProjectPath , Params . UE4Exe , Maps , Dirs , InternationalizationPreset , CulturesToCook , CombineCommandletParams ( PlatformsToCook . ToArray ( ) ) , CommandletParams ) ;
2014-12-17 10:00:26 -05:00
}
2014-09-18 18:55:01 -04:00
catch ( Exception Ex )
{
2015-06-09 10:11:45 -04:00
if ( Params . IgnoreCookErrors )
{
LogWarning ( "Ignoring cook failure." ) ;
}
else
{
// Delete cooked data (if any) as it may be incomplete / corrupted.
2015-08-20 09:37:11 -04:00
Log ( "Cook failed. Deleting cooked data." ) ;
2015-06-09 10:11:45 -04:00
CleanupCookedData ( PlatformsToCook . ToList ( ) , Params ) ;
2015-08-20 08:38:09 -04:00
throw new AutomationException ( ExitCode . Error_UnknownCookFailure , Ex , "Cook failed." ) ;
2015-06-09 10:11:45 -04:00
}
2014-03-14 14:13:41 -04:00
}
2015-08-11 17:11:41 -04:00
if ( Params . HasDiffCookedContentPath )
{
try
{
DiffCookedContent ( Params ) ;
}
catch ( Exception Ex )
{
// Delete cooked data (if any) as it may be incomplete / corrupted.
2015-08-20 09:37:11 -04:00
Log ( "Cook failed. Deleting cooked data." ) ;
2015-08-11 17:11:41 -04:00
CleanupCookedData ( PlatformsToCook . ToList ( ) , Params ) ;
2015-08-20 08:38:09 -04:00
throw new AutomationException ( ExitCode . Error_UnknownCookFailure , Ex , "Cook failed." ) ;
2015-08-11 17:11:41 -04:00
}
}
2014-03-14 14:13:41 -04:00
}
2015-08-11 17:11:41 -04:00
2015-08-20 09:37:11 -04:00
Log ( "********** COOK COMMAND COMPLETED **********" ) ;
2014-03-14 14:13:41 -04:00
}
2015-08-11 17:11:41 -04:00
private static void DiffCookedContent ( ProjectParams Params )
{
List < UnrealTargetPlatform > PlatformsToCook = Params . ClientTargetPlatforms ;
2015-10-07 17:46:58 -04:00
string ProjectPath = Params . RawProjectPath . FullName ;
2015-08-11 17:11:41 -04:00
var CookedSandboxesPath = CombinePaths ( GetDirectoryName ( ProjectPath ) , "Saved" , "Cooked" ) ;
for ( int CookPlatformIndex = 0 ; CookPlatformIndex < PlatformsToCook . Count ; + + CookPlatformIndex )
{
// temporary directory to save the pak file to (pak file is usually not local and on network drive)
var TemporaryPakPath = CombinePaths ( GetDirectoryName ( ProjectPath ) , "Saved" , "Temp" , "LocalPKG" ) ;
// extracted files from pak file
var TemporaryFilesPath = CombinePaths ( GetDirectoryName ( ProjectPath ) , "Saved" , "Temp" , "LocalFiles" ) ;
try
{
Directory . Delete ( TemporaryPakPath , true ) ;
2015-11-12 12:38:50 -05:00
}
catch ( Exception Ex )
{
Log ( "Failed deleting temporary directories " + TemporaryPakPath + " continuing. " + Ex . GetType ( ) . ToString ( ) ) ;
}
try
{
2015-08-11 17:11:41 -04:00
Directory . Delete ( TemporaryFilesPath , true ) ;
}
2015-11-12 12:38:50 -05:00
catch ( Exception Ex )
2015-08-11 17:11:41 -04:00
{
2015-11-12 12:38:50 -05:00
Log ( "Failed deleting temporary directories " + TemporaryFilesPath + " continuing. " + Ex . GetType ( ) . ToString ( ) ) ;
2015-08-11 17:11:41 -04:00
}
2015-11-12 12:38:50 -05:00
2015-10-06 15:59:09 -04:00
try
2015-08-11 17:11:41 -04:00
{
2015-08-18 16:56:56 -04:00
2015-10-06 15:59:09 -04:00
Directory . CreateDirectory ( TemporaryPakPath ) ;
Directory . CreateDirectory ( TemporaryFilesPath ) ;
2015-08-11 17:11:41 -04:00
2015-10-06 15:59:09 -04:00
Platform CurrentPlatform = Params . GetTargetPlatformInstance ( PlatformsToCook [ CookPlatformIndex ] ) ;
2015-08-11 17:11:41 -04:00
2015-10-06 15:59:09 -04:00
string SourceCookedContentPath = Params . DiffCookedContentPath ;
2015-08-11 17:11:41 -04:00
2015-10-06 15:59:09 -04:00
List < string > PakFiles = new List < string > ( ) ;
2015-11-17 14:50:21 -05:00
string CookPlatformString = CurrentPlatform . GetCookPlatform ( false , Params . HasDedicatedServerAndClient , Params . CookFlavor ) ;
2015-10-06 15:59:09 -04:00
if ( Path . HasExtension ( SourceCookedContentPath ) & & ( ! SourceCookedContentPath . EndsWith ( ".pak" ) ) )
2015-08-18 16:56:56 -04:00
{
2015-10-06 15:59:09 -04:00
// must be a per platform pkg file try this
CurrentPlatform . ExtractPackage ( Params , Params . DiffCookedContentPath , TemporaryPakPath ) ;
// find the pak file
2015-11-12 12:38:50 -05:00
PakFiles . AddRange ( Directory . EnumerateFiles ( TemporaryPakPath , Params . ShortProjectName + "*.pak" , SearchOption . AllDirectories ) ) ;
PakFiles . AddRange ( Directory . EnumerateFiles ( TemporaryPakPath , "pakchunk*.pak" , SearchOption . AllDirectories ) ) ;
2015-08-18 16:56:56 -04:00
}
2015-11-17 14:50:21 -05:00
else if ( ! Path . HasExtension ( SourceCookedContentPath ) )
2015-08-11 17:11:41 -04:00
{
2015-10-06 15:59:09 -04:00
// try find the pak or pkg file
string SourceCookedContentPlatformPath = CombinePaths ( SourceCookedContentPath , CookPlatformString ) ;
2015-11-17 14:50:21 -05:00
foreach ( var PakName in Directory . EnumerateFiles ( SourceCookedContentPlatformPath , Params . ShortProjectName + "*.pak" , SearchOption . AllDirectories ) )
2015-08-11 17:11:41 -04:00
{
2015-10-06 15:59:09 -04:00
string TemporaryPakFilename = CombinePaths ( TemporaryPakPath , Path . GetFileName ( PakName ) ) ;
File . Copy ( PakName , TemporaryPakFilename ) ;
PakFiles . Add ( TemporaryPakFilename ) ;
}
2015-11-17 14:50:21 -05:00
foreach ( var PakName in Directory . EnumerateFiles ( SourceCookedContentPlatformPath , "pakchunk*.pak" , SearchOption . AllDirectories ) )
{
string TemporaryPakFilename = CombinePaths ( TemporaryPakPath , Path . GetFileName ( PakName ) ) ;
File . Copy ( PakName , TemporaryPakFilename ) ;
PakFiles . Add ( TemporaryPakFilename ) ;
}
2015-10-06 15:59:09 -04:00
if ( PakFiles . Count < = 0 )
{
Log ( "No Pak files found in " + SourceCookedContentPlatformPath + " :(" ) ;
2015-08-11 17:11:41 -04:00
}
}
2015-10-06 15:59:09 -04:00
else if ( SourceCookedContentPath . EndsWith ( ".pak" ) )
2015-08-11 17:11:41 -04:00
{
2015-10-06 15:59:09 -04:00
string TemporaryPakFilename = CombinePaths ( TemporaryPakPath , Path . GetFileName ( SourceCookedContentPath ) ) ;
File . Copy ( SourceCookedContentPath , TemporaryPakFilename ) ;
PakFiles . Add ( TemporaryPakFilename ) ;
2015-08-11 17:11:41 -04:00
}
2015-10-06 15:59:09 -04:00
string FullCookPath = CombinePaths ( CookedSandboxesPath , CookPlatformString ) ;
var UnrealPakExe = CombinePaths ( CmdEnv . LocalRoot , "Engine/Binaries/Win64/UnrealPak.exe" ) ;
foreach ( var Name in PakFiles )
{
Log ( "Extracting pak " + Name + " for comparision to location " + TemporaryFilesPath ) ;
string UnrealPakParams = Name + " -Extract " + " " + TemporaryFilesPath ;
2015-11-12 12:38:50 -05:00
try
{
RunAndLog ( CmdEnv , UnrealPakExe , UnrealPakParams , Options : ERunOptions . Default | ERunOptions . UTF8Output | ERunOptions . LoggingOfRunDuration ) ;
}
catch ( Exception Ex )
{
Log ( "Pak failed to extract because of " + Ex . GetType ( ) . ToString ( ) ) ;
}
2015-10-06 15:59:09 -04:00
}
const string RootFailedContentDirectory = "\\\\epicgames.net\\root\\Developers\\Daniel.Lamb" ;
string FailedContentDirectory = CombinePaths ( RootFailedContentDirectory , CommandUtils . P4Env . BuildRootP4 + CommandUtils . P4Env . ChangelistString , Params . ShortProjectName , CookPlatformString ) ;
Directory . CreateDirectory ( FailedContentDirectory ) ;
// diff the content
List < string > AllFiles = Directory . EnumerateFiles ( FullCookPath , "*.uasset" , System . IO . SearchOption . AllDirectories ) . ToList ( ) ;
Copying //UE4/Orion-Staging to //UE4/Main (originated from //Orion/Dev-General @ 2831630)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2831624 on 2016/01/17 by Marcus.Wassmer
Merge disable of FCachedReadPlatformData on PS4. Reduces memory spikes. 2830986
#rb none
#test none
#codereview Michael.Noland,James.Golding
Change 2831402 on 2016/01/17 by Marcus.Wassmer
HLOD priority and streamout changes.
Give texture pool an extra 200MB which we can afford thanks to James/Michael
#rb Chris.Gagnon
#test run agora, notice nice textures.
#lockdown Andrew.Grant
Change 2831398 on 2016/01/17 by Marcus.Wassmer
Fix 3 logic bugs with Relocate
#rb chris.gagnon
#test run game, look for corruption.
#lockdown Andrew.Grant
Change 2831372 on 2016/01/16 by Marcus.Wassmer
Update param.sfo's and lockdown version in prep for good PS4 playtest build.
#rb none
#test build from last night...
#lockdown Andrew.Grant
Change 2831274 on 2016/01/16 by Graeme.Thornton
Disable platform file cache wrapper on PS4
#codereview James.Golding
#rb none
#tests ran cooked ps4 build, timed loading (no real change), measured memory used for file handles (small)
Change 2831237 on 2016/01/16 by Sammy.James
Fix PS4 compile error
#codereview Andrew.Grant
#rb none
#tests none
Change 2831219 on 2016/01/16 by Matt.Kuhlenschmidt
Fix possible invalid access to shared movie player resource across threads causing startup crash.
#codereview marcus.wassmer
#rb none, #tests initial load
Change 2831218 on 2016/01/16 by Marcus.Wassmer
Fix bad warning case.
#codereview Martin.Mittring
#rb none
#test none
Change 2831201 on 2016/01/16 by Andrew.Grant
Added extra info about referencer to missing asset reference message
#rb none
#tests cooked, ran editor
Change 2831183 on 2016/01/16 by David.Nikdel
#OSS #PS4 #Purchasing #StoreV2
- Force failure if we have no receipts after a "successful" checkout.
- Report consumed entitlements as well as unconsumed but leave ValidationInfo empty so we can tell the difference at the application level
- Convert productIds to skuIds at checkout time
- Added PS4 Implementation of IOnlineStoreV2
- Bugfix: set bSuccessfullyStartedUp=false when InitNPGameSettings() fails
- Adjusted FOnlineStoreOffer to use FText::AsCurrencyBase
#RB: Paul.Moore
#TESTS: login, purchase redemption, store MTX purchasing on PS4 & PC
Change 2831129 on 2016/01/16 by David.Nikdel
#MCP
- Added a ctor to make converting from FOnlineError to FMcpQueryResult easier (for stuff that was already using FMcpQueryResult).
#RB: none
#TESTS: frontend
Change 2830986 on 2016/01/15 by Michael.Noland
PS4: Disabling FCachedReadPlatformFile on PS4 to significantly reduce high watermark memory consumption during blocking loads
#rb marcus.wassmer
#tests Ran Paragon PS4 down a bad path that currently does a blocking map and hero load
#lockdown andrew.grant
Change 2830943 on 2016/01/15 by Max.Chen
Sequencer: Fix bug introduced with preroll. It was also causing a crash in particle track instance.
#tests Master sequence trailer plays without crashing
#rb none
Change 2830912 on 2016/01/15 by Michael.Noland
Rendering: Exposed GRHIDeviceId (only filled in on D3D11 and D3D12 RHI's under the same circumstances as GRHIAdapterName, etc..., 0 otherwise)
#rb mieszko.zielinski
#tests Tested printing the value out
#codereview martin.mittring
Change 2830910 on 2016/01/15 by Michael.Noland
Rendering: Improved GPU driver detection logic to handle more cases
#codereview martin.mittring
#rb mieszko.zielinski
#tests Tested on my machine which was previous reporting Unknown for the values as some entries contained the key in the Settings subfolder
Change 2830776 on 2016/01/15 by Martin.Mittring
from Dev-Rendering
added ensure to track down multiple issues like
OR-11771 CRASH: User Crashed when pressing the Play button
OR-12430 CRASH: OT2 user crashed with FRHIResource::AddRef()
#rb:Gil.Gribb
#code_review:Gil.Gribb,Mark.Satterthwaite,Marcus.Wassmer
2016-01-20 11:32:08 -05:00
AllFiles . AddRange ( Directory . EnumerateFiles ( FullCookPath , "*.umap" , System . IO . SearchOption . AllDirectories ) . ToList ( ) ) ;
2015-10-06 15:59:09 -04:00
foreach ( string SourceFilename in AllFiles )
{
// Filename.StartsWith( CookedSandboxesPath );
string RelativeFilename = SourceFilename . Remove ( 0 , FullCookPath . Length ) ;
string DestFilename = TemporaryFilesPath + RelativeFilename ;
Copying //UE4/Orion-Staging to //UE4/Main (originated from //Orion/Dev-General @ 2831630)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2831624 on 2016/01/17 by Marcus.Wassmer
Merge disable of FCachedReadPlatformData on PS4. Reduces memory spikes. 2830986
#rb none
#test none
#codereview Michael.Noland,James.Golding
Change 2831402 on 2016/01/17 by Marcus.Wassmer
HLOD priority and streamout changes.
Give texture pool an extra 200MB which we can afford thanks to James/Michael
#rb Chris.Gagnon
#test run agora, notice nice textures.
#lockdown Andrew.Grant
Change 2831398 on 2016/01/17 by Marcus.Wassmer
Fix 3 logic bugs with Relocate
#rb chris.gagnon
#test run game, look for corruption.
#lockdown Andrew.Grant
Change 2831372 on 2016/01/16 by Marcus.Wassmer
Update param.sfo's and lockdown version in prep for good PS4 playtest build.
#rb none
#test build from last night...
#lockdown Andrew.Grant
Change 2831274 on 2016/01/16 by Graeme.Thornton
Disable platform file cache wrapper on PS4
#codereview James.Golding
#rb none
#tests ran cooked ps4 build, timed loading (no real change), measured memory used for file handles (small)
Change 2831237 on 2016/01/16 by Sammy.James
Fix PS4 compile error
#codereview Andrew.Grant
#rb none
#tests none
Change 2831219 on 2016/01/16 by Matt.Kuhlenschmidt
Fix possible invalid access to shared movie player resource across threads causing startup crash.
#codereview marcus.wassmer
#rb none, #tests initial load
Change 2831218 on 2016/01/16 by Marcus.Wassmer
Fix bad warning case.
#codereview Martin.Mittring
#rb none
#test none
Change 2831201 on 2016/01/16 by Andrew.Grant
Added extra info about referencer to missing asset reference message
#rb none
#tests cooked, ran editor
Change 2831183 on 2016/01/16 by David.Nikdel
#OSS #PS4 #Purchasing #StoreV2
- Force failure if we have no receipts after a "successful" checkout.
- Report consumed entitlements as well as unconsumed but leave ValidationInfo empty so we can tell the difference at the application level
- Convert productIds to skuIds at checkout time
- Added PS4 Implementation of IOnlineStoreV2
- Bugfix: set bSuccessfullyStartedUp=false when InitNPGameSettings() fails
- Adjusted FOnlineStoreOffer to use FText::AsCurrencyBase
#RB: Paul.Moore
#TESTS: login, purchase redemption, store MTX purchasing on PS4 & PC
Change 2831129 on 2016/01/16 by David.Nikdel
#MCP
- Added a ctor to make converting from FOnlineError to FMcpQueryResult easier (for stuff that was already using FMcpQueryResult).
#RB: none
#TESTS: frontend
Change 2830986 on 2016/01/15 by Michael.Noland
PS4: Disabling FCachedReadPlatformFile on PS4 to significantly reduce high watermark memory consumption during blocking loads
#rb marcus.wassmer
#tests Ran Paragon PS4 down a bad path that currently does a blocking map and hero load
#lockdown andrew.grant
Change 2830943 on 2016/01/15 by Max.Chen
Sequencer: Fix bug introduced with preroll. It was also causing a crash in particle track instance.
#tests Master sequence trailer plays without crashing
#rb none
Change 2830912 on 2016/01/15 by Michael.Noland
Rendering: Exposed GRHIDeviceId (only filled in on D3D11 and D3D12 RHI's under the same circumstances as GRHIAdapterName, etc..., 0 otherwise)
#rb mieszko.zielinski
#tests Tested printing the value out
#codereview martin.mittring
Change 2830910 on 2016/01/15 by Michael.Noland
Rendering: Improved GPU driver detection logic to handle more cases
#codereview martin.mittring
#rb mieszko.zielinski
#tests Tested on my machine which was previous reporting Unknown for the values as some entries contained the key in the Settings subfolder
Change 2830776 on 2016/01/15 by Martin.Mittring
from Dev-Rendering
added ensure to track down multiple issues like
OR-11771 CRASH: User Crashed when pressing the Play button
OR-12430 CRASH: OT2 user crashed with FRHIResource::AddRef()
#rb:Gil.Gribb
#code_review:Gil.Gribb,Mark.Satterthwaite,Marcus.Wassmer
2016-01-20 11:32:08 -05:00
Log ( "Comparing file " + RelativeFilename ) ;
2015-10-06 15:59:09 -04:00
byte [ ] SourceFile = null ;
try
{
SourceFile = File . ReadAllBytes ( SourceFilename ) ;
}
2015-10-23 16:57:58 -04:00
catch ( Exception )
2015-10-06 15:59:09 -04:00
{
2015-10-23 16:57:58 -04:00
Log ( "Diff cooked content failed to load file " + SourceFilename ) ;
2015-10-06 15:59:09 -04:00
}
byte [ ] DestFile = null ;
try
{
DestFile = File . ReadAllBytes ( DestFilename ) ;
}
2015-10-23 16:57:58 -04:00
catch ( Exception )
2015-10-06 15:59:09 -04:00
{
2015-10-23 16:57:58 -04:00
Log ( "Diff cooked content failed to load file " + DestFilename ) ;
2015-10-06 15:59:09 -04:00
}
2015-10-21 12:03:38 -04:00
if ( SourceFile = = null | | DestFile = = null )
2015-10-06 15:59:09 -04:00
{
2015-10-21 12:03:38 -04:00
Log ( "Diff cooked content failed on file " + SourceFilename + " when comparing against " + DestFilename + " " + ( SourceFile = = null ? SourceFilename : DestFilename ) + " file is missing" ) ;
}
else if ( SourceFile . LongLength = = DestFile . LongLength )
{
2016-01-19 09:54:25 -05:00
bool bFailedDiff = false ;
2015-10-21 12:03:38 -04:00
for ( long Index = 0 ; Index < SourceFile . LongLength ; + + Index )
2015-10-06 15:59:09 -04:00
{
if ( SourceFile [ Index ] ! = DestFile [ Index ] )
{
2016-01-19 09:54:25 -05:00
bFailedDiff = true ;
2015-10-06 15:59:09 -04:00
Log ( "Diff cooked content failed on file " + SourceFilename + " when comparing against " + DestFilename + " at offset " + Index . ToString ( ) ) ;
string SavedSourceFilename = CombinePaths ( FailedContentDirectory , Path . GetFileName ( SourceFilename ) + "Source" ) ;
string SavedDestFilename = CombinePaths ( FailedContentDirectory , Path . GetFileName ( DestFilename ) + "Dest" ) ;
Log ( "Creating directory " + Path . GetDirectoryName ( SavedSourceFilename ) ) ;
try
{
Directory . CreateDirectory ( Path . GetDirectoryName ( SavedSourceFilename ) ) ;
}
catch ( Exception E )
{
Log ( "Failed to create directory " + Path . GetDirectoryName ( SavedSourceFilename ) + " Exception " + E . ToString ( ) ) ;
}
Log ( "Creating directory " + Path . GetDirectoryName ( SavedDestFilename ) ) ;
try
{
Directory . CreateDirectory ( Path . GetDirectoryName ( SavedDestFilename ) ) ;
}
catch ( Exception E )
{
Log ( "Failed to create directory " + Path . GetDirectoryName ( SavedDestFilename ) + " Exception " + E . ToString ( ) ) ;
}
Copying //UE4/Orion-Staging to //UE4/Main (originated from //Orion/Dev-General @ 2831630)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2831624 on 2016/01/17 by Marcus.Wassmer
Merge disable of FCachedReadPlatformData on PS4. Reduces memory spikes. 2830986
#rb none
#test none
#codereview Michael.Noland,James.Golding
Change 2831402 on 2016/01/17 by Marcus.Wassmer
HLOD priority and streamout changes.
Give texture pool an extra 200MB which we can afford thanks to James/Michael
#rb Chris.Gagnon
#test run agora, notice nice textures.
#lockdown Andrew.Grant
Change 2831398 on 2016/01/17 by Marcus.Wassmer
Fix 3 logic bugs with Relocate
#rb chris.gagnon
#test run game, look for corruption.
#lockdown Andrew.Grant
Change 2831372 on 2016/01/16 by Marcus.Wassmer
Update param.sfo's and lockdown version in prep for good PS4 playtest build.
#rb none
#test build from last night...
#lockdown Andrew.Grant
Change 2831274 on 2016/01/16 by Graeme.Thornton
Disable platform file cache wrapper on PS4
#codereview James.Golding
#rb none
#tests ran cooked ps4 build, timed loading (no real change), measured memory used for file handles (small)
Change 2831237 on 2016/01/16 by Sammy.James
Fix PS4 compile error
#codereview Andrew.Grant
#rb none
#tests none
Change 2831219 on 2016/01/16 by Matt.Kuhlenschmidt
Fix possible invalid access to shared movie player resource across threads causing startup crash.
#codereview marcus.wassmer
#rb none, #tests initial load
Change 2831218 on 2016/01/16 by Marcus.Wassmer
Fix bad warning case.
#codereview Martin.Mittring
#rb none
#test none
Change 2831201 on 2016/01/16 by Andrew.Grant
Added extra info about referencer to missing asset reference message
#rb none
#tests cooked, ran editor
Change 2831183 on 2016/01/16 by David.Nikdel
#OSS #PS4 #Purchasing #StoreV2
- Force failure if we have no receipts after a "successful" checkout.
- Report consumed entitlements as well as unconsumed but leave ValidationInfo empty so we can tell the difference at the application level
- Convert productIds to skuIds at checkout time
- Added PS4 Implementation of IOnlineStoreV2
- Bugfix: set bSuccessfullyStartedUp=false when InitNPGameSettings() fails
- Adjusted FOnlineStoreOffer to use FText::AsCurrencyBase
#RB: Paul.Moore
#TESTS: login, purchase redemption, store MTX purchasing on PS4 & PC
Change 2831129 on 2016/01/16 by David.Nikdel
#MCP
- Added a ctor to make converting from FOnlineError to FMcpQueryResult easier (for stuff that was already using FMcpQueryResult).
#RB: none
#TESTS: frontend
Change 2830986 on 2016/01/15 by Michael.Noland
PS4: Disabling FCachedReadPlatformFile on PS4 to significantly reduce high watermark memory consumption during blocking loads
#rb marcus.wassmer
#tests Ran Paragon PS4 down a bad path that currently does a blocking map and hero load
#lockdown andrew.grant
Change 2830943 on 2016/01/15 by Max.Chen
Sequencer: Fix bug introduced with preroll. It was also causing a crash in particle track instance.
#tests Master sequence trailer plays without crashing
#rb none
Change 2830912 on 2016/01/15 by Michael.Noland
Rendering: Exposed GRHIDeviceId (only filled in on D3D11 and D3D12 RHI's under the same circumstances as GRHIAdapterName, etc..., 0 otherwise)
#rb mieszko.zielinski
#tests Tested printing the value out
#codereview martin.mittring
Change 2830910 on 2016/01/15 by Michael.Noland
Rendering: Improved GPU driver detection logic to handle more cases
#codereview martin.mittring
#rb mieszko.zielinski
#tests Tested on my machine which was previous reporting Unknown for the values as some entries contained the key in the Settings subfolder
Change 2830776 on 2016/01/15 by Martin.Mittring
from Dev-Rendering
added ensure to track down multiple issues like
OR-11771 CRASH: User Crashed when pressing the Play button
OR-12430 CRASH: OT2 user crashed with FRHIResource::AddRef()
#rb:Gil.Gribb
#code_review:Gil.Gribb,Mark.Satterthwaite,Marcus.Wassmer
2016-01-20 11:32:08 -05:00
File . Copy ( SourceFilename , SavedSourceFilename , true ) ;
File . Copy ( DestFilename , SavedDestFilename , true ) ;
2015-10-06 15:59:09 -04:00
Log ( "Content temporarily saved to " + SavedSourceFilename + " and " + SavedDestFilename + " at offset " + Index . ToString ( ) ) ;
break ;
}
}
2016-01-19 09:54:25 -05:00
if ( ! bFailedDiff )
{
Log ( "Content matches for " + SourceFilename + " and " + DestFilename ) ;
}
2015-10-06 15:59:09 -04:00
}
else
{
Log ( "Diff cooked content failed on file " + SourceFilename + " when comparing against " + DestFilename + " files are different sizes " + SourceFile . LongLength . ToString ( ) + " " + DestFile . LongLength . ToString ( ) ) ;
}
}
}
catch ( Exception Ex )
{
Log ( "Exception " + Ex . ToString ( ) ) ;
continue ;
}
2015-08-11 17:11:41 -04:00
}
}
2014-03-14 14:13:41 -04:00
private static void CleanupCookedData ( List < string > PlatformsToCook , ProjectParams Params )
2014-08-18 13:29:39 -04:00
{
2015-09-26 14:41:15 -04:00
var ProjectPath = Params . RawProjectPath . FullName ;
2014-05-29 16:43:14 -04:00
var CookedSandboxesPath = CombinePaths ( GetDirectoryName ( ProjectPath ) , "Saved" , "Cooked" ) ;
2014-03-14 14:13:41 -04:00
var CleanDirs = new string [ PlatformsToCook . Count ] ;
for ( int DirIndex = 0 ; DirIndex < CleanDirs . Length ; + + DirIndex )
{
2014-05-29 16:43:14 -04:00
CleanDirs [ DirIndex ] = CombinePaths ( CookedSandboxesPath , PlatformsToCook [ DirIndex ] ) ;
2014-03-14 14:13:41 -04:00
}
const bool bQuiet = true ;
DeleteDirectory ( bQuiet , CleanDirs ) ;
}
#endregion
}