VR-Forces 4.1.1 Class Documentation
DtLocalObjectManager.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>
16 #include <vrvCore/DtEntityState.h>
17 #include <vrvCore/DtStateView.h>
21 
22 #include <vlutil/vlSmartPointers.h>
23 #include <boost/shared_ptr.hpp>
24 
25 #include <boost/archive/xml_iarchive.hpp>
26 #include <boost/archive/xml_oarchive.hpp>
27 #include <boost/serialization/access.hpp>
28 #include <boost/serialization/nvp.hpp>
29 #include <boost/serialization/list.hpp>
30 #include <boost/serialization/map.hpp>
31 #include <boost/serialization/vector.hpp>
32 #include <boost/serialization/string.hpp>
33 
35 
36 class DtEntityType;
37 class DtVector;
38 
39 namespace makVrv
40 {
41  class DtDe;
42  class DtTacticalGraphicOverlay;
43  struct DtVrlinkSimulatedBaseState;
44  struct DtVrlinkSimulatedEntityState;
45 }
46 
49 namespace makVrf
50 {
51  class DtVrfObjectFacadeInterface;
52  class DtEnvironmentalFacadeCollection;
53  class DtEntityFacadeCollection;
54  struct DtVrlinkSimulatedEnvironmentProcess;
55 
62 
64  {
65  public:
67 
68  static DtLocalObjectManager& instance(makVrv::DtDe& de);
69  static void registerInstance(makVrv::DtDe& de, DtLocalObjectManager*);
70 
71  virtual ~DtLocalObjectManager();
72 
74  virtual bool isCreating() const;
75 
77  virtual void tacticalGraphicsVertexSelected(
78  const makVrv::DtUniqueID& selected, const makVrv::DtUniqueID& parentElementID);
79 
81  virtual void tacticalGraphicsVertexDeselected(
82  const makVrv::DtUniqueID& deselected, const makVrv::DtUniqueID& parent);
83 
85  virtual void slot_onCurrentSelectionChanged(
86  const makVrv::DtSelectionManager::IdSet& selected,
87  const makVrv::DtSelectionManager::IdSet& deselected);
88 
92 
100  virtual DtEnvironmentalFacadeCollection* create(const DtEntityType& t,
101  const std::vector<DtVector>& localPoints,
102  int force,
104  int modelSet = -1, bool keepName = false);
105 
109 
117  virtual DtEntityFacadeCollection* create(const DtEntityCreationData&,
118  const std::string& layer = "", int modelSet = -1, bool keepName = false);
119 
121  virtual const makVrv::DtTacticalGraphicOverlay* createOnLayer(const std::string& layerName = "");
122 
124  virtual void completeStateUpdate(makVrv::DtUniqueID id);
125 
127  virtual void setVisible(makVrv::DtUniqueID id, bool hide);
128 
130  virtual bool isLocal(makVrv::DtUniqueID id) const;
131 
132  virtual void updateState(makVrv::DtUniqueID id);
133 
136  virtual void setEditable(makVrv::DtUniqueID id, bool);
137 
140  virtual bool isEditable(makVrv::DtUniqueID id) const;
141 
143  virtual bool isMemberOfLayer(makVrv::DtUniqueID id, const std::string& layername) const;
144 
146  virtual void deleteLocal(makVrv::DtUniqueID id);
147 
149  virtual void deleteAll();
150 
152  virtual void deleteAllFromLayer(const std::string& layername);
153 
158  virtual void update(makVrv::DtElementID id, const std::string* name = 0, const std::vector<DtVector>& points = std::vector<DtVector>(),
159  int* force = 0, const std::string* overlay = 0, const std::string* userData = 0, double* newHeading = 0, int* color = 0, int* appearance = 0,
160  const std::string* label = 0);
161 
163  virtual DtVector getVertexPosition(makVrv::DtElementID parent, makVrv::DtUniqueID vertexId) const;
164 
167  virtual void create(const DtEntityType& t, int force);
168 
170  virtual bool allSelectionIsLocal() const;
171 
173  virtual void setCanCreateLocalObjects(bool);
174 
176  virtual bool canCreateLocalObjects() const;
177 
179  virtual void save(const std::string&);
180 
182  virtual bool load(const std::string&, bool removeAll = true);
183 
185  virtual int numberOfLocalObjects() const;
186 
187  protected:
189  virtual void slot_elementAttributeChangeRequested(
190  makVrv::DtUniqueID id, makVrv::DtUniqueID parentId, DtBoost::shared_ptr<const makVrv::DtElementAttribute> atr );
191 
192  virtual void handleElementAttributeChanged(
194 
196  virtual void slot_onStateViewUpdated(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
197 
199  virtual void completeStateViewUpdated(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
200 
204 
206  virtual void finalizeObjectCreation(const DtEntityType&, std::string name, int, const std::vector<DtVector>&, double, bool, bool);
207  virtual void slot_stoppedObjectCreation();
208 
209  virtual std::string generateUniqueName(const std::string& base, bool addNumberToBegin = false) const;
210 
211  public:
216  boost::signal<void (bool)> signal_creating;
217 
219  boost::signal<void (DtVrfObjectFacadeInterface*, makVrv::DtVrlinkSimulatedBaseState*)> signal_objectCreated;
220 
222  boost::signal<void (DtVrfObjectFacadeInterface*)> signal_objectAboutToBeDeleted;
223 
225  boost::signal<void (bool)> signal_loading;
226 
228 
229  protected:
230  friend class boost::serialization::access;
231 
235  template<class Archive>
236  void serialize(Archive & ar, const unsigned int version)
237  {
238  if (Archive::is_loading::value)
239  {
240  read(*(boost::archive::xml_iarchive*)&ar);
241  }
242  else
243  {
244  write(*(boost::archive::xml_oarchive*)&ar);
245  }
246  }
247 
248  virtual void write(boost::archive::xml_oarchive& out);
249  virtual void read(boost::archive::xml_iarchive& in);
250 
251  protected:
253 
255 
257  typedef std::map<makVrv::DtUniqueID, DtVrfObjectFacadeInterface*> LocalObjects;
260 
261  typedef std::map<makVrv::DtUniqueID, makVrv::DtVrlinkSimulatedBaseState*> LocalStateData;
263 
265  };
266 
268  {
269  public:
270  DtSerializableVector() : mySource(0) {};
272  DtVector(src),
273  mySource(&src)
274  {
275  }
276 
277  void operator=(const DtVector& rhs)
278  {
279  ((DtVector&)*this) = rhs;
280  }
281 
282  protected:
283  friend class boost::serialization::access;
284 
288  template<class Archive>
289  void serialize(Archive & ar, const unsigned int version)
290  {
291  double x = myRep[0], y = myRep[1], z = myRep[2];
292 
293  ar & BOOST_SERIALIZATION_NVP(x);
294  ar & BOOST_SERIALIZATION_NVP(y);
295  ar & BOOST_SERIALIZATION_NVP(z);
296 
297  if (Archive::is_loading::value)
298  {
299  myRep[0] = x;
300  myRep[1] = y;
301  myRep[2] = z;
302 
303  if (mySource)
304  {
305  *mySource = *this;
306  }
307  }
308  }
309 
310  protected:
312  };
313 
314  class DT_DLL_VRFGUICORE DtSerializableTaitBryan : public DtTaitBryan
315  {
316  public:
317  DtSerializableTaitBryan() : mySource(0) {};
318  DtSerializableTaitBryan(DtTaitBryan& src) :
319  DtTaitBryan(src),
320  mySource(&src)
321  {
322  }
323 
324  protected:
325  friend class boost::serialization::access;
326 
330  template<class Archive>
331  void serialize(Archive & ar, const unsigned int version)
332  {
333  ar & BOOST_SERIALIZATION_NVP(myPsi);
334  ar & BOOST_SERIALIZATION_NVP(myTheta);
335  ar & BOOST_SERIALIZATION_NVP(myPhi);
336 
337  if (Archive::is_loading::value && mySource)
338  {
339  *mySource = *this;
340  }
341  }
342 
343  protected:
344  DtTaitBryan* mySource;
345  };
346 
347  template <typename _Type, typename _SrcType>
349  {
350  public:
352  DtSerializableStdVector(std::vector<_SrcType>& src) :
353  mySource(&src)
354  {
355  myValues.resize(src.size());
356 
357  typename std::vector<_SrcType>::const_iterator srcIter = src.begin();
358  typename std::vector<_Type>::iterator tgtIter = myValues.begin();
359 
360  while (srcIter != src.end())
361  {
362  *tgtIter = *srcIter;
363  ++srcIter;
364  ++tgtIter;
365  }
366  }
367 
368  protected:
370 
374  template<class Archive>
375  void serialize(Archive & ar, const unsigned int version)
376  {
377  ar & BOOST_SERIALIZATION_NVP(myValues);
378 
379  if (Archive::is_loading::value && mySource)
380  {
381  mySource->clear();
382  mySource->resize(myValues.size());
383 
384  typename std::vector<_Type>::const_iterator src = myValues.begin();
385  typename std::vector<_SrcType>::iterator tgt = mySource->begin();
386 
387  while (src != myValues.end())
388  {
389  *tgt = *src;
390  ++src;
391  ++tgt;
392  }
393  }
394  }
395 
396  protected:
397  std::vector<_SrcType>* mySource;
398  std::vector<_Type> myValues;
399  };
400 
402  {
404 
406  makVrv::DtVrlinkSimulatedEntityState(orig)
407  {
408  }
409 
410  protected:
411  friend class boost::serialization::access;
412 
416  template<class Archive>
417  void serialize(Archive & ar, const unsigned int version)
418  {
419  ar & BOOST_SERIALIZATION_NVP(myGlobalId);
420  ar & BOOST_SERIALIZATION_NVP(myEntityId);
421  ar & BOOST_SERIALIZATION_NVP(myMarkingText);
422  ar & BOOST_SERIALIZATION_NVP(myEntityType);
423  ar & BOOST_SERIALIZATION_NVP(myAttachedToId);
424  ar & BOOST_SERIALIZATION_NVP(myForce);
425 
426  DtSerializableVector loc(myLocation);
427  DtSerializableVector vel(myVelocity);
428  DtSerializableVector relVel(myRelativeVelocity);
429  DtSerializableVector acc(myAcceleration);
430  DtSerializableTaitBryan ori(myOrientation);
431  DtSerializableVector rotVel(myRotationalVelocity);
432 
433  ar & BOOST_SERIALIZATION_NVP(loc);
434  ar & BOOST_SERIALIZATION_NVP(vel);
435  ar & BOOST_SERIALIZATION_NVP(relVel);
436  ar & BOOST_SERIALIZATION_NVP(acc);
437  ar & BOOST_SERIALIZATION_NVP(ori);
438  ar & BOOST_SERIALIZATION_NVP(rotVel);
439 
440  ar & BOOST_SERIALIZATION_NVP(myAppearance);
441  ar & BOOST_SERIALIZATION_NVP(myCapabilities);
442  ar & BOOST_SERIALIZATION_NVP(myDIGuyAppearance);
443  ar & BOOST_SERIALIZATION_NVP(myDIGuyCharacter);
444  ar & BOOST_SERIALIZATION_NVP(myGuise);
445  ar & BOOST_SERIALIZATION_NVP(myDRAlgorithm);
446  }
447  };
448 
450  {
452 
455  {
456  }
457 
458  protected:
459  friend class boost::serialization::access;
460 
464  template<class Archive>
465  void serialize(Archive & ar, const unsigned int version)
466  {
467  ar & BOOST_SERIALIZATION_NVP(myGlobalId);
468  ar & BOOST_SERIALIZATION_NVP(myEntityId);
469  ar & BOOST_SERIALIZATION_NVP(myMarkingText);
470  ar & BOOST_SERIALIZATION_NVP(myEntityType);
471  ar & BOOST_SERIALIZATION_NVP(myAttachedToId);
472  ar & BOOST_SERIALIZATION_NVP(myForce);
473 
475 
476  ar & BOOST_SERIALIZATION_NVP(pts);
477 
478  ar & BOOST_SERIALIZATION_NVP(myUserData);
479  ar & BOOST_SERIALIZATION_NVP(myPenStyle);
480  ar & BOOST_SERIALIZATION_NVP(myFillStyle);
481  ar & BOOST_SERIALIZATION_NVP(myLineWidth);
482  ar & BOOST_SERIALIZATION_NVP(myColor);
483  ar & BOOST_SERIALIZATION_NVP(myLabel);
484  ar & BOOST_SERIALIZATION_NVP(myClosedFigure);
485  ar & BOOST_SERIALIZATION_NVP(myProjected);
486  ar & BOOST_SERIALIZATION_NVP(myAttributes);
487  ar & BOOST_SERIALIZATION_NVP(myOverlayParent);
488  }
489  };
490 }
491 

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)