To support both 2D and 3D with minimal code duplication, the line set components are composed from theUBasicTriangleSetComponentBaseclass for the component specific functionality, and an instantiation of theTBasicElementSettemplate class for either FVector2f or FVector3f that encapsulates all line specific functionality. The final derived classesUBasic2DTriangleSetComponentandUBasic3DTriangleSetComponentcontain identical boilerplate code to facilitate calls that need to go both to the component base class and the line base class, e.g. Clear() will both mark the component as dirty and delete all lines.Base class for component specific functionality independent of the type of line stored in the component.