VR-Forces 4.0.4 Class Documentation
include/vrfmodel/maintainFormationMonitor.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2004 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: maintainFormationMonitor.h,v $ $Revision: 1.9 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00014 
00015 #pragma once
00016 
00017 #include "map"
00018 
00019 class DtVrfObject;
00020 class DtVrfAggregateStateRepository;
00021 class DtFormationState;
00022 class DtDcm;
00023 class DtVector;
00024 
00031 #include "vrfmodel/vrfmodelDefines.h"
00032 class DT_DLL_vrfmodel DtMaintainFormationMonitor
00033 {
00034 public:
00035 
00036    enum DtPositionStatus
00037    {
00038       DtUndefinedPosition = -1,
00039       DtInPosition,
00040       DtBehindPosition,
00041       DtAheadOfPosition
00042    };
00043 
00045    typedef std::map<DtVrfObject*, DtPositionStatus> DtAggregatePositionStatusMap;
00046 
00047    DtMaintainFormationMonitor(DtVrfObject* entity);
00048 
00049    DtMaintainFormationMonitor(const DtMaintainFormationMonitor& orig);
00050 
00051    DtMaintainFormationMonitor& operator=(const DtMaintainFormationMonitor& orig);
00052 
00053    virtual ~DtMaintainFormationMonitor();
00054 
00055    virtual void tick();
00056 
00060    virtual void setCatchupFactor(double catchUpFactor);
00061    virtual double catchupFactor() const;
00062 
00067    virtual void setSlowDownFactor(double slowDownFactor);
00068    virtual double slowDownFactor() const;
00069 
00076    virtual void setInPositionTolerance(double tolerance);
00077    virtual double inPositionTolerance() const;
00078 
00080    virtual bool positionStatusHasChanged(DtVrfObject* subordinate, 
00081       DtPositionStatus status);
00082 
00084    virtual DtPositionStatus getPositionStatus(DtVrfObject* subordinate);
00085 
00089    virtual void setPositionStatus(DtVrfObject* entity, 
00090       DtMaintainFormationMonitor::DtPositionStatus status);
00091 
00093    virtual void printPositionStatus();
00094  
00095 protected:
00096 
00097    virtual DtPositionStatus positionStatus(const DtVector& geocentricOrigin,
00098       const DtDcm& geocentricOrientation,
00099       const DtVector& geocentricTestPosition,
00100       const DtVector& idealBodyCoordinatesPosition,
00101       double inPositionTolerance);
00102 
00103    virtual void sendSpeedControl(DtVrfObject* entity, DtPositionStatus status);
00104 
00105    virtual void sendSetSpeedRequest(const DtVrfObject& entity, double speed);
00106 
00107 protected:
00108 
00109    double myCatchupFactor;
00110    double mySlowDownFactor;
00111    double myInPositionTolerance;
00112 
00113    DtVrfObject* myEntity;
00114    DtVrfAggregateStateRepository* myAggregateStateRepository;
00115    DtFormationState* myFormationState;
00116 
00117    DtAggregatePositionStatusMap myAggregatePositionStatusMap;
00118 };

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)