00001 //=========================================================================== 00002 /* 00003 This file is part of the CHAI 3D visualization and haptics libraries. 00004 Copyright (C) 2003-2009 by CHAI 3D. All rights reserved. 00005 00006 This library is free software; you can redistribute it and/or modify 00007 it under the terms of the GNU General Public License("GPL") version 2 00008 as published by the Free Software Foundation. 00009 00010 For using the CHAI 3D libraries with software that can not be combined 00011 with the GNU GPL, and for taking advantage of the additional benefits 00012 of our support services, please contact CHAI 3D about acquiring a 00013 Professional Edition License. 00014 00015 \author <http://www.chai3d.org> 00016 \author Francois Conti 00017 \version 2.0.0 $Rev: 251 $ 00018 */ 00019 //=========================================================================== 00020 00021 //--------------------------------------------------------------------------- 00022 #ifndef CGenericEffectH 00023 #define CGenericEffectH 00024 //--------------------------------------------------------------------------- 00025 #include "extras/CGlobals.h" 00026 #include "math/CVector3d.h" 00027 //--------------------------------------------------------------------------- 00028 class cGenericObject; 00029 00030 00031 //=========================================================================== 00038 //=========================================================================== 00039 00040 //--------------------------------------------------------------------------- 00048 //--------------------------------------------------------------------------- 00049 const int CHAI_EFFECT_MAX_IDN = 16; 00050 00051 00052 //=========================================================================== 00062 //=========================================================================== 00063 class cGenericEffect 00064 { 00065 public: 00066 00067 //----------------------------------------------------------------------- 00068 // CONSTRUCTOR & DESTRUCTOR: 00069 //----------------------------------------------------------------------- 00070 00072 cGenericEffect(cGenericObject* a_parent); 00073 00075 virtual ~cGenericEffect() {}; 00076 00077 00078 //----------------------------------------------------------------------- 00079 // METHODS: 00080 //----------------------------------------------------------------------- 00081 00083 virtual bool computeForce(const cVector3d& a_toolPos, 00084 const cVector3d& a_toolVel, 00085 const unsigned int& a_toolID, 00086 cVector3d& a_reactionForce) 00087 { 00088 a_reactionForce.zero(); 00089 return (false); 00090 } 00091 00093 cVector3d getLastComputedForce() { return (m_lastComputedForce); } 00094 00096 cGenericObject* m_parent; 00097 00099 inline void enable(bool a_status) { m_enabled = a_status; } 00100 00102 inline bool isEnabled() { return (m_enabled); } 00103 00104 protected: 00105 00107 cVector3d m_lastComputedForce; 00108 00110 virtual void initialize() { return; } 00111 00113 bool m_enabled; 00114 }; 00115 00116 //--------------------------------------------------------------------------- 00117 #endif 00118 //---------------------------------------------------------------------------