00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef NL_COARSE_MESH_BUILD_H
00027 #define NL_COARSE_MESH_BUILD_H
00028
00029 #include "nel/misc/types_nl.h"
00030
00031 #include <vector>
00032 #include <map>
00033
00034 namespace NLMISC
00035 {
00036 class CBitmap;
00037 }
00038
00039 namespace NL3D
00040 {
00041
00042 class CMeshGeom;
00043 class CMeshBase;
00044 class ITexture;
00045
00062 class CCoarseMeshBuild
00063 {
00064 public:
00065
00067 class CCoarseMeshDesc
00068 {
00069 public:
00070
00071 CCoarseMeshDesc (CMeshGeom *meshGeom, const CMeshBase *baseMesh)
00072 {
00073 MeshGeom=meshGeom;
00074 MeshBase=baseMesh;
00075 }
00076
00081 CMeshGeom *MeshGeom;
00082
00087 const CMeshBase *MeshBase;
00088 };
00089
00091 class CStats
00092 {
00093 public:
00098 float TextureUsed;
00099 };
00100
00110 bool build (const std::vector<CCoarseMeshDesc>& coarseMeshes, NLMISC::CBitmap& bitmap, CStats& stats, float mulArea);
00111
00112 private:
00113
00114 class CBitmapDesc
00115 {
00116 public:
00117
00118 float U;
00119 float V;
00120
00121
00122 float FactorU;
00123 float FactorV;
00124
00125
00126 ITexture *Texture;
00127
00128
00129 std::string Name;
00130 };
00131
00132 typedef std::map<std::string, CBitmapDesc> MapBitmapDesc;
00133
00134
00135 void expand (NLMISC::CBitmap& bitmap);
00136
00137
00138 bool buildBitmap (const std::vector<CCoarseMeshDesc>& coarseMeshes, NLMISC::CBitmap& bitmap, CStats& stats, MapBitmapDesc& desc, float mulArea);
00139
00140
00141 void remapCoordinates (const std::vector<CCoarseMeshDesc>& coarseMeshes, const MapBitmapDesc& desc);
00142 };
00143
00144
00145 }
00146
00147
00148 #endif // NL_COARSE_MESH_BUILD_H
00149
00150