Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

cBSP_Tree< cItem, cBSP_Node, cDivider_Type > Class Template Reference

un BSP tree permet de subdiviser un espace en sous-espaces More...

#include <bsp.h>

List of all members.

Public Member Functions

 cBSP_Tree ()
 constructeur

 ~cBSP_Tree ()
 destructeur

cBSP_NodeGet_Root ()
 retoune la racine de l'arbre

void Add_Divider (cDivider_Type &divider)
 Ajoute le divider à l'espace.

void Print ()
 imprime sur std::cout les infos sur ce BSP

cBSP_NodeWhere_Is (cItem &item)
 retourne le 'cBSP_Node' dans lequel se trouve le cItem 'item'

cBSP_NodeIn_Which_Leaf_Is (cItem &item)
 retourne le 'cBSP_Node' dans lequel se trouve le cItem 'item', en forcant à retourner une feuille !

void Apply_To_Each_Node (void(*Call_Back)(cBSP_Node *node))
 applique la fonction callback à tous les noeuds ( et pas aux feuilles )


Private Member Functions

void Recursive_Apply_To_Each_Node (void(*Call_Back)(cBSP_Node *node), cBSP_Node *node)
 applique la fonction callback à tous les noeuds sous le noeud 'node' compris ( et pas aux feuilles )

cBSP_NodeWhere_Is (cItem &item, cBSP_Node *node)
cBSP_NodeIn_Which_Leaf_Is (cItem &item, cBSP_Node *node)
void Add_Divider (cDivider_Type &divider, cBSP_Node *node)
 ajoute le divider 'divider' au sous-espaces sous le noeud 'node'


Static Private Member Functions

char * Get_String_BSP_Position_Divider (BSP_POSITION_DIVIDER pos)
 convertit un 'BSP_POSITION_DIVIDER' en chaine de caractere

char * Get_String_BSP_Position_Point (BSP_POSITION_POINT pos)
 convertit un 'BSP_POSITION_POINT' en chaine de caractere


Private Attributes

cBSP_NodeRoot
 la racine de l'arbre

int N_Nodes
 le nombre de noeud que compte l'arbre


Detailed Description

template<class cItem, class cBSP_Node, class cDivider_Type>
class cBSP_Tree< cItem, cBSP_Node, cDivider_Type >

un BSP tree permet de subdiviser un espace en sous-espaces

'cItem' : le type d'objet qui compose l'espace a diviser ( generique, pas forcement des points)
'cBSP_Node' : le type de noeud décrit plus haut
'cDivider_Type' : le type de divider utilisé pour diviser un espace en deux sous-espaces

IMPORTANT : la class cDivider_Type fournie ici doit impérativement etre la meme que celle utilisée pour
instancier la classe cBSP_Node !

Definition at line 115 of file bsp.h.


Constructor & Destructor Documentation

template<class cItem, class cBSP_Node, class cDivider_Type>
cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::cBSP_Tree  )  [inline]
 

constructeur

Definition at line 119 of file bsp.h.

template<class cItem, class cBSP_Node, class cDivider_Type>
cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::~cBSP_Tree  )  [inline]
 

destructeur

Definition at line 126 of file bsp.h.


Member Function Documentation

template<class cItem, class cBSP_Node, class cDivider_Type>
void cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::Add_Divider cDivider_Type &  divider,
cBSP_Node node
[inline, private]
 

ajoute le divider 'divider' au sous-espaces sous le noeud 'node'

Definition at line 270 of file bsp.h.

template<class cItem, class cBSP_Node, class cDivider_Type>
void cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::Add_Divider cDivider_Type &  divider  )  [inline]
 

Ajoute le divider à l'espace.

Definition at line 136 of file bsp.h.

Referenced by cLevel_Loader::Read_Wall(), and cBSP_Loader::Read_Wall().

template<class cItem, class cBSP_Node, class cDivider_Type>
void cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::Apply_To_Each_Node void(*  Call_Back)(cBSP_Node *node)  )  [inline]
 

applique la fonction callback à tous les noeuds ( et pas aux feuilles )

Definition at line 177 of file bsp.h.

