Commit Graph

79 Commits

Author SHA1 Message Date
Patrick Boutot
1e4c3973db UHT: Add FieldNotify specifier to UHT. It auto generate the UE_FIELD_NOTIFICATION_DECLARE_CLASS_DESCRIPTOR and UE_FIELD_NOTIFICATION_IMPLEMENT_CLASS_DESCRIPTOR macro. FieldNotify is only available on FProperty and UFunction member of a UCLass and if the UClass implement the INotifyFieldValueChanged interface.
#preflight 622f43d419287beb2c316755

[CL 19372159 by Patrick Boutot in ue5-main branch]
2022-03-14 09:47:28 -04:00
Marc Audy
0c3be2b6ad Merge Release-Engine-Staging to Test @ CL# 18240298
[CL 18241953 by Marc Audy in ue5-release-engine-test branch]
2021-11-18 14:37:34 -05:00
tim smith
4ab05517cf Improved the detection of class methods. Resolves issue of incorrectly matching method names in comments.
#jira UE-85807
#rb none
#rnx

#ROBOMERGE-SOURCE: CL 16886923 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)

[CL 16886976 by tim smith in ue5-release-engine-test branch]
2021-07-19 14:42:38 -04:00
tim smith
af776f9dbb Add the ability to disable concurrent parsing and code generation to make debugging a bit easier.
#rb none
#rnx
#preflight 60d225d3be81e80001879ecd

#ROBOMERGE-SOURCE: CL 16747440 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v835-16672529)

[CL 16747441 by tim smith in ue5-release-engine-test branch]
2021-06-22 15:27:11 -04:00
Tim Smith
4e09fb650a Implement a common meta data container to be shared between all types.
Moving more property functionality into PropertyTypes
Assorted cleanup of other methods.

#rb self
#rnx

[CL 16447199 by Tim Smith in ue5-main branch]
2021-05-25 09:43:57 -04:00
Tim Smith
16f2bed91a Remove all GetProperty calls
#rb self
#rnx
#preflight 60ac45318194e7000114aea5

[CL 16443629 by Tim Smith in ue5-main branch]
2021-05-24 21:36:39 -04:00
Tim Smith
106a3a8a0f Removed most calls to GetFunction (parser still uses it a lot)
#rb self
#rnx
#preflight 60ab8a011d02bb00011807f0

[CL 16434562 by Tim Smith in ue5-main branch]
2021-05-24 07:56:32 -04:00
Tim Smith
69403fc4bc Remove most of the engine types from the exporter API
#rb self
#rnx
#preflight 60aa43021d02bb0001009701

[CL 16431738 by Tim Smith in ue5-main branch]
2021-05-23 08:46:15 -04:00
Tim Smith
c9572b225e Remove FClasses
#rb self
#rnx
#preflight 60a9103c3df6e300012d8aec

[CL 16429489 by Tim Smith in ue5-main branch]
2021-05-22 10:50:10 -04:00
Tim Smith
224901db8a Change PropertyBase to reference new types.
#rb self
#rnx
#preflight 60a8eae36905a600014ed8c5

[CL 16429032 by Tim Smith in ue5-main branch]
2021-05-22 08:04:39 -04:00
Tim Smith
5c7b33f9e5 More UnrealHeaderTool refactoring
Remove FClass
Remove ClassDeclarationMetaData

#rb self
#rnx
#preflight 60a7c6140569f30001673b9c

[CL 16419880 by Tim Smith in ue5-main branch]
2021-05-21 11:52:09 -04:00
Tim Smith
377b8798c5 Added new PropertyTypes which in the long run will be where different property types are implemented.
Added new casting system betwen the different type definitions.  This allows some patterns that makes the code easier.
Moved some direct calls to engine API to FClasses.
More property data moved to the property definition.
Replacing a many more instances of referencing engine type directly with referencing UHT types.
Removed the FToken from the property data.  Saved 600MB of memory on some titles.

#rb jonathan.adamczewski
#rnx

[CL 16416114 by Tim Smith in ue5-main branch]
2021-05-21 07:29:12 -04:00
Tim Smith
2504290d2e Remove the compiler meta data manager.
Elimination of some quick to resolve type system lookups.

#rnx
#rb jonathan.adamczewski
#preflight 609e5a1dcbf9a40001fe9778

[CL 16328413 by Tim Smith in ue5-main branch]
2021-05-14 07:48:15 -04:00
Tim Smith
b854f16fff Remove the singleton type cache and the package name cache.
#rb jonathan.adamczewski
#rnx
#preflight 609c286edc97da0001256a61

[CL 16305562 by Tim Smith in ue5-main branch]
2021-05-12 16:27:07 -04:00
Tim Smith
808f81dd6c Performance improvements and clean up in preperation for a Live Coding fix.
1) Refactored preparsing to scan for @UCLASS, @USTRUCT, and @ENUM and define then.  This means that no new entries into the type definition info system will be added after pre-parsing and thus remove the need for any type of locking during code generation.
2) Parsing and code generation is now being done in a strict order based on dependencies and no longer by project.  This removes the need of explicitly parsing depedencies first or waiting on hashes to be computed.  (Provided a 50%-80% improvement in code generation time)
3) Changed HeaderParser to be specific to one source file.  Removed the need to pass the source file around since it is always known at construction time.  Simplified some error handling logic.
4) Changed parallel for loops to using event graph to provide more concurrency.
5) Refactored the main program flow into concise steps.

Testing:

Verified that the headers generated exactly the same for:

1) First person C++ Project
2) UnrealEditor
3) QAGame
4) ShooterGame
5) FortniteGame

FYI: Marc had reviewed this as part of a larger change but some parts were extract.  These are the remaining changes.

