VR-Forces 4.3 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
localObjectManager.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2013 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
8 #pragma once
9 
10 #include <vrfGuiCore/vrfGuiCore.h>
17 #include <vrvCore/DtEntityState.h>
18 #include <vrvCore/DtStateView.h>
22 
23 #include <vlutil/vlSmartPointers.h>
24 #include <boost/shared_ptr.hpp>
25 
26 #include <boost/archive/xml_iarchive.hpp>
27 #include <boost/archive/xml_oarchive.hpp>
28 #include <boost/serialization/access.hpp>
29 #include <boost/serialization/nvp.hpp>
30 #include <boost/serialization/list.hpp>
31 #include <boost/serialization/map.hpp>
32 #include <boost/serialization/vector.hpp>
33 #include <boost/serialization/string.hpp>
34 
36 
37 class DtEntityType;
38 class DtVector;
39 
40 namespace makVrv
41 {
42  class DtDe;
43  class DtTacticalGraphicOverlay;
44  struct DtVrlinkSimulatedBaseState;
45  struct DtVrlinkSimulatedEntityState;
46 }
47 
50 namespace makVrf
51 {
52  class DtVrfObjectFacadeInterface;
53  class DtEnvironmentalFacadeCollection;
54  class DtEntityFacadeCollection;
55  struct DtVrlinkSimulatedEnvironmentProcess;
56 
64 
66  {
67  public:
69 
70  static DtLocalObjectManager& instance(makVrv::DtDe& de);
71  static void registerInstance(makVrv::DtDe& de, DtLocalObjectManager*);
72 
73  virtual ~DtLocalObjectManager();
74 
76  virtual bool isCreating() const;
77 
79  virtual void tacticalGraphicsVertexSelected(
80  const makVrv::DtUniqueID& selected, const makVrv::DtUniqueID& parentElementID);
81 
83  virtual void tacticalGraphicsVertexDeselected(
84  const makVrv::DtUniqueID& deselected, const makVrv::DtUniqueID& parent);
85 
87  virtual void slot_onCurrentSelectionChanged(
88  const makVrv::DtSelectionManager::IdSet& selected,
89  const makVrv::DtSelectionManager::IdSet& deselected);
90 
94 
102  virtual DtEnvironmentalFacadeCollection* create(const DtEntityType& t,
103  const std::vector<DtVector>& localPoints,
104  int force,
106  int modelSet = -1, bool keepName = false);
107 
110  virtual DtEntityFacadeCollection* create(const makVrv::DtVrlinkSimulatedEntityState&, const std::string& overlayParent = "");
111 
119  virtual DtEntityFacadeCollection* create(const DtEntityCreationData&,
120  int modelSet = -1, bool keepName = false);
121 
123  virtual const makVrv::DtTacticalGraphicOverlay* createOnLayer(const std::string& layerName = "");
124 
126  virtual void completeStateUpdate(makVrv::DtUniqueID id);
127 
129  virtual void setVisible(makVrv::DtUniqueID id, bool hide);
130 
132  virtual bool isLocal(makVrv::DtUniqueID id) const;
133 
134  virtual void updateState(makVrv::DtUniqueID id);
135 
138  virtual void setEditable(makVrv::DtUniqueID id, bool);
139 
142  virtual bool isEditable(makVrv::DtUniqueID id) const;
143 
145  virtual bool isMemberOfLayer(makVrv::DtUniqueID id, const std::string& layername) const;
146 
148  virtual void deleteLocal(makVrv::DtUniqueID id);
149 
151  virtual void deleteAll();
152 
154  virtual void deleteAllFromLayer(const std::string& layername);
155 
160  virtual void update(makVrv::DtElementID id, const std::string* name = 0, const std::vector<DtVector>& points = std::vector<DtVector>(),
161  int* force = 0, const std::string* overlay = 0, const std::string* userData = 0,
162  const std::map<std::string, std::string>* extendedData = 0, const std::map<int, DtString>* extendedLabels = 0,
163  double* newHeading = 0, int* color = 0, int* appearance = 0, const std::string* label = 0, bool forceUpdate = true);
164 
166  virtual DtVector getVertexPosition(makVrv::DtElementID parent, makVrv::DtUniqueID vertexId) const;
167 
170  virtual void create(const DtEntityType& t, int force);
171 
173  virtual bool allSelectionIsLocal() const;
174 
176  virtual void setCanCreateLocalObjects(bool);
177 
179  virtual bool canCreateLocalObjects() const;
180 
182  virtual void save(const std::string&);
183 
185  virtual bool load(const std::string&, bool removeAll = true);
186 
188  virtual int numberOfLocalObjects() const;
189 
192  virtual double groundHeight(const DtVector& lp, DtVector* clampedPoint = 0,
193  const std::vector<makVrv::DtUniqueID>& ignore = std::vector<makVrv::DtUniqueID>()) const;
194 
198  virtual DtVector clampToGround(const DtVector&,
199  const std::vector<makVrv::DtUniqueID>& ignore = std::vector<makVrv::DtUniqueID>(),
200  bool useHighestLOD = true, bool ignoreDynamicOcean = false, bool useHighestPolygon = true) const;
201 
204  virtual DtGeodeticCoord clampToGround(const DtGeodeticCoord&,
205  const std::vector<makVrv::DtUniqueID>& ignore = std::vector<makVrv::DtUniqueID>(),
206  bool useHighestLOD = true, bool ignoreDynamicOcean = false) const;
207 
208  protected:
210  virtual void slot_elementAttributeChangeRequested(
211  makVrv::DtUniqueID id, makVrv::DtUniqueID parentId, DtBoost::shared_ptr<const makVrv::DtElementAttribute> atr );
212 
213  virtual void handleElementAttributeChanged(
215 
217  virtual void slot_onStateViewUpdated(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
218 
220  virtual void completeStateViewUpdated(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*, bool forceIfHidden = false);
221 
225 
227  virtual void finalizeObjectCreation(const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&);
228  virtual void slot_stoppedObjectCreation();
229 
230  virtual std::string generateUniqueName(const std::string& base, bool addNumberToBegin = false) const;
231 
232  public:
237  boost::signal<void (bool)> signal_creating;
238 
240  boost::signal<void (DtVrfObjectFacadeInterface*, makVrv::DtVrlinkSimulatedBaseState*)> signal_objectCreated;
241 
243  boost::signal<void (DtVrfObjectFacadeInterface*)> signal_objectAboutToBeDeleted;
244 
246  boost::signal<void (bool)> signal_loading;
247 
249 
250  protected:
251  friend class boost::serialization::access;
252 
256  template<class Archive>
257  void serialize(Archive & ar, const unsigned int version)
258  {
259  if (Archive::is_loading::value)
260  {
261  read(*(boost::archive::xml_iarchive*)&ar);
262  }
263  else
264  {
265  write(*(boost::archive::xml_oarchive*)&ar);
266  }
267  }
268 
269  virtual void write(boost::archive::xml_oarchive& out);
270  virtual void read(boost::archive::xml_iarchive& in);
271 
272  protected:
274 
276 
278  typedef std::map<makVrv::DtUniqueID, DtVrfObjectFacadeInterface*> LocalObjects;
281 
282  typedef std::map<makVrv::DtUniqueID, makVrv::DtVrlinkSimulatedBaseState*> LocalStateData;
284 
286  };
287 
289  {
290  public:
291  DtSerializableVector() : mySource(0) {};
293  DtVector(src),
294  mySource(&src)
295  {
296  }
297 
298  void operator=(const DtVector& rhs)
299  {
300  ((DtVector&)*this) = rhs;
301  }
302 
303  protected:
304  friend class boost::serialization::access;
305 
309  template<class Archive>
310  void serialize(Archive & ar, const unsigned int version)
311  {
312  double x = myRep[0], y = myRep[1], z = myRep[2];
313 
314  ar & BOOST_SERIALIZATION_NVP(x);
315  ar & BOOST_SERIALIZATION_NVP(y);
316  ar & BOOST_SERIALIZATION_NVP(z);
317 
318  if (Archive::is_loading::value)
319  {
320  myRep[0] = x;
321  myRep[1] = y;
322  myRep[2] = z;
323 
324  if (mySource)
325  {
326  *mySource = *this;
327  }
328  }
329  }
330 
331  protected:
333  };
334 
335  class DT_DLL_VRFGUICORE DtSerializableTaitBryan : public DtTaitBryan
336  {
337  public:
338  DtSerializableTaitBryan() : mySource(0) {};
339  DtSerializableTaitBryan(DtTaitBryan& src) :
340  DtTaitBryan(src),
341  mySource(&src)
342  {
343  }
344 
345  protected:
346  friend class boost::serialization::access;
347 
351  template<class Archive>
352  void serialize(Archive & ar, const unsigned int version)
353  {
354  ar & BOOST_SERIALIZATION_NVP(myPsi);
355  ar & BOOST_SERIALIZATION_NVP(myTheta);
356  ar & BOOST_SERIALIZATION_NVP(myPhi);
357 
358  if (Archive::is_loading::value && mySource)
359  {
360  *mySource = *this;
361  }
362  }
363 
364  protected:
365  DtTaitBryan* mySource;
366  };
367 
368  template <typename _Type, typename _SrcType>
370  {
371  public:
373  DtSerializableStdVector(std::vector<_SrcType>& src) :
374  mySource(&src)
375  {
376  myValues.resize(src.size());
377 
378  typename std::vector<_SrcType>::const_iterator srcIter = src.begin();
379  typename std::vector<_Type>::iterator tgtIter = myValues.begin();
380 
381  while (srcIter != src.end())
382  {
383  *tgtIter = *srcIter;
384  ++srcIter;
385  ++tgtIter;
386  }
387  }
388 
389  protected:
391 
395  template<class Archive>
396  void serialize(Archive & ar, const unsigned int version)
397  {
398  ar & BOOST_SERIALIZATION_NVP(myValues);
399 
400  if (Archive::is_loading::value && mySource)
401  {
402  mySource->clear();
403  mySource->resize(myValues.size());
404 
405  typename std::vector<_Type>::const_iterator src = myValues.begin();
406  typename std::vector<_SrcType>::iterator tgt = mySource->begin();
407 
408  while (src != myValues.end())
409  {
410  *tgt = *src;
411  ++src;
412  ++tgt;
413  }
414  }
415  }
416 
417  protected:
418  std::vector<_SrcType>* mySource;
419  std::vector<_Type> myValues;
420  };
421 
423  {
425 
427  makVrv::DtVrlinkSimulatedEntityState(orig)
428  {
429  }
430 
431  protected:
432  friend class boost::serialization::access;
433 
437  template<class Archive>
438  void serialize(Archive & ar, const unsigned int version)
439  {
440  ar & BOOST_SERIALIZATION_NVP(myGlobalId);
441  ar & BOOST_SERIALIZATION_NVP(myEntityId);
442  ar & BOOST_SERIALIZATION_NVP(myMarkingText);
443  ar & BOOST_SERIALIZATION_NVP(myEntityType);
444  ar & BOOST_SERIALIZATION_NVP(myAttachedToId);
445  ar & BOOST_SERIALIZATION_NVP(myForce);
446 
447  DtSerializableVector loc(myLocation);
448  DtSerializableVector vel(myVelocity);
449  DtSerializableVector relVel(myRelativeVelocity);
450  DtSerializableVector acc(myAcceleration);
451  DtSerializableTaitBryan ori(myOrientation);
452  DtSerializableVector rotVel(myRotationalVelocity);
453 
454  ar & BOOST_SERIALIZATION_NVP(loc);
455  ar & BOOST_SERIALIZATION_NVP(vel);
456  ar & BOOST_SERIALIZATION_NVP(relVel);
457  ar & BOOST_SERIALIZATION_NVP(acc);
458  ar & BOOST_SERIALIZATION_NVP(ori);
459  ar & BOOST_SERIALIZATION_NVP(rotVel);
460 
461  ar & BOOST_SERIALIZATION_NVP(myAppearance);
462  ar & BOOST_SERIALIZATION_NVP(myCapabilities);
463  ar & BOOST_SERIALIZATION_NVP(myDIGuyAppearance);
464  ar & BOOST_SERIALIZATION_NVP(myDIGuyCharacterType);
465  ar & BOOST_SERIALIZATION_NVP(myGuise);
466  ar & BOOST_SERIALIZATION_NVP(myDRAlgorithm);
467  }
468  };
469 
471  {
473 
476  {
477  }
478 
479  protected:
480  friend class boost::serialization::access;
481 
485  template<class Archive>
486  void serialize(Archive & ar, const unsigned int version)
487  {
488  ar & BOOST_SERIALIZATION_NVP(myGlobalId);
489  ar & BOOST_SERIALIZATION_NVP(myEntityId);
490  ar & BOOST_SERIALIZATION_NVP(myMarkingText);
491  ar & BOOST_SERIALIZATION_NVP(myEntityType);
492  ar & BOOST_SERIALIZATION_NVP(myAttachedToId);
493  ar & BOOST_SERIALIZATION_NVP(myForce);
494 
496 
497  ar & BOOST_SERIALIZATION_NVP(pts);
498 
499  ar & BOOST_SERIALIZATION_NVP(myUserData);
500  ar & BOOST_SERIALIZATION_NVP(myPenStyle);
501  ar & BOOST_SERIALIZATION_NVP(myFillStyle);
502  ar & BOOST_SERIALIZATION_NVP(myLineWidth);
503  ar & BOOST_SERIALIZATION_NVP(myColor);
504  ar & BOOST_SERIALIZATION_NVP(myLabel);
505  ar & BOOST_SERIALIZATION_NVP(myClosedFigure);
506  ar & BOOST_SERIALIZATION_NVP(myProjected);
507  ar & BOOST_SERIALIZATION_NVP(myAttributes);
508  ar & BOOST_SERIALIZATION_NVP(myOverlayParent);
509  }
510  };
511 }
512 

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)