Context.h

Go to the documentation of this file.
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

Generated on Sun Nov 23 02:29:25 2008 for Sofa by  doxygen 1.5.7.1