13template<
typename AttribValueType,
int AttribDimension>
14class TDynamicMeshTriangleAttribute;
17template<
typename AttribValueType,
int AttribDimension>
21 struct FChangeTriangleAttribute
52template<
typename AttribValueType,
int AttribDimension>
210 for (
int32 Idx = 0; Idx <
Info.NumTriangle; ++Idx)
267 template<
typename AsType>
289 template<
typename AsType>
406 if (!
ensure(TriangleID >= 0))
429 if (!bIgnoreDataLayout)
436 for (
int Idx = 0, NumValues =
AttribValues.
Num(); Idx < NumValues; Idx++)
508 auto SerializeVector = [](
FArchive& Ar,
auto&
Vector,
bool bUseCompression)
520 Ar << bUseCompression;
557template<
typename AttribValueType,
int AttribDimension>
560 FChangeTriangleAttribute& Change = OldTriangleAttributes.Emplace_GetRef();
561 Change.TriangleID = TriangleID;
566template<
typename AttribValueType,
int AttribDimension>
570 NewTriangleAttributes.Reserve(NewTriangleAttributes.Num() + TriangleIDs.
Num());
571 for (
int TriangleID : TriangleIDs)
573 FChangeTriangleAttribute& Change = NewTriangleAttributes.Emplace_GetRef();
574 Change.TriangleID = TriangleID;
575 AttribCast->GetValue(TriangleID, Change.Data);
579template<
typename AttribValueType,
int AttribDimension>
584 for (
const FChangeTriangleAttribute& Change : *Changes)
590 AttribCast->SetValue(Change.TriangleID, Change.Data);
602template<
typename RealType>
626 return this->AttribValues[TriangleID];
631 this->AttribValues[TriangleID] =
Value;
#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
Definition Archive.h:1208
virtual CORE_API void UsingCustomVersion(const struct FGuid &Guid)
Definition Archive.cpp:590
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
CORE_API int32 CustomVer(const struct FGuid &Key) const
Definition Archive.cpp:602
Definition ArrayView.h:139
UE_REWRITE SizeType Num() const
Definition Array.h:1144
Definition UniquePtr.h:107
Definition CompactMaps.h:20
static constexpr int32 InvalidID
Definition CompactMaps.h:25
Definition DynamicMesh3.h:108
int MaxTriangleID() const
Definition DynamicMesh3.h:399
const FRefCountVector & GetTrianglesRefCounts() const
Definition DynamicMesh3.h:1292
int TriangleCount() const
Definition DynamicMesh3.h:383
FIndex2i GetEdgeT(int EdgeID) const
Definition DynamicMesh3.h:882
static constexpr int InvalidID
Definition DynamicMesh3.h:158
Definition DynamicMeshAttributeSet.h:84
Definition DynamicMeshTriangleAttribute.h:19
virtual void StoreAllFinalTriangles(const FDynamicMeshAttributeBase *Attribute, const TArray< int > &TriangleIDs) override
Definition DynamicMeshTriangleAttribute.h:567
virtual ~FDynamicMeshTriangleAttributeChange()
Definition DynamicMeshTriangleAttribute.h:33
virtual bool Apply(FDynamicMeshAttributeBase *Attribute, bool bRevert) const override
Definition DynamicMeshTriangleAttribute.h:580
FDynamicMeshTriangleAttributeChange()
Definition DynamicMeshTriangleAttribute.h:30
virtual void SaveInitialTriangle(const FDynamicMeshAttributeBase *Attribute, int TriangleID) override
Definition DynamicMeshTriangleAttribute.h:558
Definition RefCountVector.h:403
IndexIterator BeginIndices() const
Definition RefCountVector.h:430
IndexIterator EndIndices() const
Definition RefCountVector.h:435
Definition DynamicAttribute.h:67
virtual void CopyParentClassData(const TDynamicAttributeBase< ParentType > &Other)
Definition DynamicAttribute.h:249
void Serialize(FArchive &Ar)
Definition DynamicAttribute.h:231
Definition DynamicAttribute.h:24
Definition DynamicMeshTriangleAttribute.h:604
TDynamicMeshScalarTriangleAttribute()
Definition DynamicMeshTriangleAttribute.h:611
RealType GetValue(int TriangleID) const
Definition DynamicMeshTriangleAttribute.h:624
TDynamicMeshScalarTriangleAttribute(FDynamicMesh3 *ParentMeshIn)
Definition DynamicMeshTriangleAttribute.h:615
void SetNewValue(int NewTriangleID, RealType Value)
Definition DynamicMeshTriangleAttribute.h:619
void SetValue(int TriangleID, RealType Value)
Definition DynamicMeshTriangleAttribute.h:629
Definition DynamicMeshTriangleAttribute.h:54
void CompactInPlace(const FCompactMaps &CompactMaps)
Definition DynamicMeshTriangleAttribute.h:127
virtual bool CopyThroughMapping(const TDynamicAttributeBase< FDynamicMesh3 > *Source, const FMeshIndexMappings &Mapping) override
Definition DynamicMeshTriangleAttribute.h:185
void GetValue(int TriangleID, AsType &Data) const
Definition DynamicMeshTriangleAttribute.h:268
TDynamicMeshTriangleAttribute()
Definition DynamicMeshTriangleAttribute.h:70
void OnCollapseEdge(const DynamicMeshInfo::FEdgeCollapseInfo &CollapseInfo) override
Definition DynamicMeshTriangleAttribute.h:369
FDynamicMesh3 * GetParentMesh()
Definition DynamicMeshTriangleAttribute.h:96
void OnSplitVertex(const DynamicMeshInfo::FVertexSplitInfo &SplitInfo, const TArrayView< const int > &TrianglesToUpdate) override
Definition DynamicMeshTriangleAttribute.h:394
void CompactCopy(const FCompactMaps &CompactMaps, const TDynamicMeshTriangleAttribute< AttribValueType, AttribDimension > &ToCopy)
Definition DynamicMeshTriangleAttribute.h:144
void SetValue(int TriangleID, const AsType &Data)
Definition DynamicMeshTriangleAttribute.h:290
void OnPokeTriangle(const DynamicMeshInfo::FPokeTriangleInfo &PokeInfo) override
Definition DynamicMeshTriangleAttribute.h:375
bool IsBorderEdge(int EdgeID, bool bMeshBoundaryIsBorder=true) const
Definition DynamicMeshTriangleAttribute.h:324
void OnSplitEdge(const DynamicMeshInfo::FEdgeSplitInfo &SplitInfo) override
Definition DynamicMeshTriangleAttribute.h:353
void OnMergeEdges(const DynamicMeshInfo::FMergeEdgesInfo &MergeInfo) override
Definition DynamicMeshTriangleAttribute.h:382
void GetValue(int TriangleID, AttribValueType *Data) const
Definition DynamicMeshTriangleAttribute.h:257
void CopyValue(int FromTriangleID, int ToTriangleID)
Definition DynamicMeshTriangleAttribute.h:312
void OnFlipEdge(const DynamicMeshInfo::FEdgeFlipInfo &FlipInfo) override
Definition DynamicMeshTriangleAttribute.h:363
FDynamicMesh3 * ParentMesh
Definition DynamicMeshTriangleAttribute.h:58
TDynamicVector< AttribValueType > AttribValues
Definition DynamicMeshTriangleAttribute.h:61
virtual SIZE_T GetByteCount() const
Definition DynamicMeshTriangleAttribute.h:549
void SetNewValue(int NewTriangleID, const AttribValueType *Data)
Definition DynamicMeshTriangleAttribute.h:170
TDynamicMeshTriangleAttribute(FDynamicMesh3 *ParentMeshIn, bool bAutoInit=true)
Definition DynamicMeshTriangleAttribute.h:76
void Copy(const TDynamicMeshTriangleAttribute< AttribValueType, AttribDimension > &Copy)
Definition DynamicMeshTriangleAttribute.h:113
const FDynamicMesh3 * GetParentMesh() const
Definition DynamicMeshTriangleAttribute.h:94
virtual void AppendDefaulted(const UE::Geometry::FDynamicMesh3::FAppendInfo &Info) override
Definition DynamicMeshTriangleAttribute.h:221
void SetValue(int TriangleID, const AttribValueType *Data)
Definition DynamicMeshTriangleAttribute.h:279
friend FArchive & operator<<(FArchive &Ar, TDynamicMeshTriangleAttribute< AttribValueType, AttribDimension > &Attr)
Definition DynamicMeshTriangleAttribute.h:484
virtual FDynamicMeshAttributeBase * MakeNew(FDynamicMesh3 *ParentMeshIn) const override
Definition DynamicMeshTriangleAttribute.h:98
virtual bool Append(const TDynamicAttributeBase &Source, const UE::Geometry::FDynamicMesh3::FAppendInfo &Info) override
Definition DynamicMeshTriangleAttribute.h:200
void Serialize(FArchive &Ar, const FCompactMaps *CompactMaps, bool bUseCompression)
Definition DynamicMeshTriangleAttribute.h:497
virtual bool CopyIn(int RawID, void *Buffer, int BufferSize) override
Definition DynamicMeshTriangleAttribute.h:241
void SetScalarValue(int TriangleID, const AttribValueType &SingleValue)
Definition DynamicMeshTriangleAttribute.h:300
virtual bool CopyOut(int RawID, void *Buffer, int BufferSize) const override
Definition DynamicMeshTriangleAttribute.h:227
virtual FDynamicMeshAttributeBase * MakeCompactCopy(const FCompactMaps &CompactMaps, FDynamicMesh3 *ParentMeshIn) const override
Definition DynamicMeshTriangleAttribute.h:119
virtual void OnNewTriangle(int TriangleID, bool bInserted) override
Definition DynamicMeshTriangleAttribute.h:417
void ResizeAttribStoreIfNeeded(int TriangleID)
Definition DynamicMeshTriangleAttribute.h:404
virtual AttribValueType GetDefaultAttributeValue()
Definition DynamicMeshTriangleAttribute.h:399
void OnMergeVertices(const DynamicMeshInfo::FMergeVerticesInfo &MergeInfo) override
Definition DynamicMeshTriangleAttribute.h:387
virtual TUniquePtr< FDynamicMeshAttributeChangeBase > NewBlankChange() const override
Definition DynamicMeshTriangleAttribute.h:344
void Initialize(AttribValueType InitialValue=(AttribValueType) 0)
Definition DynamicMeshTriangleAttribute.h:163
virtual FDynamicMeshAttributeBase * MakeCopy(FDynamicMesh3 *ParentMeshIn) const override
Definition DynamicMeshTriangleAttribute.h:105
bool IsSameAs(const TDynamicMeshTriangleAttribute< AttribValueType, AttribDimension > &Other, bool bIgnoreDataLayout) const
Definition DynamicMeshTriangleAttribute.h:427
Definition DynamicVector.h:27
size_t GetByteCount() const
Definition DynamicVector.h:149
void InsertAt(const Type &Data, unsigned int Index)
Definition DynamicVector.h:747
bool SetMinimumSize(unsigned int Count, const Type &InitValue)
Resize if Num() is less than Count; returns true if resize occurred.
Definition DynamicVector.h:646
size_t Num() const
Definition DynamicVector.h:147
void Resize(unsigned int Count)
Definition DynamicVector.h:603
void Fill(const Type &Value)
Definition DynamicVector.h:590
void SetNum(unsigned int Count)
Definition DynamicVector.h:143
TDynamicAttributeBase< FDynamicMesh3 > FDynamicMeshAttributeBase
Definition DynamicAttribute.h:256
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
CORE_API static const FGuid GUID
Definition UE5MainStreamObjectVersion.h:22
Definition DynamicMesh3.h:309
Definition IndexTypes.h:27
int A
Definition IndexTypes.h:32
Definition MeshIndexMappings.h:22
FIndexMapi & GetTriangleMap()
Definition MeshIndexMappings.h:66
TMap< IntType, IntType > & GetForwardMap()
Definition GeometryTypes.h:119