VR-Forces 5.0.3 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 
58  virtual bool setFormation(const DtFormation& formation);
59 
68  virtual bool assignEntitiesToFormation(const std::vector<DtUUID> entityList,
69  const std::vector<int> promotionIds);
70 
89  virtual void setEntityListAndFormation(const std::vector<DtUUID>& entityList,
90  const DtFormation& formation, const std::vector<int>& promotionIds);
91 
93  virtual bool lookup(const DtUUID& subordinate, DtFormationQueryResult& result) const;
94 
97  virtual int lookupFormationPromotionIDByEntity(const DtUUID& subordinate) const;
98 
102  virtual void queryAll(DtFormationQueryResultList& resultList) const;
103 
105  virtual const std::vector<DtUUID> entityList() const;
106 
109  virtual DtUUID formationLeader() const;
110 
112  virtual double formationHalfLength() const;
113 
116  virtual DtExtent formationBodyExtent() const;
117 
119  virtual void print() const;
120 
122  virtual void addFormationStateChangedCallback(
123  DtFormationStateCallbackFcn fcn, void* userData);
124 
126  virtual void removeFormationStateChangedCallback(
127  DtFormationStateCallbackFcn fcn, void* userData);
128 
131  virtual void enableFormationCallbacks();
132  virtual void disableFormationCallbacks();
133 
137  virtual void clearEntityList();
138 
139  void markModified();
140  void clearModified();
141  bool isModified() const
142  {
143  return myModified;
144  }
145 
147  virtual void invokeFormationStateChangedCallbacks() const;
148 
149 protected:
151  virtual const DtFormationRecord* lookupFormationRecord(int promotionId) const;
152 
155  virtual DtVector lookupFollowOffset(const DtUUID& subordinate) const;
156 
159  virtual DtUUID lookupLeaderOfEntity(const DtUUID& subordinate) const;
160 
166  virtual void rebuildEntityToPositionInUnitMap();
167 
171  virtual const DtFormationRecord* generateAdditionalFormationRecord(int promotionId) const;
172 
175  void emptyFormationIndexToFormationRecordMap();
176 
182  virtual void createFormationRecords(const DtFormation& formation);
183 
185  virtual void resetFormationMap();
186 
187 protected:
188 
196 
197  typedef boost::shared_ptr<const DtFormationRecord> SharedFormationRecord;
198 
205 
212  mutable std::map<int, SharedFormationRecord> myFormPromIdToFormationRecordMap;
213 
216  typedef struct
217  {
220  } DerivedOffsets;
221 
222  std::map<DtUUID, DerivedOffsets> myEntityToDerivedOffsetsMap;
223 
226  std::map<int, DtUUID> myFormPromIdToEntityMap;
227  std::map<DtUUID, int> myEntityToFormPromIdMap;
229 
235 
239  std::vector<DtFormationStateCallbackInfo> myFormationStateChangedCallbackList;
240 
242  bool myModified = false;
243 };
244 
DtVector offsetFromFormationLeader
Definition: formationState.h:218
UUID is a unique ID wrapper class.
Definition: rwUUID.h:229
DtFormation myFormation
This is the current formation definition for the formation state. This is a copy of a formation obtai...
Definition: formationState.h:195
This is the information derived from the formation definition, and dependent on what subordinates are...
Definition: formationState.h:216
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:212
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:227
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:222
std::map< int, DtUUID > myFormPromIdToEntityMap
Maps between the subordinate entity and its formation promotion ID in the current formation...
Definition: formationState.h:226
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:241
bool isModified() const
Definition: formationState.h:141
boost::shared_ptr< const DtFormationRecord > SharedFormationRecord
Definition: formationState.h:197
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:234
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:239
Contains the declaration of the DtExtent class.
DtVector offsetFromUnitCenter
Definition: formationState.h:219
#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
void print(double **a, int r, int c, char *str)

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)