21 #include <boost/signals.hpp>
31 class DtObserverObjectAgent;
33 class DtAgentManagerInterface;
34 class DtObserverConfiguration;
62 DtObserverObjectAgent& agent();
65 const DtObserverObjectAgent& agent()
const;
87 bool hasInitialLocation()
const;
90 const std::string& name()
const;
91 void setName(
const std::string& name );
98 int observerMode()
const;
99 void setObserverMode(
int observerMode );
103 double viewResolution()
const;
106 void setViewResolution(
double resolution );
109 double viewMagnification()
const;
112 void setViewMagnification(
double magnficationFactor );
118 bool inUse(
const std::string& channelKeyToIgnore =
"" )
const;
124 void attachToNextElement();
127 void attachToPreviousElement();
141 void setPrimaryAttachment(
const ElementList& element );
147 void setSecondaryAttachment(
const ElementList& objects );
152 void setPartAttachment(
int partId);
155 int partAttachment()
const;
161 bool attached()
const;
164 bool tracking()
const;
167 const ElementList& primaryAttachments()
const;
170 const ElementList& secondaryAttachments()
const;
172 void setHideModelOnAttach(
bool hide );
173 bool hideModelOnAttach()
const;
179 void setAttachmentHas3DCockpit(
bool cockpit);
180 bool attachmentHas3DCockpit()
const;
186 void setOrientToTargetConstraint(
bool orient );
187 bool orientToTargetConstraint()
const;
194 bool haveLastSingleAttached()
const;
207 void setAllowReset(
bool b);
210 bool allowReset()
const;
213 void setAllowAttach(
bool b);
216 bool allowAttach()
const;
219 void setAllowDetach(
bool b);
222 bool allowDetach()
const;
225 void centerOnTerrain();
228 void centerOnTerrain(
const DtUniqueID& terrainPatch );
232 void suppressConstrainToTerrain(
bool trueFalse );
235 void setConstrainToCenter(
bool trueFalse );
236 void toggleConstrainToCenter();
237 bool constrainToCenter()
const;
240 void getLocation(
double &x,
double &y,
double& z )
const;
246 void setLocation(
double x,
double y,
double z );
249 void getOrientation(
double& psi,
double& theta,
double& phi )
const;
252 void getTopographicOrientation(
double& psi,
double& theta,
double& phi )
const;
255 void setOrientation(
double psi,
double theta,
double phi );
258 void setTopographicOrientation(
double psi,
double theta,
double phi );
261 void getOrientation(
double& x,
double& y,
double& z,
double& w )
const;
264 void setOrientation(
double x,
double y,
double z,
double w );
268 void moveUnit(
const DtVector& direction);
272 void rotateUnit(
const DtTaitBryan& rotation);
275 void getLinearVelocity(
double &x,
double &y,
double &z)
const;
278 void getRotationalVelocity(
double& x,
double& y,
double& z )
const;
281 bool observerObjectMoving()
const;
284 double observerAltitude()
const;
292 void setAttachedLocation(
double x,
double y,
double z );
296 void setAttachedOrientation(
double psi,
double theta,
double phi );
300 void setLocalModelScalingEnabled(
bool enabled );
304 void setLocalModelScalingAmount(
float amount );
312 void setOrbitSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
315 int orbitSpeedGain()
const;
318 int orbitSpeedGainFromSpeed(
double speed )
const;
320 void setRotationSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
321 int rotationSpeedGain()
const;
324 void setLinearSpeedGain(
int gain );
325 int linearSpeedGain()
const;
327 void setLinearScaledSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
328 int linearScaledSpeedGain()
const;
330 void setLinearUnscaledSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
331 int linearUnscaledSpeedGain()
const;
333 void setGainPrecision(
int amt,
bool forwardToObserverModeManager =
true );
334 int gainPrecision()
const;
336 void setModelScaleFactor(
double modelScaleFactor,
bool forwardToObserverModeManager =
true );
337 double modelScaleFactor()
const;
340 bool forwardToObserverModeManager =
true );
344 bool forwardToObserverModeManager =
true );
347 void setSpeedScalingAslModeOffset(
double offset,
348 bool forwardToObserverModeManager =
true );
349 double speedScalingAslModeOffset()
const;
351 void setOrbitSpeed(
double speed );
352 double orbitSpeed()
const;
354 void setRotationSpeed(
double speed );
355 double rotationSpeed()
const;
357 void setLinearSpeed(
double speed );
358 double linearSpeed()
const;
363 virtual void toggleFlashlight();
369 virtual bool setCameraShake(
const std::string& shakeType);
373 virtual void setCameraShakeRotation(
const DtQuat& rotQuat)
const;
378 virtual void setSensor(
const std::string& sensorName);
381 virtual std::string findSensor();
384 virtual void disableSensor();
387 virtual void slot_sensorRemoved(
DtSensor* sensor);
392 virtual void synchronize();
435 boost::signal<void (DtObserver*, double offset)>
450 void slot_terrainCleared();
454 void updateGlobalTerrainFlag(
bool flag);
456 double calcLinearSpeed()
const;
457 double calcRotationSpeed()
const;
458 double calcOrbitSpeed()
const;
460 void getObserverOffsetVector(
double& x,
double& y,
double& z )
const;
461 void setObserverOffsetVector(
double x,
double y,
double z );
463 void getObserverRotationOffset(
double& x,
double& y,
double& z,
double& w )
const;
464 void setObserverRotationOffset(
double x,
double y,
double z,
double w );
466 void getDisplayNamesFromUniqueIds(
const std::vector<DtUniqueID>& idsIn,
467 std::set<std::string>& displayNamesOut)
const;
468 bool getUniqueIdsFromDisplayNames(
const std::set<std::string>& displayNamesIn,
469 std::vector<DtUniqueID>& idsOut)
const;
476 void connectToElementDataSignals();
477 void disconnectFromElementDataSignals();
479 void setModeSpecificObserverObjectData();
485 virtual void slot_onElementAttributesChanged(
488 void slot_observerModeModelSetChanged(
int observerMode );
489 void slot_observerModeSensorChanged(
int observerMode );
490 void slot_observerModeIs2DChanged(
int observerMode );
491 void slot_observerModeKeyMapChanged(
int observerMode );
492 void slot_observerModeGainPrecisionChanged(
int observerMode );
493 void slot_observerModeOrbitSpeedGainChanged(
int observerMode );
494 void slot_observerModeRotationSpeedGainChanged(
int observerMode );
495 void slot_observerModeLinearScaledSpeedGainChanged(
int observerMode );
496 void slot_observerModeLinearUnscaledSpeedGainChanged(
int observerMode );
497 void slot_observerModeModelScaleFactorChanged(
int observerMode );
498 void slot_observerModeModelScaleTypeChanged(
int observerMode );
499 void slot_observerModeSpeedScalingModeChanged(
int observerMode );
500 void slot_observerModeSpeedScalingAslModeOffsetChanged(
int observerMode );
501 void slot_observerModeSettingChanged(
int observerMode,
int settingKey );
502 void slot_observerModeAdded(
int observerMode );
505 void attachTo(
bool afterTrue );