1 // Copyright 2001-2018 Crytek GmbH / Crytek Group. All rights reserved.
8 class BSPTree2D
: public _i_reference_target_t
12 BSPTree2D() : m_pRootNode(NULL
)
17 EPointPosEnum
IsVertexIn(const BrushVec3
& vertex
) const;
18 EIntersectionType
HasIntersection(const BrushEdge3D
& edge
) const;
19 bool IsInside(const BrushEdge3D
& edge
, bool bCheckCoDiff
) const;
20 bool IsOnEdge(const BrushEdge3D
& edge
) const;
24 BrushEdge3D::List posList
;
25 BrushEdge3D::List negList
;
26 BrushEdge3D::List coSameList
;
27 BrushEdge3D::List coDiffList
;
30 void GetPartitions(const BrushEdge3D
& inEdge
, OutputEdges
& outEdges
) const;
32 void BuildTree(const BrushPlane
& plane
, const std::vector
<BrushEdge3D
>& edgeList
);
33 void GetEdgeList(BrushEdge3D::List
& outEdgeList
) const { GetEdgeList(m_pRootNode
, outEdgeList
); }
35 bool HasNegativeNode() const;
44 typedef std::vector
<Intersection
> IntersectionList
;
46 static void GetEdgeList(BSPTree2DNode
* pTree
, BrushEdge3D::List
& outEdgeList
);
47 static BSPTree2DNode
* ConstructTree(const BrushPlane
& plane
, const std::vector
<BrushEdge3D
>& edgeList
);
50 BSPTree2DNode
* m_pRootNode
;
53 typedef _smart_ptr
<BSPTree2D
> BSPTree2DPtr
;