4#include "Core/Factory.h"
17class FIsoTriangulator;
137 if (!CurrentLoop || CurrentLoop->Value >
MinDistance)
142 if (CurrentLoop->Key == &
Loop1)
388 int32 LoopIndex = -1;
395 if ((LoopIndex == LoopNodes[0]->GetLoopIndex()) && (&LoopNodes.
Last()->GetNextNode() ==
FirstLoopCell->Nodes[0]))
405 if (LoopIndex != LoopNodes[0]->GetLoopIndex())
407 LoopIndex = LoopNodes[0]->GetLoopIndex();
421 if (Node->IsDeleteOrHasMarker2() )
427 while (StartNode->
HasMarker1() && (StartNode != Node))
436 LoopNodes.
Reset(NodeCount);
440 LoopNodes.
Add(NextNode);
450 Node->ResetMarkers();
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ensureCADKernel(InExpression)
Definition Types.h:115
#define HUGE_VALUE
Definition Types.h:16
#define HUGE_VALUE_SQUARE
Definition Types.h:19
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT ElementType & Last(SizeType IndexFromTheEnd=0) UE_LIFETIMEBOUND
Definition Array.h:1263
void Reset(SizeType NewSize=0)
Definition Array.h:2246
UE_FORCEINLINE_HINT SizeType Emplace(ArgsType &&... Args)
Definition Array.h:2561
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
void Append(const TArray< OtherElementType, OtherAllocatorType > &Source)
Definition Array.h:2412
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
virtual const FVector2d & Get2DPoint(EGridSpace Space, const FGrid &Grid) const override
Definition IsoNode.h:505
bool HasMarker1NotMarker2() const
Definition IsoNode.h:242
bool HasMarker1() const
Definition IsoNode.h:226
void SetMarker2()
Definition IsoNode.h:253
Definition IsoSegment.h:52
Definition IsoTriangulator.h:79
FLoopNode & GetPreviousNode() const
Definition IsoNode.h:341
FLoopNode & GetNextNode() const
Definition IsoNode.h:346
UE_REWRITE void Sort(RangeType &&Range)
Definition Sort.h:16
Definition CADEntity.cpp:23
@ UniformScaled
Definition MeshEnum.h:20
FCellLoop & Loop1
Definition IsoCell.h:89
FIsoNode * NodeB
Definition IsoCell.h:95
bool IsShortestPathToOuterLoop(const int32 MaxLoopCount)
Definition IsoCell.h:187
FCellLoop & Loop2
Definition IsoCell.h:90
FIsoSegment * Segment
Definition IsoCell.h:97
bool IsShortestPath(const int32 MaxLoopCount)
Definition IsoCell.h:118
FLoopNode * NodeA
Definition IsoCell.h:94
FCellLoop * GetOtherLoop(const FCellLoop *Loop)
Definition IsoCell.h:113
bool bIsConnexionWithOuter
Definition IsoCell.h:88
double MinDistance
Definition IsoCell.h:92
FCellConnexion(FCellLoop &InLoop1, FCellLoop &InLoop2)
Definition IsoCell.h:99
const FCellLoop * GetOtherLoop(const FCellLoop *Loop) const
Definition IsoCell.h:108
bool IsShortestPathToCorner(const int32 MaxLoopCount)
Definition IsoCell.h:258
virtual bool IsCellCornerOrOuterLoop() const
Definition IsoCell.h:79
FCellCorner(const int32 InIndex, FIsoInnerNode &InNode, const FGrid &Grid)
Definition IsoCell.h:67
FIsoInnerNode & CornerNode
Definition IsoCell.h:65
virtual bool IsCellCorner() const override
Definition IsoCell.h:74
FVector2d Barycenter
Definition IsoCell.h:23
virtual bool IsCellCornerOrOuterLoop() const
Definition IsoCell.h:55
bool bIsOuterLoop
Definition IsoCell.h:26
TArray< FLoopNode * > Nodes
Definition IsoCell.h:24
void PropagateAsConnected()
Definition IsoTriangulator.cpp:1790
virtual bool IsCellCorner() const
Definition IsoCell.h:50
FCellLoop(const int32 InIndex, TArray< FLoopNode * > &InNodes, const FGrid &Grid)
Definition IsoCell.h:29
FCellLoop(const int32 InIndex)
Definition IsoCell.h:42
TArray< FCellConnexion * > Connexions
Definition IsoCell.h:25
bool bIsConnected
Definition IsoCell.h:27
virtual ~FCellLoop()=default
int32 Id
Definition IsoCell.h:22
double Length
Definition IsoCell.h:332
TArray< FCellLoop > Path
Definition IsoCell.h:334
FCellLoop * CurrentLoop
Definition IsoCell.h:333
int32 Id
Definition IsoCell.h:341
void TryToConnectTwoSubLoopsWithShortestSegment(FCellConnexion &LoopConnexion)
Definition IsoTriangulator.cpp:1927
FIsoTriangulator & Triangulator
Definition IsoCell.h:339
int32 OuterLoopCount
Definition IsoCell.h:344
TArray< FCellConnexion > LoopConnexions
Definition IsoCell.h:353
TArray< FIsoSegment * > CandidateSegments
Definition IsoCell.h:346
void InitLoopConnexions()
Definition IsoTriangulator.cpp:1858
int32 InnerLoopCount
Definition IsoCell.h:343
const FGrid & Grid
Definition IsoCell.h:340
FCell(const int32 InLoopIndex, TArray< FLoopNode * > &InNodes, FIsoTriangulator &InTriangulator)
Definition IsoCell.h:356
TArray< FIsoSegment * > FinalSegments
Definition IsoCell.h:347
TArray< FCellLoop > CellLoops
Definition IsoCell.h:351
void FindCandidateToConnectLoopsByNeighborhood()
Definition IsoTriangulator.cpp:1657
TArray< FCellCorner > CellCorners
Definition IsoCell.h:352
void SelectSegmentToConnectLoopToCorner(TFactory< FIsoSegment > &SegmentFactory)
Definition IsoTriangulator.cpp:1725
void FindCandidateToConnectCellCornerToLoops()
FIntersectionSegmentTool IntersectionTool
Definition IsoCell.h:349
void CheckAllLoopsConnectedTogetherAndConnect()
Definition IsoTriangulator.cpp:1808
void SelectSegmentToConnectLoops(TFactory< FIsoSegment > &SegmentFactory)
Definition IsoTriangulator.cpp:1669
void TryToCreateSegment(FCellConnexion &LoopConnexion)
Definition IsoTriangulator.cpp:1824
TArray< int32 > LoopCellBorderIndices
Definition IsoCell.h:354
TArray< TPair< int32, FVector2d > > GetLoopBarycenters()
Definition IsoCell.h:468