VR-Forces 4.2 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>
13 #include <vrvUtil/DtVirtualBaseClass.h>
14 #include <vrvCore/DtSelectionManager.h>
15 #include <vrvCore/DtElementAttributes.h>
16 #include <vrvCore/DtEntityState.h>
17 #include <vrvCore/DtStateView.h>
18 #include <vrvUtil/DtSignalConnectionManager.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 
34 #include <vrvUtil/extendedTypeEncoding.h>
35 
36 class DtEntityType;
37 class DtVector;
38 
39 namespace makVrv
40 {
41  class DtDe;
42  class DtTacticalGraphicOverlay;
45 }
46 
49 namespace makVrf
50 {
51  class DtVrfObjectFacadeInterface;
52  class DtEnvironmentalFacadeCollection;
53  class DtEntityFacadeCollection;
54  struct DtVrlinkSimulatedEnvironmentProcess;
55 
63 
64  class DT_DLL_VRFGUICORE DtLocalObjectManager : public makVrv::DtVirtualBaseClass
65  {
66  public:
67  DtLocalObjectManager(makVrv::DtDe& de);
68 
69  static DtLocalObjectManager& instance(makVrv::DtDe& de);
70  static void registerInstance(makVrv::DtDe& de, DtLocalObjectManager*);
71 
72  virtual ~DtLocalObjectManager();
73 
75  virtual bool isCreating() const;
76 
78  virtual void tacticalGraphicsVertexSelected(
79  const makVrv::DtUniqueID& selected, const makVrv::DtUniqueID& parentElementID);
80 
82  virtual void tacticalGraphicsVertexDeselected(
83  const makVrv::DtUniqueID& deselected, const makVrv::DtUniqueID& parent);
84 
86  virtual void slot_onCurrentSelectionChanged(
87  const makVrv::DtSelectionManager::IdSet& selected,
88  const makVrv::DtSelectionManager::IdSet& deselected);
89 
93 
101  virtual DtEnvironmentalFacadeCollection* create(const DtEntityType& t,
102  const std::vector<DtVector>& localPoints,
103  int force,
105  int modelSet = -1, bool keepName = false);
106 
109  virtual DtEntityFacadeCollection* create(const makVrv::DtVrlinkSimulatedEntityState&);
110 
118  virtual DtEntityFacadeCollection* create(const DtEntityCreationData&,
119  const std::string& layer = "", int modelSet = -1, bool keepName = false);
120 
122  virtual const makVrv::DtTacticalGraphicOverlay* createOnLayer(const std::string& layerName = "");
123 
125  virtual void completeStateUpdate(makVrv::DtUniqueID id);
126 
128  virtual void setVisible(makVrv::DtUniqueID id, bool hide);
129 
131  virtual bool isLocal(makVrv::DtUniqueID id) const;
132 
133  virtual void updateState(makVrv::DtUniqueID id);
134 
137  virtual void setEditable(makVrv::DtUniqueID id, bool);
138 
141  virtual bool isEditable(makVrv::DtUniqueID id) const;
142 
144  virtual bool isMemberOfLayer(makVrv::DtUniqueID id, const std::string& layername) const;
145 
147  virtual void deleteLocal(makVrv::DtUniqueID id);
148 
150  virtual void deleteAll();
151 
153  virtual void deleteAllFromLayer(const std::string& layername);
154 
159  virtual void update(makVrv::DtElementID id, const std::string* name = 0, const std::vector<DtVector>& points = std::vector<DtVector>(),
160  int* force = 0, const std::string* overlay = 0, const std::string* userData = 0, double* newHeading = 0, int* color = 0, int* appearance = 0,
161  const std::string* label = 0, bool forceUpdate = true);
162 
164  virtual DtVector getVertexPosition(makVrv::DtElementID parent, makVrv::DtUniqueID vertexId) const;
165 
168  virtual void create(const DtEntityType& t, int force);
169 
171  virtual bool allSelectionIsLocal() const;
172 
174  virtual void setCanCreateLocalObjects(bool);
175 
177  virtual bool canCreateLocalObjects() const;
178 
180  virtual void save(const std::string&);
181 
183  virtual bool load(const std::string&, bool removeAll = true);
184 
186  virtual int numberOfLocalObjects() const;
187 
188  protected:
190  virtual void slot_elementAttributeChangeRequested(
191  makVrv::DtUniqueID id, makVrv::DtUniqueID parentId, DtBoost::shared_ptr<const makVrv::DtElementAttribute> atr );
192 
193  virtual void handleElementAttributeChanged(
194  makVrv::DtUniqueID id, const makVrv::DtElementAttribute* attr);
195 
197  virtual void slot_onStateViewUpdated(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
198 
200  virtual void completeStateViewUpdated(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*, bool forceIfHidden = false);
201 
204  virtual void update(DtEntityFacadeCollection*, const makVrv::DtVrlinkSimulatedEntityState*);
205 
207  virtual void finalizeObjectCreation(const DtEntityType&, std::string name, int, const std::vector<DtVector>&, double, bool, bool);
208  virtual void slot_stoppedObjectCreation();
209 
210  virtual std::string generateUniqueName(const std::string& base, bool addNumberToBegin = false) const;
211 
212  public:
217  boost::signal<void (bool)> signal_creating;
218 
220  boost::signal<void (DtVrfObjectFacadeInterface*, makVrv::DtVrlinkSimulatedBaseState*)> signal_objectCreated;
221 
223  boost::signal<void (DtVrfObjectFacadeInterface*)> signal_objectAboutToBeDeleted;
224 
226  boost::signal<void (bool)> signal_loading;
227 
229 
230  protected:
231  friend class boost::serialization::access;
232 
236  template<class Archive>
237  void serialize(Archive & ar, const unsigned int version)
238  {
239  if (Archive::is_loading::value)
240  {
241  read(*(boost::archive::xml_iarchive*)&ar);
242  }
243  else
244  {
245  write(*(boost::archive::xml_oarchive*)&ar);
246  }
247  }
248 
249  virtual void write(boost::archive::xml_oarchive& out);
250  virtual void read(boost::archive::xml_iarchive& in);
251 
252  protected:
253  makVrv::DtDe& myDe;
254 
256 
258  typedef std::map<makVrv::DtUniqueID, DtVrfObjectFacadeInterface*> LocalObjects;
260  makVrv::DtSignalConnectionManager myConnections;
261 
262  typedef std::map<makVrv::DtUniqueID, makVrv::DtVrlinkSimulatedBaseState*> LocalStateData;
264 
266  };
267 
269  {
270  public:
271  DtSerializableVector() : mySource(0) {};
273  DtVector(src),
274  mySource(&src)
275  {
276  }
277 
278  void operator=(const DtVector& rhs)
279  {
280  ((DtVector&)*this) = rhs;
281  }
282 
283  protected:
284  friend class boost::serialization::access;
285 
289  template<class Archive>
290  void serialize(Archive & ar, const unsigned int version)
291  {
292  double x = myRep[0], y = myRep[1], z = myRep[2];
293 
294  ar & BOOST_SERIALIZATION_NVP(x);
295  ar & BOOST_SERIALIZATION_NVP(y);
296  ar & BOOST_SERIALIZATION_NVP(z);
297 
298  if (Archive::is_loading::value)
299  {
300  myRep[0] = x;
301  myRep[1] = y;
302  myRep[2] = z;
303 
304  if (mySource)
305  {
306  *mySource = *this;
307  }
308  }
309  }
310 
311  protected:
313  };
314 
315  class DT_DLL_VRFGUICORE DtSerializableTaitBryan : public DtTaitBryan
316  {
317  public:
318  DtSerializableTaitBryan() : mySource(0) {};
319  DtSerializableTaitBryan(DtTaitBryan& src) :
320  DtTaitBryan(src),
321  mySource(&src)
322  {
323  }
324 
325  protected:
326  friend class boost::serialization::access;
327 
331  template<class Archive>
332  void serialize(Archive & ar, const unsigned int version)
333  {
334  ar & BOOST_SERIALIZATION_NVP(myPsi);
335  ar & BOOST_SERIALIZATION_NVP(myTheta);
336  ar & BOOST_SERIALIZATION_NVP(myPhi);
337 
338  if (Archive::is_loading::value && mySource)
339  {
340  *mySource = *this;
341  }
342  }
343 
344  protected:
345  DtTaitBryan* mySource;
346  };
347 
348  template <typename _Type, typename _SrcType>
350  {
351  public:
353  DtSerializableStdVector(std::vector<_SrcType>& src) :
354  mySource(&src)
355  {
356  myValues.resize(src.size());
357 
358  typename std::vector<_SrcType>::const_iterator srcIter = src.begin();
359  typename std::vector<_Type>::iterator tgtIter = myValues.begin();
360 
361  while (srcIter != src.end())
362  {
363  *tgtIter = *srcIter;
364  ++srcIter;
365  ++tgtIter;
366  }
367  }
368 
369  protected:
371 
375  template<class Archive>
376  void serialize(Archive & ar, const unsigned int version)
377  {
378  ar & BOOST_SERIALIZATION_NVP(myValues);
379 
380  if (Archive::is_loading::value && mySource)
381  {
382  mySource->clear();
383  mySource->resize(myValues.size());
384 
385  typename std::vector<_Type>::const_iterator src = myValues.begin();
386  typename std::vector<_SrcType>::iterator tgt = mySource->begin();
387 
388  while (src != myValues.end())
389  {
390  *tgt = *src;
391  ++src;
392  ++tgt;
393  }
394  }
395  }
396 
397  protected:
398  std::vector<_SrcType>* mySource;
399  std::vector<_Type> myValues;
400  };
401 
402  struct DT_DLL_VRFGUICORE DtVrlinkSimulatedEntityStateContainer : public makVrv::DtVrlinkSimulatedEntityState
403  {
405 
406  DtVrlinkSimulatedEntityStateContainer(const makVrv::DtVrlinkSimulatedEntityState& orig) :
407  makVrv::DtVrlinkSimulatedEntityState(orig)
408  {
409  }
410 
411  protected:
412  friend class boost::serialization::access;
413 
417  template<class Archive>
418  void serialize(Archive & ar, const unsigned int version)
419  {
420  ar & BOOST_SERIALIZATION_NVP(myGlobalId);
421  ar & BOOST_SERIALIZATION_NVP(myEntityId);
422  ar & BOOST_SERIALIZATION_NVP(myMarkingText);
423  ar & BOOST_SERIALIZATION_NVP(myEntityType);
424  ar & BOOST_SERIALIZATION_NVP(myAttachedToId);
425  ar & BOOST_SERIALIZATION_NVP(myForce);
426 
427  DtSerializableVector loc(myLocation);
428  DtSerializableVector vel(myVelocity);
429  DtSerializableVector relVel(myRelativeVelocity);
430  DtSerializableVector acc(myAcceleration);
431  DtSerializableTaitBryan ori(myOrientation);
432  DtSerializableVector rotVel(myRotationalVelocity);
433 
434  ar & BOOST_SERIALIZATION_NVP(loc);
435  ar & BOOST_SERIALIZATION_NVP(vel);
436  ar & BOOST_SERIALIZATION_NVP(relVel);
437  ar & BOOST_SERIALIZATION_NVP(acc);
438  ar & BOOST_SERIALIZATION_NVP(ori);
439  ar & BOOST_SERIALIZATION_NVP(rotVel);
440 
441  ar & BOOST_SERIALIZATION_NVP(myAppearance);
442  ar & BOOST_SERIALIZATION_NVP(myCapabilities);
443  ar & BOOST_SERIALIZATION_NVP(myDIGuyAppearance);
444  ar & BOOST_SERIALIZATION_NVP(myDIGuyCharacter);
445  ar & BOOST_SERIALIZATION_NVP(myGuise);
446  ar & BOOST_SERIALIZATION_NVP(myDRAlgorithm);
447  }
448  };
449 
451  {
453 
456  {
457  }
458 
459  protected:
460  friend class boost::serialization::access;
461 
465  template<class Archive>
466  void serialize(Archive & ar, const unsigned int version)
467  {
468  ar & BOOST_SERIALIZATION_NVP(myGlobalId);
469  ar & BOOST_SERIALIZATION_NVP(myEntityId);
470  ar & BOOST_SERIALIZATION_NVP(myMarkingText);
471  ar & BOOST_SERIALIZATION_NVP(myEntityType);
472  ar & BOOST_SERIALIZATION_NVP(myAttachedToId);
473  ar & BOOST_SERIALIZATION_NVP(myForce);
474 
476 
477  ar & BOOST_SERIALIZATION_NVP(pts);
478 
479  ar & BOOST_SERIALIZATION_NVP(myUserData);
480  ar & BOOST_SERIALIZATION_NVP(myPenStyle);
481  ar & BOOST_SERIALIZATION_NVP(myFillStyle);
482  ar & BOOST_SERIALIZATION_NVP(myLineWidth);
483  ar & BOOST_SERIALIZATION_NVP(myColor);
484  ar & BOOST_SERIALIZATION_NVP(myLabel);
485  ar & BOOST_SERIALIZATION_NVP(myClosedFigure);
486  ar & BOOST_SERIALIZATION_NVP(myProjected);
487  ar & BOOST_SERIALIZATION_NVP(myAttributes);
488  ar & BOOST_SERIALIZATION_NVP(myOverlayParent);
489  }
490  };
491 }
492 

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)