source: OGRE/trunk/ogrenew/Docs/api/html/classOgre_1_1BspNode.html @ 692

Revision 692, 51.5 KB checked in by mattausch, 19 years ago (diff)

adding ogre 1.2 and dependencies

Line 
1<html>
2<head>
3<title>Ogre::BspNode class Reference - OGRE Documentation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
4<link type="text/css" rel="stylesheet" href="style.css">
5</head>
6
7<body>
8<!-- Generated by Doxygen 1.3.6 -->
9<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
10<h1>Ogre::BspNode Class Reference</h1>Encapsulates a node in a BSP tree. 
11<a href="#_details">More...</a>
12<p>
13<code>#include &lt;<a class="el" href="OgreBspNode_8h-source.html">OgreBspNode.h</a>&gt;</code>
14<p>
15<a href="classOgre_1_1BspNode-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
16<tr><td></td></tr>
17<tr><td colspan=2><br><h2>Public Types</h2></td></tr>
18<tr><td class="memItemLeft" nowrap align=right valign=top>typedef std::set&lt; const <a class="el" href="classOgre_1_1MovableObject.html">MovableObject</a> * &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodew0">IntersectingObjectSet</a></td></tr>
19
20<tr><td class="memItemLeft" nowrap align=right valign=top>typedef std::vector&lt; <a class="el" href="structOgre_1_1BspNode_1_1Brush.html">Brush</a> * &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodew1">NodeBrushList</a></td></tr>
21
22<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
23<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea0">BspNode</a> (<a class="el" href="classOgre_1_1BspLevel.html">BspLevel</a> *owner, bool isLeaf)</td></tr>
24
25<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor, only to be used by <a class="el" href="classOgre_1_1BspLevel.html">BspLevel</a>.  <a href="#Ogre_1_1BspNodea0"></a><br><br></td></tr>
26<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea1">BspNode</a> ()</td></tr>
27
28<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea2">~BspNode</a> ()</td></tr>
29
30<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea3">isLeaf</a> (void) const </td></tr>
31
32<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns true if this node is a leaf (i.e.  <a href="#Ogre_1_1BspNodea3"></a><br><br></td></tr>
33<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classOgre_1_1BspNode.html">BspNode</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea4">getFront</a> (void) const </td></tr>
34
35<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a pointer to a <a class="el" href="classOgre_1_1BspNode.html">BspNode</a> containing the subspace on the positive side of the splitting plane.  <a href="#Ogre_1_1BspNodea4"></a><br><br></td></tr>
36<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classOgre_1_1BspNode.html">BspNode</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea5">getBack</a> (void) const </td></tr>
37
38<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a pointer to a <a class="el" href="classOgre_1_1BspNode.html">BspNode</a> containing the subspace on the negative side of the splitting plane.  <a href="#Ogre_1_1BspNodea5"></a><br><br></td></tr>
39<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classOgre_1_1Plane.html#Ogre_1_1Planew3">Plane::Side</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea6">getSide</a> (const <a class="el" href="classOgre_1_1Vector3.html">Vector3</a> &amp;point) const </td></tr>
40
41<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines which side of the splitting plane a worldspace point is.  <a href="#Ogre_1_1BspNodea6"></a><br><br></td></tr>
42<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classOgre_1_1BspNode.html">BspNode</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea7">getNextNode</a> (const <a class="el" href="classOgre_1_1Vector3.html">Vector3</a> &amp;point) const </td></tr>
43
44<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the next node down in the tree, with the intention of locating the leaf containing the given point.  <a href="#Ogre_1_1BspNodea7"></a><br><br></td></tr>
45<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="classOgre_1_1Plane.html">Plane</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea8">getSplitPlane</a> (void) const </td></tr>
46
47<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns details of the plane which is used to subdivide the space of his node's children.  <a href="#Ogre_1_1BspNodea8"></a><br><br></td></tr>
48<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea9">getBoundingBox</a> (void) const </td></tr>
49
50<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the axis-aligned box which contains this node if it is a leaf.  <a href="#Ogre_1_1BspNodea9"></a><br><br></td></tr>
51<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea10">getNumFaceGroups</a> (void) const </td></tr>
52
53<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the number of faces contained in this leaf node.  <a href="#Ogre_1_1BspNodea10"></a><br><br></td></tr>
54<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea11">getFaceGroupStart</a> (void) const </td></tr>
55
56<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the index to the face group index list for this leaf node.  <a href="#Ogre_1_1BspNodea11"></a><br><br></td></tr>
57<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea12">isLeafVisible</a> (const <a class="el" href="classOgre_1_1BspNode.html">BspNode</a> *leaf) const </td></tr>
58
59<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines if the passed in node (must also be a leaf) is visible from this leaf.  <a href="#Ogre_1_1BspNodea12"></a><br><br></td></tr>
60<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea13">_addMovable</a> (const <a class="el" href="classOgre_1_1MovableObject.html">MovableObject</a> *mov)</td></tr>
61
62<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Internal method for telling the node that a movable intersects it.  <a href="#Ogre_1_1BspNodea13"></a><br><br></td></tr>
63<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea14">_removeMovable</a> (const <a class="el" href="classOgre_1_1MovableObject.html">MovableObject</a> *mov)</td></tr>
64
65<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Internal method for telling the node that a movable no longer intersects it.  <a href="#Ogre_1_1BspNodea14"></a><br><br></td></tr>
66<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="namespaceOgre.html#a465">Real</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea15">getDistance</a> (const <a class="el" href="classOgre_1_1Vector3.html">Vector3</a> &amp;pos) const </td></tr>
67
68<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the signed distance to the dividing plane.  <a href="#Ogre_1_1BspNodea15"></a><br><br></td></tr>
69<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodew1">NodeBrushList</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea16">getSolidBrushes</a> (void) const </td></tr>
70
71<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the list of solid Brushes for this node.  <a href="#Ogre_1_1BspNodea16"></a><br><br></td></tr>
72<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodew0">IntersectingObjectSet</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea17">getObjects</a> (void) const </td></tr>
73
74<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
75<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classOgre_1_1BspLevel.html">BspLevel</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep0">mOwner</a></td></tr>
76
77<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep1">mIsLeaf</a></td></tr>
78
79<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classOgre_1_1Plane.html">Plane</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep2">mSplitPlane</a></td></tr>
80
81<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The plane which splits space in a non-leaf node.  <a href="#Ogre_1_1BspNodep2"></a><br><br></td></tr>
82<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classOgre_1_1BspNode.html">BspNode</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep3">mFront</a></td></tr>
83
84<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to the node in front of this non-leaf node.  <a href="#Ogre_1_1BspNodep3"></a><br><br></td></tr>
85<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classOgre_1_1BspNode.html">BspNode</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep4">mBack</a></td></tr>
86
87<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to the node behind this non-leaf node.  <a href="#Ogre_1_1BspNodep4"></a><br><br></td></tr>
88<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep5">mVisCluster</a></td></tr>
89
90<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The cluster number of this leaf.  <a href="#Ogre_1_1BspNodep5"></a><br><br></td></tr>
91<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep6">mBounds</a></td></tr>
92
93<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The axis-aligned box which bounds node if it is a leaf.  <a href="#Ogre_1_1BspNodep6"></a><br><br></td></tr>
94<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep7">mNumFaceGroups</a></td></tr>
95
96<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Number of face groups in this node if it is a leaf.  <a href="#Ogre_1_1BspNodep7"></a><br><br></td></tr>
97<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep8">mFaceGroupStart</a></td></tr>
98
99<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Index to the part of the main leaf facegroup index buffer(held in BspLevel) for this leaf.  <a href="#Ogre_1_1BspNodep8"></a><br><br></td></tr>
100<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodew0">IntersectingObjectSet</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep9">mMovables</a></td></tr>
101
102<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodew1">NodeBrushList</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep10">mSolidBrushes</a></td></tr>
103
104<tr><td colspan=2><br><h2>Friends</h2></td></tr>
105<tr><td class="memItemLeft" nowrap align=right valign=top>class&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNoden0">BspLevel</a></td></tr>
106
107<tr><td class="memItemLeft" nowrap align=right valign=top>std::ostream &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNoden1">operator&lt;&lt;</a> (std::ostream &amp;o, <a class="el" href="classOgre_1_1BspNode.html">BspNode</a> &amp;n)</td></tr>
108
109</table>
110<hr><a name="_details"></a><h2>Detailed Description</h2>
111Encapsulates a node in a BSP tree.
112<p>
113A BSP tree represents space partitioned by planes . The space which is partitioned is either the world (in the case of the root node) or the space derived from their parent node. Each node can have elements which are in front or behind it, which are it's children and these elements can either be further subdivided by planes, or they can be undivided spaces or 'leaf nodes' - these are the nodes which actually contain objects and world geometry.The leaves of the tree are the stopping point of any tree walking algorithm, both for rendering and collision detection etc. <a class="el" href="namespaceOgre.html">Ogre</a> chooses not to represent splitting nodes and leaves as separate structures, but to merge the two for simplicity of the walking algorithm. If a node is a leaf, the <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea3">isLeaf()</a> method returns true and both <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea4">getFront()</a> and <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea5">getBack()</a> return null pointers. If the node is a partitioning plane <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea3">isLeaf()</a> returns false and <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea4">getFront()</a> and <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea5">getBack()</a> will return the corresponding <a class="el" href="classOgre_1_1BspNode.html">BspNode</a> objects.
114<p>
115
116<p>
117Definition at line <a class="el" href="OgreBspNode_8h-source.html#l00048">48</a> of file <a class="el" href="OgreBspNode_8h-source.html">OgreBspNode.h</a>.<hr><h2>Member Typedef Documentation</h2>
118<a class="anchor" name="Ogre_1_1BspNodew0" doxytag="Ogre::BspNode::IntersectingObjectSet" ></a><p>
119<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
120  <tr>
121    <td class="mdRow">
122      <table cellpadding="0" cellspacing="0" border="0">
123        <tr>
124          <td class="md" nowrap valign="top"> typedef std::set&lt;const <a class="el" href="classOgre_1_1MovableObject.html">MovableObject</a>*&gt; <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodew0">Ogre::BspNode::IntersectingObjectSet</a>
125      </table>
126    </td>
127  </tr>
128</table>
129<table cellspacing=5 cellpadding=0 border=0>
130  <tr>
131    <td>
132      &nbsp;
133    </td>
134    <td>
135
136<p>
137
138<p>
139Definition at line <a class="el" href="OgreBspNode_8h-source.html#l00142">142</a> of file <a class="el" href="OgreBspNode_8h-source.html">OgreBspNode.h</a>.
140<p>
141Referenced by <a class="el" href="OgreBspNode_8h-source.html#l00201">getObjects()</a>.    </td>
142  </tr>
143</table>
144<a class="anchor" name="Ogre_1_1BspNodew1" doxytag="Ogre::BspNode::NodeBrushList" ></a><p>
145<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
146  <tr>
147    <td class="mdRow">
148      <table cellpadding="0" cellspacing="0" border="0">
149        <tr>
150          <td class="md" nowrap valign="top"> typedef std::vector&lt;<a class="el" href="structOgre_1_1BspNode_1_1Brush.html">Brush</a>*&gt; <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodew1">Ogre::BspNode::NodeBrushList</a>
151      </table>
152    </td>
153  </tr>
154</table>
155<table cellspacing=5 cellpadding=0 border=0>
156  <tr>
157    <td>
158      &nbsp;
159    </td>
160    <td>
161
162<p>
163
164<p>
165Definition at line <a class="el" href="OgreBspNode_8h-source.html#l00149">149</a> of file <a class="el" href="OgreBspNode_8h-source.html">OgreBspNode.h</a>.    </td>
166  </tr>
167</table>
168<hr><h2>Constructor &amp; Destructor Documentation</h2>
169<a class="anchor" name="Ogre_1_1BspNodea0" doxytag="Ogre::BspNode::BspNode" ></a><p>
170<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
171  <tr>
172    <td class="mdRow">
173      <table cellpadding="0" cellspacing="0" border="0">
174        <tr>
175          <td class="md" nowrap valign="top"> Ogre::BspNode::BspNode </td>
176          <td class="md" valign="top">(&nbsp;</td>
177          <td class="md" nowrap valign="top"><a class="el" href="classOgre_1_1BspLevel.html">BspLevel</a> *&nbsp;</td>
178          <td class="mdname" nowrap> <em>owner</em>, </td>
179        </tr>
180        <tr>
181          <td class="md" nowrap align="right"></td>
182          <td></td>
183          <td class="md" nowrap>bool&nbsp;</td>
184          <td class="mdname" nowrap> <em>isLeaf</em></td>
185        </tr>
186        <tr>
187          <td></td>
188          <td class="md">)&nbsp;</td>
189          <td class="md" colspan="2"></td>
190        </tr>
191
192      </table>
193    </td>
194  </tr>
195</table>
196<table cellspacing=5 cellpadding=0 border=0>
197  <tr>
198    <td>
199      &nbsp;
200    </td>
201    <td>
202
203<p>
204Constructor, only to be used by <a class="el" href="classOgre_1_1BspLevel.html">BspLevel</a>.
205<p>
206    </td>
207  </tr>
208</table>
209<a class="anchor" name="Ogre_1_1BspNodea1" doxytag="Ogre::BspNode::BspNode" ></a><p>
210<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
211  <tr>
212    <td class="mdRow">
213      <table cellpadding="0" cellspacing="0" border="0">
214        <tr>
215          <td class="md" nowrap valign="top"> Ogre::BspNode::BspNode </td>
216          <td class="md" valign="top">(&nbsp;</td>
217          <td class="mdname1" valign="top" nowrap>          </td>
218          <td class="md" valign="top">&nbsp;)&nbsp;</td>
219          <td class="md" nowrap></td>
220        </tr>
221
222      </table>
223    </td>
224  </tr>
225</table>
226<table cellspacing=5 cellpadding=0 border=0>
227  <tr>
228    <td>
229      &nbsp;
230    </td>
231    <td>
232
233<p>
234    </td>
235  </tr>
236</table>
237<a class="anchor" name="Ogre_1_1BspNodea2" doxytag="Ogre::BspNode::~BspNode" ></a><p>
238<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
239  <tr>
240    <td class="mdRow">
241      <table cellpadding="0" cellspacing="0" border="0">
242        <tr>
243          <td class="md" nowrap valign="top"> Ogre::BspNode::~<a class="el" href="classOgre_1_1BspNode.html">BspNode</a> </td>
244          <td class="md" valign="top">(&nbsp;</td>
245          <td class="mdname1" valign="top" nowrap>          </td>
246          <td class="md" valign="top">&nbsp;)&nbsp;</td>
247          <td class="md" nowrap></td>
248        </tr>
249
250      </table>
251    </td>
252  </tr>
253</table>
254<table cellspacing=5 cellpadding=0 border=0>
255  <tr>
256    <td>
257      &nbsp;
258    </td>
259    <td>
260
261<p>
262    </td>
263  </tr>
264</table>
265<hr><h2>Member Function Documentation</h2>
266<a class="anchor" name="Ogre_1_1BspNodea13" doxytag="Ogre::BspNode::_addMovable" ></a><p>
267<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
268  <tr>
269    <td class="mdRow">
270      <table cellpadding="0" cellspacing="0" border="0">
271        <tr>
272          <td class="md" nowrap valign="top"> void Ogre::BspNode::_addMovable </td>
273          <td class="md" valign="top">(&nbsp;</td>
274          <td class="md" nowrap valign="top">const <a class="el" href="classOgre_1_1MovableObject.html">MovableObject</a> *&nbsp;</td>
275          <td class="mdname1" valign="top" nowrap> <em>mov</em>          </td>
276          <td class="md" valign="top">&nbsp;)&nbsp;</td>
277          <td class="md" nowrap></td>
278        </tr>
279
280      </table>
281    </td>
282  </tr>
283</table>
284<table cellspacing=5 cellpadding=0 border=0>
285  <tr>
286    <td>
287      &nbsp;
288    </td>
289    <td>
290
291<p>
292Internal method for telling the node that a movable intersects it.
293<p>
294    </td>
295  </tr>
296</table>
297<a class="anchor" name="Ogre_1_1BspNodea14" doxytag="Ogre::BspNode::_removeMovable" ></a><p>
298<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
299  <tr>
300    <td class="mdRow">
301      <table cellpadding="0" cellspacing="0" border="0">
302        <tr>
303          <td class="md" nowrap valign="top"> void Ogre::BspNode::_removeMovable </td>
304          <td class="md" valign="top">(&nbsp;</td>
305          <td class="md" nowrap valign="top">const <a class="el" href="classOgre_1_1MovableObject.html">MovableObject</a> *&nbsp;</td>
306          <td class="mdname1" valign="top" nowrap> <em>mov</em>          </td>
307          <td class="md" valign="top">&nbsp;)&nbsp;</td>
308          <td class="md" nowrap></td>
309        </tr>
310
311      </table>
312    </td>
313  </tr>
314</table>
315<table cellspacing=5 cellpadding=0 border=0>
316  <tr>
317    <td>
318      &nbsp;
319    </td>
320    <td>
321
322<p>
323Internal method for telling the node that a movable no longer intersects it.
324<p>
325    </td>
326  </tr>
327</table>
328<a class="anchor" name="Ogre_1_1BspNodea5" doxytag="Ogre::BspNode::getBack" ></a><p>
329<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
330  <tr>
331    <td class="mdRow">
332      <table cellpadding="0" cellspacing="0" border="0">
333        <tr>
334          <td class="md" nowrap valign="top"> <a class="el" href="classOgre_1_1BspNode.html">BspNode</a>* Ogre::BspNode::getBack </td>
335          <td class="md" valign="top">(&nbsp;</td>
336          <td class="md" nowrap valign="top">void&nbsp;</td>
337          <td class="mdname1" valign="top" nowrap>          </td>
338          <td class="md" valign="top">&nbsp;)&nbsp;</td>
339          <td class="md" nowrap> const</td>
340        </tr>
341
342      </table>
343    </td>
344  </tr>
345</table>
346<table cellspacing=5 cellpadding=0 border=0>
347  <tr>
348    <td>
349      &nbsp;
350    </td>
351    <td>
352
353<p>
354Returns a pointer to a <a class="el" href="classOgre_1_1BspNode.html">BspNode</a> containing the subspace on the negative side of the splitting plane.
355<p>
356This method should only be called on a splitting node, i.e. where <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea3">isLeaf()</a> returns false. Calling this method on a leaf node will throw an exception.     </td>
357  </tr>
358</table>
359<a class="anchor" name="Ogre_1_1BspNodea9" doxytag="Ogre::BspNode::getBoundingBox" ></a><p>
360<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
361  <tr>
362    <td class="mdRow">
363      <table cellpadding="0" cellspacing="0" border="0">
364        <tr>
365          <td class="md" nowrap valign="top"> const <a class="el" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a>&amp; Ogre::BspNode::getBoundingBox </td>
366          <td class="md" valign="top">(&nbsp;</td>
367          <td class="md" nowrap valign="top">void&nbsp;</td>
368          <td class="mdname1" valign="top" nowrap>          </td>
369          <td class="md" valign="top">&nbsp;)&nbsp;</td>
370          <td class="md" nowrap> const</td>
371        </tr>
372
373      </table>
374    </td>
375  </tr>
376</table>
377<table cellspacing=5 cellpadding=0 border=0>
378  <tr>
379    <td>
380      &nbsp;
381    </td>
382    <td>
383
384<p>
385Returns the axis-aligned box which contains this node if it is a leaf.
386<p>
387This method should only be called on a leaf node. It returns a box which can be used in calls like <a class="el" href="classOgre_1_1Camera.html#Ogre_1_1OctreeCameraa60">Camera::isVisible</a> to determine if the leaf node is visible in the view.     </td>
388  </tr>
389</table>
390<a class="anchor" name="Ogre_1_1BspNodea15" doxytag="Ogre::BspNode::getDistance" ></a><p>
391<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
392  <tr>
393    <td class="mdRow">
394      <table cellpadding="0" cellspacing="0" border="0">
395        <tr>
396          <td class="md" nowrap valign="top"> <a class="el" href="namespaceOgre.html#a465">Real</a> Ogre::BspNode::getDistance </td>
397          <td class="md" valign="top">(&nbsp;</td>
398          <td class="md" nowrap valign="top">const <a class="el" href="classOgre_1_1Vector3.html">Vector3</a> &amp;&nbsp;</td>
399          <td class="mdname1" valign="top" nowrap> <em>pos</em>          </td>
400          <td class="md" valign="top">&nbsp;)&nbsp;</td>
401          <td class="md" nowrap> const</td>
402        </tr>
403
404      </table>
405    </td>
406  </tr>
407</table>
408<table cellspacing=5 cellpadding=0 border=0>
409  <tr>
410    <td>
411      &nbsp;
412    </td>
413    <td>
414
415<p>
416Gets the signed distance to the dividing plane.
417<p>
418    </td>
419  </tr>
420</table>
421<a class="anchor" name="Ogre_1_1BspNodea11" doxytag="Ogre::BspNode::getFaceGroupStart" ></a><p>
422<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
423  <tr>
424    <td class="mdRow">
425      <table cellpadding="0" cellspacing="0" border="0">
426        <tr>
427          <td class="md" nowrap valign="top"> int Ogre::BspNode::getFaceGroupStart </td>
428          <td class="md" valign="top">(&nbsp;</td>
429          <td class="md" nowrap valign="top">void&nbsp;</td>
430          <td class="mdname1" valign="top" nowrap>          </td>
431          <td class="md" valign="top">&nbsp;)&nbsp;</td>
432          <td class="md" nowrap> const</td>
433        </tr>
434
435      </table>
436    </td>
437  </tr>
438</table>
439<table cellspacing=5 cellpadding=0 border=0>
440  <tr>
441    <td>
442      &nbsp;
443    </td>
444    <td>
445
446<p>
447Returns the index to the face group index list for this leaf node.
448<p>
449The contents of this buffer is a list of indexes which point to the actual face groups held in a central buffer in the <a class="el" href="classOgre_1_1BspLevel.html">BspLevel</a> class (in actual fact for efficency the indexes themselves are also held in a single buffer in <a class="el" href="classOgre_1_1BspLevel.html">BspLevel</a> too). The reason for this indirection is that the buffer of indexes to face groups is organised in chunks relative to nodes, whilst the main buffer of face groups may not be. Should only be called on a leaf node.     </td>
450  </tr>
451</table>
452<a class="anchor" name="Ogre_1_1BspNodea4" doxytag="Ogre::BspNode::getFront" ></a><p>
453<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
454  <tr>
455    <td class="mdRow">
456      <table cellpadding="0" cellspacing="0" border="0">
457        <tr>
458          <td class="md" nowrap valign="top"> <a class="el" href="classOgre_1_1BspNode.html">BspNode</a>* Ogre::BspNode::getFront </td>
459          <td class="md" valign="top">(&nbsp;</td>
460          <td class="md" nowrap valign="top">void&nbsp;</td>
461          <td class="mdname1" valign="top" nowrap>          </td>
462          <td class="md" valign="top">&nbsp;)&nbsp;</td>
463          <td class="md" nowrap> const</td>
464        </tr>
465
466      </table>
467    </td>
468  </tr>
469</table>
470<table cellspacing=5 cellpadding=0 border=0>
471  <tr>
472    <td>
473      &nbsp;
474    </td>
475    <td>
476
477<p>
478Returns a pointer to a <a class="el" href="classOgre_1_1BspNode.html">BspNode</a> containing the subspace on the positive side of the splitting plane.
479<p>
480This method should only be called on a splitting node, i.e. where <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea3">isLeaf()</a> returns false. Calling this method on a leaf node will throw an exception.     </td>
481  </tr>
482</table>
483<a class="anchor" name="Ogre_1_1BspNodea7" doxytag="Ogre::BspNode::getNextNode" ></a><p>
484<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
485  <tr>
486    <td class="mdRow">
487      <table cellpadding="0" cellspacing="0" border="0">
488        <tr>
489          <td class="md" nowrap valign="top"> <a class="el" href="classOgre_1_1BspNode.html">BspNode</a>* Ogre::BspNode::getNextNode </td>
490          <td class="md" valign="top">(&nbsp;</td>
491          <td class="md" nowrap valign="top">const <a class="el" href="classOgre_1_1Vector3.html">Vector3</a> &amp;&nbsp;</td>
492          <td class="mdname1" valign="top" nowrap> <em>point</em>          </td>
493          <td class="md" valign="top">&nbsp;)&nbsp;</td>
494          <td class="md" nowrap> const</td>
495        </tr>
496
497      </table>
498    </td>
499  </tr>
500</table>
501<table cellspacing=5 cellpadding=0 border=0>
502  <tr>
503    <td>
504      &nbsp;
505    </td>
506    <td>
507
508<p>
509Gets the next node down in the tree, with the intention of locating the leaf containing the given point.
510<p>
511This method should only be called on a splitting node, i.e. where <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea3">isLeaf()</a> returns false. Calling this method on a leaf node will throw an exception.     </td>
512  </tr>
513</table>
514<a class="anchor" name="Ogre_1_1BspNodea10" doxytag="Ogre::BspNode::getNumFaceGroups" ></a><p>
515<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
516  <tr>
517    <td class="mdRow">
518      <table cellpadding="0" cellspacing="0" border="0">
519        <tr>
520          <td class="md" nowrap valign="top"> int Ogre::BspNode::getNumFaceGroups </td>
521          <td class="md" valign="top">(&nbsp;</td>
522          <td class="md" nowrap valign="top">void&nbsp;</td>
523          <td class="mdname1" valign="top" nowrap>          </td>
524          <td class="md" valign="top">&nbsp;)&nbsp;</td>
525          <td class="md" nowrap> const</td>
526        </tr>
527
528      </table>
529    </td>
530  </tr>
531</table>
532<table cellspacing=5 cellpadding=0 border=0>
533  <tr>
534    <td>
535      &nbsp;
536    </td>
537    <td>
538
539<p>
540Returns the number of faces contained in this leaf node.
541<p>
542Should only be called on a leaf node.     </td>
543  </tr>
544</table>
545<a class="anchor" name="Ogre_1_1BspNodea17" doxytag="Ogre::BspNode::getObjects" ></a><p>
546<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
547  <tr>
548    <td class="mdRow">
549      <table cellpadding="0" cellspacing="0" border="0">
550        <tr>
551          <td class="md" nowrap valign="top"> const <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodew0">IntersectingObjectSet</a>&amp; Ogre::BspNode::getObjects </td>
552          <td class="md" valign="top">(&nbsp;</td>
553          <td class="md" nowrap valign="top">void&nbsp;</td>
554          <td class="mdname1" valign="top" nowrap>          </td>
555          <td class="md" valign="top">&nbsp;)&nbsp;</td>
556          <td class="md" nowrap> const</td>
557        </tr>
558
559      </table>
560    </td>
561  </tr>
562</table>
563<table cellspacing=5 cellpadding=0 border=0>
564  <tr>
565    <td>
566      &nbsp;
567    </td>
568    <td>
569
570<p>
571
572<p>
573Definition at line <a class="el" href="OgreBspNode_8h-source.html#l00201">201</a> of file <a class="el" href="OgreBspNode_8h-source.html">OgreBspNode.h</a>.
574<p>
575References <a class="el" href="OgreBspNode_8h-source.html#l00142">IntersectingObjectSet</a>, and <a class="el" href="OgreBspNode_8h-source.html#l00197">mMovables</a>.    </td>
576  </tr>
577</table>
578<a class="anchor" name="Ogre_1_1BspNodea6" doxytag="Ogre::BspNode::getSide" ></a><p>
579<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
580  <tr>
581    <td class="mdRow">
582      <table cellpadding="0" cellspacing="0" border="0">
583        <tr>
584          <td class="md" nowrap valign="top"> <a class="el" href="classOgre_1_1Plane.html#Ogre_1_1Planew3">Plane::Side</a> Ogre::BspNode::getSide </td>
585          <td class="md" valign="top">(&nbsp;</td>
586          <td class="md" nowrap valign="top">const <a class="el" href="classOgre_1_1Vector3.html">Vector3</a> &amp;&nbsp;</td>
587          <td class="mdname1" valign="top" nowrap> <em>point</em>          </td>
588          <td class="md" valign="top">&nbsp;)&nbsp;</td>
589          <td class="md" nowrap> const</td>
590        </tr>
591
592      </table>
593    </td>
594  </tr>
595</table>
596<table cellspacing=5 cellpadding=0 border=0>
597  <tr>
598    <td>
599      &nbsp;
600    </td>
601    <td>
602
603<p>
604Determines which side of the splitting plane a worldspace point is.
605<p>
606This method should only be called on a splitting node, i.e. where <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea3">isLeaf()</a> returns false. Calling this method on a leaf node will throw an exception.     </td>
607  </tr>
608</table>
609<a class="anchor" name="Ogre_1_1BspNodea16" doxytag="Ogre::BspNode::getSolidBrushes" ></a><p>
610<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
611  <tr>
612    <td class="mdRow">
613      <table cellpadding="0" cellspacing="0" border="0">
614        <tr>
615          <td class="md" nowrap valign="top"> const <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodew1">NodeBrushList</a>&amp; Ogre::BspNode::getSolidBrushes </td>
616          <td class="md" valign="top">(&nbsp;</td>
617          <td class="md" nowrap valign="top">void&nbsp;</td>
618          <td class="mdname1" valign="top" nowrap>          </td>
619          <td class="md" valign="top">&nbsp;)&nbsp;</td>
620          <td class="md" nowrap> const</td>
621        </tr>
622
623      </table>
624    </td>
625  </tr>
626</table>
627<table cellspacing=5 cellpadding=0 border=0>
628  <tr>
629    <td>
630      &nbsp;
631    </td>
632    <td>
633
634<p>
635Get the list of solid Brushes for this node.
636<p>
637<dl compact><dt><b>Remarks:</b></dt><dd>Only applicable for leaf nodes. </dd></dl>
638    </td>
639  </tr>
640</table>
641<a class="anchor" name="Ogre_1_1BspNodea8" doxytag="Ogre::BspNode::getSplitPlane" ></a><p>
642<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
643  <tr>
644    <td class="mdRow">
645      <table cellpadding="0" cellspacing="0" border="0">
646        <tr>
647          <td class="md" nowrap valign="top"> const <a class="el" href="classOgre_1_1Plane.html">Plane</a>&amp; Ogre::BspNode::getSplitPlane </td>
648          <td class="md" valign="top">(&nbsp;</td>
649          <td class="md" nowrap valign="top">void&nbsp;</td>
650          <td class="mdname1" valign="top" nowrap>          </td>
651          <td class="md" valign="top">&nbsp;)&nbsp;</td>
652          <td class="md" nowrap> const</td>
653        </tr>
654
655      </table>
656    </td>
657  </tr>
658</table>
659<table cellspacing=5 cellpadding=0 border=0>
660  <tr>
661    <td>
662      &nbsp;
663    </td>
664    <td>
665
666<p>
667Returns details of the plane which is used to subdivide the space of his node's children.
668<p>
669This method should only be called on a splitting node, i.e. where <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodea3">isLeaf()</a> returns false. Calling this method on a leaf node will throw an exception.     </td>
670  </tr>
671</table>
672<a class="anchor" name="Ogre_1_1BspNodea3" doxytag="Ogre::BspNode::isLeaf" ></a><p>
673<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
674  <tr>
675    <td class="mdRow">
676      <table cellpadding="0" cellspacing="0" border="0">
677        <tr>
678          <td class="md" nowrap valign="top"> bool Ogre::BspNode::isLeaf </td>
679          <td class="md" valign="top">(&nbsp;</td>
680          <td class="md" nowrap valign="top">void&nbsp;</td>
681          <td class="mdname1" valign="top" nowrap>          </td>
682          <td class="md" valign="top">&nbsp;)&nbsp;</td>
683          <td class="md" nowrap> const</td>
684        </tr>
685
686      </table>
687    </td>
688  </tr>
689</table>
690<table cellspacing=5 cellpadding=0 border=0>
691  <tr>
692    <td>
693      &nbsp;
694    </td>
695    <td>
696
697<p>
698Returns true if this node is a leaf (i.e.
699<p>
700contains geometry) or false if it is a splitting plane. A <a class="el" href="classOgre_1_1BspNode.html">BspNode</a> can either be a splitting plane (the typical representation of a BSP node) or an undivided region contining geometry (a leaf node). <a class="el" href="namespaceOgre.html">Ogre</a> represents both using the same class for simplicity of tree walking. However it is important that you use this method to determine which type you are dealing with, since certain methods are only supported with one of the subtypes. Details are given in the individual methods. Note that I could have represented splitting / leaf nodes as a class hierarchy but the virtual methods / run-time type identification would have a performance hit, and it would not make the code much (any?) simpler anyway. I think this is a fair trade-off in this case.     </td>
701  </tr>
702</table>
703<a class="anchor" name="Ogre_1_1BspNodea12" doxytag="Ogre::BspNode::isLeafVisible" ></a><p>
704<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
705  <tr>
706    <td class="mdRow">
707      <table cellpadding="0" cellspacing="0" border="0">
708        <tr>
709          <td class="md" nowrap valign="top"> bool Ogre::BspNode::isLeafVisible </td>
710          <td class="md" valign="top">(&nbsp;</td>
711          <td class="md" nowrap valign="top">const <a class="el" href="classOgre_1_1BspNode.html">BspNode</a> *&nbsp;</td>
712          <td class="mdname1" valign="top" nowrap> <em>leaf</em>          </td>
713          <td class="md" valign="top">&nbsp;)&nbsp;</td>
714          <td class="md" nowrap> const</td>
715        </tr>
716
717      </table>
718    </td>
719  </tr>
720</table>
721<table cellspacing=5 cellpadding=0 border=0>
722  <tr>
723    <td>
724      &nbsp;
725    </td>
726    <td>
727
728<p>
729Determines if the passed in node (must also be a leaf) is visible from this leaf.
730<p>
731Must only be called on a leaf node, and the parameter must also be a leaf node. If this method returns true, then the leaf passed in is visible from this leaf. Note that internally this uses the Potentially Visible Set (PVS) which is precalculated and stored with the BSP level.     </td>
732  </tr>
733</table>
734<hr><h2>Friends And Related Function Documentation</h2>
735<a class="anchor" name="Ogre_1_1BspNoden0" doxytag="Ogre::BspNode::BspLevel" ></a><p>
736<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
737  <tr>
738    <td class="mdRow">
739      <table cellpadding="0" cellspacing="0" border="0">
740        <tr>
741          <td class="md" nowrap valign="top"> friend class <a class="el" href="classOgre_1_1BspLevel.html">BspLevel</a><code> [friend]</code>
742      </table>
743    </td>
744  </tr>
745</table>
746<table cellspacing=5 cellpadding=0 border=0>
747  <tr>
748    <td>
749      &nbsp;
750    </td>
751    <td>
752
753<p>
754
755<p>
756Definition at line <a class="el" href="OgreBspNode_8h-source.html#l00050">50</a> of file <a class="el" href="OgreBspNode_8h-source.html">OgreBspNode.h</a>.    </td>
757  </tr>
758</table>
759<a class="anchor" name="Ogre_1_1BspNoden1" doxytag="Ogre::BspNode::operator<<" ></a><p>
760<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
761  <tr>
762    <td class="mdRow">
763      <table cellpadding="0" cellspacing="0" border="0">
764        <tr>
765          <td class="md" nowrap valign="top"> std::ostream&amp; operator&lt;&lt; </td>
766          <td class="md" valign="top">(&nbsp;</td>
767          <td class="md" nowrap valign="top">std::ostream &amp;&nbsp;</td>
768          <td class="mdname" nowrap> <em>o</em>, </td>
769        </tr>
770        <tr>
771          <td class="md" nowrap align="right"></td>
772          <td></td>
773          <td class="md" nowrap><a class="el" href="classOgre_1_1BspNode.html">BspNode</a> &amp;&nbsp;</td>
774          <td class="mdname" nowrap> <em>n</em></td>
775        </tr>
776        <tr>
777          <td></td>
778          <td class="md">)&nbsp;</td>
779          <td class="md" colspan="2"><code> [friend]</code></td>
780        </tr>
781
782      </table>
783    </td>
784  </tr>
785</table>
786<table cellspacing=5 cellpadding=0 border=0>
787  <tr>
788    <td>
789      &nbsp;
790    </td>
791    <td>
792
793<p>
794    </td>
795  </tr>
796</table>
797<hr><h2>Member Data Documentation</h2>
798<a class="anchor" name="Ogre_1_1BspNodep4" doxytag="Ogre::BspNode::mBack" ></a><p>
799<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
800  <tr>
801    <td class="mdRow">
802      <table cellpadding="0" cellspacing="0" border="0">
803        <tr>
804          <td class="md" nowrap valign="top"> <a class="el" href="classOgre_1_1BspNode.html">BspNode</a>* <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep4">Ogre::BspNode::mBack</a><code> [protected]</code>
805      </table>
806    </td>
807  </tr>
808</table>
809<table cellspacing=5 cellpadding=0 border=0>
810  <tr>
811    <td>
812      &nbsp;
813    </td>
814    <td>
815
816<p>
817Pointer to the node behind this non-leaf node.
818<p>
819
820<p>
821Definition at line <a class="el" href="OgreBspNode_8h-source.html#l00168">168</a> of file <a class="el" href="OgreBspNode_8h-source.html">OgreBspNode.h</a>.    </td>
822  </tr>
823</table>
824<a class="anchor" name="Ogre_1_1BspNodep6" doxytag="Ogre::BspNode::mBounds" ></a><p>
825<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
826  <tr>
827    <td class="mdRow">
828      <table cellpadding="0" cellspacing="0" border="0">
829        <tr>
830          <td class="md" nowrap valign="top"> <a class="el" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a> <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep6">Ogre::BspNode::mBounds</a><code> [protected]</code>
831      </table>
832    </td>
833  </tr>
834</table>
835<table cellspacing=5 cellpadding=0 border=0>
836  <tr>
837    <td>
838      &nbsp;
839    </td>
840    <td>
841
842<p>
843The axis-aligned box which bounds node if it is a leaf.
844<p>
845
846<p>
847Definition at line <a class="el" href="OgreBspNode_8h-source.html#l00185">185</a> of file <a class="el" href="OgreBspNode_8h-source.html">OgreBspNode.h</a>.    </td>
848  </tr>
849</table>
850<a class="anchor" name="Ogre_1_1BspNodep8" doxytag="Ogre::BspNode::mFaceGroupStart" ></a><p>
851<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
852  <tr>
853    <td class="mdRow">
854      <table cellpadding="0" cellspacing="0" border="0">
855        <tr>
856          <td class="md" nowrap valign="top"> int <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep8">Ogre::BspNode::mFaceGroupStart</a><code> [protected]</code>
857      </table>
858    </td>
859  </tr>
860</table>
861<table cellspacing=5 cellpadding=0 border=0>
862  <tr>
863    <td>
864      &nbsp;
865    </td>
866    <td>
867
868<p>
869Index to the part of the main leaf facegroup index buffer(held in BspLevel) for this leaf.
870<p>
871This leaf uses mNumFaceGroups from this pointer onwards. From here you use the index in this buffer to look up the actual face. Note that again for simplicity and bulk memory allocation the face group list itself is allocated by the <a class="el" href="classOgre_1_1BspLevel.html">BspLevel</a> for all nodes, and each leaf node is given a section of it to work on. This saves lots of small memory allocations / deallocations which limits memory fragmentation.
872<p>
873Definition at line <a class="el" href="OgreBspNode_8h-source.html#l00195">195</a> of file <a class="el" href="OgreBspNode_8h-source.html">OgreBspNode.h</a>.    </td>
874  </tr>
875</table>
876<a class="anchor" name="Ogre_1_1BspNodep3" doxytag="Ogre::BspNode::mFront" ></a><p>
877<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
878  <tr>
879    <td class="mdRow">
880      <table cellpadding="0" cellspacing="0" border="0">
881        <tr>
882          <td class="md" nowrap valign="top"> <a class="el" href="classOgre_1_1BspNode.html">BspNode</a>* <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep3">Ogre::BspNode::mFront</a><code> [protected]</code>
883      </table>
884    </td>
885  </tr>
886</table>
887<table cellspacing=5 cellpadding=0 border=0>
888  <tr>
889    <td>
890      &nbsp;
891    </td>
892    <td>
893
894<p>
895Pointer to the node in front of this non-leaf node.
896<p>
897
898<p>
899Definition at line <a class="el" href="OgreBspNode_8h-source.html#l00166">166</a> of file <a class="el" href="OgreBspNode_8h-source.html">OgreBspNode.h</a>.    </td>
900  </tr>
901</table>
902<a class="anchor" name="Ogre_1_1BspNodep1" doxytag="Ogre::BspNode::mIsLeaf" ></a><p>
903<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
904  <tr>
905    <td class="mdRow">
906      <table cellpadding="0" cellspacing="0" border="0">
907        <tr>
908          <td class="md" nowrap valign="top"> bool <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep1">Ogre::BspNode::mIsLeaf</a><code> [protected]</code>
909      </table>
910    </td>
911  </tr>
912</table>
913<table cellspacing=5 cellpadding=0 border=0>
914  <tr>
915    <td>
916      &nbsp;
917    </td>
918    <td>
919
920<p>
921
922<p>
923Definition at line <a class="el" href="OgreBspNode_8h-source.html#l00157">157</a> of file <a class="el" href="OgreBspNode_8h-source.html">OgreBspNode.h</a>.    </td>
924  </tr>
925</table>
926<a class="anchor" name="Ogre_1_1BspNodep9" doxytag="Ogre::BspNode::mMovables" ></a><p>
927<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
928  <tr>
929    <td class="mdRow">
930      <table cellpadding="0" cellspacing="0" border="0">
931        <tr>
932          <td class="md" nowrap valign="top"> <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodew0">IntersectingObjectSet</a> <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep9">Ogre::BspNode::mMovables</a><code> [protected]</code>
933      </table>
934    </td>
935  </tr>
936</table>
937<table cellspacing=5 cellpadding=0 border=0>
938  <tr>
939    <td>
940      &nbsp;
941    </td>
942    <td>
943
944<p>
945
946<p>
947Definition at line <a class="el" href="OgreBspNode_8h-source.html#l00197">197</a> of file <a class="el" href="OgreBspNode_8h-source.html">OgreBspNode.h</a>.
948<p>
949Referenced by <a class="el" href="OgreBspNode_8h-source.html#l00201">getObjects()</a>.    </td>
950  </tr>
951</table>
952<a class="anchor" name="Ogre_1_1BspNodep7" doxytag="Ogre::BspNode::mNumFaceGroups" ></a><p>
953<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
954  <tr>
955    <td class="mdRow">
956      <table cellpadding="0" cellspacing="0" border="0">
957        <tr>
958          <td class="md" nowrap valign="top"> int <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep7">Ogre::BspNode::mNumFaceGroups</a><code> [protected]</code>
959      </table>
960    </td>
961  </tr>
962</table>
963<table cellspacing=5 cellpadding=0 border=0>
964  <tr>
965    <td>
966      &nbsp;
967    </td>
968    <td>
969
970<p>
971Number of face groups in this node if it is a leaf.
972<p>
973
974<p>
975Definition at line <a class="el" href="OgreBspNode_8h-source.html#l00187">187</a> of file <a class="el" href="OgreBspNode_8h-source.html">OgreBspNode.h</a>.    </td>
976  </tr>
977</table>
978<a class="anchor" name="Ogre_1_1BspNodep0" doxytag="Ogre::BspNode::mOwner" ></a><p>
979<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
980  <tr>
981    <td class="mdRow">
982      <table cellpadding="0" cellspacing="0" border="0">
983        <tr>
984          <td class="md" nowrap valign="top"> <a class="el" href="classOgre_1_1BspLevel.html">BspLevel</a>* <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep0">Ogre::BspNode::mOwner</a><code> [protected]</code>
985      </table>
986    </td>
987  </tr>
988</table>
989<table cellspacing=5 cellpadding=0 border=0>
990  <tr>
991    <td>
992      &nbsp;
993    </td>
994    <td>
995
996<p>
997
998<p>
999Definition at line <a class="el" href="OgreBspNode_8h-source.html#l00156">156</a> of file <a class="el" href="OgreBspNode_8h-source.html">OgreBspNode.h</a>.    </td>
1000  </tr>
1001</table>
1002<a class="anchor" name="Ogre_1_1BspNodep10" doxytag="Ogre::BspNode::mSolidBrushes" ></a><p>
1003<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1004  <tr>
1005    <td class="mdRow">
1006      <table cellpadding="0" cellspacing="0" border="0">
1007        <tr>
1008          <td class="md" nowrap valign="top"> <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodew1">NodeBrushList</a> <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep10">Ogre::BspNode::mSolidBrushes</a><code> [protected]</code>
1009      </table>
1010    </td>
1011  </tr>
1012</table>
1013<table cellspacing=5 cellpadding=0 border=0>
1014  <tr>
1015    <td>
1016      &nbsp;
1017    </td>
1018    <td>
1019
1020<p>
1021
1022<p>
1023Definition at line <a class="el" href="OgreBspNode_8h-source.html#l00199">199</a> of file <a class="el" href="OgreBspNode_8h-source.html">OgreBspNode.h</a>.    </td>
1024  </tr>
1025</table>
1026<a class="anchor" name="Ogre_1_1BspNodep2" doxytag="Ogre::BspNode::mSplitPlane" ></a><p>
1027<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1028  <tr>
1029    <td class="mdRow">
1030      <table cellpadding="0" cellspacing="0" border="0">
1031        <tr>
1032          <td class="md" nowrap valign="top"> <a class="el" href="classOgre_1_1Plane.html">Plane</a> <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep2">Ogre::BspNode::mSplitPlane</a><code> [protected]</code>
1033      </table>
1034    </td>
1035  </tr>
1036</table>
1037<table cellspacing=5 cellpadding=0 border=0>
1038  <tr>
1039    <td>
1040      &nbsp;
1041    </td>
1042    <td>
1043
1044<p>
1045The plane which splits space in a non-leaf node.
1046<p>
1047Note that nodes do not allocate the memory for other nodes - for simplicity and bulk-allocation of memory the <a class="el" href="classOgre_1_1BspLevel.html">BspLevel</a> is responsible for assigning enough memory for all nodes in one go.
1048<p>
1049Definition at line <a class="el" href="OgreBspNode_8h-source.html#l00164">164</a> of file <a class="el" href="OgreBspNode_8h-source.html">OgreBspNode.h</a>.    </td>
1050  </tr>
1051</table>
1052<a class="anchor" name="Ogre_1_1BspNodep5" doxytag="Ogre::BspNode::mVisCluster" ></a><p>
1053<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
1054  <tr>
1055    <td class="mdRow">
1056      <table cellpadding="0" cellspacing="0" border="0">
1057        <tr>
1058          <td class="md" nowrap valign="top"> int <a class="el" href="classOgre_1_1BspNode.html#Ogre_1_1BspNodep5">Ogre::BspNode::mVisCluster</a><code> [protected]</code>
1059      </table>
1060    </td>
1061  </tr>
1062</table>
1063<table cellspacing=5 cellpadding=0 border=0>
1064  <tr>
1065    <td>
1066      &nbsp;
1067    </td>
1068    <td>
1069
1070<p>
1071The cluster number of this leaf.
1072<p>
1073Leaf nodes are assigned to 'clusters' of nodes, which are used to group nodes together for visibility testing. There is a lookup table which is used to determine if one cluster of leaves is visible from another cluster. Whilst it would be possible to expand all this out so that each node had a list of pointers to other visible nodes, this would be very expensive in terms of storage (using the cluster method there is a table which is 1-bit squared per cluster, rounded up to the nearest byte obviously, which uses far less space than 4-bytes per linked node per source node). Of course the limitation here is that you have to each leaf in turn to determine if it is visible rather than just following a list, but since this is only done once per frame this is not such a big overhead.
1074<p>
1075Definition at line <a class="el" href="OgreBspNode_8h-source.html#l00182">182</a> of file <a class="el" href="OgreBspNode_8h-source.html">OgreBspNode.h</a>.    </td>
1076  </tr>
1077</table>
1078<hr>The documentation for this class was generated from the following file:<ul>
1079<li><a class="el" href="OgreBspNode_8h-source.html">OgreBspNode.h</a></ul>
1080<hr>
1081<p>
1082Copyright &copy; 2000-2005 by The OGRE Team<br />
1083<!--Creative Commons License--><a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/"><img alt="Creative Commons License" border="0" src="http://creativecommons.org/images/public/somerights20.png"/></a><br/>
1084This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/">Creative Commons Attribution-ShareAlike 2.5 License</a>.<br/>
1085                <!--/Creative Commons License--><!-- <rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
1086                <Work rdf:about="">
1087                        <license rdf:resource="http://creativecommons.org/licenses/by-sa/2.5/" />
1088        <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" />
1089                </Work>
1090                <License rdf:about="http://creativecommons.org/licenses/by-sa/2.5/"><permits rdf:resource="http://web.resource.org/cc/Reproduction"/><permits rdf:resource="http://web.resource.org/cc/Distribution"/><requires rdf:resource="http://web.resource.org/cc/Notice"/><requires rdf:resource="http://web.resource.org/cc/Attribution"/><permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/><requires rdf:resource="http://web.resource.org/cc/ShareAlike"/></License></rdf:RDF> -->
1091
1092Last modified Sun Mar 12 14:46:34 2006
1093</p>
1094</body>
1095</html>
Note: See TracBrowser for help on using the repository browser.