21 #include <vlutil/vlPerformanceStats.h>
24 #include <matrix/vlVector.h>
25 #include <matrix/geodeticCoord.h>
26 #include <vlpi/entityType.h>
28 #include <boost/signal.hpp>
34 class DtSimObjectEntry;
105 virtual bool createObject(
const DtEntityType& entType,
int force,
109 virtual bool createObject(
const DtString& key,
const DtString& associatedData,
121 virtual bool canSetActivationTime()
const;
124 virtual void setForce(
int);
128 virtual void monitorObjectRemoval(
bool);
131 virtual void setEventProcessingEnabled(
bool value );
134 virtual bool embarkationAllowed()
const;
135 virtual void setEmbarkationAllowed(
bool);
140 virtual bool canEmbark()
const;
143 virtual void setCanEmbark(
bool);
146 virtual void setDoNotClamp(
bool);
147 bool doNotClamp()
const;
150 virtual bool needsEmbarkOnCheck()
const;
153 virtual void setIgnoreNextLeftButtonRelease(
bool b);
154 virtual void setEditStartedByDoubleClick(
bool);
159 virtual DtUUID uuid()
const;
164 virtual void removeInterfaceContentMessage(
const std::string&);
167 return myContentMessages;
173 virtual std::list<DtSimInterfaceContent*> contentMessagesToList()
const;
175 virtual void sendContentMessages();
178 virtual VrfObjectEditFacadeList objectFacades()
const;
181 virtual void setAllowCreationOnMouseClick(
bool flag);
184 virtual void setLabel(
const std::string&);
185 virtual std::string label()
const;
188 virtual bool allowCreationOnMouseClick()
const;
196 virtual DtGeodeticCoord clampToGround(
const DtGeodeticCoord&)
const;
199 virtual void setAttachObjectToMouse(
bool);
202 virtual bool attachObjectToMouse()
const;
205 virtual void setHeading(
double value);
206 virtual double heading()
const;
209 virtual void setLocation(
const DtVector& loc);
210 virtual void setLocation(
const DtVector& loc,
double altAboveGround);
216 virtual void deferredStop();
219 virtual int objectCount()
const;
222 virtual bool createVrfObject();
226 virtual bool modifyVrfObjects();
241 virtual void initializeEventProcessor();
244 virtual void setOverlay(
const std::string& name);
245 virtual const std::string& overlay()
const;
246 virtual std::string defaultOverlayForCreatingObject()
const;
249 virtual std::string getNextCreatingName(
bool includeCurrent =
false);
252 virtual void setAltitudeAboveGL(
double alt,
bool setInProcessor =
true );
255 virtual void setAltitudeAboveSL(
double alt,
bool setInProcessor =
true );
260 return myAltitudeClampType;
263 void setCreating(
bool b)
268 bool creating()
const
276 virtual void setUserData(
const std::string& userData);
277 virtual const std::string& userData()
const;
279 virtual void setExtendedLabels(
const std::map<int, DtString>&);
280 virtual const std::map<int, DtString>& extendedLabels()
const;
282 virtual void setExtendedDataMap(
const std::map<std::string, std::string>& extendedData);
283 virtual void setExtendedDataMap(
const std::map<DtString, DtString>& extendedData);
284 virtual const std::map<std::string, std::string>& extendedDataMap()
const;
285 virtual void setExtendedData(
const std::string& key,
const std::string& value);
286 virtual void removeExtendedData(
const std::string& key);
287 virtual std::string extendedData(
const std::string& key)
const;
289 virtual void slot_onComplete();
292 virtual void slot_onLocationChanged(
const DtVector& location,
double altAboveGround );
293 virtual void slot_onAltitudeIsDragging(
bool);
298 virtual void setPublishObject(
bool);
299 virtual bool publishObject()
const;
302 virtual void setObjectName(
const std::string& name);
305 virtual void setUUIDForCreation(
const DtUUID&);
306 virtual const DtUUID& uuidForCreation()
const;
309 virtual bool isUniqueName()
const;
314 virtual double groundHeight(
const DtVector& localPosition,
DtVector* localGround = 0,
315 const std::vector<makVrv::DtUniqueID>& ignore = std::vector<makVrv::DtUniqueID>())
const;
317 virtual void setAltitudeAllowed(
bool);
318 bool altitudeAllowed()
const;
320 virtual const std::string& objectName()
const;
324 virtual bool anchorMouseToOrigin()
const;
327 virtual bool anchorPositionIsMouse()
const;
330 virtual void setAnchorPosition(
const DtGeodeticCoord&);
335 virtual DtVector convertGeocentricToGround(
const DtVector& geoc,
double& altitude)
const;
337 virtual void setShowPropertiesDialogBeforeCreate(
bool);
338 virtual bool showPropertiesDialogBeforeCreate()
const;
341 virtual bool keywordsContain(
const std::string&)
const;
342 virtual std::string keyword(
const std::string&)
const;
343 virtual std::string value(
const std::string&)
const;
344 virtual void addKeyword(
const std::string&);
345 virtual void removeKeyword(
const std::string&);
347 virtual bool waitingToStop()
const;
352 return myEditingType;
361 virtual std::vector<makVrv::DtElementID> ignoreList()
const;
365 virtual void setOverrideIdsToIgnore(
const std::vector<makVrv::DtUniqueID>& overrideIgnore);
368 virtual const std::vector<makVrv::DtElementID>& unifiedIgnoreList()
const;
370 virtual void slot_onAltitudeChanged(
const DtVector&,
double);
373 virtual void cancel();
376 virtual void setFacadesVisible(
bool);
379 virtual bool noStyle()
const;
381 virtual void slot_onHeadingChanged(
double heading );
384 virtual void setHeadingOffset(
double d);
387 virtual void disconnectPlacement();
391 virtual void setGroundClampOnPlacement(
bool);
392 virtual bool groundClampOnPlacement()
const;
399 virtual void connectPlacement();
402 virtual DtVector centerOfMass()
const;
406 virtual DtVector sumOfAllLocations()
const;
409 virtual void updateOffsetsBasedOnMousePosition(
const DtVector& centerOfMass,
const DtGeodeticCoord&,
410 bool usImagePoints =
false);
413 virtual void setSignalOnMultiSelectionComplete(
bool);
416 virtual void setKeywords(
const std::string&);
420 virtual void setSelectionCount(
int);
422 virtual void parseKeywords(
const std::string&);
424 virtual bool warpMouseToOrigin()
const;
425 virtual void setWarpMouseToOrigin(
bool);
455 physicalLineHeight(0.), physicalLineWidth(0.), isClosedFigure(false) , isProjected(false), embarkId(0), useSlotIfAvailable(false), initialUUID(
DtUUID::nullUUID()) {};
458 entityType(omd.entityType)
459 , createdEntityType(omd.createdEntityType)
460 , objectName(omd.objectName)
462 , positions(omd.positions)
463 , heading(omd.heading)
464 , isProjected(omd.isProjected)
465 , isClosedFigure(omd.isClosedFigure)
466 , clamped(omd.clamped)
467 , isAggregated(omd.isAggregated)
468 , userData(omd.userData)
469 , isPublished(omd.isPublished)
470 , extendedData(omd.extendedData)
471 , extendedLabels(omd.extendedLabels)
472 , myOwnsContentMessages(true)
474 , appearance(omd.appearance)
475 , overlay(omd.overlay)
476 , projected(omd.projected)
477 , physicalLineHeight(omd.physicalLineHeight)
478 , physicalLineWidth(omd.physicalLineWidth)
479 , embarkId(omd.embarkId)
480 , useSlotIfAvailable(omd.useSlotIfAvailable)
481 , initialUUID(omd.initialUUID)
488 if (myOwnsContentMessages)
490 deleteContentMessages();
494 void deleteContentMessages()
496 std::list<DtSimInterfaceContent*>::iterator iter = myContentMessages.begin();
497 while (iter != myContentMessages.end())
503 myContentMessages.clear();
504 myOwnsContentMessages =
false;
509 if (myOwnsContentMessages)
511 deleteContentMessages();
514 ContentMessages::const_iterator iter = messages.begin();
515 while (iter != messages.end())
517 myContentMessages.push_back(iter->second->clone());
522 void setContentMessages(
const std::list<DtSimInterfaceContent*>& messages)
524 if (myOwnsContentMessages)
526 deleteContentMessages();
529 std::list<DtSimInterfaceContent*>::const_iterator iter = messages.begin();
530 while (iter != messages.end())
532 myContentMessages.push_back((*iter)->clone());
609 virtual void clearConnections();
617 virtual void slot_onCancel(
bool escPressed);
619 virtual std::string stripNumbers(
const std::string& base)
const;
627 virtual void initializeEdit();
636 virtual void initializeLocationChangeConnections();
641 bool centerOnOnlyIfMousePositionIsOffWindow =
true)
const;
644 bool resetOrigin =
false);
650 virtual bool continueWithHandlerCancelOnLastObjectRemoval();
651 virtual bool isOkToStopEditing();
652 virtual void handlerDisabled();
655 const DtVector& thisGeocLocation,
const DtTaitBryan& thisGeocOrientation,
656 const DtVector& prGeocLocation,
const DtTaitBryan& prGeocOrientation);
660 const DtVector& thisGeocLocation,
const DtVector& prGeocLocation,
bool relativeOnly =
false);
668 virtual void calculateAnchor(
const DtVector& localAnchor);
671 virtual void initializeAltitudeAboveTerrainForEdit(
double curAlt,
const DtVector& curPos,
677 virtual bool clampOnPlacement()
const;
680 virtual bool clampAtClosestPolygonOnPlacement()
const;
683 virtual void updateOffsetsBasedOnMousePosition();
685 virtual bool setupIgnoreLists();
775 template <
typename T>