VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtIntervisibilityDriver.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2012 MAK Technologies, Inc.
3  * All rights reserved.
4  *****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/DtDriver.h>
14 #include <vrvCore/DtUniqueID.h>
16 
17 #include <vrvUtil/DtUnicode.h>
19 
20 #include <boost/signals.hpp>
21 #include <boost/unordered_map.hpp>
22 #include <matrix/vlVector.h>
23 
24 namespace makVrv
25 {
26 
27  class DtDe;
28  class DtChannel;
29  class DtCoordinateSystem;
30  class DtDisplayUnitsConverter;
31  class DtBasicEditingEventProcessor;
32  class DtElementDefinitionManager;
33  class DtIntervisibilityElement;
34  class DtIntervisibilityStateListener;
35  class DtIntervisibilityStateListenerCreator;
36 
42  {
43  public:
44 
45  typedef boost::unordered_map<DtElementID, DtIntervisibilityElement*>
47  typedef boost::unordered_map<DtElementID, DtIntervisibilityStateListener*>
49  typedef std::pair<DtElementID, DtVector> AttachPoint;
50  typedef std::vector<AttachPoint> AttachPoints;
51 
52  public:
53 
55  DtIntervisibilityDriver( DtDe&, const std::string& className );
56 
58  virtual ~DtIntervisibilityDriver();
59 
61  virtual bool autoStart() const;
62 
64  DtIntervisibilityElement* findElement(DtElementID id);
65 
68  virtual DtIntervisibilityElement* createIntervisibilityLine(
69  const DtVector& startPoint, const DtVector& endPoint);
70 
75  virtual DtIntervisibilityElement* createIntervisibilityLine(
76  const AttachPoints& = AttachPoints());
77 
80  const DtUnicode& intervisibilityLine() const;
81 
84  virtual DtIntervisibilityElement* createIntervisibilityFan(
85  const DtVector& startPoint, const DtVector& endPoint);
86 
92  virtual DtIntervisibilityElement* createIntervisibilityFan(
93  const AttachPoints& = AttachPoints());
94 
97  const DtUnicode& intervisibilityFan() const;
98 
101  DtIntervisibilityElement* creatingElement() const;
102  DtIntervisibilityStateListener* creatingListener() const;
104 
106  const ElementMap& intervisibilityElements() const;
107 
110  virtual DtIntervisibilityElement* createIntervisibilityEntityFan(
111  const DtVector& startPoint, const DtVector& endPoint);
112 
118  virtual DtIntervisibilityElement* createIntervisibilityEntityFan(
119  const AttachPoints& = AttachPoints());
120 
123  const DtUnicode& intervisibilityEntityFan() const;
124 
127  void addListenerCreator(const std::string&,
129 
131  virtual void cancelChanges();
132 
135  virtual void destroy(DtElementID id);
136 
138  virtual void destroyAll();
139 
144  virtual void setAllowCreating(bool);
145 
152  virtual void setAllowEditing(bool);
153 
155  virtual DtIntervisibilityElement* create(const DtUnicode& definition,
156  const DtVector& startPoint, const DtVector& endPoint);
157 
158  virtual void intervisibilityObjectsShown( bool show );
159 
161  static DtIntervisibilityDriver* findDriver(DtDe& de);
162 
164  const std::string& className() const
165  {
166  return myClassName;
167  }
168 
170  static std::string theInstanceName();
171 
174  {
175  return myConnection;
176  }
177 
180  {
181  return myConnection;
182  }
183 
184  protected:
188  virtual DtBasicEditingEventProcessor* createEventProcessor() const;
189 
191  virtual DtIntervisibilityStateListener* createListener(
192  const std::string& definition) const;
193 
195  virtual DtIntervisibilityElement* createElement(
196  DtIntervisibilityStateListener*, const DtUnicode& definition) const;
197 
203  virtual DtIntervisibilityElement* create(const DtUnicode& elementDefinitionName,
204  const AttachPoints& = AttachPoints());
205 
207  virtual bool onTick();
208 
212  virtual bool onStart();
213 
217  virtual bool onStop();
218 
220  virtual void completeSetup();
221 
223  virtual void slot_onCurrentSelectionChanged(
224  const DtSelectionManager::IdSet& selected,
225  const DtSelectionManager::IdSet& deselected);
226 
228  virtual void select(const DtSelectionManager::IdSet&, bool);
229 
231  virtual void connectProcessorSignals();
232 
235  virtual void slot_locationChanged(const DtVector&, double altAboveGround);
236 
238  virtual void slot_altitudeChanged(const DtVector&, double);
239 
241  virtual void slot_altitudeIsDragging(bool);
242 
245  virtual void slot_place(DtUniqueID, const DtVector&, double altAboveGround);
246 
248  virtual void finishEditing();
249 
253  virtual void slot_dragStart(const DtSelectionManager::IdSet& set,
254  const DtVector&);
255 
259  virtual void modifyEditingObjects(const DtVector& pos, double altAboveGround);
260 
263  virtual void resetSelectionForEditableObjects();
264 
266  virtual DtVector clamp(const DtVector&, double altAboveGround) const;
267 
270  virtual void elementsRemoved(const DtElementData::UniqueIdList&);
271 
273  void installElementDefinitions(DtElementDefinitionManager& manager);
274 
275  public:
276 
282  {
283  public:
284 
287 
289  virtual ~DtIntervisibilityConnection();
290 
296  virtual DtVirtualBaseClass* findInstance( const std::string& instanceName );
297 
303  virtual void registerInstance( const std::string& instanceName, DtVirtualBaseClass* instance );
304 
306  virtual const DtDisplayUnitsConverter& displayUnitsConverter() const;
307 
309  virtual const DtCoordinateSystem& coordinateSystem() const;
310 
311  protected:
312 
314 
315  };
316 
317  protected:
318 
321  {
322 
326 
330 
334 
338 
339  };
340 
341  protected:
342 
343  typedef boost::unordered_map<DtElementID, OriginalInformation> Editing;
344  typedef std::map<std::string, DtIntervisibilityStateListenerCreator*>
346 
351  std::string myClassName;
356 
358 
364 
367 
371 
372  };
373 
374 
378  : public DtVirtualBaseClass
379  {
380  public:
381 
382  static DtIntervisibilityDriverCreator& instance( DtDe& de );
383 
384  static void registerInstance( DtDe& de, DtIntervisibilityDriverCreator* creator );
385 
388  virtual const std::string& extension() const;
389 
391  virtual DtIntervisibilityDriver* create( DtDe& de ) const;
392 
393  };
394 
395 }
std::pair< DtElementID, DtVector > AttachPoint
Definition: DtIntervisibilityDriver.h:49
bool myHatLinesEnabled
Definition: DtIntervisibilityDriver.h:335
DtChannel * myHiddenChannel
Definition: DtIntervisibilityDriver.h:370
DtVector myStartOffset
Definition: DtIntervisibilityDriver.h:329
Virtual base class.
Definition: DtVirtualBaseClass.h:22
A unicode string.
Definition: DtUnicode.h:33
DtBaseConnection * myConnection
Definition: DtIntervisibilityDriver.h:352
const DtBaseConnection * connection() const
Returns the driver&#39;s connection (const).
Definition: DtIntervisibilityDriver.h:179
std::vector< AttachPoint > AttachPoints
Definition: DtIntervisibilityDriver.h:50
The DtIntervisibilityElement class implements the common behavior of shape elements that are added to...
Definition: DtIntervisibilityElement.h:35
DtVector myEndOffset
Definition: DtIntervisibilityDriver.h:333
ElementMap myElements
Definition: DtIntervisibilityDriver.h:348
bool myDistribute
Definition: DtIntervisibilityDriver.h:355
This driver will manage the creation, modification and removal of intervisibility objects...
Definition: DtIntervisibilityDriver.h:41
DtVector myStartPosition
Definition: DtIntervisibilityDriver.h:327
Contains makVrv:DtSelectionManager class.
DtUniqueID myMovingVertexId
Definition: DtIntervisibilityDriver.h:324
DtDe & myDe
Definition: DtIntervisibilityDriver.h:347
DtSignalConnectionManager myProcessorConnections
Definition: DtIntervisibilityDriver.h:363
Creator for the intervisibility driver.
Definition: DtIntervisibilityDriver.h:377
DtElementID myEndAttachedId
Definition: DtIntervisibilityDriver.h:332
The Simple event processor will emit signals whenever a mouse or keyboard event occurs that would cau...
Definition: DtBasicEditingEventProcessor.h:45
int myMovingVertex
Definition: DtIntervisibilityDriver.h:323
Manager which owns element definitions.for one type of element Use the makVrv::DtElementDefinitionTyp...
Definition: DtElementDefinitionManager.h:44
boost::unordered_map< DtElementID, OriginalInformation > Editing
Definition: DtIntervisibilityDriver.h:343
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:26
const std::string & className() const
Returns the driver&#39;s class name.
Definition: DtIntervisibilityDriver.h:164
Editing information.
Definition: DtIntervisibilityDriver.h:320
The DtIntervisibilityStateListener is a class that will allow intervisibility objects to use start/en...
Definition: DtIntervisibilityStateListener.h:24
bool myAllowEditing
Definition: DtIntervisibilityDriver.h:353
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:37
The abstract Channel Class.
Definition: DtChannel.h:29
boost::unordered_map< DtElementID, DtIntervisibilityElement * > ElementMap
Definition: DtIntervisibilityDriver.h:46
bool myAllowCreating
Definition: DtIntervisibilityDriver.h:354
The DtDriver is an abstract class.
Definition: DtDriver.h:34
bool mySelected
Definition: DtIntervisibilityDriver.h:325
std::map< std::string, DtIntervisibilityStateListenerCreator * > ListenerCreatorMap
Definition: DtIntervisibilityDriver.h:345
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
DtVector myEditingAnchorLocation
Definition: DtIntervisibilityDriver.h:366
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
DtIntervisibilityStateListener * myCreationListener
Definition: DtIntervisibilityDriver.h:362
DtSignalConnectionManager myConnections
Definition: DtIntervisibilityDriver.h:357
DtBasicEditingEventProcessor * myProcessor
Definition: DtIntervisibilityDriver.h:350
Utility class for doing global unit conversion.
Definition: DtDisplayUnitsSettingsManager.h:59
boost::unordered_map< DtElementID, DtIntervisibilityStateListener * > ListenerMap
Definition: DtIntervisibilityDriver.h:48
unsigned long long DtUniqueID
Definition: DtUniqueID.h:22
Contains makVrv:DtDriver class.
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:40
Editing myEditing
Definition: DtIntervisibilityDriver.h:365
Contains makVrv:DtBaseConnection class.
DtVector myEndPosition
Definition: DtIntervisibilityDriver.h:331
bool myHatLinesOnSelectionOnly
Definition: DtIntervisibilityDriver.h:336
Base class to provide boost signal/slot management.
DtIntervisibilityElement * myCreatingElement
If creating an element via the mouse, these parameters will not not be NULL.
Definition: DtIntervisibilityDriver.h:361
std::vector< DtElementID > UniqueIdList
Definition: DtElementData.h:48
Contains makVrv::DtUniqueID type.
ListenerMap myListeners
Definition: DtIntervisibilityDriver.h:349
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
DtElementID myStartAttachedId
Definition: DtIntervisibilityDriver.h:328
Connection for the DtIntervisibilityDriver.
Definition: DtIntervisibilityDriver.h:281
ListenerCreatorMap myListenerCreatorMap
Map that will keep track of listener creator by string type.
Definition: DtIntervisibilityDriver.h:369
bool myFixedDistance
Definition: DtIntervisibilityDriver.h:337
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
DtBaseConnection * connection()
Returns the driver&#39;s connection.
Definition: DtIntervisibilityDriver.h:173
Creator for base intervisibility creator.
Definition: DtIntervisibilityStateListener.h:156
DtDe & myDe
Definition: DtIntervisibilityDriver.h:313
std::string myClassName
Definition: DtIntervisibilityDriver.h:351

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)