00001 #ifndef IG_OPEN_INVENTOR_IG_BSP_NODE_H 00002 # define IG_OPEN_INVENTOR_IG_BSP_NODE_H 00003 00004 //<<<<<< INCLUDES >>>>>> 00005 00006 # include "Iguana/Inventor/interface/config.h" 00007 # include "Iguana/Inventor/interface/IgBSPTriangle.h" 00008 # include <Inventor/SbLinear.h> 00009 # include <list> 00010 00011 //<<<<<< PUBLIC DEFINES >>>>>> 00012 //<<<<<< PUBLIC CONSTANTS >>>>>> 00013 //<<<<<< PUBLIC TYPES >>>>>> 00014 //<<<<<< PUBLIC VARIABLES >>>>>> 00015 //<<<<<< PUBLIC FUNCTIONS >>>>>> 00016 //<<<<<< CLASS DECLARATIONS >>>>>> 00017 00018 class IG_OPEN_INVENTOR_API IgBSPNode 00019 { 00020 public: 00021 // implicit copy constructor 00022 // implicit assignment operator 00023 IgBSPNode (IgBSPTriangle *triangle); 00024 IgBSPNode (const SbPlane &plane); 00025 ~IgBSPNode (void); 00026 00027 00028 void add (IgBSPTriangle *triangle, 00029 bool addTriangle, 00030 IgBSPTriangle::List *trianglesAddedInFront, 00031 IgBSPTriangle::List *trianglesAddedInBack); 00032 void add (const SbPlane &plane); 00033 void add (IgBSPTriangle::List &list); 00034 00035 00036 const SbPlane &plane (void); 00037 00038 int getTriangleCount (void); 00039 00040 IgBSPNode *&front (void); 00041 IgBSPNode *&back (void); 00042 private: 00043 IgBSPTriangle::List m_coplanarTriangles; 00044 IgBSPNode *m_front; 00045 IgBSPNode *m_back; 00046 SbPlane m_hyperPlane; 00047 }; 00048 00049 00050 //<<<<<< INLINE PUBLIC FUNCTIONS >>>>>> 00051 //<<<<<< INLINE MEMBER FUNCTIONS >>>>>> 00052 00053 #endif // IG_OPEN_INVENTOR_IG_BSP_NODE_H