<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 Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a> | <a class="qindex" href="pages.html">Related 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<OptimisedSubMeshGeometry*> <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<SubMeshLodGeometryLink> <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<SubMesh*, SubMeshLodGeometryLinkList*> <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<QueuedSubMesh*> <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<QueuedGeometry*> <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><<span class="keyword">typename</span> T> <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<T>(*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>& 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>& 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>& 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>& 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>& 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>& 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& 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<GeometryBucket*> <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<String, GeometryBucket*> <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>& 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>& 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>& 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<GeometryBucketList></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& 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<String, MaterialBucket*> <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<MaterialBucketMap></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& 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<LODBucket*> <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>& 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>& 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<Real> 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>& 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>& 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>& 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>& 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>& 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>& 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<LODBucketList></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>& 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& 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<uint32, Region*> <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 & 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>& 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>& 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>& point, 00507 <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); 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>& 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>& position, <span class="keyword">const</span> <a class="code" href="classOgre_1_1Quaternion.html">Quaternion</a>& orientation, 00524 <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>& 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<size_t, size_t> <a class="code" href="classOgre_1_1StaticGeometry.html#Ogre_1_1StaticGeometryx0">IndexRemap</a>; 00536 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <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>& remap) 00538 { 00539 remap.clear(); 00540 <span class="keywordflow">for</span> (size_t i = 0; i < 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 -> new index IF oldindex</span> 00545 <span class="comment">// wasn't already there</span> 00546 } 00547 } 00549 <span class="keyword">template</span> <<span class="keyword">typename</span> T> <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>& remap, 00551 size_t numIndexes) 00552 { 00553 <span class="keywordflow">for</span> (size_t i = 0; i < 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<T>(ix->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>& 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>& 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>& position, 00593 <span class="keyword">const</span> <a class="code" href="classOgre_1_1Quaternion.html">Quaternion</a>& orientation = Quaternion::IDENTITY, 00594 <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>& 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>& 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>& 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>& 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>& 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<RegionMap></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>& 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 © 2000-2005 by The OGRE Team<br /> Last modified Wed Feb 23 00:19:14 2005 </p> </body> </html>