00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef NOISE_MODULE_DISPLACE_H
00024 #define NOISE_MODULE_DISPLACE_H
00025
00026 #include "modulebase.h"
00027
00028 namespace CS {
00029 namespace Math {
00030 namespace Noise {
00031 namespace Module {
00032
00035
00038
00042
00068 class CS_CRYSTALSPACE_EXPORT Displace: public Module
00069 {
00070
00071 public:
00072
00074 Displace ();
00075
00076 virtual int GetSourceModuleCount () const
00077 {
00078 return 4;
00079 }
00080
00081 virtual double GetValue (double x, double y, double z) const;
00082
00097 const Module& GetXDisplaceModule () const
00098 {
00099 if (m_pSourceModule == NULL || m_pSourceModule[1] == NULL) {
00100
00101 CS_ASSERT (false);
00102 }
00103 return *(m_pSourceModule[1]);
00104 }
00105
00120 const Module& GetYDisplaceModule () const
00121 {
00122 if (m_pSourceModule == NULL || m_pSourceModule[2] == NULL) {
00123
00124 CS_ASSERT (false);
00125 }
00126 return *(m_pSourceModule[2]);
00127 }
00128
00143 const Module& GetZDisplaceModule () const
00144 {
00145 if (m_pSourceModule == NULL || m_pSourceModule[3] == NULL) {
00146
00147 CS_ASSERT (false);
00148 }
00149 return *(m_pSourceModule[3]);
00150 }
00151
00172 void SetDisplaceModules (const Module& xDisplaceModule,
00173 const Module& yDisplaceModule, const Module& zDisplaceModule)
00174 {
00175 SetXDisplaceModule (xDisplaceModule);
00176 SetYDisplaceModule (yDisplaceModule);
00177 SetZDisplaceModule (zDisplaceModule);
00178 }
00179
00197 void SetXDisplaceModule (const Module& xDisplaceModule)
00198 {
00199 assert (m_pSourceModule != NULL);
00200 m_pSourceModule[1] = &xDisplaceModule;
00201 }
00202
00220 void SetYDisplaceModule (const Module& yDisplaceModule)
00221 {
00222 assert (m_pSourceModule != NULL);
00223 m_pSourceModule[2] = &yDisplaceModule;
00224 }
00225
00243 void SetZDisplaceModule (const Module& zDisplaceModule)
00244 {
00245 assert (m_pSourceModule != NULL);
00246 m_pSourceModule[3] = &zDisplaceModule;
00247 }
00248
00249 };
00250
00252
00254
00256
00257 }
00258 }
00259 }
00260 }
00261
00262 #endif