#include <CigiArtPartCtrlV1.h>
Inheritance diagram for CigiArtPartCtrlV1:
Public Member Functions | |
CigiArtPartCtrlV1 () | |
virtual | ~CigiArtPartCtrlV1 () |
virtual int | Pack (CigiBasePacket *Base, Cigi_uint8 *Buff, void *Spec) const |
virtual int | Unpack (Cigi_uint8 *Buff, bool Swap, void *Spec) |
int | SetArtPartID (const Cigi_int8 ArtPartIDIn, bool bndchk=true) |
Cigi_int8 | GetArtPartIDV1 (void) const |
Definition at line 57 of file CigiArtPartCtrlV1.h.
CigiArtPartCtrlV1::CigiArtPartCtrlV1 | ( | ) |
General Constructor
Definition at line 85 of file CigiArtPartCtrlV1.cpp.
References CigiBaseArtPartCtrl::ArtPartEn, CigiBaseArtPartCtrl::ArtPartIDV1, CigiBaseArtPartCtrl::ArtPartIDV3, CIGI_ART_PART_CTRL_PACKET_ID_V1, CIGI_ART_PART_CTRL_PACKET_SIZE_V1, CigiBaseArtPartCtrl::EntityID, CigiBasePacket::MinorVersion, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseArtPartCtrl::Pitch, CigiBaseArtPartCtrl::PitchEn, CigiBaseArtPartCtrl::Roll, CigiBaseArtPartCtrl::RollEn, CigiBasePacket::Version, CigiBaseArtPartCtrl::XOff, CigiBaseArtPartCtrl::XOffEn, CigiBaseArtPartCtrl::Yaw, CigiBaseArtPartCtrl::YawEn, CigiBaseArtPartCtrl::YOff, CigiBaseArtPartCtrl::YOffEn, CigiBaseArtPartCtrl::ZOff, and CigiBaseArtPartCtrl::ZOffEn.
00086 { 00087 00088 PacketID = CIGI_ART_PART_CTRL_PACKET_ID_V1; 00089 PacketSize = CIGI_ART_PART_CTRL_PACKET_SIZE_V1; 00090 Version = 1; 00091 MinorVersion = 0; 00092 00093 EntityID = 0; 00094 ArtPartIDV1 = 0; 00095 ArtPartIDV3 = 0; 00096 ArtPartEn = false; 00097 XOffEn = false; 00098 YOffEn = false; 00099 ZOffEn = false; 00100 RollEn = false; 00101 PitchEn = false; 00102 YawEn = false; 00103 XOff = 0.0; 00104 YOff = 0.0; 00105 ZOff = 0.0; 00106 Roll = 0.0; 00107 Pitch = 0.0; 00108 Yaw = 0.0; 00109 00110 }
CigiArtPartCtrlV1::~CigiArtPartCtrlV1 | ( | ) | [virtual] |
Cigi_int8 CigiArtPartCtrlV1::GetArtPartIDV1 | ( | void | ) | const [inline] |
Gets the ArtPartID value.
Definition at line 121 of file CigiArtPartCtrlV1.h.
00121 { return(ArtPartIDV1); }
int CigiArtPartCtrlV1::Pack | ( | CigiBasePacket * | Base, | |
Cigi_uint8 * | Buff, | |||
void * | Spec | |||
) | const [virtual] |
The virtual Pack function for CIGI 1
Base | - A pointer to the instance of the packet to be packed. (Downcast to CigiBasePacket) | |
Buff | - A pointer to the current pack point. | |
Spec | - A pointer to special data - This is not used in this class. |
Implements CigiBaseArtPartCtrl.
Definition at line 127 of file CigiArtPartCtrlV1.cpp.
References CigiBaseArtPartCtrl::ArtPartEn, CigiBaseArtPartCtrl::ArtPartIDV1, PackPointerUnion::c, CIGI_ART_PART_CTRL_PACKET_SIZE_V1, CIGI_FLOAT_TO_B6, CIGI_FLOAT_TO_BA, CIGI_SCOPY2, PackPointerUnion::d, CigiBaseArtPartCtrl::EntityID, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseArtPartCtrl::Pitch, CigiBaseArtPartCtrl::PitchEn, CigiBaseArtPartCtrl::Roll, CigiBaseArtPartCtrl::RollEn, PackPointerUnion::s, CigiBaseArtPartCtrl::XOff, CigiBaseArtPartCtrl::XOffEn, CigiBaseArtPartCtrl::Yaw, CigiBaseArtPartCtrl::YawEn, CigiBaseArtPartCtrl::YOff, CigiBaseArtPartCtrl::YOffEn, CigiBaseArtPartCtrl::ZOff, and CigiBaseArtPartCtrl::ZOffEn.
00128 { 00129 double DBuf[6]; 00130 00131 Cigi_int16 tsCnvt; 00132 Cigi_int32 tlCnvt; 00133 double tdCnvt; 00134 00135 union Conversion_short 00136 { 00137 Cigi_uint16 u; 00138 Cigi_int16 s; 00139 } tuCnvt; 00140 00141 Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf; 00142 00143 PackPointer CDta; 00144 00145 CigiBaseArtPartCtrl * Data = ( CigiBaseArtPartCtrl *)Base; 00146 00147 CDta.d = DBuf; 00148 00149 *CDta.c++ = PacketID; 00150 *CDta.c++ = PacketSize; 00151 00152 CIGI_SCOPY2(CDta.s++, &Data->EntityID); 00153 *CDta.c++ = Data->ArtPartIDV1; 00154 00155 Cigi_uint8 HDta = 0; 00156 00157 if(Data->ArtPartEn) 00158 HDta = 0x80; 00159 00160 if(Data->XOffEn) 00161 HDta |= 0x40; 00162 00163 if(Data->YOffEn) 00164 HDta |= 0x20; 00165 00166 if(Data->ZOffEn) 00167 HDta |= 0x10; 00168 00169 if(Data->RollEn) 00170 HDta |= 0x08; 00171 00172 if(Data->PitchEn) 00173 HDta |= 0x04; 00174 00175 if(Data->YawEn) 00176 HDta |= 0x02; 00177 00178 *CDta.c++ = HDta; 00179 00180 *CDta.s++ = 0; 00181 00182 // b6 & degrees 00183 tsCnvt = CIGI_FLOAT_TO_B6((double)Data->XOff); 00184 CIGI_SCOPY2(CDta.s++, &tsCnvt); 00185 00186 tsCnvt = CIGI_FLOAT_TO_B6((double)Data->YOff); 00187 CIGI_SCOPY2(CDta.s++, &tsCnvt); 00188 00189 tsCnvt = CIGI_FLOAT_TO_B6((double)Data->ZOff); 00190 CIGI_SCOPY2(CDta.s++, &tsCnvt); 00191 00192 tdCnvt = (double)Data->Roll; 00193 if(tdCnvt < 0.0) 00194 tdCnvt += 360.0; 00195 tlCnvt = CIGI_FLOAT_TO_BA(tdCnvt); 00196 if((tlCnvt > 65535)||(tlCnvt < 0)) 00197 tsCnvt = 0; 00198 else 00199 { 00200 tuCnvt.u = (Cigi_uint16)tlCnvt; 00201 tsCnvt = tuCnvt.s; 00202 } 00203 CIGI_SCOPY2(CDta.s++, &tsCnvt); 00204 00205 tdCnvt = (double)Data->Pitch; 00206 if(tdCnvt < 0.0) 00207 tdCnvt += 360.0; 00208 tlCnvt = CIGI_FLOAT_TO_BA(tdCnvt); 00209 if((tlCnvt > 65535)||(tlCnvt < 0)) 00210 tsCnvt = 0; 00211 else 00212 { 00213 tuCnvt.u = (Cigi_uint16)tlCnvt; 00214 tsCnvt = tuCnvt.s; 00215 } 00216 CIGI_SCOPY2(CDta.s++, &tsCnvt); 00217 00218 tlCnvt = CIGI_FLOAT_TO_BA((double)Data->Yaw); 00219 if((tlCnvt > 65535)||(tlCnvt < 0)) 00220 tsCnvt = 0; 00221 else 00222 { 00223 tuCnvt.u = (Cigi_uint16)tlCnvt; 00224 tsCnvt = tuCnvt.s; 00225 } 00226 CIGI_SCOPY2(CDta.s++, &tsCnvt); 00227 00228 memcpy(Buff,tBuf,CIGI_ART_PART_CTRL_PACKET_SIZE_V1); 00229 00230 return(PacketSize); 00231 00232 }
int CigiArtPartCtrlV1::SetArtPartID | ( | const Cigi_int8 | ArtPartIDIn, | |
bool | bndchk = true | |||
) |
Sets the ArtPartID with bound checking control
ArtPartIDIn | - Identifies the specific articulated part of a specified entity to which this data is applied. | |
bndchk | - Enables (true) or disables (false) bounds checking. |
Definition at line 314 of file CigiArtPartCtrlV1.cpp.
References CigiBaseArtPartCtrl::ArtPartIDV1, CigiBaseArtPartCtrl::ArtPartIDV3, and CIGI_SUCCESS.
00315 { 00316 union ArtPartConv 00317 { 00318 Cigi_uint8 uc; 00319 Cigi_int8 c; 00320 } ArtC; 00321 00322 ArtPartIDV1 = ArtPartIDIn; 00323 00324 ArtC.c = ArtPartIDV1; 00325 ArtPartIDV3 = ArtC.uc; 00326 00327 return(CIGI_SUCCESS); 00328 }
int CigiArtPartCtrlV1::Unpack | ( | Cigi_uint8 * | Buff, | |
bool | Swap, | |||
void * | Spec | |||
) | [virtual] |
The virtual Unpack function for CIGI 1
Buff | - A pointer to the current pack point. | |
Swap | - N/A for V1 & V2 | |
Spec | - A pointer to special data - This is not used in this class. |
Implements CigiBaseArtPartCtrl.
Definition at line 237 of file CigiArtPartCtrlV1.cpp.
References CigiBaseArtPartCtrl::ArtPartEn, CigiBaseArtPartCtrl::ArtPartIDV1, CigiBaseArtPartCtrl::ArtPartIDV3, PackPointerUnion::c, CIGI_ART_PART_CTRL_PACKET_SIZE_V1, CIGI_B6_TO_FLOAT, CIGI_BA_TO_FLOAT, CIGI_SCOPY2, PackPointerUnion::d, CigiBaseArtPartCtrl::EntityID, CigiBasePacket::PacketSize, CigiBaseArtPartCtrl::Pitch, CigiBaseArtPartCtrl::PitchEn, CigiBaseArtPartCtrl::Roll, CigiBaseArtPartCtrl::RollEn, PackPointerUnion::s, CigiBaseArtPartCtrl::XOff, CigiBaseArtPartCtrl::XOffEn, CigiBaseArtPartCtrl::Yaw, CigiBaseArtPartCtrl::YawEn, CigiBaseArtPartCtrl::YOff, CigiBaseArtPartCtrl::YOffEn, CigiBaseArtPartCtrl::ZOff, and CigiBaseArtPartCtrl::ZOffEn.
00238 { 00239 union ArtPartConv 00240 { 00241 Cigi_uint8 uc; 00242 Cigi_int8 c; 00243 } ArtC; 00244 00245 double DBuf[6]; 00246 00247 Cigi_int16 tsCnvt; 00248 00249 Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf; 00250 00251 PackPointer CDta; 00252 00253 memcpy(tBuf,Buff,CIGI_ART_PART_CTRL_PACKET_SIZE_V1); 00254 00255 CDta.d = DBuf; 00256 00257 CDta.c += 2; // Step over packet id and size 00258 00259 CIGI_SCOPY2(&EntityID, CDta.s++); 00260 ArtPartIDV1 = *CDta.c++; 00261 00262 Cigi_uint16 HDta = *CDta.c++; 00263 00264 ArtPartEn = ((HDta & 0x80) != 0); 00265 XOffEn = ((HDta & 0x40) != 0); 00266 ZOffEn = ((HDta & 0x10) != 0); 00267 YOffEn = ((HDta & 0x20) != 0); 00268 RollEn = ((HDta & 0x08) != 0); 00269 PitchEn = ((HDta & 0x04) != 0); 00270 YawEn = ((HDta & 0x02) != 0); 00271 00272 CDta.s++; 00273 00274 // b6 & degrees 00275 CIGI_SCOPY2(&tsCnvt, CDta.s++); 00276 XOff = (float)CIGI_B6_TO_FLOAT(tsCnvt); 00277 00278 CIGI_SCOPY2(&tsCnvt, CDta.s++); 00279 YOff = (float)CIGI_B6_TO_FLOAT(tsCnvt); 00280 00281 CIGI_SCOPY2(&tsCnvt, CDta.s++); 00282 ZOff = (float)CIGI_B6_TO_FLOAT(tsCnvt); 00283 00284 CIGI_SCOPY2(&tsCnvt, CDta.s++); 00285 Roll = (float)CIGI_BA_TO_FLOAT(tsCnvt); 00286 if(Roll > 180.0) 00287 Roll -= 360.0; 00288 00289 CIGI_SCOPY2(&tsCnvt, CDta.s++); 00290 Pitch = (float)CIGI_BA_TO_FLOAT(tsCnvt); 00291 if(Pitch > 180.0) 00292 Pitch -= 360.0; 00293 00294 CIGI_SCOPY2(&tsCnvt, CDta.s++); 00295 Yaw = (float)CIGI_BA_TO_FLOAT(tsCnvt); 00296 00297 ArtC.c = ArtPartIDV1; 00298 ArtPartIDV3 = ArtC.uc; 00299 00300 return(PacketSize); 00301 00302 }