Go to the documentation of this file.00001
00002
00003
00004
00005
00009
00010 #ifndef lgrDisSimOutput_H_
00011 #define lgrDisSimOutput_H_
00012
00013 #if DtDIS
00014
00015 #include "lgrSim.h"
00016 #include "lgrSimOutput.h"
00017 #include <map>
00018 #include "virtualConstructor.h"
00019
00020 #include <vl/objectId.h>
00021
00022 class DtEntityPublisher;
00023 class DtAggregatePublisher;
00024
00025 namespace MAKLogger
00026 {
00027
00028 class DtLgrDisSimulationManager;
00029 class DtLgrDisMessageIOInfo;
00030 class DtMessageIOInfo;
00031 class DtConstLgrDisMessage;
00032 class DtLgrPublisherInterface;
00033
00036 class DT_DLL_LGRSIM DtLgrDisSimOutput : public DtLgrSimOutput
00037 {
00038 public:
00039
00040 DT_VIRTUAL_CTR(DtLgrDisSimOutput,(DtLgrDisSimulationManager* manager))
00041 DT_VIRTUAL_BASE_CTR(DtLgrSimOutput,(DtLgrDisSimulationManager* manager))
00042
00043 virtual ~DtLgrDisSimOutput();
00044
00045 private:
00047 DtLgrDisSimOutput(const DtLgrDisSimOutput&);
00049 DtLgrDisSimOutput& operator=(const DtLgrDisSimOutput&);
00050 public:
00051
00052
00053 virtual DtLgrSimOutput::PacketSenderType packetSenderType(const DtPacket&) const;
00054
00056 virtual void disconnecting();
00057
00060 virtual void activateImplementation();
00061
00064 virtual void deactivateImplementation();
00065
00066 virtual const DtMessageIOInfo* info() const;
00067
00068 virtual void flush();
00069
00070 virtual void setOutputScaling(double scaling, bool enableStatic);
00071
00073 virtual void filterMessage(DtPacket* packet);
00074
00075 virtual void removeEntity(const DtString& name);
00076 virtual void removeEntity(DtPduKind kind, DtObjectId id);
00077 virtual void removeEntity(DtConstLgrDisMessage&);
00078
00079 protected:
00080 virtual void sendPacket(const DtPacket& packet);
00081
00082 virtual void parsePacket(const DtPacket& packet);
00083
00084 virtual void immediateSend(const DtPacket&) const;
00085 virtual void retainedSend(const DtPacket&);
00086
00087 virtual void updateEntity(DtConstLgrDisMessage&);
00088
00089 virtual void rescalePublishers(double oldScale,double newScale,
00090 bool wasStatic, bool isStatic);
00091
00092 typedef std::pair<DtPduKind,DtObjectId> UniqueObjectId;
00093
00094 typedef std::map<UniqueObjectId,DtLgrPublisherInterface*> ObjectPublisherMap;
00095
00096 DtLgrDisSimulationManager* myManager;
00097
00098 ObjectPublisherMap myObjectPublisherMap;
00099
00101 DtLgrDisMessageIOInfo* myMessageInfo;
00102
00104 double myOutputScaling;
00105
00107 bool myOutputStatic;
00108
00110 mutable int mySendCount;
00111 };
00112
00113 }
00114
00115 #endif
00116 #endif