VR-Forces 4.0.4 Class Documentation
include/vrfmodel/disaggregator.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2008 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: disaggregator.h,v $ $Revision: 1.5 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00014 
00015 #ifndef disaggregator_H_
00016 #define disaggregator_H_
00017 
00018 #include "vrfobjcore/vrfObject.h"
00019 #include "vrfobjcore/orgManager.h"
00020 #include "vrfobjcore/organizationChangeSet.h"
00021 #include "vrfobjcore/vrfObjMgr.h"
00022 #include "vrfcore/simMgr.h"
00023 
00024 class DtSubordinateObjectsList;
00025 class DtOrganizationChangeSet;
00026 class DtSubordinateEntry;
00027 class DtAggregateObjectParameters;
00028 
00029 typedef void (*DtDisaggregationCompleteCallbackFcn)(void* usr);
00030 
00036 #include "vrfmodel/vrfmodelDefines.h"
00037 class DT_DLL_vrfmodel DtDisaggregator 
00038 {
00039 public:
00040 
00042    DtDisaggregator(DtVrfObjectManager& vrfObjectManager);
00043 
00045    virtual ~DtDisaggregator();
00046 
00058    virtual bool disaggregate(const DtVrfObject& aggregate,
00059       const DtSubordinateObjectsList& subordinateObjectsList,
00060       DtDisaggregationCompleteCallbackFcn completionCallback,
00061       void* userData);
00062 
00063    static void orgMgrChangeSetCompleteCallback(void* usr);
00064 
00065 protected:
00066 
00071    virtual void createAndInitSubordinates(const DtVrfObject& parent);
00072 
00073    virtual void createAndInitSubordinates(const DtVrfObject& parent,
00074       const DtSubordinateObjectsList& subordinateObjectsList);
00075 
00077    DtDisaggregator(const DtDisaggregator& orig);
00078 
00080    DtDisaggregator& operator=(
00081       const DtDisaggregator& orig);
00082 
00097    virtual DtVrfObject* buildVrfObject( const DtObjectType& objectType, 
00098       DtForceType forceType, 
00099       const DtVector& geocentricPosition, 
00100       const DtTaitBryan* orientation, 
00101       bool publishLocalObject, 
00102       bool createSubObjects,
00103       DtVrfObjectManager::DtAggregateCreationMode initialAggregateState,
00104       const DtString& formationName);
00105 
00106    virtual void setDisaggregationCompleteCallbackInfo(
00107       DtDisaggregationCompleteCallbackFcn fcn, void* usr);
00108 
00109    virtual void clearDisaggregationCompleteCallbackInfo();
00110 
00111    virtual void onOrgMgrChangeSetComplete();
00112 
00113    virtual bool shouldCreate(const DtSubordinateEntry& subordinateDescriptor) const;
00114 
00115    virtual bool computeSubordinatePositions(int numSubordinates, 
00116       const DtString& formationName,
00117       const DtAggregateObjectParameters& aggregateParams,
00118       const DtVector& parentPosition,
00119       const DtDcm& parentOrientation,
00120       std::list<DtVector>& subordinateBodyPositions) const;
00121 
00122    virtual int numSubordinatesToCreate(const DtSubordinateObjectsList& psrSubordObjList) const;
00123 
00124 public:
00125 
00129    //    const DtPseudoAggregateBuilder& builder);
00130 
00131 protected:
00132    DtVrfObjectManager& myVrfObjectManager;
00133    DtOrganizationChangeSet myOrganizationChangeSet;
00134    int myChangeSetRequestId;
00135 
00136    typedef std::pair<DtDisaggregationCompleteCallbackFcn, void*>
00137       DtDisaggregationCompleteCallbackInfoType;
00138    DtDisaggregationCompleteCallbackInfoType myDisaggregationCompleteCallbackInfo;
00139 };
00140 
00141 #endif
00142 
00143 

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)