You could create a component for that so it will be usable in editor and in a packaged game (I use one for exactly that, waypoints and paths). Just inherit from ‘FPrimitiveSceneProxy’ and override the ‘DrawDynamicElements’ method. The method provides you with a 'FPrimitiveDrawInterface* PDI, there you can draw you shapes too like points:
PDI->DrawPoint(<location>, <color>, <size>, 0); // 0 is the depth priority group
Or if you want to draw a nice error you can use the method I’m using:
void DrawArrow(FPrimitiveDrawInterface* PDI, const FVector& Start, const FVector& End, const FLinearColor& Color, uint8 DepthPriorityGroup, float ArrowSizeSqrt = 0.0f, float Thickness = 0.0f, float DepthBias = 0.0f, bool bScreenSpace = false)
{
FVector Dir = End - Start;
Dir.Normalize();
// Draw green line and the arrow
PDI->DrawLine(Start, End, Color, 0, Thickness);
FVector Up(0, 0, 1);
FVector Right = Dir ^ Up;
if (!Right.IsNormalized())
{
Dir.FindBestAxisVectors(Up, Right);
}
FVector Origin = FVector::ZeroVector;
FMatrix TM;
// get matrix with dir/right/up
TM.SetAxes(&Dir, &Right, &Up, &Origin);
PDI->DrawLine(End, End + TM.TransformPosition(FVector(-ArrowSizeSqrt, ArrowSizeSqrt, 0)), Color, DepthPriorityGroup, Thickness);
PDI->DrawLine(End, End + TM.TransformPosition(FVector(-ArrowSizeSqrt, -ArrowSizeSqrt, 0)), Color, DepthPriorityGroup, Thickness);
}
Not that you have your class that makes all the drawing you have to create a new ‘UPrimitiveComponent’ child class and override the ‘CreateSceneProxy’ method where you return an instance of your FPrimitiveDrawInterface you created earlier. Your component should then decide when to be drawn using ‘ShouldRecreateProxyOnUpdateTransform’ or managing bounds in ‘CalcBounds’, bounds are vital because your component wont be drawn if the bounds are our of the camera.
Hope this can help you