ue-mcp 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/tool-counts.json
CHANGED
package/dist/tools/asset.js
CHANGED
|
@@ -74,7 +74,7 @@ export const assetTool = categoryTool("asset", "Asset management: list, search,
|
|
|
74
74
|
read: bp("Read asset via reflection. Params: assetPath", "read_asset", (p) => ({ path: p.assetPath })),
|
|
75
75
|
read_properties: bp("Read asset properties with values. Params: assetPath, propertyName?, includeValues?", "read_asset_properties"),
|
|
76
76
|
duplicate: bp("Duplicate asset. Params: sourcePath, destinationPath", "duplicate_asset"),
|
|
77
|
-
rename: bp("Rename asset. Params: assetPath, newName
|
|
77
|
+
rename: bp("Rename asset. Params: assetPath, newName (or sourcePath, destinationPath), force?. World Partition levels are detected and their __ExternalActors__/__ExternalObjects__ packages migrate atomically alongside the .umap, source-side redirectors get fixed up, and the active editor world is swapped to blank if it matches the source (#409). Refuses if any package is dirty - save first. If a prior rename left externals orphaned at the old path, re-running reconciles them. Rollback descriptor is emitted even on partial failure so the inverse rename can recover. `force=true` lets the call merge into a destination with pre-existing externals (used by rollback). For batches of 3+ scene-referenced non-world assets use bulk_rename instead.", "rename_asset"),
|
|
78
78
|
bulk_rename: bp("Batched rename using IAssetTools::RenameAssets - single transaction with one redirector-fixup pass (matches Content Browser drag). Use this over looped rename for scene-referenced assets. World assets are rejected (status=rejected_world); use rename_asset which handles WP externals atomically (#409). Params: renames[] where each entry is {sourcePath, destinationPath} OR {assetPath, newName}.", "bulk_rename_assets", (p) => ({ renames: p.renames })),
|
|
79
79
|
move: bp("Move asset. Params: sourcePath, destinationPath", "move_asset"),
|
|
80
80
|
delete: bp("Delete asset. On failure returns reason (open_in_editor / has_referencers / unknown) plus referencer list. Pass force=true to auto-close any open asset editors before deleting (#278). Params: assetPath, force?", "delete_asset"),
|
package/dist/tools/asset.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset.js","sourceRoot":"","sources":["../../src/tools/asset.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"asset.js","sourceRoot":"","sources":["../../src/tools/asset.ts"],"names":[],"mappings":"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"}
|
package/dist/ue-mcp.default.yml
CHANGED
|
@@ -148,7 +148,7 @@ tasks:
|
|
|
148
148
|
asset.rename:
|
|
149
149
|
class_path: ue-mcp.bridge
|
|
150
150
|
group: asset
|
|
151
|
-
description: "Rename asset. Params: assetPath, newName
|
|
151
|
+
description: "Rename asset. Params: assetPath, newName (or sourcePath, destinationPath), force?. World Partition levels are detected and their __ExternalActors__/__ExternalObjects__ packages migrate atomically alongside the .umap, source-side redirectors get fixed up, and the active editor world is swapped to blank if it matches the source (#409). Refuses if any package is dirty - save first. If a prior rename left externals orphaned at the old path, re-running reconciles them. Rollback descriptor is emitted even on partial failure so the inverse rename can recover. `force=true` lets the call merge into a destination with pre-existing externals (used by rollback). For batches of 3+ scene-referenced non-world assets use bulk_rename instead."
|
|
152
152
|
options:
|
|
153
153
|
method: rename_asset
|
|
154
154
|
asset.bulk_rename:
|
package/package.json
CHANGED
|
@@ -54,6 +54,9 @@
|
|
|
54
54
|
// Reimport
|
|
55
55
|
#include "EditorReimportHandler.h"
|
|
56
56
|
|
|
57
|
+
// World rename redirector cleanup (UEditorLoadingAndSavingUtils ships in FileHelpers.h, already included)
|
|
58
|
+
#include "UObject/ObjectRedirector.h"
|
|
59
|
+
|
|
57
60
|
// Collision / BodySetup
|
|
58
61
|
#include "PhysicsEngine/BodySetup.h"
|
|
59
62
|
#include "AI/Navigation/NavCollisionBase.h"
|
|
@@ -716,10 +719,26 @@ TSharedPtr<FJsonValue> FAssetHandlers::DuplicateAsset(const TSharedPtr<FJsonObje
|
|
|
716
719
|
// UEditorAssetLibrary::RenameAsset on a World Partition .umap renames only
|
|
717
720
|
// the umap and silently orphans every actor in /Game/__ExternalActors__/<Level>/.
|
|
718
721
|
// Detect Worlds and route through IAssetTools::RenameAssets with the world +
|
|
719
|
-
// all external packages in a single atomic batch.
|
|
720
|
-
//
|
|
721
|
-
//
|
|
722
|
-
|
|
722
|
+
// all external packages in a single atomic batch.
|
|
723
|
+
//
|
|
724
|
+
// Guards (in order):
|
|
725
|
+
// 1. Cross-mount renames refused (external-package GUIDs are mount-relative).
|
|
726
|
+
// 2. Active editor world: if it matches the source and isn't dirty, auto-swap
|
|
727
|
+
// to a blank map (RenameAssets on the loaded world otherwise leaves the
|
|
728
|
+
// editor pointing at a stale UWorld*); if dirty, refuse with a clear ask.
|
|
729
|
+
// 3. Dirty world or external packages: refuse - caller must save first.
|
|
730
|
+
// 4. Destination external folders already populated: refuse unless bForceMerge
|
|
731
|
+
// (rollback path uses force to step over orphans left by the forward call).
|
|
732
|
+
// 5. Pre-load every external package and abort before any change if any fail
|
|
733
|
+
// to load (no partial state at the engine level).
|
|
734
|
+
//
|
|
735
|
+
// On success the source-side redirectors are fixed up + deleted so the project
|
|
736
|
+
// doesn't accumulate 200+ stub redirectors per rename.
|
|
737
|
+
//
|
|
738
|
+
// Rollback is emitted unconditionally on a path that reached the mutation - if
|
|
739
|
+
// AssetTools.RenameAssets returns false mid-batch, the rollback descriptor
|
|
740
|
+
// still ships so the caller (or flow runner) can attempt recovery.
|
|
741
|
+
static TSharedPtr<FJsonValue> RenameWorldWithExternals(const FString& SourceAssetPath, const FString& DestAssetPath, bool bForceMerge)
|
|
723
742
|
{
|
|
724
743
|
FString SrcMount, SrcRel, SrcPkg, SrcName;
|
|
725
744
|
FString DstMount, DstRel, DstPkg, DstName;
|
|
@@ -735,6 +754,25 @@ static TSharedPtr<FJsonValue> RenameWorldWithExternals(const FString& SourceAsse
|
|
|
735
754
|
*SrcMount, *DstMount));
|
|
736
755
|
}
|
|
737
756
|
|
|
757
|
+
// Guard 2: active editor world. RenameAssets against the live UWorld leaves
|
|
758
|
+
// the editor pointing at a stale pointer; the safe pattern is to swap to a
|
|
759
|
+
// blank map first. We only do that automatically when the world isn't dirty
|
|
760
|
+
// so we never silently lose unsaved actor edits.
|
|
761
|
+
if (UWorld* EditorWorld = GetEditorWorld())
|
|
762
|
+
{
|
|
763
|
+
UPackage* EditorWorldPkg = EditorWorld->GetOutermost();
|
|
764
|
+
if (EditorWorldPkg && EditorWorldPkg->GetName() == SrcPkg)
|
|
765
|
+
{
|
|
766
|
+
if (EditorWorldPkg->IsDirty())
|
|
767
|
+
{
|
|
768
|
+
return MCPError(FString::Printf(
|
|
769
|
+
TEXT("Refusing to rename World currently open in editor with unsaved changes: %s. Save the level (asset.save) or discard, then re-run."),
|
|
770
|
+
*SourceAssetPath));
|
|
771
|
+
}
|
|
772
|
+
UEditorLoadingAndSavingUtils::NewBlankMap(/*bSaveExistingMap*/ false);
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
|
|
738
776
|
FAssetRegistryModule& ARM = FModuleManager::LoadModuleChecked<FAssetRegistryModule>(TEXT("AssetRegistry"));
|
|
739
777
|
IAssetRegistry& Registry = ARM.Get();
|
|
740
778
|
FAssetToolsModule& ATM = FModuleManager::LoadModuleChecked<FAssetToolsModule>(TEXT("AssetTools"));
|
|
@@ -745,21 +783,26 @@ static TSharedPtr<FJsonValue> RenameWorldWithExternals(const FString& SourceAsse
|
|
|
745
783
|
const FString ExtActorsDst = DstMount + TEXT("__ExternalActors__/") + DstRel;
|
|
746
784
|
const FString ExtObjectsDst = DstMount + TEXT("__ExternalObjects__/") + DstRel;
|
|
747
785
|
|
|
786
|
+
// Skip redirector stubs left by prior renames - we don't want to drag them along.
|
|
748
787
|
auto Gather = [&](const FString& Folder, TArray<FAssetData>& Out)
|
|
749
788
|
{
|
|
750
789
|
FARFilter F;
|
|
751
790
|
F.PackagePaths.Add(FName(*Folder));
|
|
752
791
|
F.bRecursivePaths = true;
|
|
753
792
|
Registry.GetAssets(F, Out);
|
|
793
|
+
Out.RemoveAll([](const FAssetData& D)
|
|
794
|
+
{
|
|
795
|
+
return D.AssetClassPath.GetAssetName() == FName(TEXT("ObjectRedirector"));
|
|
796
|
+
});
|
|
754
797
|
};
|
|
755
798
|
|
|
756
799
|
TArray<FAssetData> DstActorsExisting, DstObjectsExisting;
|
|
757
800
|
Gather(ExtActorsDst, DstActorsExisting);
|
|
758
801
|
Gather(ExtObjectsDst, DstObjectsExisting);
|
|
759
|
-
if (DstActorsExisting.Num() + DstObjectsExisting.Num() > 0)
|
|
802
|
+
if (!bForceMerge && DstActorsExisting.Num() + DstObjectsExisting.Num() > 0)
|
|
760
803
|
{
|
|
761
804
|
return MCPError(FString::Printf(
|
|
762
|
-
TEXT("Refusing to rename World: destination external folders already contain %d asset(s) at %s or %s. Pick a clean destination."),
|
|
805
|
+
TEXT("Refusing to rename World: destination external folders already contain %d asset(s) at %s or %s. Pick a clean destination, or pass force=true to merge (used by rollback)."),
|
|
763
806
|
DstActorsExisting.Num() + DstObjectsExisting.Num(), *ExtActorsDst, *ExtObjectsDst));
|
|
764
807
|
}
|
|
765
808
|
|
|
@@ -773,6 +816,32 @@ static TSharedPtr<FJsonValue> RenameWorldWithExternals(const FString& SourceAsse
|
|
|
773
816
|
return MCPError(FString::Printf(TEXT("Failed to load World asset: %s. No changes made."), *SourceAssetPath));
|
|
774
817
|
}
|
|
775
818
|
|
|
819
|
+
// Guard 3: dirty world or externals. Silent loss vector if we let it through.
|
|
820
|
+
TArray<FString> DirtyPackages;
|
|
821
|
+
auto CheckDirty = [&](const FString& PkgName)
|
|
822
|
+
{
|
|
823
|
+
if (UPackage* P = FindPackage(nullptr, *PkgName))
|
|
824
|
+
{
|
|
825
|
+
if (P->IsDirty()) DirtyPackages.Add(PkgName);
|
|
826
|
+
}
|
|
827
|
+
};
|
|
828
|
+
CheckDirty(SrcPkg);
|
|
829
|
+
for (const FAssetData& D : SrcActors) CheckDirty(D.PackageName.ToString());
|
|
830
|
+
for (const FAssetData& D : SrcObjects) CheckDirty(D.PackageName.ToString());
|
|
831
|
+
if (DirtyPackages.Num() > 0)
|
|
832
|
+
{
|
|
833
|
+
FString Examples;
|
|
834
|
+
const int32 Show = FMath::Min(DirtyPackages.Num(), 5);
|
|
835
|
+
for (int32 i = 0; i < Show; ++i)
|
|
836
|
+
{
|
|
837
|
+
if (i) Examples += TEXT(", ");
|
|
838
|
+
Examples += DirtyPackages[i];
|
|
839
|
+
}
|
|
840
|
+
return MCPError(FString::Printf(
|
|
841
|
+
TEXT("Refusing to rename World: %d package(s) have unsaved changes. Save with asset.save (or editor.save_dirty) first. Examples: %s"),
|
|
842
|
+
DirtyPackages.Num(), *Examples));
|
|
843
|
+
}
|
|
844
|
+
|
|
776
845
|
TArray<FAssetRenameData> Batch;
|
|
777
846
|
Batch.Reserve(1 + SrcActors.Num() + SrcObjects.Num());
|
|
778
847
|
|
|
@@ -825,30 +894,200 @@ static TSharedPtr<FJsonValue> RenameWorldWithExternals(const FString& SourceAsse
|
|
|
825
894
|
FailedLoad.Num(), *Examples));
|
|
826
895
|
}
|
|
827
896
|
|
|
828
|
-
|
|
829
|
-
|
|
897
|
+
// Build response + rollback handle BEFORE the mutation. We've cached every
|
|
898
|
+
// source path that's about to move, so the inverse is deterministic even if
|
|
899
|
+
// the batch half-completes. Rollback passes force=true to step over orphans
|
|
900
|
+
// left at the original destination by a partial forward run.
|
|
830
901
|
auto R = MCPSuccess();
|
|
831
902
|
R->SetStringField(TEXT("sourcePath"), SourceAssetPath);
|
|
832
903
|
R->SetStringField(TEXT("destinationPath"), DestAssetPath);
|
|
833
904
|
R->SetStringField(TEXT("kind"), TEXT("world"));
|
|
834
|
-
R->SetBoolField(TEXT("success"), bOk);
|
|
835
905
|
R->SetNumberField(TEXT("externalActors"), ActorAdded);
|
|
836
906
|
R->SetNumberField(TEXT("externalObjects"), ObjectAdded);
|
|
837
907
|
R->SetNumberField(TEXT("totalRenamed"), Batch.Num());
|
|
838
908
|
|
|
909
|
+
TSharedPtr<FJsonObject> RollbackPayload = MakeShared<FJsonObject>();
|
|
910
|
+
RollbackPayload->SetStringField(TEXT("sourcePath"), DestAssetPath);
|
|
911
|
+
RollbackPayload->SetStringField(TEXT("destinationPath"), SourceAssetPath);
|
|
912
|
+
RollbackPayload->SetBoolField(TEXT("force"), true);
|
|
913
|
+
MCPSetRollback(R, TEXT("rename_asset"), RollbackPayload);
|
|
914
|
+
|
|
915
|
+
const bool bOk = AssetTools.RenameAssets(Batch);
|
|
916
|
+
R->SetBoolField(TEXT("success"), bOk);
|
|
917
|
+
|
|
839
918
|
if (!bOk)
|
|
840
919
|
{
|
|
841
|
-
|
|
842
|
-
|
|
920
|
+
// Build the error object by hand so the rollback descriptor survives -
|
|
921
|
+
// MCPError() would drop it. The caller (flow runner) can invoke the
|
|
922
|
+
// inverse rename to attempt recovery from a partial batch.
|
|
923
|
+
TSharedPtr<FJsonObject> Err = MakeShared<FJsonObject>();
|
|
924
|
+
Err->SetBoolField(TEXT("success"), false);
|
|
925
|
+
Err->SetBoolField(TEXT("partial"), true);
|
|
926
|
+
Err->SetStringField(TEXT("error"), FString::Printf(
|
|
927
|
+
TEXT("IAssetTools::RenameAssets failed on World+externals batch (%d items: 1 world, %d actors, %d objects). Rollback descriptor is attached - invoke the inverse rename to recover."),
|
|
843
928
|
Batch.Num(), ActorAdded, ObjectAdded));
|
|
929
|
+
MCPSetRollback(Err, TEXT("rename_asset"), RollbackPayload);
|
|
930
|
+
return MakeShared<FJsonValueObject>(Err);
|
|
931
|
+
}
|
|
932
|
+
|
|
933
|
+
// Source-side redirector cleanup: AssetTools.RenameAssets leaves a redirector
|
|
934
|
+
// stub at every old path. With WP that's potentially hundreds of stubs - fix
|
|
935
|
+
// up referencers and delete them so the project doesn't accumulate cruft.
|
|
936
|
+
TArray<FAssetData> SourceRedirectors;
|
|
937
|
+
auto GatherRedirectorsAt = [&](const FString& Folder)
|
|
938
|
+
{
|
|
939
|
+
FARFilter F;
|
|
940
|
+
F.PackagePaths.Add(FName(*Folder));
|
|
941
|
+
F.bRecursivePaths = true;
|
|
942
|
+
F.ClassPaths.Add(FTopLevelAssetPath(TEXT("/Script/CoreUObject"), TEXT("ObjectRedirector")));
|
|
943
|
+
Registry.GetAssets(F, SourceRedirectors);
|
|
944
|
+
};
|
|
945
|
+
GatherRedirectorsAt(FPaths::GetPath(SrcPkg));
|
|
946
|
+
GatherRedirectorsAt(ExtActorsSrc);
|
|
947
|
+
GatherRedirectorsAt(ExtObjectsSrc);
|
|
948
|
+
|
|
949
|
+
TArray<UObjectRedirector*> RedirectorObjects;
|
|
950
|
+
RedirectorObjects.Reserve(SourceRedirectors.Num());
|
|
951
|
+
for (const FAssetData& D : SourceRedirectors)
|
|
952
|
+
{
|
|
953
|
+
if (UObjectRedirector* Red = Cast<UObjectRedirector>(D.GetAsset()))
|
|
954
|
+
{
|
|
955
|
+
RedirectorObjects.Add(Red);
|
|
956
|
+
}
|
|
957
|
+
}
|
|
958
|
+
int32 RedirectorsCleaned = RedirectorObjects.Num();
|
|
959
|
+
if (RedirectorsCleaned > 0)
|
|
960
|
+
{
|
|
961
|
+
AssetTools.FixupReferencers(RedirectorObjects, /*bCheckoutDialogPrompt*/ false);
|
|
844
962
|
}
|
|
963
|
+
R->SetNumberField(TEXT("redirectorsCleaned"), RedirectorsCleaned);
|
|
845
964
|
|
|
846
965
|
MCPSetUpdated(R);
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
966
|
+
return MCPResult(R);
|
|
967
|
+
}
|
|
968
|
+
|
|
969
|
+
// ─── #409: orphan recovery ───────────────────────────────────────────
|
|
970
|
+
// Fast-path called when the source .umap is gone but the destination .umap
|
|
971
|
+
// exists. If externals are still at the source path (a previous rename
|
|
972
|
+
// orphaned them), migrate them into place. If they're already at the
|
|
973
|
+
// destination, return Existed.
|
|
974
|
+
static TSharedPtr<FJsonValue> ReconcileOrphanExternals(const FString& SourceAssetPath, const FString& DestAssetPath)
|
|
975
|
+
{
|
|
976
|
+
FString SrcMount, SrcRel, SrcPkg, SrcName;
|
|
977
|
+
FString DstMount, DstRel, DstPkg, DstName;
|
|
978
|
+
if (!SplitMountAndRel(SourceAssetPath, SrcMount, SrcRel, SrcPkg, SrcName) ||
|
|
979
|
+
!SplitMountAndRel(DestAssetPath, DstMount, DstRel, DstPkg, DstName) ||
|
|
980
|
+
SrcMount != DstMount)
|
|
981
|
+
{
|
|
982
|
+
auto Noop = MCPSuccess();
|
|
983
|
+
MCPSetExisted(Noop);
|
|
984
|
+
Noop->SetStringField(TEXT("sourcePath"), SourceAssetPath);
|
|
985
|
+
Noop->SetStringField(TEXT("destinationPath"), DestAssetPath);
|
|
986
|
+
return MCPResult(Noop);
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
FAssetRegistryModule& ARM = FModuleManager::LoadModuleChecked<FAssetRegistryModule>(TEXT("AssetRegistry"));
|
|
990
|
+
IAssetRegistry& Registry = ARM.Get();
|
|
851
991
|
|
|
992
|
+
const FString ExtActorsSrc = SrcMount + TEXT("__ExternalActors__/") + SrcRel;
|
|
993
|
+
const FString ExtObjectsSrc = SrcMount + TEXT("__ExternalObjects__/") + SrcRel;
|
|
994
|
+
const FString ExtActorsDst = DstMount + TEXT("__ExternalActors__/") + DstRel;
|
|
995
|
+
const FString ExtObjectsDst = DstMount + TEXT("__ExternalObjects__/") + DstRel;
|
|
996
|
+
|
|
997
|
+
auto Gather = [&](const FString& Folder, TArray<FAssetData>& Out)
|
|
998
|
+
{
|
|
999
|
+
FARFilter F;
|
|
1000
|
+
F.PackagePaths.Add(FName(*Folder));
|
|
1001
|
+
F.bRecursivePaths = true;
|
|
1002
|
+
Registry.GetAssets(F, Out);
|
|
1003
|
+
Out.RemoveAll([](const FAssetData& D)
|
|
1004
|
+
{
|
|
1005
|
+
return D.AssetClassPath.GetAssetName() == FName(TEXT("ObjectRedirector"));
|
|
1006
|
+
});
|
|
1007
|
+
};
|
|
1008
|
+
|
|
1009
|
+
TArray<FAssetData> Orphans;
|
|
1010
|
+
Gather(ExtActorsSrc, Orphans);
|
|
1011
|
+
const int32 OrphanActors = Orphans.Num();
|
|
1012
|
+
TArray<FAssetData> OrphanObjects;
|
|
1013
|
+
Gather(ExtObjectsSrc, OrphanObjects);
|
|
1014
|
+
Orphans.Append(OrphanObjects);
|
|
1015
|
+
|
|
1016
|
+
if (Orphans.Num() == 0)
|
|
1017
|
+
{
|
|
1018
|
+
// True idempotent replay - everything already at destination.
|
|
1019
|
+
auto Noop = MCPSuccess();
|
|
1020
|
+
MCPSetExisted(Noop);
|
|
1021
|
+
Noop->SetStringField(TEXT("sourcePath"), SourceAssetPath);
|
|
1022
|
+
Noop->SetStringField(TEXT("destinationPath"), DestAssetPath);
|
|
1023
|
+
return MCPResult(Noop);
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
FAssetToolsModule& ATM = FModuleManager::LoadModuleChecked<FAssetToolsModule>(TEXT("AssetTools"));
|
|
1027
|
+
IAssetTools& AssetTools = ATM.Get();
|
|
1028
|
+
|
|
1029
|
+
TArray<FAssetRenameData> Batch;
|
|
1030
|
+
Batch.Reserve(Orphans.Num());
|
|
1031
|
+
TArray<FString> FailedLoad;
|
|
1032
|
+
|
|
1033
|
+
auto Remap = [&](const FString& PkgName, FString& OutPath, FString& OutName) -> bool
|
|
1034
|
+
{
|
|
1035
|
+
auto Try = [&](const FString& Src, const FString& Dst) -> bool
|
|
1036
|
+
{
|
|
1037
|
+
if (!PkgName.StartsWith(Src + TEXT("/"))) return false;
|
|
1038
|
+
const FString Suffix = PkgName.RightChop(Src.Len() + 1);
|
|
1039
|
+
const FString Sub = FPaths::GetPath(Suffix);
|
|
1040
|
+
OutPath = Sub.IsEmpty() ? Dst : (Dst + TEXT("/") + Sub);
|
|
1041
|
+
OutName = FPaths::GetBaseFilename(Suffix);
|
|
1042
|
+
return true;
|
|
1043
|
+
};
|
|
1044
|
+
return Try(ExtActorsSrc, ExtActorsDst) || Try(ExtObjectsSrc, ExtObjectsDst);
|
|
1045
|
+
};
|
|
1046
|
+
|
|
1047
|
+
for (const FAssetData& Data : Orphans)
|
|
1048
|
+
{
|
|
1049
|
+
const FString PkgName = Data.PackageName.ToString();
|
|
1050
|
+
FString NewPkgPath, NewName;
|
|
1051
|
+
if (!Remap(PkgName, NewPkgPath, NewName))
|
|
1052
|
+
{
|
|
1053
|
+
FailedLoad.Add(PkgName + TEXT(" (path mismatch)"));
|
|
1054
|
+
continue;
|
|
1055
|
+
}
|
|
1056
|
+
UObject* Obj = Data.GetAsset();
|
|
1057
|
+
if (!Obj)
|
|
1058
|
+
{
|
|
1059
|
+
FailedLoad.Add(PkgName);
|
|
1060
|
+
continue;
|
|
1061
|
+
}
|
|
1062
|
+
Batch.Emplace(TWeakObjectPtr<UObject>(Obj), NewPkgPath, NewName);
|
|
1063
|
+
}
|
|
1064
|
+
|
|
1065
|
+
if (FailedLoad.Num() > 0)
|
|
1066
|
+
{
|
|
1067
|
+
return MCPError(FString::Printf(
|
|
1068
|
+
TEXT("Found %d orphan external(s) at %s* but failed to load %d. Aborting reconcile."),
|
|
1069
|
+
Orphans.Num(), *(SrcMount + TEXT("__ExternalActors__/") + SrcRel), FailedLoad.Num()));
|
|
1070
|
+
}
|
|
1071
|
+
|
|
1072
|
+
const bool bOk = AssetTools.RenameAssets(Batch);
|
|
1073
|
+
|
|
1074
|
+
auto R = MCPSuccess();
|
|
1075
|
+
R->SetStringField(TEXT("sourcePath"), SourceAssetPath);
|
|
1076
|
+
R->SetStringField(TEXT("destinationPath"), DestAssetPath);
|
|
1077
|
+
R->SetStringField(TEXT("kind"), TEXT("orphan_reconcile"));
|
|
1078
|
+
R->SetBoolField(TEXT("success"), bOk);
|
|
1079
|
+
R->SetNumberField(TEXT("externalActors"), OrphanActors);
|
|
1080
|
+
R->SetNumberField(TEXT("externalObjects"), Orphans.Num() - OrphanActors);
|
|
1081
|
+
R->SetNumberField(TEXT("totalRenamed"), Batch.Num());
|
|
1082
|
+
|
|
1083
|
+
if (!bOk)
|
|
1084
|
+
{
|
|
1085
|
+
return MCPError(FString::Printf(
|
|
1086
|
+
TEXT("Orphan reconcile failed: RenameAssets returned false on %d external(s). State may be partial."),
|
|
1087
|
+
Batch.Num()));
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
MCPSetUpdated(R);
|
|
852
1091
|
return MCPResult(R);
|
|
853
1092
|
}
|
|
854
1093
|
|
|
@@ -892,10 +1131,17 @@ TSharedPtr<FJsonValue> FAssetHandlers::RenameAsset(const TSharedPtr<FJsonObject>
|
|
|
892
1131
|
}
|
|
893
1132
|
|
|
894
1133
|
// Idempotency: if source is absent but destination exists, prior run succeeded.
|
|
1134
|
+
// For Worlds, also reconcile any externals stranded at the source path - the
|
|
1135
|
+
// .umap moving without its externals is exactly the #409 failure mode, and
|
|
1136
|
+
// re-running rename_asset should fix it instead of silently no-opping.
|
|
895
1137
|
if (!UEditorAssetLibrary::DoesAssetExist(SourcePath))
|
|
896
1138
|
{
|
|
897
1139
|
if (UEditorAssetLibrary::DoesAssetExist(DestPath))
|
|
898
1140
|
{
|
|
1141
|
+
if (IsWorldAsset(DestPath))
|
|
1142
|
+
{
|
|
1143
|
+
return ReconcileOrphanExternals(SourcePath, DestPath);
|
|
1144
|
+
}
|
|
899
1145
|
auto Noop = MCPSuccess();
|
|
900
1146
|
MCPSetExisted(Noop);
|
|
901
1147
|
Noop->SetStringField(TEXT("sourcePath"), SourcePath);
|
|
@@ -907,10 +1153,12 @@ TSharedPtr<FJsonValue> FAssetHandlers::RenameAsset(const TSharedPtr<FJsonObject>
|
|
|
907
1153
|
|
|
908
1154
|
// #409: Worlds carry external actor/object packages in /Game/__ExternalActors__/<LevelPath>/.
|
|
909
1155
|
// The plain UEditorAssetLibrary::RenameAsset path silently orphans those - route through
|
|
910
|
-
// a world-aware batch rename instead.
|
|
1156
|
+
// a world-aware batch rename instead. `force` lets a rollback call step over
|
|
1157
|
+
// orphans at the destination left by a partial forward rename.
|
|
911
1158
|
if (IsWorldAsset(SourcePath))
|
|
912
1159
|
{
|
|
913
|
-
|
|
1160
|
+
const bool bForce = OptionalBool(Params, TEXT("force"), false);
|
|
1161
|
+
return RenameWorldWithExternals(SourcePath, DestPath, bForce);
|
|
914
1162
|
}
|
|
915
1163
|
|
|
916
1164
|
bool bOk = UEditorAssetLibrary::RenameAsset(SourcePath, DestPath);
|