feat: add support for creating PhysicsMaterial assets
parent
cbe9b3a2f0
commit
d1249cb281
|
|
@ -177,6 +177,14 @@ namespace UnityMcpBridge.Editor.Tools
|
||||||
AssetDatabase.CreateAsset(mat, fullPath);
|
AssetDatabase.CreateAsset(mat, fullPath);
|
||||||
newAsset = mat;
|
newAsset = mat;
|
||||||
}
|
}
|
||||||
|
else if (lowerAssetType == "physicsmaterial")
|
||||||
|
{
|
||||||
|
PhysicsMaterial pmat = new PhysicsMaterial();
|
||||||
|
if (properties != null)
|
||||||
|
ApplyPhysicsMaterialProperties(pmat, properties);
|
||||||
|
AssetDatabase.CreateAsset(pmat, fullPath);
|
||||||
|
newAsset = pmat;
|
||||||
|
}
|
||||||
else if (lowerAssetType == "scriptableobject")
|
else if (lowerAssetType == "scriptableobject")
|
||||||
{
|
{
|
||||||
string scriptClassName = properties?["scriptClass"]?.ToString();
|
string scriptClassName = properties?["scriptClass"]?.ToString();
|
||||||
|
|
@ -948,6 +956,74 @@ namespace UnityMcpBridge.Editor.Tools
|
||||||
return modified;
|
return modified;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static bool ApplyPhysicsMaterialProperties(PhysicsMaterial pmat, JObject properties)
|
||||||
|
{
|
||||||
|
if (pmat == null || properties == null)
|
||||||
|
return false;
|
||||||
|
bool modified = false;
|
||||||
|
|
||||||
|
// Example: Set dynamic friction
|
||||||
|
if (properties["DynamicFriction"]?.Type == JTokenType.Float)
|
||||||
|
{
|
||||||
|
float dynamicFriction = properties["DynamicFriction"].ToObject<float>();
|
||||||
|
pmat.dynamicFriction = dynamicFriction;
|
||||||
|
modified = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Example: Set static friction
|
||||||
|
if (properties["StaticFriction"]?.Type == JTokenType.Float)
|
||||||
|
{
|
||||||
|
float staticFriction = properties["StaticFriction"].ToObject<float>();
|
||||||
|
pmat.staticFriction = staticFriction;
|
||||||
|
modified = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Example: Set bounciness
|
||||||
|
if (properties["Bounciness"]?.Type == JTokenType.Float)
|
||||||
|
{
|
||||||
|
float bounciness = properties["Bounciness"].ToObject<float>();
|
||||||
|
pmat.bounciness = bounciness;
|
||||||
|
modified = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> averageList = new List<String>{"ave", "Ave", "average", "Average"};
|
||||||
|
List<String> multiplyList = new List<String>{"mul", "Mul", "mult", "Mult", "multiply", "Multiply"};
|
||||||
|
List<String> minimumList = new List<String>{"min", "Min", "minimum", "Minimum"};
|
||||||
|
List<String> maximumList = new List<String>{"max", "Max", "maximum", "Maximum"};
|
||||||
|
|
||||||
|
// Example: Set friction combine
|
||||||
|
if (properties["FrictionCombine"]?.Type == JTokenType.String)
|
||||||
|
{
|
||||||
|
string frictionCombine = properties["FrictionCombine"].ToString();
|
||||||
|
if (averageList.Contains(frictionCombine))
|
||||||
|
pmat.frictionCombine = PhysicsMaterialCombine.Average;
|
||||||
|
else if (multiplyList.Contains(frictionCombine))
|
||||||
|
pmat.frictionCombine = PhysicsMaterialCombine.Multiply;
|
||||||
|
else if (minimumList.Contains(frictionCombine))
|
||||||
|
pmat.frictionCombine = PhysicsMaterialCombine.Minimum;
|
||||||
|
else if (maximumList.Contains(frictionCombine))
|
||||||
|
pmat.frictionCombine = PhysicsMaterialCombine.Maximum;
|
||||||
|
modified = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Example: Set bounce combine
|
||||||
|
if (properties["BounceCombine"]?.Type == JTokenType.String)
|
||||||
|
{
|
||||||
|
string bounceCombine = properties["BounceCombine"].ToString();
|
||||||
|
if (averageList.Contains(bounceCombine))
|
||||||
|
pmat.bounceCombine = PhysicsMaterialCombine.Average;
|
||||||
|
else if (multiplyList.Contains(bounceCombine))
|
||||||
|
pmat.bounceCombine = PhysicsMaterialCombine.Multiply;
|
||||||
|
else if (minimumList.Contains(bounceCombine))
|
||||||
|
pmat.bounceCombine = PhysicsMaterialCombine.Minimum;
|
||||||
|
else if (maximumList.Contains(bounceCombine))
|
||||||
|
pmat.bounceCombine = PhysicsMaterialCombine.Maximum;
|
||||||
|
modified = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return modified;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Generic helper to set properties on any UnityEngine.Object using reflection.
|
/// Generic helper to set properties on any UnityEngine.Object using reflection.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue