SpaceMouseSource.h

Go to the documentation of this file.
00001  /* ========================================================================
00002   * Copyright (c) 2006,
00003   * Institute for Computer Graphics and Vision
00004   * Graz University of Technology
00005   * All rights reserved.
00006   *
00007   * Redistribution and use in source and binary forms, with or without
00008   * modification, are permitted provided that the following conditions are
00009   * met:
00010   *
00011   * Redistributions of source code must retain the above copyright notice,
00012   * this list of conditions and the following disclaimer.
00013   *
00014   * Redistributions in binary form must reproduce the above copyright
00015   * notice, this list of conditions and the following disclaimer in the
00016   * documentation and/or other materials provided with the distribution.
00017   *
00018   * Neither the name of the Graz University of Technology nor the names of
00019   * its contributors may be used to endorse or promote products derived from
00020   * this software without specific prior written permission.
00021   *
00022   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
00023   * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
00024   * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
00025   * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
00026   * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00027   * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00028   * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00029   * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00030   * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00031   * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00032   * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00033   * ========================================================================
00034   * PROJECT: OpenTracker
00035   * ======================================================================== */
00042  /* ======================================================================= */
00043 
00086 #ifndef _SPACEMOUSESOURCE_H
00087 #define _SPACEMOUSESOURCE_H
00088 
00089 #include "../OpenTracker.h"
00090 #include "../common/ConsoleSource.h"
00091 
00092 #ifdef USE_SPACEMOUSE
00093 
00094 #define OTCOM_NONE                              0
00095 #define OTCOM_RESETPOSITION             1
00096 #define OTCOM_RESETROTATION             2
00097 #define OTCOM_TOGGLE_ROTATECAMERAAXIS  3
00098 
00099 
00100 
00101 
00102 namespace ot {
00103 
00110 class OPENTRACKER_API SpaceMouseSource : public Node
00111 {
00112 // Members
00113 public: 
00115     Event event;
00116 
00117 // Methods
00118 public:
00120     SpaceMouseSource() : Node()
00121     {
00122                 // default values
00123                 tWeightDefault = 0.5f;
00124                 rWeightDefault = 0.1f;
00125 
00126                 tWeight = tWeightDefault;
00127                 rWeight = rWeightDefault;
00128 
00129                 nlDistance = 10;
00130                 gogok = 1.0f;  //1.0f/6.0f;
00131                 //scale = 1.0f;
00132 
00133                 useAbsRotation = true;
00134         };
00135         
00139     virtual int isEventGenerator()
00140     {
00141         return 1;
00142     }
00143 
00145     void push()
00146     {
00147         event.timeStamp();
00148         updateObservers( event );
00149     }
00150 
00151 virtual void onEventGenerated( Event& event, Node& generator);
00152 
00153 protected:
00154         // SpaceMouse Cursor-specific variables
00155         bool useAbsRotation;
00156 
00157         // User Position
00158         Event usrpos;
00159         // This Event holds the current cursor position and is sent to the observers
00160     Event tmpEvent;
00161 
00162         // Weights
00163         float tWeight;
00164         float rWeight;  // weights for translation and rotation
00165         float tWeightDefault;
00166         float rWeightDefault;
00167 
00168         bool extNode;
00169 
00170         // scaling factor (extNode)
00171         //float scale;
00172         //float cursorDistance;
00173 
00174         // parameters for GoGo Interaction
00175         float nlDistance;                       // distance where non-linear movement starts
00176     float gogok;                                // scaling factor for nonlinear movement acceleration
00177     
00178     // A flag to indicate whether tmpState was changed during processing
00179     int changed;
00180 
00181         friend class SpaceMouseModule;
00182 };
00183 
00184 }  // namespace ot
00185 
00186 #endif //USE_SPACEMOUSE
00187 
00188 #endif //_SPACEMOUSESOURCE_H

Generated on Wed Feb 28 15:18:49 2007 for NaviTrack by  doxygen 1.4.6