15 #include <matrix/vlVector.h>
24 class DtObserverObjectAgent;
26 class DtAgentManagerInterface;
27 class DtObserverConfiguration;
55 DtObserverObjectAgent& agent();
58 const DtObserverObjectAgent& agent()
const;
83 bool hasInitialLocation()
const;
94 bool projectionIs2D()
const;
95 void setProjectionIs2D(
bool is2d );
101 const std::string& name()
const;
102 void setName(
const std::string& name );
109 int observerMode()
const;
110 void setObserverMode(
int observerMode );
114 double viewResolution()
const;
117 void setViewResolution(
double resolution );
120 double viewMagnification()
const;
123 void setViewMagnification(
double magnficationFactor );
129 bool inUse(
const std::string& channelKeyToIgnore =
"" )
const;
135 void attachToNextElement();
138 void attachToPreviousElement();
152 void setPrimaryAttachment(
const ElementList& element );
158 void setSecondaryAttachment(
const ElementList& objects );
162 void setLocationTrackAttachment(
double x,
double y,
double z );
166 void getLocationTrackAttachment(
double& x,
double& y,
double& z )
const;
171 void setPartAttachment(
int partId);
174 int partAttachment()
const;
180 bool attached()
const;
183 bool tracking()
const;
186 const ElementList& primaryAttachments()
const;
189 const ElementList& secondaryAttachments()
const;
191 void setHideModelOnAttach(
bool hide );
192 bool hideModelOnAttach()
const;
198 void setAttachmentHas3DCockpit(
bool cockpit);
199 bool attachmentHas3DCockpit()
const;
205 void setOrientToTargetConstraint(
bool orient );
206 bool orientToTargetConstraint()
const;
213 bool haveLastSingleAttached()
const;
226 void setAllowReset(
bool b);
229 bool allowReset()
const;
232 void setAllowAttach(
bool b);
235 bool allowAttach()
const;
238 void setAllowDetach(
bool b);
241 bool allowDetach()
const;
244 void centerOnTerrain();
247 void centerOnTerrain(
const DtUniqueID& terrainPatch );
251 void suppressConstrainToTerrain(
bool trueFalse );
254 void setConstrainToCenter(
bool trueFalse );
255 void toggleConstrainToCenter();
256 bool constrainToCenter()
const;
259 void getLocation(
double &x,
double &y,
double& z )
const;
265 void setLocation(
double x,
double y,
double z );
268 void getOrientation(
double& psi,
double& theta,
double& phi )
const;
271 void getTopographicOrientation(
double& psi,
double& theta,
double& phi )
const;
274 void setOrientation(
double psi,
double theta,
double phi );
277 void setTopographicOrientation(
double psi,
double theta,
double phi );
280 void getOrientation(
double& x,
double& y,
double& z,
double& w )
const;
283 void setOrientation(
double x,
double y,
double z,
double w );
287 virtual DtVector observerPlatformFront()
const;
291 virtual DtVector observerPlatformUp()
const;
295 virtual DtVector observerPlatformRight()
const;
299 virtual DtVector observerFront()
const;
302 virtual DtVector observerUp()
const;
305 virtual DtVector observerRight()
const;
309 void moveUnit(
const DtVector& direction);
313 void rotateUnit(
const DtTaitBryan& rotation);
316 void getLinearVelocity(
double &x,
double &y,
double &z)
const;
319 void getRotationalVelocity(
double& x,
double& y,
double& z )
const;
322 bool observerObjectMoving()
const;
325 double observerAltitude()
const;
333 void setAttachedLocation(
double x,
double y,
double z );
337 void setAttachedOrientation(
double psi,
double theta,
double phi );
341 void setLocalModelScalingEnabled(
bool enabled );
345 void setLocalModelScalingAmount(
float amount );
353 void setOrbitSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
356 int orbitSpeedGain()
const;
359 int orbitSpeedGainFromSpeed(
double speed )
const;
361 void setRotationSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
362 int rotationSpeedGain()
const;
365 void setLinearSpeedGain(
int gain );
366 int linearSpeedGain()
const;
368 void setLinearScaledSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
369 int linearScaledSpeedGain()
const;
371 void setLinearUnscaledSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
372 int linearUnscaledSpeedGain()
const;
374 void setGainPrecision(
int amt,
bool forwardToObserverModeManager =
true );
375 int gainPrecision()
const;
377 void setModelScaleFactor(
double modelScaleFactor,
bool forwardToObserverModeManager =
true );
378 double modelScaleFactor()
const;
381 bool forwardToObserverModeManager =
true );
385 bool forwardToObserverModeManager =
true );
388 void setSpeedScalingMslModeOffset(
double offset,
389 bool forwardToObserverModeManager =
true );
390 double speedScalingMslModeOffset()
const;
392 void setOrbitSpeed(
double speed );
393 double orbitSpeed()
const;
395 void setRotationSpeed(
double speed );
396 double rotationSpeed()
const;
398 void setLinearSpeed(
double speed );
399 double linearSpeed()
const;
404 virtual void toggleFlashlight();
410 virtual bool setCameraShake(
const std::string& shakeType);
414 virtual void setCameraShakeRotation(
const DtQuat& rotQuat)
const;
419 virtual void setSensor(
const std::string& sensorName);
422 virtual std::string findSensor();
425 virtual void disableSensor();
428 virtual void slot_sensorRemoved(
DtSensor* sensor);
433 virtual void synchronize();
476 boost::signal<void (DtObserver*, double offset)>
491 void slot_terrainCleared();
493 void slot_oceanLayerDeleted(
const std::string&);
495 void updateGlobalTerrainFlag(
bool flag);
497 double calcLinearSpeed()
const;
498 double calcRotationSpeed()
const;
499 double calcOrbitSpeed()
const;
501 void getObserverOffsetVector(
double& x,
double& y,
double& z )
const;
502 void setObserverOffsetVector(
double x,
double y,
double z );
504 void getObserverRotationOffset(
double& x,
double& y,
double& z,
double& w )
const;
505 void setObserverRotationOffset(
double x,
double y,
double z,
double w );
507 void getDisplayNamesFromUniqueIds(
const std::vector<DtUniqueID>& idsIn,
508 std::set<std::string>& displayNamesOut)
const;
509 bool getUniqueIdsFromDisplayNames(
const std::set<std::string>& displayNamesIn,
510 std::vector<DtUniqueID>& idsOut)
const;
517 void connectToElementDataSignals();
518 void disconnectFromElementDataSignals();
520 void setModeSpecificObserverObjectData();
526 virtual void slot_onElementAttributesChanged(
531 void slot_completeAttachment();
533 void slot_observerModeModelSetChanged(
int observerMode );
534 void slot_observerModeSensorChanged(
int observerMode );
535 void slot_observerModeIs2DChanged(
int observerMode );
536 void slot_observerModeKeyMapChanged(
int observerMode );
537 void slot_observerModeGainPrecisionChanged(
int observerMode );
538 void slot_observerModeOrbitSpeedGainChanged(
int observerMode );
539 void slot_observerModeRotationSpeedGainChanged(
int observerMode );
540 void slot_observerModeLinearScaledSpeedGainChanged(
int observerMode );
541 void slot_observerModeLinearUnscaledSpeedGainChanged(
int observerMode );
542 void slot_observerModeModelScaleFactorChanged(
int observerMode );
543 void slot_observerModeModelScaleTypeChanged(
int observerMode );
544 void slot_observerModeSpeedScalingModeChanged(
int observerMode );
545 void slot_observerModeSpeedScalingMslModeOffsetChanged(
int observerMode );
546 void slot_observerModeSettingChanged(
int observerMode,
int settingKey );
547 void slot_observerModeAdded(
int observerMode );
550 void attachTo(
bool afterTrue );