VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfObjectManipulationManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vrfGuiCore/vrfGuiCore.h>
19 #include <vrvCore/DtUniqueID.h>
21 #include <vrvCore/DtElementEntry.h>
23 
24 #include <boost/signals2.hpp>
25 
26 namespace makVrv
27 {
28  class DtDe;
29  class DtInputDriver;
30  class DtMouseEvent;
31  class DtChannel;
32  class DtKeyEvent;
33  class DtObserver;
34 }
35 
36 #define DtMultipleObjectEditorManipulationHandlerType DtEntityType(300, 300, 300, 300, 300, 300, 300)
37 
38 namespace makVrf
39 {
40  class DtVrfObjectManipulationHandlerBaseClass;
41  class DtVrfEditManagerEventProcessor;
42 
45  {
46  protected:
49  typedef boost::function< void ( DtEnvironmentStateView* )> ProcessEnvStateFunction;
50 
51  public:
52 
54  {
55  AllowNone = 0,
56  AllowLocalObjects = 0x00000001,
57  AllowPublishedObjects = 0x00000002,
58  AllowAll = AllowLocalObjects | AllowPublishedObjects
59  };
60 
61  public:
62 
65 
68 
70  bool creatingObject() const;
71 
73  DtVrfObjectManipulationHandlerBaseClass* currentObjectManipulationHandler();
74 
75  public:
77  virtual void setAlwaysCreateLocal(bool);
78  virtual bool alwaysCreateLocal() const;
79 
81  static DtVrfObjectManipulationManager& instance(makVrv::DtDe& de);
82 
85  virtual void addObjectManipulationHandler(const DtEntityType&, DtVrfObjectManipulationHandlerCreatorInterface*);
86  virtual void removeObjectManipulationHandler(const DtEntityType&);
87 
89  virtual makVrv::DtElementEntry::ElementType mapKindToType(int) const;
90 
92  virtual void addKindToTypeMapping(int, const makVrv::DtElementEntry::ElementType&);
93 
95  virtual bool hasTypeToKindMapping(const makVrv::DtElementEntry::ElementType&) const;
96 
99  virtual void addObjectManipulationHandler(const makVrv::DtElementEntry::ElementType&, DtVrfObjectManipulationHandlerCreatorInterface*);
100  virtual void removeObjectManipulationHandler(const makVrv::DtElementEntry::ElementType&);
101 
105  virtual bool isEditable(const makVrv::DtUniqueID&, const std::string& keywordsToCheck = "") const;
106  virtual void setEditable(const makVrv::DtUniqueID&, bool);
107 
109  virtual bool hasKeyword(const std::string& keyword, makVrv::DtUniqueID id) const;
110 
112  virtual std::vector<DtVector> convertToLocal(const std::vector<DtVector>& geocentric) const;
113 
115  virtual bool isEditingOrCreating() const;
116 
118  virtual bool isBoxObject(const DtEntityType&, const std::string& keywords) const;
119 
123  virtual void createValidSelection(makVrv::DtSelectionManager::IdSet&, bool& changed) const;
124 
128  virtual DtVrfObjectManipulationHandlerBaseClass* manipulationHandlerFor(const DtEntityType&, const std::string& keywords) const;
129  virtual DtVrfObjectManipulationHandlerBaseClass* manipulationHandlerFor(const makVrv::DtElementEntry::ElementType&) const;
130 
132  virtual bool isCreatingProp() const;
133 
136  virtual bool isDestroyingProp() const;
137  virtual void setIsDestroyingProp(bool);
138 
140  virtual bool hasObjectFacade(makVrv::DtUniqueID) const;
141 
142  protected:
143 
145  virtual void slot_onCreationStopped(DtVrfObjectManipulationHandlerBaseClass*);
146 
148  virtual void slot_onEventProcessorRemoved(DtVrfObjectManipulationHandlerBaseClass*);
149 
151  virtual void slot_onTerrainPropCreationStopped(DtVrfObjectManipulationHandlerBaseClass*);
152 
153  virtual void slot_onCreateObject(const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&);
154 
156  virtual void slot_onCreateTerrainProp(const DtString& propType, const DtString& propModelDef);
157 
158  virtual void onInputDriverToBeDestroyed( makVrv::DtInputDriver* inputDriver );
159 
160  virtual void cleanup();
161 
163  virtual void onObjectFacadeCreated(DtVrfObjectFacadeInterface*, bool editing);
164 
166  virtual void onObjectFacadeAboutToBeRemoved(DtVrfObjectFacadeInterface*);
167 
168  public:
169 
171  virtual void mapEntityTypeToVertexEditingType(const DtEntityType& from, const DtEntityType& to);
172  virtual DtEntityType mapToVertexEditingType(const DtEntityType& from) const;
173  virtual void removeToVertexEditingType(const DtEntityType& from);
174 
183  virtual void createObject(const DtEntityType&, int force,DtCreationSignalType creationSignal = DtNoCreationSignal,
184  const std::string& keywords = "");
185 
187  virtual void setLocation(const DtVector& loc);
188 
190  virtual void createTerrainProp(const DtString& propType, const DtString& propModelDef);
191 
193  virtual void stop();
194 
195  public:
197  boost::signals2::signal<void (bool&)> signal_deleteSelected;
198 
200  boost::signals2::signal<void ()> signal_selectionRestored;
201 
203  boost::signals2::signal<void (int, DtEnvironmentStateView*, DtVector)> signal_aboutToDeletePoint;
204 
206  boost::signals2::signal<void (int, DtEnvironmentStateView*, DtVector&)> signal_aboutToAddPoint;
207 
208  boost::signals2::signal<void ()> signal_stopped;
209  boost::signals2::signal<void (const DtEntityType&, int, makVrf::DtCreationSignalType)> signal_creatingObject;
210  boost::signals2::signal<void (const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&)> signal_createObject;
211 
212  boost::signals2::signal<void ()> signal_creatingTerrainProp;
213  boost::signals2::signal<void (const DtString&, const DtString&)> signal_createTerrainProp;
214 
215  boost::signals2::signal<void (DtVrfObjectFacadeInterface*, bool)> signal_objectFacadeCreated;
216  boost::signals2::signal<void (DtVrfObjectFacadeInterface*)> signal_objectFacadeAboutToBeRemoved;
217 
218  //Sent by event processor when an item is double clicked that does not have an object type to edit
219  boost::signals2::signal<void (makVrv::DtElementID)> signal_unhandledEdit;
220 
221  boost::signals2::signal<void ()> signal_eventProcessorRemoved;
222 
223  public:
224 
226 
227  virtual void setAllowEditing(bool b);
228  virtual void setAllowEditingOf(AllowEditingOf);
229 
230  virtual bool allowEditing() const;
231  virtual bool allowLocalObjectsEditing() const;
232  virtual bool allowPublishedObjectsEditing() const;
233 
234  AllowEditingOf allowEditingOf() const { return myAllowEditingOf; };
235 
239  virtual void editSelectedObjects( const makVrv::DtUniqueID& principalID,
240  makVrv::DtChannel& initiatingChannel, const DtEditingType& edtype=Mouse );
241 
248  virtual void editSelectedObjects( const makVrv::DtSelectionManager::IdSet& objects,
249  makVrv::DtChannel& initiatingChannel, const DtEditingType& edtype=Mouse );
250 
254  virtual void setEditStartedByDoubleClick(bool);
255 
257  virtual void deleteSelected();
258  virtual void deleteProp(makVrv::DtUniqueID id);
259 
260  virtual void deleteVertex( const makVrv::DtUniqueID& vertexId );
261  virtual void deleteVertex( const makVrv::DtUniqueID& shapeId,
262  const DtVector& dbLocation );
263 
264  virtual void addVertexBefore( const makVrv::DtUniqueID& vertexId );
265 
266  virtual void addVertexBefore( const makVrv::DtUniqueID& shapeId,
267  const DtVector& dbLocation );
268 
269  virtual void addVertexBeforeSelected();
270 
271  virtual void addVertexAfter( const makVrv::DtUniqueID& vertexId );
272 
273  virtual void addVertexAfter( const makVrv::DtUniqueID& shapeId,
274  const DtVector& dbLocation );
275 
276  virtual void addVertexAfterSelected();
277 
279  virtual int indexOfVertex( const DtEnvironmentStateView* shapeStateView,
280  const DtVector& dbVtxLocation ) const;
281 
284  virtual bool getVertexLocation( const makVrv::DtUniqueID& vertexId,
285  DtVector& dbLocation ) const;
286 
292  virtual void requestAndProcessEnvState( const makVrv::DtUniqueID& sceneId,
293  ProcessEnvStateFunction* processor );
294 
296  virtual void setWaitTimeAfterComplete(double);
297  virtual double waitTimeAfterComplete() const;
298 
300  virtual void setLocalWaitTimeAfterComplete(double);
301  virtual double localWaitTimeAfterComplete() const;
302 
304  virtual double waitTimeAfterComplete(makVrv::DtUniqueID) const;
305 
307  virtual bool isEditing(makVrv::DtUniqueID id) const;
308 
309  virtual DtVrfObjectManipulationHandlerBaseClass* vertexEditingHandler(makVrv::DtUniqueID principalID) const;
310  virtual DtVrfObjectManipulationHandlerBaseClass* editingHandlerFor(makVrv::DtUniqueID principalID) const;
311 
312  boost::signals2::signal<void (const makVrv::DtUniqueID&, DtEditingType)> signal_editingObject;
313  boost::signals2::signal<void (DtEntityType, DtEditingType)> signal_editingObjectByEntityType;
314  boost::signals2::signal<void (const makVrv::DtUniqueID&, DtEditingType)> signal_editingTerrainProp;
315 
316  boost::signals2::signal<void (const makVrv::DtSelectionManager::IdSet&, DtEditingType)> signal_editingObjects;
317  boost::signals2::signal<void (const makVrv::DtSelectionManager::IdSet&, DtEditingType)> signal_editingTerrainProps;
318 
319  boost::signals2::signal<void ()> signal_editStopped;
320  boost::signals2::signal<void ()> signal_editingNotAllowed;
321 
322  protected:
323 
324  virtual void slot_editStopped( DtVrfObjectManipulationHandlerBaseClass* );
325 
326  virtual void slot_stateReturned( DtEnvironmentStateView* shapeStateView,
327  const makVrv::DtUniqueID& shapeId, ProcessEnvStateFunction* processor );
328 
329  virtual void deleteVertexUsingState( DtEnvironmentStateView* shapeStateView,
330  const makVrv::DtUniqueID& shapeId, const DtVector& dbVtxLocation );
331 
332  virtual void addVertexUsingState( DtEnvironmentStateView* shapeStateView,
333  const makVrv::DtUniqueID& shapeId, const DtVector& dbVtxLocation, bool before );
334 
335  virtual void sessionStatusChanged(int);
336 
337  virtual void restoreSelectionState( DtVrfObjectManipulationHandlerBaseClass* handler );
338 
339  virtual void slot_onTick();
340 
341  virtual void slot_onAttributesChanged(
343 
344  virtual bool isOnIdList( makVrv::DtUniqueID id,
345  const makVrv::DtSelectionManager::IdSet& list );
346 
347  virtual void addHandlerToBeCleanedUp(DtVrfObjectManipulationHandlerBaseClass*);
348 
349  virtual void cacheVisibleObjects(const makVrv::DtSelectionManager::IdSet&);
350 
351  public:
352  virtual bool canDeleteAPoint( DtEnvironmentStateView* shapeStateView ) const;
353  virtual bool shapeAtMinimum( DtEnvironmentStateView* shapeStateView ) const;
354  virtual bool shapeAtMaximum( DtEnvironmentStateView* shapeStateView ) const;
355 
357  virtual bool canEditVertex(const DtEntityType& t, makVrv::DtUniqueID parentID, makVrv::DtUniqueID vertexID) const;
358 
359  protected:
366 
371 
372  typedef boost::unordered_map<makVrv::DtUniqueID, bool> EditableMap;
374 
375  typedef boost::unordered_map<int, makVrv::DtElementEntry::ElementType> KindToTypeMap;
377 
378  typedef boost::unordered_map<makVrv::DtElementEntry::ElementType, DtVrfObjectManipulationHandlerCreatorInterface*> TypeCreatorMap;
380 
383 
384  std::vector<DtVrfObjectManipulationHandlerBaseClass*> myHandlersToBeCleanedUp;
385 
387 
390  };
391 
394  {
395 
396  public:
399  static DtVrfObjectManipulationManagerCreator& instance( makVrv::DtDe& de );
400 
402  static void registerInstance( makVrv::DtDe& de,
404 
406  virtual DtVrfObjectManipulationManager* create( makVrv::DtDe& de );
407  };
408 }
AllowEditingOf myAllowEditingOf
Definition: vrfObjectManipulationManager.h:386
bool myAlwaysCreateLocal
Definition: vrfObjectManipulationManager.h:365
Virtual base class.
Definition: DtVirtualBaseClass.h:22
boost::signals2::signal< void(makVrv::DtElementID)> signal_unhandledEdit
Definition: vrfObjectManipulationManager.h:219
boost::signals2::signal< void(const makVrv::DtUniqueID &, DtEditingType)> signal_editingObject
Definition: vrfObjectManipulationManager.h:312
TypeCreatorMap myTypeCreators
Definition: vrfObjectManipulationManager.h:379
boost::signals2::signal< void(const makVrv::DtUniqueID &, DtEditingType)> signal_editingTerrainProp
Definition: vrfObjectManipulationManager.h:314
makVrv::DtDe & myDe
Definition: vrfObjectManipulationManager.h:360
boost::signals2::signal< void()> signal_editStopped
Definition: vrfObjectManipulationManager.h:319
double myWaitTimeAfterComplete
Definition: vrfObjectManipulationManager.h:381
boost::unordered_map< int, makVrv::DtElementEntry::ElementType > KindToTypeMap
Definition: vrfObjectManipulationManager.h:375
Contains makVrv:DtSelectionManager class.
Definition: vrfObjectManipulationManager.h:392
KindToTypeMap myKindToTypeMap
Definition: vrfObjectManipulationManager.h:376
makVrv::DtSelectionManager::IdSet myRemainingSavedSelections
Definition: vrfObjectManipulationManager.h:368
bool myIsDestroyingProp
Definition: vrfObjectManipulationManager.h:389
DtEditingType
Definition: vrfObjectManipulationHandlerBaseClass.h:44
DtVrfEditManagerEventProcessor * myEventProcessor
Definition: vrfObjectManipulationManager.h:364
VertexEditingTypeMap myVertexEditingTypeMap
Definition: vrfObjectManipulationManager.h:362
boost::signals2::signal< void()> signal_eventProcessorRemoved
Definition: vrfObjectManipulationManager.h:221
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
The Master Scenario Settings Dialog.
Definition: vrfObjectManipulationManager.h:44
The abstract Channel Class.
Definition: DtChannel.h:29
boost::signals2::signal< void(const makVrv::DtSelectionManager::IdSet &, DtEditingType)> signal_editingTerrainProps
Definition: vrfObjectManipulationManager.h:317
boost::signals2::signal< void()> signal_selectionRestored
Signal when the selection has been restored to what it was before creation.
Definition: vrfObjectManipulationManager.h:200
makVrv::DtSelectionManager::IdSet mySavedSelectionState
Definition: vrfObjectManipulationManager.h:367
DtOrderedEntityTypeList< DtEntityType * > VertexEditingTypeMap
Definition: vrfObjectManipulationManager.h:48
boost::unordered_map< makVrv::DtElementEntry::ElementType, DtVrfObjectManipulationHandlerCreatorInterface * > TypeCreatorMap
Definition: vrfObjectManipulationManager.h:378
Contains makVrv::DtVirtualBaseClass class.
makVrv::DtSelectionManager::IdSet myObjectsEditing
Definition: vrfObjectManipulationManager.h:369
boost::signals2::signal< void()> signal_editingNotAllowed
Definition: vrfObjectManipulationManager.h:320
makVrv::DtSignalConnectionManager myAnnouncerSignals
Definition: vrfObjectManipulationManager.h:388
Definition: vrfObjectFacadeInterface.h:47
Definition: vrfObjectManipulationHandlerBaseClass.h:73
Definition: vrfObjectManipulationHandlerBaseClass.h:46
Definition: vrfObjectManipulationHandlerBaseClass.h:88
boost::signals2::signal< void(bool &)> signal_deleteSelected
Signal to delete the selected objects. Set handled to true if delete is handled.
Definition: vrfObjectManipulationManager.h:197
std::vector< EntryAttributes > EntryAttributesList
Definition: DtElementAttributeManager.h:41
This class&#39;s main responsibility is to handle keyboard and mouse events from OSG (Qt events are route...
Definition: DtInputDriver.h:44
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
boost::unordered_map< makVrv::DtUniqueID, bool > EditableMap
Definition: vrfObjectManipulationManager.h:372
boost::signals2::signal< void(DtEntityType, DtEditingType)> signal_editingObjectByEntityType
Definition: vrfObjectManipulationManager.h:313
VrfObjectManipulationCreators myManipulationHandlers
Definition: vrfObjectManipulationManager.h:361
ElementType
Definition: DtElementEntry.h:26
Definition: vrfObjectManipulationHandlerBaseClass.h:806
unsigned long long DtUniqueID
Definition: DtUniqueID.h:22
boost::signals2::signal< void(DtVrfObjectFacadeInterface *)> signal_objectFacadeAboutToBeRemoved
Definition: vrfObjectManipulationManager.h:216
AllowEditingOf allowEditingOf() const
Definition: vrfObjectManipulationManager.h:234
boost::signals2::signal< void(const makVrv::DtSelectionManager::IdSet &, DtEditingType)> signal_editingObjects
Definition: vrfObjectManipulationManager.h:316
boost::signals2::signal< void(int, DtEnvironmentStateView *, DtVector &)> signal_aboutToAddPoint
About to add the point at the given index for the given state view. Point is in world coordinates...
Definition: vrfObjectManipulationManager.h:206
Definition: vrfObjectManipulationHandlerBaseClass.h:477
DtOrderedEntityTypeList< DtVrfObjectManipulationHandlerCreatorInterface * > VrfObjectManipulationCreators
Definition: vrfObjectManipulationManager.h:47
boost::signals2::signal< void(const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData &)> signal_createObject
Definition: vrfObjectManipulationManager.h:210
AllowEditingOf
Definition: vrfObjectManipulationManager.h:53
Base class to provide boost signal/slot management.
boost::signals2::signal< void()> signal_creatingTerrainProp
Definition: vrfObjectManipulationManager.h:212
boost::signals2::signal< void()> signal_stopped
Definition: vrfObjectManipulationManager.h:208
makVrv::DtSelectionManager::IdSet myVisibleObjects
Definition: vrfObjectManipulationManager.h:370
boost::signals2::signal< void(const DtEntityType &, int, makVrf::DtCreationSignalType)> signal_creatingObject
Definition: vrfObjectManipulationManager.h:209
Contains makVrv::DtUniqueID type.
Contains the DtElementAttributeManager class declaration.
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
boost::function< void(DtEnvironmentStateView *)> ProcessEnvStateFunction
Definition: vrfObjectManipulationManager.h:49
std::vector< DtVrfObjectManipulationHandlerBaseClass * > myHandlersToBeCleanedUp
Definition: vrfObjectManipulationManager.h:384
double myLocalWaitTimeAfterComplete
Definition: vrfObjectManipulationManager.h:382
EditableMap myEditableMap
Definition: vrfObjectManipulationManager.h:373
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
DtCreationSignalType
Definition: vrfObjectManipulationHandlerBaseClass.h:71
boost::signals2::signal< void(const DtString &, const DtString &)> signal_createTerrainProp
Definition: vrfObjectManipulationManager.h:213
Listen for double-click events on behalf of the DtVrfEditManager and initiate the edit process...
Definition: vrfEditManagerEventProcessor.h:35
Contains makVrv::DtElementEntry class.
boost::signals2::signal< void(DtVrfObjectFacadeInterface *, bool)> signal_objectFacadeCreated
Definition: vrfObjectManipulationManager.h:215
boost::signals2::signal< void(int, DtEnvironmentStateView *, DtVector)> signal_aboutToDeletePoint
About to delete the point for the given state view at the given index.
Definition: vrfObjectManipulationManager.h:203
DtVrfObjectManipulationHandlerBaseClass * myCurrentObjectManipulationHandler
Definition: vrfObjectManipulationManager.h:363

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)