VR-Forces 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) 2024 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 
127  virtual DtIntervisibilityElement* createRangeLine(const DtVector& startPoint);
128 
131  virtual DtIntervisibilityElement* createRangeLine(
132  const DtVector& startPoint, const DtVector& endPoint);
133 
138  virtual DtIntervisibilityElement* createRangeLine(
139  const AttachPoints & = AttachPoints());
140 
144  virtual const DtUnicode& rangeLine() const;
145 
148  void addListenerCreator(const std::string&,
150 
152  virtual void cancelChanges();
153 
156  virtual void destroy(DtElementID id);
157 
159  virtual void destroyAll();
160 
165  virtual void setAllowCreating(bool);
166 
173  virtual void setAllowEditing(bool);
174 
176  virtual DtIntervisibilityElement* create(const DtUnicode& definition,
177  const DtVector& startPoint, const DtVector& endPoint);
178 
180  static DtIntervisibilityDriver* findDriver(DtDe& de);
181 
183  const std::string& className() const
184  {
185  return myClassName;
186  }
187 
189  static std::string theInstanceName();
190 
193  {
194  return myConnection;
195  }
196 
199  {
200  return myConnection;
201  }
202 
203  protected:
207  virtual DtBasicEditingEventProcessor* createEventProcessor() const;
208 
210  virtual DtIntervisibilityStateListener* createListener(
211  const std::string& definition) const;
212 
214  virtual DtIntervisibilityElement* createElement(
215  DtIntervisibilityStateListener*, const DtUnicode& definition) const;
216 
222  virtual DtIntervisibilityElement* create(const DtUnicode& elementDefinitionName,
223  const AttachPoints& = AttachPoints());
224 
226  virtual bool onTick();
227 
231  virtual bool onStart();
232 
236  virtual bool onStop();
237 
239  virtual void completeSetup();
240 
242  virtual void slot_onCurrentSelectionChanged(
243  const DtSelectionManager::IdSet& selected,
244  const DtSelectionManager::IdSet& deselected);
245 
247  virtual void select(const DtSelectionManager::IdSet&, bool);
248 
250  virtual void slot_onVertexElementHasMouseCursorStateChanged( const DtElementID& parentId,
251  const DtElementID& vertexElementId, bool hasMouseCursor );
252 
254  virtual void connectProcessorSignals();
255 
258  virtual void slot_locationChanged(const DtVector&, double altAboveGround);
259 
261  virtual void slot_altitudeChanged(const DtVector&, double);
262 
264  virtual void slot_altitudeIsDragging(bool);
265 
268  virtual void slot_place(DtUniqueID, const DtVector&, double altAboveGround);
269 
271  virtual void finishEditing();
272 
276  virtual void slot_dragStart(const DtSelectionManager::IdSet& set,
277  const DtVector&);
278 
282  virtual void modifyEditingObjects(const DtVector& pos, double altAboveGround);
283 
286  virtual void resetSelectionForEditableObjects();
287 
289  virtual DtVector clamp(const DtVector&, double altAboveGround) const;
290 
293  virtual void elementsRemoved(const DtElementData::UniqueIdList&);
294 
296  void installElementDefinitions(DtElementDefinitionManager& manager);
297 
299  virtual void slot_coordinateSystemChanged();
300 
302  virtual void slot_intervisibilityObjectsShown(bool show);
303 
305  virtual void slot_rangeLinesShown(bool show);
306 
307  public:
308 
314  {
315  public:
316 
319 
321  virtual ~DtIntervisibilityConnection();
322 
328  virtual DtVirtualBaseClass* findInstance( const std::string& instanceName );
329 
335  virtual void registerInstance( const std::string& instanceName, DtVirtualBaseClass* instance );
336 
338  virtual const DtDisplayUnitsConverter& displayUnitsConverter() const;
339 
341  virtual const DtCoordinateSystem& coordinateSystem() const;
342 
343 
344  protected:
345 
347 
348  };
349 
350  protected:
351 
354  {
355 
359 
360  DtVector myStartPosition;
362  DtVector myStartOffset;
363 
364  DtVector myEndPosition;
366  DtVector myEndOffset;
367 
371 
372  };
373 
374  protected:
375 
376  typedef boost::unordered_map<DtElementID, OriginalInformation> Editing;
377  typedef std::map<std::string, DtIntervisibilityStateListenerCreator*>
379 
384  std::string myClassName;
389 
391 
397 
400 
404 
405  DtIntersectorsContainer* myIntersectors = nullptr;
406 
409  DtCoordinateSystem* myCoordinateSystem = nullptr;
410  };
411 
412 
416  : public DtVirtualBaseClass
417  {
418  public:
419 
420  static DtIntervisibilityDriverCreator& instance( DtDe& de );
421 
422  static void registerInstance( DtDe& de, DtIntervisibilityDriverCreator* creator );
423 
426  virtual const std::string& extension() const;
427 
429  virtual DtIntervisibilityDriver* create( DtDe& de ) const;
430 
431  };
432 
433 }
std::pair< DtElementID, DtVector > AttachPoint
Definition: DtIntervisibilityDriver.h:50
bool myHatLinesEnabled
Definition: DtIntervisibilityDriver.h:368
DtChannel * myHiddenChannel
Definition: DtIntervisibilityDriver.h:403
DtVector myStartOffset
Definition: DtIntervisibilityDriver.h:362
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:385
const DtBaseConnection * connection() const
Returns the driver&#39;s connection (const).
Definition: DtIntervisibilityDriver.h:198
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:37
DtVector myEndOffset
Definition: DtIntervisibilityDriver.h:366
ElementMap myElements
Definition: DtIntervisibilityDriver.h:381
bool myDistribute
Definition: DtIntervisibilityDriver.h:388
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:37
DtVector myStartPosition
Definition: DtIntervisibilityDriver.h:360
Contains makVrv:DtSelectionManager class.
DtUniqueID myMovingVertexId
Definition: DtIntervisibilityDriver.h:357
DtDe & myDe
Definition: DtIntervisibilityDriver.h:380
DtSignalConnectionManager myProcessorConnections
Definition: DtIntervisibilityDriver.h:396
Creator for the intervisibility driver.
Definition: DtIntervisibilityDriver.h:415
DtElementID myEndAttachedId
Definition: DtIntervisibilityDriver.h:365
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:356
Manager which owns element definitions.for one type of element Use the makVrv::DtElementDefinitionTyp...
Definition: DtElementDefinitionManager.h:73
boost::unordered_map< DtElementID, OriginalInformation > Editing
Definition: DtIntervisibilityDriver.h:376
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:23
const std::string & className() const
Returns the driver&#39;s class name.
Definition: DtIntervisibilityDriver.h:183
Editing information.
Definition: DtIntervisibilityDriver.h:353
The DtIntervisibilityStateListener is a class that will allow intervisibility objects to use start/en...
Definition: DtIntervisibilityStateListener.h:24
bool myAllowEditing
Definition: DtIntervisibilityDriver.h:386
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:35
The abstract Channel Class.
Definition: DtChannel.h:35
boost::unordered_map< DtElementID, DtIntervisibilityElement * > ElementMap
Definition: DtIntervisibilityDriver.h:47
bool myAllowCreating
Definition: DtIntervisibilityDriver.h:387
The DtDriver is an abstract class. Developers derive from this to create logic that &quot;directs&quot; things ...
Definition: DtDriver.h:30
bool mySelected
Definition: DtIntervisibilityDriver.h:358
std::map< std::string, DtIntervisibilityStateListenerCreator * > ListenerCreatorMap
Definition: DtIntervisibilityDriver.h:378
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
DtVector myEditingAnchorLocation
Definition: DtIntervisibilityDriver.h:399
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtIntervisibilityStateListener * myCreationListener
Definition: DtIntervisibilityDriver.h:395
DtSignalConnectionManager myConnections
Definition: DtIntervisibilityDriver.h:390
DtBasicEditingEventProcessor * myProcessor
Definition: DtIntervisibilityDriver.h:383
Utility class for doing global unit conversion. All conversions functions use the following naming co...
Definition: DtDisplayUnitsSettingsManager.h:62
boost::unordered_map< DtElementID, DtIntervisibilityStateListener * > ListenerMap
Definition: DtIntervisibilityDriver.h:49
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
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:398
Contains makVrv:DtBaseConnection class.
DtVector myEndPosition
Definition: DtIntervisibilityDriver.h:364
bool myHatLinesOnSelectionOnly
Definition: DtIntervisibilityDriver.h:369
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:394
std::vector< DtElementID > UniqueIdList
Public Type Definitions.
Definition: DtElementData.h:49
Contains makVrv::DtUniqueID type.
ListenerMap myListeners
Definition: DtIntervisibilityDriver.h:382
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:76
DtElementID myStartAttachedId
Definition: DtIntervisibilityDriver.h:361
Connection for the DtIntervisibilityDriver. Provides access to rooted singletons and the display unit...
Definition: DtIntervisibilityDriver.h:313
ListenerCreatorMap myListenerCreatorMap
Map that will keep track of listener creator by string type.
Definition: DtIntervisibilityDriver.h:402
bool myFixedDistance
Definition: DtIntervisibilityDriver.h:370
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
DtBaseConnection * connection()
Returns the driver&#39;s connection.
Definition: DtIntervisibilityDriver.h:192
Creator for base intervisibility creator.
Definition: DtIntervisibilityStateListener.h:185
DtDe & myDe
Definition: DtIntervisibilityDriver.h:346
std::string myClassName
Definition: DtIntervisibilityDriver.h:384

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)