00001 #ifndef IPSA_SO_FRICTION_CONE_H
00002 #define IPSA_SO_FRICTION_CONE_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00028 #include "IPSA.h"
00029
00030 #include <Inventor/nodekits/SoBaseKit.h>
00031 #include <Inventor/fields/SoSFFloat.h>
00032 #include <Inventor/fields/SoSFVec3f.h>
00033 #include <Inventor/fields/SoSFTrigger.h>
00034 #include <Inventor/sensors/SoFieldSensor.h>
00035
00036 #include <string>
00037
00038 class SoSensor;
00039
00040 class IPSA_IMPORT_EXPORT SoFrictionCone : public SoBaseKit
00041 {
00042 SO_KIT_HEADER(SoFrictionCone);
00043
00044
00045 SO_KIT_CATALOG_ENTRY_HEADER(resetTransform);
00046 SO_KIT_CATALOG_ENTRY_HEADER(offsetTransform);
00047 SO_KIT_CATALOG_ENTRY_HEADER(transform);
00048 SO_KIT_CATALOG_ENTRY_HEADER(material);
00049 SO_KIT_CATALOG_ENTRY_HEADER(visualisation);
00050
00051 public:
00052
00053 SoFrictionCone();
00054
00055 virtual SoBaseKit* copy(SbBool copyConnections) const;
00056 virtual SbBool setUpConnections(SbBool onOff, SbBool doItAlways);
00057 static void initClass();
00058
00059 void addToGraph(SoSeparator* root);
00060 static void RemoveAllFrictionConesFromGraph(SoSeparator* root);
00061 static std::string FrictionConeSeparatorName;
00062
00063 SoSFFloat height;
00064 SoSFFloat radius;
00065 SoSFFloat scaling;
00066 SoSFFloat transparency;
00067 SoSFVec3f color;
00068 SoSFVec3f contactPoint;
00069 SoSFVec3f contactNormal;
00070
00071 protected:
00072 SoSFTrigger updateParametersTrigger;
00073 SoFieldSensor updateParametersSensor;
00074
00075 private:
00076 static SoSeparator* GetFrictionConeSeparatorFromGraph(SoSeparator* root);
00077 static void UpdateParametersCB(void* data, SoSensor*);
00078 };
00079
00080 #endif