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;
102 virtual bool createObject(
const DtEntityType& entType,
int force,
106 virtual bool createObject(
const DtString& key,
const DtString& associatedData,
118 virtual bool canSetActivationTime()
const;
121 virtual void setForce(
int);
125 virtual void setEventProcessingEnabled(
bool value );
128 virtual bool embarkationAllowed()
const;
129 virtual void setEmbarkationAllowed(
bool);
134 virtual bool canEmbark()
const;
137 virtual void setCanEmbark(
bool);
140 virtual void setDoNotClamp(
bool);
141 bool doNotClamp()
const;
144 virtual bool needsEmbarkOnCheck()
const;
147 virtual void setIgnoreNextLeftButtonRelease(
bool b);
148 virtual void setEditStartedByDoubleClick(
bool);
153 virtual DtUUID uuid()
const;
158 virtual void removeInterfaceContentMessage(
const std::string&);
161 return myContentMessages;
167 virtual std::list<DtSimInterfaceContent*> contentMessagesToList()
const;
169 virtual void sendContentMessages();
172 virtual VrfObjectEditFacadeList objectFacades()
const;
175 virtual void setAllowCreationOnMouseClick(
bool flag);
178 virtual void setLabel(
const std::string&);
179 virtual std::string label()
const;
182 virtual bool allowCreationOnMouseClick()
const;
190 virtual DtGeodeticCoord clampToGround(
const DtGeodeticCoord&)
const;
193 virtual void setAttachObjectToMouse(
bool);
196 virtual bool attachObjectToMouse()
const;
199 virtual void setHeading(
double value);
200 virtual double heading()
const;
203 virtual void setLocation(
const DtVector& loc);
204 virtual void setLocation(
const DtVector& loc,
double altAboveGround);
210 virtual void deferredStop();
213 virtual int objectCount()
const;
216 virtual bool createVrfObject();
220 virtual bool modifyVrfObjects();
235 virtual void initializeEventProcessor();
238 virtual void setOverlay(
const std::string& name);
239 virtual const std::string& overlay()
const;
240 virtual std::string defaultOverlayForCreatingObject()
const;
243 virtual std::string getNextCreatingName(
bool includeCurrent =
false);
246 virtual void setAltitudeAboveGL(
double alt,
bool setInProcessor =
true );
249 virtual void setAltitudeAboveSL(
double alt,
bool setInProcessor =
true );
253 void setCreating(
bool b)
258 bool creating()
const
266 virtual void setUserData(
const std::string& userData);
267 virtual const std::string& userData()
const;
269 virtual void setExtendedLabels(
const std::map<int, DtString>&);
270 virtual const std::map<int, DtString>& extendedLabels()
const;
272 virtual void setExtendedDataMap(
const std::map<std::string, std::string>& extendedData);
273 virtual void setExtendedDataMap(
const std::map<DtString, DtString>& extendedData);
274 virtual const std::map<std::string, std::string>& extendedDataMap()
const;
275 virtual void setExtendedData(
const std::string& key,
const std::string& value);
276 virtual void removeExtendedData(
const std::string& key);
277 virtual std::string extendedData(
const std::string& key)
const;
279 virtual void slot_onComplete();
282 virtual void slot_onLocationChanged(
const DtVector& location,
double altAboveGround );
283 virtual void slot_onAltitudeIsDragging(
bool);
288 virtual void setPublishObject(
bool);
289 virtual bool publishObject()
const;
292 virtual void setObjectName(
const std::string& name);
295 virtual void setUUIDForCreation(
const DtUUID&);
296 virtual const DtUUID& uuidForCreation()
const;
299 virtual bool isUniqueName()
const;
304 virtual double groundHeight(
const DtVector& localPosition,
DtVector* localGround = 0,
305 const std::vector<makVrv::DtUniqueID>& ignore = std::vector<makVrv::DtUniqueID>())
const;
307 virtual void setAltitudeAllowed(
bool);
308 bool altitudeAllowed()
const;
310 virtual const std::string& objectName()
const;
314 virtual bool anchorMouseToOrigin()
const;
317 virtual bool anchorPositionIsMouse()
const;
320 virtual void setAnchorPosition(
const DtGeodeticCoord&);
325 virtual DtVector convertGeocentricToGround(
const DtVector& geoc,
double& altitude)
const;
327 virtual void setShowPropertiesDialogBeforeCreate(
bool);
328 virtual bool showPropertiesDialogBeforeCreate()
const;
331 virtual bool keywordsContain(
const std::string&)
const;
332 virtual std::string keyword(
const std::string&)
const;
333 virtual std::string value(
const std::string&)
const;
334 virtual void addKeyword(
const std::string&);
335 virtual void removeKeyword(
const std::string&);
337 virtual bool waitingToStop()
const;
342 return myEditingType;
351 virtual std::vector<makVrv::DtElementID> ignoreList()
const;
355 virtual void setOverrideIdsToIgnore(
const std::vector<makVrv::DtUniqueID>& overrideIgnore);
358 virtual const std::vector<makVrv::DtElementID>& unifiedIgnoreList()
const;
360 virtual void slot_onAltitudeChanged(
const DtVector&,
double);
363 virtual void cancel();
366 virtual void setFacadesVisible(
bool);
369 virtual bool noStyle()
const;
371 virtual void slot_onHeadingChanged(
double heading );
374 virtual void setHeadingOffset(
double d);
377 virtual void disconnectPlacement();
381 virtual void setGroundClampOnPlacement(
bool);
382 virtual bool groundClampOnPlacement()
const;
389 virtual void connectPlacement();
392 virtual DtVector centerOfMass()
const;
396 virtual DtVector sumOfAllLocations()
const;
399 virtual void updateOffsetsBasedOnMousePosition(
const DtVector& centerOfMass,
const DtGeodeticCoord&,
400 bool usImagePoints =
false);
403 virtual void setSignalOnMultiSelectionComplete(
bool);
406 virtual void setKeywords(
const std::string&);
410 virtual void setSelectionCount(
int);
412 virtual void parseKeywords(
const std::string&);
414 virtual bool warpMouseToOrigin()
const;
415 virtual void setWarpMouseToOrigin(
bool);
445 physicalLineHeight(0.), physicalLineWidth(0.), isClosedFigure(false) , embarkId(0), useSlotIfAvailable(false), initialUUID(
DtUUID::nullUUID()) {};
448 entityType(omd.entityType)
449 , createdEntityType(omd.createdEntityType)
450 , objectName(omd.objectName)
452 , positions(omd.positions)
453 , heading(omd.heading)
454 , isClosedFigure(omd.isClosedFigure)
455 , clamped(omd.clamped)
456 , isAggregated(omd.isAggregated)
457 , userData(omd.userData)
458 , isPublished(omd.isPublished)
459 , extendedData(omd.extendedData)
460 , extendedLabels(omd.extendedLabels)
461 , myOwnsContentMessages(true)
463 , appearance(omd.appearance)
464 , overlay(omd.overlay)
465 , projected(omd.projected)
466 , physicalLineHeight(omd.physicalLineHeight)
467 , physicalLineWidth(omd.physicalLineWidth)
468 , embarkId(omd.embarkId)
469 , useSlotIfAvailable(omd.useSlotIfAvailable)
470 , initialUUID(omd.initialUUID)
477 if (myOwnsContentMessages)
479 deleteContentMessages();
483 void deleteContentMessages()
485 std::list<DtSimInterfaceContent*>::iterator iter = myContentMessages.begin();
486 while (iter != myContentMessages.end())
492 myContentMessages.clear();
493 myOwnsContentMessages =
false;
498 if (myOwnsContentMessages)
500 deleteContentMessages();
503 ContentMessages::const_iterator iter = messages.begin();
504 while (iter != messages.end())
506 myContentMessages.push_back(iter->second->clone());
511 void setContentMessages(
const std::list<DtSimInterfaceContent*>& messages)
513 if (myOwnsContentMessages)
515 deleteContentMessages();
518 std::list<DtSimInterfaceContent*>::const_iterator iter = messages.begin();
519 while (iter != messages.end())
521 myContentMessages.push_back((*iter)->clone());
597 virtual void clearConnections();
605 virtual void slot_onCancel(
bool escPressed);
607 virtual std::string stripNumbers(
const std::string& base)
const;
615 virtual void initializeEdit();
624 virtual void initializeLocationChangeConnections();
629 bool centerOnOnlyIfMousePositionIsOffWindow =
true)
const;
632 bool resetOrigin =
false);
637 virtual bool continueWithHandlerCancelOnLastObjectRemoval();
638 virtual bool isOkToStopEditing();
639 virtual void handlerDisabled();
642 const DtVector& thisGeocLocation,
const DtTaitBryan& thisGeocOrientation,
643 const DtVector& prGeocLocation,
const DtTaitBryan& prGeocOrientation);
647 const DtVector& thisGeocLocation,
const DtVector& prGeocLocation,
bool relativeOnly =
false);
655 virtual void calculateAnchor(
const DtVector& localAnchor);
658 virtual void initializeAltitudeAboveTerrainForEdit(
double curAlt,
const DtVector& curPos,
664 virtual bool clampOnPlacement()
const;
667 virtual bool clampAtClosestPolygonOnPlacement()
const;
670 virtual void updateOffsetsBasedOnMousePosition();
672 virtual bool setupIgnoreLists();
760 template <
typename T>