VR-Forces 4.10 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) 2020 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 
41  {
42  public:
43 
44  typedef boost::unordered_map<DtElementID, DtIntervisibilityElement*>
46  typedef boost::unordered_map<DtElementID, DtIntervisibilityStateListener*>
48  typedef std::pair<DtElementID, DtVector> AttachPoint;
49  typedef std::vector<AttachPoint> AttachPoints;
50 
51  public:
52 
54  DtIntervisibilityDriver( DtDe&, const std::string& className );
55 
57  virtual ~DtIntervisibilityDriver();
58 
60  virtual bool autoStart() const;
61 
63  DtIntervisibilityElement* findElement(DtElementID id);
64 
67  virtual DtIntervisibilityElement* createIntervisibilityLine(
68  const DtVector& startPoint, const DtVector& endPoint);
69 
74  virtual DtIntervisibilityElement* createIntervisibilityLine(
75  const AttachPoints& = AttachPoints());
76 
79  const DtUnicode& intervisibilityLine() const;
80 
83  virtual DtIntervisibilityElement* createIntervisibilityFan(
84  const DtVector& startPoint, const DtVector& endPoint);
85 
91  virtual DtIntervisibilityElement* createIntervisibilityFan(
92  const AttachPoints& = AttachPoints());
93 
96  const DtUnicode& intervisibilityFan() const;
97 
100  DtIntervisibilityElement* creatingElement() const;
101  DtIntervisibilityStateListener* creatingListener() const;
103 
105  const ElementMap& intervisibilityElements() const;
106 
109  virtual DtIntervisibilityElement* createIntervisibilityEntityFan(
110  const DtVector& startPoint, const DtVector& endPoint);
111 
117  virtual DtIntervisibilityElement* createIntervisibilityEntityFan(
118  const AttachPoints& = AttachPoints());
119 
122  const DtUnicode& intervisibilityEntityFan() const;
123 
126  void addListenerCreator(const std::string&,
128 
130  virtual void cancelChanges();
131 
134  virtual void destroy(DtElementID id);
135 
137  virtual void destroyAll();
138 
143  virtual void setAllowCreating(bool);
144 
151  virtual void setAllowEditing(bool);
152 
154  virtual DtIntervisibilityElement* create(const DtUnicode& definition,
155  const DtVector& startPoint, const DtVector& endPoint);
156 
157  virtual void intervisibilityObjectsShown( bool show );
158 
160  static DtIntervisibilityDriver* findDriver(DtDe& de);
161 
163  const std::string& className() const
164  {
165  return myClassName;
166  }
167 
169  static std::string theInstanceName();
170 
173  {
174  return myConnection;
175  }
176 
179  {
180  return myConnection;
181  }
182 
183  protected:
187  virtual DtBasicEditingEventProcessor* createEventProcessor() const;
188 
190  virtual DtIntervisibilityStateListener* createListener(
191  const std::string& definition) const;
192 
194  virtual DtIntervisibilityElement* createElement(
195  DtIntervisibilityStateListener*, const DtUnicode& definition) const;
196 
202  virtual DtIntervisibilityElement* create(const DtUnicode& elementDefinitionName,
203  const AttachPoints& = AttachPoints());
204 
206  virtual bool onTick();
207 
211  virtual bool onStart();
212 
216  virtual bool onStop();
217 
219  virtual void completeSetup();
220 
222  virtual void slot_onCurrentSelectionChanged(
223  const DtSelectionManager::IdSet& selected,
224  const DtSelectionManager::IdSet& deselected);
225 
227  virtual void select(const DtSelectionManager::IdSet&, bool);
228 
230  virtual void connectProcessorSignals();
231 
234  virtual void slot_locationChanged(const DtVector&, double altAboveGround);
235 
237  virtual void slot_altitudeChanged(const DtVector&, double);
238 
240  virtual void slot_altitudeIsDragging(bool);
241 
244  virtual void slot_place(DtUniqueID, const DtVector&, double altAboveGround);
245 
247  virtual void finishEditing();
248 
252  virtual void slot_dragStart(const DtSelectionManager::IdSet& set,
253  const DtVector&);
254 
258  virtual void modifyEditingObjects(const DtVector& pos, double altAboveGround);
259 
262  virtual void resetSelectionForEditableObjects();
263 
265  virtual DtVector clamp(const DtVector&, double altAboveGround) const;
266 
269  virtual void elementsRemoved(const DtElementData::UniqueIdList&);
270 
272  void installElementDefinitions(DtElementDefinitionManager& manager);
273 
274  public:
275 
281  {
282  public:
283 
286 
288  virtual ~DtIntervisibilityConnection();
289 
295  virtual DtVirtualBaseClass* findInstance( const std::string& instanceName );
296 
302  virtual void registerInstance( const std::string& instanceName, DtVirtualBaseClass* instance );
303 
305  virtual const DtDisplayUnitsConverter& displayUnitsConverter() const;
306 
308  virtual const DtCoordinateSystem& coordinateSystem() const;
309 
310  protected:
311 
313 
314  };
315 
316  protected:
317 
320  {
321 
325 
329 
333 
337 
338  };
339 
340  protected:
341 
342  typedef boost::unordered_map<DtElementID, OriginalInformation> Editing;
343  typedef std::map<std::string, DtIntervisibilityStateListenerCreator*>
345 
350  std::string myClassName;
355 
357 
363 
366 
370 
371  };
372 
373 
377  : public DtVirtualBaseClass
378  {
379  public:
380 
381  static DtIntervisibilityDriverCreator& instance( DtDe& de );
382 
383  static void registerInstance( DtDe& de, DtIntervisibilityDriverCreator* creator );
384 
387  virtual const std::string& extension() const;
388 
390  virtual DtIntervisibilityDriver* create( DtDe& de ) const;
391 
392  };
393 
394 }
std::pair< DtElementID, DtVector > AttachPoint
Definition: DtIntervisibilityDriver.h:48
bool myHatLinesEnabled
Definition: DtIntervisibilityDriver.h:334
DtChannel * myHiddenChannel
Definition: DtIntervisibilityDriver.h:369
DtVector myStartOffset
Definition: DtIntervisibilityDriver.h:328
Virtual base class.
Definition: DtVirtualBaseClass.h:19
A unicode string.
Definition: DtUnicode.h:33
DtBaseConnection * myConnection
Definition: DtIntervisibilityDriver.h:351
const DtBaseConnection * connection() const
Returns the driver&#39;s connection (const).
Definition: DtIntervisibilityDriver.h:178
std::vector< AttachPoint > AttachPoints
Definition: DtIntervisibilityDriver.h:49
The DtIntervisibilityElement class implements the common behavior of shape elements that are added to...
Definition: DtIntervisibilityElement.h:32
DtVector myEndOffset
Definition: DtIntervisibilityDriver.h:332
ElementMap myElements
Definition: DtIntervisibilityDriver.h:347
bool myDistribute
Definition: DtIntervisibilityDriver.h:354
This driver will manage the creation, modification and removal of intervisibility objects...
Definition: DtIntervisibilityDriver.h:40
DtVector myStartPosition
Definition: DtIntervisibilityDriver.h:326
Contains makVrv:DtSelectionManager class.
DtUniqueID myMovingVertexId
Definition: DtIntervisibilityDriver.h:323
DtDe & myDe
Definition: DtIntervisibilityDriver.h:346
DtSignalConnectionManager myProcessorConnections
Definition: DtIntervisibilityDriver.h:362
Creator for the intervisibility driver.
Definition: DtIntervisibilityDriver.h:376
DtElementID myEndAttachedId
Definition: DtIntervisibilityDriver.h:331
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:322
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:342
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:163
Editing information.
Definition: DtIntervisibilityDriver.h:319
The DtIntervisibilityStateListener is a class that will allow intervisibility objects to use start/en...
Definition: DtIntervisibilityStateListener.h:24
bool myAllowEditing
Definition: DtIntervisibilityDriver.h:352
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:34
The abstract Channel Class.
Definition: DtChannel.h:30
boost::unordered_map< DtElementID, DtIntervisibilityElement * > ElementMap
Definition: DtIntervisibilityDriver.h:45
bool myAllowCreating
Definition: DtIntervisibilityDriver.h:353
The DtDriver is an abstract class.
Definition: DtDriver.h:31
bool mySelected
Definition: DtIntervisibilityDriver.h:324
std::map< std::string, DtIntervisibilityStateListenerCreator * > ListenerCreatorMap
Definition: DtIntervisibilityDriver.h:344
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
DtVector myEditingAnchorLocation
Definition: DtIntervisibilityDriver.h:365
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtIntervisibilityStateListener * myCreationListener
Definition: DtIntervisibilityDriver.h:361
DtSignalConnectionManager myConnections
Definition: DtIntervisibilityDriver.h:356
DtBasicEditingEventProcessor * myProcessor
Definition: DtIntervisibilityDriver.h:349
Utility class for doing global unit conversion.
Definition: DtDisplayUnitsSettingsManager.h:59
boost::unordered_map< DtElementID, DtIntervisibilityStateListener * > ListenerMap
Definition: DtIntervisibilityDriver.h:47
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:41
Editing myEditing
Definition: DtIntervisibilityDriver.h:364
Contains makVrv:DtBaseConnection class.
DtVector myEndPosition
Definition: DtIntervisibilityDriver.h:330
bool myHatLinesOnSelectionOnly
Definition: DtIntervisibilityDriver.h:335
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:360
std::vector< DtElementID > UniqueIdList
Definition: DtElementData.h:48
Contains makVrv::DtUniqueID type.
ListenerMap myListeners
Definition: DtIntervisibilityDriver.h:348
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
DtElementID myStartAttachedId
Definition: DtIntervisibilityDriver.h:327
Connection for the DtIntervisibilityDriver.
Definition: DtIntervisibilityDriver.h:280
ListenerCreatorMap myListenerCreatorMap
Map that will keep track of listener creator by string type.
Definition: DtIntervisibilityDriver.h:368
bool myFixedDistance
Definition: DtIntervisibilityDriver.h:336
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
DtBaseConnection * connection()
Returns the driver&#39;s connection.
Definition: DtIntervisibilityDriver.h:172
Creator for base intervisibility creator.
Definition: DtIntervisibilityStateListener.h:156
DtDe & myDe
Definition: DtIntervisibilityDriver.h:312
std::string myClassName
Definition: DtIntervisibilityDriver.h:350

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)