24 #include <boost/signals.hpp>
34 class DtObserverObjectAgent;
36 class DtAgentManagerInterface;
37 class DtObserverConfiguration;
81 bool hasInitialLocation()
const;
84 const std::string& name()
const;
85 void setName(
const std::string& name );
88 int observerMode()
const;
91 void setObserverMode(
int observerMode );
94 double viewResolution()
const;
97 void setViewResolution(
double resolution );
100 double viewMagnification()
const;
103 void setViewMagnification(
double magnficationFactor );
107 bool acceptingViewControl()
const;
113 bool inUse(
const std::string& channelKeyToIgnore =
"" )
const;
119 void attachToNextElement();
122 void attachToPreviousElement();
136 void setPrimaryAttachment(
const ElementList& element );
142 void setSecondaryAttachment(
const ElementList& objects );
147 void setPartAttachment(
int partId);
150 int partAttachment()
const;
156 bool attached()
const;
159 bool tracking()
const;
162 const ElementList& primaryAttachments()
const;
165 const ElementList& secondaryAttachments()
const;
167 void setHideModelOnAttach(
bool hide );
168 bool hideModelOnAttach()
const;
173 void setOrientToTargetConstraint(
bool orient );
174 bool orientToTargetConstraint()
const;
181 bool haveLastSingleAttached()
const;
194 void setAllowReset(
bool b);
197 bool allowReset()
const;
200 void setAllowAttach(
bool b);
203 bool allowAttach()
const;
206 void setAllowDetach(
bool b);
209 bool allowDetach()
const;
212 void centerOnTerrain();
215 void centerOnTerrain(
const DtUniqueID& terrainPatch );
219 void suppressConstrainToTerrain(
bool trueFalse );
222 void setConstrainToCenter(
bool trueFalse );
223 void toggleConstrainToCenter();
224 bool constrainToCenter()
const;
227 void getLocation(
double &x,
double &y,
double& z )
const;
230 DtVector location()
const;
233 void setLocation(
double x,
double y,
double z );
236 void getOrientation(
double& psi,
double& theta,
double& phi )
const;
239 void setOrientation(
double psi,
double theta,
double phi );
242 void getOrientation(
double& x,
double& y,
double& z,
double& w )
const;
245 void setOrientation(
double x,
double y,
double z,
double w );
249 void moveUnit(
const DtVector& direction);
253 void rotateUnit(
const DtTaitBryan& rotation);
256 void getLinearVelocity(
double &x,
double &y,
double &z)
const;
259 void getRotationalVelocity(
double& x,
double& y,
double& z )
const;
262 bool observerObjectMoving()
const;
265 double observerAltitude()
const;
273 void setAttachedLocation(
double x,
double y,
double z );
277 void setAttachedOrientation(
double psi,
double theta,
double phi );
281 void setLocalModelScalingEnabled(
bool enabled );
285 void setLocalModelScalingAmount(
float amount );
293 void setOrbitSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
296 int orbitSpeedGain()
const;
299 int orbitSpeedGainFromSpeed(
double speed )
const;
301 void setRotationSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
302 int rotationSpeedGain()
const;
305 void setLinearSpeedGain(
int gain );
306 int linearSpeedGain()
const;
308 void setLinearScaledSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
309 int linearScaledSpeedGain()
const;
311 void setLinearUnscaledSpeedGain(
int gain,
bool forwardToObserverModeManager =
true );
312 int linearUnscaledSpeedGain()
const;
314 void setGainPrecision(
int amt,
bool forwardToObserverModeManager =
true );
315 int gainPrecision()
const;
317 void setModelScaleFactor(
double modelScaleFactor,
bool forwardToObserverModeManager =
true );
318 double modelScaleFactor()
const;
321 bool forwardToObserverModeManager =
true );
324 void setOrbitSpeed(
double speed );
325 double orbitSpeed()
const;
327 void setRotationSpeed(
double speed );
328 double rotationSpeed()
const;
330 void setLinearSpeed(
double speed );
331 double linearSpeed()
const;
338 virtual void setSensor(
const std::string& sensorName);
341 virtual std::string findSensor();
344 virtual void disableSensor();
347 virtual void slot_sensorRemoved(
DtSensor* sensor);
352 virtual void synchronize();
395 void slot_terrainCleared();
397 void updateGlobalTerrainFlag(
bool flag);
399 double calcLinearSpeed()
const;
400 double calcRotationSpeed()
const;
401 double calcOrbitSpeed()
const;
403 void getObserverOffsetVector(
double& x,
double& y,
double& z )
const;
404 void setObserverOffsetVector(
double x,
double y,
double z );
406 void getObserverRotationOffset(
double& x,
double& y,
double& z,
double& w )
const;
407 void setObserverRotationOffset(
double x,
double y,
double z,
double w );
409 void getDisplayNamesFromUniqueIds(
const std::vector<DtUniqueID>& idsIn,
410 std::set<std::string>& displayNamesOut)
const;
411 bool getUniqueIdsFromDisplayNames(
const std::set<std::string>& displayNamesIn,
412 std::vector<DtUniqueID>& idsOut)
const;
419 void connectToElementDataSignals();
420 void disconnectFromElementDataSignals();
422 void setModeSpecificObserverObjectData();
428 virtual void slot_onElementAttributesChanged(
431 void slot_observerModeModelSetChanged(
int observerMode );
432 void slot_observerModeSensorChanged(
int observerMode );
433 void slot_observerModeIs2DChanged(
int observerMode );
434 void slot_observerModeKeyMapChanged(
int observerMode );
435 void slot_observerModeGainPrecisionChanged(
int observerMode );
436 void slot_observerModeOrbitSpeedGainChanged(
int observerMode );
437 void slot_observerModeRotationSpeedGainChanged(
int observerMode );
438 void slot_observerModeLinearScaledSpeedGainChanged(
int observerMode );
439 void slot_observerModeLinearUnscaledSpeedGainChanged(
int observerMode );
440 void slot_observerModeModelScaleFactorChanged(
int observerMode );
441 void slot_observerModeModelScaleTypeChanged(
int observerMode );
442 void slot_observerModeSettingChanged(
int observerMode,
int settingKey );
443 void slot_observerModeAdded(
int observerMode );
446 void attachTo(
bool afterTrue );