I’m making an editor plugin, implementing a class that inherits from USingleSelectionTool (UInteractiveTool)
Inside it’s Render method I add some vertices and triangles to a FDynamicMeshBuilder and call to Draw:
void UPainterTool::Render(IToolsContextRenderAPI* RenderAPI)
{
FPrimitiveDrawInterface* PDI = RenderAPI->GetPrimitiveDrawInterface();
FDynamicMeshBuilder meshBuilder = FDynamicMeshBuilder(PDI->View->GetFeatureLevel());
meshBuilder.ReserveVertices(8);
meshBuilder.ReserveTriangles(12);
FDynamicMeshVertex v0;
v0.Position = FVector(0.0f, 0.0f, 0.0f);
FDynamicMeshVertex v1;
v1.Position = FVector(10.0f, 0.0f, 0.0f);
/*...set several vertices positions, to make a cube*/
auto index0 = meshBuilder.AddVertex(v0);
/*Add more vertices and keep ids...*/
meshBuilder.AddTriangle(index0, index1, index2);
/*add more triangles...*/
FMatrix position = FMatrix::Identity;
meshBuilder.Draw(PDI, position, GEngine->WireframeMaterial->GetRenderProxy(), 1);
UMeshSurfacePointTool::Render(RenderAPI);
}
I guess my code should render at least one cube in the world origin, but it shows nothing.
And I have also a question: could a FDynamicMeshBuilder be reused for several Draw calls? I’d like to pass several matrices changing position and scale?