15 #include <matrix/vlVector.h>
24 class DtObserverObjectAgent;
26 class DtAgentManagerInterface;
27 class DtObserverConfiguration;
83 bool hasInitialLocation()
const;
94 bool projectionIs2D()
const;
95 void setProjectionIs2D(
bool is2d );
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();
153 void setPrimaryAttachment(
const ElementList& elements);
162 void setSecondaryAttachment(
const ElementList& element);
168 void setLocationTrackAttachment(
double x,
double y,
double z );
172 void getLocationTrackAttachment(
double&
x,
double&
y,
double&
z )
const;
177 void setPartAttachment(
int partId);
180 int partAttachment()
const;
186 bool attached()
const;
189 bool tracking()
const;
192 const ElementList& primaryAttachments()
const;
195 const ElementList& secondaryAttachments()
const;
197 void setHideModelOnAttach(
bool hide );
198 bool hideModelOnAttach()
const;
204 void setAttachmentHas3DCockpit(
bool cockpit);
205 bool attachmentHas3DCockpit()
const;
211 void setOrientToTargetConstraint(
bool orient );
212 bool orientToTargetConstraint()
const;
219 bool haveLastSingleAttached()
const;
232 void setAllowReset(
bool b);
235 bool allowReset()
const;
238 void setAllowAttach(
bool b);
241 bool allowAttach()
const;
244 void setAllowDetach(
bool b);
247 bool allowDetach()
const;
250 void centerOnTerrain();
253 void centerOnTerrain(
const DtUniqueID& terrainPatch );
257 void suppressConstrainToTerrain(
bool trueFalse );
260 void setConstrainToCenter(
bool trueFalse );
261 void toggleConstrainToCenter();
262 bool constrainToCenter()
const;
265 void getLocation(
double &
x,
double &
y,
double&
z )
const;
271 DtVector observerCameraPosition()
const;
274 void setLocation(
double x,
double y,
double z );
277 void getOrientation(
double& psi,
double& theta,
double& phi )
const;
280 void getTopographicOrientation(
double& psi,
double& theta,
double& phi )
const;
283 void setOrientation(
double psi,
double theta,
double phi );
286 void setTopographicOrientation(
double psi,
double theta,
double phi );
289 void getOrientation(
double&
x,
double&
y,
double&
z,
double&
w )
const;
292 void setOrientation(
double x,
double y,
double z,
double w );
296 DtTaitBryan observerCameraOrientation(
bool includeShake=
true)
const;
300 virtual DtVector observerPlatformFront()
const;
304 virtual DtVector observerPlatformUp()
const;
308 virtual DtVector observerPlatformRight()
const;
313 virtual DtVector observerCameraFront(
bool includeShake=
true)
const;
316 virtual DtVector observerCameraUp(
bool includeShake =
true)
const;
319 virtual DtVector observerCameraRight(
bool includeShake =
true)
const;
323 void moveUnit(
const DtVector& direction);
327 void rotateUnit(
const DtTaitBryan& rotation);
331 void getLinearVelocity(
double &
x,
double &
y,
double &
z)
const;
332 DtVector linearVelocity()
const;
337 void getRotationalVelocity(
double&
x,
double&
y,
double&
z )
const;
338 DtVector rotationalVelocity()
const;
342 bool observerObjectMoving()
const;
345 double observerAltitude()
const;
353 void setAttachedLocation(
double x,
double y,
double z );
357 void setAttachedOrientation(
double psi,
double theta,
double phi );
361 void setLocalModelScalingEnabled(
bool enabled );
365 void setLocalModelScalingAmount(
float amount );
373 void setOrbitSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
376 int orbitSpeedGain()
const;
379 int orbitSpeedGainFromSpeed(
double speed )
const;
381 void setRotationSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
382 int rotationSpeedGain()
const;
385 void setLinearSpeedGain(
int gain );
386 int linearSpeedGain()
const;
388 void setLinearScaledSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
389 int linearScaledSpeedGain()
const;
391 void setLinearUnscaledSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
392 int linearUnscaledSpeedGain()
const;
394 void setGainPrecision(
int amt,
bool forwardToObserverModeManager =
true );
395 int gainPrecision()
const;
397 void setModelScaleFactor(
double modelScaleFactor,
bool forwardToObserverModeManager =
true );
398 double modelScaleFactor()
const;
400 void setModelScaleType(
const std::string& modelScaleType,
bool forwardToObserverModeManager =
true );
403 void setMaxModelScaleFactor(
double maxModelScaleFactor,
bool forwardToObserverModeManager =
true);
404 double maxModelScaleFactor()
const;
407 bool forwardToObserverModeManager =
true );
410 void setSpeedScalingMslModeOffset(
double offset,
411 bool forwardToObserverModeManager =
true );
412 double speedScalingMslModeOffset()
const;
414 void setOrbitSpeed(
double speed );
415 double orbitSpeed()
const;
417 void setRotationSpeed(
double speed );
418 double rotationSpeed()
const;
420 void setLinearSpeed(
double speed );
421 double linearSpeed()
const;
426 virtual void toggleFlashlight();
432 virtual bool setCameraShake(
const std::string& shakeType);
436 virtual void setCameraShakeRotation(
const DtQuat& rotQuat)
const;
441 virtual void setSensor(
const std::string& sensorName);
447 virtual void disableSensor();
450 virtual void slot_sensorRemoved(
DtSensor* sensor);
455 virtual void synchronize();
498 boost::signal<void (DtObserver*, double offset)>
513 void slot_terrainCleared();
517 void updateGlobalTerrainFlag(
bool flag);
519 double calcLinearSpeed()
const;
520 double calcRotationSpeed()
const;
521 double calcOrbitSpeed()
const;
523 void getObserverOffsetVector(
double&
x,
double&
y,
double&
z )
const;
524 void setObserverOffsetVector(
double x,
double y,
double z );
526 void getObserverRotationOffset(
double&
x,
double&
y,
double&
z,
double&
w )
const;
527 void setObserverRotationOffset(
double x,
double y,
double z,
double w );
529 void getDisplayNamesFromUniqueIds(
const std::vector<DtUniqueID>& idsIn,
530 std::set<std::string>& displayNamesOut)
const;
531 bool getUniqueIdsFromDisplayNames(
const std::set<std::string>& displayNamesIn,
532 std::vector<DtUniqueID>& idsOut)
const;
539 void connectToElementDataSignals();
540 void disconnectFromElementDataSignals();
542 void setModeSpecificObserverObjectData();
548 virtual void slot_onElementAttributesChanged(
553 void slot_completeAttachment();
555 void slot_observerModeModelSetChanged(
int observerMode );
556 void slot_observerModeSensorChanged(
int observerMode );
557 void slot_observerModeIs2DChanged(
int observerMode );
558 void slot_observerModeKeyMapChanged(
int observerMode );
559 void slot_observerModeGainPrecisionChanged(
int observerMode );
560 void slot_observerModeOrbitSpeedGainChanged(
int observerMode );
561 void slot_observerModeRotationSpeedGainChanged(
int observerMode );
562 void slot_observerModeLinearScaledSpeedGainChanged(
int observerMode );
563 void slot_observerModeLinearUnscaledSpeedGainChanged(
int observerMode );
564 void slot_observerModeModelScaleFactorChanged(
int observerMode );
565 void slot_observerModeModelScaleTypeChanged(
int observerMode );
566 void slot_observerModeSpeedScalingModeChanged(
int observerMode );
567 void slot_observerModeSpeedScalingMslModeOffsetChanged(
int observerMode );
568 void slot_observerModeSettingChanged(
int observerMode,
int settingKey );
569 void slot_observerModeAdded(
int observerMode );
572 void attachTo(
bool afterTrue );