00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef NL_DEFORM_2D_H
00027 #define NL_DEFORM_2D_H
00028
00029 #include "nel/misc/types_nl.h"
00030 #include "nel/misc/smart_ptr.h"
00031 #include "nel/misc/vector_2f.h"
00032 #include "3d/vertex_buffer.h"
00033
00034 namespace NL3D
00035 {
00036
00037 class IDriver ;
00038 class ITexture ;
00047 class CDeform2d
00048 {
00049 public:
00050 typedef std::vector<NLMISC::CVector2f> TPoint2DVect ;
00051
00053 struct IPerturbUV
00054 {
00055 virtual void perturbUV(float x, float y, float &du, float &dv) const = 0 ;
00056 };
00057
00058
00059 static void doDeform(const TPoint2DVect &surf, IDriver *drv, IPerturbUV *uvp) ;
00068 static void setupBuffer(uint width, uint height, uint xGranularity, uint yGranularity
00069 , uint xQuad, uint yQuad) ;
00070
00071
00072
00073
00074
00075
00076
00077 protected:
00078 static uint _Width;
00079 static uint _Height;
00080 static uint _XGranularity;
00081 static uint _YGranularity;
00082 static uint _XQuad;
00083 static uint _YQuad;
00084 static NLMISC::CSmartPtr<ITexture> _Tex ;
00085
00086 };
00087
00088
00089
00090 }
00091
00092
00093 #endif // NL_DEFORM_2D_H
00094
00095