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_BLOW_H 00021 #define VEE_BLOW_H 00022 00023 #include <vee_scene.h> 00024 #include <vee_object.h> 00025 // #include <vee_volume.h> 00026 00030 class VEE_Blow : public VEE_ForceObject 00031 { 00032 public: 00033 VEE_Blow(); 00034 ~VEE_Blow(); 00035 00036 virtual bool setValue(const char *, VEE_Value *); 00037 virtual VEE_Object * clone() const; 00038 00039 float magnitude() { return m_magnitude; } 00040 00041 VEE_Matrix3 *rotation() { return &m_rotation; } 00042 00043 void setRange(float r) { m_range = r; } 00044 void setMagnitude(float m) { m_magnitude = m; } 00045 void setRotation(const VEE_Matrix3 &rot) { 00046 m_rotation = rot; 00047 // m_rotationInverse = rot.Inverse(); 00048 m_rotationInverse = rot; 00049 m_rotationInverse.transpose(); 00050 } 00051 void setDirection(const VEE_Vector3 &); 00053 double blown() const { return m_blown; } 00054 00055 virtual void update(float dt); 00056 00057 void getForce(VEE_Vector3 *force, 00058 const VEE_Vector3 &velocity, 00059 const VEE_Vector3 &location); 00060 void boundingBoxOfForce(VEE_BoundingBox *box); 00061 00062 float range() const { return m_range; } 00063 00064 static VEE_Object * factory(); 00065 00066 protected: 00067 00068 VEE_Matrix3 m_rotation; 00069 VEE_Matrix3 m_rotationInverse; 00070 00071 float m_range; 00072 float m_magnitude; 00073 00074 double m_blown; 00075 }; 00076 00077 #endif