VR-Forces 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>
15 
17 
18 namespace makVrv
19 {
20  class DtDe;
21  class DtInputDriver;
22  class DtObserver;
23  class DtIntersectorResult;
24 
25  class DtIntersectorsContainer;
26 
31  {
32  public:
33 
35  DtObserverEventProcessor(DtInputDriver& inputDriver, DtDe& de);
36 
38  virtual ~DtObserverEventProcessor();
39 
40  virtual bool isMouseLooking() const;
41  virtual bool isTerrainDragging() const;
42  virtual bool isTerrainOrbitDragging() const;
43  virtual bool isViewDragging() const;
44 
50  virtual void getHiddenMousePosition( int& mouseX, int& mouseY );
51 
55  virtual bool processMouseEvent( const DtMouseEvent& ev, DtChannel& channel);
56 
60  virtual bool processKeyboardEvent( const DtKeyEvent& ev, DtChannel& channel);
61 
65  virtual bool processPinchGesture( const DtPinchGesture& ev, DtChannel& channel);
66 
69  virtual const std::string& className();
70 
73  static bool isJumpToEvent( DtMouseEvent::EventType mouseEventType,
75 
78  static bool isAttachToEvent( DtMouseEvent::EventType mouseEventType,
80 
81  protected:
82 
83  virtual void setFlashlightControlEnabled(bool enabled);
84 
85  virtual void processObjectMousedOn( DtObserver& observer, DtChannel& channel,
86  const DtMouseEvent& mouseEvent, const DtIntersectorResult& isectResult);
87 
88  virtual void processTerrainMousedOn( DtObserver& observer, DtChannel& channel,
89  const DtMouseEvent& mouseEvent, const DtIntersectorResult& isectResult);
90 
91  virtual void showMouse( DtChannel& channel );
92  virtual void hideMouse( DtChannel& channel, const DtMouseEvent& mouseEvent );
93 
94  //View drag behavior
95  virtual void viewDrag(DtObserver&, DtChannel&, const DtMouseEvent& );
96  virtual void startViewDrag(DtObserver&, DtChannel&, const DtMouseEvent& );
97  virtual void continueViewDrag(DtObserver&, DtChannel&, const DtMouseEvent& );
98  virtual void stopViewDrag(DtObserver&, DtChannel&, const DtMouseEvent& );
99 
100  //Mouse look behavior
101  virtual void mouseLook(DtObserver&, DtChannel&, const DtMouseEvent& );
102  virtual void startMouseLook(DtObserver&, DtChannel&, const DtMouseEvent& );
103  virtual void continueMouseLook( DtObserver&, DtChannel&, const DtMouseEvent& );
104  virtual void stopMouseLook(DtObserver&, DtChannel&, const DtMouseEvent& );
105 
106  //Terrain drag behavior
107  virtual void dragTerrain( DtObserver&, DtChannel&, const DtMouseEvent& );
108  virtual void startDragTerrain( DtObserver&, DtChannel&, const DtMouseEvent& );
109  virtual void continueDragTerrain( DtObserver&, DtChannel&, const DtMouseEvent&);
110  virtual void stopDragTerrain( DtObserver&, DtChannel&, const DtMouseEvent& );
111 
112  virtual void scrollLevelObserverByWheel( DtObserver& observer, DtChannel& channel,
113  const DtMouseEvent& mouseEvent);
114  virtual void moveObserverByWheel( DtObserver&, DtChannel&, const DtMouseEvent&);
115  virtual void changeViewMagnificationByWheel( DtObserver&, DtChannel&,
116  const DtMouseEvent&);
117  virtual void changeViewResolutionByWheel( DtObserver& observer,
118  DtChannel& channel, const DtMouseEvent& mouseEvent );
119  virtual void resetMagnification( DtObserver&, DtChannel&, const DtMouseEvent&);
120 
121  virtual void changeObserverSpeedByWheel(DtObserver& observer, DtChannel& channel,
122  const DtMouseEvent& me);
123 
124  virtual void moveObserverOverTerrain( DtObserver&, DtChannel&, const DtMouseEvent& );
125  virtual void orbitObserverOverTerrain( DtObserver&, DtChannel&, const DtMouseEvent&);
126 
127  virtual void pickIntoScene(DtObserver&, DtChannel&, const DtMouseEvent&);
128  virtual void rotate2DObserver(DtObserver&, double xDelta, double yDelta);
129 
130  // Find the observer associated with this channel (may return 0)
131  virtual DtObserver* findObserverForChannel( const DtChannel& channel );
132 
134  virtual DtElementEntry::ObjectType typeFromId( const DtUniqueID& id );
135 
136  protected:
137 
140  std::string myName;
141 
144 
149 
153 
156 
157  double myDragStartX;
158  double myDragStartY;
159  double myDragStartZ;
160 
164 
171 
175 
178  double myLastMouseX;
179  double myLastMouseY;
180 
181  DtIntersectorsContainer* myIntersectors = nullptr;
182  };
183 }
bool myIsTerrainOrbitDragging
Definition: DtObserverEventProcessor.h:147
double myDragStartY
Definition: DtObserverEventProcessor.h:158
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:143
std::string myName
Definition: DtObserverEventProcessor.h:140
int myHiddenMouseY
Definition: DtObserverEventProcessor.h:155
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:37
Descriptor for a single intersection result.
Definition: DtIntersectorResult.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:163
EventType
Describe the types of mouse events supported.
Definition: DtMouseEvent.h:23
double myHalfWindowHeight
Definition: DtObserverEventProcessor.h:170
double myLastViewDragY
Definition: DtObserverEventProcessor.h:152
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:30
double myVirtualMouseY
Definition: DtObserverEventProcessor.h:168
double myDragStartX
Definition: DtObserverEventProcessor.h:157
double myHalfWindowWidth
Definition: DtObserverEventProcessor.h:169
unsigned int ObjectType
Definition: DtElementEntry.h:54
The abstract Channel Class.
Definition: DtChannel.h:35
int myHiddenMouseX
Definition: DtObserverEventProcessor.h:154
A facade for a DtObserverObject.
Definition: DtObserver.h:37
DtDe & myDe
Definition: DtObserverEventProcessor.h:138
int myMouseLookEventCount
This variable keep track of the mouse move event(exclued the center mouse event) count during the mou...
Definition: DtObserverEventProcessor.h:174
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:167
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
DtMouseEvent myLastTerrainDragMouseEvent
Definition: DtObserverEventProcessor.h:148
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
double myLastMouseX
Definition: DtObserverEventProcessor.h:178
double myLastMouseDragTime
variables for keeping track of when the last
Definition: DtObserverEventProcessor.h:177
double myLastViewDragX
Definition: DtObserverEventProcessor.h:151
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
bool myIsMouseLooking
Definition: DtObserverEventProcessor.h:142
bool myIsTerrainDragging
This bool says we&#39;re really terrain dragging.
Definition: DtObserverEventProcessor.h:146
double myDragStartZ
Definition: DtObserverEventProcessor.h:159
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:72
double myLastMouseY
Definition: DtObserverEventProcessor.h:179
The DtEventProcessorInterface defines the generic interface for classes which handle input events...
Definition: DtEventProcessorInterface.h:34
bool myIsViewDragging
Definition: DtObserverEventProcessor.h:150
Contains makVrv::DtElementEntry class.
DtInputDriver & myInputDriver
Definition: DtObserverEventProcessor.h:139
DtSignalConnectionManager myConnections
Definition: DtObserverEventProcessor.h:172
Contains DLL export macros.

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)