78 lines
2.4 KiB
C#
78 lines
2.4 KiB
C#
using UnityEngine;
|
|
using System.Linq;
|
|
using UnityEngine.ProBuilder;
|
|
using UnityEngine.ProBuilder.MeshOperations;
|
|
|
|
namespace UnityEditor.ProBuilder.Actions
|
|
{
|
|
sealed class BridgeEdges : MenuAction
|
|
{
|
|
public override ToolbarGroup group
|
|
{
|
|
get { return ToolbarGroup.Geometry; }
|
|
}
|
|
|
|
public override Texture2D icon
|
|
{
|
|
get { return IconUtility.GetIcon("Toolbar/Edge_Bridge", IconSkin.Pro); }
|
|
}
|
|
|
|
public override TooltipContent tooltip
|
|
{
|
|
get { return s_Tooltip; }
|
|
}
|
|
|
|
static readonly TooltipContent s_Tooltip = new TooltipContent
|
|
(
|
|
"Bridge Edges",
|
|
@"Add a new face connecting two edges.",
|
|
keyCommandAlt, 'B'
|
|
);
|
|
|
|
public override SelectMode validSelectModes
|
|
{
|
|
get { return SelectMode.Edge; }
|
|
}
|
|
|
|
public override bool enabled
|
|
{
|
|
get { return base.enabled && MeshSelection.topInternal.Any(x => x.selectedEdgeCount == 2); }
|
|
}
|
|
|
|
protected override ActionResult PerformActionImplementation()
|
|
{
|
|
if (MeshSelection.selectedObjectCount < 1)
|
|
return ActionResult.NoSelection;
|
|
|
|
UndoUtility.RecordSelection("Bridge Edges");
|
|
|
|
bool success = false;
|
|
|
|
foreach (var mesh in MeshSelection.topInternal)
|
|
{
|
|
if (mesh.selectedEdgeCount == 2)
|
|
{
|
|
if (mesh.Bridge(mesh.selectedEdges[0], mesh.selectedEdges[1], ProBuilderEditor.s_AllowNonManifoldActions) != null)
|
|
{
|
|
success = true;
|
|
mesh.ToMesh();
|
|
mesh.Refresh();
|
|
mesh.Optimize();
|
|
}
|
|
}
|
|
}
|
|
|
|
if (success)
|
|
{
|
|
ProBuilderEditor.Refresh();
|
|
return new ActionResult(ActionResult.Status.Success, "Bridge Edges");
|
|
}
|
|
else
|
|
{
|
|
Debug.LogWarning("Failed Bridge Edges. Bridge Edges requires that only 2 edges be selected, and they must both only have one connecting face (non-manifold).");
|
|
return new ActionResult(ActionResult.Status.Failure, "Bridge Edges requires that only 2 edges be selected, and they must both only have one connecting face (non-manifold).");
|
|
}
|
|
}
|
|
}
|
|
}
|