48 lines
1.7 KiB
C#
48 lines
1.7 KiB
C#
using UnityEngine.ProBuilder;
|
|
using UnityEngine;
|
|
using UnityEngine.ProBuilder.MeshOperations;
|
|
|
|
namespace UnityEditor.ProBuilder.Actions
|
|
{
|
|
sealed class TriangulateObject : MenuAction
|
|
{
|
|
public override ToolbarGroup group { get { return ToolbarGroup.Object; } }
|
|
public override Texture2D icon { get { return IconUtility.GetIcon("Toolbar/Object_Triangulate", IconSkin.Pro); } }
|
|
public override TooltipContent tooltip { get { return s_Tooltip; } }
|
|
public override string menuTitle { get { return "Triangulate"; } }
|
|
|
|
static readonly TooltipContent s_Tooltip = new TooltipContent
|
|
(
|
|
"Triangulate Objects",
|
|
@"Removes all quads and n-gons on the mesh and inserts triangles instead. Use this and a hard smoothing group to achieve a low-poly facetized look."
|
|
);
|
|
|
|
public override bool enabled
|
|
{
|
|
get { return base.enabled && MeshSelection.selectedObjectCount > 0; }
|
|
}
|
|
|
|
protected override ActionResult PerformActionImplementation()
|
|
{
|
|
if (MeshSelection.selectedObjectCount < 1)
|
|
return ActionResult.NoSelection;
|
|
|
|
UndoUtility.RecordSelection("Triangulate Objects");
|
|
|
|
foreach (var mesh in MeshSelection.topInternal)
|
|
{
|
|
mesh.ToMesh();
|
|
mesh.ToTriangles(mesh.facesInternal);
|
|
mesh.Refresh();
|
|
mesh.Optimize();
|
|
mesh.ClearSelection();
|
|
}
|
|
|
|
ProBuilderEditor.Refresh();
|
|
|
|
var c = MeshSelection.selectedObjectCount;
|
|
return new ActionResult(ActionResult.Status.Success, "Triangulate " + c + (c > 1 ? " Objects" : " Object"));
|
|
}
|
|
}
|
|
}
|