VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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
21 #endif
22 
23 class DtVrfObject;
24 class DtSimMessage;
27 class DtVrfRadio;
29 
44 {
45 private:
52 
53 public:
60  static DtVrfObjectCommunicationInterface* create(DtVrfObject* vrfObject);
61 
62 protected:
66  virtual bool init();
67 
68 public:
72  virtual void createRadiosFromDescriptorList();
75  virtual void createRadiosFromDescriptorList(const DtRadioDescriptorList& descList);
76 
81  virtual void sendSimInternalMessage(DtVrfObjectMessage* message);
82 
88 
89 
90  virtual bool sendRadioMessage(const DtString& radioName, DtVrfObjectMessage* message);
94  virtual bool sendRadioMessage(int radioId, DtVrfObjectMessage* message);
97  virtual bool sendRadioMessage(DtVrfObjectMessage* message);
99 
103  virtual DtVrfRadio* lookupRadio(int radioId);
106  virtual DtVrfRadio* lookupRadio(const DtString& radioName);
109  virtual DtVrfRadio* defaultRadio();
110 
115  DtSimInternalCommunicationInterface* simInternalCommunicationInterface();
116 
120 
121  virtual void addMessageCallback(DtVrfObjectMessageCallbackFcn fcn, void* usr);
122  virtual void removeMessageCallback(DtVrfObjectMessageCallbackFcn fcn, void* usr);
124 
128 
129  template<typename messageType>
130  void addMessageCallback(const messageType& type, DtVrfObjectMessageCallbackFcn fcn, void* usr)
131  {
132  myMessageExecutive.addMessageCallback(type, fcn, usr);
133  }
134 
135  template<typename messageType>
136  void removeMessageCallback(const messageType& type, DtVrfObjectMessageCallbackFcn fcn, void* usr)
137  {
138  myMessageExecutive.removeMessageCallback(type, fcn, usr);
139  }
141 
142 
148 
149  virtual void addMessageCallbackByCategory(int category, DtVrfObjectMessageCallbackFcn fcn, void* usr);
150  virtual void removeMessageCallbackByCategory(int category, DtVrfObjectMessageCallbackFcn fcn, void* usr);
152 
153 #ifdef DtHLA
154 
156  virtual void sendInfluence(const DtInfluenceInteraction& influence);
157 
160 
161  virtual void addInfluenceCallback(DtInfluenceInterCb fcn, void* usr);
162  virtual void removeInfluenceCallback(DtInfluenceInterCb fcn, void* usr);
164 #endif
165 
168  virtual void tick();
169 
170 protected:
171 
174 
175  static void vrfObjectMessageCallback(const DtVrfObjectMessage* msg, void* usr);
176  virtual void processVrfObjectMessage(const DtVrfObjectMessage* msg);
178 
179 #ifdef DtHLA
180 
181 
182  static void influenceCallback(DtInfluenceInteraction* msg, void* usr);
183  virtual void processInfluence(DtInfluenceInteraction* msg);
185 #endif
186 
187 protected:
191 
192  typedef std::map<DtSymbolString, DtVrfRadio*> DtRadioMap;
195 
196 #if DtHLA
197  typedef struct DtInfluenceCbInfo
198  {
199  DtInfluenceCbInfo(DtInfluenceInterCb c, void* u) : cb(c), usr(u) {}
200  bool operator<(const DtInfluenceCbInfo& rhs) const
201  {
202  return cb < rhs.cb || (cb == rhs.cb && usr < rhs.usr);
203  }
204 
206  void* usr;
207  };
208 
209  std::set<DtInfluenceCbInfo> myInfluenceCbs;
210 #endif
211 };
212 

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)