Commit Graph

22 Commits

Author SHA1 Message Date
Ben Marsh
a5f534451b Remove the ENGINE_VERSION define from Version.h and ObjectVersion.cpp; it's superceded by GEngineVersion. EngineVersion.cpp now defines the constants GEngineVersionChangelist and GCompatibleWithEngineVersionChangelist, which are used to construct GEngineVersion and GCompatibleWithEngineVersion. Modifying those constants allows updating the engine version separately to the defines used for resource files (allowing UGS to update the version number without triggering all files to be relinked).
[CL 2625344 by Ben Marsh in Main branch]
2015-07-18 16:57:53 -04:00
Dan Oconnor
13c3458c7a [UE-16784] Various optimizations to graph action menu creation and searching/filtering
[CL 2617715 by Dan Oconnor in Main branch]
2015-07-13 00:58:07 -04:00
Jaroslaw Surowiec
2eaf3f3a89 Core - Stats based memory profiler should start on all platforms (UE-9906)
[CL 2511388 by Jaroslaw Surowiec in Main branch]
2015-04-14 05:12:23 -04:00
Robert Manuszewski
8fe5db30e3 Merging UE4-Streaming to UE4
- Linkers are no longer UObjects. Renamed ULinker, ULinkerLoad and ULinkerSave to FLinker, FLinkerLoad, FLinkerSave respectively
- Linkers are now associated with their UPackages
- Linker version is now stored in UPackages
- Async loading is now performed on a separate thread (if platform supports it and only in cooked builds), with the exception of PostLoad which is still done on the game thread
- Added UObject::IsPostLoadThreadSafe() function to determine if PostLoad is thread safe and can be executed on the async loading thread (defaults to false)
- UObject creation is now thread safe and can be performed on any thread
- Move many of the linker/UObject globals into FUObjectThreadContext (TLS)
- GetAsyncLoadPercentage() now takes PostLoad into account
- More async loading stats
- Added AtomicallySetFlags/ClearFlags to UObject
- Made FModuleManager thread safe.
- Added FGCScopeGuard as means of preventing GC from executing from non-game thread
- It's possible to disable async loading thread through ini settings.
- Cancelling async loading will now also trigger GC
- Implemented a basic version of async streaming priorities.

Change 2410813 by Mikolaj Sieluzycki:
	Change Sleep in while loop to ConditionalSleep in FMultiReaderSingleWriterGT
Change 2410734 by Mikolaj Sieluzycki:
	Make FModuleManager thread safe.
Change 2399879 by Mikolaj Sieluzycki:
	Basic version of async streaming priorities.
Change 2410707 by Mikolaj Sieluzycki:
	Implement conditional and no stat versions of sleep.
Change 2371939 by Robert Manuszewski:
	Async Loading Improvements: adding more stats (accumulators)
Change 2372403 by Robert Manuszewski:
	Fixing compile errors when STATs are not enabled
Change 2371526 by Robert Manuszewski:
	AsyncLoading Improvements (WIP)
Change 2407198 by Robert Manuszewski:
	Re-implementing delegate fixes for Async Loading
Change 2407425 by Robert Manuszewski:
	Re-implementing cancelling async loading in the async loading branch.
Change 2484362 by Robert Manuszewski:
	Making it possible to disable async loading thread through ini settings.
Change 2484744 by Robert Manuszewski:
	Minimizing locks in GC and other threads when handling UObjects
Change 2480190 by Robert Manuszewski:
	Fixing infinite stall after canceling async loading in non-cooked builds
Change 2484268 by Robert Manuszewski:
	Fixing crash when allocating permanent object pool.
Change 2489761 by Robert Manuszewski:
	Fixing BulkData using linker archive on the main thread even if the linker was created on the async loading thread.
Change 2493624 by Robert Manuszewski:
	Cancelling async loading will now also trigger GC
Change 2487881 by Robert Manuszewski:
	Making ShaderIdMap operations thread safe.
Change 2488067 by Robert Manuszewski:
	Fixing GetAsyncLoadPercentage. It will now also respect PostLoad.
Change 2458640 by Robert Manuszewski:
	Fixing crash in PIE
Change 2458825 by Robert Manuszewski:
	Fixing a few crashes when streaming and the package is missing.
Change 2476935 by Robert Manuszewski:
	Fixing crash while async loading ANavigationData
