ue-mcp 1.3.10-beta.6 → 1.3.10-beta.7
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/package.json
CHANGED
package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/Editor/EditorHandlers.cpp
CHANGED
|
@@ -3564,15 +3564,32 @@ TSharedPtr<FJsonValue> FEditorHandlers::OpenAsset(const TSharedPtr<FJsonObject>&
|
|
|
3564
3564
|
return MCPError(FString::Printf(TEXT("Failed to load asset at '%s'"), *AssetPath));
|
|
3565
3565
|
}
|
|
3566
3566
|
|
|
3567
|
-
// StaticLoadObject returns an unrooted pointer and OpenEditorForAsset can run
|
|
3568
|
-
// the GC, so the asset is held for the rest of the call.
|
|
3569
|
-
FGCObjectScopeGuard AssetScopeGuard(Asset);
|
|
3570
|
-
|
|
3571
3567
|
if (!GEditor)
|
|
3572
3568
|
{
|
|
3573
3569
|
return MCPError(TEXT("GEditor not available"));
|
|
3574
3570
|
}
|
|
3575
3571
|
|
|
3572
|
+
// A World opens by loading it as the editor map, which destroys the map
|
|
3573
|
+
// loaded before it. Asked for the map already loaded, that load would
|
|
3574
|
+
// destroy the very world the guard below pins, and the editor dies on its
|
|
3575
|
+
// world-leak check. The map is already open, so there is nothing to do.
|
|
3576
|
+
if (Asset == GetEditorWorld())
|
|
3577
|
+
{
|
|
3578
|
+
TSharedPtr<FJsonObject> Result = MakeShared<FJsonObject>();
|
|
3579
|
+
Result->SetStringField(TEXT("assetPath"), AssetPath);
|
|
3580
|
+
Result->SetStringField(TEXT("assetClass"), Asset->GetClass()->GetName());
|
|
3581
|
+
Result->SetBoolField(TEXT("success"), true);
|
|
3582
|
+
Result->SetBoolField(TEXT("alreadyOpen"), true);
|
|
3583
|
+
Result->SetBoolField(TEXT("changed"), false);
|
|
3584
|
+
Result->SetBoolField(TEXT("rollbackPossible"), false);
|
|
3585
|
+
Result->SetStringField(TEXT("rollbackNote"), TEXT("The map was already the loaded editor world, so nothing was opened."));
|
|
3586
|
+
return MCPResult(Result);
|
|
3587
|
+
}
|
|
3588
|
+
|
|
3589
|
+
// StaticLoadObject returns an unrooted pointer and OpenEditorForAsset can run
|
|
3590
|
+
// the GC, so the asset is held for the rest of the call.
|
|
3591
|
+
FGCObjectScopeGuard AssetScopeGuard(Asset);
|
|
3592
|
+
|
|
3576
3593
|
UAssetEditorSubsystem* AssetEditorSubsystem = GEditor->GetEditorSubsystem<UAssetEditorSubsystem>();
|
|
3577
3594
|
if (!AssetEditorSubsystem)
|
|
3578
3595
|
{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"FileVersion": 3,
|
|
3
3
|
"Version": 1,
|
|
4
|
-
"VersionName": "1.3.10-beta.
|
|
4
|
+
"VersionName": "1.3.10-beta.7",
|
|
5
5
|
"FriendlyName": "UE MCP Bridge",
|
|
6
6
|
"Description": "C++ WebSocket bridge for UE-MCP, providing 1905+ editor actions over the MCP protocol",
|
|
7
7
|
"Category": "Developer Tools",
|