00001 #ifndef __GXLANDGEN
00002 #define __GXLANDGEN
00003 
00004 
00005 
00006 #include "GXStandardDefines.h"
00007 #include "GXAutoArray.h"
00008 #include "GXBitmapLand.h"
00009 #include "GXSquareTemplate.h"
00010 
00011 class CGXLandGenerator
00012 {
00013 public:
00014         CGXLandGenerator();
00015         virtual ~CGXLandGenerator();
00016 
00017         virtual bool LoadFromStream(IStream* pStream);
00018         virtual bool SaveToStream(IStream* pStream);
00019         
00020         virtual bool LoadFromData(CGXSquare<D3DXCOLOR>* pColorSpline,
00021                                                                 CGXAutoArray<float>* pHeightSpline);
00022 
00023 
00024         
00025         virtual bool GenerateLand(CGXDeviceContainer* pDevice,
00026                                                            CGXBitmapLand* pOut,
00027                                                                 UINT uLandDataSideSize,
00028                                                                 UINT uColorDataSideSize,
00029                                                                 UINT uMipCount,
00030                                                                 float fSideSize, float fNormalAmp,
00031                                                                 float fHeightAmp, UINT uLandSideSize);
00032         
00033         inline CGXSquare<D3DXCOLOR>* GetColorSpline(){return &m_ColorSpline;}
00034         inline CGXAutoArray<float>* GetHeightSpline(){return &m_HeightSpline;}
00035         inline CGXSquare<float>*        GetHeightMap(){return &m_HeightMap;}
00036 
00037 
00038 protected:
00039         CGXSquare<D3DXCOLOR>            m_ColorSpline;
00040         CGXAutoArray<float>                     m_HeightSpline;
00041         UINT                                            m_uMipLevels;
00042         float                                           m_fFalloff;
00043 
00044         CGXSquare<float>                        m_HeightMap;
00045 };
00046 
00047 
00048 
00049 
00050 
00051 void GXColorFiller(D3DXCOLOR*, const D3DXCOLOR*, const D3DXCOLOR*, float, void*, const D3DXVECTOR2*);
00052 void GXHeightFiller(float*, const float*, const float*, float, void*, const D3DXVECTOR2*);
00053 
00054 
00055 #endif