21 #include <boost/signals.hpp>
31 class DtObserverObjectAgent;
33 class DtAgentManagerInterface;
34 class DtObserverConfiguration;
60 DtObserverObjectAgent& agent();
63 const DtObserverObjectAgent& agent()
const;
79 bool hasInitialLocation()
const;
82 const std::string& name()
const;
83 void setName(
const std::string& name );
90 int observerMode()
const;
91 void setObserverMode(
int observerMode );
95 double viewResolution()
const;
98 void setViewResolution(
double resolution );
101 double viewMagnification()
const;
104 void setViewMagnification(
double magnficationFactor );
108 bool acceptingViewControl()
const;
114 bool inUse(
const std::string& channelKeyToIgnore =
"" )
const;
120 void attachToNextElement();
123 void attachToPreviousElement();
137 void setPrimaryAttachment(
const ElementList& element );
143 void setSecondaryAttachment(
const ElementList& objects );
148 void setPartAttachment(
int partId);
151 int partAttachment()
const;
157 bool attached()
const;
160 bool tracking()
const;
163 const ElementList& primaryAttachments()
const;
166 const ElementList& secondaryAttachments()
const;
168 void setHideModelOnAttach(
bool hide );
169 bool hideModelOnAttach()
const;
174 void setOrientToTargetConstraint(
bool orient );
175 bool orientToTargetConstraint()
const;
182 bool haveLastSingleAttached()
const;
195 void setAllowReset(
bool b);
198 bool allowReset()
const;
201 void setAllowAttach(
bool b);
204 bool allowAttach()
const;
207 void setAllowDetach(
bool b);
210 bool allowDetach()
const;
213 void centerOnTerrain();
216 void centerOnTerrain(
const DtUniqueID& terrainPatch );
220 void suppressConstrainToTerrain(
bool trueFalse );
223 void setConstrainToCenter(
bool trueFalse );
224 void toggleConstrainToCenter();
225 bool constrainToCenter()
const;
228 void getLocation(
double &x,
double &y,
double& z )
const;
234 void setLocation(
double x,
double y,
double z );
237 void getOrientation(
double& psi,
double& theta,
double& phi )
const;
240 void setOrientation(
double psi,
double theta,
double phi );
243 void getOrientation(
double& x,
double& y,
double& z,
double& w )
const;
246 void setOrientation(
double x,
double y,
double z,
double w );
250 void moveUnit(
const DtVector& direction);
254 void rotateUnit(
const DtTaitBryan& rotation);
257 void getLinearVelocity(
double &x,
double &y,
double &z)
const;
260 void getRotationalVelocity(
double& x,
double& y,
double& z )
const;
263 bool observerObjectMoving()
const;
266 double observerAltitude()
const;
274 void setAttachedLocation(
double x,
double y,
double z );
278 void setAttachedOrientation(
double psi,
double theta,
double phi );
282 void setLocalModelScalingEnabled(
bool enabled );
286 void setLocalModelScalingAmount(
float amount );
294 void setOrbitSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
297 int orbitSpeedGain()
const;
300 int orbitSpeedGainFromSpeed(
double speed )
const;
302 void setRotationSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
303 int rotationSpeedGain()
const;
306 void setLinearSpeedGain(
int gain );
307 int linearSpeedGain()
const;
309 void setLinearScaledSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
310 int linearScaledSpeedGain()
const;
312 void setLinearUnscaledSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
313 int linearUnscaledSpeedGain()
const;
315 void setGainPrecision(
int amt,
bool forwardToObserverModeManager =
true );
316 int gainPrecision()
const;
318 void setModelScaleFactor(
double modelScaleFactor,
bool forwardToObserverModeManager =
true );
319 double modelScaleFactor()
const;
322 bool forwardToObserverModeManager =
true );
325 void setOrbitSpeed(
double speed );
326 double orbitSpeed()
const;
328 void setRotationSpeed(
double speed );
329 double rotationSpeed()
const;
331 void setLinearSpeed(
double speed );
332 double linearSpeed()
const;
339 virtual void setSensor(
const std::string& sensorName);
342 virtual std::string findSensor();
345 virtual void disableSensor();
348 virtual void slot_sensorRemoved(
DtSensor* sensor);
353 virtual void synchronize();
400 void slot_terrainCleared();
404 void updateGlobalTerrainFlag(
bool flag);
406 double calcLinearSpeed()
const;
407 double calcRotationSpeed()
const;
408 double calcOrbitSpeed()
const;
410 void getObserverOffsetVector(
double& x,
double& y,
double& z )
const;
411 void setObserverOffsetVector(
double x,
double y,
double z );
413 void getObserverRotationOffset(
double& x,
double& y,
double& z,
double& w )
const;
414 void setObserverRotationOffset(
double x,
double y,
double z,
double w );
416 void getDisplayNamesFromUniqueIds(
const std::vector<DtUniqueID>& idsIn,
417 std::set<std::string>& displayNamesOut)
const;
418 bool getUniqueIdsFromDisplayNames(
const std::set<std::string>& displayNamesIn,
419 std::vector<DtUniqueID>& idsOut)
const;
426 void connectToElementDataSignals();
427 void disconnectFromElementDataSignals();
429 void setModeSpecificObserverObjectData();
435 virtual void slot_onElementAttributesChanged(
438 void slot_observerModeModelSetChanged(
int observerMode );
439 void slot_observerModeSensorChanged(
int observerMode );
440 void slot_observerModeIs2DChanged(
int observerMode );
441 void slot_observerModeKeyMapChanged(
int observerMode );
442 void slot_observerModeGainPrecisionChanged(
int observerMode );
443 void slot_observerModeOrbitSpeedGainChanged(
int observerMode );
444 void slot_observerModeRotationSpeedGainChanged(
int observerMode );
445 void slot_observerModeLinearScaledSpeedGainChanged(
int observerMode );
446 void slot_observerModeLinearUnscaledSpeedGainChanged(
int observerMode );
447 void slot_observerModeModelScaleFactorChanged(
int observerMode );
448 void slot_observerModeModelScaleTypeChanged(
int observerMode );
449 void slot_observerModeSettingChanged(
int observerMode,
int settingKey );
450 void slot_observerModeAdded(
int observerMode );
453 void attachTo(
bool afterTrue );