public static void DrawFaceWithOutline(int faceIndex, RigidTransform t, NativeHull hull, Color fillColor, Color outlineColor) { var verts = hull.GetVertices(faceIndex).Select(cp => (Vector3)cp).ToArray(); var tVerts = new List <Vector3>(); for (int i = 0; i < verts.Length; i++) { var v = math.transform(t, verts[i]); tVerts.Add(v); var nextIndex = i + 1 < verts.Length ? i + 1 : 0; var next = math.transform(t, verts[nextIndex]); Debug.DrawLine(v, next, outlineColor); } DebugDrawer.DrawAAConvexPolygon(tVerts.ToArray(), fillColor); }
public static void DebugDrawManifold(NativeManifold manifold, Color color = default) { if (!manifold.IsCreated || manifold.Points.Length == 0) { return; } if (color == default) { color = UnityColors.Blue.ToOpacity(0.3f); } for (int i = 0; i < manifold.Points.Length; i++) { var start = manifold.Points[i]; if (manifold.Points.Length >= 2) { var end = i > 0 ? manifold.Points[i - 1] : manifold.Points[manifold.Points.Length - 1]; Debug.DrawLine(start.position, end.position, color); } DebugDrawer.DrawSphere(start.position, 0.02f, color.ToOpacity(0.8f)); } DebugDrawer.DrawAAConvexPolygon(manifold.Points.ToArray().Select(cp => (Vector3)cp.position).ToArray(), color); }
private static unsafe void DrawTests(int threadIndex, float3 start, float3 end, NativeString512 text, DrawingMethods methods, NativeArray <float3> polygon) { float3 offset = Vector3.up * 0.05f + Vector3.left * 0.05f; float3 center = (start + (end - start) / 2); if (methods.Sphere) { DebugDrawer.DrawSphere(start, 0.75f, UnityColors.GhostDodgerBlue); } if (methods.RectangleWithOutline) { var size = 0.25f; var points = stackalloc[] { center + offset + new float3(0, 0, 0), center + offset + new float3(0, size, 0), center + offset + new float3(0, size, size), center + offset + new float3(0, 0, size) }; DebugDrawer.DrawSolidRectangleWithOutline(points, UnityColors.LightYellow, UnityColors.Yellow); } if (methods.Polygon) { DebugDrawer.DrawAAConvexPolygon(polygon, center + (float3)Vector3.down * 0.25f, UnityColors.GhostDodgerBlue); } if (methods.Line) { DebugDrawer.DrawLine(start + offset, end + offset); } if (methods.Ray) { DebugDrawer.DrawRay(center, Vector3.up, UnityColors.MediumBlue); } if (methods.Cone) { DebugDrawer.DrawCone(center + (float3)Vector3.up * 0.5f, Vector3.up, UnityColors.DarkKhaki, 22.5f); } if (methods.Circle) { DebugDrawer.DrawCircle(center, Vector3.up, 0.25f, UnityColors.AliceBlue); } if (methods.DottedLine) { DebugDrawer.DrawDottedLine(start, end, Color.yellow); } if (methods.WireCube) { DebugDrawer.DrawWireCube(end, Vector3.one / 2, Color.yellow); } if (methods.DottedWireCube) { DebugDrawer.DrawDottedWireCube(end, Vector3.one, Color.black); } if (methods.Label) { DebugDrawer.DrawLabel(center + (float3)Vector3.down * 0.25f, text); } if (methods.Arrow) { DebugDrawer.DrawArrow(start + (float3)Vector3.up * 0.5f, Vector3.up, Color.blue); } if (methods.Log) { DebugDrawer.Log(threadIndex, text); } if (methods.LogWarning) { DebugDrawer.LogWarning(text); } if (methods.LogError) { DebugDrawer.LogError(text); } if (methods.Point) { DebugDrawer.DrawPoint(center + (float3)Vector3.forward, UnityColors.Lavender, 0.25f); } } }