VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfEntityPublisher.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2018 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
9 
10 #pragma once
11 
15 #include <vl/dataInteraction.h>
16 #include <vl/entityPublisher.h>
18 
19 #ifdef DtDIS
20 # include <vl/diGuyCustomPduEncoder.h>
21 #endif
22 
23 #ifdef DtDIS
24 typedef DtEntityStateEncoder DtEntPublisherEncoder;
25 typedef DtEntityStateDecoder DtEntPublisherDecoder;
26 #else // DtHLA
29 #endif
30 
32 class DtEntityType;
33 class DtBaseEntityStateRepository;
35 class DtSimulationAddress;
37 
38 namespace makVrfVrlinkExtToolkit
39 {
40  class DtExtendedAttributesObjectPublisher;
41 }
42 
58 {
59 
60 public:
61 
72  const DtEntityType& type, DtExerciseConn* conn,
73 #if DtHLA
74  const DtGlobalObjectDesignator& glId = DtGlobalObjectDesignator::nullId(),
75 #endif
76  const DtEntityIdentifier& entId = DtEntityIdentifier::nullId(),
77  DtRwProperties* stateProps = 0, DtRwProperties* paramProps = 0);
78 
88  const DtEntityType& type, DtExerciseConn* conn,
89 #if DtHLA
90  const DtGlobalObjectDesignator& glId = DtGlobalObjectDesignator::nullId(),
91 #endif
92  const DtEntityIdentifier& entId = DtEntityIdentifier::nullId(),
93  const DtRwProperties& stateProps = DtRwProperties::emptyProperties(),
94  const DtRwProperties& paramProps = DtRwProperties::emptyProperties());
95 
97  virtual ~DtVrfEntityPublisher();
98 
104  virtual void tick();
105 
109  virtual DtExtEntityStateRepository* entityProcessStateRep();
110  virtual DtExtEntityStateRepository* entityStateRep();
111  virtual DtExtEntityStateRepository* ensr();
113 
114 #ifdef DtHLA
115  virtual DtEntPublisherDecoder* decoder();
118 
121  virtual DtEntPublisherEncoder* encoder();
122 #endif
123 
125  virtual void setPublishesDiGuyInfo(bool has);
126 
128  virtual bool publishesDiGuyInfo();
129 
130 #ifdef DtDIS
131  virtual void setSendDiGuyPdus(bool yesNo);
134 
137  virtual bool sendDiGuyPdus() const;
138 
140  virtual void createAndSendDiGuyPdus();
141 #endif
142 
145  {
146  return myPublisher->sr();
147  }
148 
149 #if DtHLA
150  const DtString& name() const
151  {
152  return myPublisher->name();
153  }
154 #endif
155 
157  virtual const DtObjectId& id() const;
158 
160  virtual const DtObjectId& localId() const;
161 
163  virtual const DtGlobalObjectDesignator& globalId() const;
164 
167  virtual void forceUpdate();
168 
170  virtual bool sendVrfObjectData();
171 
173  virtual DtEntityPublisher* entityPublisher();
174 
177  virtual void setSendVrfObjectDataRecord(bool shouldSend);
178 
180  static void setInitializer(DtExtendedAttributesInitializerPtr init);
181 
183  static DtExtendedAttributesInitializerPtr initializer();
184 
185 #if DtHLA
186  static void setObjectClassChooser(DtObjectClassChooserPtr chooser);
188 
190  static DtObjectClassChooserPtr objectClassChooser();
191 #endif
192 
198  static void setVrfDataTimeThreshold(DtTime time);
199  static DtTime vrfDataTimeThreshold();
201 
202 private:
203 
206 
208  DtVrfEntityPublisher& operator=(const DtVrfEntityPublisher&);
209 
210 protected:
211 
217 
219  void initialize(const DtEntityType& type, DtExerciseConn* conn,
220 #if DtHLA
221  const DtGlobalObjectDesignator& glId,
222 #endif
223  const DtEntityIdentifier& entId);
224 
226  virtual bool sendVrfDataUpdate();
227 
231  virtual bool needsVrfObjectDataUpdate();
232 
238  virtual bool sendMessage(const DtSimulationAddress& receiver,
239  DtSimInterfaceContent* message);
241  virtual bool setContentForNet(DtDataInteraction* dataInter,
242  DtSimInterfaceContent* content) const;
244  virtual void sendMessageInteraction(const DtSimulationAddress& receiver,
245  DtDataInteraction& data);
247 
250  static void dataInteractionCallback(DtDataInteraction* i, void* usr);
251 
254  virtual void processSendVrfObjectDataMessage(DtDataInteraction* interaction);
255 
256 public:
257 
259  virtual void processDataInteraction(DtDataInteraction* i);
260 
261 protected:
262 
263  DtEntityPublisher* myPublisher;
264 
265  // For heartbeating for DtIfVrfObjectData messages
268  bool myPublishesDIGuyInfo; // true if there is DI-Guy info to be published
269 
270  static bool myDiGuyEncodersSetup;
271 
272 #if DtHLA
274 
276 #endif
277 
279 };
This class will wrap a VR-Link DtEntityPublisher to allow for easier creation of a publisher that is ...
Definition: vrfEntityPublisher.h:57
DtEntityStateDecoder DtEntPublisherDecoder
Definition: vrfEntityPublisher.h:25
DtTime myTimeLastVrfDataSend
Definition: vrfEntityPublisher.h:266
bool myPublishesDIGuyInfo
Definition: vrfEntityPublisher.h:268
static const DtRwProperties & emptyProperties()
Contains the DtVrfObjectIdGenerator class declaration.
DtExtEntityStateRepository class extends the DtExtEntityBaseStateRepository to be able to handle exte...
Definition: extEntityStateRepository.h:25
static DtObjectClassChooserPtr theObjectClassChooser
Definition: vrfEntityPublisher.h:275
static DtTime theVrfDataTimeThreshold
Definition: vrfEntityPublisher.h:267
makVrfVrlinkExtToolkit::DtExtendedAttributesObjectPublisher * myExtAttrPublisher
Definition: vrfEntityPublisher.h:273
DtEntityPublisher * myPublisher
Definition: vrfEntityPublisher.h:263
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
static DtExtendedAttributesInitializerPtr theInitializer
Definition: vrfEntityPublisher.h:278
DtBoost::shared_ptr< DtExtendedAttributesInitializer > DtExtendedAttributesInitializerPtr
Definition: extendedAttributesInitializer.h:147
DtStateRepository * sr()
VRL support for common functions.
Definition: vrfEntityPublisher.h:144
A list of properties. A DtPropertyInterface object that is a specialized version of DtRwVariableBindi...
Definition: rwProperties.h:126
Definition: simInterfaceContent.h:45
const DtString & name() const
Definition: vrfEntityPublisher.h:150
This class is used to choose the object class to publish. By default it uses the classes configured i...
Definition: objectClassChooser.h:20
DtBoost::shared_ptr< DtObjectClassChooser > DtObjectClassChooserPtr
Definition: vrfObjectClassChooser.h:46
static bool myDiGuyEncodersSetup
Definition: vrfEntityPublisher.h:270
DtEntityStateEncoder DtEntPublisherEncoder
Definition: vrfEntityPublisher.h:24
#define DT_DLL_vrfExtObjects
Definition: dllExport.h:23

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)