00001 /* COPYRIGHT 00002 * 00003 * This file is part of the Visual Effects Engine - VEE 00004 * 00005 * Read the "VEE-LICENSE" file for the license. 00006 * 00007 * Authors & Copyright: 00008 * 00009 * Tommi Ilmonen, Tuukka Heikura, Marko Myllymaa and 00010 * Janne Kontkanen 2001-2004 00011 * 00012 * Additional copyrights: Tekes 2003-2004 00013 * 00014 * firstname.lastname@hut.fi 00015 * 00016 */ 00017 00018 #ifndef VEE_FORCE_PLANE_H 00019 #define VEE_FORCE_PLANE_H 00020 00021 #include <vee_object.h> 00022 #include <vee_scene.h> 00023 00027 class VEE_ForcePlane : public VEE_ForceObject 00028 { 00029 public: 00030 VEE_ForcePlane(); 00031 VEE_ForcePlane(VEE_Vector3 location, VEE_Vector3 velocity, 00032 VEE_Vector3 normal, float m); 00033 ~VEE_ForcePlane(); 00034 00035 virtual bool setValue(const char *, VEE_Value *); 00036 virtual VEE_Variable getVariable(const char *) const; 00037 virtual VEE_Object * clone() const; 00038 00039 float epsilon() { return m_epsilon; } 00040 float magnitude() { return m_magnitude; } 00041 00042 VEE_Vector3 *normal() { return &m_normal; } 00043 00044 void setEpsilon(const float e) { m_epsilon = e; } 00045 void setMagnitude(const float m) { m_magnitude = m; } 00046 void setRange(const float r) { m_range = r; } 00047 void setRadius(const float r) { m_radius = r; } 00048 void setNormal(const VEE_Vector3 &n); 00049 00050 void getForce(VEE_Vector3 *force, 00051 const VEE_Vector3 &velocity, 00052 const VEE_Vector3 &location); 00053 void boundingBoxOfForce(VEE_BoundingBox *box); 00054 00055 static VEE_Object * factory(); 00056 00057 protected: 00058 00059 VEE_Vector3 m_normal; 00060 00061 float m_epsilon; 00062 float m_magnitude; 00063 00064 // range of the force along plane normal 00065 float m_range; 00066 // radius of the plane (circle) 00067 float m_radius; 00068 00069 private: 00070 }; 00071 00072 #endif