13template<
typename AttribValueType,
int AttribDimension,
typename ParentType>
14class TDynamicVertexAttribute;
17template<
typename AttribValueType,
int AttribDimension,
typename ParentType>
21 struct FChangeVertexAttribute
47template<
typename AttribValueType,
int AttribDimension,
typename ParentType>
146 ToCopy.GetValue(VID, Data);
199 for (
int32 Idx = 0; Idx <
Info.NumVertex; ++Idx)
255 template<
typename AsType>
277 template<
typename AsType>
339 if (!
ensure(VertexID >= 0))
425 if (!bIgnoreDataLayout)
432 for (
int Idx = 0, NumValues =
AttribValues.
Num(); Idx < NumValues; Idx++)
507 auto SerializeVector = [](
FArchive& Ar,
auto&
Vector,
bool bUseCompression)
519 Ar << bUseCompression;
564 double Beta = (1. -
Alpha);
588template<
typename AttribValueType,
int AttribDimension>
592template<
typename AttribValueType,
int AttribDimension,
typename ParentType>
595 FChangeVertexAttribute& Change = OldVertexAttributes.Emplace_GetRef();
596 Change.VertexID = VertexID;
601template<
typename AttribValueType,
int AttribDimension,
typename ParentType>
604 NewVertexAttributes.Reserve(NewVertexAttributes.Num() + VertexIDs.Num());
606 for (
int VertexID : VertexIDs)
608 FChangeVertexAttribute& Change = NewVertexAttributes.Emplace_GetRef();
609 Change.VertexID = VertexID;
614template<
typename AttribValueType,
int AttribDimension,
typename ParentType>
619 for (
const FChangeVertexAttribute& Change : *Changes)
625 AttribCast->SetValue(Change.VertexID, Change.Data);
#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
Definition UniquePtr.h:107
Definition CompactMaps.h:20
static constexpr int32 InvalidID
Definition CompactMaps.h:25
static constexpr int InvalidID
Definition DynamicMesh3.h:158
Definition DynamicMeshAttributeSet.h:84
Definition RefCountVector.h:403
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 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
Definition DynamicVertexAttribute.h:19
virtual ~TDynamicVertexAttributeChange()
Definition DynamicVertexAttribute.h:33
virtual bool Apply(TDynamicAttributeBase< ParentType > *Attribute, bool bRevert) const override
Definition DynamicVertexAttribute.h:615
virtual void StoreAllFinalVertices(const TDynamicAttributeBase< ParentType > *Attribute, const TSet< int > &VertexIDs) override
Definition DynamicVertexAttribute.h:602
TDynamicVertexAttributeChange()
Definition DynamicVertexAttribute.h:30
virtual void SaveInitialVertex(const TDynamicAttributeBase< ParentType > *Attribute, int VertexID) override
Definition DynamicVertexAttribute.h:593
Definition DynamicVertexAttribute.h:49
void SetNewValue(int NewVertexID, const AttribValueType *Data)
Definition DynamicVertexAttribute.h:159
void SetValue(int VertexID, const AsType &Data)
Definition DynamicVertexAttribute.h:278
const ParentType * GetParent() const
Definition DynamicVertexAttribute.h:82
void OnCollapseEdge(const FDynamicMesh3::FEdgeCollapseInfo &CollapseInfo) override
Definition DynamicVertexAttribute.h:327
void OnMergeVertices(const FDynamicMesh3::FMergeVerticesInfo &MergeInfo) override
Definition DynamicVertexAttribute.h:378
bool IsSameAs(const TDynamicVertexAttribute< AttribValueType, AttribDimension, ParentType > &Other, bool bIgnoreDataLayout) const
Definition DynamicVertexAttribute.h:423
virtual TDynamicAttributeBase< ParentType > * MakeNew(ParentType *ParentIn) const override
Definition DynamicVertexAttribute.h:88
virtual bool Append(const TDynamicAttributeBase< ParentType > &Source, const UE::Geometry::FDynamicMesh3::FAppendInfo &Info) override
Definition DynamicVertexAttribute.h:189
void Serialize(FArchive &Ar, const FCompactMaps *CompactMaps, bool bUseCompression)
Definition DynamicVertexAttribute.h:496
virtual SIZE_T GetByteCount() const override
Definition DynamicVertexAttribute.h:548
virtual void SetAttributeFromBary(int SetAttribute, int AttributeA, int AttributeB, int AttributeC, const FVector3d &BaryCoords)
Definition DynamicVertexAttribute.h:572
TDynamicVertexAttribute(ParentType *ParentIn, bool bAutoInit=true)
Definition DynamicVertexAttribute.h:69
virtual TDynamicAttributeBase< ParentType > * MakeCopy(ParentType *ParentIn) const override
Definition DynamicVertexAttribute.h:94
void OnFlipEdge(const FDynamicMesh3::FEdgeFlipInfo &FlipInfo) override
Definition DynamicVertexAttribute.h:321
virtual bool CopyOut(int RawID, void *Buffer, int BufferSize) const override
Definition DynamicVertexAttribute.h:215
virtual TUniquePtr< TDynamicAttributeChangeBase< ParentType > > NewBlankChange() const override
Definition DynamicVertexAttribute.h:389
virtual void OnNewVertex(int VertexID, bool bInserted) override
Definition DynamicVertexAttribute.h:350
void CompactInPlace(const FCompactMaps &CompactMaps)
Definition DynamicVertexAttribute.h:116
void GetValue(int VertexID, AsType &Data) const
Definition DynamicVertexAttribute.h:256
virtual void AppendDefaulted(const UE::Geometry::FDynamicMesh3::FAppendInfo &Info) override
Definition DynamicVertexAttribute.h:210
void OnSplitEdge(const FDynamicMesh3::FEdgeSplitInfo &SplitInfo) override
Definition DynamicVertexAttribute.h:314
virtual bool CheckValidity(bool bAllowNonmanifold, EValidityCheckFailMode FailMode) const override
Definition DynamicVertexAttribute.h:400
friend FArchive & operator<<(FArchive &Ar, TDynamicVertexAttribute< AttribValueType, AttribDimension, ParentType > &Attr)
Definition DynamicVertexAttribute.h:483
TDynamicVertexAttribute()
Definition DynamicVertexAttribute.h:64
void OnPokeTriangle(const FDynamicMesh3::FPokeTriangleInfo &PokeInfo) override
Definition DynamicVertexAttribute.h:357
virtual AttribValueType GetDefaultAttributeValue()
Definition DynamicVertexAttribute.h:332
void CompactCopy(const FCompactMaps &CompactMaps, const TDynamicVertexAttribute< AttribValueType, AttribDimension, ParentType > &ToCopy)
Definition DynamicVertexAttribute.h:133
virtual bool CopyThroughMapping(const TDynamicAttributeBase< ParentType > *Source, const FMeshIndexMappings &Mapping) override
Definition DynamicVertexAttribute.h:174
void SetScalarValue(int32 VertexID, const AttribValueType &SingleValue)
Definition DynamicVertexAttribute.h:288
void OnSplitVertex(const FDynamicMesh3::FVertexSplitInfo &SplitInfo, const TArrayView< const int > &TrianglesToUpdate) override
Definition DynamicVertexAttribute.h:384
void CopyValue(int FromVertexID, int ToVertexID)
Definition DynamicVertexAttribute.h:300
void ResizeAttribStoreIfNeeded(int VertexID)
Definition DynamicVertexAttribute.h:337
void SetValue(int VertexID, const AttribValueType *Data)
Definition DynamicVertexAttribute.h:267
virtual TDynamicAttributeBase< ParentType > * MakeCompactCopy(const FCompactMaps &CompactMaps, ParentType *ParentTypeIn) const override
Definition DynamicVertexAttribute.h:108
void Initialize(AttribValueType InitialValue=(AttribValueType) 0)
Definition DynamicVertexAttribute.h:152
TDynamicVector< AttribValueType > AttribValues
Definition DynamicVertexAttribute.h:56
void GetValue(int VertexID, AttribValueType *Data) const
Definition DynamicVertexAttribute.h:245
void OnMergeEdges(const FDynamicMesh3::FMergeEdgesInfo &MergeInfo) override
Definition DynamicVertexAttribute.h:365
ParentType * Parent
Definition DynamicVertexAttribute.h:53
virtual void SetAttributeFromLerp(int SetAttribute, int AttributeA, int AttributeB, double Alpha)
Definition DynamicVertexAttribute.h:559
virtual bool CopyIn(int RawID, void *Buffer, int BufferSize) override
Definition DynamicVertexAttribute.h:229
void Copy(const TDynamicVertexAttribute< AttribValueType, AttribDimension, ParentType > &Copy)
Definition DynamicVertexAttribute.h:102
virtual ~TDynamicVertexAttribute()
Definition DynamicVertexAttribute.h:77
ParentType * GetParent()
Definition DynamicVertexAttribute.h:84
EValidityCheckFailMode
Definition GeometryTypes.h:72
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:158
int B
Definition IndexTypes.h:164
int A
Definition IndexTypes.h:163
int C
Definition IndexTypes.h:165
Definition MeshIndexMappings.h:22
FIndexMapi & GetVertexMap()
Definition MeshIndexMappings.h:60
TMap< IntType, IntType > & GetForwardMap()
Definition GeometryTypes.h:119
T Z
Definition Vector.h:68
T Y
Definition Vector.h:65
T X
Definition Vector.h:62