UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
CADEntity.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
5#include "Core/HaveStates.h"
7#include "Core/Types.h"
8#include "Geo/GeoEnum.h"
10
11#ifdef CADKERNEL_DEV
12#include "Toolkit/Core/InfoEntity.h"
13#endif
14
15namespace UE::CADKernel
16{
17enum class EEntity : uint8
18{
19 None = 0,
20
21 Curve,
22 Surface,
23
26
29
32
34
35 Shell,
36 Body,
37 Model,
38
40 Mesh,
41
42 Group,
45
47};
48
49class FDatabase;
50class FEntity;
51class FInfoEntity;
52class FSession;
53class FSystem;
54
55class CADKERNEL_API FEntity : public TSharedFromThis<FEntity>, public FHaveStates
56{
57 friend class FDatabase;
58
59protected:
60 static const TCHAR* TypesNames[];
62
63public:
64 virtual ~FEntity();
65
66 virtual void Delete()
67 {
68 Empty();
69 SetDeletedMarker();
70 }
71
72 virtual void Empty()
73 {
74
75 }
76
77 template<typename OtherEntity, typename... InArgTypes>
79 {
80 OtherEntity* Entity = new OtherEntity(Forward<InArgTypes>(Args)...);
82
83#ifdef CADKERNEL_DEV
85#endif
86 return NewShared;
87 }
88
89 template<typename OtherEntity>
91 {
92 OtherEntity* Entity = new OtherEntity();
94 return NewShared;
95 }
96
104 static void SerializeIdent(FCADKernelArchive& Ar, TSharedPtr<FEntity>& Entity, bool bSaveSelection = true);
105 static void SerializeIdent(FCADKernelArchive& Ar, TWeakPtr<FEntity>& Entity, bool bSaveSelection = true);
106 static void SerializeIdent(FCADKernelArchive& Ar, FEntity** Entity, bool bSaveSelection = true);
107
108 template<typename EntityType>
109 static void SerializeIdent(FCADKernelArchive& Ar, EntityType** Entity, bool bSaveSelection = true)
110 {
111 SerializeIdent(Ar, (FEntity**)Entity, bSaveSelection);
112 }
113
114 template<typename EntityType>
116 {
117 SerializeIdent(Ar, (TSharedPtr<FEntity>&) Entity, bSaveSelection);
118 }
119
120 template<typename EntityType>
122 {
123 SerializeIdent(Ar, (TWeakPtr<FEntity>&) Entity, bSaveSelection);
124 }
125
129 static void SerializeIdents(FCADKernelArchive& Ar, TArray<FEntity*>& Array, bool bSaveSelection = true);
130 static void SerializeIdents(FCADKernelArchive& Ar, TArray<TWeakPtr<FEntity>>& Array, bool bSaveSelection = true);
131 static void SerializeIdents(FCADKernelArchive& Ar, TArray<TSharedPtr<FEntity>>& Array, bool bSaveSelection = true);
132 static void SerializeIdents(FCADKernelArchive& Ar, TArray<TOrientedEntity<FEntity>>& Array);
133
134 template<typename EntityType>
136 {
137 SerializeIdents(Ar, (TArray<FEntity*>&) Array, bSaveSelection);
138 }
139
140 template<typename EntityType>
142 {
143 SerializeIdents(Ar, (TArray<TWeakPtr<FEntity>>&) Array, bSaveSelection);
144 }
145
146 template<typename EntityType>
148 {
149 SerializeIdents(Ar, (TArray<TSharedPtr<FEntity>>&) Array, bSaveSelection);
150 }
151
156 {
157 for (FEntity* Entity : Array)
158 {
159 Entity->SpawnIdent(Database);
160 }
161 }
162
167 {
169 {
170 Entity->SpawnIdent(Database);
171 }
172 }
173
175 {
177 {
178 Entity.Entity->SpawnIdent(Database);
179 }
180 }
181
182 template<typename EntityType>
187
192 {
193 for (const FEntity* Entity : Array)
194 {
195 Entity->ResetMarkersRecursively();
196 }
197 }
198
200 {
201 for (const TWeakPtr<FEntity>& Entity : Array)
202 {
203 Entity.Pin()->ResetMarkersRecursively();
204 }
205 }
206
208 {
209 for (const TSharedPtr<FEntity>& Entity : Array)
210 {
211 Entity->ResetMarkersRecursively();
212 }
213 }
214
216 {
218 {
219 OrientedEntity.Entity->ResetMarkersRecursively();
220 }
221 }
222
223 template<typename EntityType>
225 {
226 ResetMarkersRecursivelyOnEntities((const TArray<TSharedPtr<FEntity>>&) Array);
227 }
228
241 virtual void Serialize(FCADKernelArchive& Ar)
242 {
243 Ar << Id;
244 FHaveStates::Serialize(Ar);
245 }
246
250 static TSharedPtr<FEntity> Deserialize(FCADKernelArchive& Ar);
251
252 static const TCHAR* GetTypeName(EEntity Type);
253
254 virtual EEntity GetEntityType() const = 0;
255
257 {
258 return (GetEntityType() >= EEntity::EdgeLink && GetEntityType() <= EEntity::Model);
259 }
260
262 {
263 return (GetEntityType() == EEntity::TopologicalFace) || (GetEntityType() >= EEntity::Shell && GetEntityType() <= EEntity::Model);
264 }
265
267 {
268 return (GetEntityType() == EEntity::Curve || GetEntityType() == EEntity::Surface);
269 }
270
271 const TCHAR* GetTypeName() const
272 {
273 return GetTypeName(GetEntityType());
274 }
275
276 const FIdent& GetId() const
277 {
278 return Id;
279 }
280
281#ifdef CADKERNEL_DEV
282 void InfoEntity() const;
283 virtual FInfoEntity& GetInfo(FInfoEntity& EntityInfo) const;
284 static void AddEntityInDatabase(TSharedRef<FEntity> Entity);
285#endif
286
288 {
289 if (!FEntity::SetId(Database))
290 {
291 return;
292 }
293 }
294
295 virtual void ResetMarkersRecursively() const
296 {
297 ResetMarkers();
298 }
299
300protected:
301
302 bool SetId(FDatabase& Database);
303};
304}
305
FString GetTypeName()
Definition Casts.h:66
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
uint32 FIdent
Definition Types.h:27
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Array.h:670
Definition SharedPointer.h:1640
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition SharedPointer.h:1295
Definition CADKernelArchive.h:19
Definition Database.h:17
Definition CADEntity.h:56
static void SpawnIdentOnEntities(TArray< TOrientedEntity< FEntity > > &Array, FDatabase &Database)
Definition CADEntity.h:174
bool IsGeometricalEntity()
Definition CADEntity.h:266
virtual void Serialize(FCADKernelArchive &Ar)
Definition CADEntity.h:241
static void ResetMarkersRecursivelyOnEntities(const TArray< TSharedPtr< FEntity > > &Array)
Definition CADEntity.h:207
static void SpawnIdentOnEntities(TArray< TSharedPtr< EntityType > > &Array, FDatabase &Database)
Definition CADEntity.h:183
static TSharedRef< OtherEntity > MakeShared(InArgTypes &&... Args)
Definition CADEntity.h:78
static void SerializeIdents(FCADKernelArchive &Ar, TArray< EntityType * > &Array, bool bSaveSelection=true)
Definition CADEntity.h:135
static void SpawnIdentOnEntities(TArray< TSharedPtr< FEntity > > &Array, FDatabase &Database)
Definition CADEntity.h:166
static void SpawnIdentOnEntities(TArray< FEntity * > &Array, FDatabase &Database)
Definition CADEntity.h:155
static void SerializeIdent(FCADKernelArchive &Ar, TSharedPtr< EntityType > &Entity, bool bSaveSelection=true)
Definition CADEntity.h:115
static void SerializeIdents(FCADKernelArchive &Ar, TArray< TSharedPtr< EntityType > > &Array, bool bSaveSelection=true)
Definition CADEntity.h:147
static void ResetMarkersRecursivelyOnEntities(const TArray< TWeakPtr< FEntity > > &Array)
Definition CADEntity.h:199
static TSharedRef< OtherEntity > MakeShared(FCADKernelArchive &Archive)
Definition CADEntity.h:90
static void SerializeIdent(FCADKernelArchive &Ar, EntityType **Entity, bool bSaveSelection=true)
Definition CADEntity.h:109
virtual void Delete()
Definition CADEntity.h:66
static void ResetMarkersRecursivelyOnEntities(const TArray< TSharedPtr< EntityType > > &Array)
Definition CADEntity.h:224
static void ResetMarkersRecursivelyOnEntities(const TArray< TOrientedEntity< FEntity > > &Array)
Definition CADEntity.h:215
const TCHAR * GetTypeName() const
Definition CADEntity.h:271
virtual void ResetMarkersRecursively() const
Definition CADEntity.h:295
virtual void SpawnIdent(FDatabase &Database)
Definition CADEntity.h:287
bool IsTopologicalEntity() const
Definition CADEntity.h:256
virtual EEntity GetEntityType() const =0
static void ResetMarkersRecursivelyOnEntities(const TArray< FEntity * > &Array)
Definition CADEntity.h:191
static void SerializeIdent(FCADKernelArchive &Ar, TWeakPtr< EntityType > &Entity, bool bSaveSelection=true)
Definition CADEntity.h:121
bool IsTopologicalShapeEntity() const
Definition CADEntity.h:261
const FIdent & GetId() const
Definition CADEntity.h:276
virtual void Empty()
Definition CADEntity.h:72
static void SerializeIdents(FCADKernelArchive &Ar, TArray< TWeakPtr< EntityType > > &Array, bool bSaveSelection=true)
Definition CADEntity.h:141
Definition HaveStates.h:48
Definition OrientedEntity.h:11
Definition CADEntity.cpp:23
@ Curve
Definition Visu.h:19
EEntity
Definition CADEntity.h:18