public override void OnInspectorGUI()
{
DrawDefaultInspector();
EditorGUILayout.Separator();
if (GUILayout.Button("Toggle Mesh Outline"))
{
Skin2D.showMeshOutline = !Skin2D.showMeshOutline;
}
EditorGUILayout.Separator();
if (skin.GetComponent <SkinnedMeshRenderer>().sharedMesh != null && GUILayout.Button("Save as Prefab"))
{
skin.SaveAsPrefab();
}
EditorGUILayout.Separator();
if (skin.GetComponent <SkinnedMeshRenderer>().sharedMesh != null && GUILayout.Button("Recalculate Bone Weights"))
{
skin.RecalculateBoneWeights();
}
EditorGUILayout.Separator();
handleColor = EditorGUILayout.ColorField("Handle Color", handleColor);
changedBaseSelectDistance = EditorGUILayout.Slider("Handle Size", baseSelectDistance, 0, 1);
if (baseSelectDistance != changedBaseSelectDistance)
{
baseSelectDistance = changedBaseSelectDistance;
EditorUtility.SetDirty(this);
SceneView.RepaintAll();
}
if (skin.GetComponent <SkinnedMeshRenderer>().sharedMesh != null && GUILayout.Button("Create Control Points"))
{
skin.CreateControlPoints(skin.GetComponent <SkinnedMeshRenderer>());
}
if (skin.GetComponent <SkinnedMeshRenderer>().sharedMesh != null && GUILayout.Button("Reset Control Points"))
{
skin.ResetControlPointPositions();
}
if (skin.points != null && skin.controlPoints != null && skin.controlPoints.Length > 0 &&
selectedIndex != -1 && GUILayout.Button("Reset Selected Control Point"))
{
skin.controlPoints[selectedIndex].ResetPosition();
skin.points.SetPoint(skin.controlPoints[selectedIndex]);
}
if (GUILayout.Button("Remove Control Points"))
{
skin.RemoveControlPoints();
}
EditorGUILayout.Separator();
if (skin.GetComponent <SkinnedMeshRenderer>().sharedMesh != null && GUILayout.Button("Generate Mesh Asset"))
{
#if UNITY_EDITOR
// Check if the Meshes directory exists, if not, create it.
if (!Directory.Exists("Assets/Meshes"))
{
AssetDatabase.CreateFolder("Assets", "Meshes");
AssetDatabase.Refresh();
}
Mesh mesh = new Mesh();
mesh.name = skin.GetComponent <SkinnedMeshRenderer>().sharedMesh.name.Replace(".SkinnedMesh", ".Mesh");;
mesh.vertices = skin.GetComponent <SkinnedMeshRenderer>().sharedMesh.vertices;
mesh.triangles = skin.GetComponent <SkinnedMeshRenderer>().sharedMesh.triangles;
mesh.normals = skin.GetComponent <SkinnedMeshRenderer>().sharedMesh.normals;
mesh.uv = skin.GetComponent <SkinnedMeshRenderer>().sharedMesh.uv;
mesh.uv2 = skin.GetComponent <SkinnedMeshRenderer>().sharedMesh.uv2;
mesh.bounds = skin.GetComponent <SkinnedMeshRenderer>().sharedMesh.bounds;
ScriptableObjectUtility.CreateAsset(mesh, "Meshes/" + skin.gameObject.name + ".Mesh");
#endif
}
if (skin.GetComponent <SkinnedMeshRenderer>().sharedMaterial != null && GUILayout.Button("Generate Material Asset"))
{
#if UNITY_EDITOR
Material material = new Material(skin.GetComponent <SkinnedMeshRenderer>().sharedMaterial);
material.CopyPropertiesFromMaterial(skin.GetComponent <SkinnedMeshRenderer>().sharedMaterial);
skin.GetComponent <SkinnedMeshRenderer>().sharedMaterial = material;
if (!Directory.Exists("Assets/Materials"))
{
AssetDatabase.CreateFolder("Assets", "Materials");
AssetDatabase.Refresh();
}
AssetDatabase.CreateAsset(material, "Assets/Materials/" + material.mainTexture.name + ".mat");
Debug.Log("Created material " + material.mainTexture.name + " for " + skin.gameObject.name);
#endif
}
}