VR-Forces 4.0.4 Class Documentation
include/vrfobjcore/vrfObjMgr.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2001 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 
00008 
00009 #pragma once
00010 
00011 #include "vrfutil/rwObjType.h"
00012 #include "vrfutil/callbackList.h"
00013 #include "vrfutil/rwList.h"
00014 #include "vrfobjcore/vrfObjFiltIter.h"
00015 #include "vrfobjcore/orgManager.h"
00016 #include "vrfobjcore/managedObjList.h"
00017 #include "vrfobjcore/fltrFcnPred.h"
00018 #include "vrfobjcore/simObjIter.h"
00019 #include "vrfobjparam/vrfObjParams.h"
00020 #include <vrfExtProtocol/objTypeEnums.h>
00021 #include "vrftasks/extendedAggregateEnums.h"
00022 
00024 #include <vlpi/appearance.h>
00025 #include <vlutil/vlFilename.h>
00026 #include <vlutil/vlList.h>
00027 #include <vlutil/vlConfig.h>
00028 #include <vlutil/vlSmartPointers.h>
00029 
00031 #include <vector>
00032 #include <list>
00033 #include <set>
00034 
00035 
00037 #define DT_SINGLE_STATE_UPDATE_MESSAGE 0
00038 
00039 class DtTerrainDbFactory;
00040 
00041 class DtVrfObject;
00042 class DtHashlist;
00043 class DtExerciseConn;
00044 class DtReflectedObject;
00045 class DtReflectedAggregate;
00046 class DtReflectedExtEntity;
00047 class DtReflectedExtAggregate;
00048 class DtReflectedExtEntityList;
00049 class DtReflectedExtAggregateList;
00050 class DtVrfParameterDb;
00051 class DtSimObjectListActivityCallbackInfo;
00052 class DtSimObjectSubComponentTypes;
00053 class DtVertexList;
00054 class DtAggregateStateRepository;
00055 class DtBaseEntityStateRepository;
00056 class DtManagedObjectListManager;
00057 class DtSimManager;
00058 class DtVrfObjectManagerTickArguments;
00059 class DtSimTickArguments;
00060 class DtSimMessage;
00061 class DtIfCreateVrfObject;
00062 class DtIfAggregateAs;
00063 class DtVrfObjectStateRepository;
00064 class DtReflectedEnvironmentProcess;
00065 class DtReflectedControlObjectList;
00066 class DtVrfObjectSubComponentTypes;
00067 class DtReflectedObject;
00068 class DtEchelonIdTable;
00069 class DtEchelonId;
00070 class Coordinate_System;
00071 class DtObjectGeometricModelsManager;
00072 class DtSimInternalCommunicationManager;
00073 class DtVrfObjectPlanAdministrator;
00074 class DtDIGuyCharacterDataManager;
00075 class DtReflectedDesignator;
00076 class DtRemoteComponentAttachmentManager;
00077 class DtReflectedDesignatorList;
00078 class DtCreateQueueEntry;
00079 class DtModifyQueueEntry;
00080 class DtPrintReflectedObjectsCommand;
00081 
00084 typedef void (*DtSimObjectListActivityCallbackFcn)(DtVrfObject* simObject, 
00085    void* usr);
00086 
00088 typedef bool (*DtSimObjectUserInitFcn)(DtVrfObject* object, void* usr);
00089 
00092 typedef void (*DtVrfObjectListActivityCallbackFcn)(DtVrfObject* vrfObject,
00093    void* usr);
00094 
00096 typedef bool (*DtVrfObjectUserInitFcn)(DtVrfObject* vrfObject, void* usr);
00097 
00100 typedef void (*DtVrfObjectManagerCallbackFcn)(const DtVrfObjectManager& objectManager,
00101    void* usr);
00102 
00106 const int DtSimMaxForceTypes = 256;
00107 
00109 struct DtVrfObjectManagerCallbackInfo
00110 {
00111    DtVrfObjectManagerCallbackFcn myCallbackFunction;
00112    void* myUserData;
00113 };
00114 
00116 struct DtVrfObjectNameChangedCallbackInfo
00117 {
00118    DtString myOldName;
00119    DtString myNewName;
00120    DtVrfObject* myVrfObject;
00121 };
00122 
00124 typedef DtCallbackList<const DtVrfObjectNameChangedCallbackInfo&>::DtCallbackFunctionType DtVrfObjectNameChangedCallbackFcn;
00125 
00133 #include "vrfobjcore/vrfobjcoreDefines.h"
00134 class DT_DLL_vrfobjcore DtVrfObjectManager : public DtRwList
00135 {
00136 public:
00137    typedef DtCallbackList<const DtOrganizationManagerReadyCallbackInfo&> DtOrganizationReadyCallbackList;
00138 
00142    typedef enum
00143    {
00144       DtUseParameterDatabaseAggregateState = 0,
00145       DtCreateAggregatedEntity,
00146       DtCreateDisaggregatedEntity
00147    } DtAggregateCreationMode;
00148 
00149 public:
00150 
00152    DtVrfObjectManager(DtSimManager* simManager, int entityAdvisory = 100);
00153 
00159    virtual ~DtVrfObjectManager();
00162 
00164    virtual void clearRemoteComponentAttachmentSystem();
00165 
00168    virtual void createRemoteComponentAttachmentManager();
00169 
00171    virtual bool initializeRemoteComponentAttachmentSystem(const DtFilename& fromFile);
00172   
00174    DtRemoteComponentAttachmentManager* remoteComponentAttachmentManager();
00175    const DtRemoteComponentAttachmentManager* remoteComponentAttachmentManager() const;
00177 
00180    virtual bool create();
00181 
00182    virtual bool createObjectNameHashlist();
00183 
00184 #ifdef DtHLA
00185    virtual bool createGlobalIdHashlist();
00186 #endif
00187 
00190    virtual bool init();
00191 
00193    virtual void createDIGuyCharacterManager(const DtFilename & diGuyDataFile,
00194                      const DtFilename & diGuyAnimationsFile);
00195 
00205    virtual bool add(DtVrfObject* simObject);
00206 
00207 private:
00210    using DtRwList::add;
00211    using DtRwList::remove;
00212 
00213 public:
00214 
00216    virtual void setParameterDatabase(DtVrfParameterDb* parameterDatabase);
00217    virtual DtVrfParameterDb* parameterDatabase();
00218 
00221    virtual DtVrfObject* lookupVrfObject(const DtEntityIdentifier& key);
00222    virtual const DtVrfObject* lookupVrfObject(const DtEntityIdentifier& key) const;
00223    
00224    virtual DtVrfObject* lookupVrfObjectByGlobalId(
00225       const DtGlobalObjectDesignator& globalId);
00226    virtual const DtVrfObject* lookupVrfObjectByGlobalId(
00227       const DtGlobalObjectDesignator& globalId) const;
00228 
00229    virtual DtVrfObject* lookupVrfObjectByName(const DtString& name, bool
00230       warnOnFailure = true);
00231    virtual const DtVrfObject* lookupVrfObjectByName(const DtString& name, bool
00232       warnOnFailure = true) const;
00233 
00234    virtual const DtVrfObject* lookupVrfObjectByEchelonIdString(
00235       const DtString& echIdString) const;
00236    virtual DtVrfObject* lookupVrfObjectByEchelonIdString(
00237       const DtString& echIdString);
00238 
00239    virtual const DtVrfObject* lookupVrfObjectByEchelonId(
00240       const DtEchelonId& echId) const;
00241    virtual DtVrfObject* lookupVrfObjectByEchelonId(
00242       const DtEchelonId& echId);
00243 
00247    virtual DtVrfObject * lookupVrfObjectByObjectId(const DtObjectId & id) const;
00248 
00249 
00253    virtual DtGlobalObjectDesignator lookupGlobalId(const DtObjectId & id) const;
00254 
00258    virtual DtObjectId lookupObjectId(const DtGlobalObjectDesignator & globalId);
00259 
00261    virtual DtManagedObjectListConstPtr getList(const DtVrfObjectPredicate& predicate,
00262       bool reevaluateFlag = false, DtTime evaluationPeriod = 0);
00263 
00264    virtual const DtVrfObjectFilterIterator& vrfIterator(
00265       const DtObjectType& filter = DtObjectType::anyType(),
00266       bool invertFilter = false) const;
00267 
00268    virtual const DtVrfObjectFilterIterator& vrfIterator(
00269       const DtVrfObjectPredicate& predicate) const;
00270 
00273    virtual const DtVrfObjectFilterIterator& vrfIterator(DtFilterFcn filter, 
00274       bool invertFilter = false, void* usrData = 0)const;
00275 
00278    virtual void removeAndDelete(const DtString& objectName);
00279    virtual void removeAndDelete(const DtEntityIdentifier& key);
00280    virtual void removeAndDelete(DtVrfObject* object);
00281 
00283    virtual void removeAndDeleteAllLocals();
00284 
00287    virtual void removeAndDeleteAll();
00288 
00293    virtual void setExerciseConnection(DtExerciseConn* connection);
00294    virtual void createRemoteEnvironmentalsList(DtExerciseConn* exConn);
00295 
00297    virtual DtReflectedControlObjectList* reflectedEnvironmentProcessList() const;
00298 
00301    virtual DtReflectedControlObjectList* createReflectedControlObjectList(DtExerciseConn* exConn);
00302 
00309    virtual void registerInterfaceCallbacks();
00310 
00312    virtual const DtSimManager* simManager() const;
00314    virtual DtSimManager* simManager();
00315 
00325    virtual void processCreateVrfObject(DtSimMessage* msg);
00326 
00333    virtual void processCreateVrfObject(DtIfCreateVrfObject ifCreateVrfObject);
00334    
00342    virtual void processModifyVrfObject(DtSimMessage* msg);
00343 
00350    virtual void processModifyVrfObject(DtIfModifyVrfObject modObj);
00351 
00354    virtual void processModifyVrfOverlay(DtSimMessage* msg);
00357    virtual void processDeleteVrfObject(DtSimMessage* msg);
00360    virtual void processDeleteVrfObjectById(DtSimMessage* msg);
00363    virtual void processVrfObjectDeleted(DtSimMessage* msg);
00366    virtual void processOrderOfBattleOp(DtSimMessage* msg);
00369    virtual void processAutoReorganize(DtSimMessage* msg);
00372    virtual void processAggregateAs(DtSimMessage* msg);
00375    virtual void processSkipTask(DtSimMessage* msg);
00376 
00377 
00382    virtual void processSetThresholds(DtSimMessage* msg);
00383    
00385    virtual void processCreateControlObject(DtSimMessage* msg);
00386    virtual void processCreateEntity(DtSimMessage* msg);
00387    virtual void processRemoveEntity(DtSimMessage* msg);
00388    virtual void processRequestEntityName(DtSimMessage* msg);
00389 
00394    virtual void processEntityAddedCallback(DtReflectedExtEntity* entity);
00395    virtual void processAggregateAddedCallback(DtReflectedExtAggregate* aggregate);
00396 
00399    virtual void processEntityRemovedCallback(DtReflectedExtEntity* entity);
00400    virtual void processAggregateRemovedCallback(DtReflectedExtAggregate* aggregate);
00401 
00402    virtual void processDesignatorAddedCallback(DtReflectedDesignator * des);
00403    virtual void processDesignatorRemovedCallback(DtReflectedDesignator * des);
00404    virtual void processDesignatorChangedCallback(DtReflectedDesignator * des);
00405    DtBoolean processDesignatorDiscoveryCriteria(DtReflectedDesignator * des);
00406 
00408    virtual void processAggregateChanged(DtReflectedExtAggregate* aggregate);
00409 
00410    virtual void processEnvProcessAddedCallback(
00411       DtReflectedEnvironmentProcess* envProcess);
00412    virtual void processEnvProcessRemovedCallback(
00413       DtReflectedEnvironmentProcess* envProcess);
00414    virtual bool processEnvProcessDiscoveryCriteria(
00415       DtReflectedEnvironmentProcess* envProcess);
00416 
00419    virtual void removeObjectSubordinates(DtVrfObject* object);
00420 
00423    virtual void queueObjectForRemoval(const DtEntityIdentifier& key);
00424 
00426    virtual void removeObjectsQueuedForRemoval();
00427 
00436    virtual void tick();
00437 
00439    virtual DtVrfObject* createAndInitVrfObject(
00440       DtIfCreateVrfObject* creationInfo);
00441 
00442    virtual DtVrfObject* createAndInitVrfObject(
00443       DtIfAggregateAs* aggInfo);
00444 
00446    virtual DtVrfObject* createAndInitVrfObject(
00447       DtReflectedEntity* entity);
00448 
00449    virtual DtVrfObject* createAndInitVrfObject(
00450       DtReflectedAggregate* aggregate,
00451       int superType = DtObjectTypeAggregate);
00452 
00453    virtual DtVrfObject* createAndInitVrfObject(DtReflectedEnvironmentProcess* envProcess);
00454 
00464    virtual DtVrfObject* createAndInitVrfObject(
00465       const DtObjectType& objectType,
00466       bool publishLocalObject = true,
00467       const DtString& objectName = DtString::nullString(),
00468       const DtString& objectLabel = DtString::nullString(),
00469       DtForceType forceType = DtForceOther,
00470       const DtList* vertices = 0,
00471       const DtTaitBryan* orientation = 0,
00472       bool projection = false,
00473       bool closedFigure = false,
00474       const DtAppearance& appearance = DtAppearance::nullAppearance(),
00475       const DtString& readerWriterName = DtString::nullString(),
00476       DtReaderWriterRegistry* parentRegistry = 0,
00477       bool createSubObjects = false,
00478       DtVrfObjectUserInitFcn userInit = 0,
00479       void* userInitData = 0,
00480       bool organize = true,
00481       const DtString& startingFormation = DtDefaultFormationString,
00482       DtVrfObjectManager::DtAggregateCreationMode initialAggregateState = 
00483       DtVrfObjectManager::DtUseParameterDatabaseAggregateState);
00484 
00492    virtual DtVrfObject* createAndInitVrfObject(
00493       const DtObjectType& objectType,
00494       bool publishLocalObject = true,
00495       const DtString& objectName = DtString::nullString(),
00496       const DtString& objectLabel = DtString::nullString(),
00497       DtForceType forceType = DtForceOther,
00498       const DtVector& position = DtVector::zero(),
00499       const DtTaitBryan* orientation = 0,
00500       bool projection = false,
00501       bool closedFigure = false,
00502       const DtAppearance& appearance = DtAppearance::nullAppearance(),
00503       const DtString& readerWriterName = DtString::nullString(),
00504       DtReaderWriterRegistry* parentRegistry = 0,
00505       bool createSubObjects = false,
00506       DtVrfObjectUserInitFcn userInitFcn = 0,
00507       void* userInitData = 0,
00508       bool organize = true,
00509       const DtString& startingFormation = DtDefaultFormationString,
00510       DtVrfObjectManager::DtAggregateCreationMode initialAggregateState = 
00511       DtVrfObjectManager::DtUseParameterDatabaseAggregateState);
00512 
00520    virtual void createSubObjectsFromParameters(DtVrfObject* parent,
00521       bool publishSubobjects);
00522 
00529    virtual DtVrfObject* createSubObjectFromParameterEntry(
00530       const DtVrfSubObjectParameterEntry& entry, const DtVector& positionOffsetFromParent,
00531       const DtVrfObject& parent, 
00532       const DtString& formationName,
00533       bool publishSubObject);
00534 
00536    virtual bool readOrderOfBattleFile(const DtString & filename);
00537    virtual bool writeOrderOfBattleFile(const DtString & filename);
00541    virtual bool objectShouldBeSavedToOrderOfBattle(
00542       const DtVrfObject* vrfObject);
00543 
00544    virtual DtlObjPtr getData(DtlObjPtr args, const DtFilename& searchPath,
00545       const DtVariableBindingsList& variableBindings);
00546 
00549    static void tickCallback(void* args);
00550 
00554    virtual void addVrfObjectAboutToBeAddedCallback(
00555       DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
00556       const DtObjectType& filter = DtObjectType::anyType(),
00557       bool invertFilter = false);
00558 
00562    virtual void addVrfObjectAddedCallback(
00563       DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
00564       const DtObjectType& filter = DtObjectType::anyType(),
00565       bool invertFilter = false);
00566 
00570    virtual void addVrfObjectAboutToBeLoadedCallback(
00571       DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
00572       const DtObjectType& filter = DtObjectType::anyType(),
00573       bool invertFilter = false);
00574 
00575 
00580    virtual void addVrfObjectAboutToBeRemovedCallback(
00581       DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
00582       const DtObjectType& filter = DtObjectType::anyType(),
00583       bool invertFilter = false);
00584 
00587    virtual void removeVrfObjectAboutToBeAddedCallback(
00588       DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
00589       const DtObjectType& filter = DtObjectType::anyType(),
00590       bool invertFilter = false);
00591 
00594    virtual void removeVrfObjectAboutToBeLoadedCallback(
00595       DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
00596       const DtObjectType& filter = DtObjectType::anyType(),
00597       bool invertFilter = false);
00598 
00601    virtual void removeVrfObjectAddedCallback(
00602       DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
00603       const DtObjectType& filter = DtObjectType::anyType(),
00604       bool invertFilter = false);
00605 
00608    virtual void removeVrfObjectAboutToBeRemovedCallback(
00609       DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
00610       const DtObjectType& filter = DtObjectType::anyType(),
00611       bool invertFilter = false);
00612 
00615    virtual void addObjectManagerAboutToRemoveAllCallback(
00616       DtVrfObjectManagerCallbackFcn fcn, void* usrData);
00617 
00620    virtual void removeObjectManagerAboutToRemoveAllCallback(
00621       DtVrfObjectManagerCallbackFcn fcn, void* usrData);
00622 
00624    virtual void addOrganizationManagerReadyCallback(
00625       DtOrganizationManagerReadyCallbackFcn fcn, void* usrData);
00626 
00628    virtual void removeOrganizationManagerReadyCallback(
00629       DtOrganizationManagerReadyCallbackFcn fcn, void* usrData);
00630 
00632    virtual void enableAutoReorganization();
00633    virtual void disableAutoReorganization();
00635    virtual bool autoReorganizeEnabled() const;
00636 
00638    virtual DtVrfObject* lookupTopLevelVrfObject(DtForceType forceType);
00640    virtual DtVrfObject* createAndInitTopLevelVrfObject(DtForceType forceType);
00643    virtual DtVrfObject* createAndInitTopLevelVrfObject(DtForceType forceType, 
00644       const DtString& name);
00646    virtual DtString topLevelName(DtForceType forceType);
00647 
00655    virtual DtString nextName(const DtObjectType& objectType);
00657    virtual DtString nextUnorganizedName();
00658 
00662    virtual unsigned int maxNameLengthForType(const DtObjectType& objectType);
00663 
00666    virtual void processOverlayOp(DtSimMessage* msg);
00667    virtual bool readOverlayFile(const DtString& filename);
00668 
00671    virtual DtReflectedObject* lookupReflectedObject(
00672       const DtGlobalObjectDesignator& globalId) const;
00673 
00675    virtual void rediscoverObjects();
00676 
00679    virtual void requestUpdatesForRemoteNonVrfObjects() const;
00680 
00683    virtual void objectNameChanged(const DtString& oldName, 
00684       const DtString& newName);
00685 
00687 
00688    virtual void addObjectNameChangedCallback(DtVrfObjectNameChangedCallbackFcn fcn, void* usr);
00689    virtual void removeObjectNameChangedCallback(DtVrfObjectNameChangedCallbackFcn fcn, void* usr);
00691 
00694    virtual bool addNameAlias(const DtString& aliasName, DtVrfObject* object);
00695 
00696    virtual void removeNameAlias(const DtString& alias);
00697 
00714    virtual DtVrfObject* aggregateAs(
00715       const DtObjectType& aggregateType, 
00716       DtForceType force, 
00717       const DtVector& dbPosition,
00718       DtReal heading,
00719       DtList* subordinateNames = 0,
00720       const DtString& aggregateName = DtString::nullString());
00721 
00725    virtual bool addSubordinatesToAggregate(DtVrfObject* object, 
00726       const DtList* subordinateNames, DtAggregateState desiredState = DtFullyDisaggregated);
00727 
00733    static void addSubordinatesToAggregateCompleteCallback(void* usr);
00734 
00735    virtual DtOrganizationManager* organizationManager();
00736    virtual const DtOrganizationManager* organizationManager() const;
00737 
00740    virtual DtDIGuyCharacterDataManager * diGuyCharacterManager();
00741    virtual const DtDIGuyCharacterDataManager * diGuyCharacterManager() const;
00742 
00744    virtual void setCoordinateSystem(const Coordinate_System* coordinateSystem);
00745 
00747    virtual unsigned objectCount() const;
00748 
00750    virtual DtVrfObject* lookup(const DtEntityIdentifier& key);
00751    virtual const DtVrfObject* lookup(const DtEntityIdentifier& key) const;
00752 
00754    virtual DtVrfObject* lookupObjectByGlobalId(const DtGlobalObjectDesignator& globalId);
00755    virtual const DtVrfObject* lookupObjectByGlobalId(
00756       const DtGlobalObjectDesignator& globalId) const;
00757 
00759    virtual DtVrfObject* lookupObjectByName(const DtString& objectName);
00760    virtual const DtVrfObject* lookupObjectByName(const DtString& objectName) const;
00761 
00763    virtual const DtSimulationAddress& simulationAddress() const;
00764 
00770    const DtSimObjectIterator& iterator() const;
00771 
00773    virtual bool createSimObjectList();
00774 
00777    virtual DtHashlist* hashlist() const;
00778 
00782    virtual void createRemoteEntitiesList(DtExerciseConn* exConn);
00783    virtual void createRemoteAggregatesList(DtExerciseConn* exConn);
00784 
00789    static void entityAddedCallback(DtReflectedExtEntity* entity, void* userData);
00790 
00795    static void entityRemovedCallback(DtReflectedExtEntity* entity,
00796       void* userData);
00797 
00802    static void aggregateAddedCallback(DtReflectedExtAggregate* entity,
00803       void* userData);
00804 
00809    static void aggregateRemovedCallback(DtReflectedExtAggregate* entity,
00810       void* userData);
00811 
00816    static void entityChangedCallback(DtReflectedExtEntity* entity,
00817       void* userData);
00818 
00823    static void aggregateChangedCallback(DtReflectedExtAggregate* aggregate,
00824       void* userData);
00825 
00827    virtual void processEntityChanged(DtReflectedExtEntity* entity);
00828 
00834    static bool entityDiscoveryCriteriaCallback(DtReflectedObject* entity,
00835       void* userData);
00836 
00842    static bool aggregateDiscoveryCriteriaCallback(DtReflectedObject* aggregate,
00843       void* userData);
00844 
00850    virtual bool processEntityDiscoveryCriteria(
00851       DtReflectedEntity* entity);
00852 
00858    virtual bool processAggregateDiscoveryCriteria(
00859       DtReflectedAggregate* aggregate); 
00860 
00863    virtual DtReflectedDesignator * lookupLasedTargetByGlobalId(const DtGlobalObjectDesignator&
00864       tgtGlobalId);
00865 
00869    virtual DtReflectedDesignator * lookupLasedTargetByDesignatorCode(const int code);
00870 
00874    virtual void createRemoteDesignatorsList(DtExerciseConn * exConn);
00875 
00876    DtReflectedDesignatorList* reflectedDesignatorList() const;
00877 
00878 
00880    virtual DtVrfParameterDb* objectParametersDB() const;
00881 
00884    virtual void addSimObjectAboutToBeAddedCallback(
00885       DtSimObjectListActivityCallbackInfo* cbInfo);
00886    virtual void addSimObjectAddedCallback(
00887       DtSimObjectListActivityCallbackInfo* cbInfo);
00888    virtual void addSimObjectAboutToBeRemovedCallback(
00889       DtSimObjectListActivityCallbackInfo* cbInfo);
00890    virtual void addSimObjectAboutToBeLoadedCallback(
00891       DtSimObjectListActivityCallbackInfo* cbInfo);
00892 
00896    virtual void addSimObjectAboutToBeAddedCallback(
00897       DtSimObjectListActivityCallbackFcn fcn, void* usrData, 
00898       const DtObjectType& filter = DtObjectType::anyType(),
00899       bool invertFilter = false);
00900 
00904    virtual void addSimObjectAddedCallback(
00905       DtSimObjectListActivityCallbackFcn fcn, void* usrData, 
00906       const DtObjectType& filter = DtObjectType::anyType(),
00907       bool invertFilter = false);
00908 
00912    virtual void addSimObjectAboutToBeRemovedCallback(
00913       DtSimObjectListActivityCallbackFcn fcn, void* usrData, 
00914       const DtObjectType& filter = DtObjectType::anyType(),
00915       bool invertFilter = false);
00916 
00920    virtual void addSimObjectAboutToBeLoadedCallback(
00921       DtSimObjectListActivityCallbackFcn fcn, void* usrData, 
00922       const DtObjectType& filter = DtObjectType::anyType(),
00923       bool invertFilter = false);
00924 
00927    virtual void removeSimObjectAboutToBeAddedCallback(
00928       DtSimObjectListActivityCallbackFcn fcn, void* usrData, 
00929       const DtObjectType& filter = DtObjectType::anyType(),
00930       bool invertFilter = false);
00931 
00932    virtual void removeSimObjectAboutToBeRemovedCallback(
00933       const DtSimObjectListActivityCallbackInfo& cbInfo);
00934 
00937    virtual void removeSimObjectAddedCallback(
00938       DtSimObjectListActivityCallbackFcn fcn, void* usrData, 
00939       const DtObjectType& filter = DtObjectType::anyType(),
00940       bool invertFilter = false);
00941 
00944    virtual void removeSimObjectAboutToBeLoadedCallback(
00945       DtSimObjectListActivityCallbackFcn fcn, void* usrData, 
00946       const DtObjectType& filter = DtObjectType::anyType(),
00947       bool invertFilter = false);
00948 
00951    virtual void removeSimObjectAboutToBeAddedCallback(
00952       const DtSimObjectListActivityCallbackInfo& cbInfo);
00953    virtual void removeSimObjectAddedCallback(
00954       const DtSimObjectListActivityCallbackInfo& cbInfo);
00955    virtual void removeSimObjectAboutToBeLoadedCallback(
00956       const DtSimObjectListActivityCallbackInfo& cbInfo);
00957 
00960    virtual void removeSimObjectAboutToBeRemovedCallback(
00961       DtSimObjectListActivityCallbackFcn fcn, void* usrData,
00962       const DtObjectType& filter = DtObjectType::anyType(),
00963       bool invertFilter = false);
00964 
00968    virtual void invokeSimObjectAboutToBeAddedCallbacks(
00969       DtVrfObject* simObject) const;
00970 
00974    virtual void invokeSimObjectAddedCallbacks(
00975       DtVrfObject* simObject) const;
00976 
00980    virtual void invokeSimObjectAboutToBeRemovedCallbacks(
00981       DtVrfObject* simObject) const;
00982 
00986    virtual void invokeSimObjectAboutToBeLoadedCallbacks(
00987       DtVrfObject* simObject) const;
00988 
00990    virtual DtReflectedExtEntityList* reflectedEntityList() const;
00991 
00993    virtual DtReflectedExtAggregateList* reflectedAggregateList() const;
00994 
00998    virtual void setSimObjectType(const DtString& type);
00999    virtual const DtString& simObjectType() const;
01001 
01003    virtual const DtEntityIdentifier& nextId();
01004 
01009    virtual DtString generateUniqueName(int maxLength, const DtString&
01010       root = "Object") const;
01011 
01014    virtual bool isLocal(const DtBaseEntityStateRepository& stateRep);
01015 
01019    static int aggregateSuperType(DtAggregateStateRepository* aggregate);
01020 
01025    virtual void objectsEmbarkedOn(DtVrfObjectStateRepository* vrfObjSR, std::list<DtString>& list,
01026       bool includePsuedoAggregates = true) const;
01027 
01032    static void designatorAddedCallback(DtReflectedDesignator * des,
01033       void * userData);
01034 
01039    static void designatorRemovedCallback(DtReflectedDesignator * des,
01040       void * userData);
01041 
01046    static void designatorChangedCallback(DtReflectedDesignator * des,
01047       void * userData);
01048 
01054    static DtBoolean designatorDiscoveryCriteriaCallback(DtReflectedObject * des,
01055       void * userData);
01056 
01059    virtual bool canSimulate() const;
01060 
01062    virtual void printReflectedObjectCounts() const;
01063 
01064 protected:
01066    virtual void processOrganizationManagerReady(const DtOrganizationManagerReadyCallbackInfo&);
01067    virtual void invokeOrganizationManagerReadyCallbacks(const DtOrganizationManagerReadyCallbackInfo&);
01068 
01069 protected:
01072    virtual void rediscoverNonVRFEntities();
01073 
01077    virtual void remove(DtVrfObject* simObject);
01078    virtual DtVrfObject* remove(const DtEntityIdentifier& key);
01079 
01082    virtual void invokeObjectManagerAboutToRemoveAllCallbacks() const;
01083 
01086    virtual void onQueueObjectForRemoval(DtVrfObject* vrfObject);
01087 
01088 
01089    virtual const Coordinate_System* coordinateSystem() const;
01090    virtual Coordinate_System* coordinateSystem();
01091 
01092 protected:
01094    virtual DtObjectGeometricModelsManager* createObjectModelsManager() const;
01095 
01097    virtual DtVrfObjectPlanAdministrator* createPlanAdministrator();
01098    
01099 public:
01100    DtObjectGeometricModelsManager* objectModelsManager() const;
01101    void setTerrainDbFactory(DtTerrainDbFactory*);
01102    DtTerrainDbFactory* terrainDbFactory();
01103    
01104    virtual DtVrfObjectPlanAdministrator* planAdministrator();
01105 
01106    virtual DtSimInternalCommunicationManager* simInternalCommunicationManager();
01107 
01108 protected:
01110    virtual DtSimInternalCommunicationManager* createSimInternalCommunicationManager(
01111       DtSimManager* simMgr) const;
01112 
01113 protected:
01114 
01118    static void modifyVrfObjectCallback(DtSimMessage* msg, void* usr);
01119    static void modifyVrfOverlayCallback(DtSimMessage* msg, void* usr);
01120    static void autoReorganizeCallback(DtSimMessage* msg, void* usr);
01121    static void skipTaskCallback(DtSimMessage* msg, void* usr);
01122    static void setThresholdsCallback(DtSimMessage* msg, void* usr);
01123 
01124 #if DT_SINGLE_STATE_UPDATE_MESSAGE
01125    static void vrfObjectStateUpdateCallback(DtSimMessage* msg, void* usr);
01126 #endif
01127 
01135    static void createVrfObjectCallback(DtSimMessage* msg, void* usr);
01136    static void deleteVrfObjectCallback(DtSimMessage* msg, void* usr);
01137    static void deleteVrfObjectByIdCallback(DtSimMessage* msg, void* usr);
01138    static void vrfObjectDeletedCallback(DtSimMessage* msg, void* usr);
01139    static void orderOfBattleOpCallback(DtSimMessage* msg, void* usr);
01140    static void aggregateAsCallback(DtSimMessage* msg, void* usr);
01141 
01146    static void createVrfObjectPostDrainCallback(void* usr);
01147    static void deleteVrfObjectPostDrainCallback(void* usr);
01148    static void deleteVrfObjectByIdPostDrainCallback(void* usr);
01149    static void vrfObjectDeletedPostDrainCallback(void* usr);
01150    static void orderOfBattleOpPostDrainCallback(void* usr);
01151    static void aggregateAsPostDrainCallback(void* usr);
01152    
01153    static void envProcessAddedCallback(
01154       DtReflectedEnvironmentProcess* envProcess, void* userData);
01155    static void envProcessRemovedCallback(
01156       DtReflectedEnvironmentProcess* envProcess, void* userData);
01157    static bool envProcessDiscoveryCriteria(
01158       DtReflectedObject* envProcess, void* userData);
01159 
01160    static void organizationManagerReadyCallback(const DtOrganizationManagerReadyCallbackInfo& info, void* usr);
01161 
01162 protected:
01163 
01165    DtVrfObjectManager();
01166 
01168    DtVrfObjectManager(const DtVrfObjectManager& orig);
01169 
01171    DtVrfObjectManager& operator=(const DtVrfObjectManager& orig);
01172   
01178    static void postInitFromParamsCallback(DtVrfObject* vrfObject, void* usr);
01179 
01182    virtual DtCreateQueueEntry* createQueueEntryCreator(DtIfCreateVrfObject msg);
01183       
01186    virtual DtModifyQueueEntry* modifyQueueEntryCreator(DtIfModifyVrfObject msg);
01187       
01188 protected:
01190    DtRemoteComponentAttachmentManager *pMyRemoteComponentAttachmentManager;
01191 
01193    DtHashlist* mySimObjectList;
01194 
01196    DtReflectedExtEntityList* myRemoteEntitiesList;
01197 
01199    DtReflectedExtAggregateList* myRemoteAggregateEntitiesList;
01200 
01202    DtReflectedDesignatorList * myRemoteDesignatorsList;
01203 
01205    DtVrfParameterDb* myParameterDatabase;
01206 
01210    DtList myAboutToBeLoadedSimObjectCallbackList;
01211 
01215    DtList myAboutToBeAddedSimObjectCallbackList;
01216 
01220    DtList myAddedSimObjectCallbackList;
01221 
01225    DtList myAboutToBeRemovedSimObjectCallbackList;
01226 
01228    DtString                            mySimObjectType;
01229 
01233    mutable DtSimObjectIterator*        myIterator;
01234 
01235    DtExerciseConn*                     myExerciseConn;
01236   
01238    int                                 myIndexSize;
01239 
01240    DtManagedObjectListManager*        myFilteredObjectListManager;
01241    
01245    mutable DtVrfObjectFilterIterator*  myVrfIterator;
01246 
01247    DtSimManager*                       mySimManager;
01248    
01251    DtList                              myObjectsToRemoveQueue;
01252 
01255    typedef DtBoost::shared_ptr<DtCreateQueueEntry> DtCreateQueueEntryPtr;
01256    typedef std::list<DtCreateQueueEntryPtr> DtVrfObjectCreateQueue; 
01257    DtVrfObjectCreateQueue              myObjectsToCreateQueue;
01258 
01261    typedef DtBoost::shared_ptr<DtModifyQueueEntry> DtModifyQueueEntryPtr;
01262    typedef std::list<DtModifyQueueEntryPtr> DtVrfObjectModifyQueue; 
01263    DtVrfObjectModifyQueue              myObjectsToModifyQueue;
01264 
01266    bool myAutoReorganizeFlag;
01267 
01268    DtReflectedControlObjectList*       myRemoteEnvironmentalsList;
01269 
01270    int myNameCounter;
01271 
01272    DtHashlist* myObjectNameHashlist;
01273 
01274 #ifdef DtHLA
01275    DtHashlist* myGlobalIdHashlist;
01276 #endif
01277 
01278    DtOrganizationManager* myOrganizationManager;
01279    DtEchelonIdTable* myEchelonIdTable;
01280 
01281    DtDIGuyCharacterDataManager * myCharacterMgr;
01282 
01283    const Coordinate_System* myCoordinateSystemPtr;
01284 
01285    double myTimeToPublishNextStateUpdate;
01286 
01287    DtObjectGeometricModelsManager*  myObjectModelsManager;
01288 
01289    DtSimInternalCommunicationManager* mySimInternalCommunicationManager;
01290 
01291    DtVrfObjectPlanAdministrator* myPlanAdministrator;
01292 
01293    typedef DtCallbackList<const DtVrfObjectNameChangedCallbackInfo&> DtNameChangedCallbackList;
01294    DtNameChangedCallbackList myObjectNameChangedCallbackList;
01295 
01296    DtOrganizationReadyCallbackList myOrganizationManagerReadyCallbackList;
01297 
01298    DtPrintReflectedObjectsCommand* myPrintReflectedObjectsCommand;
01299 
01300 private:
01301 
01302    std::vector<DtVrfObjectManagerCallbackInfo> myAboutToRemoveAllCallbackList;
01303 
01305    DtTerrainDbFactory*  myTerrainDbFactory;
01306 };
01307 
01308 inline DtRemoteComponentAttachmentManager* DtVrfObjectManager::remoteComponentAttachmentManager()
01309 {
01310    return (pMyRemoteComponentAttachmentManager);
01311 }
01312 
01313 inline const DtRemoteComponentAttachmentManager* DtVrfObjectManager::remoteComponentAttachmentManager() const
01314 {
01315    return (pMyRemoteComponentAttachmentManager);
01316 }
01317 
01318 

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)