Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
b80b9ab
Update .Bat file and Bug fix on ManageScript
Scriptwonder Oct 25, 2025
4e9604f
Further changes
Scriptwonder Oct 25, 2025
e63096f
Merge branch 'CoplayDev:main' into main
Scriptwonder Oct 28, 2025
9827775
Merge branch 'CoplayDev:main' into main
Scriptwonder Nov 10, 2025
c5b2d35
[Custom Tool] Roslyn Runtime Compilation
Scriptwonder Nov 10, 2025
8805933
Fix based on CR
Scriptwonder Nov 10, 2025
711e8bd
Create claude_skill_unity.zip
Scriptwonder Nov 13, 2025
f37f534
Merge branch 'CoplayDev:main' into main
Scriptwonder Nov 13, 2025
8caa027
Merge branch 'CoplayDev:main' into main
Scriptwonder Nov 30, 2025
8ebb688
Merge branch 'CoplayDev:main' into main
Scriptwonder Dec 2, 2025
ae8cfe5
Update for Custom_Tool Fix and Detection
Scriptwonder Dec 2, 2025
f423c2f
Revert "Update for Custom_Tool Fix and Detection"
Scriptwonder Dec 2, 2025
b5265a7
Update README.md
Scriptwonder Dec 2, 2025
81b0f50
Reapply "Update for Custom_Tool Fix and Detection"
Scriptwonder Dec 2, 2025
9d967f5
Merge on previous PR
Scriptwonder Dec 2, 2025
5bcb6f4
Update ManageScript.cs
Scriptwonder Dec 2, 2025
ae2eedd
Update
Scriptwonder Dec 3, 2025
318c824
Update on Batch
Scriptwonder Dec 3, 2025
51fc4b4
Merge branch 'main' into batching
Scriptwonder Dec 3, 2025
55ee768
Merge pull request #1 from Scriptwonder/batching
Scriptwonder Dec 3, 2025
2127444
Revert "Merge pull request #1 from Scriptwonder/batching"
Scriptwonder Dec 3, 2025
3f03337
Merge branch 'CoplayDev:main' into main
Scriptwonder Dec 4, 2025
3b30960
Merge branch 'main' into main
Scriptwonder Dec 8, 2025
7b33aaa
Merge remote-tracking branch 'upstream/main'
Scriptwonder Dec 9, 2025
ff7972f
Updates on Camera Capture Feature
Scriptwonder Dec 9, 2025
d7e34b9
Minor changes
Scriptwonder Dec 9, 2025
1380a23
[FEATURE] Local MCPForUnity Deployment
Scriptwonder Dec 10, 2025
b263162
Merge branch 'CoplayDev:main' into main
Scriptwonder Dec 10, 2025
00317e4
Update PackageDeploymentService.cs
Scriptwonder Dec 10, 2025
e386c19
Merge branch 'main' of https://github.com/Scriptwonder/unity-mcp
Scriptwonder Dec 10, 2025
7fea8ad
Update with meta file
Scriptwonder Dec 10, 2025
941de66
Updated Readme
Scriptwonder Dec 10, 2025
f91e7bd
Merge branch 'CoplayDev:main' into main
Scriptwonder Dec 10, 2025
6579081
Merge remote-tracking branch 'upstream/main'
Scriptwonder Dec 10, 2025
f8bbe4b
Merge branch 'CoplayDev:main' into main
Scriptwonder Dec 13, 2025
8cacd92
[FIX] Input refinment on Advanced Settings
Scriptwonder Dec 13, 2025
9ac8dc7
Update ScreenshotUtility.cs
Scriptwonder Dec 22, 2025
d028efc
Merge branch 'CoplayDev:main' into main
Scriptwonder Dec 22, 2025
e82ed39
Update ScreenshotUtility.cs
Scriptwonder Dec 22, 2025
1b8e033
Merge branch 'main' of https://github.com/Scriptwonder/unity-mcp
Scriptwonder Dec 22, 2025
7554b66
Merge branch 'CoplayDev:main' into main
Scriptwonder Jan 4, 2026
b48e384
Merge branch 'CoplayDev:main' into main
Scriptwonder Jan 4, 2026
bf1f015
Merge branch 'CoplayDev:main' into main
Scriptwonder Jan 5, 2026
7bce824
Merge branch 'CoplayDev:main' into main
Scriptwonder Jan 6, 2026
8b19766
Merge branch 'CoplayDev:main' into main
Scriptwonder Jan 6, 2026
31f1308
Feature: Add ManageVFX
Scriptwonder Jan 7, 2026
a534bb6
Merge branch 'main' into main
Scriptwonder Jan 7, 2026
4e3a108
Update Server/src/services/tools/utils.py
Scriptwonder Jan 7, 2026
365d7d7
Update Server/src/services/tools/manage_vfx.py
Scriptwonder Jan 7, 2026
7dd84ac
Update ManageVFX.cs
Scriptwonder Jan 7, 2026
32b30d3
Merge branch 'main' of https://github.com/Scriptwonder/unity-mcp
Scriptwonder Jan 7, 2026
03a3856
Merge branch 'CoplayDev:main' into main
Scriptwonder Jan 7, 2026
f07b881
Optimize the code structure
Scriptwonder Jan 7, 2026
14c0d55
Merge branch 'main' of https://github.com/Scriptwonder/unity-mcp
Scriptwonder Jan 7, 2026
2b12ac0
Minor Fixes
Scriptwonder Jan 7, 2026
1fb83a1
Fixes
Scriptwonder Jan 7, 2026
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
168 changes: 168 additions & 0 deletions MCPForUnity/Editor/Helpers/RendererHelpers.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
using System;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
using UnityEngine;
using UnityEditor;

