00001 /****************************************************************************** 00002 * SOFA, Simulation Open-Framework Architecture, version 1.0 beta 3 * 00003 * (c) 2006-2008 MGH, INRIA, USTL, UJF, CNRS * 00004 * * 00005 * This library is free software; you can redistribute it and/or modify it * 00006 * under the terms of the GNU Lesser General Public License as published by * 00007 * the Free Software Foundation; either version 2.1 of the License, or (at * 00008 * your option) any later version. * 00009 * * 00010 * This library is distributed in the hope that it will be useful, but WITHOUT * 00011 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * 00012 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * 00013 * for more details. * 00014 * * 00015 * You should have received a copy of the GNU Lesser General Public License * 00016 * along with this library; if not, write to the Free Software Foundation, * 00017 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * 00018 ******************************************************************************* 00019 * SOFA :: Framework * 00020 * * 00021 * Authors: M. Adam, J. Allard, B. Andre, P-J. Bensoussan, S. Cotin, C. Duriez,* 00022 * H. Delingette, F. Falipou, F. Faure, S. Fonteneau, L. Heigeas, C. Mendoza, * 00023 * M. Nesme, P. Neumann, J-P. de la Plata Alcade, F. Poyer and F. Roy * 00024 * * 00025 * Contact information: contact@sofa-framework.org * 00026 ******************************************************************************/ 00027 #ifndef SOFA_CORE_OBJECTMODEL_CONTEXT_H 00028 #define SOFA_CORE_OBJECTMODEL_CONTEXT_H 00029 00030 #include <sofa/core/objectmodel/BaseObject.h> 00031 #include <sofa/core/objectmodel/BaseContext.h> 00032 #include <sofa/core/objectmodel/Data.h> 00033 00034 #include <iostream> 00035 #include <map> 00036 00037 00038 00039 namespace sofa 00040 { 00041 00042 namespace core 00043 { 00044 00045 namespace objectmodel 00046 { 00047 00052 class Context : public BaseContext 00053 { 00054 public: 00055 00056 typedef BaseContext::Frame Frame; 00057 typedef BaseContext::Vec3 Vec3; 00058 typedef BaseContext::Quat Quat; 00059 typedef BaseContext::SpatialVector SpatialVector; 00060 00061 Data<bool> is_activated; 00062 Data<Vec3> worldGravity_; 00063 Data<double> dt_; 00064 Data<double> time_; 00065 Data<bool> animate_; 00066 Data<int> showVisualModels_; 00067 Data<int> showBehaviorModels_; 00068 Data<int> showCollisionModels_; 00069 Data<int> showBoundingCollisionModels_; 00070 Data<int> showMappings_; 00071 Data<int> showMechanicalMappings_; 00072 Data<int> showForceFields_; 00073 Data<int> showInteractionForceFields_; 00074 Data<int> showWireFrame_; 00075 Data<int> showNormals_; 00076 Data<bool> multiThreadSimulation_; 00077 00080 Data<int> currentLevel_; 00081 Data<int> coarsestLevel_; 00082 Data<int> finestLevel_; 00084 00085 00086 Frame localFrame_; 00087 SpatialVector spatialVelocityInWorld_; 00088 Vec3 velocityBasedLinearAccelerationInWorld_; 00089 00090 Context(); 00091 virtual ~Context() 00092 {} 00093 00094 00097 00099 virtual bool isActive() const; 00101 virtual void setActive(bool val); 00103 virtual Vec3 getLocalGravity() const; 00105 //virtual void setGravity(const Vec3& ); 00107 virtual const Vec3& getGravityInWorld() const; 00109 virtual void setGravityInWorld( const Vec3& ); 00110 00112 virtual double getDt() const; 00113 00115 virtual double getTime() const; 00116 00118 virtual bool getAnimate() const; 00119 00121 virtual bool getMultiThreadSimulation() const; 00122 00124 virtual bool getShowCollisionModels() const; 00125 00127 virtual bool getShowBoundingCollisionModels() const; 00128 00130 virtual bool getShowBehaviorModels() const; 00131 00133 virtual bool getShowVisualModels() const; 00134 00136 virtual bool getShowMappings() const; 00137 00139 virtual bool getShowMechanicalMappings() const; 00140 00142 virtual bool getShowForceFields() const; 00143 00145 virtual bool getShowInteractionForceFields() const; 00146 00148 virtual bool getShowWireFrame() const; 00149 00151 virtual bool getShowNormals() const; 00152 00154 virtual int getCurrentLevel() const; 00156 virtual int getCoarsestLevel() const; 00158 virtual int getFinestLevel() const; 00159 00161 00162 00166 virtual const Frame& getPositionInWorld() const; 00168 virtual void setPositionInWorld(const Frame&); 00169 00171 virtual const SpatialVector& getVelocityInWorld() const; 00173 virtual void setVelocityInWorld(const SpatialVector&); 00174 00176 virtual const Vec3& getVelocityBasedLinearAccelerationInWorld() const; 00178 virtual void setVelocityBasedLinearAccelerationInWorld(const Vec3& ); 00180 00183 00185 virtual void setDt( double dt ); 00186 00188 virtual void setTime( double t ); 00189 00191 virtual void setAnimate(bool val); 00192 00194 virtual void setMultiThreadSimulation(bool val); 00195 00197 virtual void setShowCollisionModels(bool val); 00198 00200 virtual void setShowBehaviorModels(bool val); 00201 00203 virtual void setShowBoundingCollisionModels(bool val); 00204 00206 virtual void setShowVisualModels(bool val); 00207 00209 virtual void setShowMappings(bool val); 00210 00212 virtual void setShowMechanicalMappings(bool val); 00213 00215 virtual void setShowForceFields(bool val); 00216 00218 virtual void setShowInteractionForceFields(bool val); 00219 00221 virtual void setShowWireFrame(bool val); 00222 00224 virtual void setShowNormals(bool val); 00225 00227 virtual bool setCurrentLevel(int l); 00229 virtual void setCoarsestLevel(int l); 00231 virtual void setFinestLevel(int l); 00232 00234 00236 void copyContext(const Context& c); 00237 00239 void copySimulationContext(const Context& c); 00240 00242 void copyVisualContext(const Context& c); 00243 00244 friend std::ostream& operator << (std::ostream& out, const Context& c ); 00245 00246 00247 00248 }; 00249 00250 } // namespace objectmodel 00251 00252 } // namespace core 00253 00254 } // namespace sofa 00255 00256 #endif
1.5.7.1