VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
formationState.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2021 MAK Technologies, Inc.
3  * All rights reserved.
4  ****************************************************************************/
5 
8 
13 
14 #pragma once
15 
17 #include "vrfutil/formation.h"
18 #include "vrfutil/rwUUID.h"
19 #include <vlutil/vlString.h>
20 #include <vector>
21 #include <map>
22 #include <boost/shared_ptr.hpp>
23 #include "geometry/extent.h"
24 
26 class DtFormationState;
28 
32  const DtFormationState& formationState, void* usr);
33 
36 {
38  void* myUserData;
39 };
40 
42 {
43 public:
44 
46 
48 
49  DtFormationState& operator=(const DtFormationState& orig);
50 
51  virtual ~DtFormationState();
52 
57  virtual bool setFormation(const DtFormation& formation);
58 
67  virtual bool assignEntitiesToFormation(const std::vector<DtUUID> entityList,
68  const std::vector<int> promotionIds);
69 
84  virtual void setEntityListAndFormation(const std::vector<DtUUID>& entityList,
85  const DtFormation& formation, const std::vector<int>& promotionIds);
86 
88  virtual bool lookup(const DtUUID& subordinate, DtFormationQueryResult& result) const;
89 
92  virtual int lookupFormationPromotionIDByEntity(const DtUUID& subordinate) const;
93 
97  virtual void queryAll(DtFormationQueryResultList& resultList) const;
98 
100  virtual const std::vector<DtUUID> entityList() const;
101 
104  virtual DtUUID formationLeader() const;
105 
107  virtual double formationHalfLength() const;
108 
111  virtual DtExtent formationBodyExtent() const;
112 
114  virtual void print() const;
115 
117  virtual void addFormationStateChangedCallback(
118  DtFormationStateCallbackFcn fcn, void* userData);
119 
121  virtual void removeFormationStateChangedCallback(
122  DtFormationStateCallbackFcn fcn, void* userData);
123 
126  virtual void enableFormationCallbacks();
127  virtual void disableFormationCallbacks();
128 
132  virtual void clearEntityList();
133 
134  void markModified();
135  void clearModified();
136  bool isModified() const
137  {
138  return myModified;
139  }
140 
142  virtual void invokeFormationStateChangedCallbacks() const;
143 
144 protected:
146  virtual const DtFormationRecord* lookupFormationRecord(int promotionId) const;
147 
150  virtual DtVector lookupFollowOffset(const DtUUID& subordinate) const;
151 
154  virtual DtUUID lookupLeaderOfEntity(const DtUUID& subordinate) const;
155 
161  virtual void rebuildEntityToPositionInUnitMap();
162 
166  virtual const DtFormationRecord* generateAdditionalFormationRecord(int promotionId) const;
167 
170  void emptyFormationIndexToFormationRecordMap();
171 
177  virtual void createFormationRecords(const DtFormation& formation);
178 
180  virtual void resetFormationMap();
181 
182 protected:
183 
191 
192  typedef boost::shared_ptr<const DtFormationRecord> SharedFormationRecord;
193 
200 
207  mutable std::map<int, SharedFormationRecord> myFormPromIdToFormationRecordMap;
208 
211  typedef struct
212  {
215  } DerivedOffsets;
216 
217  std::map<DtUUID, DerivedOffsets> myEntityToDerivedOffsetsMap;
218 
221  std::map<int, DtUUID> myFormPromIdToEntityMap;
222  std::map<DtUUID, int> myEntityToFormPromIdMap;
224 
230 
234  std::vector<DtFormationStateCallbackInfo> myFormationStateChangedCallbackList;
235 
237  bool myModified = false;
238 };
239 
DtVector offsetFromFormationLeader
Definition: formationState.h:213
UUID is a unique ID wrapper class.
Definition: uuid.h:59
DtFormation myFormation
This is the current formation definition for the formation state. This is a copy of a formation obtai...
Definition: formationState.h:190
This is the information derived from the formation definition, and dependent on what subordinates are...
Definition: formationState.h:211
std::map< int, SharedFormationRecord > myFormPromIdToFormationRecordMap
Formation records hold the definition of the formation slots. The map key, FormPromId, is the promotion index in the formation defintion; 0 is the formation leader. This information is a duplicate of what is in myFormation, but it is organized in a map for easy access by promotion ID rather than being in a list. Mutable: to allow change in lookupFormationRecord.
Definition: formationState.h:207
Definition: formationState.h:41
std::map< DtUUID, int > myEntityToFormPromIdMap
Formation records hold the definition of the formation slots. The map key, FormPromId, is the promotion index in the formation defintion; 0 is the formation leader. This information is a duplicate of what is in myFormation, but it is organized in a map for easy access by promotion ID rather than being in a list. Mutable: to allow change in lookupFormationRecord.
Definition: formationState.h:222
std::map< DtUUID, DerivedOffsets > myEntityToDerivedOffsetsMap
Formation records hold the definition of the formation slots. The map key, FormPromId, is the promotion index in the formation defintion; 0 is the formation leader. This information is a duplicate of what is in myFormation, but it is organized in a map for easy access by promotion ID rather than being in a list. Mutable: to allow change in lookupFormationRecord.
Definition: formationState.h:217
std::map< int, DtUUID > myFormPromIdToEntityMap
Maps between the subordinate entity and its formation promotion ID in the current formation...
Definition: formationState.h:221
Instances of DtFormation are a list of DtFormationEntry objects which make up an aggregate formation...
Definition: formation.h:22
Contains the DtUUID class declaration.
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
bool myCallbacksAreEnabled
Definition: formationState.h:236
bool isModified() const
Definition: formationState.h:136
void print(double **a, int r, int c, const char *str)
boost::shared_ptr< const DtFormationRecord > SharedFormationRecord
Definition: formationState.h:192
DtFormationStateCallbackFcn myCallbackFunction
Definition: formationState.h:37
double myCurrentFormationSpacing
The current spacing of the formation. This is the space between the positions of promotion ID 0 and i...
Definition: formationState.h:229
void(* DtFormationStateCallbackFcn)(const DtFormationState &formationState, void *usr)
Callback function definition for callbacks registered on changes to the data in DtFormationState.
Definition: formationState.h:31
void * myUserData
Definition: formationState.h:38
std::vector< DtFormationStateCallbackInfo > myFormationStateChangedCallbackList
List of DtFormationStateCallbackFcns. Clients register callback functions on this list for notificati...
Definition: formationState.h:234
Contains the declaration of the DtExtent class.
DtVector offsetFromUnitCenter
Definition: formationState.h:214
#define DT_DLL_vrfutil
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfutilDefines.h:34
Container used in callback lists.
Definition: formationState.h:35
Definition: formationQueryResult.h:18
DtFormationRecord is a structure with the same information as a DtFormationEntry (an element of a DtF...
Definition: formationRecord.h:17
Instances of DtFormationQueryResultList are lists of DtFormationRequeryResult pointers. The contents of the list can be iterated over just as a standard list.
Definition: formationQueryResultList.h:25

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)