VR-Forces 4.1.1 Class Documentation
DtVrfObjectManipulationHandlerBaseClass.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vrfGuiCore/vrfGuiCore.h>
15 #include <vrvCore/DtDe.h>
16 #include <vrvCore/DtEntityState.h>
17 #include <vrvCore/DtUniqueID.h>
18 #include <vlutil/vlPerformanceStats.h>
19 
20 #include <matrix/vlVector.h>
21 #include <matrix/geodCoord.h>
22 #include <vlpi/entityType.h>
23 
24 #include <boost/signal.hpp>
25 
26 namespace makVrv
27 {
28  class DtDe;
29  class DtChannel;
30  class DtSimObjectEntry;
31 }
32 
33 class DtEntityType;
34 class DtString;
35 
36 namespace makVrf
37 {
39  {
44  };
45 
47 
49 
54  {
55  public:
56  typedef std::vector<DtVrfObjectFacadeInterface*> VrfObjectEditFacadeList;
57 
58  public:
61 
62  public:
63 
68  virtual bool createObject(const DtEntityType& entType, int force,
69  DtCreationSignalType creationSignal=DtNoCreationSignal, const std::string& keywords = "");
70 
72  virtual bool createObject(const DtString& key, const DtString& associatedData,
73  DtCreationSignalType creationSignal=DtNoCreationSignal, const std::string& keywords = "");
74 
78  virtual void editSelectedObjects( const makVrv::DtUniqueID& editId,
79  makVrv::DtChannel& initiatingChannel, double waitTimeAfterComplete = 0. );
80 
82  virtual void setForce(int);
83  int force() const;
84 
86  virtual void setAllowCreationOnMouseClick(bool flag);
87 
89  virtual void setLabel(const std::string&);
90  virtual std::string label() const;
91 
93  virtual bool allowCreationOnMouseClick() const;
94 
96  virtual DtVector clampToGround(const DtVector&) const;
97  virtual DtGeodeticCoord clampToGround(const DtGeodeticCoord&) const;
98 
100  virtual void setAttachObjectToMouse(bool);
101 
103  virtual bool attachObjectToMouse() const;
104 
106  virtual void setHeading(double value);
107  virtual double heading() const;
108 
110  virtual void setLocation(const DtVector& loc);
111  virtual void setLocation(const DtVector& loc, double altAboveGround);
112 
114  virtual void stop();
115 
117  virtual void deferredStop();
118 
120  virtual bool createVrfObject() = 0;
121 
123  virtual bool modifyVrfObjects() = 0;
124 
126  virtual DtVrfObjectFacadeInterface* createLocalRepresentation(DtVrlinkSimulatedBaseStateView* editStateView = 0) = 0;
127 
129  virtual DtVrfObjectFacadeInterface* createLocalRepresentation(DtVrlinkSimulatedBaseStateView* editStateView,
130  makVrv::DtUniqueID sceneObjectId, DtVrlinkSimulatedBaseStateView* principalStateView) = 0;
131 
133  virtual void initializeEventProcessor();
134 
136  virtual void setOverlay(const std::string& name);
137 
139  virtual std::string getNextCreatingName(bool includeCurrent = false);
140 
142  virtual void setAltitudeAboveGL( double alt, bool setInProcessor = true );
143 
145  virtual void setAltitudeAboveSL( double alt, bool setInProcessor = true );
146 
147  virtual void setAltitudeClampType( DtAltitudeClampType type );
148 
149  void setCreating(bool b)
150  {
151  myCreating = b;
152  }
153 
154  bool creating() const
155  {
156  return myCreating;
157  }
158 
159  virtual DtVrfObjectFacadeInterface* principalObjectImage() const;
160  virtual makVrv::DtUniqueID principalObjectID() const;
161 
162  virtual void setUserData(const std::string& userData);
163  virtual const std::string& userData() const;
164 
165  virtual void slot_onComplete();
166  virtual void slot_onPlace(makVrv::DtUniqueID, const DtVector&, double altAboveGround);
167  virtual void slot_onEditComplete(makVrv::DtUniqueID, const DtVector&, double altAboveGround);
168  virtual void slot_onLocationChanged( const DtVector& location, double altAboveGround );
169  virtual void slot_onAltitudeIsDragging(bool);
170 
171  virtual void hideObject( const makVrv::DtUniqueID& id, bool hide );
172 
174  virtual void setPublishObject(bool);
175  virtual bool publishObject() const;
176 
178  virtual void setObjectName(const std::string& name);
179 
181  virtual bool isUniqueName() const;
182 
186  virtual double groundHeight( const DtVector& localPosition, DtVector* localGround = 0 ) const;
187 
188  virtual void setAltitudeAllowed(bool);
189  bool altitudeAllowed() const;
190 
191  virtual const std::string& objectName() const;
192 
195  virtual void setAnchorMouseToOrigin(bool);
196  virtual bool anchorMouseToOrigin() const;
197 
199  virtual void setAnchorPositionIsMouse(bool);
200  virtual bool anchorPositionIsMouse() const;
201 
203  virtual DtVector localLocation();
204 
205  virtual DtVector convertGeocentricToGround(const DtVector& geoc, double& altitude) const;
206 
207  virtual void setShowPropertiesDialogBeforeCreate(bool);
208  virtual bool showPropertiesDialogBeforeCreate() const;
209 
211  virtual bool keywordsContain(const std::string&) const;
212  virtual std::string keyword(const std::string&) const;
213 
214  virtual bool waitingToStop() const;
215 
217  virtual void cancel();
218 
220  virtual bool noStyle() const;
221 
226  boost::signal<void (bool)> signal_showPropertiesDialog;
227 
229  boost::signal<void (bool)> signal_attachObjectToMouse;
230 
232  boost::signal<void (DtVrfObjectFacadeInterface*, DtVrlinkSimulatedBaseStateView* editStateView)> signal_preVisualization;
233 
236  boost::signal<void (DtVrfObjectFacadeInterface*, bool)> signal_objectFacadeCreated;
237 
239  boost::signal<void (const DtEntityType&, int)> signal_started;
240 
242  boost::signal<void ( const DtEntityType&, std::string, int, const std::vector<DtVector>&, double, bool, bool, std::string, bool )> signal_createObject;
243 
245  boost::signal<void (const DtString&, const DtString&)> signal_createTerrainProp;
246 
248  boost::signal<void (DtVrfObjectManipulationHandlerBaseClass*)> signal_stopped;
249 
251  boost::signal<void (DtVrfObjectManipulationHandlerBaseClass*)> signal_complete;
252 
254  boost::signal<void (const DtVector& )> signal_locationChanged;
255 
257  boost::signal<void (double)> signal_headingChanged;
258 
260  boost::signal<void (double)> signal_altitudeChanged;
261 
263  boost::signal<void (const DtVector&)> signal_placement;
264 
267  boost::signal<void (DtVrfObjectManipulationHandlerBaseClass*)> signal_restoreSelectionState;
268 
270  boost::signal<void (const makVrv::DtUniqueID&)> signal_principalStateViewUpdated;
271 
273  boost::signal<void (DtVrfObjectFacadeInterface*)> signal_objectFacadeAboutToBeRemoved;
274 
275  protected:
277  virtual void slot_simObjectEntryToBeRemoved(const makVrv::DtSimObjectEntry&);
278 
280  virtual bool typeIsValidForEditingByHandler(const makVrv::DtElementEntry::ElementType&, const DtEntityType&) const;
281 
282  virtual void slot_onAltitudeChanged(const DtVector&, double);
283 
284  virtual void slot_onHeadingChanged( double heading );
285 
286  virtual void slot_onCancel();
287 
288  virtual std::string stripNumbers(const std::string& base) const;
289 
290  virtual void warpMouseToLocation( makVrv::DtChannel* channel, const DtVector& location ) const ;
291 
294  virtual void initializeEdit();
295 
296  virtual void slot_onPrincipalStateViewUpdated(DtVrlinkSimulatedBaseStateView* principalStateView,
297  const makVrv::DtUniqueID& principalSceneObjectId );
298 
299  virtual void slot_onStateViewUpdated( DtVrlinkSimulatedBaseStateView* editStateView, makVrv::DtUniqueID sceneObjectId,
300  DtVrlinkSimulatedBaseStateView* principalStateView);
301 
304  virtual bool centerOn(const makVrv::DtUniqueID& id, DtVector* centerPos = 0, const DtVector* centerHere = 0,
305  bool centerOnOnlyIfMousePositionIsOffWindow = true) const;
306 
307  virtual void setObjectImageAsAnchor(DtVrfObjectFacadeInterface* objectImage, const DtVector& geocLocation,
308  bool resetOrigin = false);
309 
310  virtual void setObjectImageRelativeToPrincipal(DtVrfObjectFacadeInterface* objectImage,
311  const DtVector& thisGeocLocation, const DtTaitBryan& thisGeocOrientation,
312  const DtVector& prGeocLocation, const DtTaitBryan& prGeocOrientation);
313 
314  virtual void initializeInterfaceForEdit(DtVrfObjectFacadeInterface*, makVrv::DtUniqueID,
315  const makVrv::DtVrlinkSimulatedBaseState&, const DtVector& principalLocation, const DtTaitBryan& principalOrientation);
316  virtual void calculateAnchor(const DtVector& localAnchor);
317  virtual void calculateAnchorBasedOnMousePosition(makVrv::DtChannel& channel);
318 
319  virtual void postCreateInitialize();
320 
321  virtual void parseKeywords(const std::string&);
322 
323  protected:
326  int myForce;
330  std::string myObjectName;
331  std::string myOverlay;
332 
337 
338  std::string myUserData;
339 
340  std::string myKey;
341  std::string myKeyData;
343 
345  DtReferenceEllipsoid* myReferenceForConversion;
347 
350  DtGeodeticCoord myAnchorPosition;
353  DtTimedSection* myDeferredStopTimer;
356 
358  std::vector<std::string> myKeywords;
359 
361  };
362 
364  {
365  public:
366  virtual DtVrfObjectManipulationHandlerBaseClass* create() const = 0;
367  };
368 
369  template <typename T>
371  {
372  public:
374  : myDe(de)
375  {
376  }
377 
379  {
380  }
381 
383  {
384  return new T(myDe);
385  }
386 
387  protected:
389  };
390 
391 }

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)