To support both 2D and 3D with minimal code duplication, the heigher level point/line/triangle set components are composed from the UBasic[*]SetComponentBase class for the component specific functionality, and an instantiation of theTBasicElementSettemplate class for either FVector2f or FVector3f that encapsulates all data storage specific functionality. The final derived classes UBasic[2/3]D[Point/Line/Triangle]SetComponent contain identical boilerplate code to facilitate calls that need to go both to the component base class and the point base class, e.g. Clear() will both mark the component as dirty and delete all points. Generic storage for sets of geometry.