VR-Forces 4.0.4 Class Documentation
include/vrfmodel/disaggregatedFormationController.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 1999 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: disaggregatedFormationController.h,v $ $Revision: 1.1 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00015 
00016 #ifndef disaggregatedFormationController_H_
00017 #define disaggregatedFormationController_H_
00018 
00019 #include <vlutil/vlConfig.h> 
00020 #include <vector>
00021 
00022 #include "vrfobjcore/cntrlCmpnt.h"
00023 #include "vrfobjcore/orgViewManagedObjList.h"
00024 #include "vrfobjcore/cmdChanRadio.h"
00025 
00026 class DtFormationControllerDescriptor;
00027 class DtSimMessage;
00028 class DtFormationState;
00029 class DtVrfAggregateStateRepository;
00030 class DtSubordinateManager;
00031 class DtFormation;
00032 class DtOrganizationManagerNode;
00033 class DtSetDataRequest;
00034 class DtSetDataManager;
00035 class DtFormationPSR;
00036 class DtAggregateObjectParameters;
00037 
00065 #include "vrfmodel/vrfmodelDefines.h"
00066 class DT_DLL_vrfmodel DtDisaggregatedFormationController : public DtControllerComponent
00067 {
00068 private:
00070    DtDisaggregatedFormationController();
00072    DtDisaggregatedFormationController(const DtDisaggregatedFormationController& orig);
00074    DtDisaggregatedFormationController& operator=(const DtDisaggregatedFormationController& orig);
00075 
00076 public:
00077 
00080    DtDisaggregatedFormationController(const DtString& name, 
00081       DtVrfObject* owner,
00082       DtSimManager* simManager, 
00083       DtComponentDescriptor* desc = 0,
00084       DtReaderWriterRegistry* parentRegistry = 0);
00085 
00086    virtual ~DtDisaggregatedFormationController();
00087 
00094    virtual bool init();
00095 
00098    virtual void tick();
00099 
00102    virtual DtString type() const;
00103 
00115    virtual void setRadio(DtSimBaseRadio * radio);
00116 
00122    static void setFormationCallback(DtSimMessage * msg, void * usr);
00123 
00129    static void setFormationTypeCallback(DtSimMessage * msg, void * usr);
00130 
00136    static void setHeadingCallback(DtSimMessage * msg, void * usr);
00137 
00143    static void setLocationCallback(DtSimMessage * msg, void * usr);
00144 
00150    static void snapIntoFormationCallback(DtSimMessage * msg, void * usr);
00151 
00157    static void subordinatesChangedCallback(DtEntityIdentifier entId, void* usr);
00158 
00164    static void nodeAddedCallback(DtEntityIdentifier eid, void* userData);
00165    virtual void processNodeAddedCallback(DtEntityIdentifier eid);
00166 
00168    virtual void enable();
00169 
00171    virtual void disable();
00172 
00173 public:
00174 
00182    static void onTaskNotifyCallback(const DtSimTask & task, 
00183       const DtSimComponent &notifier, void* usr);
00184 
00188    static DtSimComponent * creator(const DtString& name, 
00189       DtVrfObject* owner,
00190       DtSimManager* simManager, 
00191       DtComponentDescriptor* desc = 0,
00192       DtReaderWriterRegistry* parentRegistry = 0);
00193 
00194 protected:
00195 
00199    virtual bool formationUpdateIsNeeded() const;
00200 
00206    virtual void processSetFormation(DtSimMessage * msg);
00207 
00214    virtual void processSetFormationType(DtSimMessage * msg);
00215 
00221    virtual void processSetHeading(DtSimMessage * msg);
00222 
00228    virtual void processSetLocation(DtSimMessage * msg);
00229 
00234    virtual void processSnapIntoFormation(DtSimMessage * msg); 
00235 
00244    virtual void processSubordinatesChanged(DtEntityIdentifier entId);
00245 
00264    virtual void snapIntoFormation(const DtString& formation, 
00265       const DtVector& location, double heading, bool applyHeading);
00266 
00275    virtual void getCurrentFormation(DtFormation& formation);
00276 
00282    virtual DtOrgViewManagedObjectListConstPtr generateListOfSubordinatesEligibleForFormation();
00283 
00289    virtual std::list<int> generateFormationPositions(DtOrgViewManagedObjectListConstPtr& entityInFormation);
00290 
00293    virtual int findPositionInVector(const std::vector<DtEntityIdentifier> subordinateList,
00294       const DtEntityIdentifier& entityId) const;
00295 
00307    virtual void generateFormationAtPositionAndOrientation(const DtVector& geocentricOrigin,
00308       const DtTaitBryan& geocentricOrientation, std::vector<DtVector> geocentricPositions, 
00309       DtFormation& formation);
00310 
00315    virtual void generateWorkingFormation(DtFormation& formation);
00316 
00319    virtual void updateFormationState();
00320 
00322    virtual void registerWithOrgManager();
00323 
00325    virtual void unregisterWithOrgManager();
00326 
00331    virtual void sendRequestToSelf(const DtSetDataRequest& request) const;
00332 
00339    virtual void sendRequestToSubordinate(const DtSetDataRequest& request, 
00340       const DtString& subordinateObjectName) const;
00341 
00347    virtual bool createPSR();
00348 
00357    virtual void processOnTaskNotifyCallback(const DtSimTask & task, 
00358       const DtSimComponent &notifier);
00359 
00360    static void requestAvailableFormationsCallback(const DtVrfObjectMessage* msg, void* usr);
00361    virtual void processRequestAvailableFormations(const DtVrfObjectMessage* msg);
00362 
00365    virtual void addSetDataCallbacks();
00366 
00369    void removeSetDataCallbacks();
00370 
00371 protected:
00372 
00374    const DtFormationControllerDescriptor* myFormationControllerDescriptor;
00375 
00378    DtVrfAggregateStateRepository* myAggregateStateRepository;
00379 
00382    DtFormationState* myFormationState;
00383 
00389    bool myRegisteredWithOrgManager;
00390 
00393    DtCommandChannelRadio* myCommandChannelRadio;
00394 
00397    DtSetDataManager* mySetDataManager;
00398 
00401    DtFormationPSR* myProcessState;
00402 
00407    bool myFormationCallbacksAreDisabled;
00408 
00410    bool myFirstTick;
00411 
00412    bool myRegisteredForAddNodeCallback;
00413 
00415    const DtAggregateObjectParameters* myAggregateParameters;
00416 };
00417 
00418 #endif
00419 

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)