00001
00052 #define _EXPORT_CCL_
00053
00054 #include "CigiCollDetSegDefV3.h"
00055 #include "CigiSwapping.h"
00056 #include "CigiExceptions.h"
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067 CigiCollDetSegDefV3::CigiCollDetSegDefV3()
00068 {
00069
00070 PacketID = CIGI_COLL_DET_SEG_DEF_PACKET_ID_V3;
00071 PacketSize = CIGI_COLL_DET_SEG_DEF_PACKET_SIZE_V3;
00072 Version = 3;
00073 MinorVersion = 0;
00074
00075 EntityID = 0;
00076 SegmentID = 0;
00077 SegmentEn = false;
00078 X1 = 0.0;
00079 Y1 = 0.0;
00080 Z1 = 0.0;
00081 X2 = 0.0;
00082 Y2 = 0.0;
00083 Z2 = 0.0;
00084 Mask = 0;
00085
00086 }
00087
00088
00089
00090
00091 CigiCollDetSegDefV3::~CigiCollDetSegDefV3()
00092 {
00093
00094 }
00095
00096
00097
00098
00099
00100
00101
00102
00103 int CigiCollDetSegDefV3::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00104 {
00105 PackPointer CDta;
00106
00107 CigiBaseCollDetSegDef * Data = ( CigiBaseCollDetSegDef *)Base;
00108
00109 CDta.c = Buff;
00110
00111 *CDta.c++ = PacketID;
00112 *CDta.c++ = PacketSize;
00113
00114 *CDta.s++ = Data->EntityID;
00115 *CDta.c++ = Data->SegmentID;
00116
00117 Cigi_uint8 HDta = (Data->SegmentEn) ? 0x01 : 0x00;
00118 *CDta.c++ = HDta;
00119
00120 *CDta.s++ = 0;
00121
00122 *CDta.f++ = Data->X1;
00123 *CDta.f++ = Data->Y1;
00124 *CDta.f++ = Data->Z1;
00125 *CDta.f++ = Data->X2;
00126 *CDta.f++ = Data->Y2;
00127 *CDta.f++ = Data->Z2;
00128 *CDta.l++ = Data->Mask;
00129 *CDta.l++ = 0;
00130
00131 return(PacketSize);
00132
00133 }
00134
00135
00136
00137
00138 int CigiCollDetSegDefV3::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00139 {
00140 PackPointer CDta;
00141
00142 CDta.c = Buff;
00143
00144 CDta.c += 2;
00145
00146 if(!Swap)
00147 {
00148 EntityID = *CDta.s++;
00149 SegmentID = *CDta.c++;
00150
00151 Cigi_uint8 HDta = *CDta.c++;
00152 SegmentEn = ((HDta & 0x01) != 0);
00153
00154 CDta.s++;
00155
00156 X1 = *CDta.f++;
00157 Y1 = *CDta.f++;
00158 Z1 = *CDta.f++;
00159 X2 = *CDta.f++;
00160 Y2 = *CDta.f++;
00161 Z2 = *CDta.f++;
00162 Mask = *CDta.l++;
00163 }
00164 else
00165 {
00166 CigiSwap2(&EntityID, CDta.s++);
00167 SegmentID = *CDta.c++;
00168
00169 Cigi_uint8 HDta = *CDta.c++;
00170 SegmentEn = ((HDta & 0x01) != 0);
00171
00172 CDta.s++;
00173
00174 CigiSwap4(&X1, CDta.f++);
00175 CigiSwap4(&Y1, CDta.f++);
00176 CigiSwap4(&Z1, CDta.f++);
00177 CigiSwap4(&X2, CDta.f++);
00178 CigiSwap4(&Y2, CDta.f++);
00179 CigiSwap4(&Z2, CDta.f++);
00180 CigiSwap4(&Mask, CDta.l++);
00181 }
00182
00183 return(PacketSize);
00184
00185 }
00186
00187
00188
00189
00190
00191
00192