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) 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 
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 connectProcessorSignals();
251 
254  virtual void slot_locationChanged(const DtVector&, double altAboveGround);
255 
257  virtual void slot_altitudeChanged(const DtVector&, double);
258 
260  virtual void slot_altitudeIsDragging(bool);
261 
264  virtual void slot_place(DtUniqueID, const DtVector&, double altAboveGround);
265 
267  virtual void finishEditing();
268 
272  virtual void slot_dragStart(const DtSelectionManager::IdSet& set,
273  const DtVector&);
274 
278  virtual void modifyEditingObjects(const DtVector& pos, double altAboveGround);
279 
282  virtual void resetSelectionForEditableObjects();
283 
285  virtual DtVector clamp(const DtVector&, double altAboveGround) const;
286 
289  virtual void elementsRemoved(const DtElementData::UniqueIdList&);
290 
292  void installElementDefinitions(DtElementDefinitionManager& manager);
293 
295  virtual void slot_coordinateSystemChanged();
296 
298  virtual void slot_intervisibilityObjectsShown(bool show);
299 
301  virtual void slot_rangeLinesShown(bool show);
302 
303  public:
304 
310  {
311  public:
312 
315 
317  virtual ~DtIntervisibilityConnection();
318 
324  virtual DtVirtualBaseClass* findInstance( const std::string& instanceName );
325 
331  virtual void registerInstance( const std::string& instanceName, DtVirtualBaseClass* instance );
332 
334  virtual const DtDisplayUnitsConverter& displayUnitsConverter() const;
335 
337  virtual const DtCoordinateSystem& coordinateSystem() const;
338 
339 
340  protected:
341 
343 
344  };
345 
346  protected:
347 
350  {
351 
355 
359 
363 
367 
368  };
369 
370  protected:
371 
372  typedef boost::unordered_map<DtElementID, OriginalInformation> Editing;
373  typedef std::map<std::string, DtIntervisibilityStateListenerCreator*>
375 
380  std::string myClassName;
385 
387 
393 
396 
400 
401  DtIntersectorsContainer* myIntersectors = nullptr;
402 
405  DtCoordinateSystem* myCoordinateSystem = nullptr;
406  };
407 
408 
412  : public DtVirtualBaseClass
413  {
414  public:
415 
416  static DtIntervisibilityDriverCreator& instance( DtDe& de );
417 
418  static void registerInstance( DtDe& de, DtIntervisibilityDriverCreator* creator );
419 
422  virtual const std::string& extension() const;
423 
425  virtual DtIntervisibilityDriver* create( DtDe& de ) const;
426 
427  };
428 
429 }
std::pair< DtElementID, DtVector > AttachPoint
Definition: DtIntervisibilityDriver.h:50
bool myHatLinesEnabled
Definition: DtIntervisibilityDriver.h:364
DtChannel * myHiddenChannel
Definition: DtIntervisibilityDriver.h:399
DtVector myStartOffset
Definition: DtIntervisibilityDriver.h:358
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:381
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:35
DtVector myEndOffset
Definition: DtIntervisibilityDriver.h:362
ElementMap myElements
Definition: DtIntervisibilityDriver.h:377
bool myDistribute
Definition: DtIntervisibilityDriver.h:384
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:356
Contains makVrv:DtSelectionManager class.
DtUniqueID myMovingVertexId
Definition: DtIntervisibilityDriver.h:353
DtDe & myDe
Definition: DtIntervisibilityDriver.h:376
DtSignalConnectionManager myProcessorConnections
Definition: DtIntervisibilityDriver.h:392
Creator for the intervisibility driver.
Definition: DtIntervisibilityDriver.h:411
DtElementID myEndAttachedId
Definition: DtIntervisibilityDriver.h:361
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:352
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:372
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:349
The DtIntervisibilityStateListener is a class that will allow intervisibility objects to use start/en...
Definition: DtIntervisibilityStateListener.h:24
bool myAllowEditing
Definition: DtIntervisibilityDriver.h:382
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:383
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:354
std::map< std::string, DtIntervisibilityStateListenerCreator * > ListenerCreatorMap
Definition: DtIntervisibilityDriver.h:374
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
DtVector myEditingAnchorLocation
Definition: DtIntervisibilityDriver.h:395
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtIntervisibilityStateListener * myCreationListener
Definition: DtIntervisibilityDriver.h:391
DtSignalConnectionManager myConnections
Definition: DtIntervisibilityDriver.h:386
DtBasicEditingEventProcessor * myProcessor
Definition: DtIntervisibilityDriver.h:379
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
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:394
Contains makVrv:DtBaseConnection class.
DtVector myEndPosition
Definition: DtIntervisibilityDriver.h:360
bool myHatLinesOnSelectionOnly
Definition: DtIntervisibilityDriver.h:365
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:390
std::vector< DtElementID > UniqueIdList
Public Type Definitions.
Definition: DtElementData.h:49
Contains makVrv::DtUniqueID type.
ListenerMap myListeners
Definition: DtIntervisibilityDriver.h:378
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
DtElementID myStartAttachedId
Definition: DtIntervisibilityDriver.h:357
Connection for the DtIntervisibilityDriver. Provides access to rooted singletons and the display unit...
Definition: DtIntervisibilityDriver.h:309
ListenerCreatorMap myListenerCreatorMap
Map that will keep track of listener creator by string type.
Definition: DtIntervisibilityDriver.h:398
bool myFixedDistance
Definition: DtIntervisibilityDriver.h:366
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:182
DtDe & myDe
Definition: DtIntervisibilityDriver.h:342
std::string myClassName
Definition: DtIntervisibilityDriver.h:380

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)