vee_operator_random.h

Go to the documentation of this file.
00001 /* -*- C++ -*- */
00002 
00003 /* COPYRIGHT
00004  *
00005  * This file is part of the Visual Effects Engine - VEE
00006  *
00007  * Read the "VEE-LICENSE" file for the license.
00008  *
00009  * Authors & Copyright:   
00010  *
00011  * Tommi Ilmonen, Tuukka Heikura, Marko Myllymaa and 
00012  * Janne Kontkanen 2001-2004
00013  *
00014  * Additional copyrights: Tekes 2003-2004
00015  *
00016  * firstname.lastname@hut.fi
00017  *
00018  */
00019 
00020 #ifndef VEE_OPERATOR_RANDOM_H
00021 #define VEE_OPERATOR_RANDOM_H
00022 
00023 #include <vee_object.h>
00024 #include <vee_operator.h>
00025 
00026 #include <vector>
00027 
00028 enum VEE_MathOperation {
00029   VEE_MATH_NONE,
00030   VEE_MATH_ADD,
00031   VEE_MATH_SUBTRACT,
00032   VEE_MATH_MULTIPLY,
00033   VEE_MATH_DIVIDE,
00034   VEE_MATH_SIZEOF
00035 };
00036 
00037 template <class T>
00038 class VEE_OperatorRandomSelect : public VEE_Operator
00039 {
00040 public:
00041   VEE_OperatorRandomSelect();
00042   virtual ~VEE_OperatorRandomSelect();
00043   virtual void operate(VEE_Object *, float);
00044   virtual VEE_Operator * clone() const;
00045 
00046   void addValue(T v);
00047   bool removeValue(T v);
00048   int  find(T v);
00049 
00050   void setId(const std::string &id) { m_id = id; }
00051 
00052   inline void deliver(VEE_Object *o, const T &);
00053 
00054 protected:
00055   std::vector<T> m_values;
00056   std::string    m_id;
00057 };
00058 
00061 
00062 class VEE_OperatorRandomSphereVector : public VEE_Operator
00063 {
00064 public:
00065   VEE_OperatorRandomSphereVector();
00066   virtual ~VEE_OperatorRandomSphereVector();
00067   virtual void operate(VEE_Object *, float);
00068   virtual VEE_Operator * clone() const;
00069 
00070   virtual bool setValue(const char *, VEE_Value *);
00071 
00072   void setId(const std::string &id) { m_id = id; }
00073   void setRadius(float r) { m_radius = r; }
00074 
00075 protected:
00076   std::string    m_id;
00077   float          m_radius;
00078 };
00079 
00082 
00083 class VEE_OperatorRandomFloat : public VEE_Operator
00084 {
00085 public:
00086   VEE_OperatorRandomFloat();
00087   virtual ~VEE_OperatorRandomFloat();
00088   virtual void operate(VEE_Object *, float);
00089   virtual VEE_Operator * clone() const;
00090 
00091   virtual bool setValue(const char *, VEE_Value *);
00092 
00093   void setId(const std::string &id) { m_id = id; }
00094   void setRadius(float r) { m_radius = r; }
00095   void setOperation(VEE_MathOperation op) { m_operation = op; }
00096 
00097 protected:
00098   std::string    m_id;
00099   float          m_radius;
00100   VEE_MathOperation m_operation;
00101 };
00102 
00105 
00106 class VEE_OperatorPerlinVector : public VEE_Operator
00107 {
00108 public:
00109   VEE_OperatorPerlinVector();
00110   virtual ~VEE_OperatorPerlinVector();
00111   virtual void operate(VEE_Object *, float);
00112   virtual VEE_Operator * clone() const;
00113 
00114   virtual bool setValue(const char *, VEE_Value *);
00115 
00116   void setId(const std::string &id) { m_id = id; }
00117   void setScale(const VEE_Vector3 & s) { m_scale = s; }
00118   void setOperation(VEE_MathOperation op) { m_operation = op; }
00119 
00120 protected:
00121   std::string       m_id;
00122   VEE_Vector3       m_scale;
00123   VEE_MathOperation m_operation;
00124 };
00125 
00126 #endif

Generated on Mon Mar 12 21:09:01 2007 for VEE - The Visual Effects Engine by  doxygen 1.4.6