Sophie

Sophie

distrib > Mandriva > 10.2 > i586 > media > contrib > by-pkgid > 04e5d8c10ae76748689b4e7f48e0fa33 > files > 856

libogre5-devel-1.0.0-1mdk.i586.rpm

<html>
<head>
<title>OgreStaticGeometry.h Source File - OGRE Documentation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<link type="text/css" rel="stylesheet" href="style.css">
</head>

<body>
<!-- Generated by Doxygen 1.3.6 -->
<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>
<h1>OgreStaticGeometry.h</h1><a href="OgreStaticGeometry_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*</span>
00002 <span class="comment">-----------------------------------------------------------------------------</span>
00003 <span class="comment">This source file is part of OGRE</span>
00004 <span class="comment">(Object-oriented Graphics Rendering Engine)</span>
00005 <span class="comment">For the latest info, see http://www.ogre3d.org/</span>
00006 <span class="comment"></span>
00007 <span class="comment">Copyright (c) 2000-2005 The OGRE Team</span>
00008 <span class="comment">Also see acknowledgements in Readme.html</span>
00009 <span class="comment"></span>
00010 <span class="comment">This program is free software; you can redistribute it and/or modify it under</span>
00011 <span class="comment">the terms of the GNU Lesser General Public License as published by the Free Software</span>
00012 <span class="comment">Foundation; either version 2 of the License, or (at your option) any later</span>
00013 <span class="comment">version.</span>
00014 <span class="comment"></span>
00015 <span class="comment">This program is distributed in the hope that it will be useful, but WITHOUT</span>
00016 <span class="comment">ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS</span>
00017 <span class="comment">FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.</span>
00018 <span class="comment"></span>
00019 <span class="comment">You should have received a copy of the GNU Lesser General Public License along with</span>
00020 <span class="comment">this program; if not, write to the Free Software Foundation, Inc., 59 Temple</span>
00021 <span class="comment">Place - Suite 330, Boston, MA 02111-1307, USA, or go to</span>
00022 <span class="comment">http://www.gnu.org/copyleft/lesser.txt.</span>
00023 <span class="comment">-----------------------------------------------------------------------------</span>
00024 <span class="comment">*/</span>
00025 <span class="preprocessor">#ifndef __StaticGeometry_H__</span>
00026 <span class="preprocessor"></span><span class="preprocessor">#define __StaticGeometry_H__</span>
00027 <span class="preprocessor"></span>
00028 <span class="preprocessor">#include "<a class="code" href="OgrePrerequisites_8h.html">OgrePrerequisites.h</a>"</span>
00029 <span class="preprocessor">#include "<a class="code" href="OgreMovableObject_8h.html">OgreMovableObject.h</a>"</span>
00030 <span class="preprocessor">#include "<a class="code" href="OgreRenderable_8h.html">OgreRenderable.h</a>"</span>
00031 <span class="preprocessor">#include "<a class="code" href="OgreEdgeListBuilder_8h.html">OgreEdgeListBuilder.h</a>"</span>
00032 
00033 <span class="keyword">namespace </span>Ogre {
00034 
<a name="l00107"></a><a class="code" href="classOgre_1_1StaticGeometry.html">00107</a>     <span class="keyword">class </span><a class="code" href="OgrePlatform_8h.html#a13">_OgreExport</a> StaticGeometry
00108     {
00109     <span class="keyword">public</span>:
<a name="l00122"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1OptimisedSubMeshGeometry.html">00122</a>         <span class="keyword">class </span><a class="code" href="classOgre_1_1StaticGeometry_1_1OptimisedSubMeshGeometry.html">OptimisedSubMeshGeometry</a>
00123         {
00124         <span class="keyword">public</span>:
<a name="l00125"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1OptimisedSubMeshGeometry.html#Ogre_1_1StaticGeometry_1_1OptimisedSubMeshGeometrya0">00125</a>             <a class="code" href="classOgre_1_1StaticGeometry_1_1OptimisedSubMeshGeometry.html">OptimisedSubMeshGeometry</a>() :vertexData(0), indexData(0) {}
<a name="l00126"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1OptimisedSubMeshGeometry.html#Ogre_1_1StaticGeometry_1_1OptimisedSubMeshGeometrya1">00126</a>             ~<a class="code" href="classOgre_1_1StaticGeometry_1_1OptimisedSubMeshGeometry.html">OptimisedSubMeshGeometry</a>() 
00127             {
00128                 <span class="keyword">delete</span> vertexData;
00129                 <span class="keyword">delete</span> indexData;
00130             }
<a name="l00131"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1OptimisedSubMeshGeometry.html#Ogre_1_1StaticGeometry_1_1OptimisedSubMeshGeometryo0">00131</a>             <a class="code" href="classOgre_1_1VertexData.html">VertexData</a> *vertexData;
<a name="l00132"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1OptimisedSubMeshGeometry.html#Ogre_1_1StaticGeometry_1_1OptimisedSubMeshGeometryo1">00132</a>             <a class="code" href="classOgre_1_1IndexData.html">IndexData</a> *indexData;
00133         };
<a name="l00134"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw0">00134</a>         <span class="keyword">typedef</span> std::list&lt;OptimisedSubMeshGeometry*&gt; <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw0">OptimisedSubMeshGeometryList</a>;
<a name="l00137"></a><a class="code" href="structOgre_1_1StaticGeometry_1_1SubMeshLodGeometryLink.html">00137</a>         <span class="keyword">struct </span><a class="code" href="structOgre_1_1StaticGeometry_1_1SubMeshLodGeometryLink.html">SubMeshLodGeometryLink</a>
00138         {
<a name="l00139"></a><a class="code" href="structOgre_1_1StaticGeometry_1_1SubMeshLodGeometryLink.html#Ogre_1_1StaticGeometry_1_1SubMeshLodGeometryLinko0">00139</a>             <a class="code" href="classOgre_1_1VertexData.html">VertexData</a>* vertexData;
<a name="l00140"></a><a class="code" href="structOgre_1_1StaticGeometry_1_1SubMeshLodGeometryLink.html#Ogre_1_1StaticGeometry_1_1SubMeshLodGeometryLinko1">00140</a>             <a class="code" href="classOgre_1_1IndexData.html">IndexData</a>* indexData;
00141         };
<a name="l00142"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw1">00142</a>         <span class="keyword">typedef</span> std::vector&lt;SubMeshLodGeometryLink&gt; <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw1">SubMeshLodGeometryLinkList</a>;
<a name="l00143"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw2">00143</a>         <span class="keyword">typedef</span> std::map&lt;SubMesh*, SubMeshLodGeometryLinkList*&gt; <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw2">SubMeshGeometryLookup</a>;
<a name="l00145"></a><a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedSubMesh.html">00145</a>         <span class="keyword">struct </span><a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedSubMesh.html">QueuedSubMesh</a>
00146         {
<a name="l00147"></a><a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedSubMesh.html#Ogre_1_1StaticGeometry_1_1QueuedSubMesho0">00147</a>             <a class="code" href="classOgre_1_1SubMesh.html">SubMesh</a>* submesh;
<a name="l00149"></a><a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedSubMesh.html#Ogre_1_1StaticGeometry_1_1QueuedSubMesho1">00149</a>             <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw1">SubMeshLodGeometryLinkList</a>* geometryLodList;
<a name="l00150"></a><a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedSubMesh.html#Ogre_1_1StaticGeometry_1_1QueuedSubMesho2">00150</a>             <a class="code" href="namespaceOgre.html#a426">String</a> materialName;
<a name="l00151"></a><a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedSubMesh.html#Ogre_1_1StaticGeometry_1_1QueuedSubMesho3">00151</a>             <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> position;
<a name="l00152"></a><a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedSubMesh.html#Ogre_1_1StaticGeometry_1_1QueuedSubMesho4">00152</a>             <a class="code" href="classOgre_1_1Quaternion.html">Quaternion</a> orientation;
<a name="l00153"></a><a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedSubMesh.html#Ogre_1_1StaticGeometry_1_1QueuedSubMesho5">00153</a>             <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> scale;
<a name="l00155"></a><a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedSubMesh.html#Ogre_1_1StaticGeometry_1_1QueuedSubMesho6">00155</a>             <a class="code" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a> worldBounds;
00156         };
<a name="l00157"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw3">00157</a>         <span class="keyword">typedef</span> std::vector&lt;QueuedSubMesh*&gt; <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw3">QueuedSubMeshList</a>;
<a name="l00159"></a><a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedGeometry.html">00159</a>         <span class="keyword">struct </span><a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedGeometry.html">QueuedGeometry</a>
00160         {
<a name="l00161"></a><a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedGeometry.html#Ogre_1_1StaticGeometry_1_1QueuedGeometryo0">00161</a>             <a class="code" href="structOgre_1_1StaticGeometry_1_1SubMeshLodGeometryLink.html">SubMeshLodGeometryLink</a>* geometry;
<a name="l00162"></a><a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedGeometry.html#Ogre_1_1StaticGeometry_1_1QueuedGeometryo1">00162</a>             <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> position;
<a name="l00163"></a><a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedGeometry.html#Ogre_1_1StaticGeometry_1_1QueuedGeometryo2">00163</a>             <a class="code" href="classOgre_1_1Quaternion.html">Quaternion</a> orientation;
<a name="l00164"></a><a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedGeometry.html#Ogre_1_1StaticGeometry_1_1QueuedGeometryo3">00164</a>             <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> scale;
00165         };
<a name="l00166"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw4">00166</a>         <span class="keyword">typedef</span> std::vector&lt;QueuedGeometry*&gt; <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw4">QueuedGeometryList</a>;
00167         
00168         <span class="comment">// forward declarations</span>
00169         <span class="keyword">class </span><a class="code" href="classOgre_1_1StaticGeometry_1_1LODBucket.html">LODBucket</a>;
00170         <span class="keyword">class </span><a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html">MaterialBucket</a>;
00171         <span class="keyword">class </span><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html">Region</a>;
00172 
<a name="l00177"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1GeometryBucket.html">00177</a>         <span class="keyword">class </span><a class="code" href="class__OgreExport.html">_OgreExport</a> GeometryBucket : <span class="keyword">public</span> <a class="code" href="classOgre_1_1Renderable.html">Renderable</a>
00178         {
00179         <span class="keyword">protected</span>:
<a name="l00181"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1GeometryBucket.html#Ogre_1_1StaticGeometry_1_1GeometryBucketp0">00181</a>             <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw4">QueuedGeometryList</a> mQueuedGeometry;
<a name="l00183"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1GeometryBucket.html#Ogre_1_1StaticGeometry_1_1GeometryBucketp1">00183</a>             <a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html">MaterialBucket</a>* mParent;
<a name="l00185"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1GeometryBucket.html#Ogre_1_1StaticGeometry_1_1GeometryBucketp2">00185</a>             <a class="code" href="namespaceOgre.html#a426">String</a> mFormatString;
<a name="l00188"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1GeometryBucket.html#Ogre_1_1StaticGeometry_1_1GeometryBucketp3">00188</a>             <a class="code" href="classOgre_1_1VertexData.html">VertexData</a>* mVertexData;
<a name="l00191"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1GeometryBucket.html#Ogre_1_1StaticGeometry_1_1GeometryBucketp4">00191</a>             <a class="code" href="classOgre_1_1IndexData.html">IndexData</a>* mIndexData;
<a name="l00193"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1GeometryBucket.html#Ogre_1_1StaticGeometry_1_1GeometryBucketp5">00193</a>             HardwareIndexBuffer::IndexType mIndexType;
<a name="l00195"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1GeometryBucket.html#Ogre_1_1StaticGeometry_1_1GeometryBucketp6">00195</a>             size_t mMaxVertexIndex;
00196 
00197             <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;
<a name="l00198"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1GeometryBucket.html#Ogre_1_1StaticGeometry_1_1GeometryBucketb0">00198</a>             <span class="keywordtype">void</span> copyIndexes(<span class="keyword">const</span> T* src, T* dst, size_t count, size_t indexOffset)
00199             {
00200                 <span class="keywordflow">if</span> (indexOffset == 0)
00201                 {
00202                     memcpy(dst, src, <span class="keyword">sizeof</span>(T) * count);
00203                 }
00204                 <span class="keywordflow">else</span>
00205                 {
00206                     <span class="keywordflow">while</span>(count--)
00207                     {
00208                         *dst++ = static_cast&lt;T&gt;(*src++ + indexOffset);
00209                     }
00210                 }
00211             }
00212         <span class="keyword">public</span>:
00213             GeometryBucket(<a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html">MaterialBucket</a>* parent, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>&amp; formatString, 
00214                 <span class="keyword">const</span> <a class="code" href="classOgre_1_1VertexData.html">VertexData</a>* vData, <span class="keyword">const</span> <a class="code" href="classOgre_1_1IndexData.html">IndexData</a>* iData);
00215             <span class="keyword">virtual</span> ~GeometryBucket();
<a name="l00216"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1GeometryBucket.html#Ogre_1_1StaticGeometry_1_1GeometryBucketa2">00216</a>             <a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html">MaterialBucket</a>* getParent(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> mParent; }
<a name="l00218"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1GeometryBucket.html#Ogre_1_1StaticGeometry_1_1GeometryBucketa3">00218</a>             <span class="keyword">const</span> <a class="code" href="classOgre_1_1VertexData.html">VertexData</a>* getVertexData(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mVertexData; }
<a name="l00220"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1GeometryBucket.html#Ogre_1_1StaticGeometry_1_1GeometryBucketa4">00220</a>             <span class="keyword">const</span> <a class="code" href="classOgre_1_1IndexData.html">IndexData</a>* getIndexData(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mIndexData; }
00222             <span class="keyword">const</span> <a class="code" href="classOgre_1_1MaterialPtr.html">MaterialPtr</a>&amp; getMaterial(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
00223             <a class="code" href="classOgre_1_1Technique.html">Technique</a>* getTechnique(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
00224             <span class="keywordtype">void</span> getRenderOperation(<a class="code" href="classOgre_1_1RenderOperation.html">RenderOperation</a>&amp; op);
00225             <span class="keywordtype">void</span> getWorldTransforms(<a class="code" href="classOgre_1_1Matrix4.html">Matrix4</a>* xform) <span class="keyword">const</span>;
00226             <span class="keyword">const</span> <a class="code" href="classOgre_1_1Quaternion.html">Quaternion</a>&amp; getWorldOrientation(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
00227             <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; getWorldPosition(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
00228             <a class="code" href="namespaceOgre.html#a420">Real</a> getSquaredViewDepth(<span class="keyword">const</span> <a class="code" href="classOgre_1_1Camera.html">Camera</a>* cam) <span class="keyword">const</span>;
00229             <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a59">LightList</a>&amp; getLights(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
00230             <span class="keywordtype">bool</span> getCastsShadows(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
00231             
00235             <span class="keywordtype">bool</span> assign(<a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedGeometry.html">QueuedGeometry</a>* qsm);
00237             <span class="keywordtype">void</span> build(<span class="keywordtype">bool</span> stencilShadows);
00239             <span class="keywordtype">void</span> dump(std::ofstream&amp; of) <span class="keyword">const</span>;
00240         };
<a name="l00243"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html">00243</a>         <span class="keyword">class </span><a class="code" href="class__OgreExport.html">_OgreExport</a> MaterialBucket
00244         {
00245         <span class="keyword">public</span>:
<a name="l00247"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html#Ogre_1_1StaticGeometry_1_1MaterialBucketw0">00247</a>             <span class="keyword">typedef</span> std::vector&lt;GeometryBucket*&gt; <a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html#Ogre_1_1StaticGeometry_1_1MaterialBucketw0">GeometryBucketList</a>;
00248         <span class="keyword">protected</span>:
<a name="l00250"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html#Ogre_1_1StaticGeometry_1_1MaterialBucketp0">00250</a>             <a class="code" href="classOgre_1_1StaticGeometry_1_1LODBucket.html">LODBucket</a>* mParent;
<a name="l00252"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html#Ogre_1_1StaticGeometry_1_1MaterialBucketp1">00252</a>             <a class="code" href="namespaceOgre.html#a426">String</a> mMaterialName;
<a name="l00254"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html#Ogre_1_1StaticGeometry_1_1MaterialBucketp2">00254</a>             <a class="code" href="classOgre_1_1MaterialPtr.html">MaterialPtr</a> mMaterial;
<a name="l00256"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html#Ogre_1_1StaticGeometry_1_1MaterialBucketp3">00256</a>             <a class="code" href="classOgre_1_1Technique.html">Technique</a>* mTechnique;
00257 
<a name="l00259"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html#Ogre_1_1StaticGeometry_1_1MaterialBucketp4">00259</a>             <a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html#Ogre_1_1StaticGeometry_1_1MaterialBucketw0">GeometryBucketList</a> mGeometryBucketList;
00260             <span class="comment">// index to current Geometry Buckets for a given geometry format</span>
<a name="l00261"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html#Ogre_1_1StaticGeometry_1_1MaterialBucketx0">00261</a>             <span class="keyword">typedef</span> std::map&lt;String, GeometryBucket*&gt; <a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html#Ogre_1_1StaticGeometry_1_1MaterialBucketx0">CurrentGeometryMap</a>;
<a name="l00262"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html#Ogre_1_1StaticGeometry_1_1MaterialBucketp5">00262</a>             <a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html#Ogre_1_1StaticGeometry_1_1MaterialBucketx0">CurrentGeometryMap</a> mCurrentGeometryMap;
00264             <a class="code" href="namespaceOgre.html#a426">String</a> getGeometryFormatString(<a class="code" href="structOgre_1_1StaticGeometry_1_1SubMeshLodGeometryLink.html">SubMeshLodGeometryLink</a>* geom);
00265             
00266         <span class="keyword">public</span>:
00267             MaterialBucket(<a class="code" href="classOgre_1_1StaticGeometry_1_1LODBucket.html">LODBucket</a>* parent, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>&amp; materialName);
00268             <span class="keyword">virtual</span> ~MaterialBucket();
<a name="l00269"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html#Ogre_1_1StaticGeometry_1_1MaterialBucketa2">00269</a>             <a class="code" href="classOgre_1_1StaticGeometry_1_1LODBucket.html">LODBucket</a>* getParent(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> mParent; }
<a name="l00271"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html#Ogre_1_1StaticGeometry_1_1MaterialBucketa3">00271</a>             <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>&amp; getMaterialName(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mMaterialName; }
00273             <span class="keywordtype">void</span> assign(<a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedGeometry.html">QueuedGeometry</a>* qsm);
00275             <span class="keywordtype">void</span> build(<span class="keywordtype">bool</span> stencilShadows);
00277             <span class="keywordtype">void</span> addRenderables(<a class="code" href="classOgre_1_1RenderQueue.html">RenderQueue</a>* queue, RenderQueueGroupID group, 
00278                 <a class="code" href="namespaceOgre.html#a420">Real</a> camSquaredDist);
<a name="l00280"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html#Ogre_1_1StaticGeometry_1_1MaterialBucketa7">00280</a>             <span class="keyword">const</span> <a class="code" href="classOgre_1_1MaterialPtr.html">MaterialPtr</a>&amp; getMaterial(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mMaterial; }
<a name="l00282"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html#Ogre_1_1StaticGeometry_1_1MaterialBucketw1">00282</a>             <span class="keyword">typedef</span> <a class="code" href="classOgre_1_1VectorIterator.html">VectorIterator&lt;GeometryBucketList&gt;</a> <a class="code" href="classOgre_1_1VectorIterator.html">GeometryIterator</a>;
00284             <a class="code" href="classOgre_1_1VectorIterator.html">GeometryIterator</a> getGeometryIterator(<span class="keywordtype">void</span>);
<a name="l00286"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1MaterialBucket.html#Ogre_1_1StaticGeometry_1_1MaterialBucketa9">00286</a>             <a class="code" href="classOgre_1_1Technique.html">Technique</a>* getCurrentTechnique(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mTechnique; }
00288             <span class="keywordtype">void</span> dump(std::ofstream&amp; of) <span class="keyword">const</span>;
00289         };
<a name="l00295"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1LODBucket.html">00295</a>         <span class="keyword">class </span><a class="code" href="class__OgreExport.html">_OgreExport</a> LODBucket
00296         {
00297         <span class="keyword">public</span>:
<a name="l00299"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1LODBucket.html#Ogre_1_1StaticGeometry_1_1LODBucketw0">00299</a>             <span class="keyword">typedef</span> std::map&lt;String, MaterialBucket*&gt; <a class="code" href="classOgre_1_1StaticGeometry_1_1LODBucket.html#Ogre_1_1StaticGeometry_1_1LODBucketw0">MaterialBucketMap</a>;
00300         <span class="keyword">protected</span>:
<a name="l00302"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1LODBucket.html#Ogre_1_1StaticGeometry_1_1LODBucketp0">00302</a>             <a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html">Region</a>* mParent;
<a name="l00304"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1LODBucket.html#Ogre_1_1StaticGeometry_1_1LODBucketp1">00304</a>             <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> mLod;
<a name="l00306"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1LODBucket.html#Ogre_1_1StaticGeometry_1_1LODBucketp2">00306</a>             <a class="code" href="namespaceOgre.html#a420">Real</a> mSquaredDistance;
<a name="l00308"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1LODBucket.html#Ogre_1_1StaticGeometry_1_1LODBucketp3">00308</a>             <a class="code" href="classOgre_1_1StaticGeometry_1_1LODBucket.html#Ogre_1_1StaticGeometry_1_1LODBucketw0">MaterialBucketMap</a> mMaterialBucketMap;
<a name="l00310"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1LODBucket.html#Ogre_1_1StaticGeometry_1_1LODBucketp4">00310</a>             <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw4">QueuedGeometryList</a> mQueuedGeometryList;
00311         <span class="keyword">public</span>:
00312             LODBucket(<a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html">Region</a>* parent, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> lod, <a class="code" href="namespaceOgre.html#a420">Real</a> lodDist);
00313             <span class="keyword">virtual</span> ~LODBucket();
<a name="l00314"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1LODBucket.html#Ogre_1_1StaticGeometry_1_1LODBucketa2">00314</a>             <a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html">Region</a>* getParent(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> mParent; }
<a name="l00316"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1LODBucket.html#Ogre_1_1StaticGeometry_1_1LODBucketa3">00316</a>             <a class="code" href="namespaceOgre.html#a422">ushort</a> getLod(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mLod; }
<a name="l00318"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1LODBucket.html#Ogre_1_1StaticGeometry_1_1LODBucketa4">00318</a>             <a class="code" href="namespaceOgre.html#a420">Real</a> getSquaredDistance(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mSquaredDistance; }
00320             <span class="keywordtype">void</span> assign(<a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedSubMesh.html">QueuedSubMesh</a>* qsm, <a class="code" href="namespaceOgre.html#a422">ushort</a> atLod);
00322             <span class="keywordtype">void</span> build(<span class="keywordtype">bool</span> stencilShadows);
00324             <span class="keywordtype">void</span> addRenderables(<a class="code" href="classOgre_1_1RenderQueue.html">RenderQueue</a>* queue, RenderQueueGroupID group, 
00325                 <a class="code" href="namespaceOgre.html#a420">Real</a> camSquaredDistance);
<a name="l00327"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1LODBucket.html#Ogre_1_1StaticGeometry_1_1LODBucketw1">00327</a>             <span class="keyword">typedef</span> <a class="code" href="classOgre_1_1MapIterator.html">MapIterator&lt;MaterialBucketMap&gt;</a> <a class="code" href="classOgre_1_1MapIterator.html">MaterialIterator</a>;
00329             <a class="code" href="classOgre_1_1MapIterator.html">MaterialIterator</a> getMaterialIterator(<span class="keywordtype">void</span>);
00331             <span class="keywordtype">void</span> dump(std::ofstream&amp; of) <span class="keyword">const</span>;
00332             
00333         };
<a name="l00342"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html">00342</a>         <span class="keyword">class </span><a class="code" href="class__OgreExport.html">_OgreExport</a> Region : <span class="keyword">public</span> <a class="code" href="classOgre_1_1MovableObject.html">MovableObject</a>
00343         {
00344         <span class="keyword">public</span>:
<a name="l00346"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionw0">00346</a>             <span class="keyword">typedef</span> std::vector&lt;LODBucket*&gt; <a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionw0">LODBucketList</a>;
00347         <span class="keyword">protected</span>:
<a name="l00349"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region_1_1RegionShadowRenderable.html">00349</a>             <span class="keyword">class </span><a class="code" href="class__OgreExport.html">_OgreExport</a> RegionShadowRenderable : <span class="keyword">public</span> <a class="code" href="classOgre_1_1ShadowRenderable.html">ShadowRenderable</a>
00350             {
00351             <span class="keyword">protected</span>:
<a name="l00352"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region_1_1RegionShadowRenderable.html#Ogre_1_1StaticGeometry_1_1Region_1_1RegionShadowRenderablep0">00352</a>                 Region* mParent;
00353                 <span class="comment">// Shared link to position buffer</span>
<a name="l00354"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region_1_1RegionShadowRenderable.html#Ogre_1_1StaticGeometry_1_1Region_1_1RegionShadowRenderablep1">00354</a>                 <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a> mPositionBuffer;
00355                 <span class="comment">// Shared link to w-coord buffer (optional)</span>
<a name="l00356"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region_1_1RegionShadowRenderable.html#Ogre_1_1StaticGeometry_1_1Region_1_1RegionShadowRenderablep2">00356</a>                 <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a> mWBuffer;
00357 
00358             <span class="keyword">public</span>:
00359                 RegionShadowRenderable(Region* parent, 
00360                     <a class="code" href="classOgre_1_1HardwareIndexBufferSharedPtr.html">HardwareIndexBufferSharedPtr</a>* indexBuffer, <span class="keyword">const</span> <a class="code" href="classOgre_1_1VertexData.html">VertexData</a>* vertexData, 
00361                     <span class="keywordtype">bool</span> createSeparateLightCap, <span class="keywordtype">bool</span> isLightCap = <span class="keyword">false</span>);
00362                 ~RegionShadowRenderable();
00364                 <span class="keywordtype">void</span> getWorldTransforms(<a class="code" href="classOgre_1_1Matrix4.html">Matrix4</a>* xform) <span class="keyword">const</span>;
00366                 <span class="keyword">const</span> <a class="code" href="classOgre_1_1Quaternion.html">Quaternion</a>&amp; getWorldOrientation(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
00368                 <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; getWorldPosition(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
<a name="l00369"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region_1_1RegionShadowRenderable.html#Ogre_1_1StaticGeometry_1_1Region_1_1RegionShadowRenderablea5">00369</a>                 <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a> getPositionBuffer(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> mPositionBuffer; }
<a name="l00370"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region_1_1RegionShadowRenderable.html#Ogre_1_1StaticGeometry_1_1Region_1_1RegionShadowRenderablea6">00370</a>                 <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a> getWBuffer(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> mWBuffer; }
00371 
00372             };
<a name="l00374"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp0">00374</a>             StaticGeometry* mParent;
<a name="l00376"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp1">00376</a>             <a class="code" href="namespaceOgre.html#a426">String</a> mName;
<a name="l00378"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp2">00378</a>             <a class="code" href="classOgre_1_1SceneManager.html">SceneManager</a>* mSceneMgr;
<a name="l00380"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp3">00380</a>             <a class="code" href="classOgre_1_1SceneNode.html">SceneNode</a>* mNode;
<a name="l00382"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp4">00382</a>             <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw3">QueuedSubMeshList</a> mQueuedSubMeshes;
<a name="l00384"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp5">00384</a>             <a class="code" href="namespaceOgre.html#a412">uint32</a> mRegionID;
<a name="l00386"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp6">00386</a>             <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> mCentre;
<a name="l00388"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp7">00388</a>             std::vector&lt;Real&gt; mLodSquaredDistances;
<a name="l00390"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp8">00390</a>             <a class="code" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a> mAABB;
<a name="l00392"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp9">00392</a>             <a class="code" href="namespaceOgre.html#a420">Real</a> mBoundingRadius;
<a name="l00394"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp10">00394</a>             <a class="code" href="namespaceOgre.html#a422">ushort</a> mCurrentLod;
<a name="l00396"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp11">00396</a>             <a class="code" href="namespaceOgre.html#a420">Real</a> mCamDistanceSquared;
<a name="l00398"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp12">00398</a>             <a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionw0">LODBucketList</a> mLodBucketList;
<a name="l00400"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp13">00400</a>             <span class="keyword">mutable</span> <a class="code" href="namespaceOgre.html#a59">LightList</a> mLightList;
<a name="l00402"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp14">00402</a>             <span class="keyword">mutable</span> <a class="code" href="namespaceOgre.html#a424">ulong</a> mLightListUpdated;
<a name="l00404"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp15">00404</a>             <span class="keywordtype">bool</span> mBeyondFarDistance;
<a name="l00406"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp16">00406</a>             <a class="code" href="classOgre_1_1EdgeData.html">EdgeData</a>* mEdgeList;
<a name="l00408"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp17">00408</a>             ShadowRenderableList mShadowRenderables;
<a name="l00410"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionp18">00410</a>             <span class="keywordtype">bool</span> mVertexProgramInUse;
00411 
00412 
00413 
00414         <span class="keyword">public</span>:
00415             Region(StaticGeometry* parent, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>&amp; name, <a class="code" href="classOgre_1_1SceneManager.html">SceneManager</a>* mgr, 
00416                 <a class="code" href="namespaceOgre.html#a412">uint32</a> regionID, <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; centre);
00417             <span class="keyword">virtual</span> ~Region();
00418             <span class="comment">// more fields can be added in subclasses</span>
<a name="l00419"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regiona2">00419</a>             StaticGeometry* getParent(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mParent;}
00421             <span class="keywordtype">void</span> assign(<a class="code" href="structOgre_1_1StaticGeometry_1_1QueuedSubMesh.html">QueuedSubMesh</a>* qmesh);
00423             <span class="keywordtype">void</span> build(<span class="keywordtype">bool</span> stencilShadows);
<a name="l00425"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regiona5">00425</a>             <a class="code" href="namespaceOgre.html#a412">uint32</a> getID(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mRegionID; }
<a name="l00427"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regiona6">00427</a>             <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; getCentre(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mCentre; }
00428             <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>&amp; getName(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
00429             <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>&amp; getMovableType(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
00430             <span class="keywordtype">void</span> _notifyCurrentCamera(<a class="code" href="classOgre_1_1Camera.html">Camera</a>* cam);
00431             <span class="keyword">const</span> <a class="code" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a>&amp; getBoundingBox(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
00432             <a class="code" href="namespaceOgre.html#a420">Real</a> getBoundingRadius(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
00433             <span class="keywordtype">void</span> _updateRenderQueue(<a class="code" href="classOgre_1_1RenderQueue.html">RenderQueue</a>* queue);
00434             <span class="keywordtype">bool</span> isVisible(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
00435 
<a name="l00436"></a><a class="code" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regionw1">00436</a>             <span class="keyword">typedef</span> <a class="code" href="classOgre_1_1VectorIterator.html">VectorIterator&lt;LODBucketList&gt;</a> <a class="code" href="classOgre_1_1VectorIterator.html">LODIterator</a>;
00438             <a class="code" href="classOgre_1_1VectorIterator.html">LODIterator</a> getLODIterator(<span class="keywordtype">void</span>);
00440             <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a59">LightList</a>&amp; getLights(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
00442             ShadowRenderableListIterator getShadowVolumeRenderableIterator(
00443                 ShadowTechnique shadowTechnique, <span class="keyword">const</span> <a class="code" href="classOgre_1_1Light.html">Light</a>* light, 
00444                 <a class="code" href="classOgre_1_1HardwareIndexBufferSharedPtr.html">HardwareIndexBufferSharedPtr</a>* indexBuffer, 
00445                 <span class="keywordtype">bool</span> extrudeVertices, <a class="code" href="namespaceOgre.html#a420">Real</a> extrusionDistance, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> flags = 0 );
00447             <a class="code" href="classOgre_1_1EdgeData.html">EdgeData</a>* getEdgeList(<span class="keywordtype">void</span>);
00448 
00449 
00451             <span class="keywordtype">void</span> dump(std::ofstream&amp; of) <span class="keyword">const</span>;
00452             
00453         };
<a name="l00461"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw5">00461</a>         <span class="keyword">typedef</span> std::map&lt;uint32, Region*&gt; <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw5">RegionMap</a>;
00462     <span class="keyword">protected</span>:
00463         <span class="comment">// General state &amp; settings</span>
<a name="l00464"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryp0">00464</a>         <a class="code" href="classOgre_1_1SceneManager.html">SceneManager</a>* mOwner;
<a name="l00465"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryp1">00465</a>         <a class="code" href="namespaceOgre.html#a426">String</a> mName;
<a name="l00466"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryp2">00466</a>         <span class="keywordtype">bool</span> mBuilt;
<a name="l00467"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryp3">00467</a>         <a class="code" href="namespaceOgre.html#a420">Real</a> mUpperDistance;
<a name="l00468"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryp4">00468</a>         <a class="code" href="namespaceOgre.html#a420">Real</a> mSquaredUpperDistance;
<a name="l00469"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryp5">00469</a>         <span class="keywordtype">bool</span> mCastShadows;
<a name="l00470"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryp6">00470</a>         <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> mRegionDimensions;
<a name="l00471"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryp7">00471</a>         <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> mHalfRegionDimensions;
<a name="l00472"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryp8">00472</a>         <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> mOrigin;
<a name="l00473"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryp9">00473</a>         <span class="keywordtype">bool</span> mVisible;
<a name="l00475"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryp10">00475</a>         <a class="code" href="namespaceOgre.html#a668">RenderQueueGroupID</a> mRenderQueueID;
<a name="l00477"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryp11">00477</a>         <span class="keywordtype">bool</span> mRenderQueueIDSet;
00478 
<a name="l00479"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryp12">00479</a>         <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw3">QueuedSubMeshList</a> mQueuedSubMeshes;
00480 
<a name="l00483"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryp13">00483</a>         <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw0">OptimisedSubMeshGeometryList</a> mOptimisedSubMeshGeometryList;
00484 
<a name="l00489"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryp14">00489</a>         <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw2">SubMeshGeometryLookup</a> mSubMeshGeometryLookup;
00490             
<a name="l00492"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryp15">00492</a>         <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw5">RegionMap</a> mRegionMap;
00493 
00497         <span class="keyword">virtual</span> Region* getRegion(<span class="keyword">const</span> <a class="code" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a>&amp; bounds, <span class="keywordtype">bool</span> autoCreate);
00499         <span class="keyword">virtual</span> Region* getRegion(<span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; point, <span class="keywordtype">bool</span> autoCreate);
00501         <span class="keyword">virtual</span> Region* getRegion(<a class="code" href="namespaceOgre.html#a422">ushort</a> x, <a class="code" href="namespaceOgre.html#a422">ushort</a> y, <a class="code" href="namespaceOgre.html#a422">ushort</a> z, <span class="keywordtype">bool</span> autoCreate);
00503         <span class="keyword">virtual</span> Region* getRegion(<a class="code" href="namespaceOgre.html#a412">uint32</a> index);
00506         <span class="keyword">virtual</span> <span class="keywordtype">void</span> getRegionIndexes(<span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; point, 
00507             <a class="code" href="namespaceOgre.html#a422">ushort</a>&amp; x, <a class="code" href="namespaceOgre.html#a422">ushort</a>&amp; y, <a class="code" href="namespaceOgre.html#a422">ushort</a>&amp; z);
00510         <span class="keyword">virtual</span> <a class="code" href="namespaceOgre.html#a412">uint32</a> packIndex(<a class="code" href="namespaceOgre.html#a422">ushort</a> x, <a class="code" href="namespaceOgre.html#a422">ushort</a> y, <a class="code" href="namespaceOgre.html#a422">ushort</a> z);
00513         <span class="keyword">virtual</span> <a class="code" href="namespaceOgre.html#a420">Real</a> getVolumeIntersection(<span class="keyword">const</span> <a class="code" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a>&amp; box,  
00514             <a class="code" href="namespaceOgre.html#a422">ushort</a> x, <a class="code" href="namespaceOgre.html#a422">ushort</a> y, <a class="code" href="namespaceOgre.html#a422">ushort</a> z);
00517         <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a> getRegionBounds(<a class="code" href="namespaceOgre.html#a422">ushort</a> x, <a class="code" href="namespaceOgre.html#a422">ushort</a> y, <a class="code" href="namespaceOgre.html#a422">ushort</a> z);
00520         <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> getRegionCentre(<a class="code" href="namespaceOgre.html#a422">ushort</a> x, <a class="code" href="namespaceOgre.html#a422">ushort</a> y, <a class="code" href="namespaceOgre.html#a422">ushort</a> z);
00522         <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a> calculateBounds(<a class="code" href="classOgre_1_1VertexData.html">VertexData</a>* vertexData, 
00523             <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; position, <span class="keyword">const</span> <a class="code" href="classOgre_1_1Quaternion.html">Quaternion</a>&amp; orientation, 
00524             <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; scale);
00526         <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw1">SubMeshLodGeometryLinkList</a>* determineGeometry(<a class="code" href="classOgre_1_1SubMesh.html">SubMesh</a>* sm);
00528         <span class="keywordtype">void</span> splitGeometry(<a class="code" href="classOgre_1_1VertexData.html">VertexData</a>* vd, <a class="code" href="classOgre_1_1IndexData.html">IndexData</a>* <span class="keywordtype">id</span>, 
00529             <a class="code" href="structOgre_1_1StaticGeometry_1_1SubMeshLodGeometryLink.html">SubMeshLodGeometryLink</a>* targetGeomLink);
00530 
<a name="l00531"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryx0">00531</a>         <span class="keyword">typedef</span> std::map&lt;size_t, size_t&gt; <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryx0">IndexRemap</a>;
00536         <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
<a name="l00537"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryb12">00537</a>         <span class="keywordtype">void</span> buildIndexRemap(T* pBuffer, size_t numIndexes, <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryx0">IndexRemap</a>&amp; remap)
00538         {
00539             remap.clear();
00540             <span class="keywordflow">for</span> (size_t i = 0; i &lt; numIndexes; ++i)
00541             {
00542                 <span class="comment">// use insert since duplicates are silently discarded</span>
00543                 remap.insert(IndexRemap::value_type(*pBuffer++, remap.size()));
00544                 <span class="comment">// this will have mapped oldindex -&gt; new index IF oldindex</span>
00545                 <span class="comment">// wasn't already there</span>
00546             }
00547         }
00549         <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
<a name="l00550"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryb13">00550</a>         <span class="keywordtype">void</span> remapIndexes(T* src, T* dst, <span class="keyword">const</span> <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryx0">IndexRemap</a>&amp; remap, 
00551                 size_t numIndexes)
00552         {
00553             <span class="keywordflow">for</span> (size_t i = 0; i &lt; numIndexes; ++i)
00554             {
00555                 <span class="comment">// look up original and map to target</span>
00556                 IndexRemap::const_iterator ix = remap.find(*src++);
00557                 assert(ix != remap.end());
00558                 *dst++ = static_cast&lt;T&gt;(ix-&gt;second);
00559             }
00560         }
00561         
00562     <span class="keyword">public</span>:
00564         StaticGeometry(<a class="code" href="classOgre_1_1SceneManager.html">SceneManager</a>* owner, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>&amp; name);
00566         <span class="keyword">virtual</span> ~StaticGeometry();
00567 
<a name="l00569"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometrya2">00569</a>         <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>&amp; getName(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mName; }
00576 
00592         <span class="keyword">virtual</span> <span class="keywordtype">void</span> addEntity(<a class="code" href="classOgre_1_1Entity.html">Entity</a>* ent, <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; position,
00593             <span class="keyword">const</span> <a class="code" href="classOgre_1_1Quaternion.html">Quaternion</a>&amp; orientation = Quaternion::IDENTITY, 
00594             <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; scale = Vector3::UNIT_SCALE);
00595 
00614         <span class="keyword">virtual</span> <span class="keywordtype">void</span> addSceneNode(<span class="keyword">const</span> <a class="code" href="classOgre_1_1SceneNode.html">SceneNode</a>* node);
00615 
00626         <span class="keyword">virtual</span> <span class="keywordtype">void</span> build(<span class="keywordtype">void</span>);
00627 
00633         <span class="keyword">virtual</span> <span class="keywordtype">void</span> destroy(<span class="keywordtype">void</span>);
00634 
00638         <span class="keyword">virtual</span> <span class="keywordtype">void</span> reset(<span class="keywordtype">void</span>);
00639 
<a name="l00649"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometrya8">00649</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> setRenderingDistance(<a class="code" href="namespaceOgre.html#a420">Real</a> dist) { 
00650             mUpperDistance = dist; 
00651             mSquaredUpperDistance = mUpperDistance * mUpperDistance;
00652         }
00653 
<a name="l00655"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometrya9">00655</a>         <span class="keyword">virtual</span> <a class="code" href="namespaceOgre.html#a420">Real</a> getRenderingDistance(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mUpperDistance; }
00656 
<a name="l00658"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometrya10">00658</a>         <span class="keyword">virtual</span> <a class="code" href="namespaceOgre.html#a420">Real</a> getSquaredRenderingDistance(<span class="keywordtype">void</span>)<span class="keyword"> const </span>
00659 <span class="keyword">        </span>{ <span class="keywordflow">return</span> mSquaredUpperDistance; }
00660 
00662         <span class="keyword">virtual</span> <span class="keywordtype">void</span> setVisible(<span class="keywordtype">bool</span> visible);
00663 
<a name="l00665"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometrya12">00665</a>         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isVisible(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mVisible; }
00666 
00684         <span class="keyword">virtual</span> <span class="keywordtype">void</span> setCastShadows(<span class="keywordtype">bool</span> castShadows);
<a name="l00686"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometrya14">00686</a>         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> getCastShadows(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> mCastShadows; }
00687 
<a name="l00698"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometrya15">00698</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> setRegionDimensions(<span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; size) { 
00699             mRegionDimensions = size; 
00700             mHalfRegionDimensions = size * 0.5;
00701         }
<a name="l00703"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometrya16">00703</a>         <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; getRegionDimensions(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mRegionDimensions; }
<a name="l00715"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometrya17">00715</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> setOrigin(<span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; origin) { mOrigin = origin; }
<a name="l00717"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometrya18">00717</a>         <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; getOrigin(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mOrigin; }
00718 
00730         <span class="keyword">virtual</span> <span class="keywordtype">void</span> setRenderQueueGroup(RenderQueueGroupID queueID);
00731 
00733         <span class="keyword">virtual</span> <a class="code" href="namespaceOgre.html#a668">RenderQueueGroupID</a> getRenderQueueGroup(<span class="keywordtype">void</span>) <span class="keyword">const</span>;
00734         
<a name="l00736"></a><a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryw6">00736</a>         <span class="keyword">typedef</span> <a class="code" href="classOgre_1_1MapIterator.html">MapIterator&lt;RegionMap&gt;</a> <a class="code" href="classOgre_1_1MapIterator.html">RegionIterator</a>;
00738         <a class="code" href="classOgre_1_1MapIterator.html">RegionIterator</a> getRegionIterator(<span class="keywordtype">void</span>);
00739 
00743         <span class="keyword">virtual</span> <span class="keywordtype">void</span> dump(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>&amp; filename) <span class="keyword">const</span>;
00744 
00745 
00746     };
00747 
00748 }
00749 
00750 <span class="preprocessor">#endif</span>
00751 <span class="preprocessor"></span>
</pre></div><p>
Copyright &copy; 2000-2005 by The OGRE Team<br />
Last modified Wed Feb 23 00:19:14 2005
</p>
</body>
</html>