<html> <head> <title>OgreMesh.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>OgreMesh.h</h1><a href="OgreMesh_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 __Mesh_H__</span> 00026 <span class="preprocessor"></span><span class="preprocessor">#define __Mesh_H__</span> 00027 <span class="preprocessor"></span> 00028 <span class="preprocessor">#include "<a class="code" href="OgrePrerequisites_8h.html">OgrePrerequisites.h</a>"</span> 00029 00030 <span class="preprocessor">#include "<a class="code" href="OgreResource_8h.html">OgreResource.h</a>"</span> 00031 <span class="preprocessor">#include "<a class="code" href="OgreVertexIndexData_8h.html">OgreVertexIndexData.h</a>"</span> 00032 <span class="preprocessor">#include "<a class="code" href="OgreAxisAlignedBox_8h.html">OgreAxisAlignedBox.h</a>"</span> 00033 <span class="preprocessor">#include "<a class="code" href="OgreVertexBoneAssignment_8h.html">OgreVertexBoneAssignment.h</a>"</span> 00034 <span class="preprocessor">#include "<a class="code" href="OgreAnimationState_8h.html">OgreAnimationState.h</a>"</span> 00035 <span class="preprocessor">#include "<a class="code" href="OgreIteratorWrappers_8h.html">OgreIteratorWrappers.h</a>"</span> 00036 <span class="preprocessor">#include "<a class="code" href="OgreProgressiveMesh_8h.html">OgreProgressiveMesh.h</a>"</span> 00037 <span class="preprocessor">#include "<a class="code" href="OgreHardwareVertexBuffer_8h.html">OgreHardwareVertexBuffer.h</a>"</span> 00038 <span class="preprocessor">#include "<a class="code" href="OgreSkeleton_8h.html">OgreSkeleton.h</a>"</span> 00039 00040 00041 <span class="keyword">namespace </span>Ogre { 00042 00043 00078 <span class="keyword">struct </span>MeshLodUsage; 00079 <a name="l00080"></a><a class="code" href="classOgre_1_1Mesh.html">00080</a> <span class="keyword">class </span><a class="code" href="OgrePlatform_8h.html#a13">_OgreExport</a> Mesh: <span class="keyword">public</span> <a class="code" href="classOgre_1_1Resource.html">Resource</a> 00081 { <a name="l00082"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1Meshn0">00082</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOgre_1_1SubMesh.html">SubMesh</a>; <a name="l00083"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1Meshn1">00083</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOgre_1_1MeshSerializerImpl.html">MeshSerializerImpl</a>; <a name="l00084"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1Meshn2">00084</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOgre_1_1MeshSerializerImpl__v1__2.html">MeshSerializerImpl_v1_2</a>; <a name="l00085"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1Meshn3">00085</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOgre_1_1MeshSerializerImpl__v1__1.html">MeshSerializerImpl_v1_1</a>; 00086 00087 <span class="keyword">public</span>: <a name="l00088"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshw0">00088</a> <span class="keyword">typedef</span> std::vector<Real> LodDistanceList; <a name="l00090"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshw1">00090</a> <span class="keyword">typedef</span> std::multimap<size_t, VertexBoneAssignment> <a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshw1">VertexBoneAssignmentList</a>; <a name="l00091"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshw2">00091</a> <span class="keyword">typedef</span> <a class="code" href="classOgre_1_1MapIterator.html">MapIterator<VertexBoneAssignmentList></a> <a class="code" href="classOgre_1_1MapIterator.html">BoneAssignmentIterator</a>; <a name="l00092"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshw3">00092</a> <span class="keyword">typedef</span> std::vector<SubMesh*> <a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshw3">SubMeshList</a>; 00093 00094 <span class="keyword">protected</span>: <a name="l00101"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshp2">00101</a> <a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshw3">SubMeshList</a> mSubMeshList; 00102 00104 <span class="keywordtype">void</span> organiseTangentsBuffer(<a class="code" href="classOgre_1_1VertexData.html">VertexData</a> *vertexData, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> destCoordSet); 00105 00106 <span class="keyword">public</span>: <a name="l00110"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshw4">00110</a> <span class="keyword">typedef</span> HashMap<String, ushort> <a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshw4">SubMeshNameMap</a> ; 00111 <span class="keyword">protected</span>: <a name="l00112"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshp3">00112</a> <a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshw4">SubMeshNameMap</a> mSubMeshNameMap ; 00113 <a name="l00115"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshp4">00115</a> <a class="code" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a> mAABB; <a name="l00117"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshp5">00117</a> <a class="code" href="namespaceOgre.html#a420">Real</a> mBoundRadius; 00118 <a name="l00120"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshp6">00120</a> <a class="code" href="namespaceOgre.html#a426">String</a> mSkeletonName; <a name="l00121"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshp7">00121</a> <a class="code" href="classOgre_1_1SkeletonPtr.html">SkeletonPtr</a> mSkeleton; 00122 00123 <a name="l00124"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshp8">00124</a> <a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshw1">VertexBoneAssignmentList</a> mBoneAssignments; 00125 <a name="l00127"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshp9">00127</a> <span class="keywordtype">bool</span> mBoneAssignmentsOutOfDate; 00128 00130 <span class="keywordtype">void</span> compileBoneAssignments(<span class="keyword">const</span> <a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshw1">VertexBoneAssignmentList</a>& boneAssignments, 00131 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> numBlendWeightsPerVertex, 00132 <a class="code" href="classOgre_1_1VertexData.html">VertexData</a>* targetVertexData); 00134 <span class="keywordtype">void</span> compileBoneAssignmentsSoftware(<span class="keyword">const</span> <a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshw1">VertexBoneAssignmentList</a>& boneAssignments, 00135 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> numBlendWeightsPerVertex, <a class="code" href="classOgre_1_1VertexData.html">VertexData</a>* targetVertexData); 00136 00137 <a name="l00138"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshp10">00138</a> <span class="keywordtype">bool</span> mIsLodManual; <a name="l00139"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshp11">00139</a> <a class="code" href="namespaceOgre.html#a422">ushort</a> mNumLods; <a name="l00140"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshx0">00140</a> <span class="keyword">typedef</span> std::vector<MeshLodUsage> <a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshx0">MeshLodUsageList</a>; <a name="l00141"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshp12">00141</a> <a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshx0">MeshLodUsageList</a> mMeshLodUsageList; 00142 <a name="l00143"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshp13">00143</a> HardwareBuffer::Usage mVertexBufferUsage; <a name="l00144"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshp14">00144</a> HardwareBuffer::Usage mIndexBufferUsage; <a name="l00145"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshp15">00145</a> <span class="keywordtype">bool</span> mVertexBufferShadowBuffer; <a name="l00146"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshp16">00146</a> <span class="keywordtype">bool</span> mIndexBufferShadowBuffer; 00147 00148 <a name="l00149"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshp17">00149</a> <span class="keywordtype">bool</span> mPreparedForShadowVolumes; <a name="l00150"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshp18">00150</a> <span class="keywordtype">bool</span> mEdgeListsBuilt; <a name="l00151"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshp19">00151</a> <span class="keywordtype">bool</span> mAutoBuildEdgeLists; 00152 00154 <span class="keywordtype">void</span> loadImpl(<span class="keywordtype">void</span>); 00156 <span class="keywordtype">void</span> unloadImpl(<span class="keywordtype">void</span>); 00158 size_t calculateSize(<span class="keywordtype">void</span>) <span class="keyword">const</span>; 00159 00160 <span class="keyword">public</span>: 00165 Mesh(<a class="code" href="classOgre_1_1ResourceManager.html">ResourceManager</a>* creator, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name, <a class="code" href="namespaceOgre.html#a485">ResourceHandle</a> handle, 00166 <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& group, <span class="keywordtype">bool</span> isManual = <span class="keyword">false</span>, <a class="code" href="classOgre_1_1ManualResourceLoader.html">ManualResourceLoader</a>* loader = 0); 00167 ~Mesh(); 00168 00170 <span class="keywordtype">void</span> load(<span class="keywordtype">void</span>); 00171 00172 <span class="comment">// NB All methods below are non-virtual since they will be</span> 00173 <span class="comment">// called in the rendering loop - speed is of the essence.</span> 00174 00181 <a class="code" href="classOgre_1_1SubMesh.html">SubMesh</a>* createSubMesh(<span class="keywordtype">void</span>); 00182 00185 <a class="code" href="classOgre_1_1SubMesh.html">SubMesh</a>* createSubMesh(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name); 00186 00189 <span class="keywordtype">void</span> nameSubMesh(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name, <a class="code" href="namespaceOgre.html#a422">ushort</a> index); 00190 00196 <a class="code" href="namespaceOgre.html#a422">ushort</a> _getSubMeshIndex(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name) <span class="keyword">const</span>; 00197 00200 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> getNumSubMeshes(<span class="keywordtype">void</span>) <span class="keyword">const</span>; 00201 00204 <a class="code" href="classOgre_1_1SubMesh.html">SubMesh</a>* getSubMesh(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> index) <span class="keyword">const</span>; 00205 00208 <a class="code" href="classOgre_1_1SubMesh.html">SubMesh</a>* getSubMesh(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name) <span class="keyword">const</span> ; 00209 <a name="l00210"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshw5">00210</a> <span class="keyword">typedef</span> <a class="code" href="classOgre_1_1VectorIterator.html">VectorIterator<SubMeshList></a> <a class="code" href="classOgre_1_1VectorIterator.html">SubMeshIterator</a>; <a name="l00212"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMesha11">00212</a> <a class="code" href="classOgre_1_1VectorIterator.html">SubMeshIterator</a> getSubMeshIterator(<span class="keywordtype">void</span>) 00213 { <span class="keywordflow">return</span> <a class="code" href="classOgre_1_1VectorIterator.html">SubMeshIterator</a>(mSubMeshList.begin(), mSubMeshList.end()); } 00214 <a name="l00223"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMesho0">00223</a> <a class="code" href="classOgre_1_1VertexData.html">VertexData</a> *sharedVertexData; 00224 00234 <a class="code" href="classOgre_1_1MeshPtr.html">MeshPtr</a> clone(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& newName, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& newGroup = StringUtil::BLANK); 00235 00238 <span class="keyword">const</span> <a class="code" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a>& getBounds(<span class="keywordtype">void</span>) <span class="keyword">const</span>; 00239 00241 <a class="code" href="namespaceOgre.html#a420">Real</a> getBoundingSphereRadius(<span class="keywordtype">void</span>) <span class="keyword">const</span>; 00242 00251 <span class="keywordtype">void</span> _setBounds(<span class="keyword">const</span> <a class="code" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a>& bounds, <span class="keywordtype">bool</span> pad = <span class="keyword">true</span>); 00252 00260 <span class="keywordtype">void</span> _setBoundingSphereRadius(<a class="code" href="namespaceOgre.html#a420">Real</a> radius); 00261 00272 <span class="keywordtype">void</span> setSkeletonName(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& skelName); 00273 00275 <span class="keywordtype">bool</span> hasSkeleton(<span class="keywordtype">void</span>) <span class="keyword">const</span>; 00276 00280 <span class="keyword">const</span> <a class="code" href="classOgre_1_1SkeletonPtr.html">SkeletonPtr</a>& getSkeleton(<span class="keywordtype">void</span>) <span class="keyword">const</span>; 00281 00283 <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& getSkeletonName(<span class="keywordtype">void</span>) <span class="keyword">const</span>; 00288 <span class="keywordtype">void</span> _initAnimationState(<a class="code" href="namespaceOgre.html#a0">AnimationStateSet</a>* animSet); 00289 00302 <span class="keywordtype">void</span> addBoneAssignment(<span class="keyword">const</span> <a class="code" href="structOgre_1_1VertexBoneAssignment__s.html">VertexBoneAssignment</a>& vertBoneAssign); 00303 00309 <span class="keywordtype">void</span> clearBoneAssignments(<span class="keywordtype">void</span>); 00310 00317 <span class="keywordtype">void</span> _notifySkeleton(<a class="code" href="classOgre_1_1SkeletonPtr.html">SkeletonPtr</a>& pSkel); 00318 00319 00322 <a class="code" href="classOgre_1_1MapIterator.html">BoneAssignmentIterator</a> getBoneAssignmentIterator(<span class="keywordtype">void</span>); 00323 00324 00348 <span class="keywordtype">void</span> generateLodLevels(<span class="keyword">const</span> LodDistanceList& lodDistances, 00349 ProgressiveMesh::VertexReductionQuota reductionMethod, <a class="code" href="namespaceOgre.html#a420">Real</a> reductionValue); 00350 00355 <a class="code" href="namespaceOgre.html#a422">ushort</a> getNumLodLevels(<span class="keywordtype">void</span>) <span class="keyword">const</span>; 00357 <span class="keyword">const</span> <a class="code" href="structOgre_1_1MeshLodUsage.html">MeshLodUsage</a>& getLodLevel(<a class="code" href="namespaceOgre.html#a422">ushort</a> index) <span class="keyword">const</span>; 00371 <span class="keywordtype">void</span> createManualLodLevel(<a class="code" href="namespaceOgre.html#a420">Real</a> fromDepth, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& meshName); 00372 00380 <span class="keywordtype">void</span> updateManualLodLevel(<a class="code" href="namespaceOgre.html#a422">ushort</a> index, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& meshName); 00381 00384 <a class="code" href="namespaceOgre.html#a422">ushort</a> getLodIndex(<a class="code" href="namespaceOgre.html#a420">Real</a> depth) <span class="keyword">const</span>; 00385 00392 <a class="code" href="namespaceOgre.html#a422">ushort</a> getLodIndexSquaredDepth(<a class="code" href="namespaceOgre.html#a420">Real</a> squaredDepth) <span class="keyword">const</span>; 00393 <a name="l00400"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMesha33">00400</a> <span class="keywordtype">bool</span> isLodManual(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mIsLodManual; } 00401 00403 <span class="keywordtype">void</span> _setLodInfo(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> numLevels, <span class="keywordtype">bool</span> isManual); 00405 <span class="keywordtype">void</span> _setLodUsage(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> level, <a class="code" href="structOgre_1_1MeshLodUsage.html">MeshLodUsage</a>& usage); 00407 <span class="keywordtype">void</span> _setSubMeshLodFaceList(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> subIdx, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> level, <a class="code" href="classOgre_1_1IndexData.html">IndexData</a>* facedata); 00408 00410 <span class="keywordtype">void</span> removeLodLevels(<span class="keywordtype">void</span>); 00411 00434 <span class="keywordtype">void</span> setVertexBufferPolicy(HardwareBuffer::Usage usage, <span class="keywordtype">bool</span> shadowBuffer = <span class="keyword">false</span>); 00457 <span class="keywordtype">void</span> setIndexBufferPolicy(HardwareBuffer::Usage usage, <span class="keywordtype">bool</span> shadowBuffer = <span class="keyword">false</span>); <a name="l00459"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMesha40">00459</a> HardwareBuffer::Usage getVertexBufferUsage(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mVertexBufferUsage; } <a name="l00461"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMesha41">00461</a> HardwareBuffer::Usage getIndexBufferUsage(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mIndexBufferUsage; } <a name="l00463"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMesha42">00463</a> <span class="keywordtype">bool</span> isVertexBufferShadowed(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mVertexBufferShadowBuffer; } <a name="l00465"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMesha43">00465</a> <span class="keywordtype">bool</span> isIndexBufferShadowed(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mIndexBufferShadowBuffer; } 00466 00467 00481 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> _rationaliseBoneAssignments(size_t vertexCount, VertexBoneAssignmentList& assignments); 00482 00490 <span class="keywordtype">void</span> _compileBoneAssignments(<span class="keywordtype">void</span>); 00491 00509 <span class="keywordtype">void</span> buildTangentVectors(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> sourceTexCoordSet = 0, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> destTexCoordSet = 1); 00510 00523 <span class="keywordtype">bool</span> suggestTangentVectorBuildParams(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>& outSourceCoordSet, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>& outDestCoordSet); 00524 00528 <span class="keywordtype">void</span> buildEdgeList(<span class="keywordtype">void</span>); 00530 <span class="keywordtype">void</span> freeEdgeList(<span class="keywordtype">void</span>); 00531 00550 <span class="keywordtype">void</span> prepareForShadowVolume(<span class="keywordtype">void</span>); 00551 00558 <a class="code" href="classOgre_1_1EdgeData.html">EdgeData</a>* getEdgeList(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lodIndex = 0); 00559 00566 <span class="keyword">const</span> <a class="code" href="classOgre_1_1EdgeData.html">EdgeData</a>* getEdgeList(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lodIndex = 0) <span class="keyword">const</span>; 00567 <a name="l00570"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMesha53">00570</a> <span class="keywordtype">bool</span> isPreparedForShadowVolumes(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mPreparedForShadowVolumes; } 00571 <a name="l00573"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMesha54">00573</a> <span class="keywordtype">bool</span> isEdgeListBuilt(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mEdgeListsBuilt; } 00574 00590 <span class="keyword">static</span> <span class="keywordtype">void</span> softwareVertexBlend(<span class="keyword">const</span> <a class="code" href="classOgre_1_1VertexData.html">VertexData</a>* sourceVertexData, 00591 <span class="keyword">const</span> <a class="code" href="classOgre_1_1VertexData.html">VertexData</a>* targetVertexData, <span class="keyword">const</span> <a class="code" href="classOgre_1_1Matrix4.html">Matrix4</a>* pMatrices, 00592 <span class="keywordtype">bool</span> blendNormals); 00593 <a name="l00595"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMesha55">00595</a> <span class="keyword">const</span> <a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMeshw4">SubMeshNameMap</a>& getSubMeshNameMap(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mSubMeshNameMap; } 00596 <a name="l00607"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMesha56">00607</a> <span class="keywordtype">void</span> setAutoBuildEdgeLists(<span class="keywordtype">bool</span> autobuild) { mAutoBuildEdgeLists = autobuild; } <a name="l00612"></a><a class="code" href="classOgre_1_1Mesh.html#Ogre_1_1PatchMesha57">00612</a> <span class="keywordtype">bool</span> getAutoBuildEdgeLists(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mAutoBuildEdgeLists; } 00613 00614 00615 }; 00616 <a name="l00623"></a><a class="code" href="classOgre_1_1MeshPtr.html">00623</a> <span class="keyword">class </span><a class="code" href="class__OgreExport.html">_OgreExport</a> MeshPtr : <span class="keyword">public</span> <a class="code" href="classOgre_1_1SharedPtr.html">SharedPtr</a><Mesh> 00624 { 00625 <span class="keyword">public</span>: <a name="l00626"></a><a class="code" href="classOgre_1_1MeshPtr.html#Ogre_1_1MeshPtra0">00626</a> MeshPtr() : <a class="code" href="classOgre_1_1SharedPtr.html">SharedPtr</a><Mesh>() {} <a name="l00627"></a><a class="code" href="classOgre_1_1MeshPtr.html#Ogre_1_1MeshPtra1">00627</a> <span class="keyword">explicit</span> MeshPtr(Mesh* rep) : <a class="code" href="classOgre_1_1SharedPtr.html">SharedPtr</a><Mesh>(rep) {} <a name="l00628"></a><a class="code" href="classOgre_1_1MeshPtr.html#Ogre_1_1MeshPtra2">00628</a> MeshPtr(<span class="keyword">const</span> MeshPtr& r) : <a class="code" href="classOgre_1_1SharedPtr.html">SharedPtr</a><Mesh>(r) {} 00629 MeshPtr(<span class="keyword">const</span> <a class="code" href="classOgre_1_1SharedPtr.html">ResourcePtr</a>& r); 00631 MeshPtr& operator=(<span class="keyword">const</span> <a class="code" href="classOgre_1_1SharedPtr.html">ResourcePtr</a>& r); 00632 <span class="keyword">protected</span>: 00634 <span class="keywordtype">void</span> destroy(<span class="keywordtype">void</span>); 00635 }; 00636 <a name="l00638"></a><a class="code" href="structOgre_1_1MeshLodUsage.html">00638</a> <span class="keyword">struct </span><a class="code" href="structOgre_1_1MeshLodUsage.html">MeshLodUsage</a> 00639 { <a name="l00641"></a><a class="code" href="structOgre_1_1MeshLodUsage.html#Ogre_1_1MeshLodUsageo0">00641</a> <a class="code" href="namespaceOgre.html#a420">Real</a> <a class="code" href="structOgre_1_1MeshLodUsage.html#Ogre_1_1MeshLodUsageo0">fromDepthSquared</a>; <a name="l00643"></a><a class="code" href="structOgre_1_1MeshLodUsage.html#Ogre_1_1MeshLodUsageo1">00643</a> <a class="code" href="namespaceOgre.html#a426">String</a> <a class="code" href="structOgre_1_1MeshLodUsage.html#Ogre_1_1MeshLodUsageo1">manualName</a>; <a name="l00645"></a><a class="code" href="structOgre_1_1MeshLodUsage.html#Ogre_1_1MeshLodUsageo2">00645</a> <span class="keyword">mutable</span> MeshPtr <a class="code" href="structOgre_1_1MeshLodUsage.html#Ogre_1_1MeshLodUsageo2">manualMesh</a>; <a name="l00647"></a><a class="code" href="structOgre_1_1MeshLodUsage.html#Ogre_1_1MeshLodUsageo3">00647</a> <span class="keyword">mutable</span> <a class="code" href="classOgre_1_1EdgeData.html">EdgeData</a>* <a class="code" href="structOgre_1_1MeshLodUsage.html#Ogre_1_1MeshLodUsageo3">edgeData</a>; 00648 }; 00649 00650 00651 00652 } <span class="comment">// namespace</span> 00653 00654 <span class="preprocessor">#endif</span> </pre></div><p> Copyright © 2000-2005 by The OGRE Team<br /> Last modified Wed Feb 23 00:19:09 2005 </p> </body> </html>