// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "VectorTypes.h" namespace UE { namespace Geometry { using namespace UE::Math; /** * TPointSetAdapter provides a very generic interface to an indexable list of points. * The list may be sparse, ie some indices may be invalid. */ template struct TPointSetAdapter { /** Maximum point index */ TFunction MaxPointID; /** Number of points. If PointCount == MaxPointID, then there are no gaps in the index list */ TFunction PointCount; /** Returns true if this index valid */ TFunction IsPoint; /** Get point at this index */ TFunction(int32)> GetPoint; /** Returns true if this point set has per-point normals */ TFunction HasNormals; /** Get the normal at a point index */ TFunction GetPointNormal; }; typedef TPointSetAdapter FPointSetAdapterd; typedef TPointSetAdapter FPointSetAdapterf; } // end namespace UE::Geometry } // end namespace UE