![]() |
VR-Link API Documentation for DIS
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00006 00007 #ifndef hResRecInter_H_ 00008 #define hResRecInter_H_ 00009 00010 #if DtHLA 00011 00012 #include "hIntWEncDec.h" 00013 #include "hostStructs.h" 00014 #include <matrix/vlMath.h> 00015 #include "packets/logisticsP.h" 00016 00017 00018 00022 00023 #define DtSUPPLY_VALID 1 00024 #define DtSUPPLY_BAD_INDEX 0 00025 00026 class DT_DLL_VL DtResupplyRecInteraction; 00027 class DT_DLL_VL DtExerciseConn; 00028 00029 00031 typedef void (*DtResupplyRecInteractionCb) 00032 (DtResupplyRecInteraction* inter, void* usr); 00033 00034 00039 00040 class DT_DLL_VL DtResupplyRecInteraction : public DtInteractionWithEncDec 00041 { 00042 public: 00043 00045 DtResupplyRecInteraction(); 00046 00048 virtual ~DtResupplyRecInteraction(); 00049 00051 DtResupplyRecInteraction(const DtResupplyRecInteraction& orig); 00052 00054 DtResupplyRecInteraction& operator=(const DtResupplyRecInteraction& orig); 00055 00057 virtual void printData() const; 00058 00060 virtual void printDataToStream(std::ostream& stream) const; 00061 00063 virtual void setReceivingId(const DtGlobalObjectDesignator &requester); 00064 virtual const DtGlobalObjectDesignator &receivingId() const; 00065 00067 virtual void setSupplyingId(const DtGlobalObjectDesignator &servicer); 00068 virtual const DtGlobalObjectDesignator &supplyingId() const; 00069 00071 virtual void setSupplies(const void* data, int numBytes); 00072 virtual const void* supplies() const; 00073 00075 virtual void setNumSupplyTypes(int numTypes); 00076 virtual int numSupplyTypes() const; 00077 00078 virtual void setNthSupply(int supplyIndex, const DtEntityType &supply, 00079 float quantity, int *retCode = NULL); 00080 virtual const DtEntityType &nthSupply(int supplyIndex, 00081 float *quantity = NULL, 00082 int *retCode = NULL) const; 00083 00084 virtual float supplyQuantity(const DtEntityType &supply) const; 00085 00086 virtual void changeSuppliesSize(int newSize); 00087 00088 virtual int indexInBounds(int ind) const; 00089 00091 virtual const char* name() const; 00092 00093 public: 00094 00097 static DtInteraction* create(); 00098 00101 static void addCallback(DtExerciseConn* conn, 00102 DtResupplyRecInteractionCb cb, void* usr, 00103 DtDDMRegionSP region = DtDDMRegionSP()); 00104 static void removeCallback(DtExerciseConn* conn, 00105 DtResupplyRecInteractionCb cb, void* usr, 00106 DtDDMRegionSP region = DtDDMRegionSP()); 00107 00108 protected: 00109 00110 DtGlobalObjectDesignator myReceivingObject; 00111 DtGlobalObjectDesignator mySupplyingObject; 00112 int myNumSupplyTypes; 00113 DtNetSupplyQuantity* mySupplies; 00114 DtEntityType myNthSupply; 00115 }; 00116 00117 inline const DtGlobalObjectDesignator& DtResupplyRecInteraction:: 00118 receivingId() const 00119 { 00120 return myReceivingObject; 00121 } 00122 00123 inline const DtGlobalObjectDesignator& DtResupplyRecInteraction:: 00124 supplyingId() const 00125 { 00126 return mySupplyingObject; 00127 } 00128 00129 inline void DtResupplyRecInteraction::setReceivingId( 00130 const DtGlobalObjectDesignator &id) 00131 { 00132 myReceivingObject = id; 00133 } 00134 00135 inline void DtResupplyRecInteraction::setSupplyingId( 00136 const DtGlobalObjectDesignator &id) 00137 { 00138 mySupplyingObject = id; 00139 } 00140 00141 inline const char* DtResupplyRecInteraction::name() const 00142 { 00143 return "DtResupplyRecInteraction"; 00144 } 00145 00146 #endif 00147 #endif 00148