namespace MCPForUnity.Editor.Helpers
{
/// <summary>
/// Utility class for common Renderer property operations.
/// Used by ManageVFX for ParticleSystem, LineRenderer, and TrailRenderer components.
/// </summary>
public static class RendererHelpers
{

/// <summary>
/// Applies common Renderer properties (shadows, lighting, probes, sorting, rendering layer).
/// Used by ParticleSetRenderer, LineSetProperties, TrailSetProperties.
/// </summary>
public static void ApplyCommonRendererProperties(Renderer renderer, JObject @params, List<string> changes)
{
// Shadows
if (@params["shadowCastingMode"] != null && Enum.TryParse<UnityEngine.Rendering.ShadowCastingMode>(@params["shadowCastingMode"].ToString(), true, out var shadowMode))
{ renderer.shadowCastingMode = shadowMode; changes.Add("shadowCastingMode"); }
if (@params["receiveShadows"] != null) { renderer.receiveShadows = @params["receiveShadows"].ToObject<bool>(); changes.Add("receiveShadows"); }
// Note: shadowBias is only available on specific renderer types (e.g., ParticleSystemRenderer), not base Renderer

// Lighting and probes
if (@params["lightProbeUsage"] != null && Enum.TryParse<UnityEngine.Rendering.LightProbeUsage>(@params["lightProbeUsage"].ToString(), true, out var probeUsage))
{ renderer.lightProbeUsage = probeUsage; changes.Add("lightProbeUsage"); }
if (@params["reflectionProbeUsage"] != null && Enum.TryParse<UnityEngine.Rendering.ReflectionProbeUsage>(@params["reflectionProbeUsage"].ToString(), true, out var reflectionUsage))
{ renderer.reflectionProbeUsage = reflectionUsage; changes.Add("reflectionProbeUsage"); }

// Motion vectors
if (@params["motionVectorGenerationMode"] != null && Enum.TryParse<MotionVectorGenerationMode>(@params["motionVectorGenerationMode"].ToString(), true, out var motionMode))
{ renderer.motionVectorGenerationMode = motionMode; changes.Add("motionVectorGenerationMode"); }

// Sorting
if (@params["sortingOrder"] != null) { renderer.sortingOrder = @params["sortingOrder"].ToObject<int>(); changes.Add("sortingOrder"); }
if (@params["sortingLayerName"] != null) { renderer.sortingLayerName = @params["sortingLayerName"].ToString(); changes.Add("sortingLayerName"); }
if (@params["sortingLayerID"] != null) { renderer.sortingLayerID = @params["sortingLayerID"].ToObject<int>(); changes.Add("sortingLayerID"); }

// Rendering layer mask (for SRP)
if (@params["renderingLayerMask"] != null) { renderer.renderingLayerMask = @params["renderingLayerMask"].ToObject<uint>(); changes.Add("renderingLayerMask"); }
}

/// <summary>
/// Gets common Renderer properties for GetInfo methods.
/// </summary>
public static object GetCommonRendererInfo(Renderer renderer)
{
return new
{
shadowCastingMode = renderer.shadowCastingMode.ToString(),
receiveShadows = renderer.receiveShadows,
lightProbeUsage = renderer.lightProbeUsage.ToString(),
reflectionProbeUsage = renderer.reflectionProbeUsage.ToString(),
sortingOrder = renderer.sortingOrder,
sortingLayerName = renderer.sortingLayerName,
renderingLayerMask = renderer.renderingLayerMask
};
}


/// <summary>
/// Sets width properties for LineRenderer or TrailRenderer.
/// </summary>
/// <param name="params">JSON parameters containing width, startWidth, endWidth, widthCurve, widthMultiplier</param>
/// <param name="changes">List to track changed properties</param>
/// <param name="setStartWidth">Action to set start width</param>
/// <param name="setEndWidth">Action to set end width</param>
/// <param name="setWidthCurve">Action to set width curve</param>
/// <param name="setWidthMultiplier">Action to set width multiplier</param>
/// <param name="parseAnimationCurve">Function to parse animation curve from JToken</param>
public static void ApplyWidthProperties(JObject @params, List<string> changes,
Action<float> setStartWidth, Action<float> setEndWidth,
Action<AnimationCurve> setWidthCurve, Action<float> setWidthMultiplier,
Func<JToken, float, AnimationCurve> parseAnimationCurve)
{
if (@params["width"] != null)
{
float w = @params["width"].ToObject<float>();
setStartWidth(w);
setEndWidth(w);
changes.Add("width");
}
if (@params["startWidth"] != null) { setStartWidth(@params["startWidth"].ToObject<float>()); changes.Add("startWidth"); }
if (@params["endWidth"] != null) { setEndWidth(@params["endWidth"].ToObject<float>()); changes.Add("endWidth"); }
if (@params["widthCurve"] != null) { setWidthCurve(parseAnimationCurve(@params["widthCurve"], 1f)); changes.Add("widthCurve"); }
if (@params["widthMultiplier"] != null) { setWidthMultiplier(@params["widthMultiplier"].ToObject<float>()); changes.Add("widthMultiplier"); }
}

/// <summary>
/// Sets color properties for LineRenderer or TrailRenderer.
/// </summary>
/// <param name="params">JSON parameters containing color, startColor, endColor, gradient</param>
/// <param name="changes">List to track changed properties</param>
/// <param name="setStartColor">Action to set start color</param>
/// <param name="setEndColor">Action to set end color</param>
/// <param name="setGradient">Action to set gradient</param>
/// <param name="parseColor">Function to parse color from JToken</param>
/// <param name="parseGradient">Function to parse gradient from JToken</param>
/// <param name="fadeEndAlpha">If true, sets end color alpha to 0 when using single color</param>
public static void ApplyColorProperties(JObject @params, List<string> changes,
Action<Color> setStartColor, Action<Color> setEndColor,
Action<Gradient> setGradient,
Func<JToken, Color> parseColor, Func<JToken, Gradient> parseGradient,
bool fadeEndAlpha = false)
{
if (@params["color"] != null)
{
Color c = parseColor(@params["color"]);
setStartColor(c);
setEndColor(fadeEndAlpha ? new Color(c.r, c.g, c.b, 0f) : c);
changes.Add("color");
}
if (@params["startColor"] != null) { setStartColor(parseColor(@params["startColor"])); changes.Add("startColor"); }
if (@params["endColor"] != null) { setEndColor(parseColor(@params["endColor"])); changes.Add("endColor"); }
if (@params["gradient"] != null) { setGradient(parseGradient(@params["gradient"])); changes.Add("gradient"); }
}


/// <summary>
/// Sets material for a Renderer.
/// </summary>
/// <param name="renderer">The renderer to set material on</param>
/// <param name="params">JSON parameters containing materialPath</param>
/// <param name="undoName">Name for the undo operation</param>
/// <param name="findMaterial">Function to find material by path</param>
public static object SetRendererMaterial(Renderer renderer, JObject @params, string undoName, Func<string, Material> findMaterial)
{
if (renderer == null) return new { success = false, message = "Renderer not found" };

string path = @params["materialPath"]?.ToString();
if (string.IsNullOrEmpty(path)) return new { success = false, message = "materialPath required" };

Material mat = findMaterial(path);
if (mat == null) return new { success = false, message = $"Material not found: {path}" };

Undo.RecordObject(renderer, undoName);
renderer.sharedMaterial = mat;
EditorUtility.SetDirty(renderer);

return new { success = true, message = $"Set material to {mat.name}" };
}


/// <summary>
/// Applies Line/Trail specific properties (loop, alignment, textureMode, etc.).
/// </summary>
public static void ApplyLineTrailProperties(JObject @params, List<string> changes,
Action<bool> setLoop, Action<bool> setUseWorldSpace,
Action<int> setNumCornerVertices, Action<int> setNumCapVertices,
Action<LineAlignment> setAlignment, Action<LineTextureMode> setTextureMode,
Action<bool> setGenerateLightingData)
{
if (@params["loop"] != null && setLoop != null) { setLoop(@params["loop"].ToObject<bool>()); changes.Add("loop"); }
if (@params["useWorldSpace"] != null && setUseWorldSpace != null) { setUseWorldSpace(@params["useWorldSpace"].ToObject<bool>()); changes.Add("useWorldSpace"); }
if (@params["numCornerVertices"] != null && setNumCornerVertices != null) { setNumCornerVertices(@params["numCornerVertices"].ToObject<int>()); changes.Add("numCornerVertices"); }
if (@params["numCapVertices"] != null && setNumCapVertices != null) { setNumCapVertices(@params["numCapVertices"].ToObject<int>()); changes.Add("numCapVertices"); }
if (@params["alignment"] != null && setAlignment != null && Enum.TryParse<LineAlignment>(@params["alignment"].ToString(), true, out var align)) { setAlignment(align); changes.Add("alignment"); }
if (@params["textureMode"] != null && setTextureMode != null && Enum.TryParse<LineTextureMode>(@params["textureMode"].ToString(), true, out var texMode)) { setTextureMode(texMode); changes.Add("textureMode"); }
if (@params["generateLightingData"] != null && setGenerateLightingData != null) { setGenerateLightingData(@params["generateLightingData"].ToObject<bool>()); changes.Add("generateLightingData"); }
}

}
}

12 changes: 12 additions & 0 deletions MCPForUnity/Editor/Helpers/RendererHelpers.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading