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();
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 DtVector observerCameraPosition()
const;
268 void setLocation(
double x,
double y,
double z );
271 void getOrientation(
double& psi,
double& theta,
double& phi )
const;
274 void getTopographicOrientation(
double& psi,
double& theta,
double& phi )
const;
277 void setOrientation(
double psi,
double theta,
double phi );
280 void setTopographicOrientation(
double psi,
double theta,
double phi );
283 void getOrientation(
double&
x,
double&
y,
double&
z,
double&
w )
const;
286 void setOrientation(
double x,
double y,
double z,
double w );
290 DtTaitBryan observerCameraOrientation(
bool includeShake=
true)
const;
294 virtual DtVector observerPlatformFront()
const;
298 virtual DtVector observerPlatformUp()
const;
302 virtual DtVector observerPlatformRight()
const;
307 virtual DtVector observerCameraFront(
bool includeShake=
true)
const;
310 virtual DtVector observerCameraUp(
bool includeShake =
true)
const;
313 virtual DtVector observerCameraRight(
bool includeShake =
true)
const;
317 void moveUnit(
const DtVector& direction);
321 void rotateUnit(
const DtTaitBryan& rotation);
325 void getLinearVelocity(
double &
x,
double &
y,
double &
z)
const;
326 DtVector linearVelocity()
const;
331 void getRotationalVelocity(
double&
x,
double&
y,
double&
z )
const;
332 DtVector rotationalVelocity()
const;
336 bool observerObjectMoving()
const;
339 double observerAltitude()
const;
347 void setAttachedLocation(
double x,
double y,
double z );
351 void setAttachedOrientation(
double psi,
double theta,
double phi );
355 void setLocalModelScalingEnabled(
bool enabled );
359 void setLocalModelScalingAmount(
float amount );
367 void setOrbitSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
370 int orbitSpeedGain()
const;
373 int orbitSpeedGainFromSpeed(
double speed )
const;
375 void setRotationSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
376 int rotationSpeedGain()
const;
379 void setLinearSpeedGain(
int gain );
380 int linearSpeedGain()
const;
382 void setLinearScaledSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
383 int linearScaledSpeedGain()
const;
385 void setLinearUnscaledSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
386 int linearUnscaledSpeedGain()
const;
388 void setGainPrecision(
int amt,
bool forwardToObserverModeManager =
true );
389 int gainPrecision()
const;
391 void setModelScaleFactor(
double modelScaleFactor,
bool forwardToObserverModeManager =
true );
392 double modelScaleFactor()
const;
395 bool forwardToObserverModeManager =
true );
399 bool forwardToObserverModeManager =
true );
402 void setSpeedScalingMslModeOffset(
double offset,
403 bool forwardToObserverModeManager =
true );
404 double speedScalingMslModeOffset()
const;
406 void setOrbitSpeed(
double speed );
407 double orbitSpeed()
const;
409 void setRotationSpeed(
double speed );
410 double rotationSpeed()
const;
412 void setLinearSpeed(
double speed );
413 double linearSpeed()
const;
418 virtual void toggleFlashlight();
424 virtual bool setCameraShake(
const std::string& shakeType);
428 virtual void setCameraShakeRotation(
const DtQuat& rotQuat)
const;
433 virtual void setSensor(
const std::string& sensorName);
439 virtual void disableSensor();
442 virtual void slot_sensorRemoved(
DtSensor* sensor);
447 virtual void synchronize();
490 boost::signal<void (DtObserver*, double offset)>
505 void slot_terrainCleared();
509 void updateGlobalTerrainFlag(
bool flag);
511 double calcLinearSpeed()
const;
512 double calcRotationSpeed()
const;
513 double calcOrbitSpeed()
const;
515 void getObserverOffsetVector(
double&
x,
double&
y,
double&
z )
const;
516 void setObserverOffsetVector(
double x,
double y,
double z );
518 void getObserverRotationOffset(
double&
x,
double&
y,
double&
z,
double&
w )
const;
519 void setObserverRotationOffset(
double x,
double y,
double z,
double w );
521 void getDisplayNamesFromUniqueIds(
const std::vector<DtUniqueID>& idsIn,
522 std::set<std::string>& displayNamesOut)
const;
523 bool getUniqueIdsFromDisplayNames(
const std::set<std::string>& displayNamesIn,
524 std::vector<DtUniqueID>& idsOut)
const;
531 void connectToElementDataSignals();
532 void disconnectFromElementDataSignals();
534 void setModeSpecificObserverObjectData();
540 virtual void slot_onElementAttributesChanged(
545 void slot_completeAttachment();
547 void slot_observerModeModelSetChanged(
int observerMode );
548 void slot_observerModeSensorChanged(
int observerMode );
549 void slot_observerModeIs2DChanged(
int observerMode );
550 void slot_observerModeKeyMapChanged(
int observerMode );
551 void slot_observerModeGainPrecisionChanged(
int observerMode );
552 void slot_observerModeOrbitSpeedGainChanged(
int observerMode );
553 void slot_observerModeRotationSpeedGainChanged(
int observerMode );
554 void slot_observerModeLinearScaledSpeedGainChanged(
int observerMode );
555 void slot_observerModeLinearUnscaledSpeedGainChanged(
int observerMode );
556 void slot_observerModeModelScaleFactorChanged(
int observerMode );
557 void slot_observerModeModelScaleTypeChanged(
int observerMode );
558 void slot_observerModeSpeedScalingModeChanged(
int observerMode );
559 void slot_observerModeSpeedScalingMslModeOffsetChanged(
int observerMode );
560 void slot_observerModeSettingChanged(
int observerMode,
int settingKey );
561 void slot_observerModeAdded(
int observerMode );
564 void attachTo(
bool afterTrue );