ue-mcp 0.4.26 → 0.4.27
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/tools/blueprint.js +2 -0
- package/dist/tools/blueprint.js.map +1 -1
- package/package.json +1 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers.cpp +1 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers.cpp +147 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers.h +1 -0
package/dist/tools/blueprint.js
CHANGED
|
@@ -17,6 +17,7 @@ export const blueprintTool = categoryTool("blueprint", "Blueprint reading, autho
|
|
|
17
17
|
connect_pins: bp("connect_pins"),
|
|
18
18
|
add_component: bp("add_component", (p) => ({ path: p.assetPath, componentClass: p.componentClass, componentName: p.componentName ?? p.componentClass })),
|
|
19
19
|
set_component_property: bp("set_blueprint_component_property", (p) => ({ path: p.assetPath, componentName: p.componentName, propertyName: p.propertyName, value: p.value })),
|
|
20
|
+
set_class_default: bp("set_class_default", (p) => ({ path: p.assetPath, propertyName: p.propertyName, value: p.value })),
|
|
20
21
|
compile: bp("compile_blueprint", (p) => ({ path: p.assetPath })),
|
|
21
22
|
list_node_types: bp("list_node_types"),
|
|
22
23
|
search_node_types: bp("search_node_types"),
|
|
@@ -41,6 +42,7 @@ export const blueprintTool = categoryTool("blueprint", "Blueprint reading, autho
|
|
|
41
42
|
- connect_pins: Wire nodes. Params: sourceNode, sourcePin, targetNode, targetPin, assetPath, graphName?
|
|
42
43
|
- add_component: Add BP component. Params: assetPath, componentClass, componentName?
|
|
43
44
|
- set_component_property: Set property on SCS component template (supports dot paths, asset paths for object refs). Params: assetPath, componentName, propertyName, value
|
|
45
|
+
- set_class_default: Set UPROPERTY on Blueprint CDO (FName, object refs, soft refs, TArray, TMap via ImportText). Params: assetPath, propertyName, value
|
|
44
46
|
- compile: Compile Blueprint. Params: assetPath
|
|
45
47
|
- list_node_types: List node types. Params: category?, includeFunctions?
|
|
46
48
|
- search_node_types: Search nodes. Params: query
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blueprint.js","sourceRoot":"","sources":["../../src/tools/blueprint.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"blueprint.js","sourceRoot":"","sources":["../../src/tools/blueprint.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1854,7 +1854,7 @@ TSharedPtr<FJsonValue> FAssetHandlers::ReimportAsset(const TSharedPtr<FJsonObjec
|
|
|
1854
1854
|
UAssetImportData* ImportData = nullptr;
|
|
1855
1855
|
if (UStaticMesh* SM = Cast<UStaticMesh>(Asset))
|
|
1856
1856
|
{
|
|
1857
|
-
ImportData = SM->
|
|
1857
|
+
ImportData = SM->GetAssetImportData();
|
|
1858
1858
|
}
|
|
1859
1859
|
else if (USkeletalMesh* SKM = Cast<USkeletalMesh>(Asset))
|
|
1860
1860
|
{
|
|
@@ -93,6 +93,7 @@ void FBlueprintHandlers::RegisterHandlers(FMCPHandlerRegistry& Registry)
|
|
|
93
93
|
Registry.RegisterHandler(TEXT("set_node_property"), &SetNodeProperty);
|
|
94
94
|
Registry.RegisterHandler(TEXT("list_blueprint_graphs"), &ListGraphs);
|
|
95
95
|
Registry.RegisterHandler(TEXT("set_blueprint_component_property"), &SetComponentProperty);
|
|
96
|
+
Registry.RegisterHandler(TEXT("set_class_default"), &SetClassDefault);
|
|
96
97
|
}
|
|
97
98
|
|
|
98
99
|
UBlueprint* FBlueprintHandlers::LoadBlueprint(const FString& AssetPath)
|
|
@@ -2511,3 +2512,149 @@ TSharedPtr<FJsonValue> FBlueprintHandlers::SetComponentProperty(const TSharedPtr
|
|
|
2511
2512
|
|
|
2512
2513
|
return MakeShared<FJsonValueObject>(Result);
|
|
2513
2514
|
}
|
|
2515
|
+
|
|
2516
|
+
// ---------------------------------------------------------------------------
|
|
2517
|
+
// set_class_default — Set a UPROPERTY on a Blueprint's Class Default Object
|
|
2518
|
+
// Params: assetPath, propertyName, value
|
|
2519
|
+
// ---------------------------------------------------------------------------
|
|
2520
|
+
TSharedPtr<FJsonValue> FBlueprintHandlers::SetClassDefault(const TSharedPtr<FJsonObject>& Params)
|
|
2521
|
+
{
|
|
2522
|
+
TSharedPtr<FJsonObject> Result = MakeShared<FJsonObject>();
|
|
2523
|
+
|
|
2524
|
+
FString AssetPath;
|
|
2525
|
+
if (!Params->TryGetStringField(TEXT("path"), AssetPath) && !Params->TryGetStringField(TEXT("assetPath"), AssetPath))
|
|
2526
|
+
{
|
|
2527
|
+
Result->SetStringField(TEXT("error"), TEXT("Missing 'assetPath' parameter"));
|
|
2528
|
+
Result->SetBoolField(TEXT("success"), false);
|
|
2529
|
+
return MakeShared<FJsonValueObject>(Result);
|
|
2530
|
+
}
|
|
2531
|
+
|
|
2532
|
+
FString PropertyName;
|
|
2533
|
+
if (!Params->TryGetStringField(TEXT("propertyName"), PropertyName))
|
|
2534
|
+
{
|
|
2535
|
+
Result->SetStringField(TEXT("error"), TEXT("Missing 'propertyName' parameter"));
|
|
2536
|
+
Result->SetBoolField(TEXT("success"), false);
|
|
2537
|
+
return MakeShared<FJsonValueObject>(Result);
|
|
2538
|
+
}
|
|
2539
|
+
|
|
2540
|
+
FString Value;
|
|
2541
|
+
if (!Params->TryGetStringField(TEXT("value"), Value))
|
|
2542
|
+
{
|
|
2543
|
+
Result->SetStringField(TEXT("error"), TEXT("Missing 'value' parameter"));
|
|
2544
|
+
Result->SetBoolField(TEXT("success"), false);
|
|
2545
|
+
return MakeShared<FJsonValueObject>(Result);
|
|
2546
|
+
}
|
|
2547
|
+
|
|
2548
|
+
UBlueprint* Blueprint = LoadBlueprint(AssetPath);
|
|
2549
|
+
if (!Blueprint)
|
|
2550
|
+
{
|
|
2551
|
+
Result->SetStringField(TEXT("error"), FString::Printf(TEXT("Blueprint not found: %s"), *AssetPath));
|
|
2552
|
+
Result->SetBoolField(TEXT("success"), false);
|
|
2553
|
+
return MakeShared<FJsonValueObject>(Result);
|
|
2554
|
+
}
|
|
2555
|
+
|
|
2556
|
+
UClass* GenClass = Blueprint->GeneratedClass;
|
|
2557
|
+
if (!GenClass)
|
|
2558
|
+
{
|
|
2559
|
+
Result->SetStringField(TEXT("error"), TEXT("Blueprint has no GeneratedClass (needs compilation first?)"));
|
|
2560
|
+
Result->SetBoolField(TEXT("success"), false);
|
|
2561
|
+
return MakeShared<FJsonValueObject>(Result);
|
|
2562
|
+
}
|
|
2563
|
+
|
|
2564
|
+
UObject* CDO = GenClass->GetDefaultObject();
|
|
2565
|
+
if (!CDO)
|
|
2566
|
+
{
|
|
2567
|
+
Result->SetStringField(TEXT("error"), TEXT("Could not get Class Default Object"));
|
|
2568
|
+
Result->SetBoolField(TEXT("success"), false);
|
|
2569
|
+
return MakeShared<FJsonValueObject>(Result);
|
|
2570
|
+
}
|
|
2571
|
+
|
|
2572
|
+
// Navigate dotted property paths (e.g. "EjectConfigs.Cork.Force")
|
|
2573
|
+
TArray<FString> PathParts;
|
|
2574
|
+
PropertyName.ParseIntoArray(PathParts, TEXT("."));
|
|
2575
|
+
|
|
2576
|
+
UStruct* CurrentStruct = GenClass;
|
|
2577
|
+
void* CurrentContainer = CDO;
|
|
2578
|
+
FProperty* FinalProp = nullptr;
|
|
2579
|
+
|
|
2580
|
+
for (int32 i = 0; i < PathParts.Num(); i++)
|
|
2581
|
+
{
|
|
2582
|
+
FProperty* Prop = CurrentStruct->FindPropertyByName(FName(*PathParts[i]));
|
|
2583
|
+
if (!Prop) break;
|
|
2584
|
+
|
|
2585
|
+
if (i < PathParts.Num() - 1)
|
|
2586
|
+
{
|
|
2587
|
+
FStructProperty* StructProp = CastField<FStructProperty>(Prop);
|
|
2588
|
+
if (!StructProp) break;
|
|
2589
|
+
CurrentContainer = StructProp->ContainerPtrToValuePtr<void>(CurrentContainer);
|
|
2590
|
+
CurrentStruct = StructProp->Struct;
|
|
2591
|
+
}
|
|
2592
|
+
else
|
|
2593
|
+
{
|
|
2594
|
+
FinalProp = Prop;
|
|
2595
|
+
}
|
|
2596
|
+
}
|
|
2597
|
+
|
|
2598
|
+
if (!FinalProp)
|
|
2599
|
+
{
|
|
2600
|
+
TArray<FString> PropNames;
|
|
2601
|
+
for (TFieldIterator<FProperty> It(GenClass); It; ++It)
|
|
2602
|
+
{
|
|
2603
|
+
PropNames.Add(It->GetName());
|
|
2604
|
+
}
|
|
2605
|
+
Result->SetStringField(TEXT("error"), FString::Printf(
|
|
2606
|
+
TEXT("Property '%s' not found on %s. Properties: [%s]"),
|
|
2607
|
+
*PropertyName, *GenClass->GetName(),
|
|
2608
|
+
*FString::Join(PropNames, TEXT(", "))));
|
|
2609
|
+
Result->SetBoolField(TEXT("success"), false);
|
|
2610
|
+
return MakeShared<FJsonValueObject>(Result);
|
|
2611
|
+
}
|
|
2612
|
+
|
|
2613
|
+
void* ValuePtr = FinalProp->ContainerPtrToValuePtr<void>(CurrentContainer);
|
|
2614
|
+
|
|
2615
|
+
if (FObjectPropertyBase* ObjProp = CastField<FObjectPropertyBase>(FinalProp))
|
|
2616
|
+
{
|
|
2617
|
+
UObject* LoadedObj = LoadObject<UObject>(nullptr, *Value);
|
|
2618
|
+
if (LoadedObj)
|
|
2619
|
+
{
|
|
2620
|
+
ObjProp->SetObjectPropertyValue(ValuePtr, LoadedObj);
|
|
2621
|
+
}
|
|
2622
|
+
else
|
|
2623
|
+
{
|
|
2624
|
+
Result->SetStringField(TEXT("error"), FString::Printf(
|
|
2625
|
+
TEXT("Could not load object at '%s' for property '%s'"), *Value, *PropertyName));
|
|
2626
|
+
Result->SetBoolField(TEXT("success"), false);
|
|
2627
|
+
return MakeShared<FJsonValueObject>(Result);
|
|
2628
|
+
}
|
|
2629
|
+
}
|
|
2630
|
+
else if (FSoftObjectProperty* SoftProp = CastField<FSoftObjectProperty>(FinalProp))
|
|
2631
|
+
{
|
|
2632
|
+
FSoftObjectPath SoftPath(Value);
|
|
2633
|
+
SoftProp->SetPropertyValue(ValuePtr, FSoftObjectPtr(SoftPath));
|
|
2634
|
+
}
|
|
2635
|
+
else
|
|
2636
|
+
{
|
|
2637
|
+
// Generic: ImportText handles FName, int, float, bool, FVector, TArray, TMap, etc.
|
|
2638
|
+
FinalProp->ImportText_Direct(*Value, ValuePtr, CDO, PPF_None);
|
|
2639
|
+
}
|
|
2640
|
+
|
|
2641
|
+
CDO->PostEditChange();
|
|
2642
|
+
|
|
2643
|
+
// Save
|
|
2644
|
+
UPackage* Package = Blueprint->GetOutermost();
|
|
2645
|
+
if (Package)
|
|
2646
|
+
{
|
|
2647
|
+
Package->MarkPackageDirty();
|
|
2648
|
+
FString PackageFileName = FPackageName::LongPackageNameToFilename(Package->GetName(), FPackageName::GetAssetPackageExtension());
|
|
2649
|
+
FSavePackageArgs SaveArgs;
|
|
2650
|
+
SaveArgs.TopLevelFlags = RF_Standalone;
|
|
2651
|
+
UPackage::SavePackage(Package, nullptr, *PackageFileName, SaveArgs);
|
|
2652
|
+
}
|
|
2653
|
+
|
|
2654
|
+
Result->SetStringField(TEXT("path"), AssetPath);
|
|
2655
|
+
Result->SetStringField(TEXT("propertyName"), PropertyName);
|
|
2656
|
+
Result->SetStringField(TEXT("value"), Value);
|
|
2657
|
+
Result->SetBoolField(TEXT("success"), true);
|
|
2658
|
+
|
|
2659
|
+
return MakeShared<FJsonValueObject>(Result);
|
|
2660
|
+
}
|
|
@@ -37,6 +37,7 @@ private:
|
|
|
37
37
|
static TSharedPtr<FJsonValue> SetNodeProperty(const TSharedPtr<FJsonObject>& Params);
|
|
38
38
|
static TSharedPtr<FJsonValue> ListGraphs(const TSharedPtr<FJsonObject>& Params);
|
|
39
39
|
static TSharedPtr<FJsonValue> SetComponentProperty(const TSharedPtr<FJsonObject>& Params);
|
|
40
|
+
static TSharedPtr<FJsonValue> SetClassDefault(const TSharedPtr<FJsonObject>& Params);
|
|
40
41
|
|
|
41
42
|
// Helper functions
|
|
42
43
|
static class UBlueprint* LoadBlueprint(const FString& AssetPath);
|