12class FTopologicalEdge;
13class FTopologicalVertex;
15template<
typename EntityType>
27 : ActiveEntity(nullptr)
41 TTopologicalLink::Empty();
53 FEntity::Serialize(Ar);
54 SerializeIdent(Ar, &ActiveEntity,
false);
55 SerializeIdents(Ar, TwinEntities,
false);
61 ActiveEntity =
nullptr;
78 return TwinEntities.
Num();
89 for (EntityType*
Entity : TwinEntities)
96 FMessage::Error(
TEXT(
"FTopologicalLink::ActivateEntity, the topological entity is not found in the twins entities"));
113 if (&
Entity == ActiveEntity && TwinEntities.
Num() > 0)
115 ActiveEntity = TwinEntities.
HeapTop();
118 if (TwinEntities.
Num() == 0)
120 ActiveEntity =
nullptr;
140 return EEntity::EdgeLink;
153 template <
typename LinkableType>
159 template <
typename ArrayType>
162 TwinEntities.
Insert(Entities, TwinEntities.
Num());
172 for (EntityType*
Entity : TwinEntities)
183 if (TwinEntities.
Num())
185 ActiveEntity = TwinEntities.
HeapTop();
194 for (EntityType*
Entity : TwinEntities)
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ensureCADKernel(InExpression)
Definition Types.h:115
const bool
Definition NetworkReplayStreaming.h:178
SizeType Remove(const ElementType &Item)
Definition Array.h:3091
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
UE_NODEBUG const ElementType & HeapTop() const UE_LIFETIMEBOUND
Definition Array.h:3848
SizeType Insert(std::initializer_list< ElementType > InitList, const SizeType InIndex)
Definition Array.h:1875
void Empty(SizeType Slack=0)
Definition Array.h:2273
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition AndroidPlatformMisc.h:14
Definition SharedPointer.h:692
Definition CADKernelArchive.h:19
bool IsSaving() const
Definition CADKernelArchive.h:113
Definition CADEntity.h:56
Definition TopologicalEntity.h:16
Definition TopologicalLink.h:17
void AddEntities(const ArrayType &Entities)
Definition TopologicalLink.h:160
void AddEntity(EntityType &Entity)
Definition TopologicalLink.h:148
virtual void Serialize(FCADKernelArchive &Ar) override
Definition TopologicalLink.h:44
void ResetMarkersRecursively() const
Definition TopologicalLink.h:192
virtual bool CleanLink()
Definition TopologicalLink.h:168
TTopologicalLink()
Definition TopologicalLink.h:26
void RemoveEntity(EntityType &Entity)
Definition TopologicalLink.h:110
const TArray< EntityType * > & GetTwinEntities() const
Definition TopologicalLink.h:81
void RemoveEntity(TSharedPtr< EntityType > &Entity)
Definition TopologicalLink.h:104
const EntityType * GetActiveEntity() const
Definition TopologicalLink.h:64
friend EntityType
Definition TopologicalLink.h:21
TTopologicalLink(EntityType &Entity)
Definition TopologicalLink.h:31
void AddEntity(EntityType *Entity)
Definition TopologicalLink.h:143
void ActivateEntity(const EntityType &NewActiveEntity)
Definition TopologicalLink.h:86
TArray< EntityType * > TwinEntities
Definition TopologicalLink.h:24
virtual EEntity GetEntityType() const override
Definition TopologicalLink.h:138
virtual void Empty() override
Definition TopologicalLink.h:58
EntityType * ActiveEntity
Definition TopologicalLink.h:22
void AddEntity(const LinkableType *Entity)
Definition TopologicalLink.h:154
EntityType * GetActiveEntity()
Definition TopologicalLink.h:70
int32 GetTwinEntityNum() const
Definition TopologicalLink.h:76
virtual ~TTopologicalLink() override
Definition TopologicalLink.h:39
Definition CADEntity.cpp:23
EEntity
Definition CADEntity.h:18