ue-mcp 0.4.10 → 0.4.11

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ue-mcp",
3
- "version": "0.4.10",
3
+ "version": "0.4.11",
4
4
  "description": "Unreal Engine MCP server — 19 tools, 300+ actions for AI-driven editor control",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1052,14 +1052,28 @@ TSharedPtr<FJsonValue> FBlueprintHandlers::AddNode(const TSharedPtr<FJsonObject>
1052
1052
  if (NodeParams)
1053
1053
  {
1054
1054
  FString FunctionName;
1055
+ FString TargetClassName;
1056
+
1057
+ // Accept flat params: functionName, targetClass
1055
1058
  if (!(*NodeParams)->TryGetStringField(TEXT("functionName"), FunctionName))
1056
1059
  (*NodeParams)->TryGetStringField(TEXT("memberName"), FunctionName);
1060
+ if (!(*NodeParams)->TryGetStringField(TEXT("targetClass"), TargetClassName))
1061
+ (*NodeParams)->TryGetStringField(TEXT("memberParent"), TargetClassName);
1062
+
1063
+ // Also accept nested: {"FunctionReference":{"MemberName":"X","MemberParent":"Y"}}
1064
+ if (FunctionName.IsEmpty())
1065
+ {
1066
+ const TSharedPtr<FJsonObject>* FuncRef = nullptr;
1067
+ if ((*NodeParams)->TryGetObjectField(TEXT("FunctionReference"), FuncRef))
1068
+ {
1069
+ (*FuncRef)->TryGetStringField(TEXT("MemberName"), FunctionName);
1070
+ if (TargetClassName.IsEmpty())
1071
+ (*FuncRef)->TryGetStringField(TEXT("MemberParent"), TargetClassName);
1072
+ }
1073
+ }
1057
1074
 
1058
1075
  if (!FunctionName.IsEmpty())
1059
1076
  {
1060
- FString TargetClassName;
1061
- if (!(*NodeParams)->TryGetStringField(TEXT("targetClass"), TargetClassName))
1062
- (*NodeParams)->TryGetStringField(TEXT("memberParent"), TargetClassName);
1063
1077
 
1064
1078
  UClass* TargetClass = nullptr;
1065
1079
  if (!TargetClassName.IsEmpty())
@@ -1087,14 +1101,27 @@ TSharedPtr<FJsonValue> FBlueprintHandlers::AddNode(const TSharedPtr<FJsonObject>
1087
1101
  if (NodeParams)
1088
1102
  {
1089
1103
  FString EventName;
1104
+ FString EventClassName;
1105
+
1090
1106
  if (!(*NodeParams)->TryGetStringField(TEXT("eventName"), EventName))
1091
1107
  (*NodeParams)->TryGetStringField(TEXT("memberName"), EventName);
1108
+ if (!(*NodeParams)->TryGetStringField(TEXT("eventClass"), EventClassName))
1109
+ (*NodeParams)->TryGetStringField(TEXT("memberParent"), EventClassName);
1110
+
1111
+ // Also accept nested: {"EventReference":{"MemberName":"X","MemberParent":"Y"}}
1112
+ if (EventName.IsEmpty())
1113
+ {
1114
+ const TSharedPtr<FJsonObject>* EvtRef = nullptr;
1115
+ if ((*NodeParams)->TryGetObjectField(TEXT("EventReference"), EvtRef))
1116
+ {
1117
+ (*EvtRef)->TryGetStringField(TEXT("MemberName"), EventName);
1118
+ if (EventClassName.IsEmpty())
1119
+ (*EvtRef)->TryGetStringField(TEXT("MemberParent"), EventClassName);
1120
+ }
1121
+ }
1092
1122
 
1093
1123
  if (!EventName.IsEmpty())
1094
1124
  {
1095
- FString EventClassName;
1096
- if (!(*NodeParams)->TryGetStringField(TEXT("eventClass"), EventClassName))
1097
- (*NodeParams)->TryGetStringField(TEXT("memberParent"), EventClassName);
1098
1125
 
1099
1126
  if (!EventClassName.IsEmpty())
1100
1127
  {
@@ -1125,7 +1152,14 @@ TSharedPtr<FJsonValue> FBlueprintHandlers::AddNode(const TSharedPtr<FJsonObject>
1125
1152
  if (NodeParams)
1126
1153
  {
1127
1154
  FString VarName;
1128
- if ((*NodeParams)->TryGetStringField(TEXT("variableName"), VarName))
1155
+ if (!(*NodeParams)->TryGetStringField(TEXT("variableName"), VarName))
1156
+ {
1157
+ // Also accept {"VariableReference":{"MemberName":"X"}} format
1158
+ const TSharedPtr<FJsonObject>* VarRef = nullptr;
1159
+ if ((*NodeParams)->TryGetObjectField(TEXT("VariableReference"), VarRef))
1160
+ (*VarRef)->TryGetStringField(TEXT("MemberName"), VarName);
1161
+ }
1162
+ if (!VarName.IsEmpty())
1129
1163
  {
1130
1164
  GetNode->VariableReference.SetSelfMember(FName(*VarName));
1131
1165
  }
@@ -1136,7 +1170,13 @@ TSharedPtr<FJsonValue> FBlueprintHandlers::AddNode(const TSharedPtr<FJsonObject>
1136
1170
  if (NodeParams)
1137
1171
  {
1138
1172
  FString VarName;
1139
- if ((*NodeParams)->TryGetStringField(TEXT("variableName"), VarName))
1173
+ if (!(*NodeParams)->TryGetStringField(TEXT("variableName"), VarName))
1174
+ {
1175
+ const TSharedPtr<FJsonObject>* VarRef = nullptr;
1176
+ if ((*NodeParams)->TryGetObjectField(TEXT("VariableReference"), VarRef))
1177
+ (*VarRef)->TryGetStringField(TEXT("MemberName"), VarName);
1178
+ }
1179
+ if (!VarName.IsEmpty())
1140
1180
  {
1141
1181
  SetNode->VariableReference.SetSelfMember(FName(*VarName));
1142
1182
  }