VR-Forces 4.10 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 class DtEvent;
31 
46 {
47 private:
54 
55 public:
62  static DtVrfObjectCommunicationInterface* create(DtVrfObject* vrfObject);
63 
64 protected:
68  virtual bool init();
69 
70 public:
74  virtual void createRadiosFromDescriptorList();
77  virtual void createRadiosFromDescriptorList(const DtRadioDescriptorList& descList);
78 
83  virtual void sendSimInternalMessage(DtVrfObjectMessage* message);
84 
90 
91  virtual bool sendRadioMessage(const DtString& radioName, DtVrfObjectMessage* message);
96  virtual bool sendRadioMessage(int radioId, DtVrfObjectMessage* message);
99  virtual bool sendRadioMessage(DtVrfObjectMessage* message);
101 
105  virtual DtVrfRadio* lookupRadio(int radioId);
106  virtual const DtVrfRadio* lookupRadio(int radioId) const;
107 
110  virtual DtVrfRadio* lookupRadio(const DtString& radioName);
111  virtual const DtVrfRadio* lookupRadio(const DtString& radioName) const;
112 
115  virtual DtVrfRadio* defaultRadio();
116  virtual const DtVrfRadio* defaultRadio() const;
117 
122  DtSimInternalCommunicationInterface* simInternalCommunicationInterface();
123 
127 
128  virtual void addMessageCallback(DtVrfObjectMessageCallbackFcn fcn, void* usr) const;
129  virtual void removeMessageCallback(DtVrfObjectMessageCallbackFcn fcn, void* usr) const;
131 
135 
136  template<typename messageType>
137  void addMessageCallback(const messageType& type, DtVrfObjectMessageCallbackFcn fcn, void* usr) const
138  {
139  myMessageExecutive.addMessageCallback(type, fcn, usr);
140  }
141 
142  template<typename messageType>
143  void removeMessageCallback(const messageType& type, DtVrfObjectMessageCallbackFcn fcn, void* usr) const
144  {
145  myMessageExecutive.removeMessageCallback(type, fcn, usr);
146  }
148 
149 
155 
156  virtual void addMessageCallbackByCategory(int category, DtVrfObjectMessageCallbackFcn fcn, void* usr) const;
157  virtual void removeMessageCallbackByCategory(int category, DtVrfObjectMessageCallbackFcn fcn, void* usr) const;
159 
160 #ifdef DtHLA
161 
163  virtual void sendInfluence(const DtInfluenceInteractionExtension& influence);
164  virtual void sendInfluence(const DtInfluenceInteraction& influence);
165 
168 
169  virtual void addInfluenceCallback(DtInfluenceInterExtensionCb fcn, void* usr);
170  virtual void removeInfluenceCallback(DtInfluenceInterExtensionCb fcn, void* usr);
172 #endif
173 
176  virtual void tick();
177 
178 protected:
179 
182 
183  static void vrfObjectMessageCallback(const DtVrfObjectMessage* msg, void* usr);
184  virtual void processVrfObjectMessage(const DtVrfObjectMessage* msg);
186 
187 #ifdef DtHLA
188 
190  virtual void influenceInteractionEventExtension(const DtEvent&);
191  virtual void processInfluence(DtInfluenceInteractionExtension* msg);
193 #endif
194 
195 protected:
199 
200  typedef std::map<DtSymbolString, DtVrfRadio*> DtRadioMap;
203 
204 #if DtHLA
206  {
207  DtInfluenceCbInfo(DtInfluenceInterExtensionCb c, void* u) : cb(c), usr(u) {}
208  bool operator<(const DtInfluenceCbInfo& rhs) const
209  {
210  return cb < rhs.cb || (cb == rhs.cb && usr < rhs.usr);
211  }
212 
214  void* usr;
215  };
216 
217  std::set<DtInfluenceCbInfo> myInfluenceCbs;
218 #endif
219 };
220 
DtSimInternalCommunicationInterface * mySimInternalInterface
Definition: vrfObjectCommunicationInterface.h:198
Definition: vrfObjectCommunicationInterface.h:205
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
DtVrfObjectMessageExecutive myMessageExecutive
Definition: vrfObjectCommunicationInterface.h:197
The handler for all SimInternal messages that are sent to and from a specified DtVrfObject.
Definition: simInternalCommunicationInterface.h:29
DtRadioMap myRadios
Definition: vrfObjectCommunicationInterface.h:201
DtInfluenceInterExtensionCb cb
Definition: vrfObjectCommunicationInterface.h:213
void removeMessageCallback(const messageType &type, DtVrfObjectMessageCallbackFcn fcn, void *usr) const
Definition: vrfObjectCommunicationInterface.h:143
DtInfluenceCbInfo(DtInfluenceInterExtensionCb c, void *u)
Definition: vrfObjectCommunicationInterface.h:207
bool operator<(const DtInfluenceCbInfo &rhs) const
Definition: vrfObjectCommunicationInterface.h:208
std::set< DtInfluenceCbInfo > myInfluenceCbs
Definition: vrfObjectCommunicationInterface.h:217
std::map< DtSymbolString, DtVrfRadio * > DtRadioMap
Definition: vrfObjectCommunicationInterface.h:200
void addMessageCallback(const messageType &type, DtVrfObjectMessageCallbackFcn fcn, void *usr) const
Callback which is called when a specific type of object message is processed.
Definition: vrfObjectCommunicationInterface.h:137
Callback manager for DtVrfObjectMessage receipt.
Definition: vrfObjectMessageExecutive.h:26
void * usr
Definition: vrfObjectCommunicationInterface.h:214
List of DtRadioDescriptor subclasses that can be read from a RW type file.
Definition: radioDescriptorList.h:27
Definition: events.h:49
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
void(* DtInfluenceInterExtensionCb)(DtInfluenceInteractionExtension *inter, void *usr)
DtInfluenceInteractionExtension callback function signature.
Definition: influenceInteractionExtension.h:23
File: simMsg.h.
Definition: simMessage.h:35
The base class for all messages to/from a specific DtVrfObject.
Definition: vrfObjectMessage.h:30
void(* DtVrfObjectMessageCallbackFcn)(const DtVrfObjectMessage *msg, void *usr)
This class is a convenience object for callback functions on DtVrfObjectMessages particularly those d...
Definition: vrfObjectMessageTypeCallbackMap.h:29
DtVrfRadio * myDefaultRadio
Definition: vrfObjectCommunicationInterface.h:202
The central class of a DtVrfObject for all communications to and from the object. ...
Definition: vrfObjectCommunicationInterface.h:45
Instances of DtInfluenceInter are used to store state data for Influence interactions.
Definition: influenceInteractionHLA.h:27
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
Contains Extended DI-Guy Object net types.
Instances of DtInfluenceInteractionExtension are used to store state data for Influence interactions ...
Definition: influenceInteractionExtension.h:29
Base class for any radios on VrfObjects.
Definition: vrfRadio.h:43
DtVrfObject * myVrfObject
Definition: vrfObjectCommunicationInterface.h:196

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)