To support both 2D and 3D with minimal code duplication, the point set components are composed from theUBasicPointSetComponentBaseclass for the component specific functionality, and an instantiation of theTBasicElementSettemplate class for either FVector2f or FVector3f that encapsulates all point specific functionality. The final derived classesUBasic2DPointSetComponentandUBasic3DPointSetComponentcontain 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. Base class for component specific functionality independent of the type of point stored in the component.