The UEFN sync feature calls SyncLatestFromSourceControl, which calls SyncPathsFromSourceControl and could potentially sync a lot of items at once.
By batching the force-load and reset-linkers steps, this operation became significantly faster.
#rnx
[CL 26456417 by wouter burgers in 5.3 branch]
The issue was that when moving folder A and B, where A has assets that depends on assets in B, we'd ask the asset registry for the B assets referencers and it was returning to original packages which are now a redirectors. We'd then try to patch soft object paths on a redirector instead of on an actual asset.
We now force a rescan of the moved folders so that the asset registry is up-to-date throughout the move folders process.
#jira UE-187092
#rb matt.peters, julien.stjean
#preflight 64779c080d55081f54a1eca0
[CL 25710991 by JeanMichel Dignard in ue5-main branch]
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]
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]
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]
A scoped class is added to retain and restore all camera views which is used when we reload or sync packages.
#preflight 63d2766de55deff624ed1b5a
[CL 23867883 by stuart hill in ue5-main branch]
* Sync Latest no longer listing and reloading all packages when the source control provider provides a sync preview functionality. When a Sync Preview is available, Sync Latest unloads only the files that are going to be overwritten by the sync operation, and then reloads them and the world
* Refactored Revert All operation to improve performance
* Revert All no longer lists and reloads all packages when the source control provider provides a sync preview functionality. Instead it unloads only the files that may be overwritten by the revert operation (i.e. submittable files), and then reloads them and the world
* Replaced RevertAndReloadAllPackages with RevertAndReloadWorld, no longer listing and reloading all packages (see https://p4-swarm.epicgames.net/reviews/23244245/)
This review is a combination of the two archived reviews https://p4-swarm.epicgames.net/reviews/23736137 and https://p4-swarm.epicgames.net/reviews/23736282
#rb wouter.burgers, stuart.hill, brooke.hubert, francis.hurteau
#preflight 63c9c7786a00f3cc8ead6779
[CL 23796067 by marco anastasi in ue5-main branch]
If a sync with source control reloads the map then it will perform a camera reset.
We can improve the user experience by restoring the camera position and rotation to prevent the camera moving each time a user syncs.
#rb Marco.Anastasi, wouter.burgers
#preflight 637cbe28fa348e8480c94440
[CL 23235166 by stuart hill in ue5-main branch]
Tested compiling fortnite, unrealeditor, lyra, qagame with non-unity/pch
#preflight 63635997876630122adeab9f
#rb none
[CL 22958990 by henrik karlsson in ue5-main branch]
* Force uncached status update if any items in selected aren't up-to-date
* Removed Refresh option since it's done every time the menu is opened
* Make Source control menu update state asynchronously so menu doesn't stall
* Update Checkout to Sync and Checkout so it can all be done at once
* Add Partial Checkout state when files are selected and show users locking files in tooltip
* Add options to Make Writeable and Revert Writeable
* Add error state if source control is unavailable
* Hide options, like checkout, that are not available for the current SCC provider
* Always show all options so users can learn bettern muscle memory
* Add Warning when doing any source control option on selections larger than 25 (currently hardcoded)
* There's still some slight difference in behavior between file and folder selection. If only files are selected the async update will not show any options availabe until the full scan is done and there are some additional features like partial checkout. If there are any folders then options become available the moment one asset is available for an action.
#tests Tested all button scenarios, tested small and large sets of folders, assets and a mix.
[CL 22918013 by christian savoie in ue5-main branch]