Files
UnrealEngineUWP/Engine/Source/Runtime/GeometryCore/Public/PointSetAdapter.h
Ryan Schmidt a0cc146b60 GeometryProcessing: clean up mesh timestamps.
- remove FDynamicMesh3::Timestamp (unused), rename Shape/Topology Timestamps to Shape/TopologyChangeStamp, change to atomic<uint32>
- add FDynamicMesh3::bEnableShapeChangeStamp, default to false, to disable ShapeChange tracking. Add ::SetShapeChangeStampEnabled() and ::HasShapeChangeStampEnabled() to configure.
- replace FDynamicMesh3::UpdateTimestamps() with UpdateChangeStamps()
- add bTrackChange param to FDynamicMesh3::SetVertex(), optionally updates ShapeChangeStamp (if enabled). Default true. Remove SetVertex_NoTimeStampUpdate(), update call sites.
- add FDynamicMesh3::GetChangeStamp(), returns combination of Shape and Topology stamps as uint64
- rename TTriangleMeshAdapter::GetTimestamp() to GetChangeStamp(), update usages
- remove TPointSetAdapter::Timestamp()   (was not used in code)
- update TMeshAABBTree3 to use GetChangeStamp(), update internal checks to call IsValid() instead
- update TFastWindingTree w/ similar changes
- update calls in UVEditor, may require further updates
#rb semion.piskarev
#rnx
#jira none
#preflight 6126904c72e9eb00011434fe

[CL 17310271 by Ryan Schmidt in ue5-main branch]
2021-08-25 17:41:42 -04:00

39 lines
1018 B
C++

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