H3D API  2.4.1
SpringEffect.h
Go to the documentation of this file.
1 // Copyright 2004-2019, SenseGraphics AB
3 //
4 // This file is part of H3D API.
5 //
6 // H3D API is free software; you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; either version 2 of the License, or
9 // (at your option) any later version.
10 //
11 // H3D API is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
15 //
16 // You should have received a copy of the GNU General Public License
17 // along with H3D API; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 //
20 // A commercial license is also available. Please contact us at
21 // www.sensegraphics.com for more information.
22 //
23 //
27 //
29 #ifndef __SPRINGEFFECT_H__
30 #define __SPRINGEFFECT_H__
31 
32 #include <H3D/H3DForceEffect.h>
33 #include <HAPI/HapticSpring.h>
34 #include <H3D/SFVec3f.h>
35 #include <H3D/SFBool.h>
36 #include <H3D/SFFloat.h>
37 #include <H3D/SFInt32.h>
38 #include <H3D/MFVec3f.h>
39 
40 namespace H3D {
60  class H3DAPI_API SpringEffect: public H3DForceEffect {
61  public:
63  SpringEffect( Inst< SFVec3f > _position = 0,
64  Inst< MFVec3f > _force = 0,
65  Inst< SFFloat > _springConstant = 0,
66  Inst< SFFloat > _startDistance = 0,
67  Inst< SFFloat > _escapeDistance = 0,
68  Inst< SFBool > _active = 0,
69  Inst< MFInt32 > _deviceIndex = 0,
70  Inst< SFNode > _metadata = 0,
71  Inst< SFFloat > _damping = 0,
72  Inst< SFFloat > _positionInterpolation = 0,
73  Inst< SFVec3f > _interpolatedPosition = 0 );
74 
79  virtual void traverseSG( TraverseInfo &ti );
80 
81 
86  H3DUniquePtr< SFVec3f > position;
87 
93  H3DUniquePtr< MFVec3f > force;
94 
101  H3DUniquePtr< SFFloat > springConstant;
102 
108  H3DUniquePtr< SFFloat > startDistance;
109 
115  H3DUniquePtr< SFFloat > escapeDistance;
116 
121  H3DUniquePtr< SFBool > active;
122 
130  H3DUniquePtr< SFFloat > damping;
131 
142  H3DUniquePtr< SFFloat > positionInterpolation;
143 
147  H3DUniquePtr< SFVec3f > interpolatedPosition;
148 
151 
154 
155  protected:
156  virtual HAPI::HapticSpring * createHAPISpring() {
157  return new HAPI::HapticSpring(true);
158  }
159  };
160 }
161 
162 #endif
Header file for H3DForceEffect.
Contains the MFVec3f field class.
Contains the SFBool field class.
Contains the SFFloat field class.
Contains the SFInt32 field class.
Contains the SFVec3f field class.
The base class for scenegraph force effects.
Definition: H3DForceEffect.h:39
SpringEffect is a localized haptic effect where the haptics device is pulled towards to a point in sp...
Definition: SpringEffect.h:60
H3DUniquePtr< MFVec3f > force
The force applied by the spring to the haptics device since the last scenegraph update.
Definition: SpringEffect.h:93
H3DUniquePtr< SFFloat > escapeDistance
If the effect is active, the effect will be deactivated if the haptics device moves outside this dist...
Definition: SpringEffect.h:115
H3DUniquePtr< SFFloat > damping
The damping constant to use in the force calculation.
Definition: SpringEffect.h:130
H3DUniquePtr< SFFloat > startDistance
When the haptics device comes within this distance the spring effect is activated.
Definition: SpringEffect.h:108
H3DUniquePtr< SFFloat > springConstant
The spring constant of the spring.
Definition: SpringEffect.h:101
AutoRefVector< HAPI::HapticSpring > haptic_spring
Internal haptic spring instance.
Definition: SpringEffect.h:153
static H3DNodeDatabase database
The H3DNodeDatabase for this node.
Definition: SpringEffect.h:150
H3DUniquePtr< SFVec3f > interpolatedPosition
The interpolated position of the spring.
Definition: SpringEffect.h:147
H3DUniquePtr< SFBool > active
Active is true when the spring effect is active.
Definition: SpringEffect.h:121
H3DUniquePtr< SFVec3f > position
The position of the spring.
Definition: SpringEffect.h:86
H3DUniquePtr< SFFloat > positionInterpolation
The positionInterpolation is used to force the haptics loop to not move all the way from the last pos...
Definition: SpringEffect.h:142
TraverseInfo is a structure that is passed along when traversing the scene graph.
Definition: TraverseInfo.h:57
H3D API namespace.
Definition: Anchor.h:38
The H3DNodeDatabase contains a mapping between a name of a Node and the constructor for the Node with...
Definition: H3DNodeDatabase.h:194