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_VORTEX_H 00021 #define VEE_VORTEX_H 00022 00023 #include <vee_object.h> 00024 #include <vee_scene.h> 00025 00029 class VEE_Vortex : public VEE_ForceObject 00030 { 00031 public: 00032 VEE_Vortex(); 00033 00034 virtual ~VEE_Vortex(); 00035 00036 virtual bool setValue(const char *, VEE_Value *); 00037 virtual VEE_Variable getVariable(const char *) const; 00038 00039 virtual VEE_Object * clone() const; 00040 00041 float epsilon() const { return m_epsilon; } 00042 float magnitude() const { return m_magnitude; } 00043 00044 void setEpsilon(float e) { m_epsilon = e; } 00045 void setMagnitude(float m) { m_magnitude = m; } 00046 void setRange(float r) { m_range = r; } 00047 void setHeight(float h) { m_height = h; m_useHeight = true; } 00048 float getRange() const { return m_range; } 00049 float height() const { return m_height; } 00050 double vortexed() const { return m_vortexed; } 00051 00052 void setAxes(float a1, float a2, float a3); 00053 void setAxes(const VEE_Vector3 &axes) 00054 { m_axes = axes; m_axes.normalize(); } 00055 VEE_Vector3 & getAxes() { return m_axes; } 00056 00057 virtual void update(float dt); 00058 00059 void getForce(VEE_Vector3 *force, 00060 const VEE_Vector3 &velocity, 00061 const VEE_Vector3 &location); 00062 void boundingBoxOfForce(VEE_BoundingBox *box); 00063 00064 static VEE_Object * factory(); 00065 00066 protected: 00067 00068 VEE_Vector3 m_axes; 00069 00070 float m_magnitude; 00071 float m_epsilon; 00072 float m_range; 00073 float m_height; 00074 float m_fadeRange; 00075 float m_maxForce; 00076 float m_strength; 00077 float m_radialForce; 00078 float m_minRadius; 00079 00080 double m_vortexed; 00084 bool m_useHeight; 00085 }; 00086 00087 #endif