VR-Forces 5.0.2 Developer's Guide
 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) 2022 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/unordered_map.hpp>
21 #include <matrix/vlVector.h>
22 
23 namespace makVrv
24 {
25 
26  class DtDe;
27  class DtChannel;
28  class DtCoordinateSystem;
29  class DtDisplayUnitsConverter;
30  class DtBasicEditingEventProcessor;
31  class DtElementDefinitionManager;
32  class DtIntervisibilityElement;
33  class DtIntervisibilityStateListener;
34  class DtIntervisibilityStateListenerCreator;
35  class DtIntersectorsContainer;
36  class DtCoordinateSystem;
37 
43  {
44  public:
45 
46  typedef boost::unordered_map<DtElementID, DtIntervisibilityElement*>
48  typedef boost::unordered_map<DtElementID, DtIntervisibilityStateListener*>
50  typedef std::pair<DtElementID, DtVector> AttachPoint;
51  typedef std::vector<AttachPoint> AttachPoints;
52 
53  public:
54 
56  DtIntervisibilityDriver( DtDe&, const std::string& className );
57 
59  virtual ~DtIntervisibilityDriver();
60 
62  virtual bool autoStart() const;
63 
65  DtIntervisibilityElement* findElement(DtElementID id);
66 
69  virtual DtIntervisibilityElement* createIntervisibilityLine(
70  const DtVector& startPoint, const DtVector& endPoint);
71 
76  virtual DtIntervisibilityElement* createIntervisibilityLine(
77  const AttachPoints& = AttachPoints());
78 
81  const DtUnicode& intervisibilityLine() const;
82 
85  virtual DtIntervisibilityElement* createIntervisibilityFan(
86  const DtVector& startPoint, const DtVector& endPoint);
87 
93  virtual DtIntervisibilityElement* createIntervisibilityFan(
94  const AttachPoints& = AttachPoints());
95 
98  const DtUnicode& intervisibilityFan() const;
99 
102  DtIntervisibilityElement* creatingElement() const;
103  DtIntervisibilityStateListener* creatingListener() const;
105 
107  const ElementMap& intervisibilityElements() const;
108 
111  virtual DtIntervisibilityElement* createIntervisibilityEntityFan(
112  const DtVector& startPoint, const DtVector& endPoint);
113 
119  virtual DtIntervisibilityElement* createIntervisibilityEntityFan(
120  const AttachPoints& = AttachPoints());
121 
124  const DtUnicode& intervisibilityEntityFan() const;
125 
128  void addListenerCreator(const std::string&,
130 
132  virtual void cancelChanges();
133 
136  virtual void destroy(DtElementID id);
137 
139  virtual void destroyAll();
140 
145  virtual void setAllowCreating(bool);
146 
153  virtual void setAllowEditing(bool);
154 
156  virtual DtIntervisibilityElement* create(const DtUnicode& definition,
157  const DtVector& startPoint, const DtVector& endPoint);
158 
159  virtual void intervisibilityObjectsShown( bool show );
160 
162  static DtIntervisibilityDriver* findDriver(DtDe& de);
163 
165  const std::string& className() const
166  {
167  return myClassName;
168  }
169 
171  static std::string theInstanceName();
172 
175  {
176  return myConnection;
177  }
178 
181  {
182  return myConnection;
183  }
184 
185  protected:
189  virtual DtBasicEditingEventProcessor* createEventProcessor() const;
190 
192  virtual DtIntervisibilityStateListener* createListener(
193  const std::string& definition) const;
194 
196  virtual DtIntervisibilityElement* createElement(
197  DtIntervisibilityStateListener*, const DtUnicode& definition) const;
198 
204  virtual DtIntervisibilityElement* create(const DtUnicode& elementDefinitionName,
205  const AttachPoints& = AttachPoints());
206 
208  virtual bool onTick();
209 
213  virtual bool onStart();
214 
218  virtual bool onStop();
219 
221  virtual void completeSetup();
222 
224  virtual void slot_onCurrentSelectionChanged(
225  const DtSelectionManager::IdSet& selected,
226  const DtSelectionManager::IdSet& deselected);
227 
229  virtual void select(const DtSelectionManager::IdSet&, bool);
230 
232  virtual void connectProcessorSignals();
233 
236  virtual void slot_locationChanged(const DtVector&, double altAboveGround);
237 
239  virtual void slot_altitudeChanged(const DtVector&, double);
240 
242  virtual void slot_altitudeIsDragging(bool);
243 
246  virtual void slot_place(DtUniqueID, const DtVector&, double altAboveGround);
247 
249  virtual void finishEditing();
250 
254  virtual void slot_dragStart(const DtSelectionManager::IdSet& set,
255  const DtVector&);
256 
260  virtual void modifyEditingObjects(const DtVector& pos, double altAboveGround);
261 
264  virtual void resetSelectionForEditableObjects();
265 
267  virtual DtVector clamp(const DtVector&, double altAboveGround) const;
268 
271  virtual void elementsRemoved(const DtElementData::UniqueIdList&);
272 
274  void installElementDefinitions(DtElementDefinitionManager& manager);
275 
277  virtual void slot_coordinateSystemChanged();
278 
279  public:
280 
286  {
287  public:
288 
291 
293  virtual ~DtIntervisibilityConnection();
294 
300  virtual DtVirtualBaseClass* findInstance( const std::string& instanceName );
301 
307  virtual void registerInstance( const std::string& instanceName, DtVirtualBaseClass* instance );
308 
310  virtual const DtDisplayUnitsConverter& displayUnitsConverter() const;
311 
313  virtual const DtCoordinateSystem& coordinateSystem() const;
314 
315 
316  protected:
317 
319 
320  };
321 
322  protected:
323 
326  {
327 
331 
335 
339 
343 
344  };
345 
346  protected:
347 
348  typedef boost::unordered_map<DtElementID, OriginalInformation> Editing;
349  typedef std::map<std::string, DtIntervisibilityStateListenerCreator*>
351 
356  std::string myClassName;
361 
363 
369 
372 
376 
377  DtIntersectorsContainer* myIntersectors = nullptr;
378 
381  DtCoordinateSystem* myCoordinateSystem = nullptr;
382  };
383 
384 
388  : public DtVirtualBaseClass
389  {
390  public:
391 
392  static DtIntervisibilityDriverCreator& instance( DtDe& de );
393 
394  static void registerInstance( DtDe& de, DtIntervisibilityDriverCreator* creator );
395 
398  virtual const std::string& extension() const;
399 
401  virtual DtIntervisibilityDriver* create( DtDe& de ) const;
402 
403  };
404 
405 }
std::pair< DtElementID, DtVector > AttachPoint
Definition: DtIntervisibilityDriver.h:50
bool myHatLinesEnabled
Definition: DtIntervisibilityDriver.h:340
DtChannel * myHiddenChannel
Definition: DtIntervisibilityDriver.h:375
DtVector myStartOffset
Definition: DtIntervisibilityDriver.h:334
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
DtBaseConnection * myConnection
Definition: DtIntervisibilityDriver.h:357
const DtBaseConnection * connection() const
Returns the driver&#39;s connection (const).
Definition: DtIntervisibilityDriver.h:180
std::vector< AttachPoint > AttachPoints
Definition: DtIntervisibilityDriver.h:51
The DtIntervisibilityElement class implements the common behavior of shape elements that are added to...
Definition: DtIntervisibilityElement.h:34
DtVector myEndOffset
Definition: DtIntervisibilityDriver.h:338
ElementMap myElements
Definition: DtIntervisibilityDriver.h:353
bool myDistribute
Definition: DtIntervisibilityDriver.h:360
This driver will manage the creation, modification and removal of intervisibility objects...
Definition: DtIntervisibilityDriver.h:42
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
DtVector myStartPosition
Definition: DtIntervisibilityDriver.h:332
Contains makVrv:DtSelectionManager class.
DtUniqueID myMovingVertexId
Definition: DtIntervisibilityDriver.h:329
DtDe & myDe
Definition: DtIntervisibilityDriver.h:352
DtSignalConnectionManager myProcessorConnections
Definition: DtIntervisibilityDriver.h:368
Creator for the intervisibility driver.
Definition: DtIntervisibilityDriver.h:387
DtElementID myEndAttachedId
Definition: DtIntervisibilityDriver.h:337
The Simple event processor will emit signals whenever a mouse or keyboard event occurs that would cau...
Definition: DtBasicEditingEventProcessor.h:48
int myMovingVertex
Definition: DtIntervisibilityDriver.h:328
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:348
const std::string & className() const
Returns the driver&#39;s class name.
Definition: DtIntervisibilityDriver.h:165
Editing information.
Definition: DtIntervisibilityDriver.h:325
The DtIntervisibilityStateListener is a class that will allow intervisibility objects to use start/en...
Definition: DtIntervisibilityStateListener.h:24
bool myAllowEditing
Definition: DtIntervisibilityDriver.h:358
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:38
The abstract Channel Class.
Definition: DtChannel.h:35
boost::unordered_map< DtElementID, DtIntervisibilityElement * > ElementMap
Definition: DtIntervisibilityDriver.h:47
bool myAllowCreating
Definition: DtIntervisibilityDriver.h:359
The DtDriver is an abstract class. Developers derive from this to create logic that &quot;directs&quot; things ...
Definition: DtDriver.h:31
bool mySelected
Definition: DtIntervisibilityDriver.h:330
std::map< std::string, DtIntervisibilityStateListenerCreator * > ListenerCreatorMap
Definition: DtIntervisibilityDriver.h:350
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
DtVector myEditingAnchorLocation
Definition: DtIntervisibilityDriver.h:371
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtIntervisibilityStateListener * myCreationListener
Definition: DtIntervisibilityDriver.h:367
DtSignalConnectionManager myConnections
Definition: DtIntervisibilityDriver.h:362
DtBasicEditingEventProcessor * myProcessor
Definition: DtIntervisibilityDriver.h:355
Utility class for doing global unit conversion. All conversions functions use the following naming co...
Definition: DtDisplayUnitsSettingsManager.h:61
boost::unordered_map< DtElementID, DtIntervisibilityStateListener * > ListenerMap
Definition: DtIntervisibilityDriver.h:49
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:370
Contains makVrv:DtBaseConnection class.
DtVector myEndPosition
Definition: DtIntervisibilityDriver.h:336
bool myHatLinesOnSelectionOnly
Definition: DtIntervisibilityDriver.h:341
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:366
std::vector< DtElementID > UniqueIdList
Public Type Definitions.
Definition: DtElementData.h:49
Contains makVrv::DtUniqueID type.
ListenerMap myListeners
Definition: DtIntervisibilityDriver.h:354
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
DtElementID myStartAttachedId
Definition: DtIntervisibilityDriver.h:333
Connection for the DtIntervisibilityDriver. Provides access to rooted singletons and the display unit...
Definition: DtIntervisibilityDriver.h:285
ListenerCreatorMap myListenerCreatorMap
Map that will keep track of listener creator by string type.
Definition: DtIntervisibilityDriver.h:374
bool myFixedDistance
Definition: DtIntervisibilityDriver.h:342
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
DtBaseConnection * connection()
Returns the driver&#39;s connection.
Definition: DtIntervisibilityDriver.h:174
Creator for base intervisibility creator.
Definition: DtIntervisibilityStateListener.h:182
DtDe & myDe
Definition: DtIntervisibilityDriver.h:318
std::string myClassName
Definition: DtIntervisibilityDriver.h:356

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)