16 #include <matrix/vlVector.h>
25 class DtObserverObjectAgent;
27 class DtAgentManagerInterface;
28 class DtObserverConfiguration;
33 class DtChannelConfiguration;
57 DtObserverObjectAgent& agent();
60 const DtObserverObjectAgent& agent()
const;
85 bool hasInitialLocation()
const;
88 bool projectionIs2D()
const;
97 void setProjectionIs2D(
bool is2d );
103 const std::string& name()
const;
104 void setName(
const std::string& name );
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);
145 std::string paperMapLayer()
const;
151 bool inUse(
const std::string& channelKeyToIgnore =
"" )
const;
157 void attachToNextElement();
160 void attachToPreviousElement();
172 void setPrimaryAttachment(
const ElementList& elements);
180 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;
290 DtVector location()
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);
352 void getLinearVelocity(
double &
x,
double &
y,
double &
z)
const;
354 DtVector linearVelocity()
const;
358 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 );
429 const std::string& modelScaleType()
const;
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;
453 virtual void setColorControlEnabled(
bool enabled,
bool forwardToObserverModeManager =
true);
456 virtual bool colorControlEnabled()
const;
461 virtual void setColorControlInvert(
bool enabled,
bool forwardToObserverModeManager =
true);
464 virtual bool colorControlInvert()
const;
469 virtual void setColorControlContrast(
double value,
bool forwardToObserverModeManager =
true);
472 virtual double colorControlContrast()
const;
477 virtual void setColorControlBrightness(
double value,
bool forwardToObserverModeManager =
true);
480 virtual double colorControlBrightness()
const;
485 virtual void setColorControlColorMix(
double value,
bool forwardToObserverModeManager =
true);
488 virtual double colorControlColorMix()
const;
490 void setSpeedScalingMslModeOffset(
double offset,
491 bool forwardToObserverModeManager =
true );
492 double speedScalingMslModeOffset()
const;
494 void setOrbitSpeed(
double speed );
495 double orbitSpeed()
const;
497 void setRotationSpeed(
double speed );
498 double rotationSpeed()
const;
500 void setLinearSpeed(
double speed );
501 double linearSpeed()
const;
506 virtual void toggleFlashlight();
512 virtual bool setCameraShake(
const std::string& shakeType);
516 virtual void setCameraShakeRotation(
const DtQuat& rotQuat)
const;
520 virtual void setSensor(
const std::string& sensorName);
524 virtual std::string findSensor();
527 virtual void disableSensor();
530 virtual void slot_sensorRemoved(
DtSensor* sensor);
535 virtual void synchronize();
583 boost::signalslib::signal<void (DtObserver*, double offset)>
593 boost::signalslib::signal<void(DtObserver*, DtObserverObject::NorthType northType)>
606 void getObserverOffsetVector(
double&
x,
double&
y,
double&
z )
const;
607 void getObserverRotationOffset(
double&
x,
double&
y,
double&
z,
double&
w )
const;
612 void getCameraFromParentOffsetVector(
double&
x,
double&
y,
double&
z )
const;
613 void getCameraFromParentRotationOffset(
double&
x,
double&
y,
double&
z,
double&
w )
const;
619 virtual void setUsesBoundingVolumeForAttachedOffsets(
bool useBoundingVolume);
623 virtual bool usesBoundingVolumeForAttachedOffsets()
const;
628 void slot_terrainCleared();
630 void slot_oceanLayerDeleted(
const std::string&);
632 void updateGlobalTerrainFlag(
bool flag);
634 double calcLinearSpeed()
const;
635 double calcRotationSpeed()
const;
636 double calcOrbitSpeed()
const;
638 void setObserverOffsetVector(
double x,
double y,
double z );
640 void setObserverRotationOffset(
double x,
double y,
double z,
double w );
642 void getDisplayNamesFromUniqueIds(
const std::vector<DtUniqueID>& idsIn,
643 std::set<std::string>& displayNamesOut)
const;
644 bool getUniqueIdsFromDisplayNames(
const std::set<std::string>& displayNamesIn,
645 std::vector<DtUniqueID>& idsOut)
const;
652 void connectToElementDataSignals();
653 void disconnectFromElementDataSignals();
655 void setModeSpecificObserverObjectData();
668 virtual void attachToObjects(
const ElementList& objects);
674 virtual void slot_attachNextTick(
const ElementList objects);
677 virtual bool sceneObjectsAvailable(
const ElementList& elements);
681 virtual void slot_onElementAttributesChanged(
686 void slot_completeAttachment();
688 void slot_observerModeModelSetChanged(
int observerMode );
689 void slot_observerModeSensorChanged(
int observerMode );
690 void slot_observerModeIs2DChanged(
int observerMode );
691 void slot_observerModeKeyMapChanged(
int observerMode );
692 void slot_observerModeGainPrecisionChanged(
int observerMode );
693 void slot_observerModeOrbitSpeedGainChanged(
int observerMode );
694 void slot_observerModeRotationSpeedGainChanged(
int observerMode );
695 void slot_observerModeLinearScaledSpeedGainChanged(
int observerMode );
696 void slot_observerModeLinearUnscaledSpeedGainChanged(
int observerMode );
697 void slot_observerModeModelScaleFactorChanged(
int observerMode );
698 void slot_observerModeModelScaleTypeChanged(
int observerMode );
699 void slot_observerModeSpeedScalingModeChanged(
int observerMode );
700 void slot_observerModeSpeedScalingMslModeOffsetChanged(
int observerMode );
701 void slot_observerModeLodScaleCenterEnabledChanged(
int observerMode);
702 void slot_observerModeLodScaleCenterMagMinLimitChanged(
int observerMode);
703 void slot_observerModeNorthTypeChanged(
int observerMode);
704 void slot_observerModeColorControlEnabledChanged(
int observerMode);
705 void slot_observerModeColorControlInvertChanged(
int observerMode);
706 void slot_observerModeColorControlContrastChanged(
int observerMode);
707 void slot_observerModeColorControlBrightnessChanged(
int observerMode);
708 void slot_observerModeColorControlColorMixChanged(
int observerMode);
709 void slot_observerModeSettingChanged(
int observerMode,
int settingKey);
710 void slot_observerModeAdded(
int observerMode );
718 void attachTo(
bool afterTrue );
DtObserverObjectAgent * myObserverObjectAgent
Definition: DtObserver.h:726
float myDelayedAttachedPitchValue
Definition: DtObserver.h:767
bool myAllowDetach
Definition: DtObserver.h:745
int myObserverMode
Definition: DtObserver.h:732
AttachType
Definition: DtObserverSettingsRecord.h:24
std::vector< DtUniqueID > mySecondaryAttachments
Definition: DtObserver.h:737
makArchives::DtObserverStateRecord myCachedObserverStateRecord
This is used as a work-around to cache attachments for entities which have not yet been created...
Definition: DtObserver.h:731
DtUniqueID myLastSingleAttached
Definition: DtObserver.h:738
TODO: This class is used to encapsulate a set of default observer settings and parameters.
Definition: DtObserverConfiguration.h:22
bool myConstrainToCenter
Definition: DtObserver.h:741
bool myFlashlightEnabled
Definition: DtObserver.h:747
std::vector< DtElementID > ElementList
Definition: DtObserver.h:41
boost::signalslib::signal< void(DtObserver *, int)> signal_linearScaledSpeedGainChanged
Boost signal called when the scaled linear speed gain is changed.
Definition: DtObserver.h:547
boost::signalslib::signal< void(DtObserver *, int)> signal_linearUnscaledSpeedGainChanged
Boost signal called when the unscaled linear speed gain is changed.
Definition: DtObserver.h:550
boost::signalslib::signal< void(DtObserver *, DtObserverObject::NorthType northType)> signal_northTypeChanged
Signal emitted when an observer's north type changed.
Definition: DtObserver.h:594
T value(details::expression_node< T > *n)
Definition: exprtk.hpp:12342
Contains makVrv::DtElementData class.
boost::signalslib::signal< void(const std::string &)> signal_objectsDetached
Boost signal called when observer detaches from all.
Definition: DtObserver.h:541
A DtObserverSettingsRecord contains the state of an observer.
Definition: DtObserverStateRecord.h:20
DtObserverObject::AttachType myAttachType
Definition: DtObserver.h:735
boost::signalslib::signal< void(DtObserver *, double offset)> signal_speedScalingMslModeOffsetChanged
Signal emitted when an observer's speed scaling MSL mode offset changes.
Definition: DtObserver.h:584
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:23
bool myAttachedZDelayedFlag
Definition: DtObserver.h:759
DtSensor * mySensor
Definition: DtObserver.h:750
bool myAllowAttach
Definition: DtObserver.h:744
x y t t *t x y t t t x y t t t x *y t *t t x *y t *t t x y t t t x y t t t x *y t *t t x *y t *t *t x y *z t t *t t x *y *z t *t *t t x y z t t t t x *y z t *t t t x * y(z *w))
boost::signalslib::signal< void(DtSensor *)> signal_sensorChanged
Called when the observer changes which sensor it's using.
Definition: DtObserver.h:599
static const double theMoveStepSize
Definition: DtObserver.h:722
SpeedScalingMode
Definition: DtObserverObject.h:53
A facade for a DtObserverObject.
Definition: DtObserver.h:37
bool myAllowReset
Definition: DtObserver.h:743
x y t t *t x y t t t x y t t t x *y t *t t x *y t *t t x y t t t x y t t t x *y t *t t x *y t *t *t x y *z w
Definition: exprtk.hpp:9210
Contains makVrv::DtObserverObject class.
bool myConnectedToElementDataSignals
Definition: DtObserver.h:742
DtCameraShake * myCameraShake
Definition: DtObserver.h:751
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
bool myAttachedXDelayedFlag
Definition: DtObserver.h:757
bool myAttachedRollDelayedFlag
Definition: DtObserver.h:762
std::vector< EntryAttributes > EntryAttributesList
Define the type used to signal changes to one or more attributes for one or more elements.
Definition: DtElementAttributeManager.h:44
boost::signalslib::signal< void(DtObserver *, int)> signal_rotationSpeedGainChanged
Boost signal called when the rotation speed gain is changed.
Definition: DtObserver.h:553
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
unsigned int myPartId
Definition: DtObserver.h:739
boost::signalslib::signal< void(DtObserver *, int)> signal_orbitSpeedGainChanged
Boost signal called when the orbit speed gain is changed.
Definition: DtObserver.h:556
boost::signalslib::signal< void(DtObserver *, int)> signal_gainPrecisionChanged
Boost signal called when the gain precision is changed.
Definition: DtObserver.h:559
boost::signalslib::signal< void(DtObserver *, double)> signal_modelScaleFactorChanged
Boost signal called when the model scale factor is changed.
Definition: DtObserver.h:562
NorthType
Definition: DtObserverObject.h:59
Definition of a sensor.
Definition: DtSensor.h:30
boost::signalslib::signal< void(DtObserver *, DtObserverObject::SpeedScalingMode scalingMode)> signal_speedScalingModeChanged
Signal emitted when an observer's speed scaling mode changes.
Definition: DtObserver.h:579
float myDelayedAttachedXValue
Definition: DtObserver.h:763
x y * z
Definition: exprtk.hpp:9133
boost::signalslib::signal< void(const std::string &, DtUniqueID)> signal_objectAttached
Boost signal called when observer attaches to an object.
Definition: DtObserver.h:538
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
bool myAttachmentHas3DCockpit
Definition: DtObserver.h:734
std::string myPaperMapLayer
Definition: DtObserver.h:753
bool myProjectionIs2D
Definition: DtObserver.h:752
bool myOrientToTargetConstraint
Definition: DtObserver.h:740
The ocean layer is a type of terrain layer which contains information about an area that should be re...
Definition: DtOceanLayer.h:25
DtObserverConfiguration * myConfiguration
Definition: DtObserver.h:727
std::vector< DtElementEntry * > ElementList
Type definition for a vector of DtElementEntry pointers.
Definition: DtElementData.h:47
Contains makArchives::DtObserverStateRecord class.
Base class to provide boost signal/slot management.
Configuration for a single channel Serialized and sent to remote displays as necessary to configure r...
Definition: DtChannelConfiguration.h:24
boost::signalslib::signal< void()> signal_terrainChanged
Called when the observer sees a change in terrain which might require updates to observer settings...
Definition: DtObserver.h:603
x y t t *t x y t t t x y t t t x *y t *t t x *y t *t t x y t t t x y t t t x(y+z)
bool myHideModelOnAttach
Definition: DtObserver.h:733
A DtObserverSettingsRecord contains the settings of an observer.
Definition: DtObserverSettingsRecord.h:20
boost::signalslib::signal< void(DtObserver *, bool)> signal_lodScaleCenterEnabledChanged
Boost signal called when the observer's lod scale center enabled is changed.
Definition: DtObserver.h:587
boost::signalslib::signal< void(DtObserver *, double)> signal_lodScaleChanged
Boost signal called when the observer's view magnification is changed.
Definition: DtObserver.h:571
bool myAttachmentDelayed
Definition: DtObserver.h:755
Contains the DtElementAttributeManager class declaration.
The abstract interface necessary for agents.
Definition: DtAgentManagerInterface.h:33
bool myAttachedPitchDelayedFlag
Definition: DtObserver.h:761
bool myHasInitialLocation
Definition: DtObserver.h:746
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:72
std::vector< DtUniqueID > myCurrentAttachments
Definition: DtObserver.h:736
A utility Quaternion class.
Definition: DtQuat.h:19
boost::signalslib::signal< void(DtObserver *, double)> signal_viewMagnificationChanged
Boost signal called when the observer's view magnification is changed.
Definition: DtObserver.h:568
boost::signalslib::signal< void(DtObserver *, std::string)> signal_paperMapLayerChanged
Signal called when the observer's paper map layer is changed.
Definition: DtObserver.h:574
boost::signalslib::signal< void(DtObserver *, double)> signal_lodScaleCenterMagMinLimitChanged
Boost signal called when the observer's lod scale view magnification minimum is changed.
Definition: DtObserver.h:590
float myLodScale
Definition: DtObserver.h:749
float myDelayedAttachedYValue
Definition: DtObserver.h:764
Provides an algorithm for shaking the camera.
Definition: DtCameraShake.h:23
DtSignalConnectionManager myConnections
Definition: DtObserver.h:725
float myDelayedAttachedRollValue
Definition: DtObserver.h:768
float myDelayedAttachedYawValue
Definition: DtObserver.h:766
bool myAttachedYDelayedFlag
Definition: DtObserver.h:758
boost::signalslib::signal< void(DtObserver *, int)> signal_observerModeChanged
Boost signal called when observer's mode changed.
Definition: DtObserver.h:544
DtDe & myDe
Definition: DtObserver.h:724
DtDe & de()
Get the observer's DtDe.
Definition: DtObserver.h:51
double myViewMagnification
Definition: DtObserver.h:748
bool myAttachedYawDelayedFlag
Definition: DtObserver.h:760
boost::signalslib::signal< void(DtObserver *, std::string)> signal_modelScaleTypeChanged
Boost signal called when the model scale type is changed.
Definition: DtObserver.h:565
float myDelayedAttachedZValue
Definition: DtObserver.h:765
AttachType
Definition: DtObserverObject.h:39