VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfObjectManipulationEventProcessor.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vrfGuiCore/vrfGuiCore.h>
14 
15 #include <boost/signals2.hpp>
16 #include <boost/optional.hpp>
17 
21 
22 #include <vrvCore/DtUniqueID.h>
23 #include <vrvCore/DtMouseEvent.h>
24 #include <vrvCore/DtKeyEvent.h>
25 
26 #include <matrix/vlVector.h>
27 #include <matrix/vlQuaternion.h>
28 #include <matrix/vlTaitBryan.h>
29 
30 #include <vlutil/vlPerformanceStats.h>
31 
32 namespace makVrf
33 {
37  {
38  public:
40  DtVrfObjectManipulationEventProcessor( makVrv::DtDe&, const std::string& driverName = "DtVrfObjectManipulationEventProcessor" );
41 
44 
47  virtual void setCurrentHeading( double heading );
48 
51  virtual void setCurrentPitch( double pitch );
52 
54  virtual void setHeadingAllowed(bool);
55  virtual bool headingAllowed() const;
56 
58  virtual void setPitchAllowed(bool);
59  virtual bool pitchAllowed() const;
60 
62  virtual void setAltitudeAllowed(bool);
63  virtual bool altitudeAllowed() const;
64 
66  virtual double currentHeading() const;
67 
69  virtual double currentPitch() const;
70 
71  virtual const std::string& className();
72 
74  virtual void setEnabled(bool);
75 
77  virtual void setEditing(bool);
78 
80  virtual void setCreating(bool);
81 
83  virtual void setIgnoreNextLeftButtonRelease(bool b);
84  virtual void setEditStartedByDoubleClick(bool b);
85 
88  virtual void setDragTolerance(int);
89  virtual int dragTolerance() const;
90 
93  virtual void setFreehand(bool);
94  virtual bool freehand() const;
95 
98  void setDragToleranceTime(double);
99  double dragToleranceTime() const;
100 
102  virtual void setIgnoreList(const std::vector<makVrv::DtElementID>&);
103  const std::vector<makVrv::DtElementID>& ignoreList() const;
104 
107  virtual void setEmbarkationAllowed(bool);
108  virtual bool embarkationAllowed() const;
109 
111  boost::signals2::signal<void ( double )> signal_headingChanged;
112 
114  boost::signals2::signal<void ( double )> signal_pitchChanged;
115 
116  boost::signals2::signal<void (bool)> signal_cancel;
117 
119  virtual bool isShiftKeyDown() const;
120  virtual bool isControlKeyDown() const;
121  virtual bool isAltKeyDown() const;
122  virtual bool isLeftMouseButtonDown() const;
123  virtual bool isRightMouseButtonDown() const;
124  virtual bool isMiddleMouseButtonDown() const;
125 
126  protected:
127  virtual bool checkModifiersReleased(const makVrv::DtKeyState::KeyModifier& ev, makVrv::DtChannel& channel, bool mouseDown);
128  virtual bool checkModifiersEnabled(const makVrv::DtMouseEvent& ev, makVrv::DtChannel& channel);
129 
130  virtual makVrv::DtIntersector::IntersectProperties intersectorPickMask() const;
131 
133  virtual bool processMouseEvent(const makVrv::DtMouseEvent& ev, makVrv::DtChannel& channel);
134 
135  virtual bool processKeyboardEvent(const makVrv::DtKeyEvent& ev,
136  makVrv::DtChannel& channel);
137 
139  virtual void changeHeading( double mouseX, double mouseY );
140  virtual void changePitch( double mouseX, double mouseY );
141  virtual void changeAltitude( double mouseX, double mouseY );
142 
143  virtual bool pick(makVrv::DtChannel& channel, double x, double y, makVrv::DtIntersectorResult& result,
145 
146  virtual void cleanupTerrainDraggingVaraibles();
147 
149  virtual bool placePoint(makVrv::DtChannel& channel, const makVrv::DtMouseEvent&);
150 
152  virtual void changeAltitudeWithWheel( int wheelSteps );
153 
155  virtual void changeHeadingWithWheel( int wheelSteps );
156 
158  virtual void changePitchWithWheel( int wheelSteps );
159 
160  virtual void cancel(bool escPressed);
161  virtual void cancel();
162 
163  virtual void startHeadingDrag(const makVrv::DtMouseEvent&, makVrv::DtChannel& channel);
164  virtual void startPitchDrag(const makVrv::DtMouseEvent&, makVrv::DtChannel& channel);
165  virtual void startAltitudeDrag(const makVrv::DtMouseEvent&, makVrv::DtChannel& channel);
166 
167  virtual void tick();
168 
169  virtual void executeDeferredMouseMoveEvent();
170 
171  protected:
172  DtTaitBryan myCurrentOrientation;
183  double myDragTime;
184  DtTimedSection myDragTimer;
187  std::vector<makVrv::DtElementID> myIgnoreList;
201 
205  boost::optional<makVrv::DtMouseEvent> mySavedMouseMoveEvent;
209  };
210 
213  {
214 
215  public:
219 
221  static void registerInstance( makVrv::DtDe& de,
223 
226  };
227 
230  {
231  public:
233  DtVrfIntervisibilityEditingEventProcessor(makVrv::DtInputDriver& inputDriver, makVrv::DtDe& de, const std::string& className);
234 
237 
239  virtual void changeAltitudeWithWheel( int wheelSteps );
240  virtual void startAltitudeDrag(const makVrv::DtMouseEvent&, makVrv::DtChannel& channel);
241  virtual void cancel();
242 
243  protected:
244  virtual bool processMouseEvent( const makVrv::DtMouseEvent& ev, makVrv::DtChannel& channel);
245  virtual bool pick(makVrv::DtChannel& channel, double x, double y, makVrv::DtIntersectorResult& result,
247  virtual void changeAltitude( double mouseX, double mouseY );
248  virtual bool processKeyboardEvent(const makVrv::DtKeyEvent& ev, makVrv::DtChannel& channel);
249  virtual bool isAltKeyDown() const;
250  virtual bool isLeftMouseButtonDown() const;
251  virtual bool isRightMouseButtonDown() const;
252  virtual bool isMiddleMouseButtonDown() const;
253 
254  protected:
259  };
260 
262  {
263  public:
265  };
266 }
makVrv::DtSignalConnectionManager myConnections
Definition: vrfObjectManipulationEventProcessor.h:179
IntersectProperties
The IntersectProperties enum is a flag set that indicates the.
Definition: DtIntersector.h:135
boost::signals2::signal< void(double)> signal_pitchChanged
signal that the pitch of the object has changed
Definition: vrfObjectManipulationEventProcessor.h:114
bool myIsHeadingDragging
Definition: vrfObjectManipulationEventProcessor.h:176
Manage the tick and mouse events when editing or placing a Vrf object.
Definition: vrfObjectManipulationEventProcessor.h:35
Virtual base class.
Definition: DtVirtualBaseClass.h:22
bool myRightMouseButtonDown
Definition: vrfObjectManipulationEventProcessor.h:208
int myAltitudePositionY
Definition: vrfObjectManipulationEventProcessor.h:256
This class encapsulates a Key event.
Definition: DtKeyEvent.h:19
bool myHeadingAllowed
Definition: vrfObjectManipulationEventProcessor.h:173
double myHeadingPositionX
Definition: vrfObjectManipulationEventProcessor.h:189
!!!!!!!!!!
Definition: vrfObjectManipulationEventProcessor.h:229
Descriptor for a single intersection result.
Definition: DtIntersector.h:33
int myAltitudePositionX
Definition: vrfObjectManipulationEventProcessor.h:255
The Simple event processor will emit signals whenever a mouse or keyboard event occurs that would cau...
Definition: DtBasicEditingEventProcessor.h:45
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
bool mySetAtLeastOneEvent
Definition: vrfObjectManipulationEventProcessor.h:200
DtVector myObserverLocation
Definition: vrfObjectManipulationEventProcessor.h:198
DtTaitBryan myCurrentOrientation
Definition: vrfObjectManipulationEventProcessor.h:172
This class encapsulates a mouse button event.
Definition: DtMouseEvent.h:22
bool myIgnoreNextMouseMove
Definition: vrfObjectManipulationEventProcessor.h:258
KeyModifier
Describe which modifier(s) are pressed.
Definition: DtKeyState.h:139
double myAltitudePositionY
Definition: vrfObjectManipulationEventProcessor.h:191
double myHeadingPositionY
Definition: vrfObjectManipulationEventProcessor.h:188
bool myDeferMouseMoveEvents
Controls whether mouse move events will be executed immediately or saved.
Definition: vrfObjectManipulationEventProcessor.h:207
boost::signals2::signal< void(bool)> signal_cancel
Definition: vrfObjectManipulationEventProcessor.h:116
bool myObserverEventProcessorWasEnabled
Definition: vrfObjectManipulationEventProcessor.h:257
bool myObserverEventProcessorWasEnabled
Definition: vrfObjectManipulationEventProcessor.h:195
The abstract Channel Class.
Definition: DtChannel.h:29
DtVector myStartPoint
Definition: vrfObjectManipulationEventProcessor.h:180
boost::signals2::signal< void(double)> signal_headingChanged
signal that the heading of the object has changed
Definition: vrfObjectManipulationEventProcessor.h:111
Contains makVrv::DtVirtualBaseClass class.
makVrv::DtMouseEvent myLastMouseEvent
Definition: vrfObjectManipulationEventProcessor.h:199
bool myPitchAllowed
Definition: vrfObjectManipulationEventProcessor.h:174
bool myFreehand
Definition: vrfObjectManipulationEventProcessor.h:186
This file contains the declaration for the class DtMouseEvent.
Definition: vrfObjectManipulationEventProcessor.h:211
This class&#39;s main responsibility is to handle keyboard and mouse events from OSG (Qt events are route...
Definition: DtInputDriver.h:44
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
Definition: vrfObjectManipulationEventProcessor.h:261
bool myEditStartedByDoubleClick
Definition: vrfObjectManipulationEventProcessor.h:196
bool myAltitudeAllowed
Definition: vrfObjectManipulationEventProcessor.h:175
double myAltitudePositionX
Definition: vrfObjectManipulationEventProcessor.h:190
double myDragTime
Definition: vrfObjectManipulationEventProcessor.h:183
Contains the DtIntervisibilityEditingEventProcessor class declaration.
bool myAllowEditing
Definition: vrfObjectManipulationEventProcessor.h:185
bool myEmbarkationAllowed
Definition: vrfObjectManipulationEventProcessor.h:192
bool myIgnoreLeftMouseDown
Definition: vrfObjectManipulationEventProcessor.h:194
The DtIntervisibilityEditingEventProcessor is overriding to support the canEdit method to determine i...
Definition: DtIntervisibilityEditingEventProcessor.h:24
This file contains the declaration for the class DtKeyEvent.
DtTimedSection myDragTimer
Definition: vrfObjectManipulationEventProcessor.h:184
bool myIsPitchDragging
Definition: vrfObjectManipulationEventProcessor.h:177
Base class to provide boost signal/slot management.
bool myIgnoreNextLeftButtonRelease
Definition: vrfObjectManipulationEventProcessor.h:193
int myDragTolerance
Definition: vrfObjectManipulationEventProcessor.h:181
Contains makVrv::DtUniqueID type.
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
std::vector< makVrv::DtElementID > myIgnoreList
Definition: vrfObjectManipulationEventProcessor.h:187
bool myMouseDragging
Definition: vrfObjectManipulationEventProcessor.h:178
boost::optional< makVrv::DtMouseEvent > mySavedMouseMoveEvent
Linux produces many mouse move events during a tick this holds the most recent one which is executed ...
Definition: vrfObjectManipulationEventProcessor.h:205
Creator for the intervisibility event processor.
Definition: DtIntervisibilityEditingEventProcessor.h:51
bool myIsLastEventProcessing
Definition: vrfObjectManipulationEventProcessor.h:197
double myDragToleranceTime
Definition: vrfObjectManipulationEventProcessor.h:182

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)