chore: initial commit
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using static PathBerserker2d.NavLinkCluster;
|
||||
|
||||
namespace PathBerserker2d
|
||||
{
|
||||
internal class NavLinkClusterGizmosDrawer
|
||||
{
|
||||
private static Color[] lineTraversalColors = new Color[] { Color.red, Color.green, Color.blue };
|
||||
|
||||
[DrawGizmo(GizmoType.Selected | GizmoType.NonSelected | GizmoType.Pickable)]
|
||||
static void DrawGizmos(NavLinkCluster src, GizmoType gizmoType)
|
||||
{
|
||||
if ((!PathBerserker2dSettings.DrawUnselectedLinks || (gizmoType & GizmoType.Selected) != 0))
|
||||
{
|
||||
Gizmos.DrawIcon(src.transform.position, "PathBerserker2D/link_icon.png");
|
||||
}
|
||||
if ((gizmoType & GizmoType.Selected) != 0 || (PathBerserker2dSettings.DrawUnselectedLinks &&
|
||||
!Application.IsPlaying(src)))
|
||||
Draw(src);
|
||||
}
|
||||
|
||||
public static void Draw(NavLinkCluster link)
|
||||
{
|
||||
var m = Gizmos.matrix;
|
||||
Gizmos.matrix = Matrix4x4.Translate(new Vector3(0, 0, link.transform.position.z));
|
||||
|
||||
Gizmos.color = Color.green;
|
||||
GizmosDrawingExtensions.DrawCircle(link.transform.position);
|
||||
Gizmos.color = Color.white;
|
||||
|
||||
foreach (var points in link.LinkPoints)
|
||||
{
|
||||
Vector2 worldPoint = link.transform.TransformPoint(points.point);
|
||||
Gizmos.color = PathBerserker2dSettings.NavLinkTypeColors[link.LinkType];
|
||||
Gizmos.DrawLine((Vector2)link.transform.position, worldPoint);
|
||||
Vector2 dir = ((Vector2)link.transform.position - worldPoint).normalized;
|
||||
|
||||
Gizmos.color = lineTraversalColors[(int)points.traversalType];
|
||||
if (points.traversalType == PointTraversalType.Entry || points.traversalType == PointTraversalType.Both)
|
||||
{
|
||||
GizmosDrawingExtensions.DrawArrowHead(worldPoint, dir, 0.2f);
|
||||
if (points.traversalType == PointTraversalType.Exit || points.traversalType == PointTraversalType.Both)
|
||||
GizmosDrawingExtensions.DrawArrowHead(worldPoint + dir * 0.2f, -dir, 0.2f);
|
||||
}
|
||||
else if (points.traversalType == PointTraversalType.Exit || points.traversalType == PointTraversalType.Both)
|
||||
GizmosDrawingExtensions.DrawArrowHead(worldPoint, -dir, 0.2f);
|
||||
}
|
||||
|
||||
Gizmos.matrix = m;
|
||||
if (link.LinkTypeName == "climb")
|
||||
{
|
||||
Vector3 pos = link.gameObject.transform.position;
|
||||
Vector3 dir = link.gameObject.transform.up;
|
||||
Gizmos.color = Color.grey;
|
||||
Gizmos.DrawLine(pos - dir * 0.5f * 2, pos + dir * 0.5f * 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user