Commit Graph

769 Commits

Author SHA1 Message Date
jamie dale
933348f856 Use the FMessageDialog overloads that pass the optional title by-value
#jira
#rb none
#rnx

[CL 25062589 by jamie dale in ue5-main branch]
2023-04-15 19:49:32 -04:00
Julien StJean
e9dbd9fb66 [EIS] Minor improvement to the error messaging when renaming an asset.
#jira UE-106770
#preflight 64342ff585398c090c3fc4b4
#rb lauren.barnes

[CL 25007411 by Julien StJean in ue5-main branch]
2023-04-12 10:57:26 -04:00
rex hill
4a9460be92 Add export class permission list
#preflight 643446394c3ccbbdf17e8269
#rnx
#rb dave.belanger

[CL 24994901 by rex hill in ue5-main branch]
2023-04-11 14:22:04 -04:00
brooke hubert
de61b6290c [Asset Definition] Fix an issue where an invalid FName could cause category path look up to assert
#Jira UE-169921
#preflight 642f1f4741783dc3d077b509
#rb julien.stjean

[CL 24954181 by brooke hubert in ue5-main branch]
2023-04-06 15:42:22 -04:00
mike beach
ef5a5af970 Addressing a bug with AdvancedCopy, where two asset dependencies with the same name (from different plugins) would flatten down to overwrite eachother (causing a crash).
NOTE: This could significantly lengthen advanced copy destination paths, potentially blowing past the path character limit normally enforced by UE. In it's current state, the copy will just proceed normally -- seemingly working. This is probably something to investigate more, but doesn't appear to be a high-pri issue atm. A JIRA has been logged to capture this though: UE-182280

[FYI] brooke.hubert
#rb brooke.hubert, francis.hurteau

[CL 24916196 by mike beach in ue5-main branch]
2023-04-04 15:34:25 -04:00
Dan Thompson
db16e00f19 Remove "All Types" as an export file type as it doesn't really make sense.
#jira ue-182012
#rb charles.bloom
#preflight 642b5d8c1d19c0312a764c82

[CL 24904024 by Dan Thompson in ue5-main branch]
2023-04-03 19:28:29 -04:00
jamie dale
447aaec3a3 Updated advanced copy to use the lazy consolidation method by default
#jira
#preflight 64244d9d974dfaa53c548de7
#rb Dave.Belanger
#rnx

[CL 24841284 by jamie dale in ue5-main branch]
2023-03-29 14:22:56 -04:00
jeanfrancois dube
6d56dedc91 Fixed advanced copy of partitioned world.
#rb philippe.deseve
#preflight none

[CL 24672121 by jeanfrancois dube in ue5-main branch]
2023-03-16 11:45:42 -04:00
thales sabino
36933da6f5 Fix the asset filter in UAssetToolsImpl::CreateAssetWithDialog to use the Factory supported class path
Fix a mistake made in CL24423110 where the class path name added to the filter was from a UClass instead of being from the supported class that the filter is supposed to use

#jira UE-178311
#rb lauren.barnes
#preflight 64107c81af3fc35292164cb9

[CL 24634892 by thales sabino in ue5-main branch]
2023-03-14 10:11:29 -04:00
jordan hoffmann
988ccfdc87 [BugFix] "Diff against Depot" produces very noisy output. Export paths are included in text diffs which can show different paths depending on where the temp file was saved. This causes diffs that should be clean to have false positives. As a solution I added a PPF_ForDiff flag that ommits the ExportPath
#jira none
#udn 00537121
#rb Julien.StJean
#preflight 6407d9368832f48a4d5fdedd

[CL 24552862 by jordan hoffmann in ue5-main branch]
2023-03-07 20:00:27 -05:00
jamie dale
a9a51eb97d Optimized advanced copy by running its consolidate step less frequently
The "AssetTools.AdvancedCopyConsolidationMethod" CVar can control how frequently the consolidate runs, and there are three options available:
* Lazy - Run a consolidate once at the end for all assets and dependencies combined. The fastest method.
* PerAsset - Run a consolidate once for each asset combined with its dependencies. This is very slow, but is the default method for safety.
* PerAssetDependency - Run a consolidate once for each asset dependency. This is incredibly slow, and is only included for regression testing.

When copying ~1,600 assets the different methods produce the following results:
* Lazy: 222 seconds (~4 mins)
* PerAsset: 1818 seconds (~30 mins)
* PerAssetDependency: 5000 seconds (~83 mins)

#preflight 64011e5b1d304a547165e646

