#include <CigiArtPartCtrlV3.h>
Inheritance diagram for CigiArtPartCtrlV3:
Public Member Functions | |
CigiArtPartCtrlV3 () | |
virtual | ~CigiArtPartCtrlV3 () |
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_uint8 ArtPartIDIn, bool bndchk=true) |
Cigi_uint8 | GetArtPartID (void) const |
Definition at line 57 of file CigiArtPartCtrlV3.h.
CigiArtPartCtrlV3::CigiArtPartCtrlV3 | ( | ) |
General Constructor
Definition at line 70 of file CigiArtPartCtrlV3.cpp.
References CigiBaseArtPartCtrl::ArtPartEn, CigiBaseArtPartCtrl::ArtPartIDV1, CigiBaseArtPartCtrl::ArtPartIDV3, CIGI_ART_PART_CTRL_PACKET_ID_V3, CIGI_ART_PART_CTRL_PACKET_SIZE_V3, 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.
00071 { 00072 00073 PacketID = CIGI_ART_PART_CTRL_PACKET_ID_V3; 00074 PacketSize = CIGI_ART_PART_CTRL_PACKET_SIZE_V3; 00075 Version = 3; 00076 MinorVersion = 0; 00077 00078 EntityID = 0; 00079 ArtPartIDV1 = 0; 00080 ArtPartIDV3 = 0; 00081 ArtPartEn = false; 00082 XOffEn = false; 00083 YOffEn = false; 00084 ZOffEn = false; 00085 RollEn = false; 00086 PitchEn = false; 00087 YawEn = false; 00088 XOff = 0.0; 00089 YOff = 0.0; 00090 ZOff = 0.0; 00091 Roll = 0.0; 00092 Pitch = 0.0; 00093 Yaw = 0.0; 00094 00095 }
CigiArtPartCtrlV3::~CigiArtPartCtrlV3 | ( | ) | [virtual] |
Cigi_uint8 CigiArtPartCtrlV3::GetArtPartID | ( | void | ) | const [inline] |
Gets the ArtPartID value.
Definition at line 121 of file CigiArtPartCtrlV3.h.
00121 { return(ArtPartIDV3); }
int CigiArtPartCtrlV3::Pack | ( | CigiBasePacket * | Base, | |
Cigi_uint8 * | Buff, | |||
void * | Spec | |||
) | const [virtual] |
The virtual Pack function for CIGI 3
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 112 of file CigiArtPartCtrlV3.cpp.
References CigiBaseArtPartCtrl::ArtPartEn, CigiBaseArtPartCtrl::ArtPartIDV3, PackPointerUnion::c, CigiBaseArtPartCtrl::EntityID, PackPointerUnion::f, 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.
00113 { 00114 PackPointer CDta; 00115 00116 CigiBaseArtPartCtrl * Data = ( CigiBaseArtPartCtrl *)Base; 00117 00118 CDta.c = Buff; 00119 00120 *CDta.c++ = PacketID; 00121 *CDta.c++ = PacketSize; 00122 00123 *CDta.s++ = Data->EntityID; 00124 *CDta.c++ = Data->ArtPartIDV3; 00125 00126 Cigi_uint8 HDta = 0; 00127 00128 if(Data->ArtPartEn) 00129 HDta = 0x01; 00130 00131 if(Data->XOffEn) 00132 HDta |= 0x02; 00133 00134 if(Data->YOffEn) 00135 HDta |= 0x04; 00136 00137 if(Data->ZOffEn) 00138 HDta |= 0x08; 00139 00140 if(Data->RollEn) 00141 HDta |= 0x10; 00142 00143 if(Data->PitchEn) 00144 HDta |= 0x20; 00145 00146 if(Data->YawEn) 00147 HDta |= 0x40; 00148 00149 *CDta.c++ = HDta; 00150 00151 *CDta.s++ = 0; 00152 00153 *CDta.f++ = Data->XOff; 00154 *CDta.f++ = Data->YOff; 00155 *CDta.f++ = Data->ZOff; 00156 *CDta.f++ = Data->Roll; 00157 *CDta.f++ = Data->Pitch; 00158 *CDta.f++ = Data->Yaw; 00159 00160 return(PacketSize); 00161 00162 }
int CigiArtPartCtrlV3::SetArtPartID | ( | const Cigi_uint8 | 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 247 of file CigiArtPartCtrlV3.cpp.
References CigiBaseArtPartCtrl::ArtPartIDV1, CigiBaseArtPartCtrl::ArtPartIDV3, and CIGI_SUCCESS.
Referenced by CigiBaseShortArtPartCtrl::SpecialConversion().
00248 { 00249 union ArtPartConv 00250 { 00251 Cigi_uint8 uc; 00252 Cigi_int8 c; 00253 } ArtC; 00254 00255 ArtPartIDV3 = ArtPartIDIn; 00256 00257 ArtC.uc = ArtPartIDV3; 00258 ArtPartIDV1 = ArtC.c; 00259 00260 return(CIGI_SUCCESS); 00261 }
int CigiArtPartCtrlV3::Unpack | ( | Cigi_uint8 * | Buff, | |
bool | Swap, | |||
void * | Spec | |||
) | [virtual] |
The virtual Unpack function for CIGI 3
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 167 of file CigiArtPartCtrlV3.cpp.
References CigiBaseArtPartCtrl::ArtPartEn, CigiBaseArtPartCtrl::ArtPartIDV1, CigiBaseArtPartCtrl::ArtPartIDV3, PackPointerUnion::c, CigiSwap2(), CigiSwap4(), CigiBaseArtPartCtrl::EntityID, PackPointerUnion::f, 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.
00168 { 00169 union ArtPartConv 00170 { 00171 Cigi_uint8 uc; 00172 Cigi_int8 c; 00173 } ArtC; 00174 00175 PackPointer CDta; 00176 00177 CDta.c = Buff; 00178 00179 CDta.c += 2; // Step over packet id and size 00180 00181 if(!Swap) 00182 { 00183 EntityID = *CDta.s++; 00184 ArtPartIDV3 = *CDta.c++; 00185 00186 Cigi_uint16 HDta = *CDta.c++; 00187 00188 ArtPartEn = ((HDta & 0x01) != 0); 00189 XOffEn = ((HDta & 0x02) != 0); 00190 YOffEn = ((HDta & 0x04) != 0); 00191 ZOffEn = ((HDta & 0x08) != 0); 00192 RollEn = ((HDta & 0x10) != 0); 00193 PitchEn = ((HDta & 0x20) != 0); 00194 YawEn = ((HDta & 0x40) != 0); 00195 00196 CDta.s++; 00197 00198 XOff = *CDta.f++; 00199 YOff = *CDta.f++; 00200 ZOff = *CDta.f++; 00201 Roll = *CDta.f++; 00202 Pitch = *CDta.f++; 00203 Yaw = *CDta.f++; 00204 } 00205 else 00206 { 00207 CigiSwap2(&EntityID, CDta.s++); 00208 ArtPartIDV3 = *CDta.c++; 00209 00210 Cigi_uint16 HDta = *CDta.c++; 00211 00212 ArtPartEn = ((HDta & 0x01) != 0); 00213 XOffEn = ((HDta & 0x02) != 0); 00214 YOffEn = ((HDta & 0x04) != 0); 00215 ZOffEn = ((HDta & 0x08) != 0); 00216 RollEn = ((HDta & 0x10) != 0); 00217 PitchEn = ((HDta & 0x20) != 0); 00218 YawEn = ((HDta & 0x40) != 0); 00219 00220 CDta.s++; 00221 00222 CigiSwap4(&XOff, CDta.f++); 00223 CigiSwap4(&YOff, CDta.f++); 00224 CigiSwap4(&ZOff, CDta.f++); 00225 CigiSwap4(&Roll, CDta.f++); 00226 CigiSwap4(&Pitch, CDta.f++); 00227 CigiSwap4(&Yaw, CDta.f++); 00228 } 00229 00230 ArtC.uc = ArtPartIDV3; 00231 ArtPartIDV1 = ArtC.c; 00232 00233 return(PacketSize); 00234 00235 }