#rb marc.audy
#rnx
#preflight 6078666a02850d00010e22c5

[CL 16023636 by Tim Smith in ue5-main branch]
2021-04-15 13:44:34 -04:00
Marc Audy
11f5b21210 Merging //UE5/Release-Engine-Staging @ 13752110 to Main (//UE5/Main)
#rnx

[CL 13753156 by Marc Audy in ue5-main branch]
2020-06-23 18:40:00 -04:00
marc audy
4175165b20 UHT Optimization: Determine and store in a static bool FailIfGeneratedCodeChanges rather than looking up per module.
#rb Michael.Noland
#rnx
#jira

#ROBOMERGE-SOURCE: CL 13181389 via CL 13181398 via CL 13181407
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v688-13145358)

[CL 13181416 by marc audy in Main branch]
2020-05-05 12:16:53 -04:00
marc audy
0aff069f59 Move headers in to place and delete stale/unused generated headers asynchronously while moving on to parsing next package
#rb Steve.Robb
#jira
#rnx

#ROBOMERGE-SOURCE: CL 13055676 via CL 13055683 via CL 13055702
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v686-13045012)

[CL 13055705 by marc audy in Main branch]
2020-04-28 12:02:34 -04:00
robert manuszewski
b938e59c9b Reimplementing FProperty changes from //UE4/Main
+ Reimplemented FProperty related fixed from //UE4/Main:
CL#10791312, 10804850, 10851666, 10855122, 10855198, 10942138, 11030611, 11030639, 11032261, 11061515, 11136964,11138881, 11214238, 11214865

#rb none (previously reviewed in Dev-Core)
[FYI] Chris.Bunnner, Daniel.Lamb


#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: robert.manuszewski
#ROBOMERGE-SOURCE: CL 11302985 via CL 11303011 via CL 11303019
#ROBOMERGE-BOT: (v0-11244347)

[CL 11303183 by robert manuszewski in Main branch]
2020-02-10 08:06:56 -05:00
jon nabozny
a68bcb52d3 Redo changes from CL-10931598 with crash fix and copyright update.
[FYI] Bob.Tellez
#rb None


#ROBOMERGE-OWNER: jon.nabozny
#ROBOMERGE-AUTHOR: jon.nabozny
#ROBOMERGE-SOURCE: CL 10982730 via CL 10982741 via CL 10982750
#ROBOMERGE-BOT: (v632-10940481)

[CL 10983012 by jon nabozny in Main branch]
2020-01-14 11:48:31 -05:00
bob tellez
b84ee521f5 Back out changelist 10931598. Likely cause for crash at startup
[FYI] Jon.Nabozny
#rb none

#ROBOMERGE-OWNER: bob.tellez
#ROBOMERGE-AUTHOR: bob.tellez
#ROBOMERGE-SOURCE: CL 10933120 via CL 10933137 via CL 10933157
#ROBOMERGE-BOT: (v626-10872990)

[CL 10933303 by bob tellez in Main branch]
2020-01-09 16:58:28 -05:00
jon nabozny
3b3eb87e75 Push Model Replication Core.
Provides the basic interface, machinery, and codegen for allowing games to notify the networking system when properties have been changed.

[at]Ryan.Gerleve, [at]Brian.Bekich, [at]Peter.Engstrom, [at]Mattias.Hornlund, [at]LouisPhilippe.Seguin, [at]Bart.Hawthorne, [at]Marc.Audy, [at]Dan.OConnor
#rb Dan.Oconnor, Peter.Engstrom, Steve.Robb


#ROBOMERGE-OWNER: jon.nabozny
#ROBOMERGE-AUTHOR: jon.nabozny
#ROBOMERGE-SOURCE: CL 10931598 via CL 10931603 via CL 10931604
#ROBOMERGE-BOT: (v626-10872990)

[CL 10931773 by jon nabozny in Main branch]
2020-01-09 15:57:29 -05:00
marc audy
a7f3d43678 UHT optimizations part 6 - Generate files in parallel. Improves code generation phase by ~50%.
* Restructured code so that FNativeClassHeaderGenerator can now use ParallelFor for 3 phases: creating the .generated.h files, creating the .gen.cpp, and exporting the generated headers
* FNameLookupCPP, GPackageSingletons, GGeneratedCodeHashes, GetTypePackageName, FNativeClassHeaderGenerator::GetPackageSingletonName, FTypeSingletonCache, and FTypeSingleton::GetExternDecl now use RWScopeLocks to safely control access to globals/statics
#jira
#rnx
#rb


#ROBOMERGE-OWNER: marc.audy
#ROBOMERGE-AUTHOR: marc.audy
#ROBOMERGE-SOURCE: CL 10876463 via CL 10876464 via CL 10876465
#ROBOMERGE-BOT: (v624-10872983)

[CL 10876473 by marc audy in Main branch]
2020-01-04 15:28:16 -05:00
marc audy
a46a5a31b6 UHT optimizations part 5 - Minor optimizations and clean up of code generation
#jira
#rnx
#rb


#ROBOMERGE-OWNER: marc.audy
#ROBOMERGE-AUTHOR: marc.audy
#ROBOMERGE-SOURCE: CL 10873665 via CL 10873666 via CL 10873667
#ROBOMERGE-BOT: (v624-10872983)

[CL 10873695 by marc audy in Main branch]
2020-01-02 12:15:23 -05:00
Ryan Durand
74c879d5f3 Updating copyrights for Engine Programs.
#rnx
#rb none
#jira none

#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869242 in //Fortnite/Release-12.00/... via CL 10869536
#ROBOMERGE-BOT: FORTNITE (Main -> Dev-EngineMerge) (v613-10869866)

[CL 10870960 by Ryan Durand in Main branch]
2019-12-26 23:06:02 -05:00