Change 2477361 by Robert Manuszewski:
	Fixing crashes in cooked game
Change 2480095 by Robert Manuszewski:
	Making FUObjectArray more thread safe
Change 2475443 by Robert Manuszewski:
	Re-enabling single-threaded async loading path for the editor and platforms that don't support multithreading.
Change 2475458 by Robert Manuszewski:
	Making sure bulk data is only loaded on a separate thread if it's not being loaded on the async loading thread.
Change 2476661 by Robert Manuszewski:
	Fixing FlushAsyncLoading not flushing everything
Change 2401089 by Jaroslaw Surowiec:
	Core - Added AtomicallySetFlags/ClearFlags to UObject, added a comment to ThisThreadAtomicallyClearedRFUnreachable

[CL 2498249 by Robert Manuszewski in Main branch]
2015-04-01 03:03:18 -04:00
Jamie Dale
cec57424a8 Prevented FName crashing if constructed from a null string
This now initializes to NAME_None instead.

#codereview Marc.Audy

[CL 2388411 by Jamie Dale in Main branch]
2014-12-15 07:40:21 -05:00
Jamie Dale
8e3184f31f Stopped FName converting an ANSICHAR source string to a WIDECHAR string, only to convert it back to ANSICHAR again later
FName::Init could take either an ANSICHAR* or a WIDECHAR*, however the ANSICHAR* variant would convert the string to a WIDECHAR[], and would later convert it back to an ANSICHAR[] because it contains only ANSI characters.

Recent refactoring in FName has made it possible to optimize the ANSICHAR* path, by avoiding the double conversion and just using the ANSICHAR* directly when adding to the FName string table.

ReviewedBy James.Hopkin

[CL 2388399 by Jamie Dale in Main branch]
2014-12-15 07:10:29 -05:00
Ben Marsh
149375b14b Update copyright notices to 2015.
[CL 2379638 by Ben Marsh in Main branch]
2014-12-07 19:09:38 -05:00
Jaroslaw Surowiec
0478fb7c10 Stats - Memory profiling using stats system (preliminary version)
#codereview Robert.Manuszewski

[CL 2371821 by Jaroslaw Surowiec in Main branch]
2014-11-28 05:01:41 -05:00
Ben Marsh
461338d8f7 Define the hard-coded name constants in a way that doesn't rely on mutating the header guard state. Cleaner, and simplifies include file optimization.
[CL 2371115 by Ben Marsh in Main branch]
2014-11-26 16:01:01 -05:00
Max Preussner
2976ba90af Core: Removed unused file header comments
[CL 2340324 by Max Preussner in Main branch]
2014-10-24 16:32:04 -04:00
Ben Marsh
f413055dc2 Make CorePrivatePCH.h Core module private PCH instead of Core.h. (Submitted for Mikolaj Sieluzycki due to ObjectVersion.cpp change)
#codereview Robert.Manuszewski, Mikolaj.Sieluzycki

[CL 2332997 by Ben Marsh in Main branch]
2014-10-17 09:52:58 -04:00
Mikolaj Sieluzycki
70b842162b Make Core module public headers individually compilable. Part 13 of n.
#codereview Robert.Manuszewski

[CL 2329998 by Mikolaj Sieluzycki in Main branch]
2014-10-15 07:01:34 -04:00
Jaroslaw Palczynski
a04bd52271 FString comparison with an ANSI string literal constructs a temporary FString
#ttp 322488

#codereview Robert.Manuszewski

[CL 2318432 by Jaroslaw Palczynski in Main branch]
2014-10-03 08:04:40 -04:00
Michael Noland
cf61cf2c85 Core: Coding-standards fixes (TypeName [*|&] VariableName -> TypeName[*|&] VariableName)
[CL 2316335 by Michael Noland in Main branch]
2014-10-01 14:40:06 -04:00
Jamie Dale
b1076751ff Made FName case-preserving by storing case-variant strings in its string table
This is controlled by the macro "WITH_CASE_PRESERVING_NAME", which is currently just set to "WITH_EDITORONLY_DATA" so that it works in editor builds (and UHT).

Added an extra NAME_INDEX entry to FName to store a second string table index for a case-variant string. The previous Index value (now called ComparisonIndex) is still used for comparison purposes (as FNames are still case-insensitive).

