20 #include <vlutil/vlPerformanceStats.h>
23 #include <matrix/vlVector.h>
24 #include <matrix/geodeticCoord.h>
25 #include <vlpi/entityType.h>
27 #include <boost/signal.hpp>
33 class DtSimObjectEntry;
100 virtual bool createObject(
const DtEntityType& entType,
int force,
104 virtual bool createObject(
const DtString& key,
const DtString& associatedData,
116 virtual bool canSetActivationTime()
const;
119 virtual void setForce(
int);
123 virtual void setEventProcessingEnabled(
bool value );
126 virtual bool embarkationAllowed()
const;
127 virtual void setEmbarkationAllowed(
bool);
132 virtual bool canEmbark()
const;
135 virtual void setCanEmbark(
bool);
138 virtual bool needsEmbarkOnCheck()
const;
141 virtual void setIgnoreNextLeftButtonRelease(
bool b);
142 virtual void setEditStartedByDoubleClick(
bool);
147 virtual DtUUID uuid()
const;
152 virtual void removeInterfaceContentMessage(
const std::string&);
155 return myContentMessages;
161 virtual std::list<DtSimInterfaceContent*> contentMessagesToList()
const;
163 virtual void sendContentMessages();
166 virtual VrfObjectEditFacadeList objectFacades()
const;
169 virtual void setAllowCreationOnMouseClick(
bool flag);
172 virtual void setLabel(
const std::string&);
173 virtual std::string label()
const;
176 virtual bool allowCreationOnMouseClick()
const;
184 virtual DtGeodeticCoord clampToGround(
const DtGeodeticCoord&)
const;
187 virtual void setAttachObjectToMouse(
bool);
190 virtual bool attachObjectToMouse()
const;
193 virtual void setHeading(
double value);
194 virtual double heading()
const;
197 virtual void setLocation(
const DtVector& loc);
198 virtual void setLocation(
const DtVector& loc,
double altAboveGround);
204 virtual void deferredStop();
207 virtual int objectCount()
const;
210 virtual bool createVrfObject();
214 virtual bool modifyVrfObjects();
229 virtual void initializeEventProcessor();
232 virtual void setOverlay(
const std::string& name);
233 virtual const std::string& overlay()
const;
234 virtual std::string defaultOverlayForCreatingObject()
const;
237 virtual std::string getNextCreatingName(
bool includeCurrent =
false);
240 virtual void setAltitudeAboveGL(
double alt,
bool setInProcessor =
true );
243 virtual void setAltitudeAboveSL(
double alt,
bool setInProcessor =
true );
247 void setCreating(
bool b)
252 bool creating()
const
260 virtual void setUserData(
const std::string& userData);
261 virtual const std::string& userData()
const;
263 virtual void setExtendedLabels(
const std::map<int, DtString>&);
264 virtual const std::map<int, DtString>& extendedLabels()
const;
266 virtual void setExtendedDataMap(
const std::map<std::string, std::string>& extendedData);
267 virtual void setExtendedDataMap(
const std::map<DtString, DtString>& extendedData);
268 virtual const std::map<std::string, std::string>& extendedDataMap()
const;
269 virtual void setExtendedData(
const std::string& key,
const std::string& value);
270 virtual void removeExtendedData(
const std::string& key);
271 virtual std::string extendedData(
const std::string& key)
const;
273 virtual void slot_onComplete();
276 virtual void slot_onLocationChanged(
const DtVector& location,
double altAboveGround );
277 virtual void slot_onAltitudeIsDragging(
bool);
282 virtual void setPublishObject(
bool);
283 virtual bool publishObject()
const;
286 virtual void setObjectName(
const std::string& name);
289 virtual bool isUniqueName()
const;
294 virtual double groundHeight(
const DtVector& localPosition,
DtVector* localGround = 0,
295 const std::vector<makVrv::DtUniqueID>& ignore = std::vector<makVrv::DtUniqueID>())
const;
297 virtual void setAltitudeAllowed(
bool);
298 bool altitudeAllowed()
const;
300 virtual const std::string& objectName()
const;
304 virtual bool anchorMouseToOrigin()
const;
307 virtual bool anchorPositionIsMouse()
const;
312 virtual DtVector convertGeocentricToGround(
const DtVector& geoc,
double& altitude)
const;
314 virtual void setShowPropertiesDialogBeforeCreate(
bool);
315 virtual bool showPropertiesDialogBeforeCreate()
const;
318 virtual bool keywordsContain(
const std::string&)
const;
319 virtual std::string keyword(
const std::string&)
const;
320 virtual std::string value(
const std::string&)
const;
321 virtual void addKeyword(
const std::string&);
322 virtual void removeKeyword(
const std::string&);
324 virtual bool waitingToStop()
const;
329 return myEditingType;
338 virtual std::vector<makVrv::DtElementID> ignoreList()
const;
341 virtual std::vector<makVrv::DtElementID> unifiedIgnoreList()
const;
343 virtual void slot_onAltitudeChanged(
const DtVector&,
double);
346 virtual void cancel();
349 virtual void setFacadesVisible(
bool);
352 virtual bool noStyle()
const;
354 virtual void slot_onHeadingChanged(
double heading );
357 virtual void setHeadingOffset(
double d);
360 virtual void disconnectPlacement();
364 virtual void setGroundClampOnPlacement(
bool);
365 virtual bool groundClampOnPlacement()
const;
368 virtual void connectPlacement();
371 virtual DtVector centerOfMass()
const;
375 virtual DtVector sumOfAllLocations()
const;
378 virtual void updateOffsetsBasedOnMousePosition(
const DtVector& centerOfMass,
const DtGeodeticCoord&,
379 bool usImagePoints =
false);
382 virtual void setSignalOnMultiSelectionComplete(
bool);
385 virtual void setKeywords(
const std::string&);
389 virtual void setSelectionCount(
int);
391 virtual void parseKeywords(
const std::string&);
393 virtual bool warpMouseToOrigin()
const;
394 virtual void setWarpMouseToOrigin(
bool);
424 physicalLineHeight(0.), physicalLineWidth(0.), isClosedFigure(false) , embarkId(0), useSlotIfAvailable(false) {};
427 entityType(omd.entityType)
428 , objectName(omd.objectName)
430 , positions(omd.positions)
431 , heading(omd.heading)
432 , isClosedFigure(omd.isClosedFigure)
433 , clamped(omd.clamped)
434 , isAggregated(omd.isAggregated)
435 , userData(omd.userData)
436 , isPublished(omd.isPublished)
437 , extendedData(omd.extendedData)
438 , extendedLabels(omd.extendedLabels)
439 , myOwnsContentMessages(true)
441 , appearance(omd.appearance)
442 , overlay(omd.overlay)
443 , projected(omd.projected)
444 , physicalLineHeight(omd.physicalLineHeight)
445 , physicalLineWidth(omd.physicalLineWidth)
446 , embarkId(omd.embarkId)
447 , useSlotIfAvailable(omd.useSlotIfAvailable)
454 if (myOwnsContentMessages)
456 deleteContentMessages();
460 void deleteContentMessages()
462 std::list<DtSimInterfaceContent*>::iterator iter = myContentMessages.begin();
463 while (iter != myContentMessages.end())
469 myContentMessages.clear();
470 myOwnsContentMessages =
false;
475 if (myOwnsContentMessages)
477 deleteContentMessages();
480 ContentMessages::const_iterator iter = messages.begin();
481 while (iter != messages.end())
483 myContentMessages.push_back(iter->second->clone());
488 void setContentMessages(
const std::list<DtSimInterfaceContent*>& messages)
490 if (myOwnsContentMessages)
492 deleteContentMessages();
495 std::list<DtSimInterfaceContent*>::const_iterator iter = messages.begin();
496 while (iter != messages.end())
498 myContentMessages.push_back((*iter)->clone());
572 virtual void slot_onCancel(
bool escPressed);
574 virtual std::string stripNumbers(
const std::string& base)
const;
582 virtual void initializeEdit();
593 bool centerOnOnlyIfMousePositionIsOffWindow =
true)
const;
596 bool resetOrigin =
false);
602 const DtVector& thisGeocLocation,
const DtTaitBryan& thisGeocOrientation,
603 const DtVector& prGeocLocation,
const DtTaitBryan& prGeocOrientation);
607 const DtVector& thisGeocLocation,
const DtVector& prGeocLocation,
bool relativeOnly =
false);
615 virtual void calculateAnchor(
const DtVector& localAnchor);
618 virtual void initializeAltitudeAboveTerrainForEdit(
double curAlt,
const DtVector& curPos,
624 virtual bool clampOnPlacement()
const;
627 virtual bool clampAtClosestPolygonOnPlacement()
const;
630 virtual void updateOffsetsBasedOnMousePosition();
706 template <
typename T>