[CL 24511426 by jamie dale in ue5-main branch]
2023-03-03 20:07:20 -05:00
jordan hoffmann
5abf21121d [BugFix] Modified actors are not diff'ing correctly with one file per actor
#rb dan.oconnor
#rb francis.hurteau

[CL 24451087 by jordan hoffmann in ue5-main branch]
2023-02-28 16:07:32 -05:00
thales sabino
9df15b4889 Set the asset filter in UAssetToolsImpl::CreateAssetWithDialog
This will use the Factory supported class as a filter for assets in the Save Asset As dialog. Before this change anyone using this function would get a dialog that displayed all assets in the project.

This also makes it consistent with how Save Level As works, which only shows Levels in its dialog

#jira UE-178311
#rb lauren.barnes
#preflight 63fcbf93dd78dd50f68424b8

[CL 24423110 by thales sabino in ue5-main branch]
2023-02-27 09:48:56 -05:00
wouter burgers
8ff2c6c41f SourceControl: Add start/finish delegates to AssetViewUtils sync operations.
[REVIEW] [at]dave.belanger, [at]manuel.lang, [at]brooke.hubert
#preflight none

#localization none
#tests manual

[CL 24412834 by wouter burgers in ue5-main branch]
2023-02-24 19:03:48 -05:00
logan buchy
fe50d097d6 Performance improvement to opening Context Menu and other operations looking up AssetTypeActions
There is a host of functionality in the engine requiring looking up an AssetTypeAction object that best maps to a given class.  The metric of 'best' is the AssetTypeAction whose SupportedClass is the closest to the given class in a hierarchy.
The existing implementation searches through all AssetTypeActions (at time of writing, > 200) and queries each for their SupportedClass and then chooses the one whose SupportedClass is closest to the given class.

The improvement here exploits that UClass is the type information of UObjects, and UObjects don't support multiple-inheritance (ie. only one SuperClass).  Therefore we can walk the class hierarchy from the given Class up to find
the best AssetTypeAction.  This changes the linear search (with # of AssetTypeActions) to a nominal sub-linear search (with depth of inheritance).

To be able to do that, a new map was added that associates a registered AssetTypeAction's SupportedClass with the AssetTypeAction's index in it's array.  This lets us do a constant time lookup at the cost of a bit of memory.

There is further room for improvement with the usage of UFactory's public member functions such as `GetDisplayName`, `GetMenuCategories` and similar which still necessitates this query.  Opportunity exists in the NewAssetContextMenu and in the API of IAssetTools::GetNewAssetFactories
to generate a more performance oriented data structure.  There is also some opportunity to improve the construction of a FSoftClassPath from a UClass which can be fairly expensive. These all feed into the performance issue but ultimately this is the smallest change that provides the largest improvements at the lowest risk.

Testing:
Using debugger stepped through startup/shutdown of the editor.
Artificially added duplicate registrations to check codepaths for adding AssetTypeActions that with same supported class
Added unregisters to check codepaths for unregister.  Need to be careful with editor as AssetTool module is removed very early on outside of the usual lifetime of modules in EngineLoop::Exit so most AssetTypeActions do not actually get deregistered.

#jira UE-175345
#rb ronald.koppers
#preflight 63ed3f277e76998e9a66a676

[CL 24253312 by logan buchy in ue5-main branch]
2023-02-16 04:12:20 -05:00
jordan hoffmann
31d4eed6e5 Unshelved from pending changelist '24180955':
[CrashFix] Removed invalid check()
- when I made assets diffable against null I must've missed this. Easy fix.

#jira none
#preflight trivial
#rb dan.oconnor
#lockout julien.marchand

[CL 24186475 by jordan hoffmann in ue5-main branch]
2023-02-13 15:23:03 -05:00
stuart hill
60cdf1962c When moving an asset to a different folder in the Editor, do not show the "Check Out Assets" dialog if the Automatically Checkout on Asset Modification option is selected.
Moving an asset can replace the original asset with a redirector, so the source control system will consider the asset in the old location to be modified and the asset in the new location to be added.

#preflight 63e400085c0ce8f11b030df3

[CL 24090216 by stuart hill in ue5-main branch]
2023-02-08 22:01:06 -05:00
wouter burgers
0aa122ff5c SourceControl: Added notification if sync fails when getting latest, similar to the warning shown by FSourceControlWindows::PromptForCheckin for checkin fails.
In addition, I refactored AssetViewUtils::SyncPathsFromSourceControl somewhat.
- Added alternative (preferred) way to get affected files/packages using the FSyncPreview operation as opposed to querying the AssetRegistry.
- Added support for hot reloading the world if one of its external packages (actor/object) got synced so those changes are reflected in the viewport.
- Added support for passing in either content paths or absolute paths to sync.

- Deprecated the 'bIsSyncLatestOperation' parameter from SyncPackagesFromSourceControl.

Note that SyncPackagesFromSourceControl now has a single internal caller (FAssetSourceControlContextMenuState::ExecuteSCCSync).
Note that SyncPathsFromSourceControl now has a single internal caller (FSourceControlWindows::SyncLatest).

[REVIEW]
#preflight 63e3a014244dc45a201c918d

[CL 24074948 by wouter burgers in ue5-main branch]
2023-02-08 12:17:26 -05:00
jamie dale
5fa5b98920 Added additional FPackageName::ObjectPathToX functions
The following functions are new:
 - ObjectPathToPathWithinPackage, eg) "/Game/MyAsset.MyAsset:SubObject.AnotherObject" -> "MyAsset:SubObject.AnotherObject"
 - ObjectPathToOuterPath, eg) "/Game/MyAsset.MyAsset:SubObject.AnotherObject" -> "/Game/MyAsset.MyAsset:SubObject"
 - ObjectPathToSubObjectPath, eg) "/Game/MyAsset.MyAsset:SubObject.AnotherObject" -> "SubObject.AnotherObject"

