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_SELECT_H
00024 #define NOISE_MODULE_SELECT_H
00025
00026 #include "modulebase.h"
00027
00028 namespace CS {
00029 namespace Math {
00030 namespace Noise {
00031 namespace Module {
00032
00035
00038
00041
00043 const double DEFAULT_SELECT_EDGE_FALLOFF = 0.0;
00044
00047 const double DEFAULT_SELECT_LOWER_BOUND = -1.0;
00048
00051 const double DEFAULT_SELECT_UPPER_BOUND = 1.0;
00052
00083 class CS_CRYSTALSPACE_EXPORT Select: public Module
00084 {
00085
00086 public:
00087
00098 Select ();
00099
00116 const Module& GetControlModule () const
00117 {
00118 if (m_pSourceModule == NULL || m_pSourceModule[2] == NULL) {
00119
00120 CS_ASSERT (false);
00121 }
00122 return *(m_pSourceModule[2]);
00123 }
00124
00135 double GetEdgeFalloff () const
00136 {
00137 return m_edgeFalloff;
00138 }
00139
00148 double GetLowerBound () const
00149 {
00150 return m_lowerBound;
00151 }
00152
00153 virtual int GetSourceModuleCount () const
00154 {
00155 return 3;
00156 }
00157
00166 double GetUpperBound () const
00167 {
00168 return m_upperBound;
00169 }
00170
00171 virtual double GetValue (double x, double y, double z) const;
00172
00188 void SetBounds (double lowerBound, double upperBound);
00189
00209 void SetControlModule (const Module& controlModule)
00210 {
00211 assert (m_pSourceModule != NULL);
00212 m_pSourceModule[2] = &controlModule;
00213 }
00214
00242 void SetEdgeFalloff (double edgeFalloff);
00243
00244 protected:
00245
00247 double m_edgeFalloff;
00248
00250 double m_lowerBound;
00251
00253 double m_upperBound;
00254
00255 };
00256
00258
00260
00262
00263 }
00264 }
00265 }
00266 }
00267
00268 #endif