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 "geometry/extent.h"
23 
25 class DtFormationState;
27 
31  const DtFormationState& formationState, void* usr);
32 
35 {
37  void* myUserData;
38 };
39 
41 {
42 public:
43 
45 
47 
48  DtFormationState& operator=(const DtFormationState& orig);
49 
50  virtual ~DtFormationState();
51 
53  virtual bool isValid() const;
54 
59  virtual bool setFormation(const DtFormation& formation);
60 
69  virtual bool assignEntitiesToFormation(const std::vector<DtUUID> entityList,
70  const std::vector<int> promotionIds);
71 
86  virtual void setEntityListAndFormation(const std::vector<DtUUID>& entityList,
87  const DtFormation& formation, const std::vector<int>& promotionIds);
88 
90  virtual bool lookup(const DtUUID& subordinate, DtFormationQueryResult& result) const;
91 
94  virtual int lookupFormationPromotionIDByEntity(const DtUUID& subordinate) const;
95 
99  virtual void queryAll(DtFormationQueryResultList& resultList) const;
100 
102  virtual const std::vector<DtUUID> entityList() const;
103 
106  virtual DtUUID formationLeader() const;
107 
109  virtual double formationHalfLength() const;
110 
113  virtual DtExtent formationBodyExtent() const;
114 
116  virtual void print() const;
117 
119  virtual void addFormationStateChangedCallback(
120  DtFormationStateCallbackFcn fcn, void* userData);
121 
123  virtual void removeFormationStateChangedCallback(
124  DtFormationStateCallbackFcn fcn, void* userData);
125 
128  virtual void enableFormationCallbacks();
129  virtual void disableFormationCallbacks();
130 
134  virtual void clearEntityList();
135 
136  void markModified();
137  void clearModified();
138  bool isModified() const
139  {
140  return myModified;
141  }
142 
144  virtual void invokeFormationStateChangedCallbacks() const;
145 
146 protected:
148  virtual const DtFormationRecord* lookupFormationRecord(int promotionId) const;
149 
152  virtual DtVector lookupFollowOffset(const DtUUID& subordinate) const;
153 
156  virtual DtUUID lookupLeaderOfEntity(const DtUUID& subordinate) const;
157 
163  virtual void rebuildEntityToPositionInUnitMap();
164 
168  virtual const DtFormationRecord* generateAdditionalFormationRecord(int promotionId) const;
169 
172  void emptyFormationIndexToFormationRecordMap();
173 
179  virtual void createFormationRecords(const DtFormation& formation);
180 
182  virtual void resetFormationMap();
183 
184 protected:
185 
193 
194  typedef std::shared_ptr<const DtFormationRecord> SharedFormationRecord;
195 
202 
209  mutable std::map<int, SharedFormationRecord> myFormPromIdToFormationRecordMap;
210 
213  typedef struct
214  {
217  } DerivedOffsets;
218 
219  std::map<DtUUID, DerivedOffsets> myEntityToDerivedOffsetsMap;
220 
223  std::map<int, DtUUID> myFormPromIdToEntityMap;
224  std::map<DtUUID, int> myEntityToFormPromIdMap;
226 
232 
236  std::vector<DtFormationStateCallbackInfo> myFormationStateChangedCallbackList;
237 
239  bool myModified = false;
240 };
241 
DtVector offsetFromFormationLeader
Definition: formationState.h:215
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:192
This is the information derived from the formation definition, and dependent on what subordinates are...
Definition: formationState.h:213
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:209
Definition: formationState.h:40
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:224
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:219
std::map< int, DtUUID > myFormPromIdToEntityMap
Maps between the subordinate entity and its formation promotion ID in the current formation...
Definition: formationState.h:223
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:238
bool isModified() const
Definition: formationState.h:138
void print(double **a, int r, int c, const char *str)
DtFormationStateCallbackFcn myCallbackFunction
Definition: formationState.h:36
double myCurrentFormationSpacing
The current spacing of the formation. This is the space between the positions of promotion ID 0 and i...
Definition: formationState.h:231
void(* DtFormationStateCallbackFcn)(const DtFormationState &formationState, void *usr)
Callback function definition for callbacks registered on changes to the data in DtFormationState.
Definition: formationState.h:30
void * myUserData
Definition: formationState.h:37
std::vector< DtFormationStateCallbackInfo > myFormationStateChangedCallbackList
List of DtFormationStateCallbackFcns. Clients register callback functions on this list for notificati...
Definition: formationState.h:236
std::shared_ptr< const DtFormationRecord > SharedFormationRecord
Definition: formationState.h:194
Contains the declaration of the DtExtent class.
DtVector offsetFromUnitCenter
Definition: formationState.h:216
#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:34
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 Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)