16 #include <matrix/vlVector.h>
25 class DtObserverObjectAgent;
27 class DtAgentManagerInterface;
28 class DtObserverConfiguration;
33 class DtChannelConfiguration;
85 bool hasInitialLocation()
const;
96 bool projectionIs2D()
const;
97 void setProjectionIs2D(
bool is2d );
116 int observerMode()
const;
117 bool setObserverMode(
int observerMode );
121 double viewResolution()
const;
124 void setViewResolution(
double resolution);
127 void setViewResolutionFromHeightAboveTerrain(
double hat);
130 double viewMagnification()
const;
133 void setViewMagnification(
double magnficationFactor);
136 void setLodScale(
double lodScale);
139 double lodScale()
const;
145 bool inUse(
const std::string& channelKeyToIgnore =
"" )
const;
151 void attachToNextElement();
154 void attachToPreviousElement();
169 void setPrimaryAttachment(
const ElementList& elements);
178 void setSecondaryAttachment(
const ElementList& element);
184 void setLocationTrackAttachment(
double x,
double y,
double z );
188 void getLocationTrackAttachment(
double&
x,
double&
y,
double&
z )
const;
193 void setPartAttachment(
int partId);
196 int partAttachment()
const;
202 bool attached()
const;
205 bool tracking()
const;
208 const ElementList& primaryAttachments()
const;
211 const ElementList& secondaryAttachments()
const;
213 void setHideModelOnAttach(
bool hide );
214 bool hideModelOnAttach()
const;
220 void setAttachmentHas3DCockpit(
bool cockpit);
221 bool attachmentHas3DCockpit()
const;
227 void setOrientToTargetConstraint(
bool orient );
228 bool orientToTargetConstraint()
const;
235 bool haveLastSingleAttached()
const;
248 void setAllowReset(
bool b);
251 bool allowReset()
const;
254 void setAllowAttach(
bool b);
257 bool allowAttach()
const;
260 void setAllowDetach(
bool b);
263 bool allowDetach()
const;
266 void centerOnTerrain();
269 void centerOnTerrain(
const DtUniqueID& terrainPatch );
273 void suppressConstrainToTerrain(
bool trueFalse );
276 void setConstrainToCenter(
bool trueFalse );
277 void toggleConstrainToCenter();
278 bool constrainToCenter()
const;
281 void getLocation(
double &
x,
double &
y,
double&
z )
const;
287 DtVector observerCameraPosition()
const;
290 void setLocation(
double x,
double y,
double z );
293 void getOrientation(
double& psi,
double& theta,
double& phi )
const;
296 void getTopographicOrientation(
double& psi,
double& theta,
double& phi )
const;
299 void setOrientation(
double psi,
double theta,
double phi );
302 void setTopographicOrientation(
double psi,
double theta,
double phi );
305 void getOrientation(
double&
x,
double&
y,
double&
z,
double&
w )
const;
308 void setOrientation(
double x,
double y,
double z,
double w );
312 DtTaitBryan observerCameraOrientation(
bool includeShake=
true)
const;
316 virtual DtVector observerPlatformFront()
const;
320 virtual DtVector observerPlatformUp()
const;
324 virtual DtVector observerPlatformRight()
const;
329 virtual DtVector observerCameraFront(
bool includeShake=
true)
const;
332 virtual DtVector observerCameraUp(
bool includeShake =
true)
const;
335 virtual DtVector observerCameraRight(
bool includeShake =
true)
const;
339 void moveUnit(
const DtVector& direction);
343 void rotateUnit(
const DtTaitBryan& rotation);
347 void getLinearVelocity(
double &
x,
double &
y,
double &
z)
const;
348 DtVector linearVelocity()
const;
353 void getRotationalVelocity(
double&
x,
double&
y,
double&
z )
const;
354 DtVector rotationalVelocity()
const;
358 bool observerObjectMoving()
const;
361 double observerAltitude()
const;
369 void setAttachedLocation(
double x,
double y,
double z );
373 void setAttachedOrientation(
double psi,
double theta,
double phi );
377 void setLocalModelScalingEnabled(
bool enabled );
381 void setLocalModelScalingAmount(
float amount );
389 void setOrbitSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
392 int orbitSpeedGain()
const;
395 int orbitSpeedGainFromSpeed(
double speed )
const;
397 void setRotationSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
398 int rotationSpeedGain()
const;
401 void setLinearSpeedGain(
int gain );
402 int linearSpeedGain()
const;
404 void setLinearScaledSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
405 int linearScaledSpeedGain()
const;
407 void setLinearUnscaledSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
408 int linearUnscaledSpeedGain()
const;
410 void setGainPrecision(
int amt,
bool forwardToObserverModeManager =
true );
411 int gainPrecision()
const;
413 void setModelScaleFactor(
double modelScaleFactor,
bool forwardToObserverModeManager =
true );
414 double modelScaleFactor()
const;
416 void setModelScaleType(
const std::string& modelScaleType,
bool forwardToObserverModeManager =
true );
419 void setMaxModelScaleFactor(
double maxModelScaleFactor,
bool forwardToObserverModeManager =
true);
420 double maxModelScaleFactor()
const;
423 bool forwardToObserverModeManager =
true );
426 void setLodScaleCenterEnabled(
bool enabled,
bool forwardToObserverModeManager =
true);
427 bool lodScaleCenterEnabled()
const;
429 void setLodScaleCenterMagMinLimit(
double limit,
bool forwardToObserverModeManager =
true);
430 double lodScaleCenterMagMinLimit()
const;
438 void setSpeedScalingMslModeOffset(
double offset,
439 bool forwardToObserverModeManager =
true );
440 double speedScalingMslModeOffset()
const;
442 void setOrbitSpeed(
double speed );
443 double orbitSpeed()
const;
445 void setRotationSpeed(
double speed );
446 double rotationSpeed()
const;
448 void setLinearSpeed(
double speed );
449 double linearSpeed()
const;
454 virtual void toggleFlashlight();
460 virtual bool setCameraShake(
const std::string& shakeType);
464 virtual void setCameraShakeRotation(
const DtQuat& rotQuat)
const;
469 virtual void setSensor(
const std::string& sensorName);
475 virtual void disableSensor();
478 virtual void slot_sensorRemoved(
DtSensor* sensor);
483 virtual void synchronize();
529 boost::signalslib::signal<void (DtObserver*, double offset)>
539 boost::signalslib::signal<void(DtObserver*, DtObserverObject::NorthType northType)>
552 void getObserverOffsetVector(
double&
x,
double&
y,
double&
z )
const;
553 void getObserverRotationOffset(
double&
x,
double&
y,
double&
z,
double&
w )
const;
558 void getCameraFromParentOffsetVector(
double&
x,
double&
y,
double&
z )
const;
559 void getCameraFromParentRotationOffset(
double&
x,
double&
y,
double&
z,
double&
w )
const;
564 void slot_terrainCleared();
568 void updateGlobalTerrainFlag(
bool flag);
570 double calcLinearSpeed()
const;
571 double calcRotationSpeed()
const;
572 double calcOrbitSpeed()
const;
574 void setObserverOffsetVector(
double x,
double y,
double z );
576 void setObserverRotationOffset(
double x,
double y,
double z,
double w );
578 void getDisplayNamesFromUniqueIds(
const std::vector<DtUniqueID>& idsIn,
579 std::set<std::string>& displayNamesOut)
const;
580 bool getUniqueIdsFromDisplayNames(
const std::set<std::string>& displayNamesIn,
581 std::vector<DtUniqueID>& idsOut)
const;
588 void connectToElementDataSignals();
589 void disconnectFromElementDataSignals();
591 void setModeSpecificObserverObjectData();
597 virtual void slot_onElementAttributesChanged(
602 void slot_completeAttachment();
604 void slot_observerModeModelSetChanged(
int observerMode );
605 void slot_observerModeSensorChanged(
int observerMode );
606 void slot_observerModeIs2DChanged(
int observerMode );
607 void slot_observerModeKeyMapChanged(
int observerMode );
608 void slot_observerModeGainPrecisionChanged(
int observerMode );
609 void slot_observerModeOrbitSpeedGainChanged(
int observerMode );
610 void slot_observerModeRotationSpeedGainChanged(
int observerMode );
611 void slot_observerModeLinearScaledSpeedGainChanged(
int observerMode );
612 void slot_observerModeLinearUnscaledSpeedGainChanged(
int observerMode );
613 void slot_observerModeModelScaleFactorChanged(
int observerMode );
614 void slot_observerModeModelScaleTypeChanged(
int observerMode );
615 void slot_observerModeSpeedScalingModeChanged(
int observerMode );
616 void slot_observerModeSpeedScalingMslModeOffsetChanged(
int observerMode );
617 void slot_observerModeLodScaleCenterEnabledChanged(
int observerMode);
618 void slot_observerModeLodScaleCenterMagMinLimitChanged(
int observerMode);
619 void slot_observerModeNorthTypeChanged(
int observerMode);
620 void slot_observerModeSettingChanged(
int observerMode,
int settingKey);
621 void slot_observerModeAdded(
int observerMode );
629 void attachTo(
bool afterTrue );