VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
spawnSinkManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
6 #pragma once
7 
13 #include <vrfobjcore/vrfObject.h>
15 #include <boost/unordered_map.hpp>
16 
17 class DtSimManager;
18 class DtScenario;
19 class DtRwSpawnTemplateList;
20 
21 //****************************************************************************
23 {
24 public:
26  DtSpawnSinkManager(DtSimManager* simManager);
27 
29  virtual ~DtSpawnSinkManager();
30 
31  virtual bool init();
32 
34  virtual bool loadTemplates(const DtFilename& filename, bool sendUpdate = true);
35 
37  virtual const DtRwSpawnDataList* spawnTemplates() const;
38 
39  virtual DtRwSpawnData* findSpawnDataByUUID(const DtUUID& uuid);
40 
41  virtual void updateSpawnSinkTemplates(
42  const DtRwSpawnDataList& spawnDataList);
43 
44  //****************************************************************************
46  //****************************************************************************
51  static void preScenarioLoadCallback(DtScenario& scenario,
52  void* usrData);
53 
56  static void preScenarioRewindCallback(void* usrData);
57 
59  static void preScenarioImportCallback(DtScenario& scenario,
60  void* usrData);
61  virtual void preScenarioImport(DtScenario& scenario);
62 
64  static void postScenarioImportCallback(const DtScenario& scenario,
65  void* usrData);
66  virtual void postScenarioImport(const DtScenario& scenario);
67 
68  virtual DtUUID uuidForTemplateName(const DtString& templateName) const;
69 
71  virtual bool addSpawnPoint(const DtUUID& templateUuid, const DtUUID& spawnPointUuid);
72 
73  virtual void removeSpawnPoint(const DtUUID& templateUuid, const DtUUID& spawnPointUuid);
74 
80  virtual void resetManagerTemplates(const DtRwSpawnDataList& templates, const DtFilename& templateFilename, bool sendUpdates = true);
81 
82  virtual void clearTemplates();
83 
84 //****************************************************************************
86 //****************************************************************************
90  static void requestSpawnListCallback(DtSimMessage* msg, void* usr);
91  virtual void processRequestSpawnList(DtSimMessage* msg);
93 
98  static void spawnTemplateListCallback(DtSimMessage* msg, void* usr);
99  virtual void preocesSpawnTemplateList(DtSimMessage* msg);
101 
105  virtual void sendSpawnListMessage(const DtSimulationAddress& recipient,
106  bool initialSend = false);
107 
111  static void addSinkPointCallback(DtSimMessage* msg, void* usr);
112  virtual void processAddSinkPoint(DtSimMessage* msg);
114 
117  static void requestSpawnDataCallback(DtSimMessage* msg, void* usr);
118  virtual void processRequestSpawnData(DtSimMessage* msg);
120 
123  static void updateSpawnTemplateCallback(DtSimMessage* msg, void* usr);
124  virtual void processUpdateSpawnTemplate(DtSimMessage* msg);
126 
129  static void createTemplateCallback(DtSimMessage* msg, void* usr);
130  virtual void processCreateTemplate(DtSimMessage* msg);
132 
135  static void deleteSpawnTemplateCallback(DtSimMessage* msg, void* usr);
136  virtual void processDeleteSpawnTemplate(DtSimMessage* msg);
138 
144  static void objectRemovedCallback(const DtVrfObject *object, void *usr);
145  virtual void processObjectRemoved(const DtVrfObject *object);
147 
151  static void addSpawnPointCallback(const DtVrfObject *object, void *usr);
152  virtual void processAddSpawnPoint(const DtVrfObject *object);
154 
158  static void addSinkPointCallback(const DtVrfObject *object, void *usr);
159  virtual void processAddSinkPoint(const DtVrfObject *object);
161 
162  virtual void renameSpawnPoint(DtVrfObject *spawnEntity, const DtString& oldTemplateName,
163  const DtString& newTemplateName);
164  virtual void renameSinkPoint(DtVrfObject *spawnEntity, const DtString& oldTemplateName,
165  const DtString& newTemplateName);
166 
167  virtual void removeSpawnTemplateAsParentOfSinkPoint(const DtUUID& templateUUID, const DtUUID& sinkPoint);
168  virtual void addSpawnTemplateAsParentOfSinkPoint(const DtUUID& templateUUID, const DtUUID& sinkPoint);
169 
170  virtual void upgradeTemplates(const DtRwSpawnDataList& templates, bool andRename = false);
171  virtual void removeNameMappings(const DtRwSpawnDataList& templates);
172  virtual void resolveUnmatchedSpawnPoints();
173 
174  virtual const DtRwSpawnDataList& templates();
175 
176  typedef void (*DtClearTemplateUUIDFunction)(void* userData);
177  typedef void (*DtRefreshSpawnDataFunction)(void* userData);
178 
179  virtual void addClearTemplateUUIDEntry(
180  DtClearTemplateUUIDFunction fcn, void* userData);
181  virtual void removeClearTemplateUUIDEntry(
182  DtClearTemplateUUIDFunction fcn, void* userData);
183 
184  virtual void addRefreshSpawnDataEntry(
185  DtRefreshSpawnDataFunction fcn, void* userData);
186  virtual void removeRefreshSpawnDataEntry(
187  DtRefreshSpawnDataFunction fcn, void* userData);
188 
190  virtual DtUUID uuidBasedOnName(const DtList& templateList, const DtString&) const;
191 
192 protected:
194 
197 
200 
201  boost::unordered_map<DtRwSpawnData*, DtString> myCurrentUUIDsOnImport;
203 
204  typedef boost::unordered_map<DtUUID, DtUUID> PointByTemplate;
207 
208  typedef std::map<DtString, DtUUID> WaitingForSinkPoints;
210 
211  std::map<DtString, DtString> myNewSpawnNameToOldSpawnNameMap;
212 };
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
std::map< DtString, DtString > myNewSpawnNameToOldSpawnNameMap
Definition: spawnSinkManager.h:211
DtNoArgumentCallbackList myRefreshSpawnDataCallbackList
Definition: spawnSinkManager.h:199
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
Definition: rwSpawnDataList.h:25
Definition: scenario.h:52
DtSimManager * mySimManager
Definition: spawnSinkManager.h:193
Definition: spawnSinkManager.h:22
WaitingForSinkPoints myWaitingForSinkPoints
Definition: spawnSinkManager.h:209
DtRwSpawnDataList myTemplates
pointer to the sim manager
Definition: spawnSinkManager.h:195
bool myTemplatesModified
Definition: spawnSinkManager.h:202
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
Base library for data that is used to control how spawn points generate entities. ...
Definition: rwSpawnData.h:37
File: simMsg.h.
Definition: simMessage.h:35
boost::unordered_map< DtRwSpawnData *, DtString > myCurrentUUIDsOnImport
Definition: spawnSinkManager.h:201
This class works just as DtCalllbackTable, but manages callbacks that have no arguments, and therefore don&#39;t fit in the template defined by DtCallbackList.
Definition: noArgumentCallbackList.h:152
std::map< DtString, DtUUID > WaitingForSinkPoints
Definition: spawnSinkManager.h:208
PointByTemplate mySpawnPoints
Definition: spawnSinkManager.h:205
boost::unordered_map< DtUUID, DtUUID > PointByTemplate
Definition: spawnSinkManager.h:204
PointByTemplate mySinkPoints
Definition: spawnSinkManager.h:206
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtNoArgumentCallbackList myClearTemplatesCallbackList
Definition: spawnSinkManager.h:198
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:102
DtRwSpawnDataList myCurrentTemplates
Definition: spawnSinkManager.h:196

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)