void DrawGizmo(Boolean selected) { #if UNITY_EDITOR if (Vertices.Length >= 3) { FPMathUtils.LoadLookupTables(); var color = FPVector2.IsPolygonConvex(Vertices) ? ColorRGBA.ColliderGreen : ColorRGBA.Red; var normals = FPVector2.CalculatePolygonNormals(Vertices); UnityEditor.Handles.matrix = transform.localToWorldMatrix; UnityEditor.Handles.color = color.ToColor().Alpha(0.125f); UnityEditor.Handles.DrawAAConvexPolygon(Vertices.Select(x => x.ToUnityVector3()).ToArray()); var cw = FPVector2.IsClockWise(Vertices); Gizmos.color = color.ToColor().Alpha(selected ? 1f : 0.55f); Gizmos.matrix = transform.localToWorldMatrix; for (Int32 i = 0; i < Vertices.Length; ++i) { var v1 = Vertices[i].ToUnityVector3(); var v2 = Vertices[(i + 1) % Vertices.Length].ToUnityVector3(); var n = (cw ? -normals[i] : normals[i]).ToUnityVector3(); var c = Vector3.Lerp(v1, v2, 0.5f); Gizmos.DrawLine(v1, v2); Gizmos.DrawLine(c, c + (n * 0.25f)); } Gizmos.DrawWireSphere(FPVector2.CalculatePolygonCentroid(Vertices).ToUnityVector3(), 0.025f); } //Gizmos.DrawWireSphere(Vector3.zero, FPVector2.CalculatePolygonRadius(Vertices).AsFloat); Gizmos.color = UnityEditor.Handles.color = Color.white; Gizmos.matrix = UnityEditor.Handles.matrix = Matrix4x4.identity; #endif }