The behavior of ObjectPathToObjectName has also been fixed to always return the leaf-most object name within the path (eg, "/Game/MyAsset.MyAsset:SubObject.AnotherObject" -> "AnotherObject"). Any code that relied on the old behavior should use ObjectPathToSubObjectPath instead.

#preflight 63e2677e1020773a3f32f55b
#rb Matt.Peters

[CL 24057677 by jamie dale in ue5-main branch]
2023-02-07 15:29:21 -05:00
alexis matte
a20c1131ce Change asset tools import extension support to FNamePermissionList instead of FString. This allow to control the permissions like all the other permission.
#rb jeanluc.corenthin
#preflight 63e24fad07207b2570b72285

[CL 24049361 by alexis matte in ue5-main branch]
2023-02-07 10:49:14 -05:00
jordan hoffmann
bdc51e576e [BugFix] Static Analysis warnings
#rb dan.oconnor
#lockdown julien.marchand
#preflight 63db064f4965eb8c33de5daf

[CL 23972790 by jordan hoffmann in ue5-main branch]
2023-02-02 13:26:22 -05:00
wouter burgers
192829d351 SourceControl: Refactored UsesCustomProjectDir / GetSourceControlLocations usage pattern.
[CL 23965223 by wouter burgers in ue5-main branch]
2023-02-02 03:44:18 -05:00
shirley man
34519468d3 #preflight 63db295b39234ef628432297
#rb trivial
Fixed spelling typo in log message.

[CL 23964736 by shirley man in ue5-main branch]
2023-02-02 01:25:57 -05:00
jordan hoffmann
31b04b24ba [Feature/Bugfix] Support for diffing against nullptr (treated as an empty or nonexistent file)
#rb dan.oconnor
#preflight 63d83f963656ea96dc2a0a4c

#jira UE-173747
"Crash occurs when scrolling down through files in Review Changelist window upon loading of asset"
  - certain widget blueprints were crashing the review tool because we were working around the inability to diff against nullptr by constructing temprorary empty objects. This approach circumvents that problem entirely

#jira UE-173231
"Changelist Review tool allows diffing against previous revision for Deletion changes"
  - while this jira suggests that the ability to diff deletion changes is a bug, it was actually an intended feature. The real bug was that it would crash or fail to work in many cases. This has been fixed by either asset diffing against nullptr or text diffing against an empty file (depending on circumstance)

#jira UE-174610
"Reviewing Changelist with Deletion Changes results in LogLinker warnings & LoadErrors"
 - deletion changes were trying to load the new revision of files but obviously it doesn't exist because it's a deletion. Fixed by only loading the previous revision


note: since the review tool is going to be "Production Ready"  in 5.2, these changes are neccesary for stability

[CL 23924072 by jordan hoffmann in ue5-main branch]
2023-01-31 01:28:46 -05:00
alexis matte
b93fee971d Create a system to control which extension importer should support.
#rb jeanluc.corenthin
#rnx
#preflight 63d7eb4cba4fadeef006c7d7

[CL 23923306 by alexis matte in ue5-main branch]
2023-01-31 01:12:25 -05:00