Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
correctly handling componentData
  • Loading branch information
wojciech-golowkow committed Jul 30, 2025
commit 15f7dea05aa15770fd54efa7b22114107057f067
39 changes: 21 additions & 18 deletions Editor/Tools/UpdateComponentTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -97,30 +97,33 @@ public override JObject Execute(JObject parameters)
}

component = Undo.AddComponent(gameObject, componentType);

// Ensure changes are saved
EditorUtility.SetDirty(gameObject);
if (PrefabUtility.IsPartOfAnyPrefab(gameObject))
{
PrefabUtility.RecordPrefabInstancePropertyModifications(component);
}
wasAdded = true;
McpLogger.LogInfo($"[MCP Unity] Added component '{componentName}' to GameObject '{gameObject.name}'");
}

string errorMessage = "";
bool success = false;
// Update component fields
if (componentData != null && componentData.Count > 0)
{
success = UpdateComponentData(component, componentData, out errorMessage);
}

// If update failed, return error
if (!success)
{
if (wasAdded)
bool success = UpdateComponentData(component, componentData, out string errorMessage);
// If update failed, return error
if (!success)
{
return McpUnitySocketHandler.CreateErrorResponse(
$"Successfully added component '{componentName}' to GameObject '{gameObject.name}' BUT\n" +
errorMessage, "component_error");
}
else
{
return McpUnitySocketHandler.CreateErrorResponse(errorMessage, "update_error");
if (wasAdded)
{
return McpUnitySocketHandler.CreateErrorResponse(
$"Successfully added component '{componentName}' to GameObject '{gameObject.name}' BUT\n" +
errorMessage, "component_error");
}
else
{
return McpUnitySocketHandler.CreateErrorResponse(errorMessage, "update_error");
}
}
}

Expand Down Expand Up @@ -275,7 +278,7 @@ private bool UpdateComponentData(Component component, JObject componentData, out
JToken fieldValue = property.Value;

// Skip null values
if (fieldValue.Type == JTokenType.Null)
if (string.IsNullOrEmpty(fieldName) || fieldValue.Type == JTokenType.Null)
{
continue;
}
Expand Down