Go to the documentation of this file.00001
00002
00003
00004
00005
00009
00010
00011 #ifndef hlaSimOutput_H_
00012 #define hlaSimOutput_H_
00013
00014 #if DtHLA
00015
00016 #include "lgrSim.h"
00017 #include "lgrSimOutput.h"
00018 #include "lgrHlaAttribute.h"
00019 #include "virtualConstructor.h"
00020 #include "hlaMessageFactory.h"
00021
00022 #include <map>
00023
00024 #include <vl/region.h>
00025
00026 class DtInteractionFactory;
00027 class DtBaseEntityStateRepository;
00028
00029
00030 namespace MAKLogger
00031 {
00032
00033 class DtLgrHlaSimulationManager;
00034 class DtLgrPublisherInterface;
00035 class DtLgrHlaMessageIOInfo;
00036 class DtMessageIOInfo;
00037 class DtLgrOnlineFomDesc;
00038 class DtConstLgrHlaMessage;
00039
00043 class DT_DLL_LGRSIM DtLgrHlaSimOutput : public DtLgrSimOutput
00044 {
00045 public:
00046
00047 DT_VIRTUAL_CTR(DtLgrHlaSimOutput, (DtLgrHlaSimulationManager& manager))
00048
00049 virtual ~DtLgrHlaSimOutput();
00050
00051 virtual DtLgrSimOutput::PacketSenderType packetSenderType(const DtPacket&) const;
00052
00054 virtual void disconnecting();
00055
00056 virtual void activateImplementation();
00057 virtual void deactivateImplementation();
00058
00060 virtual void flush();
00061
00062 virtual const DtMessageIOInfo* info() const;
00063
00065 virtual void setOutputScaling(double scaling, bool enableStatic);
00066
00068 virtual void filterMessage(DtPacket* packet);
00069
00071 virtual void removeEntity(const DtLgrHlaHandle handle);
00072
00075 virtual unsigned int getInteractionConveyedRegionSet(const DtConstLgrHlaMessage& info, DtDDMRegionSet& regionSet);
00076
00079 virtual unsigned int getInteractionRegionSetFromData(const DtConstLgrHlaMessage& info,
00080 const DtInteraction* interaction, DtDDMRegionSet& regionSet);
00081
00084 virtual unsigned int getInteractionRegionSet(const DtConstLgrHlaMessage& info,
00085 DtInteraction* interaction, DtDDMRegionSet& regionSet);
00086
00092 virtual bool getPublisherRegionSetFromData(const DtPacket& info,
00093 DtDDMRegionSet& regionSet);
00094
00097 virtual unsigned int getObjectConveyedRegionSet(const DtConstLgrHlaMessage& info, DtDDMRegionSet& regionSet);
00098
00100
00101
00102
00103
00104 bool cacheInteractionRegionsEnabled() const;
00105 void setCacheInteractionRegionsEnabled(bool val);
00107
00109
00110
00111 bool cacheObjectRegionsEnabled() const;
00112 void setCacheObjectRegionsEnabled(bool val);
00114
00115 public:
00119 static void encodeIsPartOf_RPR_20014( const DtBaseEntityStateRepository& stateRep,
00120 RTI::AttributeHandleValuePairSet* pAvList,
00121 RTI::AttributeHandle attrHandle );
00122
00123 protected:
00124
00126 const DtLgrOnlineFomDesc& fom() const;
00127
00129 virtual void immediateSend(const DtPacket&) const;
00130
00132 virtual void sendInteractionWithRegion(const DtInteraction& interaction, const DtDDMRegionSet& regionSet) const;
00133
00135 virtual void retainedSend(const DtPacket&);
00136
00138 virtual void updateEntity(const DtPacket&);
00139
00141 virtual void removeEntity(const DtPacket&);
00142
00144 virtual void tick();
00145
00147 virtual DtLgrPublisherInterface* createPublisher(const DtPacket& info);
00148
00151 virtual DtLgrPublisherInterface* doPublish(RTI::ObjectClassHandle classHandle,
00152 const char* objName, const DtDDMRegionSet* regionSetToUse, bool silent);
00153
00155 virtual void printRegion(DtDDMRegionSP region) const;
00156
00158 typedef std::map<DtString,DtLgrHlaHandle> DtObjectNameMap;
00159 typedef std::map<DtLgrHlaHandle,DtLgrPublisherInterface*> DtObjectPublisherMap;
00160
00161 DtLgrHlaSimulationManager& myHlaManager;
00162 DtObjectNameMap myObjectNameMap;
00163 DtObjectPublisherMap myObjectPublisherMap;
00164 DtLgrHlaMessageIOInfo* myMessageInfo;
00165 double myPublisherScaling;
00166 bool myPublisherStatic;
00167 DtInteractionFactory* myFactory;
00168 DtIDRegionMap myRegionHandleMap;
00169 bool myCacheInteractionRegionsEnabled;
00170 bool myCacheObjectRegionsEnabled;
00171
00172 };
00173
00174 }
00175
00176 #endif
00177 #endif