Sophie

Sophie

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

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

<html>
<head>
<title>OgreTerrainRenderable.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>OgreTerrainRenderable.h</h1><a href="OgreTerrainRenderable_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="comment">/***************************************************************************</span>
00026 <span class="comment">terrainrenderable.h  -  description</span>
00027 <span class="comment">-------------------</span>
00028 <span class="comment">begin                : Sat Oct 5 2002</span>
00029 <span class="comment">copyright            : (C) 2002 by Jon Anderson</span>
00030 <span class="comment">email                : janders@users.sf.net</span>
00031 <span class="comment"></span>
00032 <span class="comment">Enhancements 2003 - 2004 (C) The OGRE Team</span>
00033 <span class="comment"></span>
00034 <span class="comment">***************************************************************************/</span>
00035 
00036 <span class="preprocessor">#ifndef TERRAINRENDERABLE_H</span>
00037 <span class="preprocessor"></span><span class="preprocessor">#define TERRAINRENDERABLE_H</span>
00038 <span class="preprocessor"></span>
00039 <span class="preprocessor">#include "<a class="code" href="OgreTerrainPrerequisites_8h.html">OgreTerrainPrerequisites.h</a>"</span>
00040 <span class="preprocessor">#include &lt;<a class="code" href="OgreRenderable_8h.html">OgreRenderable.h</a>&gt;</span>
00041 <span class="preprocessor">#include &lt;<a class="code" href="OgreMovableObject_8h.html">OgreMovableObject.h</a>&gt;</span>
00042 <span class="preprocessor">#include &lt;<a class="code" href="OgreAxisAlignedBox_8h.html">OgreAxisAlignedBox.h</a>&gt;</span>
00043 <span class="preprocessor">#include &lt;<a class="code" href="OgreString_8h.html">OgreString.h</a>&gt;</span>
00044 <span class="preprocessor">#include &lt;<a class="code" href="OgreHardwareBufferManager_8h.html">OgreHardwareBufferManager.h</a>&gt;</span>
00045 
00046 <span class="preprocessor">#include &lt;vector&gt;</span>
00047 
<a name="l00048"></a><a class="code" href="OgreTerrainRenderable_8h.html#a0">00048</a> <span class="preprocessor">#define MORPH_CUSTOM_PARAM_ID 77</span>
00049 <span class="preprocessor"></span>
00050 <span class="keyword">namespace </span>Ogre
00051 {
00052 
<a name="l00053"></a><a class="code" href="namespaceOgre.html#a561">00053</a>     <span class="keyword">typedef</span> std::map &lt;unsigned int, IndexData* &gt; <a class="code" href="namespaceOgre.html#a561">IndexMap</a>;
<a name="l00054"></a><a class="code" href="namespaceOgre.html#a562">00054</a>     <span class="keyword">typedef</span> std::vector &lt; IndexData* &gt; <a class="code" href="namespaceOgre.html#a562">IndexArray</a>;
<a name="l00055"></a><a class="code" href="namespaceOgre.html#a563">00055</a>     <span class="keyword">typedef</span> std::vector &lt; IndexMap* &gt; <a class="code" href="namespaceOgre.html#a563">LevelArray</a>;
00056 
<a name="l00061"></a><a class="code" href="classOgre_1_1TerrainBufferCache.html">00061</a>     <span class="keyword">class </span><a class="code" href="classOgre_1_1TerrainBufferCache.html">TerrainBufferCache</a>
00062     {
00063     <span class="keyword">public</span>:
<a name="l00064"></a><a class="code" href="classOgre_1_1TerrainBufferCache.html#Ogre_1_1TerrainBufferCachea0">00064</a>         <span class="keywordtype">void</span> <a class="code" href="classOgre_1_1TerrainBufferCache.html#Ogre_1_1TerrainBufferCachea0">shutdown</a>(<span class="keywordtype">void</span>)
00065         {
00066             <span class="keywordflow">for</span>( size_t i=0; i&lt;<a class="code" href="classOgre_1_1TerrainBufferCache.html#Ogre_1_1TerrainBufferCacheo0">mCache</a>.size(); i++ )
00067             {
00068                 <span class="keyword">delete</span> <a class="code" href="classOgre_1_1TerrainBufferCache.html#Ogre_1_1TerrainBufferCacheo0">mCache</a>[i];
00069             }
00070             <a class="code" href="classOgre_1_1TerrainBufferCache.html#Ogre_1_1TerrainBufferCacheo0">mCache</a>.clear();
00071         }
<a name="l00072"></a><a class="code" href="classOgre_1_1TerrainBufferCache.html#Ogre_1_1TerrainBufferCachea1">00072</a>         <a class="code" href="classOgre_1_1TerrainBufferCache.html#Ogre_1_1TerrainBufferCachea1">~TerrainBufferCache</a>()
00073         {
00074             <a class="code" href="classOgre_1_1TerrainBufferCache.html#Ogre_1_1TerrainBufferCachea0">shutdown</a>();
00075         }
00076 
<a name="l00077"></a><a class="code" href="classOgre_1_1TerrainBufferCache.html#Ogre_1_1TerrainBufferCacheo0">00077</a>         <a class="code" href="namespaceOgre.html#a562">IndexArray</a> <a class="code" href="classOgre_1_1TerrainBufferCache.html#Ogre_1_1TerrainBufferCacheo0">mCache</a>;
00078     };
00079 
<a name="l00080"></a><a class="code" href="namespaceOgre.html#a620">00080</a>     <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a420">Real</a> <a class="code" href="namespaceOgre.html#a620">_max</a>( <a class="code" href="namespaceOgre.html#a420">Real</a> x, <a class="code" href="namespaceOgre.html#a420">Real</a> y )
00081     {
00082         <span class="keywordflow">return</span> ( x &gt; y ) ? x : y;
00083     }
00084 
<a name="l00088"></a><a class="code" href="classOgre_1_1TerrainOptions.html">00088</a>     <span class="keyword">class </span><a class="code" href="classOgre_1_1TerrainOptions.html">TerrainOptions</a>
00089     {
00090     <span class="keyword">public</span>:
<a name="l00091"></a><a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionsa0">00091</a>         <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionsa0">TerrainOptions</a>()
00092         {
00093             <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso0">pageSize</a> = 0;
00094             <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso1">tileSize</a> = 0;
00095             tilesPerPage = 0;
00096             <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso4">maxGeoMipMapLevel</a> = 0;
00097             scale = Vector3::UNIT_SCALE;
00098             <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso6">maxPixelError</a> = 4;
00099             <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso8">detailTile</a> = 1;
00100             <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso11">lit</a> = <span class="keyword">false</span>;
00101             <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso12">coloured</a> = <span class="keyword">false</span>;
00102             <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso9">lodMorph</a> = <span class="keyword">false</span>;
00103             <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso10">lodMorphStart</a> = 0.5;
00104             <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso7">useTriStrips</a> = <span class="keyword">false</span>;
00105             <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso3">primaryCamera</a> = 0;
00106             <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso13">terrainMaterial</a>.<a class="code" href="classOgre_1_1SharedPtr.html#Ogre_1_1SharedPtra14">setNull</a>();
00107         };
<a name="l00109"></a><a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso0">00109</a>         size_t <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso0">pageSize</a>;
<a name="l00111"></a><a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso1">00111</a>         size_t <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso1">tileSize</a>; 
<a name="l00113"></a><a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso2">00113</a>         size_t tilesPerPage;
<a name="l00115"></a><a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso3">00115</a>         <span class="keyword">const</span> <a class="code" href="classOgre_1_1Camera.html">Camera</a>* <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso3">primaryCamera</a>;
<a name="l00117"></a><a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso4">00117</a>         size_t <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso4">maxGeoMipMapLevel</a>;
<a name="l00120"></a><a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso5">00120</a>         <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> scale;
<a name="l00122"></a><a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso6">00122</a>         size_t <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso6">maxPixelError</a>;
<a name="l00124"></a><a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso7">00124</a>         <span class="keywordtype">bool</span> <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso7">useTriStrips</a>;
<a name="l00126"></a><a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso8">00126</a>         size_t <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso8">detailTile</a>;
<a name="l00128"></a><a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso9">00128</a>         <span class="keywordtype">bool</span> <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso9">lodMorph</a>;
<a name="l00130"></a><a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso10">00130</a>         <a class="code" href="namespaceOgre.html#a420">Real</a> <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso10">lodMorphStart</a>;
<a name="l00132"></a><a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso11">00132</a>         <span class="keywordtype">bool</span> <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso11">lit</a>;
<a name="l00134"></a><a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso12">00134</a>         <span class="keywordtype">bool</span> <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso12">coloured</a>;
<a name="l00136"></a><a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso13">00136</a>         <a class="code" href="classOgre_1_1MaterialPtr.html">MaterialPtr</a> <a class="code" href="classOgre_1_1TerrainOptions.html#Ogre_1_1TerrainOptionso13">terrainMaterial</a>;
00137 
00138     };
00139 
<a name="l00140"></a><a class="code" href="OgreTerrainRenderable_8h.html#a1">00140</a> <span class="preprocessor">#define STITCH_NORTH_SHIFT 0</span>
<a name="l00141"></a><a class="code" href="OgreTerrainRenderable_8h.html#a2">00141</a> <span class="preprocessor"></span><span class="preprocessor">#define STITCH_SOUTH_SHIFT 8</span>
<a name="l00142"></a><a class="code" href="OgreTerrainRenderable_8h.html#a3">00142</a> <span class="preprocessor"></span><span class="preprocessor">#define STITCH_WEST_SHIFT  16</span>
<a name="l00143"></a><a class="code" href="OgreTerrainRenderable_8h.html#a4">00143</a> <span class="preprocessor"></span><span class="preprocessor">#define STITCH_EAST_SHIFT  24</span>
00144 <span class="preprocessor"></span>
<a name="l00145"></a><a class="code" href="OgreTerrainRenderable_8h.html#a5">00145</a> <span class="preprocessor">#define STITCH_NORTH  128 &lt;&lt; STITCH_NORTH_SHIFT</span>
<a name="l00146"></a><a class="code" href="OgreTerrainRenderable_8h.html#a6">00146</a> <span class="preprocessor"></span><span class="preprocessor">#define STITCH_SOUTH  128 &lt;&lt; STITCH_SOUTH_SHIFT</span>
<a name="l00147"></a><a class="code" href="OgreTerrainRenderable_8h.html#a7">00147</a> <span class="preprocessor"></span><span class="preprocessor">#define STITCH_WEST   128 &lt;&lt; STITCH_WEST_SHIFT</span>
<a name="l00148"></a><a class="code" href="OgreTerrainRenderable_8h.html#a8">00148</a> <span class="preprocessor"></span><span class="preprocessor">#define STITCH_EAST   128 &lt;&lt; STITCH_EAST_SHIFT</span>
00149 <span class="preprocessor"></span>
<a name="l00158"></a><a class="code" href="classOgre_1_1TerrainRenderable.html">00158</a>     <span class="keyword">class </span><a class="code" href="OgreTerrainPrerequisites_8h.html#a0">_OgreTerrainExport</a> TerrainRenderable : <span class="keyword">public</span> <a class="code" href="classOgre_1_1Renderable.html">Renderable</a>, <span class="keyword">public</span> <a class="code" href="classOgre_1_1MovableObject.html">MovableObject</a>
00159     {
00160     <span class="keyword">public</span>:
00161 
00162         TerrainRenderable(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>&amp; name);
00163         ~TerrainRenderable();
00164 
00165         <span class="keywordtype">void</span> deleteGeometry();
00166 
<a name="l00167"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablew5">00167</a>         <span class="keyword">enum</span> Neighbor
00168         {
00169             NORTH = 0,
00170             SOUTH = 1,
00171             EAST = 2,
00172             WEST = 3,
00173             HERE = 4
00174         };
00175 
00182         <span class="keywordtype">void</span> initialise(<span class="keywordtype">int</span> startx, <span class="keywordtype">int</span> startz, <a class="code" href="namespaceOgre.html#a420">Real</a>* pageHeightData);
00183 
00184         <span class="comment">//movable object methods</span>
<a name="l00186"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablea4">00186</a> <span class="comment"></span>        <span class="keyword">virtual</span> <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>
00187 <span class="keyword">        </span>{
00188             <span class="keywordflow">return</span> mName;
00189         };
00190 
<a name="l00192"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablea5">00192</a>         <span class="keyword">virtual</span> <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>
00193 <span class="keyword">        </span>{
00194             <span class="keywordflow">return</span> mType;
00195         };
00196 
<a name="l00198"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablea6">00198</a>         <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>
00199 <span class="keyword">        </span>{
00200             <span class="keywordflow">return</span> mBounds;
00201         };
00202 
00204         <span class="keyword">virtual</span> <span class="keywordtype">void</span> _notifyCurrentCamera( <a class="code" href="classOgre_1_1Camera.html">Camera</a>* cam );
00205 
00206         <span class="keyword">virtual</span> <span class="keywordtype">void</span> _updateRenderQueue( <a class="code" href="classOgre_1_1RenderQueue.html">RenderQueue</a>* queue );
00207 
00214         <span class="keyword">virtual</span> <span class="keywordtype">void</span> getRenderOperation( <a class="code" href="classOgre_1_1RenderOperation.html">RenderOperation</a>&amp; rend );
00215 
<a name="l00216"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablea10">00216</a>         <span class="keyword">virtual</span> <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>
00217 <span class="keyword">        </span>{
00218             <span class="keywordflow">return</span> mMaterial;
00219         };
00220 
00221         <span class="keyword">virtual</span> <span class="keywordtype">void</span> getWorldTransforms( <a class="code" href="classOgre_1_1Matrix4.html">Matrix4</a>* xform ) <span class="keyword">const</span>;
00222 
00223         <span class="keyword">virtual</span> <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>;
00224         <span class="keyword">virtual</span> <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>;
00225 
<a name="l00227"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablea14">00227</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> getRenderLevel()<span class="keyword"> const</span>
00228 <span class="keyword">        </span>{
00229             <span class="keywordflow">return</span> mRenderLevel;
00230         };
00231 
<a name="l00233"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablea15">00233</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> setForcedRenderLevel( <span class="keywordtype">int</span> i )
00234         {
00235             mForcedRenderLevel = i;
00236         }
00237 
00239         <span class="keywordtype">void</span> _getNormalAt( <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> * result );
00240 
00242         <span class="keywordtype">float</span> getHeightAt( <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y );
00243 
00246         <span class="keywordtype">bool</span> intersectSegment( <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> &amp; start, <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> &amp; end, <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> * result );
00247 
<a name="l00251"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablea19">00251</a>         <span class="keywordtype">void</span> _setNeighbor( Neighbor n, TerrainRenderable *t )
00252         {
00253             mNeighbors[ n ] = t;
00254         };
00255 
<a name="l00258"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablea20">00258</a>         TerrainRenderable * _getNeighbor( Neighbor n )
00259         {
00260             <span class="keywordflow">return</span> mNeighbors[ n ];
00261         }
00262 
00263 
<a name="l00264"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablea21">00264</a>         <span class="keywordtype">void</span> setMaterial(<span class="keyword">const</span> <a class="code" href="classOgre_1_1MaterialPtr.html">MaterialPtr</a>&amp; m )
00265         {
00266             mMaterial = m;
00267         };
00268 
00270         <span class="keywordtype">void</span> _calculateNormals();
00271 
00272 
00273 
00274 
00277         <span class="keywordtype">void</span> _generateVertexLighting( <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> &amp;sun, <a class="code" href="classOgre_1_1ColourValue.html">ColourValue</a> ambient );
00278 
00279 
00281         <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>;
00282 
<a name="l00284"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablea25">00284</a>         <a class="code" href="namespaceOgre.html#a420">Real</a> getBoundingRadius(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 0; <span class="comment">/* not needed */</span> }
00285 
00287         <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>;
00288 
00290         <span class="keywordtype">void</span> _updateCustomGpuParameter(
00291             <span class="keyword">const</span> <a class="code" href="classOgre_1_1GpuProgramParameters_1_1AutoConstantEntry.html">GpuProgramParameters::AutoConstantEntry</a>&amp; constantEntry,
00292             <a class="code" href="classOgre_1_1GpuProgramParameters.html">GpuProgramParameters</a>* <a class="code" href="OgreGLPrerequisites_8h.html#a72">params</a>) <span class="keyword">const</span>;
<a name="l00294"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablee0">00294</a>         <span class="keyword">static</span> <a class="code" href="classOgre_1_1TerrainBufferCache.html">TerrainBufferCache</a>&amp; _getIndexCache(<span class="keywordtype">void</span>) {<span class="keywordflow">return</span> msIndexCache;}
00295     <span class="keyword">protected</span>:
<a name="l00297"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablet0">00297</a>         <span class="keyword">static</span> <a class="code" href="classOgre_1_1TerrainBufferCache.html">TerrainBufferCache</a> msIndexCache;
<a name="l00299"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablet1">00299</a>         <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classOgre_1_1TerrainOptions.html">TerrainOptions</a>* msOptions;
00300 
<a name="l00302"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderableb0">00302</a>         <span class="keyword">inline</span> size_t _index( <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> z )<span class="keyword"> const</span>
00303 <span class="keyword">        </span>{
00304             <span class="keywordflow">return</span> ( x + z * msOptions-&gt;tileSize );
00305         };
00306 
<a name="l00308"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderableb1">00308</a>         <span class="keyword">inline</span> <span class="keywordtype">float</span> _vertex( <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> z, <span class="keywordtype">int</span> n )
00309         {
00310             <span class="keywordflow">return</span> mPositionBuffer[x * 3 + z * msOptions-&gt;tileSize * 3 + n];
00311         };
00312 
00313 
<a name="l00314"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderableb2">00314</a>         <span class="keyword">inline</span> <span class="keywordtype">int</span> _numNeighbors()<span class="keyword"> const</span>
00315 <span class="keyword">        </span>{
00316             <span class="keywordtype">int</span> n = 0;
00317 
00318             <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i = 0; i &lt; 4; i++ )
00319             {
00320                 <span class="keywordflow">if</span> ( mNeighbors[ i ] != 0 )
00321                     n++;
00322             }
00323 
00324             <span class="keywordflow">return</span> n;
00325         }
00326 
<a name="l00327"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderableb3">00327</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> _hasNeighborRenderLevel( <span class="keywordtype">int</span> i )<span class="keyword"> const</span>
00328 <span class="keyword">        </span>{
00329             <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> j = 0; j &lt; 4; j++ )
00330             {
00331                 <span class="keywordflow">if</span> ( mNeighbors[ j ] != 0 &amp;&amp; mNeighbors[ j ] -&gt;mRenderLevel == i )
00332                     <span class="keywordflow">return</span> <span class="keyword">true</span>;
00333             }
00334 
00335             <span class="keywordflow">return</span> <span class="keyword">false</span>;
00336 
00337         }
00338 
00339         <span class="keywordtype">void</span> _adjustRenderLevel( <span class="keywordtype">int</span> i );
00340 
00341         <span class="keywordtype">void</span> _initLevelIndexes();
00342         <span class="keywordtype">void</span> _destroyLevelIndexes();
00343 
00344         <span class="keywordtype">bool</span> _checkSize( <span class="keywordtype">int</span> n );
00345 
00346         <span class="keywordtype">void</span> _calculateMinLevelDist2( <a class="code" href="namespaceOgre.html#a420">Real</a> C );
00347 
00348         <a class="code" href="namespaceOgre.html#a420">Real</a> _calculateCFactor();
00349 
<a name="l00350"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablep0">00350</a>         <a class="code" href="classOgre_1_1VertexData.html">VertexData</a>* mTerrain;
00351 
<a name="l00353"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablep1">00353</a>         <span class="keywordtype">int</span> mRenderLevel;
<a name="l00355"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablep2">00355</a>         <span class="keywordtype">int</span> mLastNextLevel; 
<a name="l00357"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablep3">00357</a>         <a class="code" href="namespaceOgre.html#a420">Real</a> mLODMorphFactor;
<a name="l00359"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablep4">00359</a>         <a class="code" href="namespaceOgre.html#a420">Real</a> *mMinLevelDistSqr;
<a name="l00361"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablep5">00361</a>         TerrainRenderable *mNeighbors [ 4 ];
<a name="l00363"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablep6">00363</a>         <a class="code" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a> mBounds;
<a name="l00365"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablep7">00365</a>         <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> mCenter;
<a name="l00367"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablep8">00367</a>         <a class="code" href="namespaceOgre.html#a426">String</a> mName;
<a name="l00369"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablet2">00369</a>         <span class="keyword">static</span> <a class="code" href="namespaceOgre.html#a426">String</a> mType;
<a name="l00371"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablep9">00371</a>         <a class="code" href="classOgre_1_1MaterialPtr.html">MaterialPtr</a> mMaterial;    
<a name="l00373"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablep10">00373</a>         <span class="keywordtype">bool</span> mInit;
<a name="l00375"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablet3">00375</a>         <span class="keyword">static</span> <a class="code" href="namespaceOgre.html#a563">LevelArray</a> mLevelIndex;
<a name="l00377"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablet4">00377</a>         <span class="keyword">static</span> <span class="keywordtype">bool</span> mLevelInit;
<a name="l00379"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablep11">00379</a>         <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a> mMainBuffer;
<a name="l00381"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablep12">00381</a>         <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a>* mDeltaBuffers;
<a name="l00383"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablep13">00383</a>         <span class="keywordtype">float</span>* mPositionBuffer;
<a name="l00385"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablep14">00385</a>         <span class="keywordtype">int</span> mForcedRenderLevel;
<a name="l00388"></a><a class="code" href="classOgre_1_1TerrainRenderable.html#Ogre_1_1TerrainRenderablep15">00388</a>         <span class="keywordtype">int</span> mNextLevelDown[10];
00390         <a class="code" href="classOgre_1_1IndexData.html">IndexData</a>* getIndexData(<span class="keywordtype">void</span>);
00392         <a class="code" href="classOgre_1_1IndexData.html">IndexData</a>* generateTriStripIndexes(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> stitchFlags);
00394         <a class="code" href="classOgre_1_1IndexData.html">IndexData</a>* generateTriListIndexes(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> stitchFlags);
00409         <span class="keywordtype">int</span> stitchEdge(Neighbor neighbor, <span class="keywordtype">int</span> hiLOD, <span class="keywordtype">int</span> loLOD, 
00410             <span class="keywordtype">bool</span> omitFirstTri, <span class="keywordtype">bool</span> omitLastTri, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>** ppIdx);
00411 
00413         <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a> createDeltaBuffer(<span class="keywordtype">void</span>);
00414 
00415     };
00416 
00417 }
00418 
00419 <span class="preprocessor">#endif</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>