VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtObserverEventProcessor.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2022 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
14 #include <vrvCore/DtElementEntry.h>
16 
18 
19 namespace makVrv
20 {
21  class DtDe;
22  class DtInputDriver;
23  class DtObserver;
24  class DtIntersectorResult;
25  class DtIntersectorManager;
26 
27  class DtIntersectorsContainer;
28 
33  {
34  public:
35 
37  DtObserverEventProcessor(DtInputDriver& inputDriver, DtDe& de);
38 
40  virtual ~DtObserverEventProcessor();
41 
42  virtual bool isMouseLooking() const;
43  virtual bool isTerrainDragging() const;
44  virtual bool isTerrainOrbitDragging() const;
45  virtual bool isViewDragging() const;
46 
52  virtual void getHiddenMousePosition( int& mouseX, int& mouseY );
53 
57  virtual bool processMouseEvent( const DtMouseEvent& ev, DtChannel& channel);
58 
62  virtual bool processKeyboardEvent( const DtKeyEvent& ev, DtChannel& channel);
63 
67  virtual bool processPinchGesture( const DtPinchGesture& ev, DtChannel& channel);
68 
71  virtual const std::string& className();
72 
75  static bool isJumpToEvent( DtMouseEvent::EventType mouseEventType,
77 
80  static bool isAttachToEvent( DtMouseEvent::EventType mouseEventType,
82 
83  protected:
84 
85  virtual void setFlashlightControlEnabled(bool enabled);
86 
87  virtual void processObjectMousedOn( DtObserver& observer, DtChannel& channel,
88  const DtMouseEvent& mouseEvent, const DtIntersectorResult& isectResult);
89 
90  virtual void processTerrainMousedOn( DtObserver& observer, DtChannel& channel,
91  const DtMouseEvent& mouseEvent, const DtIntersectorResult& isectResult);
92 
93  virtual void showMouse( DtChannel& channel );
94  virtual void hideMouse( DtChannel& channel, const DtMouseEvent& mouseEvent );
95 
96  //View drag behavior
97  virtual void viewDrag(DtObserver&, DtChannel&, const DtMouseEvent& );
98  virtual void startViewDrag(DtObserver&, DtChannel&, const DtMouseEvent& );
99  virtual void continueViewDrag(DtObserver&, DtChannel&, const DtMouseEvent& );
100  virtual void stopViewDrag(DtObserver&, DtChannel&, const DtMouseEvent& );
101 
102  //Mouse look behavior
103  virtual void mouseLook(DtObserver&, DtChannel&, const DtMouseEvent& );
104  virtual void startMouseLook(DtObserver&, DtChannel&, const DtMouseEvent& );
105  virtual void continueMouseLook( DtObserver&, DtChannel&, const DtMouseEvent& );
106  virtual void stopMouseLook(DtObserver&, DtChannel&, const DtMouseEvent& );
107 
108  //Terrain drag behavior
109  virtual void dragTerrain( DtObserver&, DtChannel&, const DtMouseEvent& );
110  virtual void startDragTerrain( DtObserver&, DtChannel&, const DtMouseEvent& );
111  virtual void continueDragTerrain( DtObserver&, DtChannel&, const DtMouseEvent&);
112  virtual void stopDragTerrain( DtObserver&, DtChannel&, const DtMouseEvent& );
113 
114  virtual void scrollLevelObserverByWheel( DtObserver& observer, DtChannel& channel,
115  const DtMouseEvent& mouseEvent);
116  virtual void moveObserverByWheel( DtObserver&, DtChannel&, const DtMouseEvent&);
117  virtual void changeViewMagnificationByWheel( DtObserver&, DtChannel&,
118  const DtMouseEvent&);
119  virtual void changeViewResolutionByWheel( DtObserver& observer,
120  DtChannel& channel, const DtMouseEvent& mouseEvent );
121  virtual void resetMagnification( DtObserver&, DtChannel&, const DtMouseEvent&);
122 
123  virtual void changeObserverSpeedByWheel(DtObserver& observer, DtChannel& channel,
124  const DtMouseEvent& me);
125 
126  virtual void moveObserverOverTerrain( DtObserver&, DtChannel&, const DtMouseEvent& );
127  virtual void orbitObserverOverTerrain( DtObserver&, DtChannel&, const DtMouseEvent&);
128 
129  virtual void pickIntoScene(DtObserver&, DtChannel&, const DtMouseEvent&);
130  virtual void rotate2DObserver(DtObserver&, double xDelta, double yDelta);
131 
132  // Find the observer associated with this channel (may return 0)
133  virtual DtObserver* findObserverForChannel( const DtChannel& channel );
134 
136  virtual DtElementEntry::ObjectType typeFromId( const DtUniqueID& id );
137 
138  protected:
139 
142  std::string myName;
143 
146 
151 
155 
158 
159  double myDragStartX;
160  double myDragStartY;
161  double myDragStartZ;
162 
166 
173 
177 
180  double myLastMouseX;
181  double myLastMouseY;
182 
184 
185  DtIntersectorsContainer* myIntersectors = nullptr;
186  };
187 }
bool myIsTerrainOrbitDragging
Definition: DtObserverEventProcessor.h:149
double myDragStartY
Definition: DtObserverEventProcessor.h:160
This class encapsulates a Key event.
Definition: DtKeyEvent.h:16
DtPinchGesture represents a Pinch Multitouch Gesture. Instances of the DtPinchGesture class are used ...
Definition: DtPinchGesture.h:26
bool myFlashlightControlOn
Definition: DtObserverEventProcessor.h:145
std::string myName
Definition: DtObserverEventProcessor.h:142
int myHiddenMouseY
Definition: DtObserverEventProcessor.h:157
Utility class that contains intersectors for all model sets in the system (3d, xr, 2d) Use an object of this class when all models sets can be possibly needed. When you know which model set you need, you can just use the DtIntersectorCreator to create an intersector for a model set Models sets corresponding to 3d, xr and 2d are created by default (these correspond to values of 0, 1 and 5) Additional model sets can be registered with DtIntersectorsContainer::registerModelSet.
Definition: DtIntersectorsContainer.h:36
Descriptor for a single intersection result.
Definition: DtIntersectorResult.h:21
Definition: DtDummyCharacterIntersector.h:21
char myQuadrant
The quadrant the mouse was pressed into – 1 upper left, 2 upper right 3 lower right, 4 lower left.
Definition: DtObserverEventProcessor.h:165
EventType
Describe the types of mouse events supported.
Definition: DtMouseEvent.h:23
double myHalfWindowHeight
Definition: DtObserverEventProcessor.h:172
double myLastViewDragY
Definition: DtObserverEventProcessor.h:154
This class encapsulates a mouse button event.
Definition: DtMouseEvent.h:19
The Scene event processor handles user interaction with the observer and the scene.
Definition: DtObserverEventProcessor.h:32
double myVirtualMouseY
Definition: DtObserverEventProcessor.h:170
double myDragStartX
Definition: DtObserverEventProcessor.h:159
double myHalfWindowWidth
Definition: DtObserverEventProcessor.h:171
unsigned int ObjectType
Definition: DtElementEntry.h:51
The abstract Channel Class.
Definition: DtChannel.h:35
int myHiddenMouseX
Definition: DtObserverEventProcessor.h:156
Contains makVrv:DtDummyCharacterIntersector class.
A facade for a DtObserverObject.
Definition: DtObserver.h:37
DtDe & myDe
Definition: DtObserverEventProcessor.h:140
int myMouseLookEventCount
This variable keep track of the mouse move event(exclued the center mouse event) count during the mou...
Definition: DtObserverEventProcessor.h:176
Interface for an event processor for a channel.
MouseModifier
Describe which modifier(s) are pressed.
Definition: DtMouseState.h:33
double myVirtualMouseX
For 2D rotate, keep a &quot;virtual&quot; mouse to keep the actual mouse centered. Use the virual mouse for the...
Definition: DtObserverEventProcessor.h:169
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
DtMouseEvent myLastTerrainDragMouseEvent
Definition: DtObserverEventProcessor.h:150
This class&#39;s main responsibility is to handle keyboard and mouse events from OSG (Qt events are route...
Definition: DtInputDriver.h:43
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtDummyCharacterIntersector myDummyCharacterIntersector
Definition: DtObserverEventProcessor.h:183
double myLastMouseX
Definition: DtObserverEventProcessor.h:180
double myLastMouseDragTime
variables for keeping track of when the last
Definition: DtObserverEventProcessor.h:179
double myLastViewDragX
Definition: DtObserverEventProcessor.h:153
bool myIsMouseLooking
Definition: DtObserverEventProcessor.h:144
bool myIsTerrainDragging
This bool says we&#39;re really terrain dragging.
Definition: DtObserverEventProcessor.h:148
double myDragStartZ
Definition: DtObserverEventProcessor.h:161
Base class to provide boost signal/slot management.
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
double myLastMouseY
Definition: DtObserverEventProcessor.h:181
The DtEventProcessorInterface defines the generic interface for classes which handle input events...
Definition: DtEventProcessorInterface.h:34
bool myIsViewDragging
Definition: DtObserverEventProcessor.h:152
Contains makVrv::DtElementEntry class.
DtInputDriver & myInputDriver
Definition: DtObserverEventProcessor.h:141
DtSignalConnectionManager myConnections
Definition: DtObserverEventProcessor.h:174
Contains DLL export macros.

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)