6#include "Containers/Array.h"
8#include "Containers/Set.h"
66template<
typename RealType,
int ElementSize>
129 RealType Data[ElementSize];
145 for (
int FromTID :
Copy.GetParentMesh()->TriangleIndicesItr())
173 for (
int ID = 0; ID <
MapE.Num(); ID++)
185 RealType Data[ElementSize];
273 for (
int32 Idx = 0; Idx <
ToAppend.ParentVertices.Num(); ++Idx)
295 template <
typename EnumerableIntType>
478 int k = ElementID * ElementSize;
479 for (
int i = 0; i < ElementSize; ++i)
486 template<
typename AsType>
489 int k = ElementID * ElementSize;
490 for (
int i = 0; i < ElementSize; ++i)
503 template<
typename AsType>
525 int i = 3 * TriangleID;
532 int i = 3 * TriangleID;
546 int k = ElementID * ElementSize;
547 for (
int i = 0; i < ElementSize; ++i)
554 template<
typename AsType>
557 int k = ElementID * ElementSize;
558 for (
int i = 0; i < ElementSize; ++i)
567 int i = 3 * TriangleID;
618 template<
typename AsType>
625 const AsType
Bary0 = (AsType)BaryCoords[0],
Bary1 = (AsType)BaryCoords[1],
Bary2 = (AsType)BaryCoords[2];
626 for (
int32 i = 0; i < ElementSize; ++i)
712template<
typename RealType,
int ElementSize,
typename VectorType>
798 int i = 3 * TriangleID;
827#if PLATFORM_COMPILER_CLANG
828#define UE_EXTERN_TEMPLATE_API GEOMETRYCORE_API
830#define UE_EXTERN_TEMPLATE_API
833#if !UE_MERGED_MODULES
856#undef UE_EXTERN_TEMPLATE_API
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
#define ensure( InExpression)
Definition AssertionMacros.h:464
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_EXTERN_TEMPLATE_API
Definition MeshTangents.cpp:679
Definition Archive.h:1208
virtual void Serialize(void *V, int64 Length)
Definition Archive.h:1689
Definition ArrayView.h:139
void SetNumUninitialized(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2369
Definition AssetRegistryState.h:50
Definition CompactMaps.h:20
Definition DynamicMesh3.h:108
Definition DynamicMeshAttributeSet.h:84
Definition RefCountVector.h:445
Definition RefCountVector.h:25
TDynamicVector< unsigned short > & GetRawRefCountsUnsafe()
Definition RefCountVector.h:236
void RebuildFreeList()
Definition RefCountVector.h:306
size_t GetMaxIndex() const
Definition RefCountVector.h:56
static constexpr unsigned short INVALID_REF_COUNT
Definition RefCountVector.h:27
size_t GetCount() const
Definition RefCountVector.h:51
bool IsDense() const
Definition RefCountVector.h:61
void Trim(int maxIndex)
Definition RefCountVector.h:325
bool IsValidUnsafe(int Index) const
Definition RefCountVector.h:71
SIZE_T GetByteCount() const
Definition RefCountVector.h:538
void Append(const FRefCountVector &Other)
Definition RefCountVector.h:89
bool IsValid(int Index) const
Definition RefCountVector.h:66
IndexEnumerable Indices() const
Definition RefCountVector.h:458
Definition DynamicMeshOverlay.h:68
void ClearElements(const EnumerableIntType &Triangles)
Definition DynamicMeshOverlay.h:296
void OnRemoveTriangle(int TriangleID)
Definition DynamicMeshOverlay.cpp:1140
const FDynamicMesh3 * GetParentMesh() const
Definition DynamicMeshOverlay.h:107
void CreatePerVertex(RealType InitElementValue)
Definition DynamicMeshOverlay.cpp:167
void SetElement(int ElementID, const AsType &Data)
Definition DynamicMeshOverlay.h:555
void OnCollapseEdge(const DynamicMeshInfo::FEdgeCollapseInfo &CollapseInfo)
Definition DynamicMeshOverlay.cpp:1371
void GetElement(int ElementID, AsType &Data) const
Definition DynamicMeshOverlay.h:487
bool TriangleHasElement(int TriangleID, int ElementID) const
Definition DynamicMeshOverlay.h:565
void OnFlipEdge(const DynamicMeshInfo::FEdgeFlipInfo &FlipInfo)
Definition DynamicMeshOverlay.cpp:1276
void GetTriBaryInterpolate(int32 TriangleID, const AsType *BaryCoords, AsType *DataOut) const
Definition DynamicMeshOverlay.h:619
void SplitBowtiesAtVertex(int32 Vid, TArray< int32 > *NewElementIDs=nullptr)
Definition DynamicMeshOverlay.cpp:372
TDynamicVector< int > ParentVertices
Definition DynamicMeshOverlay.h:79
void BeginUnsafeElementsInsert()
Definition DynamicMeshOverlay.h:451
void Copy(const TDynamicMeshOverlay< RealType, ElementSize > &Copy)
Definition DynamicMeshOverlay.h:112
void SetElementFromLerp(int SetElement, int ElementA, int ElementB, double Alpha)
Definition DynamicMeshOverlay.cpp:1689
bool IsSeamEndEdge(int EdgeID) const
Definition DynamicMeshOverlay.cpp:765
void InitializeTriangles(int MaxTriangleID)
Definition DynamicMeshOverlay.cpp:506
void UnsetTriangle(int TriangleID, bool bAllowElementFreeing=true)
Definition DynamicMeshOverlay.cpp:564
void CompactInPlace(const FCompactMaps &CompactMaps)
Definition DynamicMeshOverlay.h:158
TDynamicMeshOverlay(FDynamicMesh3 *ParentMeshIn)
Definition DynamicMeshOverlay.h:95
EMeshResult SetTriangle(int TriangleID, const FIndex3i &TriElements, bool bAllowElementFreeing=true)
Definition DynamicMeshOverlay.cpp:516
void InitializeNewTriangle(int TriangleID)
Definition DynamicMeshOverlay.cpp:654
bool IsElement(int vID) const
Definition DynamicMeshOverlay.h:309
bool MergeElement(int SourceElementID, int TargetElementID)
Definition DynamicMeshOverlay.cpp:248
element_iterator ElementIndicesItr() const
Definition DynamicMeshOverlay.h:318
void SetElement(int ElementID, const RealType *Data)
Definition DynamicMeshOverlay.h:544
bool GetTriangleIfValid(int TriangleID, FIndex3i &TriangleOut) const
Definition DynamicMeshOverlay.h:530
int GetElementIDAtVertex(int TriangleID, int VertexID) const
Definition DynamicMeshOverlay.cpp:1117
bool HasInteriorSeamEdges() const
Definition DynamicMeshOverlay.cpp:818
void GetElement(int ElementID, RealType *Data) const
Definition DynamicMeshOverlay.h:476
void AppendDefaulted(const FDynamicMesh3::FAppendInfo &AppendInfo)
Definition DynamicMeshOverlay.h:284
bool IsCompact() const
Definition DynamicMeshOverlay.h:312
bool CheckValidity(bool bAllowNonManifoldVertices=true, EValidityCheckFailMode FailMode=EValidityCheckFailMode::Check) const
Definition DynamicMeshOverlay.cpp:1765
void GetVertexElements(int VertexID, TArray< int > &OutElements) const
Definition DynamicMeshOverlay.cpp:1031
void CreateFromPredicate(TFunctionRef< bool(int ParentVertexIdx, int TriIDA, int TriIDB)> TrisCanShareVertexPredicate, RealType InitElementValue)
Definition DynamicMeshOverlay.cpp:88
void OnMergeVertices(const DynamicMeshInfo::FMergeVerticesInfo &MergeInfo)
Definition DynamicMeshOverlay.cpp:1632
TDynamicMeshOverlay()
Definition DynamicMeshOverlay.h:89
FRefCountVector ElementsRefCounts
Definition DynamicMeshOverlay.h:75
void OnMergeEdges(const DynamicMeshInfo::FMergeEdgesInfo &MergeInfo)
Definition DynamicMeshOverlay.cpp:1598
int SplitElement(int ElementID, const TArrayView< const int > &TrianglesToUpdate)
Definition DynamicMeshOverlay.cpp:294
void OnSplitVertex(const DynamicMeshInfo::FVertexSplitInfo &SplitInfo, const TArrayView< const int > &TrianglesToUpdate)
Definition DynamicMeshOverlay.cpp:1656
int GetParentVertex(int ElementID) const
Definition DynamicMeshOverlay.h:516
void GetElementAtVertex(int TriangleID, int VertexID, AsType &Data) const
Definition DynamicMeshOverlay.h:504
int AppendElement(RealType ConstantValue)
Definition DynamicMeshOverlay.cpp:24
void SplitVerticesWithPredicate(TFunctionRef< bool(int ElementIdx, int TriID)> ShouldSplitOutVertex, TFunctionRef< void(int ElementIdx, int TriID, RealType *FillVect)> GetNewElementValue)
Definition DynamicMeshOverlay.cpp:206
void EndUnsafeElementsInsert()
Definition DynamicMeshOverlay.h:457
TDynamicVector< RealType > Elements
Definition DynamicMeshOverlay.h:77
FDynamicMesh3 * ParentMesh
Definition DynamicMeshOverlay.h:72
bool IsSameAs(const TDynamicMeshOverlay< RealType, ElementSize > &Other, bool bIgnoreDataLayout) const
Definition DynamicMeshOverlay.cpp:1859
void CompactCopy(const FCompactMaps &CompactMaps, const TDynamicMeshOverlay< RealType, ElementSize > &Copy)
Definition DynamicMeshOverlay.h:121
FIndex3i GetTriangle(int TriangleID) const
Definition DynamicMeshOverlay.h:523
friend FArchive & operator<<(FArchive &Ar, TDynamicMeshOverlay< RealType, ElementSize > &Overlay)
Definition DynamicMeshOverlay.h:649
EMeshResult InsertElement(int ElementID, const RealType *Value, bool bUnsafe=false)
Definition DynamicMeshOverlay.cpp:58
bool IsSetTriangle(int TID) const
Definition DynamicMeshOverlay.h:363
void ClearElements()
Definition DynamicMeshOverlay.cpp:13
void SetParentVertex(int ElementIndex, int ParentVertexIndex)
Definition DynamicMeshOverlay.h:326
void SplitBowties(bool bParallel=true)
Definition DynamicMeshOverlay.cpp:337
FRefCountVector::IndexEnumerable element_iterator
Definition DynamicMeshOverlay.h:315
SIZE_T GetByteCount() const
Definition DynamicMeshOverlay.h:664
int MaxElementID() const
Definition DynamicMeshOverlay.h:307
int ElementCount() const
Definition DynamicMeshOverlay.h:305
bool IsBowtieInOverlay(int32 VertexID) const
Definition DynamicMeshOverlay.cpp:891
void OnPokeTriangle(const DynamicMeshInfo::FPokeTriangleInfo &PokeInfo)
Definition DynamicMeshOverlay.cpp:1568
bool AreTrianglesConnected(int TriangleID0, int TriangleID1) const
Definition DynamicMeshOverlay.cpp:1016
TDynamicVector< int > ElementTriangles
Definition DynamicMeshOverlay.h:82
int SplitElementWithNewParent(int ElementID, int SplitParentVertexID, const TArrayView< const int > &TrianglesToUpdate)
Definition DynamicMeshOverlay.cpp:302
bool IsSeamEdge(int EdgeID, bool *bIsNonIntersectingOut=nullptr) const
Definition DynamicMeshOverlay.cpp:669
void OnReverseTriOrientation(int TriangleID)
Definition DynamicMeshOverlay.cpp:1167
int CountVertexElements(int VertexID, bool bBruteForce=false) const
Definition DynamicMeshOverlay.cpp:1054
void SetElementFromBary(int SetElement, int ElementA, int ElementB, int ElementC, const FVector3d &BaryCoords)
Definition DynamicMeshOverlay.cpp:1703
FDynamicMesh3 * GetParentMesh()
Definition DynamicMeshOverlay.h:109
void GetElementTriangles(int ElementID, TArray< int > &OutTriangles) const
Definition DynamicMeshOverlay.cpp:1098
void InternalSetTriangle(int TriangleID, const FIndex3i &TriElements, bool bUpdateRefCounts, bool bAllowElementFreeing=true)
Definition DynamicMeshOverlay.cpp:586
bool IsSeamIntersectionVertex(int32 VertexID) const
Definition DynamicMeshOverlay.cpp:879
void OnSplitEdge(const DynamicMeshInfo::FEdgeSplitInfo &SplitInfo)
Definition DynamicMeshOverlay.cpp:1180
bool IsSeamVertex(int VertexID, bool bBoundaryIsSeam=true) const
Definition DynamicMeshOverlay.cpp:861
void Append(const TDynamicMeshOverlay &ToAppend, const FDynamicMesh3::FAppendInfo &AppendInfo)
Definition DynamicMeshOverlay.h:250
void FreeUnusedElements(const TSet< int > *ElementsToCheck=nullptr)
Definition DynamicMeshOverlay.cpp:536
Definition DynamicMeshOverlay.h:714
int AppendElement(const RealType *Value)
Definition DynamicMeshOverlay.h:742
void GetElement(int ElementID, VectorType &V) const
Definition DynamicMeshOverlay.h:760
bool EnumerateVertexElements(int VertexID, TFunctionRef< bool(int TriangleID, int ElementID, const VectorType &Value)> ProcessFunc, bool bFindUniqueElements=true) const
Definition DynamicMeshOverlay.cpp:1719
VectorType GetElementAtVertex(int TriangleID, int VertexID) const
Definition DynamicMeshOverlay.h:768
TDynamicMeshVectorOverlay()
Definition DynamicMeshOverlay.h:718
TDynamicMeshVectorOverlay(FDynamicMesh3 *parentMesh)
Definition DynamicMeshOverlay.h:723
void SetElement(int ElementID, const VectorType &Value)
Definition DynamicMeshOverlay.h:808
VectorType GetElement(int ElementID) const
Definition DynamicMeshOverlay.h:750
void GetElementAtVertex(int TriangleID, int VertexID, VectorType &V) const
Definition DynamicMeshOverlay.h:778
void GetTriElements(int TriangleID, VectorType &A, VectorType &B, VectorType &C) const
Definition DynamicMeshOverlay.h:796
void GetTriElement(int TriangleID, int32 TriVertexIndex, VectorType &Value) const
Definition DynamicMeshOverlay.h:787
int AppendElement(const VectorType &Value)
Definition DynamicMeshOverlay.h:731
Definition DynamicVector.h:27
size_t GetByteCount() const
Definition DynamicVector.h:149
void Add(const Type &Data)
Definition DynamicVector.h:662
size_t Num() const
Definition DynamicVector.h:147
void Resize(unsigned int Count)
Definition DynamicVector.h:603
void SetNum(unsigned int Count)
Definition DynamicVector.h:143
Definition DynamicMeshAttributeSet.h:26
constexpr int InvalidID
Definition IndexTypes.h:13
template class GEOMETRYCORE_API TDynamicMeshOverlay< float, 2 >
Definition DynamicMeshOverlay.cpp:2126
template class GEOMETRYCORE_API TDynamicMeshVectorOverlay< int, 2, FVector2i >
Definition DynamicMeshOverlay.cpp:2137
template class GEOMETRYCORE_API TDynamicMeshVectorOverlay< float, 2, FVector2f >
Definition DynamicMeshOverlay.cpp:2135
template class GEOMETRYCORE_API TDynamicMeshOverlay< double, 1 >
Definition DynamicMeshOverlay.cpp:2124
template class GEOMETRYCORE_API TDynamicMeshVectorOverlay< double, 4, FVector4d >
Definition DynamicMeshOverlay.cpp:2142
EMeshResult
Definition GeometryTypes.h:18
template class GEOMETRYCORE_API TDynamicMeshOverlay< double, 4 >
Definition DynamicMeshOverlay.cpp:2133
template class GEOMETRYCORE_API TDynamicMeshOverlay< double, 3 >
Definition DynamicMeshOverlay.cpp:2130
template class GEOMETRYCORE_API TDynamicMeshVectorOverlay< double, 2, FVector2d >
Definition DynamicMeshOverlay.cpp:2136
template class GEOMETRYCORE_API TDynamicMeshOverlay< float, 4 >
Definition DynamicMeshOverlay.cpp:2132
template class GEOMETRYCORE_API TDynamicMeshOverlay< float, 1 >
Definition DynamicMeshOverlay.cpp:2123
EValidityCheckFailMode
Definition GeometryTypes.h:72
template class GEOMETRYCORE_API TDynamicMeshVectorOverlay< float, 4, FVector4f >
Definition DynamicMeshOverlay.cpp:2141
template class GEOMETRYCORE_API TDynamicMeshOverlay< double, 2 >
Definition DynamicMeshOverlay.cpp:2127
template class GEOMETRYCORE_API TDynamicMeshOverlay< int, 1 >
Definition DynamicMeshOverlay.cpp:2125
template class GEOMETRYCORE_API TDynamicMeshOverlay< int, 3 >
Definition DynamicMeshOverlay.cpp:2131
template class GEOMETRYCORE_API TDynamicMeshOverlay< int, 2 >
Definition DynamicMeshOverlay.cpp:2128
template class GEOMETRYCORE_API TDynamicMeshOverlay< float, 3 >
Definition DynamicMeshOverlay.cpp:2129
template class GEOMETRYCORE_API TDynamicMeshVectorOverlay< double, 3, FVector3d >
Definition DynamicMeshOverlay.cpp:2139
template class GEOMETRYCORE_API TDynamicMeshVectorOverlay< float, 3, FVector3f >
Definition DynamicMeshOverlay.cpp:2138
template class GEOMETRYCORE_API TDynamicMeshVectorOverlay< int, 3, FVector3i >
Definition DynamicMeshOverlay.cpp:2140
Definition AdvancedWidgetsModule.cpp:13
Definition InfoTypes.h:181
Definition InfoTypes.h:171
Definition InfoTypes.h:155
Definition InfoTypes.h:197
Definition InfoTypes.h:216
Definition InfoTypes.h:229
Definition InfoTypes.h:242
Definition DynamicMesh3.h:309
Definition IndexTypes.h:158