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) 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 
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 
91  const DtEntityType& type, DtExerciseConn* conn,
92 #if DtHLA
93  const DtGlobalObjectDesignator& glId = DtGlobalObjectDesignator::nullId(),
94 #endif
95  const DtEntityIdentifier& entId = DtEntityIdentifier::nullId(),
96  const DtRwProperties& stateProps = DtRwProperties::emptyProperties(),
97  const DtRwProperties& paramProps = DtRwProperties::emptyProperties());
98 
100  virtual ~DtVrfEntityPublisher();
101 
110  virtual bool tick(
111 #ifdef DtHLA
112  bool& extAttrPublisherTick
113 #endif
114  );
115 
119  virtual DtExtEntityStateRepository* entityProcessStateRep();
120  virtual DtExtEntityStateRepository* entityStateRep();
121  virtual DtExtEntityStateRepository* ensr();
123 
124 #ifdef DtHLA
125  virtual DtEntPublisherDecoder* decoder();
128 
131  virtual DtEntPublisherEncoder* encoder();
132 #endif
133 
135  virtual void setPublishesDiGuyInfo(bool has);
136 
138  virtual bool publishesDiGuyInfo();
139 
140 #ifdef DtDIS
141  virtual void setSendDiGuyPdus(bool yesNo);
144 
147  virtual bool sendDiGuyPdus() const;
148 
150  virtual void createAndSendDiGuyPdus();
151 #endif
152 
155  {
156  return myPublisher->sr();
157  }
158 
159 #if DtHLA
160  const DtString& name() const
161  {
162  return myPublisher->name();
163  }
164 #endif
165 
167  virtual const DtObjectId& id() const;
168 
170  virtual const DtObjectId& localId() const;
171 
173  virtual const DtGlobalObjectDesignator& globalId() const;
174 
177  virtual void forceUpdate();
178 
180  virtual bool sendVrfObjectData();
181 
183  virtual DtEntityPublisher* entityPublisher();
184 
187  virtual void setSendVrfObjectDataRecord(bool shouldSend);
188 
190  static void setInitializer(DtExtendedAttributesInitializerPtr init);
191 
193  static DtExtendedAttributesInitializerPtr initializer();
194 
195 #if DtHLA
196  static void setObjectClassChooser(DtObjectClassChooserPtr chooser);
198 
200  static DtObjectClassChooserPtr objectClassChooser();
201 #endif
202 
208  static void setVrfDataTimeThreshold(DtTime time);
209  static DtTime vrfDataTimeThreshold();
211 
212 private:
213 
216 
218  DtVrfEntityPublisher& operator=(const DtVrfEntityPublisher&);
219 
220 protected:
221 
227 
229  void initialize(const DtEntityType& type, DtExerciseConn* conn,
230 #if DtHLA
231  const DtGlobalObjectDesignator& glId,
232 #endif
233  const DtEntityIdentifier& entId);
234 
236  virtual bool sendVrfDataUpdate();
237 
241  virtual bool needsVrfObjectDataUpdate();
242 
248  virtual bool sendMessage(const DtSimulationAddress& receiver,
249  DtSimInterfaceContent* message);
251  virtual bool setContentForNet(DtDataInteraction* dataInter,
252  DtSimInterfaceContent* content) const;
254  virtual void sendMessageInteraction(const DtSimulationAddress& receiver,
255  DtDataInteraction& data);
257 
260  static void dataInteractionCallback(DtDataInteraction* i, void* usr);
261 
264  virtual void processSendVrfObjectDataMessage(DtDataInteraction* interaction);
265 
266 public:
267 
269  virtual void processDataInteraction(DtDataInteraction* i);
270 
271 protected:
272 
273  DtEntityPublisher* myPublisher;
274 
275  // For heartbeating for DtIfVrfObjectData messages
278  bool myPublishesDIGuyInfo; // true if there is DI-Guy info to be published
279 
280  static bool myDiGuyEncodersSetup;
281 
282 #if DtHLA
284 
286 #endif
287 
289 };
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:276
bool myPublishesDIGuyInfo
Definition: vrfEntityPublisher.h:278
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:285
static DtTime theVrfDataTimeThreshold
Definition: vrfEntityPublisher.h:277
makVrfVrlinkExtToolkit::DtExtendedAttributesObjectPublisher * myExtAttrPublisher
Definition: vrfEntityPublisher.h:283
DtEntityPublisher * myPublisher
Definition: vrfEntityPublisher.h:273
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
static DtExtendedAttributesInitializerPtr theInitializer
Definition: vrfEntityPublisher.h:288
DtBoost::shared_ptr< DtExtendedAttributesInitializer > DtExtendedAttributesInitializerPtr
Definition: extendedAttributesInitializer.h:158
DtStateRepository * sr()
VRL support for common functions.
Definition: vrfEntityPublisher.h:154
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:160
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:280
DtEntityStateEncoder DtEntPublisherEncoder
Definition: vrfEntityPublisher.h:24
#define DT_DLL_vrfExtObjects
Definition: dllExport.h:23

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)