00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00025
00026 #ifndef StickyDynamic_H
00027 #define StickyDynamic_H
00028
00029
00030 #include "H3DNetworkingUtils/Config.h"
00031 #include "H3DNetworkingUtils/Dynamic.h"
00032 #include <H3D/X3DGeometryNode.h>
00033 #include <H3D/SFBool.h>
00034 #include <H3D/SFFloat.h>
00035 #include <H3D/SFTime.h>
00036
00037 namespace H3DNetworkingUtils {
00038
00051
00052 class H3D_NETWORKING_UTILS_DLL_SPEC StickyDynamic : public H3DNetworkingUtils::Dynamic {
00053 public:
00055 StickyDynamic(H3D::Inst<H3D::SFBool> locked = 0,
00056 H3D::Inst<H3D::SFFloat> startForce = 0,
00057 H3D::Inst<H3D::SFFloat> slideForce = 0,
00058 H3D::Inst<H3D::SFFloat> friction = 0,
00059 H3D::Inst<H3D::SFTime> stopDelay = 0);
00060
00061
00062 static H3D::H3DNodeDatabase database;
00063
00064
00065
00070 auto_ptr<H3D::SFBool> locked;
00071
00076 auto_ptr<H3D::SFFloat> startForce;
00077
00082 auto_ptr<H3D::SFFloat> slideForce;
00083
00088 auto_ptr<H3D::SFFloat> friction;
00089
00096 auto_ptr<H3D::SFTime> stopDelay;
00097
00098 protected:
00099
00100 virtual void traverseSG(H3D::TraverseInfo & ti);
00101
00102 class FrictionForce : public H3D::TypedField<H3D::SFVec3f, H3D::Types<H3D::SFFloat, H3D::SFVec3f> > {
00103 public:
00104 virtual void update();
00105 };
00106
00107 auto_ptr<FrictionForce> friction_force;
00108 bool stopped;
00109 H3D::H3DTime stop_time;
00110 };
00111
00112 }
00113
00114 #endif
00115