Add DebugDraw::DrawLine with separate start/end colors

This commit is contained in:
Wojtek Figat
2023-07-13 13:08:53 +02:00
parent 15b2d4e041
commit c6a82b8c36
2 changed files with 31 additions and 0 deletions

View File

@@ -938,6 +938,26 @@ void DebugDraw::DrawLine(const Vector3& start, const Vector3& end, const Color&
}
}
void DebugDraw::DrawLine(const Vector3& start, const Vector3& end, const Color& startColor, const Color& endColor, float duration, bool depthTest)
{
const Float3 startF = start - Context->Origin, endF = end - Context->Origin;
auto& debugDrawData = depthTest ? Context->DebugDrawDepthTest : Context->DebugDrawDefault;
if (duration > 0)
{
// TODO: separate start/end colors for persistent lines
DebugLine l = { startF, endF, Color32(startColor), duration };
debugDrawData.DefaultLines.Add(l);
}
else
{
Vertex l = { startF, Color32(startColor) };
debugDrawData.OneFrameLines.Add(l);
l.Position = endF;
l.Color = Color32(endColor);
debugDrawData.OneFrameLines.Add(l);
}
}
void DebugDraw::DrawLines(const Span<Float3>& lines, const Matrix& transform, const Color& color, float duration, bool depthTest)
{
if (lines.Length() == 0)

View File

@@ -79,6 +79,17 @@ API_CLASS(Static) class FLAXENGINE_API DebugDraw
/// <param name="depthTest">If set to <c>true</c> depth test will be performed, otherwise depth will be ignored.</param>
API_FUNCTION() static void DrawLine(const Vector3& start, const Vector3& end, const Color& color, float duration = 0.0f, bool depthTest = true);
/// <summary>
/// Draws the line.
/// </summary>
/// <param name="start">The start point.</param>
/// <param name="end">The end point.</param>
/// <param name="startColor">The color of the start point.</param>
/// <param name="endColor">The color of the end point.</param>
/// <param name="duration">The duration (in seconds). Use 0 to draw it only once.</param>
/// <param name="depthTest">If set to <c>true</c> depth test will be performed, otherwise depth will be ignored.</param>
API_FUNCTION() static void DrawLine(const Vector3& start, const Vector3& end, const Color& startColor, const Color& endColor, float duration = 0.0f, bool depthTest = true);
/// <summary>
/// Draws the lines. Line positions are located one after another (e.g. l0.start, l0.end, l1.start, l1.end,...).
/// </summary>