VR-Forces 4.0.4 Class Documentation
include/vrfmodel/autoAggregateDisaggregateController.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2008 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: autoAggregateDisaggregateController.h,v $ $Revision: 1.2 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00012 #ifndef autoAggregateDisaggregateController_H_
00013 #define autoAggregateDisaggregateController_H_
00014 
00015 #include "vrfobjcore/cntrlCmpnt.h"
00016 #include "vrfobjcore/simRadio.h"
00017 #include "vrfobjcore/compositePred.h"
00018 #include "geometry/polygon2D.h"
00019 #include "vrfmodel/vrfmodelDefines.h"
00020 
00021 class DtSettingsObject;
00022 class DtBoolSetting;
00023 class DtVrfAggregateStateRepository;
00024  
00031 class DT_DLL_vrfmodel DtAutoAggregateDisaggregateController : public DtControllerComponent
00032 {
00033 public:
00034 
00035    typedef enum DtResolutionTransitionMode
00036    {
00037       DtNotTransitioning,
00038       DtDisaggregating,
00039       DtAggregating   
00040    } DtResolutionTransitionMode;
00041 
00043    DtAutoAggregateDisaggregateController(const DtString & name, DtVrfObject* owner, 
00044       DtSimManager * simManager, DtComponentDescriptor* desc = NULL,
00045       DtReaderWriterRegistry * parentRegistry = 0);
00046 
00048    virtual ~DtAutoAggregateDisaggregateController();
00049 
00051    virtual bool init();
00052 
00055    virtual DtString type() const;
00056 
00058    virtual void tick();
00059    
00060 public:
00061 
00064    static void settingConsumerCallback( const DtSettingsObject* settingsObject, void* usr);
00065 
00067    static DtSimComponent* creator(const DtString & name, DtVrfObject* owner,
00068       DtSimManager * simManager, DtComponentDescriptor* desc,
00069       DtReaderWriterRegistry * parentRegistry);
00070 
00071 protected:
00072 
00073    virtual void startAutoAggregating();
00074 
00075    virtual bool autoAggregatingIsComplete();
00076 
00077    virtual void onAutoAggregationComplete();
00078 
00079    virtual void startAutoDisaggregation();
00080 
00081    virtual bool autoDisaggregatingIsComplete();
00082 
00083    virtual void onAutoDisaggregationComplete();
00084 
00087    virtual bool insideDisaggregationArea() const;
00088 
00090    virtual bool withinDisaggregationDistanceOfHostileEntity() const;
00091 
00093    virtual void processSetting( const DtBoolSetting* setting);
00094 
00096    virtual void sendAggregateStateRequest(DtAggregateState aggregateState);
00097 
00099    DtAutoAggregateDisaggregateController(const DtAutoAggregateDisaggregateController& orig);
00100 
00102    DtAutoAggregateDisaggregateController& operator=(const DtAutoAggregateDisaggregateController& orig);
00103 
00104    virtual bool shouldDisaggregate() const;
00105 
00106    virtual bool shouldAggregate() const;
00107 
00108    virtual bool autoAggregationDisaggregationEnabled() const;
00109 
00111    virtual void initLocalToAggregateCoordTransform(
00112       const DtVector& aggregateLocalPostion, double aggregateHeading, 
00113       DtCoordTransform& resultTransform) const;
00114   
00115    virtual DtManagedObjectListConstPtr disaggregationAreas() const;
00116     
00117    virtual void initBodyToLocalTransform(const DtVector& localPosition, 
00118       const DtDcm& localToBodyDcm, DtCoordTransform& bodyToLocalTransform) const;
00119 
00120    virtual void initLocalToTopoTransform(
00121       const DtVector& localPosition, DtCoordTransform& transform) const;
00122   
00123    virtual void getAggregatedFootprint(
00124       const DtCoordTransform& bodyToLocalTransform,
00125       const DtCoordTransform& localToTopoTranform,
00126       DtPolygon2D::DtVertexContainer& vertices) const;
00127 
00128    void getDisaggregatedFootprint(
00129       const DtCoordTransform& bodyToLocalTransform,
00130       const DtCoordTransform& localToTopoTransform,
00131       DtPolygon2D::DtVertexContainer& vertices) const;
00132 
00133    void getTranslatedFootprint(
00134       double halfLength,
00135       double halfWidth,
00136       double halfHeight,
00137       const DtCoordTransform& bodyToLocalTransform,
00138       const DtCoordTransform& localToTopoTransform,
00139       DtPolygon2D::DtVertexContainer& vertices) const;
00140 
00141    virtual void getLocalAreaFootprint(
00142       const DtVrfObject& object, 
00143       const DtCoordTransform& localToTopoTransform,
00144       DtPolygon2D::DtVertexContainer& vertices) const;
00145   
00146    virtual DtManagedObjectListConstPtr getHostileEntityList() const;
00147   
00148    virtual DtManagedObjectListConstPtr getHostileAggregateList() const;
00149    
00150    virtual bool withinDisaggregationDistance( const DtVrfObject& target) const;
00151 
00155    virtual double maxDisaggregationDistance(const DtVrfObject& target) const;
00156 
00157 protected:
00158 
00159    DtVrfObjectManager* myObjectManager;
00160 
00161    DtVrfAggregateStateRepository* myAggregateStateRepository;
00162 
00163    DtResolutionTransitionMode    myTransitionMode;
00164 
00167    bool myAutoAggregationDisaggrationEnabled;
00168 
00170    DtVrfObject* myAggregatedFootprintDebuggingObject;
00171    DtVrfObject* myDisaggregatedFootprintDebuggingObject;
00172 
00173    mutable DtManagedObjectListConstPtr myHostileAggregateList;
00174    mutable DtManagedObjectListConstPtr myHostileEntityList;
00175    mutable DtManagedObjectListConstPtr myDisaggregationAreasList;
00176 };
00177 
00178 #endif

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)