VR-Forces 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) 2025 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 
61 {
62 
63 public:
64 
75  const DtEntityType& type, DtExerciseConn* conn,
76 #if DtHLA
77  const DtGlobalObjectDesignator& glId = DtGlobalObjectDesignator::nullId(),
78 #endif
79  const DtEntityIdentifier& entId = DtEntityIdentifier::nullId(),
80  DtRwProperties* stateProps = 0, DtRwProperties* paramProps = 0);
81 
85 #if DtHLA
86  DtHlaObjectWithStateRep* obj,
87  DtHlaObjectWithStateRep* extendedAttribute,
88 #else
90 #endif
91  DtExerciseConn* conn,
92  DtRwProperties* stateProps = 0, DtRwProperties* paramProps = 0);
93 
103  const DtEntityType& type, DtExerciseConn* conn,
104 #if DtHLA
105  const DtGlobalObjectDesignator& glId = DtGlobalObjectDesignator::nullId(),
106 #endif
107  const DtEntityIdentifier& entId = DtEntityIdentifier::nullId(),
108  const DtRwProperties& stateProps = DtRwProperties::emptyProperties(),
109  const DtRwProperties& paramProps = DtRwProperties::emptyProperties());
110 
112  virtual ~DtVrfEntityPublisher();
113 
122  virtual bool tick(
123 #ifdef DtHLA
124  bool& extAttrPublisherTick
125 #endif
126  );
127 
131  virtual DtExtEntityStateRepository* entityProcessStateRep();
132  virtual DtExtEntityStateRepository* entityStateRep();
133  virtual DtExtEntityStateRepository* ensr();
135 
136 #if DtHLA
138  {
139  return myExtAttrPublisher;
140  }
141 #endif
142 
143 #ifdef DtHLA
144  virtual DtEntPublisherDecoder* decoder();
147 
150  virtual DtEntPublisherEncoder* encoder();
151 #endif
152 
154  virtual void setPublishesDiGuyInfo(bool has);
155 
157  virtual bool publishesDiGuyInfo();
158 
159 #ifdef DtDIS
160  virtual void setSendDiGuyPdus(bool yesNo);
163 
166  virtual bool sendDiGuyPdus() const;
167 
169  virtual void createAndSendDiGuyPdus();
170 #endif
171 
174  {
175  return myPublisher->sr();
176  }
177 
178 #if DtHLA
179  const DtString& name() const
180  {
181  return myPublisher->name();
182  }
183 #endif
184 
186  virtual const DtObjectId& id() const;
187 
189  virtual const DtObjectId& localId() const;
190 
192  virtual const DtGlobalObjectDesignator& globalId() const;
193 
196  virtual void forceUpdate();
197 
199  virtual bool sendVrfObjectData();
200 
202  virtual DtEntityPublisher* entityPublisher();
203 
206  virtual void setSendVrfObjectDataRecord(bool shouldSend);
207 
209  static void setInitializer(DtExtendedAttributesInitializerPtr init);
210 
212  static DtExtendedAttributesInitializerPtr initializer();
213 
214 #if DtHLA
215  static void setObjectClassChooser(DtObjectClassChooserPtr chooser);
217 
219  static DtObjectClassChooserPtr objectClassChooser();
220 #endif
221 
227  static void setVrfDataTimeThreshold(DtTime time);
228  static DtTime vrfDataTimeThreshold();
230 
231 private:
232 
235 
237  DtVrfEntityPublisher& operator=(const DtVrfEntityPublisher&);
238 
239 protected:
240 
246 
248  void initialize(const DtEntityType& type, DtExerciseConn* conn,
249 #if DtHLA
250  const DtGlobalObjectDesignator& glId,
251 #endif
252  const DtEntityIdentifier& entId);
254  void initialize(
255 #if DtHLA
256  DtHlaObjectWithStateRep* obj,
257 #else
259 #endif
260  DtExerciseConn* conn);
261 
263  virtual bool sendVrfDataUpdate();
264 
268  virtual bool needsVrfObjectDataUpdate();
269 
275  virtual bool sendMessage(const DtSimulationAddress& receiver,
276  DtSimInterfaceContent* message);
278  virtual bool setContentForNet(DtDataInteraction* dataInter,
279  DtSimInterfaceContent* content) const;
281  virtual void sendMessageInteraction(const DtSimulationAddress& receiver,
282  DtDataInteraction& data);
284 
287  static void dataInteractionCallback(DtDataInteraction* i, void* usr);
288 
291  virtual void processSendVrfObjectDataMessage(DtDataInteraction* interaction);
292 
293 public:
294 
296  virtual void processDataInteraction(DtDataInteraction* i);
297 
298 protected:
299 
300  DtEntityPublisher* myPublisher;
301 
302  // For heartbeating for DtIfVrfObjectData messages
305  bool myPublishesDIGuyInfo; // true if there is DI-Guy info to be published
306 
307  static bool myDiGuyEncodersSetup;
308 
309 #if DtHLA
311 
313 #endif
314 
316 };
This class will wrap a VR-Link DtEntityPublisher to allow for easier creation of a publisher that is ...
Definition: vrfEntityPublisher.h:60
DtEntityStateDecoder DtEntPublisherDecoder
Definition: vrfEntityPublisher.h:25
DtTime myTimeLastVrfDataSend
Definition: vrfEntityPublisher.h:303
bool myPublishesDIGuyInfo
Definition: vrfEntityPublisher.h:305
makVrfVrlinkExtToolkit::DtExtendedAttributesObjectPublisher * extendedAttributesPublisher() const
Definition: vrfEntityPublisher.h:137
static const DtRwProperties & emptyProperties()
Contains the DtVrfObjectIdGenerator class declaration.
std::shared_ptr< DtObjectClassChooser > DtObjectClassChooserPtr
Definition: objectClassChooser.h:49
DtExtEntityStateRepository class extends the DtExtEntityBaseStateRepository to be able to handle exte...
Definition: extEntityStateRepository.h:25
static DtObjectClassChooserPtr theObjectClassChooser
Definition: vrfEntityPublisher.h:312
static DtTime theVrfDataTimeThreshold
Definition: vrfEntityPublisher.h:304
makVrfVrlinkExtToolkit::DtExtendedAttributesObjectPublisher * myExtAttrPublisher
Definition: vrfEntityPublisher.h:310
DtEntityPublisher * myPublisher
Definition: vrfEntityPublisher.h:300
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
static DtExtendedAttributesInitializerPtr theInitializer
Definition: vrfEntityPublisher.h:315
std::shared_ptr< DtExtendedAttributesInitializer > DtExtendedAttributesInitializerPtr
Definition: extendedAttributesInitializer.h:162
DtStateRepository * sr()
VRL support for common functions.
Definition: vrfEntityPublisher.h:173
A list of properties. A DtPropertyInterface object that is a specialized version of DtRwVariableBindi...
Definition: rwProperties.h:122
Definition: simInterfaceContent.h:45
const DtString & name() const
Definition: vrfEntityPublisher.h:179
This class is used to choose the object class to publish. By default it uses the classes configured i...
Definition: objectClassChooser.h:20
static bool myDiGuyEncodersSetup
Definition: vrfEntityPublisher.h:307
DtEntityStateEncoder DtEntPublisherEncoder
Definition: vrfEntityPublisher.h:24
#define DT_DLL_vrfExtObjects
Definition: dllExport.h:23

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)