00001 #ifndef SIGEL_ROBOT_SIG_MATERIAL_H 00002 #define SIGEL_ROBOT_SIG_MATERIAL_H 00003 00004 namespace SIGEL_Robot { class SIG_Material; } 00005 00006 #include <qstring.h> 00007 #include <qtextstream.h> 00008 #include <pointvector.h> 00009 #include "SIGEL_Robot/SIG_Robot.h" 00010 00011 namespace SIGEL_Robot 00012 { 00021 class SIG_Material { 00022 private: 00023 struct FrictionValue { 00024 SIG_Material *otherSide; 00025 DL_Scalar value; 00026 }; 00027 00028 SIG_Robot *parent; 00029 QString name; 00030 DL_Scalar elasticity, density; 00031 QList<FrictionValue> friction; 00032 DL_vector colour; 00033 public: 00039 SIG_Material (SIG_Robot *par, QString n); 00043 SIG_Material (SIG_Robot *par, QTextStream & tx); 00047 ~SIG_Material (void); 00051 QString getName (void) const; 00058 void setDensity (DL_Scalar dens); 00064 DL_Scalar getDensity () const; 00072 void setElasticity (DL_Scalar elas); 00079 DL_Scalar getElasticity () const; 00083 void setColour (DL_vector col); 00087 DL_vector getColour () const; 00097 void setFrictionValue (SIG_Material *otherObj, 00098 DL_Scalar fricval, 00099 bool negotiate = true); 00107 DL_Scalar getFrictionValue (SIG_Material *otherObj) const; 00111 void writeToFileTransfer (QTextStream & tx) const; 00112 }; 00113 } 00114 00115 #endif // SIGEL_ROBOT_SIG_MATERIAL_H