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;
142 void setPaperMapLayer(
const std::string& paperMapLayer);
151 bool inUse(
const std::string& channelKeyToIgnore =
"" )
const;
157 void attachToNextElement();
160 void attachToPreviousElement();
175 void setPrimaryAttachment(
const ElementList& elements);
184 void setSecondaryAttachment(
const ElementList& element);
190 void setLocationTrackAttachment(
double x,
double y,
double z );
194 void getLocationTrackAttachment(
double&
x,
double&
y,
double&
z )
const;
199 void setPartAttachment(
int partId);
202 int partAttachment()
const;
208 bool attached()
const;
211 bool tracking()
const;
214 const ElementList& primaryAttachments()
const;
217 const ElementList& secondaryAttachments()
const;
219 void setHideModelOnAttach(
bool hide );
220 bool hideModelOnAttach()
const;
226 void setAttachmentHas3DCockpit(
bool cockpit);
227 bool attachmentHas3DCockpit()
const;
233 void setOrientToTargetConstraint(
bool orient );
234 bool orientToTargetConstraint()
const;
241 bool haveLastSingleAttached()
const;
254 void setAllowReset(
bool b);
257 bool allowReset()
const;
260 void setAllowAttach(
bool b);
263 bool allowAttach()
const;
266 void setAllowDetach(
bool b);
269 bool allowDetach()
const;
272 void centerOnTerrain();
275 void centerOnTerrain(
const DtUniqueID& terrainPatch );
279 void suppressConstrainToTerrain(
bool trueFalse );
282 void setConstrainToCenter(
bool trueFalse );
283 void toggleConstrainToCenter();
284 bool constrainToCenter()
const;
287 void getLocation(
double &
x,
double &
y,
double&
z )
const;
293 DtVector observerCameraPosition()
const;
296 void setLocation(
double x,
double y,
double z );
299 void getOrientation(
double& psi,
double& theta,
double& phi )
const;
302 void getTopographicOrientation(
double& psi,
double& theta,
double& phi )
const;
305 void setOrientation(
double psi,
double theta,
double phi );
308 void setTopographicOrientation(
double psi,
double theta,
double phi );
311 void getOrientation(
double&
x,
double&
y,
double&
z,
double&
w )
const;
314 void setOrientation(
double x,
double y,
double z,
double w );
318 DtTaitBryan observerCameraOrientation(
bool includeShake=
true)
const;
322 virtual DtVector observerPlatformFront()
const;
326 virtual DtVector observerPlatformUp()
const;
330 virtual DtVector observerPlatformRight()
const;
335 virtual DtVector observerCameraFront(
bool includeShake=
true)
const;
338 virtual DtVector observerCameraUp(
bool includeShake =
true)
const;
341 virtual DtVector observerCameraRight(
bool includeShake =
true)
const;
345 void moveUnit(
const DtVector& direction);
349 void rotateUnit(
const DtTaitBryan& rotation);
353 void getLinearVelocity(
double &
x,
double &
y,
double &
z)
const;
354 DtVector linearVelocity()
const;
359 void getRotationalVelocity(
double&
x,
double&
y,
double&
z )
const;
360 DtVector rotationalVelocity()
const;
364 bool observerObjectMoving()
const;
367 double observerAltitude()
const;
375 void setAttachedLocation(
double x,
double y,
double z );
376 void setAttachedX(
double x );
377 void setAttachedY(
double y );
378 void setAttachedZ(
double z );
382 void setAttachedOrientation(
double psi,
double theta,
double phi );
383 void setAttachedYaw(
double psi);
384 void setAttachedPitch(
double theta);
385 void setAttachedRoll(
double phi);
389 void setLocalModelScalingEnabled(
bool enabled );
393 void setLocalModelScalingAmount(
float amount );
401 void setOrbitSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
404 int orbitSpeedGain()
const;
407 int orbitSpeedGainFromSpeed(
double speed )
const;
409 void setRotationSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
410 int rotationSpeedGain()
const;
413 void setLinearSpeedGain(
int gain );
414 int linearSpeedGain()
const;
416 void setLinearScaledSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
417 int linearScaledSpeedGain()
const;
419 void setLinearUnscaledSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
420 int linearUnscaledSpeedGain()
const;
422 void setGainPrecision(
int amt,
bool forwardToObserverModeManager =
true );
423 int gainPrecision()
const;
425 void setModelScaleFactor(
double modelScaleFactor,
bool forwardToObserverModeManager =
true );
426 double modelScaleFactor()
const;
428 void setModelScaleType(
const std::string& modelScaleType,
bool forwardToObserverModeManager =
true );
431 void setMaxModelScaleFactor(
double maxModelScaleFactor,
bool forwardToObserverModeManager =
true);
432 double maxModelScaleFactor()
const;
435 bool forwardToObserverModeManager =
true );
438 void setLodScaleCenterEnabled(
bool enabled,
bool forwardToObserverModeManager =
true);
439 bool lodScaleCenterEnabled()
const;
441 void setLodScaleCenterMagMinLimit(
double limit,
bool forwardToObserverModeManager =
true);
442 double lodScaleCenterMagMinLimit()
const;
450 void setSpeedScalingMslModeOffset(
double offset,
451 bool forwardToObserverModeManager =
true );
452 double speedScalingMslModeOffset()
const;
454 void setOrbitSpeed(
double speed );
455 double orbitSpeed()
const;
457 void setRotationSpeed(
double speed );
458 double rotationSpeed()
const;
460 void setLinearSpeed(
double speed );
461 double linearSpeed()
const;
466 virtual void toggleFlashlight();
472 virtual bool setCameraShake(
const std::string& shakeType);
476 virtual void setCameraShakeRotation(
const DtQuat& rotQuat)
const;
481 virtual void setSensor(
const std::string& sensorName);
487 virtual void disableSensor();
490 virtual void slot_sensorRemoved(
DtSensor* sensor);
495 virtual void synchronize();
543 boost::signalslib::signal<void (DtObserver*, double offset)>
553 boost::signalslib::signal<void(DtObserver*, DtObserverObject::NorthType northType)>
566 void getObserverOffsetVector(
double&
x,
double&
y,
double&
z )
const;
567 void getObserverRotationOffset(
double&
x,
double&
y,
double&
z,
double&
w )
const;
572 void getCameraFromParentOffsetVector(
double&
x,
double&
y,
double&
z )
const;
573 void getCameraFromParentRotationOffset(
double&
x,
double&
y,
double&
z,
double&
w )
const;
579 virtual void setUsesBoundingVolumeForAttachedOffsets(
bool useBoundingVolume);
583 virtual bool usesBoundingVolumeForAttachedOffsets()
const;
588 void slot_terrainCleared();
592 void updateGlobalTerrainFlag(
bool flag);
594 double calcLinearSpeed()
const;
595 double calcRotationSpeed()
const;
596 double calcOrbitSpeed()
const;
598 void setObserverOffsetVector(
double x,
double y,
double z );
600 void setObserverRotationOffset(
double x,
double y,
double z,
double w );
602 void getDisplayNamesFromUniqueIds(
const std::vector<DtUniqueID>& idsIn,
603 std::set<std::string>& displayNamesOut)
const;
604 bool getUniqueIdsFromDisplayNames(
const std::set<std::string>& displayNamesIn,
605 std::vector<DtUniqueID>& idsOut)
const;
612 void connectToElementDataSignals();
613 void disconnectFromElementDataSignals();
615 void setModeSpecificObserverObjectData();
630 virtual void attachToObjects(
const ElementList& objects);
634 virtual void slot_attachNextTick(
const ElementList objects);
637 virtual bool sceneObjectsAvailable(
const ElementList& elements);
641 virtual void slot_onElementAttributesChanged(
646 void slot_completeAttachment();
648 void slot_observerModeModelSetChanged(
int observerMode );
649 void slot_observerModeSensorChanged(
int observerMode );
650 void slot_observerModeIs2DChanged(
int observerMode );
651 void slot_observerModeKeyMapChanged(
int observerMode );
652 void slot_observerModeGainPrecisionChanged(
int observerMode );
653 void slot_observerModeOrbitSpeedGainChanged(
int observerMode );
654 void slot_observerModeRotationSpeedGainChanged(
int observerMode );
655 void slot_observerModeLinearScaledSpeedGainChanged(
int observerMode );
656 void slot_observerModeLinearUnscaledSpeedGainChanged(
int observerMode );
657 void slot_observerModeModelScaleFactorChanged(
int observerMode );
658 void slot_observerModeModelScaleTypeChanged(
int observerMode );
659 void slot_observerModeSpeedScalingModeChanged(
int observerMode );
660 void slot_observerModeSpeedScalingMslModeOffsetChanged(
int observerMode );
661 void slot_observerModeLodScaleCenterEnabledChanged(
int observerMode);
662 void slot_observerModeLodScaleCenterMagMinLimitChanged(
int observerMode);
663 void slot_observerModeNorthTypeChanged(
int observerMode);
664 void slot_observerModeSettingChanged(
int observerMode,
int settingKey);
665 void slot_observerModeAdded(
int observerMode );
673 void attachTo(
bool afterTrue );