Home | nevrax.com |
|
mesh_mrm_instance.hGo to the documentation of this file.00001 00007 /* Copyright, 2001 Nevrax Ltd. 00008 * 00009 * This file is part of NEVRAX NEL. 00010 * NEVRAX NEL is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2, or (at your option) 00013 * any later version. 00014 00015 * NEVRAX NEL is distributed in the hope that it will be useful, but 00016 * WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 * General Public License for more details. 00019 00020 * You should have received a copy of the GNU General Public License 00021 * along with NEVRAX NEL; see the file COPYING. If not, write to the 00022 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 00023 * MA 02111-1307, USA. 00024 */ 00025 00026 #ifndef NL_MESH_MRM_INSTANCE_H 00027 #define NL_MESH_MRM_INSTANCE_H 00028 00029 #include "nel/misc/types_nl.h" 00030 #include "3d/mesh_base_instance.h" 00031 #include "3d/material.h" 00032 #include "3d/animated_material.h" 00033 00034 00035 namespace NL3D 00036 { 00037 00038 00039 class CMeshMRM; 00040 class CMeshMRMGeom; 00041 class CRawSkinNormalCache; 00042 class CShiftedTriangleCache; 00043 00044 00045 // *************************************************************************** 00046 // ClassIds. 00047 const NLMISC::CClassId MeshMRMInstanceId=NLMISC::CClassId(0xec608f3, 0x1111c33); 00048 00049 00050 // *************************************************************************** 00058 class CMeshMRMInstance : public CMeshBaseInstance 00059 { 00060 public: 00062 static void registerBasic(); 00063 00064 protected: 00066 CMeshMRMInstance() 00067 { 00068 _RawSkinCache= NULL; 00069 _ShiftedTriangleCache= NULL; 00070 } 00072 virtual ~CMeshMRMInstance(); 00073 00074 00076 // @{ 00078 virtual bool isSkinnable() const; 00079 00081 virtual void setApplySkin(bool state); 00082 00084 virtual const std::vector<sint32> *getSkinBoneUsage() const; 00085 00087 virtual void renderSkin(float alphaMRM); 00088 00089 // Implementation of SkinGrouping 00090 virtual bool supportSkinGrouping() const; 00091 virtual sint renderSkinGroupGeom(float alphaMRM, uint remainingVertices, uint8 *dest); 00092 virtual void renderSkinGroupPrimitives(uint baseVertex); 00093 00094 // @} 00095 00096 00098 // @{ 00099 00102 virtual void changeMRMDistanceSetup(float distanceFinest, float distanceMiddle, float distanceCoarsest); 00103 00104 virtual const CMRMLevelDetail *getMRMLevelDetail() const; 00105 00106 // @} 00107 00108 00109 // ************************* 00110 private: 00111 static IModel *creator() {return new CMeshMRMInstance;} 00112 friend class CMeshMRM; 00113 friend class CMeshMRMGeom; 00114 00116 CRawSkinNormalCache *_RawSkinCache; 00118 void clearRawSkinCache(); 00119 00121 CShiftedTriangleCache *_ShiftedTriangleCache; 00123 void clearShiftedTriangleCache(); 00124 00125 }; 00126 00127 00128 00129 } // NL3D 00130 00131 00132 #endif // NL_MESH_MRM_INSTANCE_H 00133 00134 /* End of mesh_mrm_instance.h */ |