Referenced by cGame_Manager::Display().

template<class cItem, class cBSP_Node, class cDivider_Type>
cBSP_Node* cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::Get_Root  )  [inline]
 

retoune la racine de l'arbre

Definition at line 133 of file bsp.h.

Referenced by cGame_World::Decorate_With_Areas().

template<class cItem, class cBSP_Node, class cDivider_Type>
char* cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::Get_String_BSP_Position_Divider BSP_POSITION_DIVIDER  pos  )  [inline, static, private]
 

convertit un 'BSP_POSITION_DIVIDER' en chaine de caractere

Definition at line 341 of file bsp.h.

template<class cItem, class cBSP_Node, class cDivider_Type>
char* cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::Get_String_BSP_Position_Point BSP_POSITION_POINT  pos  )  [inline, static, private]
 

convertit un 'BSP_POSITION_POINT' en chaine de caractere

Definition at line 359 of file bsp.h.

template<class cItem, class cBSP_Node, class cDivider_Type>
cBSP_Node* cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::In_Which_Leaf_Is cItem &  item,
cBSP_Node node
[inline, private]
 

identique a 'BSP_cBSP_Node * In_Which_Leaf_Is(cItem & item)' sauf que la recherche se fait dans l'espace correspondant aux sous-espaces devant et derriere 'node'

Definition at line 238 of file bsp.h.

template<class cItem, class cBSP_Node, class cDivider_Type>
cBSP_Node* cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::In_Which_Leaf_Is cItem &  item  )  [inline]
 

retourne le 'cBSP_Node' dans lequel se trouve le cItem 'item', en forcant à retourner une feuille !

si item est situé exactement à l'intérieur d'un sous-espaces, le noeud retourné sera une feuille
si item est situé exactement sur un divider, le noeud retourné sera la feuille juste devant le divider

Definition at line 171 of file bsp.h.

Referenced by cGame_World::Do_Ball_Intersect_Walls(), cGame_World::Do_Segment_Intersect_Walls(), and cGame_World::Find_Path().

template<class cItem, class cBSP_Node, class cDivider_Type>
void cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::Print  )  [inline]
 

imprime sur std::cout les infos sur ce BSP

Definition at line 148 of file bsp.h.

template<class cItem, class cBSP_Node, class cDivider_Type>
void cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::Recursive_Apply_To_Each_Node void(*  Call_Back)(cBSP_Node *node),
cBSP_Node node
[inline, private]
 

applique la fonction callback à tous les noeuds sous le noeud 'node' compris ( et pas aux feuilles )

Definition at line 187 of file bsp.h.

template<class cItem, class cBSP_Node, class cDivider_Type>
cBSP_Node* cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::Where_Is cItem &  item,
cBSP_Node node
[inline, private]
 

identique a 'cBSP_Node * Where_Is( cItem & item )' sauf que la recherche se fait dans l'espace correspondant aux sous-espaces devant et derriere 'node'

Definition at line 204 of file bsp.h.

template<class cItem, class cBSP_Node, class cDivider_Type>
cBSP_Node* cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::Where_Is cItem &  item  )  [inline]
 

retourne le 'cBSP_Node' dans lequel se trouve le cItem 'item'

si item est situé exactement à l'intérieur d'un sous-espaces, le noeud retourné sera une feuille
si item est situé exactement sur un divider, le noeud retourné ne sera pas une feuille !
la recherche se fait dans l'espace tout entier

Definition at line 162 of file bsp.h.

Referenced by cGame_World::Add_Wall_And_Portals(), and cGame_World::Do_Segment_Intersect_Walls().


Member Data Documentation

template<class cItem, class cBSP_Node, class cDivider_Type>
int cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::N_Nodes [private]
 

le nombre de noeud que compte l'arbre

Definition at line 184 of file bsp.h.

template<class cItem, class cBSP_Node, class cDivider_Type>
cBSP_Node* cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::Root [private]
 

la racine de l'arbre

Definition at line 183 of file bsp.h.


The documentation for this class was generated from the following file:
Generated on Fri May 21 19:22:37 2004 for LIBELL by doxygen 1.3.7