![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2004 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: formationState.h,v $ $Revision: 1.23 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00012 #ifndef DtFormationState_H_ 00013 #define DtFormationState_H_ 00014 00015 #include "vrfobjcore/formationRecord.h" 00016 #include <vlutil/vlString.h> 00017 #include <vector> 00018 #include <map> 00019 #include "vrfobjcore/orgViewManagedObjList.h" 00020 00021 class DtFormation; 00022 class DtFormationRecord; 00023 class DtFormationQueryResult; 00024 class DtFormationState; 00025 class DtVrfObject; 00026 class DtFormationQueryResultList; 00027 00030 typedef void (*DtFormationStateCallbackFcn)( 00031 const DtFormationState& formationState, void* usr); 00032 00034 struct DtFormationStateCallbackInfo 00035 { 00036 DtFormationStateCallbackFcn myCallbackFunction; 00037 void* myUserData; 00038 }; 00039 00040 #include "vrfobjcore/vrfobjcoreDefines.h" 00041 class DT_DLL_vrfobjcore DtFormationState 00042 { 00043 public: 00044 00045 DtFormationState(); 00046 00047 DtFormationState(const DtFormationState& orig); 00048 00049 DtFormationState& operator=(const DtFormationState& orig); 00050 00051 virtual ~DtFormationState(); 00052 00054 virtual void setFormation(const DtFormation& formation); 00055 virtual void setFormation(const std::vector<DtFormationRecord*>& formation); 00056 00058 virtual void addFormationRecord(const DtFormationRecord& formationRecord, 00059 int positionIndex); 00060 00062 virtual void removeFormationRecord(int positionIndex); 00063 00066 virtual void setEntityList(const std::vector<DtString>& entityList); 00067 00068 virtual void setEntityListAndFormation(const std::vector<DtString>& entityList, 00069 const DtFormation& formation, const std::list<int>& formationPositions); 00070 00073 virtual void setEntityListAndFormation(DtOrgViewManagedObjectListConstPtr entityList, 00074 const DtFormation& formation, const std::list<int>& formationPositions); 00075 00077 virtual const std::vector<DtString>& entityList() const; 00078 00080 virtual void clearEntityList(); 00081 00083 virtual bool lookup(const DtString& objectName, DtFormationQueryResult& result); 00084 00087 virtual int lookupPromotionIndexByName(const DtString& objectName) const; 00088 00092 virtual void queryAll(DtFormationQueryResultList& resultList); 00093 00096 virtual DtString formationLeader() const; 00097 00099 virtual double formationHalfLength() const; 00100 00102 virtual void print(); 00103 00105 virtual void addFormationStateChangedCallback( 00106 DtFormationStateCallbackFcn fcn, void* userData); 00107 00109 virtual void removeFormationStateChangedCallback( 00110 DtFormationStateCallbackFcn fcn, void* userData); 00111 00114 virtual void enableFormationCallbacks(); 00115 virtual void disableFormationCallbacks(); 00116 00119 virtual bool isAvailableForFormation(const DtVrfObject*) const; 00120 00121 protected: 00122 00123 virtual DtFormationRecord* lookupFormationRecord(int positionIndex); 00124 00125 virtual DtVector lookupFollowOffset(const DtString& entity); 00126 00127 virtual DtString lookupLeader(const DtString& entity); 00128 00129 virtual void rebuildEntityToPositionMap(); 00130 00133 virtual DtFormationRecord* generateAdditionalFormationRecord(int positionIndex) const; 00134 00137 void emptyPositionIndexToFormationRecordMap(); 00138 00141 virtual DtVector positionOffsetForPositionIndex(int positionIndex); 00142 00143 virtual void invokeFormationStateChangedCallbacks() const; 00144 00145 protected: 00146 00147 std::vector<DtString> myEntityList; 00148 std::map<int, DtFormationRecord*> myPositionIndexToFormationRecordMap; 00149 std::map<DtString, DtVector> myEntityToPositionMap; 00150 std::map<int, DtString> myPositionIndexToEntityMap; 00151 std::map<DtString, int> myEntityToPositionIndexMap; 00155 std::vector<DtFormationStateCallbackInfo> myFormationStateChangedCallbackList; 00156 00157 bool myCallbacksAreEnabled; 00158 }; 00159 00160 #endif 00161