VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
environmentalFacadeCollection.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2016 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
11 
12 #pragma once
13 
14 #include <vrvUtil/signalslib.h>
15 #include <vrfGuiCore/vrfGuiCore.h>
20 
30 #include <vrvVrl/DtForceManager.h>
31 
33 #include <matrix/geodeticCoord.h>
34 
36 #include <string>
37 #include <map>
38 #include <vector>
39 
40 #include <boost/foreach.hpp>
41 
42 namespace makVrv
43 {
44  class DtEnvironmentalVisualizerSet;
45  class DtDe;
46  class DtVisualDefinitionSet;
47 }
48 
50 
51 namespace makVrf
52 {
54  {
55  public:
57  makVrv::DtDe& de) : makVrv::DtTacticalGraphicStateListener(id), DtCommonStateListenerExtensions(id), myDe(de) {};
59 
60  virtual bool isGeocentric() const;
61 
62  protected:
64  };
65 
68  {
69  public:
71  DtEnvironmentalFacadeCollection(makVrv::DtDe&, int modelSet = -1, bool verticesDisabled = false);
73 
74  public:
76 
78  virtual void setVisible( bool visible, bool updateOffsets = true);
79  virtual void setVisible(bool, int context);
80  virtual bool isVisible() const;
81 
83  virtual void setUseHighestTerrainLod(bool);
84 
85  virtual void setHidden(bool b);
86 
88  virtual void setSymbolNameVisible(bool);
89 
92  virtual void setRespectPointAltitudePosition(bool);
93  bool respectPointAltitudePosition() const;
94 
96  virtual void setupNodeMaskFlags();
97 
98  virtual makVrv::DtUniqueID uniqueID() const;
99  virtual std::vector<makVrv::DtUniqueID> modelUniqueIDs() const;
100 
101  virtual void setUniqueID(makVrv::DtUniqueID id);
102 
104  virtual void setLabelIndicatorVisible(bool);
105 
106  virtual void setIndicatorVisible(bool);
107 
108  virtual void setAltitudeToOrigin(DtVector&) const;
109 
110  virtual void setSceneObjectId(makVrv::DtElementID id);
111 
114  virtual DtVector centerOfMass() const;
115 
116  virtual void setDisplayName(const std::string& s);
117  virtual std::string displayName() const;
118 
119  virtual void setLabel(const std::string&);
120  virtual std::string label() const;
121 
122  virtual void setFormattingData(const std::string& s);
123  virtual std::string formattingData() const;
124 
125  virtual void setDropShadow(bool b);
126 
127  virtual void setOverlayName(const std::string& s);
128  virtual std::string overlayName() const;
129 
131  virtual void setHatLineVisible( bool visible );
132  virtual void setAttachedTo(DtVrfObjectFacadeInterface* p, const DtVector& offset, const DtTaitBryan& o);
133 
136  virtual void setDictionaryToDisplay(int);
137  bool dictionaryToDisplay() const { return myDictionaryToDisplay; };
138 
139  virtual DtVector origin() const;
140 
141  virtual void setMaxCeilingOffsetFromFloor(double d);
142  virtual double maxCeilingOffsetFromFloor() const;
143  virtual void clearMaxCeilingOffsetFromFloor();
144 
146  virtual void setWeatherCommand(const DtChangeWeatherCommand&);
147 
149  virtual void setPickable(bool b);
150 
152  virtual void setSelected(bool b);
153 
154  virtual const DtEntityType& environmentalType() const;
155 
157  virtual void setWidgetEventsEnabled(bool b);
158 
159  virtual void updateSymbolDecorationPosition();
160 
162  virtual void setFillStyle(int);
163  virtual int fillStyle() const;
164 
167  virtual void setPenStyle(int);
168 
170  virtual int penStyle() const;
171 
172  virtual double length() const;
173  virtual double width() const;
174 
175  virtual void setTopographicOffsetBetweenPoints(const DtGeodeticCoord& origin, const DtGeodeticCoord& originWithOffset, bool resetLocation = true);
176  virtual void setAltitudeOffsetFromPrincipal( double offset );
177 
178  virtual void updateTopographicOffsets();
179 
180  virtual DtVector geocentricPosition(int i) const;
181 
182  virtual std::vector<DtVector> geocentricPositions() const;
183 
185  template <typename T> void setWidgetEventsEnabled(makVrv::DtEnvironmentalVisualizerSet* v, bool b)
186  {
187  std::vector<T> visualizers;
188  v->findVisualizers(visualizers);
189  typename std::vector<T>::iterator iter = visualizers.begin();
190 
191  while (iter != visualizers.end())
192  {
193  (*iter)->setWidgetEventsEnabled(b);
194  ++iter;
195  }
196  }
197 
204  virtual void setFloor(double);
205  virtual void clearFloorSet();
206  virtual double floor() const;
207  bool floorSet() const
208  {
209  return myFloorSet;
210  }
211 
213  virtual void setCeiling(double);
214  virtual double ceiling() const;
215  virtual void clearCeilingSet();
216  bool ceilingSet() const
217  {
218  return myCeilingSet;
219  }
220 
222 
224  virtual void realizeFacades();
225 
227  virtual void unrealizeFacades();
228 
229  virtual void setProjected(bool);
230  virtual bool projected() const;
231 
232  virtual void updateGeometry();
233 
234  virtual void setSymbolDecorationPosition(const DtVector& v);
235 
236  virtual void visualize(const makVrv::DtUnicode& type,
238 
240  virtual void setIndicatorModelDefinitions(
241  const std::string& normalTheme,
242  const std::string& activeTheme,
243  const std::string& selectedTheme,
244  const std::string& multiSelectedTheme);
245 
246  virtual void setAlwaysRecalculateGeometry(bool);
247  bool alwaysRecalculateGeometry() const;
248 
249  virtual void setArrowStyle(int);
250  virtual int arrowStyle() const;
251 
252  virtual void setArrowHeadPlacement(int);
253  virtual int arrowHeadPlacement() const;
254 
255  virtual void setArrowSize(double);
256  virtual double arrowSize() const;
257 
259  virtual bool fixedWidthSizing() const;
260 
261  virtual void setTopographicOffsetFromOrigin(const DtVector& geod, int i);
262  const DtVector& topographicOffsetFromOrigin(int i);
263 
265  virtual void setShapeVertexVisible(bool);
266 
267  virtual void setSymbolDecorationsVisible(bool);
268  virtual void setColor(int rgba);
269  virtual bool colorChanged() const;
270  virtual int color() const;
271  virtual void setColor(float r, float g, float b, float a);
272  virtual bool isPointObject() const;
273  virtual const makVrv::DtUnicode& elementDefinition() const;
274 
275  virtual void setPixelLineWidth(float);
276  virtual float pixelLineWidth() const;
277 
278  virtual void setPhysicalLineHeight(float);
279  virtual float physicalLineHeight() const;
280 
281  virtual void setOffsetPoints(const std::vector<DtVector>&);
282 
283  virtual void setPhysicalLineWidth(float);
284  virtual float physicalLineWidth() const;
285 
286  virtual bool physicalLineHeightChanged() const;
287  virtual void clearPhysicalLineHeightChanged();
288 
289  virtual bool physicalLineWidthChanged() const;
290  virtual void clearPhysicalLineWidthChanged();
291 
292  virtual void setDefaultCeilingHeightIfCeilingIsNotSet(double);
293  double defaultCeilingHeightIfCeilingIsNotSet() { return myDefaultCeilingHeightIfCeilingIsNotSet; };
294 
295  virtual void setForce(int);
296 
297  template <typename T> void setAttached(DtVrfObjectFacadeInterface* p)
298  {
299  DtEntityFacadeCollection* efc = dynamic_cast<DtEntityFacadeCollection*>(p);
300  ModelSetMap::iterator iter = myModelSetMap.begin();
301 
302  while (iter != myModelSetMap.end())
303  {
304  std::vector<T*> visualizers;
305  iter->second->findVisualizersByDynamicCast(visualizers);
306  typename std::vector<T*>::iterator i =
307  visualizers.begin();
308  typename std::vector<T*>::iterator e =
309  visualizers.end();
310  for(;i != e; ++i)
311  {
312  if (*i)
313  {
314  if (efc)
315  {
316  (*i)->setAttached(efc->modelSetMap()[iter->first]->uniqueID());
317  }
318  else
319  {
320  (*i)->setAttached(0);
321  }
322  }
323  }
324 
325  ++iter;
326  }
327  }
328 
329  template <typename T> void setForceColor(makVrv::DtVisualizerSet* s, makVrv::DtForceManager::RGBAColor color)
330  {
331  std::vector<T> visualizers;
332  s->findVisualizersByDynamicCast(visualizers);
333  typename std::vector<T>::iterator i = visualizers.begin();
334  typename std::vector<T>::iterator e = visualizers.end();
335  for(;i != e; ++i)
336  {
337  if (*i)
338  {
339  (*i)->setForceColor(color.R, color.G, color.B, color.A);
340  }
341  }
342  }
343 
344  virtual void setVertexSelected(makVrv::DtUniqueID id, bool sel);
345  virtual DtGeodeticCoord locationFromTopographicOffsetLocation(const DtGeodeticCoord& origin, int index) const;
346 
347  makVrv::DtBaseConnection& baseConnection() const;
348 
351  virtual void setElementDefinition(const makVrv::DtUnicode& definition);
352  virtual void setElementDefinition(const DtEntityType&, bool preparseOnly = false);
353 
354  makVrv::DtUniqueID uniqueIDForModelSet(int i) const;
355  int positionOfVertex(makVrv::DtUniqueID) const;
356  DtVector position(int index) const;
357 
359  virtual double altitudeForAltitudeType(int) const;
360 
361  virtual void setOrigin(const DtVector&);
362  virtual void setOrigin(const DtGeodeticCoord&);
363 
364  virtual void setPoint(const DtVector&, int, bool andUpdateOffset = true);
365  virtual int addPoint(const DtVector&, int index = -1, bool resetLocation = true, bool notifyOfAddedPoint = false);
366  virtual void setPoints(const std::vector<DtVector>&, bool updateOffsets = true);
367  const std::vector<DtVector>& points() const;
368  std::vector<DtVector> geocentricPoints() const;
369  virtual void removePoint(int);
370  DtGeodeticCoord geodeticPosition(int) const;
371  virtual void updateOffsets();
372 
373  virtual DtVector reviseLocation(int index, const DtVector& v);
374 
375  void setAltitudeAboveTerrain(int, double, bool resetLocation = true);
376  double altitudeAboveTerrain(int = -1) const;
377 
378  void setAltitudeAboveSeaLevel(int, double, bool resetLocation = true);
379  double altitudeAboveSeaLevel(int = -1) const;
380 
381  int numVertices() const;
382 
383  const DtExtTacticalGraphicStateListener& listener() const
384  {
385  return myListener;
386  }
387 
390  virtual void selectPoint(int);
391  virtual void clearSelectedPoint();
392 
393  int selectedPoint() const;
394 
395  virtual void setIconScale(float);
396 
397  virtual bool appearanceChanged() const;
398 
400  virtual double calculatedHeading() const;
401 
403  virtual DtVector geometricCenter() const;
404 
406  virtual DtGeodeticCoord geodeticCenter() const;
407 
409  virtual std::vector<DtVector> rotatePointsTo(const std::vector<DtVector>&, double heading) const;
410 
413  virtual void setTopographicOrientation(const DtTaitBryan&);
414  virtual void setLocalOrientation(const DtTaitBryan&);
415 
417  virtual void updateSymbolRotation(const DtTaitBryan&);
418 
420  virtual void updateSymbolRotation(double);
421 
423  virtual void setAltitudeAboveSeaLevel(double);
424  virtual void setAltitudeAboveTerrain(double);
425 
426  virtual DtVector localLocation(const DtGeodeticCoord& geodLocation) const;
427  virtual DtVector localLocation() const;
428 
430  virtual bool isBox() const;
431 
433  virtual bool isTextBox() const;
434 
436  virtual bool isLine() const;
437 
439  virtual bool isArea() const;
440 
442  virtual bool isCircle() const;
443 
446  virtual bool isEllipse() const;
447 
448  virtual void setIsClosedFigure(bool);
449  virtual bool isClosedFigure() const;
450 
453  {
454  return myListener;
455  }
456 
458  virtual void updateHeading();
459 
460  void setNeedsUpdate(bool b) { myNeedsGeometryUpdate = b; };
461 
463  virtual void mergeExtendedData(const std::map<std::string, std::string>&);
464 
465  virtual void setExtendedData(const std::map<std::string, std::string>&);
466  virtual std::map<std::string, std::string> extendedData() const;
467 
468  virtual void setExtendedLabels(const std::map<int, DtString>&);
469  virtual std::map<int, DtString> extendedLabels() const;
470 
471  virtual void updateOffset(const DtVector& position, int i, bool force = false);
472  virtual void setAltitudeForPoint(const DtVector& v, int index);
473 
475  virtual DtVector clampToGround( const DtVector& localPosition, makVrv::DtIntersector::IntersectProperties props =
476  makVrv::DtIntersector::SupportNodes, int clampFlag = -1 ) const;
477  virtual DtGeodeticCoord clampToGround( const DtGeodeticCoord& localPosition, makVrv::DtIntersector::IntersectProperties props =
478  makVrv::DtIntersector::SupportNodes, int clampFlag = -1 ) const;
479 
481  virtual DtVector setFloorToVertex(const DtVector&) const;
482 
483  virtual int clampTypeFor(int index) const;
484 
485  boost::signal<void (DtEnvironmentalFacadeCollection*)> signal_locationsChanged;
486 
487  protected:
489  virtual void preparse(const makVrv::DtUnicode& type,
491 
492  virtual void clearVertices(makVrv::DtEnvironmentalVisualizerSet*);
493 
494  protected:
496 
497  float myDefaultColor[4];
498 
500 
504  std::vector<double> myAltitudeAboveTerrain;
505  std::vector<double> myAltitudeAboveSeaLevel;
506  std::vector<int> myClampType;
507 
508  typedef std::map<int, makVrv::DtEnvironmentalVisualizerSet*> ModelSetMap;
510 
513 
514  std::vector<DtVector> myTopographicOffsetFromOrigin;
516 
518  typedef std::vector<makVrv::DtUniqueID> UniqueIDs;
519  std::map<int, UniqueIDs> myIds;
520 
522 
523  int myColor;
531 
532  double myFloor;
534 
538 
540 
541  double myArrowSize;
549 
552 
555  };
556 
558  {
559  public:
562 
565  static void registerInstance(makVrv::DtDe&, DtEnvironmentalFacadeCollectionCreator*);
566 
567  virtual DtEnvironmentalFacadeCollection* create(int modelSet = -1, bool verticesDisabled = false);
568 
569  protected:
571  };
572 }

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)