VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfObjectCommunicationInterface.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2007 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 #pragma once
11 
15 #include <list>
16 #include <set>
17 #include <map>
18 
19 #if DtHLA
22 #endif
23 
24 class DtVrfObject;
25 class DtSimMessage;
28 class DtVrfRadio;
30 
45 {
46 private:
53 
54 public:
61  static DtVrfObjectCommunicationInterface* create(DtVrfObject* vrfObject);
62 
63 protected:
67  virtual bool init();
68 
69 public:
73  virtual void createRadiosFromDescriptorList();
76  virtual void createRadiosFromDescriptorList(const DtRadioDescriptorList& descList);
77 
82  virtual void sendSimInternalMessage(DtVrfObjectMessage* message);
83 
89 
90 
91  virtual bool sendRadioMessage(const DtString& radioName, DtVrfObjectMessage* message);
95  virtual bool sendRadioMessage(int radioId, DtVrfObjectMessage* message);
98  virtual bool sendRadioMessage(DtVrfObjectMessage* message);
100 
104  virtual DtVrfRadio* lookupRadio(int radioId);
107  virtual DtVrfRadio* lookupRadio(const DtString& radioName);
110  virtual DtVrfRadio* defaultRadio();
111 
116  DtSimInternalCommunicationInterface* simInternalCommunicationInterface();
117 
121 
122  virtual void addMessageCallback(DtVrfObjectMessageCallbackFcn fcn, void* usr);
123  virtual void removeMessageCallback(DtVrfObjectMessageCallbackFcn fcn, void* usr);
125 
129 
130  template<typename messageType>
131  void addMessageCallback(const messageType& type, DtVrfObjectMessageCallbackFcn fcn, void* usr)
132  {
133  myMessageExecutive.addMessageCallback(type, fcn, usr);
134  }
135 
136  template<typename messageType>
137  void removeMessageCallback(const messageType& type, DtVrfObjectMessageCallbackFcn fcn, void* usr)
138  {
139  myMessageExecutive.removeMessageCallback(type, fcn, usr);
140  }
142 
143 
149 
150  virtual void addMessageCallbackByCategory(int category, DtVrfObjectMessageCallbackFcn fcn, void* usr);
151  virtual void removeMessageCallbackByCategory(int category, DtVrfObjectMessageCallbackFcn fcn, void* usr);
153 
154 #ifdef DtHLA
155 
157  virtual void sendInfluence(const DtInfluenceInteraction& influence);
158 
161 
162  virtual void addInfluenceCallback(DtInfluenceInterExtensionCb fcn, void* usr);
163  virtual void removeInfluenceCallback(DtInfluenceInterExtensionCb fcn, void* usr);
165 #endif
166 
169  virtual void tick();
170 
171 protected:
172 
175 
176  static void vrfObjectMessageCallback(const DtVrfObjectMessage* msg, void* usr);
177  virtual void processVrfObjectMessage(const DtVrfObjectMessage* msg);
179 
180 #ifdef DtHLA
181 
182 
183  static void influenceCallback(DtInfluenceInteractionExtension* msg, void* usr);
184  virtual void processInfluence(DtInfluenceInteractionExtension* msg);
186 #endif
187 
188 protected:
192 
193  typedef std::map<DtSymbolString, DtVrfRadio*> DtRadioMap;
196 
197 #if DtHLA
198  typedef struct DtInfluenceCbInfo
199  {
200  DtInfluenceCbInfo(DtInfluenceInterExtensionCb c, void* u) : cb(c), usr(u) {}
201  bool operator<(const DtInfluenceCbInfo& rhs) const
202  {
203  return cb < rhs.cb || (cb == rhs.cb && usr < rhs.usr);
204  }
205 
207  void* usr;
208  };
209 
210  std::set<DtInfluenceCbInfo> myInfluenceCbs;
211 #endif
212 };
213 

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)