VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
copyObject.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
13 
14 #pragma once
15 
16 #include <vrfGuiCore/vrfGuiCore.h>
19 #include <vrfutil/rwUUID.h>
20 
21 #include <vrvCore/DtUniqueID.h>
23 
24 #include <matrix/vlVector.h>
25 #include <matrix/geodeticCoord.h>
26 
27 namespace makVrv
28 {
29  struct DtVrlinkSimulatedBaseState;
30  class DtSimEntry;
31  class DtDe;
32 }
33 
34 namespace makVrf
35 {
36  struct DtVrfObjectDataState;
37 
39 
41  {
42  public:
44  DtStreamString(const std::string&);
45  DtStreamString(std::string*);
46  DtStreamString(int size, const char* buf);
47 
48  virtual void write(std::ostringstream&) const;
49  virtual void read(std::istringstream&);
50 
51  const std::string& value() const
52  {
53  return myValue;
54  }
55 
56  protected:
57  std::string myValue;
58  std::string* myInput;
59  };
60 
61  DT_DLL_VRFGUICORE std::ostringstream& operator<<(std::ostringstream&, const DtStreamString&);
62  DT_DLL_VRFGUICORE std::istringstream& operator>>(std::istringstream&, DtStreamString&);
63 
64  DT_DLL_VRFGUICORE std::ostringstream& operator<<(std::ostringstream&, const DtVector&);
65  DT_DLL_VRFGUICORE std::istringstream& operator>>(std::istringstream&, DtVector&);
66 
68 
69  template <typename Type>
71  {
72  public:
74  : myValue(t)
75  , myInput(0)
76  {
77  }
78 
79  DtStreamNumber(Type* t)
80  : myInput(t)
81  {
82  }
83 
84  void write(std::ostringstream& s) const
85  {
86  s << myValue << " ";
87  }
88 
89  void read(std::istringstream& s)
90  {
91  s >> myValue;
92  s.ignore();
93 
94  if (myInput)
95  {
96  *myInput = myValue;
97  }
98  }
99 
100  Type value() const
101  {
102  return myValue;
103  }
104 
105  protected:
106  Type myValue;
107  Type* myInput;
108  };
109 
110  template <typename Type> std::ostringstream& operator<<(std::ostringstream& s, const DtStreamNumber<Type>& num)
111  {
112  num.write(s);
113 
114  return s;
115  }
116 
117  template <typename Type> std::istringstream& operator>>(std::istringstream& s, DtStreamNumber<Type>& num)
118  {
119  num.read(s);
120 
121  return s;
122  }
123 
125  {
126  typedef std::vector<DtGeodeticCoord> CopyOffsets;
127 
128  public:
130  virtual ~DtCopyObject();
131 
132  public:
134  {
135  DtPasteNewName = 0x00000001,
136  DtPasteAppearance = 0x00000002,
137  DtPasteHeading = 0x00000004,
138  DtPasteEngagement = 0x00000008,
139  DtPastePlan = 0x00000010,
140  DtPasteAboveSeaLevel = 0x00000020,
141  DtPasteAboveTerrain = 0x00000040,
142  DtPasteFormation = 0x00000080,
143  DtPasteStateProperties = 0x00000100,
144 
145  DtAllPasteFlags = DtPasteNewName | DtPasteAppearance | DtPasteHeading | DtPasteEngagement | DtPastePlan |
146  DtPasteAboveTerrain
147  };
148 
149  public:
151  virtual void copy(makVrv::DtSimEntry*);
152 
155  virtual void read(const std::string& buf);
156 
158  virtual void cancel();
159 
160  const std::string& name() const
161  {
162  return myName;
163  }
164 
165  const DtUUID& uuid() const
166  {
167  return myUUID;
168  }
169 
171  virtual std::string copyPendingMessage() const;
172 
174  virtual std::string pastePendingMessage() const;
175 
177  virtual void setAltitudeClampType(DtAltitudeClampType);
178  DtAltitudeClampType altitudeClampType() const;
179 
180  void setType(int t)
181  {
182  myType = t;
183  }
184 
185  int type() const
186  {
187  return myType;
188  }
189 
190  void setBuffer(const std::string& b)
191  {
192  myBuffer = b;
193  }
194 
195  const std::string& buffer() const
196  {
197  return myBuffer;
198  }
199 
202  {
203  return 0;
204  }
205 
207  virtual bool preserveOffsets() const;
208 
209  protected:
212  virtual void write(std::ostringstream& str, const makVrv::DtVrlinkSimulatedBaseState* data, makVrv::DtUniqueID id);
213 
215  virtual void write(std::ostringstream& str, const DtVrfObjectDataState* data);
216 
219  virtual DtVrfObjectDataState* createReadableObjectStateData() const;
220  virtual makVrv::DtVrlinkSimulatedBaseState* createReadableStateData() const;
221 
224  virtual void read(std::istringstream& str, makVrv::DtVrlinkSimulatedBaseState* data);
225 
227  virtual void read(std::istringstream& str, DtVrfObjectDataState* data);
228 
230  virtual void checkCopyComplete();
231 
234  virtual bool copyOperationsPending() const;
235 
237  virtual void copyComplete();
238 
240  virtual bool cancelComplete() const;
241 
242  public:
247  virtual void paste(const DtVector&, int flags = DtAllPasteFlags);
248 
250  virtual DtGeodeticCoord center() const;
251  virtual DtVector localCenter() const;
252  virtual DtGeodeticCoord calculateCenter() const;
253 
256  virtual DtVector origin() const;
257 
259  virtual DtVector pasteOrigin() const;
260 
263  virtual void setGeometricCenter(const DtGeodeticCoord&);
264 
265  const DtGeodeticCoord& geometricCenter() const;
266 
268  virtual void createFacade(const DtGeodeticCoord& origin);
269 
271  virtual void setOrigin(const DtGeodeticCoord&);
272 
274  {
275  return myReadableStateData;
276  }
277 
279  virtual bool updateDataBeforeCopy() const;
280  virtual void setUpdateDataBeforeCopy(bool);
281 
282  protected:
284  virtual void readComplete(std::istringstream& str);
285 
288  virtual void checkPasteComplete();
289 
291  virtual bool pasteComplete() const;
292 
295  virtual void createObject(const DtVector&);
296 
298  virtual int generateRequestId();
299 
301  virtual double groundHeight(const DtVector& currentLocal) const;
302 
305  virtual void setupOffsets(const DtGeodeticCoord&);
306 
307  virtual void slot_onStateViewUpdated(DtVrlinkSimulatedBaseStateView* state, makVrv::DtSimEntry* simEntry);
308 
310  virtual DtVector offsetLocation(int, const DtVector& loc) const;
311 
316  virtual DtGeodeticCoord calculateOffsetPoint(const DtGeodeticCoord& start, const DtGeodeticCoord& end,
317  double& altAboveTerrain, double& altAboveSeaLevel) const;
318 
320  virtual DtVector localLocation(const DtGeodeticCoord&, int) const;
321 
322  virtual void forceUpdate(DtVrlinkSimulatedBaseStateView* stateView, makVrv::DtSimEntry* simEntry);
323 
324  public:
325  boost::signals2::signal<void (DtCopyObject*)> signal_copyCancelled;
326  boost::signals2::signal<void (DtCopyObject*, const std::string&)> signal_copied;
327  boost::signals2::signal<void (DtCopyObject*, const std::string&)> signal_copyOperationPending;
328 
329  boost::signals2::signal<void (DtCopyObject*)> signal_pasted;
330  boost::signals2::signal<void (DtCopyObject*, const std::string&)> signal_pasteOperationPending;
331  boost::signals2::signal<void (DtCopyObject*)> signal_pasteCancelled;
332 
333  protected:
335  std::ostringstream myOutput;
336  std::string myName;
338 
341 
342  mutable DtGeodeticCoord myCenter;
343 
345 
346  typedef std::vector<double> HeightOffsets;
347 
350 
352  DtReferenceEllipsoid myReferenceEllipsoid;
353 
354  int myType;
355  std::string myBuffer;
356 
357  DtGeodeticCoord myGeometricCenter;
358 
359  bool myIsLocal;
362 
363  bool myUpdated;
364 
366  };
367 
371  {
372  public:
373  virtual DtCopyObject* create(makVrv::DtDe&) = 0;
374  };
375 }
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
HeightOffsets myAltitudeAboveTerrain
Definition: copyObject.h:348
DtAltitudeClampType myAltitudeClampType
Definition: copyObject.h:351
boost::signals2::signal< void(DtCopyObject *, const std::string &)> signal_pasteOperationPending
Definition: copyObject.h:330
bool myUpdateDataBeforeCopy
Definition: copyObject.h:360
DT_DLL_VRFGUICORE makVrv::DtMessage & operator<<(makVrv::DtMessage &msg, const DtVrlinkNetworkUpdateSimulatedAggregateState &state)
Encode a DtVrlinkSimulatedEnvironmentState into a DtMessage.
DtReferenceEllipsoid myReferenceEllipsoid
Definition: copyObject.h:352
voidpf uLong int origin
Definition: ioapi.h:42
void read(std::istringstream &s)
Definition: copyObject.h:89
int type() const
Definition: copyObject.h:185
Helper class to archive string objects from string stream and back.
Definition: copyObject.h:40
bool myUpdated
Definition: copyObject.h:363
DtUUID myUUID
Definition: copyObject.h:361
voidpf void uLong size
Definition: ioapi.h:39
A DtSimEntry is a container of DtSimState&#39;s and represents the total state of an simulation object...
Definition: DtSimEntry.h:27
Creator used to create copy classes.
Definition: copyObject.h:370
virtual DtVrfObjectFacadeInterface * facade() const
Returns the facade.
Definition: copyObject.h:201
boost::signals2::signal< void(DtCopyObject *, const std::string &)> signal_copyOperationPending
Definition: copyObject.h:327
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
voidpf void * buf
Definition: ioapi.h:39
std::vector< DtGeodeticCoord > CopyOffsets
Definition: copyObject.h:126
makVrv::DtDe & myDe
Definition: copyObject.h:334
const makVrv::DtVrlinkSimulatedBaseState * readableStateData() const
Definition: copyObject.h:273
DtGeodeticCoord myCenter
Definition: copyObject.h:342
boost::signals2::signal< void(DtCopyObject *)> signal_pasted
Definition: copyObject.h:329
std::vector< double > HeightOffsets
Definition: copyObject.h:346
Type * myInput
Definition: copyObject.h:107
boost::signals2::signal< void(DtCopyObject *)> signal_copyCancelled
Definition: copyObject.h:325
void setType(int t)
Definition: copyObject.h:180
std::ostringstream myOutput
Definition: copyObject.h:335
std::string myBuffer
Definition: copyObject.h:355
DtStreamNumber(Type t)
Definition: copyObject.h:73
const std::string & name() const
Definition: copyObject.h:160
Definition: vrfObjectFacadeInterface.h:47
const DtUUID & uuid() const
Definition: copyObject.h:165
Type value() const
Definition: copyObject.h:100
const std::string & value() const
Definition: copyObject.h:51
const std::string & buffer() const
Definition: copyObject.h:195
int myPasteFlags
Definition: copyObject.h:337
std::string myName
Definition: copyObject.h:336
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Definition: copyObject.h:124
Helper class to archive number objects from string stream and back.
Definition: copyObject.h:70
HeightOffsets myAltitudeAboveSeaLevel
Definition: copyObject.h:349
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
DtPasteFlags
Definition: copyObject.h:133
Type myValue
Definition: copyObject.h:106
bool myIsLocal
Definition: copyObject.h:359
Base class to provide boost signal/slot management.
Contains makVrv::DtUniqueID type.
DtGeodeticCoord myGeometricCenter
Definition: copyObject.h:357
makVrv::DtSignalConnectionManager myStateViewConnections
Definition: copyObject.h:365
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
CopyOffsets myOffsets
Definition: copyObject.h:344
boost::signals2::signal< void(DtCopyObject *, const std::string &)> signal_copied
Definition: copyObject.h:326
std::string * myInput
Definition: copyObject.h:58
std::string myValue
Definition: copyObject.h:57
int myType
Definition: copyObject.h:354
boost::signals2::signal< void(DtCopyObject *)> signal_pasteCancelled
Definition: copyObject.h:331
void setBuffer(const std::string &b)
Definition: copyObject.h:190
makVrv::DtVrlinkSimulatedBaseState * myReadableStateData
Definition: copyObject.h:340
DtStreamNumber(Type *t)
Definition: copyObject.h:79
DT_DLL_VRFGUICORE makVrv::DtMessage & operator>>(makVrv::DtMessage &msg, DtVrlinkSimulatedAggregateState &state)
Decode a DtVrlinkSimulatedEnvironmentState from a DtMessage.
void write(std::ostringstream &s) const
Definition: copyObject.h:84
DtAltitudeClampType
Definition: vrfObjectFacadeInterface.h:38
DtVrfObjectDataState * myReadableObjectStateData
Definition: copyObject.h:339
Definition: vrfObjectDataState.h:111

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)