The Init process for an FName now works like this:
 1) It will find or add a string table entry for the given string (not matching case) - this entry index is stored in ComparisonIndex.
 2) It will then compare the string table entry string against the given string (matching case) to see if it also needs to add a case-variant entry for the FName.
 3) If it does, it finds or adds a second string table entry (matching case) for the string - this entry index is stored in DisplayIndex.

Hard-coded FNames (those listed in UnrealNames.h) do not support case-variants (due to existing network replication rules for hard-coded FNames), so they skip steps 2 and 3.

I added FMinimalName, which is the same size as FName was previously. This shouldn't really be used (and as such, is deliberately awkward to make/use) as it loses the case-preserving behaviour of FName, however it was required for some things (like stats) that had a hard-coded upper limit on FName size.

I added FScriptName, which always contains the extra display index (even when WITH_CASE_PRESERVING_NAME is disabled). This is used by Blueprint bytecode, as the types used by Blueprint bytecode must be a consistent size between all build configurations.

Other changes:

 - Fixed up any places that were passing an Index into the FName constructor which was supposed to take an EName.
     - Some places were doing this to make the number unique when replicating an object, but this was losing the case-variant information, so I had to fix them.
     - FName will now assert if the EName constructor is used with an value outside the range of hard-coded FNames.

 - Ensured that assets, actors, and blueprint components could all be renamed in a way that only changed their case, and that these changes were correctly persisted.

 - Added FLinkerNamePairKeyFuncs and TLinkerNameMapKeyFuncs for use with TSet and TMap.
     - These allow ULinkerSave and ULinkerLoad to correctly write out case-variants for FNames, and also fixes an issue where the linker would erroneously write out duplicate string table entries for FNames which had a different number (causing package bloat).

 - Bumped VER_MIN_SCRIPTVM_UE4 so that all Blueprint bytecode is recompiled using FScriptName.

ReviewedBy Robert.Manuszewski, Gil.Gribb

[CL 2300730 by Jamie Dale in Main branch]
2014-09-17 05:24:55 -04:00
Bob Tellez
fe1f45d6c0 UE4: Illegal characters in names are now only reported once, even if they show up in the illegal characters or test string list multiple times.
[CL 2298979 by Bob Tellez in Main branch]
2014-09-15 20:38:31 -04:00
Jaroslaw Palczynski
eb49618ff2 Fix stat id redundant creation.
Change stat id creation to static declarations.

[CL 2281174 by Jaroslaw Palczynski in Main branch]
2014-09-02 05:19:25 -04:00
Mike Fricker
72a34e4ee9 Compile Times: Fixed Core module needing two separate PCH headers in monolithic compiles
- Changed Core module to use Core.h (removed CorePrivate.h)
- CorePrivate.h only included Core.h, so their PCHs were identical other than name
- Does not affect modular builds, as we need different defines for DLLExport/DLLImport for private and public PCH headers

[CL 2221011 by Mike Fricker in Main branch]
2014-07-16 13:44:46 -04:00
Jaroslaw Palczynski
ebce413232 UE4 Refactoring. Changed OVERRIDE and FINAL macros to keywords override and final.
[CL 2104397 by Jaroslaw Palczynski in Main branch]
2014-06-13 06:14:46 -04:00
Jamie Dale
08c31ce64d #ttp 331271 - EDITOR: New Project Dialog doesn't help inform users when they have an illegal character in their Windows user name
#proj UE4
#branch UE4
#summary Verified why @ was disallowed
#extra Also improved the robustness of the path validator and disallowed some extra things that had previously been missed.
#extra Made the way we report invalid characters consistent between FPaths, FName, and FPackageName; they now report all matched invalid characters rather than only the first one.
#reviewedby Thomas.Sarkanen, Max.Preussner

[CL 2043081 by Jamie Dale in Main branch]
2014-04-23 18:13:53 -04:00
Saul Abreu
b16c5668f5 #summary Updated metadata gathering commandlet to be configuration driven. Fixed a bug with local edits to metadata overriding localization. Updated property editors using comboboxes for enums to use localized data. Added Region & Language Settings for toggling use of localized field names.
#ttp 331251 - L10N: Editor: Tooltips and Property Names need to be localized

[CL 2040155 by Saul Abreu in Main branch]
2014-04-23 17:36:48 -04:00
Tim Sweeney
324683ce78 Engine source (Main branch up to CL 2026164) 2014-03-14 14:13:41 -04:00