CigiArtPartCtrlV3 Class Reference

#include <CigiArtPartCtrlV3.h>

Inheritance diagram for CigiArtPartCtrlV3:

CigiBaseArtPartCtrl CigiBasePacket List of all members.

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

Detailed Description

Definition at line 57 of file CigiArtPartCtrlV3.h.


Constructor & Destructor Documentation

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]

General Destructor

Definition at line 100 of file CigiArtPartCtrlV3.cpp.

00101 {
00102 
00103 }


Member Function Documentation

Cigi_uint8 CigiArtPartCtrlV3::GetArtPartID ( void   )  const [inline]

Gets the ArtPartID value.

Returns:
the current ArtPartID.

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

Parameters:
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.
Returns:
This returns CIGI_SUCCESS or an error code defined in CigiErrorCodes.h

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

Parameters:
ArtPartIDIn - Identifies the specific articulated part of a specified entity to which this data is applied.
bndchk - Enables (true) or disables (false) bounds checking.
Returns:
This returns CIGI_SUCCESS or an error code defined in CigiErrorCodes.h

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

Parameters:
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.
Returns:
This returns CIGI_SUCCESS or an error code defined in CigiErrorCodes.h

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 }


The documentation for this class was generated from the following files:
Generated on Wed Apr 29 09:00:04 2009 for CCL by  doxygen 1.4.7