8#include "Containers/Array.h"
13#include "Containers/Map.h"
14#include "Containers/Set.h"
43#include "MeshDescription.generated.h"
200 VertexElements->Get().
Reserve(VertexElements->Get().
Num() + NumVertices);
213 VertexElements->Get().
Insert(VertexID);
219 check(VertexToVertexInstances.
Find(VertexID).
Num() == 0);
221 VertexElements->Get().
Remove(VertexID);
222 VertexToVertexInstances.
RemoveKey(VertexID);
229 return VertexElements->Get().
IsValid(VertexID);
242 CreateVertexInstance_Internal(VertexInstanceID, VertexID);
243 return VertexInstanceID;
249 VertexInstanceElements->Get().
Insert(VertexInstanceID);
250 CreateVertexInstance_Internal(VertexInstanceID, VertexID);
259 return VertexInstanceElements->Get().
IsValid(VertexInstanceID);
265 UVElements->Get(UVChannel).
Reserve(UVElements->Get(UVChannel).
Num() + NumUVs);
298 EdgeElements->Get().
Reserve(EdgeElements->Get().
Num() + NumEdges);
304 const FEdgeID EdgeID = EdgeElements->Get().
Add();
312 EdgeElements->Get().
Insert(EdgeID);
322 return EdgeElements->Get().
IsValid(EdgeID);
328 TriangleElements->Get().
Reserve(TriangleElements->Get().
Num() + NumTriangles);
335 CreateTriangle_Internal(TriangleID, PolygonGroupID, VertexInstanceIDs,
OutEdgeIDs);
342 TriangleElements->Get().
Insert(TriangleID);
343 CreateTriangle_Internal(TriangleID, PolygonGroupID, VertexInstanceIDs,
OutEdgeIDs);
357 return TriangleElements->Get().
IsValid(TriangleID);
370 CreatePolygon_Internal(PolygonID, PolygonGroupID, VertexInstanceIDs,
OutEdgeIDs);
377 PolygonElements->Get().
Insert(PolygonID);
378 CreatePolygon_Internal(PolygonID, PolygonGroupID, VertexInstanceIDs,
OutEdgeIDs);
392 return PolygonElements->Get().
IsValid(PolygonID);
405 return PolygonGroupID;
411 PolygonGroupElements->Get().
Insert(PolygonGroupID);
417 check(PolygonGroupToPolygons.
Find(PolygonGroupID).
Num() == 0);
418 PolygonGroupElements->Get().
Remove(PolygonGroupID);
419 PolygonGroupToPolygons.
RemoveKey(PolygonGroupID);
420 PolygonGroupToTriangles.
RemoveKey(PolygonGroupID);
426 return PolygonGroupElements->Get().
IsValid(PolygonGroupID);
450 UE_DEPRECATED(4.26,
"Please use GetVertexConnectedEdgeIDs instead.")
459 return VertexToEdges.
Find(VertexID).
Num();
468 UE_DEPRECATED(4.26,
"Please use GetVertexVertexInstanceIDs instead.")
477 return VertexToVertexInstances.
Find(VertexID).
Num();
481 template <
typename Alloc>
493 template <
typename Alloc>
519 template <
typename Alloc>
533 template <
typename Alloc>
556 template <
typename Alloc>
563 for (
const FEdgeID& EdgeID : ConnectedEdgeIDs)
572 template <
typename Alloc>
591 return VertexPositions[VertexID];
596 return VertexPositions;
601 return VertexPositions;
610 return VertexInstanceVertices[VertexInstanceID];
622 UE_DEPRECATED(4.26,
"Please use GetVertexInstanceTriangleIDs() instead.")
631 return VertexInstanceToTriangles.
Find(VertexInstanceID).
Num();
635 template <
typename Alloc>
646 template <
typename Alloc>
676 return ConnectedTriangles.
Num() == 2 &&
677 TrianglePolygons[ConnectedTriangles[0]] == TrianglePolygons[ConnectedTriangles[1]];
684 return ConnectedTriangles.
Num() == 2 &&
685 TrianglePolygons[ConnectedTriangles[0]] == PolygonID &&
686 TrianglePolygons[ConnectedTriangles[1]] == PolygonID;
695 UE_DEPRECATED(4.26,
"Please use GetEdgeConnectedTriangleIDs() instead.")
703 return EdgeToTriangles.
Find(EdgeID).
Num();
707 template <
typename Alloc>
718 template <
typename Alloc>
751 return EdgeVertices[EdgeID];
761 return TrianglePolygons[TriangleID];
767 return TrianglePolygonGroups[TriangleID];
773 return PolygonToTriangles.
Find(TrianglePolygons[TriangleID]).
Num() > 1;
779 return TriangleVertexInstances[TriangleID];
791 UE_DEPRECATED(4.26,
"Use the other form of GetTriangleVertices")
805 return TriangleVertices[TriangleID];
809 UE_DEPRECATED(4.26,
"Use the other form of GetTriangleEdges")
823 return TriangleEdges[TriangleID];
827 template <
typename Alloc>
833 for (
const int32& TriangleIndex : EdgeToTriangles.
Find(EdgeID))
845 template <
typename Alloc>
864 return TriangleUVs.Get(TriangleID, UVChannel);
892 UE_DEPRECATED(4.26,
"Please use GetPolygonTriangles() instead.")
901 return PolygonToTriangles.
Find(PolygonID).
Num();
905 template <
typename Alloc>
917 Result.SetNumUninitialized(
Tris.Num() + 2);
928 template <
typename Alloc>
947 return Tris.Num() + 2;
951 template <
typename Alloc>
963 Result.SetNumUninitialized(
Tris.Num() + 2);
975 template <
typename Alloc>
992 template <
typename Alloc>
1004 Result.SetNumUninitialized(
Tris.Num() + 2);
1016 template <
typename Alloc>
1034 template <
typename Alloc>
1055 template <
typename Alloc>
1074 return PolygonToTriangles.
Find(PolygonID).
Num() - 1;
1078 template <
typename Alloc>
1095 template <
typename Alloc>
1114 return PolygonPolygonGroups[PolygonID];
1137 PolygonPolygonGroups[PolygonID] = PolygonGroupID;
1140 for (
const int32& TriangleIndex: PolygonToTriangles.
Find(PolygonID))
1146 TrianglePolygonGroups[TriangleID] = PolygonGroupID;
1173 UE_DEPRECATED(4.26,
"Please use GetPolygonGroupPolygonIDs() instead.")
1188 return PolygonGroupToPolygons.
Find(PolygonGroupID).
Num();
1194 return PolygonGroupToTriangles.
Find(PolygonGroupID).
Num();
1253 template <
template <
typename...>
class TContainer>
1255 template <
template <
typename...>
class TContainer>
1257 template <
template <
typename...>
class TContainer>
1259 template <
template <
typename...>
class TContainer>
1319#if WITH_EDITORONLY_DATA
1329 , bGuidIsHash(
false)
1355 int64 GetBulkDataSize() {
return BulkData.GetPayloadSize(); }
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
EComputeNTBsOptions
Definition MeshDescription.h:84
@ MAX_MESH_TEXTURE_COORDS_MD
Definition MeshDescription.h:52
#define UENUM(...)
Definition ObjectMacros.h:749
Definition Archive.h:1208
Definition CustomVersion.h:111
Definition MeshElementContainer.h:367
void Remove(const int32 Index)
Definition MeshElementContainer.h:110
void Insert(const int32 Index)
Definition MeshElementContainer.h:85
int32 Add()
Definition MeshElementContainer.h:65
void Reserve(const int32 Elements)
Definition MeshElementContainer.h:62
bool IsValid(const int32 Index) const
Definition MeshElementContainer.h:132
int32 Num() const
Definition MeshElementContainer.h:120
Definition MeshElementIndexer.h:48
MESHDESCRIPTION_API void Build()
Definition MeshElementIndexer.cpp:195
MESHDESCRIPTION_API void AddReferenceToKey(int32 KeyIndex, int32 ReferenceIndex, int32 KeyChannelIndex=0)
Definition MeshElementIndexer.cpp:119
TArrayView< const int32 > Find(int32 KeyIndex, int32 KeyChannelIndex=0)
Definition MeshElementIndexer.h:101
MESHDESCRIPTION_API void RemoveKey(int32 KeyIndex, int32 KeyChannelIndex=0)
Definition MeshElementIndexer.cpp:58
void Resume()
Definition MeshElementIndexer.h:161
MESHDESCRIPTION_API void RemoveReferenceFromKey(int32 KeyIndex, int32 ReferenceIndex, int32 KeyChannelIndex=0)
Definition MeshElementIndexer.cpp:85
void Suspend()
Definition MeshElementIndexer.h:156
Definition NameTypes.h:617
Definition ArrayView.h:139
UE_FORCEINLINE_HINT constexpr SizeType Num() const
Definition ArrayView.h:380
ElementType * FindByPredicate(Predicate Pred)
Definition Array.h:1471
Definition MeshAttributeArray.h:1873
Definition UnrealString.h.inl:34
Definition MeshAttributeArray.h:836
Definition MeshElementContainer.h:246
TAttributesSet< ElementIDType > & GetAttributes()
Definition MeshElementContainer.h:279
Definition ContainerAllocationPolicies.h:894
Definition EditorBulkData.h:132
T TransformAccumulate(const A &Input, MapT MapOp, T Init, OpT Op)
Definition Accumulate.h:71
UE_REWRITE constexpr auto FindByPredicate(RangeType &&Range, PredicateType Pred) -> decltype(AlgoImpl::FindByPredicate(Forward< RangeType >(Range), MoveTemp(Pred)))
Definition Find.h:83
U16 Index
Definition radfft.cpp:71
Definition MeshTypes.h:150
Definition MeshElementRemappings.h:12
Definition MeshDescription.h:94
MESHDESCRIPTION_API void DeletePolygons(const TArray< FPolygonID > &Polygons)
Definition MeshDescription.cpp:1090
void ReserveNewVertices(const int32 NumVertices)
Definition MeshDescription.h:198
TAttributesSet< FTriangleID > & TriangleAttributes()
Definition MeshDescription.h:162
static MESHDESCRIPTION_API FName VerticesName
Definition MeshDescription.h:1278
MESHDESCRIPTION_API bool IsEmpty() const
Definition MeshDescription.cpp:613
int32 GetNumPolygonGroupTriangles(const FPolygonGroupID PolygonGroupID) const
Definition MeshDescription.h:1192
TArrayView< FUVID > GetTriangleUVIndices(const FTriangleID TriangleID, int32 UVChannel=0) const
Definition MeshDescription.h:862
void SuspendEdgeIndexing()
Definition MeshDescription.h:176
TArray< FEdgeID > GetPolygonPerimeterEdges(const FPolygonID PolygonID) const
Definition MeshDescription.h:1025
void ReserveNewUVs(const int32 NumUVs, const int32 UVChannel=0)
Definition MeshDescription.h:263
void BuildPolygonIndexers()
Definition MeshDescription.h:191
TArray< FTriangleID, Alloc > GetTriangleAdjacentTriangles(const FTriangleID TriangleID) const
Definition MeshDescription.h:846
void SuspendVertexInstanceIndexing()
Definition MeshDescription.h:175
TArray< FEdgeID > GetPolygonInternalEdges(const FPolygonID PolygonID) const
Definition MeshDescription.h:1064
FEdgeID CreateEdge(const FVertexID VertexID0, const FVertexID VertexID1)
Definition MeshDescription.h:302
TArrayView< const FTriangleID > GetVertexInstanceConnectedTriangleIDs(const FVertexInstanceID VertexInstanceID) const
Definition MeshDescription.h:617
MESHDESCRIPTION_API void ReversePolygonFacing(const FPolygonID PolygonID)
Definition MeshDescription.cpp:1936
bool IsTriangleValid(const FTriangleID TriangleID) const
Definition MeshDescription.h:355
int32 GetNumVertexInstanceConnectedTriangles(const FVertexInstanceID VertexInstanceID) const
Definition MeshDescription.h:629
void ReserveNewVertexInstances(const int32 NumVertexInstances)
Definition MeshDescription.h:233
void DeleteUV(const FUVID UVID, const int32 UVChannel=0)
Definition MeshDescription.h:282
MESHDESCRIPTION_API FEdgeID GetVertexPairEdge(const FVertexID VertexID0, const FVertexID VertexID1) const
Definition MeshDescription.cpp:1135
TArray< FVertexInstanceID > GetVertexVertexInstances(const FVertexID VertexID) const
Definition MeshDescription.h:469
FPolygonGroupID CreatePolygonGroup()
Definition MeshDescription.h:402
bool IsEdgeInternalToPolygon(const FEdgeID EdgeID, const FPolygonID PolygonID) const
Definition MeshDescription.h:681
MESHDESCRIPTION_API float GetTriangleCornerAngleForVertex(const FTriangleID TriangleID, const FVertexID VertexID) const
TAttributesSet< FVertexID > & VertexAttributes()
Definition MeshDescription.h:150
FPolygonGroupID GetTrianglePolygonGroup(const FTriangleID TriangleID) const
Definition MeshDescription.h:765
void GetEdgeConnectedPolygons(const FEdgeID EdgeID, TArray< FPolygonID, Alloc > &OutPolygonIDs) const
Definition MeshDescription.h:708
TAttributesSet< FVertexInstanceID > & VertexInstanceAttributes()
Definition MeshDescription.h:153
int32 GetNumVertexConnectedEdges(const FVertexID VertexID) const
Definition MeshDescription.h:457
FPolygonID GetTrianglePolygon(const FTriangleID TriangleID) const
Definition MeshDescription.h:759
void ResumeEdgeIndexing()
Definition MeshDescription.h:183
void SuspendPolygonGroupIndexing()
Definition MeshDescription.h:178
FPolygonArray & Polygons()
Definition MeshDescription.h:144
TVertexAttributesRef< FVector3f > GetVertexPositions()
Definition MeshDescription.h:594
MESHDESCRIPTION_API void SplitPolygon(FPolygonID PolygonID)
Definition MeshDescription.cpp:1554
TArray< FVertexID > GetVertexAdjacentVertices(const FVertexID VertexID) const
Definition MeshDescription.h:581
TArrayView< const FPolygonID > GetPolygonGroupPolygonIDs(const FPolygonGroupID PolygonGroupID) const
Definition MeshDescription.h:1168
FVertexID CreateVertex()
Definition MeshDescription.h:204
int32 GetNumEdgeConnectedPolygons(const FEdgeID EdgeID) const
Definition MeshDescription.h:735
TArray< FPolygonID, Alloc > GetEdgeConnectedPolygons(const FEdgeID EdgeID) const
Definition MeshDescription.h:719
MESHDESCRIPTION_API FMeshDescription()
Definition MeshDescription.cpp:37
MESHDESCRIPTION_API void DeleteTriangle(const FTriangleID TriangleID, TArray< FEdgeID > *InOutOrphanedEdgesPtr=nullptr, TArray< FVertexInstanceID > *InOutOrphanedVertexInstancesPtr=nullptr, TArray< FPolygonGroupID > *InOutOrphanedPolygonGroupsPtr=nullptr)
Definition MeshDescription.cpp:932
MESHDESCRIPTION_API void ComputePolygonTriangulation(const FPolygonID PolygonID)
Definition MeshDescription.cpp:1483
MESHDESCRIPTION_API void SetTriangleUVIndices(const FTriangleID TriangleID, TArrayView< const FUVID > UVIDs, int32 UVChannel=0)
Definition MeshDescription.cpp:843
TArrayView< const FVertexID > GetTriangleVertices(const FTriangleID TriangleID) const
Definition MeshDescription.h:803
MESHDESCRIPTION_API void DeletePolygon(const FPolygonID PolygonID, TArray< FEdgeID > *InOutOrphanedEdgesPtr=nullptr, TArray< FVertexInstanceID > *InOutOrphanedVertexInstancesPtr=nullptr, TArray< FPolygonGroupID > *InOutOrphanedPolygonGroupsPtr=nullptr)
Definition MeshDescription.cpp:1085
FVertexInstanceID GetVertexInstanceForTriangleVertex(const FTriangleID TriangleID, const FVertexID VertexID) const
Definition MeshDescription.h:868
static MESHDESCRIPTION_API FName PolygonsName
Definition MeshDescription.h:1283
void ReserveNewTriangles(const int32 NumTriangles)
Definition MeshDescription.h:326
void GetVertexConnectedTriangles(const FVertexID VertexID, TArray< FTriangleID, Alloc > &OutConnectedTriangleIDs) const
Definition MeshDescription.h:482
MESHDESCRIPTION_API FMeshDescription & operator=(const FMeshDescription &)
Definition MeshDescription.cpp:50
TArray< FVertexInstanceID, Alloc > GetPolygonVertexInstances(const FPolygonID PolygonID) const
Definition MeshDescription.h:929
void ResumeVertexIndexing()
Definition MeshDescription.h:181
int32 GetNumPolygonGroupPolygons(const FPolygonGroupID PolygonGroupID) const
Definition MeshDescription.h:1186
void GetVertexConnectedPolygons(const FVertexID VertexID, TArray< FPolygonID, Alloc > &OutConnectedPolygonIDs) const
Definition MeshDescription.h:520
int32 GetNumVertexVertexInstances(const FVertexID VertexID) const
Definition MeshDescription.h:475
TArrayView< const FVertexInstanceID > GetTriangleVertexInstances(const FTriangleID TriangleID) const
Definition MeshDescription.h:777
bool IsTrianglePartOfNgon(const FTriangleID TriangleID) const
Definition MeshDescription.h:771
MESHDESCRIPTION_API void DeleteVertexInstance(const FVertexInstanceID VertexInstanceID, TArray< FVertexID > *InOutOrphanedVerticesPtr=nullptr)
Definition MeshDescription.cpp:732
bool IsVertexInstanceValid(const FVertexInstanceID VertexInstanceID) const
Definition MeshDescription.h:257
int32 GetNumPolygonTriangles(const FPolygonID PolygonID) const
Definition MeshDescription.h:899
MESHDESCRIPTION_API void ReverseAllPolygonFacing()
Definition MeshDescription.cpp:1950
bool IsVertexValid(const FVertexID VertexID) const
Definition MeshDescription.h:227
void BuildPolygonGroupIndexers()
Definition MeshDescription.h:192
FVector3f GetVertexPosition(const FVertexID VertexID) const
Definition MeshDescription.h:589
TArray< FTriangleID > GetVertexInstanceConnectedTriangles(const FVertexInstanceID VertexInstanceID) const
Definition MeshDescription.h:623
FVertexInstanceID CreateVertexInstance(const FVertexID VertexID)
Definition MeshDescription.h:239
TArray< FTriangleID > GetTriangleAdjacentTriangles(const FTriangleID TriangleID) const
Definition MeshDescription.h:854
FPolygonGroupID GetPolygonPolygonGroup(const FPolygonID PolygonID) const
Definition MeshDescription.h:1112
void SuspendUVIndexing()
Definition MeshDescription.h:179
void BuildVertexIndexers()
Definition MeshDescription.h:188
TArray< FTriangleID > GetPolygonTriangleIDs(const FPolygonID PolygonID) const
Definition MeshDescription.h:893
void GetTriangleEdges(const FTriangleID TriangleID, TArrayView< FEdgeID > OutEdgeIDs) const
Definition MeshDescription.h:810
int32 GetNumVertexConnectedPolygons(const FVertexID VertexID) const
Definition MeshDescription.h:550
void ReserveNewPolygons(const int32 NumPolygons)
Definition MeshDescription.h:361
MESHDESCRIPTION_API void Compact(FElementIDRemappings &OutRemappings)
Definition MeshDescription.cpp:638
MESHDESCRIPTION_API void SetNumUVChannels(const int32 NumUVChannels)
Definition MeshDescription.cpp:1816
void CreateVertexInstanceWithID(const FVertexInstanceID VertexInstanceID, const FVertexID VertexID)
Definition MeshDescription.h:247
MESHDESCRIPTION_API void ReverseTriangleFacing(const FTriangleID TriangleID)
Definition MeshDescription.cpp:1925
void SuspendPolygonIndexing()
Definition MeshDescription.h:177
MESHDESCRIPTION_API void BuildIndexers()
Definition MeshDescription.cpp:577
MESHDESCRIPTION_API bool IsVertexOrphaned(const FVertexID VertexID) const
Definition MeshDescription.cpp:1119
static MESHDESCRIPTION_API FName EdgesName
Definition MeshDescription.h:1281
void CreatePolygonGroupWithID(const FPolygonGroupID PolygonGroupID)
Definition MeshDescription.h:409
void BuildVertexInstanceIndexers()
Definition MeshDescription.h:189
void GetPolygonVertexInstances(const FPolygonID PolygonID, TArray< FVertexInstanceID, Alloc > &OutVertexInstanceIDs) const
Definition MeshDescription.h:906
MESHDESCRIPTION_API void TriangulateMesh()
Definition MeshDescription.cpp:1806
TArray< FPolygonID, Alloc > GetVertexInstanceConnectedPolygons(const FVertexInstanceID VertexInstanceID) const
Definition MeshDescription.h:647
TArrayView< const FTriangleID > GetEdgeConnectedTriangleIDs(const FEdgeID EdgeID) const
Definition MeshDescription.h:690
const TAttributesSet< FPolygonID > & PolygonAttributes() const
Definition MeshDescription.h:166
void GetPolygonVertices(const FPolygonID PolygonID, TArray< FVertexID, Alloc > &OutVertexIDs) const
Definition MeshDescription.h:952
void CreatePolygonWithID(const FPolygonID PolygonID, const FPolygonGroupID PolygonGroupID, TArrayView< const FVertexInstanceID > VertexInstanceIDs, TArray< FEdgeID > *OutEdgeIDs=nullptr)
Definition MeshDescription.h:375
static MESHDESCRIPTION_API FName UVsName
Definition MeshDescription.h:1280
MESHDESCRIPTION_API void SetPolygonVertexInstances(const FPolygonID PolygonID, TArrayView< const FVertexInstanceID > VertexInstanceIDs)
Definition MeshDescription.cpp:1206
void CreateTriangleWithID(const FTriangleID TriangleID, const FPolygonGroupID PolygonGroupID, TArrayView< const FVertexInstanceID > VertexInstanceIDs, TArray< FEdgeID > *OutEdgeIDs=nullptr)
Definition MeshDescription.h:340
int32 GetNumVertexConnectedTriangles(const FVertexID VertexID) const
Definition MeshDescription.h:510
FEdgeArray & Edges()
Definition MeshDescription.h:135
int32 GetNumPolygonVertices(const FPolygonID PolygonID) const
Definition MeshDescription.h:944
TArray< FTriangleID > GetEdgeConnectedTriangles(const FEdgeID EdgeID) const
Definition MeshDescription.h:696
const FTriangleArray & Triangles() const
Definition MeshDescription.h:142
void ReserveNewEdges(const int32 NumEdges)
Definition MeshDescription.h:296
TArray< FPolygonID > GetPolygonGroupPolygons(const FPolygonGroupID PolygonGroupID) const
Definition MeshDescription.h:1174
TArray< FVertexID > GetPolygonVertices(const FPolygonID PolygonID) const
Definition MeshDescription.h:984
MESHDESCRIPTION_API void SerializeLegacy(FArchive &Ar)
Definition MeshDescription.cpp:422
TAttributesSet< FPolygonGroupID > & PolygonGroupAttributes()
Definition MeshDescription.h:168
TArray< FTriangleID > GetVertexConnectedTriangles(const FVertexID VertexID) const
Definition MeshDescription.h:502
void SuspendVertexIndexing()
Definition MeshDescription.h:174
MESHDESCRIPTION_API void Empty()
Definition MeshDescription.cpp:603
void GetPolygonPerimeterEdges(const FPolygonID PolygonID, TArray< FEdgeID, Alloc > &OutEdgeIDs) const
Definition MeshDescription.h:993
FVertexInstanceArray & VertexInstances()
Definition MeshDescription.h:132
void DeletePolygonGroup(const FPolygonGroupID PolygonGroupID)
Definition MeshDescription.h:415
void GetPolygonAdjacentPolygons(const FPolygonID PolygonID, TArray< FPolygonID, Alloc > &OutPolygonIDs) const
Definition MeshDescription.h:1079
TArray< FPolygonID > GetPolygonAdjacentPolygons(const FPolygonID PolygonID) const
Definition MeshDescription.h:1104
~FMeshDescription()=default
MESHDESCRIPTION_API FEdgeID GetVertexInstancePairEdge(const FVertexInstanceID VertexInstanceID0, const FVertexInstanceID VertexInstanceID1) const
Definition MeshDescription.cpp:1152
TAttributesSet< FEdgeID > & EdgeAttributes()
Definition MeshDescription.h:156
FMeshDescription & operator=(FMeshDescription &&)=default
void CreateVertexWithID(const FVertexID VertexID)
Definition MeshDescription.h:211
TAttributesSet< FPolygonID > & PolygonAttributes()
Definition MeshDescription.h:165
TArrayView< const FTriangleID > GetPolygonGroupTriangles(const FPolygonGroupID PolygonGroupID) const
Definition MeshDescription.h:1180
TArrayView< const FVertexID > GetEdgeVertices(const FEdgeID EdgeID) const
Definition MeshDescription.h:749
TMap< FName, FMeshElementTypeWrapper > & GetElements()
Definition MeshDescription.h:171
TArray< FVertexID, Alloc > GetPolygonVertices(const FPolygonID PolygonID) const
Definition MeshDescription.h:976
void DeleteVertex(const FVertexID VertexID)
Definition MeshDescription.h:217
bool IsUVValid(const FUVID UVID, const int32 UVChannel=0) const
Definition MeshDescription.h:290
const TAttributesSet< FVertexID > & VertexAttributes() const
Definition MeshDescription.h:151
MESHDESCRIPTION_API void RemapPolygonGroups(const TMap< FPolygonGroupID, FPolygonGroupID > &Remap)
Definition MeshDescription.cpp:1960
TArrayView< const FVertexInstanceID > GetVertexVertexInstanceIDs(const FVertexID VertexID) const
Definition MeshDescription.h:463
void SetPolygonPolygonGroup(const FPolygonID PolygonID, const FPolygonGroupID PolygonGroupID)
Definition MeshDescription.h:1132
MESHDESCRIPTION_API void Serialize(FArchive &Ar)
Definition MeshDescription.cpp:171
friend FArchive & operator<<(FArchive &Ar, FMeshDescription &MeshDescription)
Definition MeshDescription.h:106
FUVArray & UVs(int32 Index)
Definition MeshDescription.h:138
void GetVertexAdjacentVertices(const FVertexID VertexID, TArray< FVertexID, Alloc > &OutAdjacentVertexIDs) const
Definition MeshDescription.h:557
const TAttributesSet< FEdgeID > & EdgeAttributes() const
Definition MeshDescription.h:157
const TAttributesSet< FVertexInstanceID > & VertexInstanceAttributes() const
Definition MeshDescription.h:154
TArray< FPolygonID > GetVertexConnectedPolygons(const FVertexID VertexID) const
Definition MeshDescription.h:542
TArray< FPolygonID > GetVertexInstanceConnectedPolygons(const FVertexInstanceID VertexInstanceID) const
Definition MeshDescription.h:655
const TAttributesSet< FTriangleID > & TriangleAttributes() const
Definition MeshDescription.h:163
void GetPolygonInternalEdges(const FPolygonID PolygonID, TArray< FEdgeID, Alloc > &OutEdgeIDs) const
Definition MeshDescription.h:1035
TVertexAttributesRef< const FVector3f > GetVertexPositions() const
Definition MeshDescription.h:599
void ResumeVertexInstanceIndexing()
Definition MeshDescription.h:182
int32 GetNumEdgeConnectedTriangles(const FEdgeID EdgeID) const
Definition MeshDescription.h:701
MESHDESCRIPTION_API float GetPolygonCornerAngleForVertex(const FPolygonID PolygonID, const FVertexID VertexID) const
Definition MeshDescription.cpp:1869
void ReserveNewPolygonGroups(const int32 NumPolygonGroups)
Definition MeshDescription.h:396
MESHDESCRIPTION_API void ResetIndexers()
Definition MeshDescription.cpp:564
const FVertexArray & Vertices() const
Definition MeshDescription.h:130
TArrayView< const FTriangleID > GetPolygonTriangles(const FPolygonID PolygonID) const
Definition MeshDescription.h:887
MESHDESCRIPTION_API void TransferPolygonGroup(FPolygonGroupID SourceID, FPolygonGroupID DestinationID)
Definition MeshDescription.cpp:2012
void GetTriangleAdjacentTriangles(const FTriangleID TriangleID, TArray< FTriangleID, Alloc > &OutTriangleIDs) const
Definition MeshDescription.h:828
TArray< FPolygonID > GetEdgeConnectedPolygons(const FEdgeID EdgeID) const
Definition MeshDescription.h:727
int32 GetNumVertexInstanceConnectedPolygons(const FVertexInstanceID VertexInstanceID) const
Definition MeshDescription.h:663
static MESHDESCRIPTION_API FName VertexInstancesName
Definition MeshDescription.h:1279
const TMap< FName, FMeshElementTypeWrapper > & GetElements() const
Definition MeshDescription.h:172
MESHDESCRIPTION_API FBox ComputeBoundingBox() const
Definition MeshDescription.cpp:1912
const TAttributesSet< FPolygonGroupID > & PolygonGroupAttributes() const
Definition MeshDescription.h:169
FPolygonGroupArray & PolygonGroups()
Definition MeshDescription.h:147
const FUVArray & UVs(int32 Index) const
Definition MeshDescription.h:139
bool IsEdgeInternal(const FEdgeID EdgeID) const
Definition MeshDescription.h:673
void BuildEdgeIndexers()
Definition MeshDescription.h:190
TArray< FVertexInstanceID > GetPolygonVertexInstances(const FPolygonID PolygonID) const
Definition MeshDescription.h:936
const FVertexInstanceArray & VertexInstances() const
Definition MeshDescription.h:133
const TAttributesSet< FUVID > & UVAttributes(int32 Index) const
Definition MeshDescription.h:160
MESHDESCRIPTION_API bool NeedsCompact() const
Definition MeshDescription.cpp:625
TAttributesSet< FUVID > & UVAttributes(int32 Index)
Definition MeshDescription.h:159
int32 GetNumUVElementChannels() const
Definition MeshDescription.h:1216
void ResumeUVIndexing()
Definition MeshDescription.h:186
FVertexID GetEdgeVertex(const FEdgeID EdgeID, int32 VertexNumber) const
Definition MeshDescription.h:741
const FPolygonArray & Polygons() const
Definition MeshDescription.h:145
bool IsPolygonGroupValid(const FPolygonGroupID PolygonGroupID) const
Definition MeshDescription.h:424
TArrayView< const FEdgeID > GetVertexConnectedEdgeIDs(const FVertexID VertexID) const
Definition MeshDescription.h:445
MESHDESCRIPTION_API void SetPolygonVertexInstance(const FPolygonID PolygonID, const int32 PerimeterIndex, const FVertexInstanceID VertexInstanceID)
Definition MeshDescription.cpp:1171
TArray< FVertexID, Alloc > GetVertexAdjacentVertices(const FVertexID VertexID) const
Definition MeshDescription.h:573
TArray< FEdgeID > GetVertexConnectedEdges(const FVertexID VertexID) const
Definition MeshDescription.h:451
FUVID CreateUV(const int32 UVChannel=0)
Definition MeshDescription.h:269
MESHDESCRIPTION_API void Remap(const FElementIDRemappings &Remappings)
Definition MeshDescription.cpp:651
FVertexInstanceID GetTriangleVertexInstance(const FTriangleID TriangleID, const int32 Index) const
Definition MeshDescription.h:783
TArray< FPolygonID, Alloc > GetVertexConnectedPolygons(const FVertexID VertexID) const
Definition MeshDescription.h:534
MESHDESCRIPTION_API void DeleteTriangles(const TArray< FTriangleID > &Triangles)
Definition MeshDescription.cpp:937
bool IsEdgeValid(const FEdgeID EdgeID) const
Definition MeshDescription.h:320
FVertexArray & Vertices()
Definition MeshDescription.h:129
FMeshDescription(FMeshDescription &&)=default
FVertexID GetVertexInstanceVertex(const FVertexInstanceID VertexInstanceID) const
Definition MeshDescription.h:608
MESHDESCRIPTION_API FBoxSphereBounds GetBounds() const
Definition MeshDescription.cpp:1775
static MESHDESCRIPTION_API FName PolygonGroupsName
Definition MeshDescription.h:1284
FVertexInstanceID GetVertexInstanceForPolygonVertex(const FPolygonID PolygonID, const FVertexID VertexID) const
Definition MeshDescription.h:1118
void CreateEdgeWithID(const FEdgeID EdgeID, const FVertexID VertexID0, const FVertexID VertexID1)
Definition MeshDescription.h:310
bool IsPolygonValid(const FPolygonID PolygonID) const
Definition MeshDescription.h:390
void ResumePolygonIndexing()
Definition MeshDescription.h:184
void ResumePolygonGroupIndexing()
Definition MeshDescription.h:185
TArray< FEdgeID, Alloc > GetPolygonPerimeterEdges(const FPolygonID PolygonID) const
Definition MeshDescription.h:1017
TArray< FTriangleID, Alloc > GetVertexConnectedTriangles(const FVertexID VertexID) const
Definition MeshDescription.h:494
const FPolygonGroupArray & PolygonGroups() const
Definition MeshDescription.h:148
TArray< FEdgeID, Alloc > GetPolygonInternalEdges(const FPolygonID PolygonID) const
Definition MeshDescription.h:1056
MESHDESCRIPTION_API void FindPolygonPerimeter(TArrayView< const FTriangleID > Triangles, TArrayView< TTuple< int32, int32 > > Result) const
Definition MeshDescription.cpp:1387
static MESHDESCRIPTION_API FName TrianglesName
Definition MeshDescription.h:1282
FPolygonID CreatePolygon(const FPolygonGroupID PolygonGroupID, TArrayView< const FVertexInstanceID > VertexInstanceIDs, TArray< FEdgeID > *OutEdgeIDs=nullptr)
Definition MeshDescription.h:367
void GetVertexInstanceConnectedPolygons(const FVertexInstanceID VertexInstanceID, TArray< FPolygonID, Alloc > &OutPolygonIDs) const
Definition MeshDescription.h:636
int32 GetNumPolygonInternalEdges(const FPolygonID PolygonID) const
Definition MeshDescription.h:1072
MESHDESCRIPTION_API void DeleteEdge(const FEdgeID EdgeID, TArray< FVertexID > *InOutOrphanedVerticesPtr=nullptr)
Definition MeshDescription.cpp:779
TArray< FPolygonID, Alloc > GetPolygonAdjacentPolygons(const FPolygonID PolygonID) const
Definition MeshDescription.h:1096
const FEdgeArray & Edges() const
Definition MeshDescription.h:136
FTriangleID CreateTriangle(const FPolygonGroupID PolygonGroupID, TArrayView< const FVertexInstanceID > VertexInstanceIDs, TArray< FEdgeID > *OutEdgeIDs=nullptr)
Definition MeshDescription.h:332
TArrayView< FEdgeID > GetTriangleEdges(const FTriangleID TriangleID) const
Definition MeshDescription.h:821
void CreateUVWithID(const FUVID UVID, const int32 UVChannel=0)
Definition MeshDescription.h:276
MESHDESCRIPTION_API void RebuildIndexers()
Definition MeshDescription.cpp:590
void GetTriangleVertices(const FTriangleID TriangleID, TArrayView< FVertexID > OutVertexIDs) const
Definition MeshDescription.h:792
FTriangleArray & Triangles()
Definition MeshDescription.h:141
Definition ObjectVersion.h:762
Definition MeshTypes.h:236
Definition MeshTypes.h:266
Definition MeshTypes.h:206
Definition MeshTypes.h:180
Definition MeshTypes.h:90
Definition MeshTypes.h:120
Definition BoxSphereBounds.h:25