VR-Forces 4.1 Class Documentation
DtVrfObjectManipulationHandlerBaseClass.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 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 }
31 
32 class DtEntityType;
33 class DtString;
34 
35 namespace makVrf
36 {
38  {
43  };
44 
46 
48 
53  {
54  public:
55  typedef std::vector<DtVrfObjectFacadeInterface*> VrfObjectEditFacadeList;
56 
57  public:
60 
61  public:
62 
67  virtual bool createObject(const DtEntityType& entType, int force,
68  DtCreationSignalType creationSignal=DtNoCreationSignal, const std::string& keywords = "");
69 
71  virtual bool createObject(const DtString& key, const DtString& associatedData,
72  DtCreationSignalType creationSignal=DtNoCreationSignal, const std::string& keywords = "");
73 
77  virtual void editSelectedObjects( const makVrv::DtUniqueID& editId,
78  makVrv::DtChannel& initiatingChannel, double waitTimeAfterComplete = 0. );
79 
81  virtual void setForce(int);
82  int force() const;
83 
85  virtual void setAllowCreationOnMouseClick(bool flag);
86 
88  virtual void setLabel(const std::string&);
89  virtual std::string label() const;
90 
92  virtual bool allowCreationOnMouseClick() const;
93 
95  virtual DtVector clampToGround(const DtVector&) const;
96  virtual DtGeodeticCoord clampToGround(const DtGeodeticCoord&) const;
97 
99  virtual void setAttachObjectToMouse(bool);
100 
102  virtual bool attachObjectToMouse() const;
103 
105  virtual void setHeading(double value);
106  virtual double heading() const;
107 
109  virtual void setLocation(const DtVector& loc);
110  virtual void setLocation(const DtVector& loc, double altAboveGround);
111 
113  virtual void stop();
114 
116  virtual void deferredStop();
117 
119  virtual bool createVrfObject() = 0;
120 
122  virtual bool modifyVrfObjects() = 0;
123 
125  virtual DtVrfObjectFacadeInterface* createLocalRepresentation(DtVrlinkSimulatedBaseStateView* editStateView = 0) = 0;
126 
128  virtual DtVrfObjectFacadeInterface* createLocalRepresentation(DtVrlinkSimulatedBaseStateView* editStateView,
129  makVrv::DtUniqueID sceneObjectId, DtVrlinkSimulatedBaseStateView* principalStateView) = 0;
130 
132  virtual void initializeEventProcessor();
133 
135  virtual void setOverlay(const std::string& name);
136 
138  virtual std::string getNextCreatingName(bool includeCurrent = false);
139 
141  virtual void setAltitudeAboveGL( double alt, bool setInProcessor = true );
142 
144  virtual void setAltitudeAboveSL( double alt, bool setInProcessor = true );
145 
146  virtual void setAltitudeClampType( DtAltitudeClampType type );
147 
148  void setCreating(bool b)
149  {
150  myCreating = b;
151  }
152 
153  bool creating() const
154  {
155  return myCreating;
156  }
157 
158  virtual DtVrfObjectFacadeInterface* principalObjectImage() const;
159  virtual makVrv::DtUniqueID principalObjectID() const;
160 
161  virtual void setUserData(const std::string& userData);
162  virtual const std::string& userData() const;
163 
164  virtual void slot_onComplete();
165  virtual void slot_onPlace(makVrv::DtUniqueID, const DtVector&, double altAboveGround);
166  virtual void slot_onEditComplete(makVrv::DtUniqueID, const DtVector&, double altAboveGround);
167  virtual void slot_onLocationChanged( const DtVector& location, double altAboveGround );
168  virtual void slot_onAltitudeIsDragging(bool);
169 
170  virtual void hideObject( const makVrv::DtUniqueID& id, bool hide );
171 
173  virtual void setPublishObject(bool);
174  virtual bool publishObject() const;
175 
177  virtual void setObjectName(const std::string& name);
178 
180  virtual bool isUniqueName() const;
181 
185  virtual double groundHeight( const DtVector& localPosition, DtVector* localGround = 0 ) const;
186 
187  virtual void setAltitudeAllowed(bool);
188  bool altitudeAllowed() const;
189 
190  virtual const std::string& objectName() const;
191 
194  virtual void setAnchorToOrigin(bool);
195  virtual bool anchorToOrigin() const;
196 
198  virtual DtVector localLocation();
199 
200  virtual DtVector convertGeocentricToGround(const DtVector& geoc, double& altitude) const;
201 
202  virtual void setShowPropertiesDialogBeforeCreate(bool);
203  virtual bool showPropertiesDialogBeforeCreate() const;
204 
206  virtual bool keywordsContain(const std::string&) const;
207  virtual std::string keyword(const std::string&) const;
208 
209  virtual bool waitingToStop() const;
210 
212  virtual void cancel();
213 
215  virtual bool noStyle() const;
216 
221  boost::signal<void (bool)> signal_showPropertiesDialog;
222 
224  boost::signal<void (bool)> signal_attachObjectToMouse;
225 
227  boost::signal<void (DtVrfObjectFacadeInterface*, DtVrlinkSimulatedBaseStateView* editStateView)> signal_preVisualization;
228 
231  boost::signal<void (DtVrfObjectFacadeInterface*, bool)> signal_objectFacadeCreated;
232 
234  boost::signal<void (const DtEntityType&, int)> signal_started;
235 
237  boost::signal<void ( const DtEntityType&, std::string, int, const std::vector<DtVector>&, double, bool, bool, std::string, bool )> signal_createObject;
238 
240  boost::signal<void (const DtString&, const DtString&)> signal_createTerrainProp;
241 
243  boost::signal<void (DtVrfObjectManipulationHandlerBaseClass*)> signal_stopped;
244 
246  boost::signal<void (DtVrfObjectManipulationHandlerBaseClass*)> signal_complete;
247 
249  boost::signal<void (const DtVector& )> signal_locationChanged;
250 
252  boost::signal<void (double)> signal_headingChanged;
253 
255  boost::signal<void (double)> signal_altitudeChanged;
256 
258  boost::signal<void (const DtVector&)> signal_placement;
259 
262  boost::signal<void (DtVrfObjectManipulationHandlerBaseClass*)> signal_restoreSelectionState;
263 
265  boost::signal<void ()> signal_principalStateViewUpdated;
266 
268  boost::signal<void (DtVrfObjectFacadeInterface*)> signal_objectFacadeAboutToBeRemoved;
269 
270  protected:
271 
273  virtual bool typeIsValidForEditingByHandler(const makVrv::DtElementEntry::ElementType&, const DtEntityType&) const;
274 
275  virtual void slot_onAltitudeChanged(const DtVector&, double);
276 
277  virtual void slot_onHeadingChanged( double heading );
278 
279  virtual void slot_onCancel();
280 
281  virtual std::string stripNumbers(const std::string& base) const;
282 
283  virtual void warpMouseToLocation( makVrv::DtChannel* channel, const DtVector& location ) const ;
284 
287  virtual void initializeEdit();
288 
289  virtual void slot_onPrincipalStateViewUpdated(DtVrlinkSimulatedBaseStateView* principalStateView,
290  const makVrv::DtUniqueID& principalSceneObjectId );
291 
292  virtual void slot_onStateViewUpdated( DtVrlinkSimulatedBaseStateView* editStateView, makVrv::DtUniqueID sceneObjectId,
293  DtVrlinkSimulatedBaseStateView* principalStateView);
294 
297  virtual bool centerOn(const makVrv::DtUniqueID& id, DtVector* centerPos = 0, const DtVector* centerHere = 0,
298  bool centerOnOnlyIfMousePositionIsOffWindow = true) const;
299 
300  virtual void setObjectImageAsAnchor(DtVrfObjectFacadeInterface* objectImage, const DtVector& geocLocation,
301  bool resetOrigin = false);
302 
303  virtual void setObjectImageRelativeToPrincipal(DtVrfObjectFacadeInterface* objectImage,
304  const DtVector& thisGeocLocation, const DtTaitBryan& thisGeocOrientation,
305  const DtVector& prGeocLocation, const DtTaitBryan& prGeocOrientation);
306 
307  virtual void initializeInterfaceForEdit(DtVrfObjectFacadeInterface*, makVrv::DtUniqueID,
308  const makVrv::DtVrlinkSimulatedBaseState&, const DtVector& principalLocation, const DtTaitBryan& principalOrientation);
309  virtual void calculateAnchor(const DtVector& localAnchor);
310  virtual void calculateAnchorBasedOnMousePosition(makVrv::DtChannel& channel);
311 
312  virtual void postCreateInitialize();
313 
314  virtual void parseKeywords(const std::string&);
315 
316  protected:
319  int myForce;
323  std::string myObjectName;
324  std::string myOverlay;
325 
330 
331  std::string myUserData;
332 
333  std::string myKey;
334  std::string myKeyData;
336 
338  DtReferenceEllipsoid* myReferenceForConversion;
340 
343  DtGeodeticCoord myAnchorPosition;
345  DtTimedSection* myDeferredStopTimer;
348 
350  std::vector<std::string> myKeywords;
351 
353  };
354 
356  {
357  public:
358  virtual DtVrfObjectManipulationHandlerBaseClass* create() const = 0;
359  };
360 
361  template <typename T>
363  {
364  public:
366  : myDe(de)
367  {
368  }
369 
371  {
372  }
373 
375  {
376  return new T(myDe);
377  }
378 
379  protected:
381  };
382 
383 }

Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)