CigiArtPartCtrlV2 Class Reference

#include <CigiArtPartCtrlV2.h>

Inheritance diagram for CigiArtPartCtrlV2:

CigiBaseArtPartCtrl CigiBasePacket List of all members.

Public Member Functions

 CigiArtPartCtrlV2 ()
virtual ~CigiArtPartCtrlV2 ()
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 GetArtPartID (void) const

Detailed Description

Definition at line 58 of file CigiArtPartCtrlV2.h.


Constructor & Destructor Documentation

CigiArtPartCtrlV2::CigiArtPartCtrlV2 (  ) 

General Constructor

Definition at line 85 of file CigiArtPartCtrlV2.cpp.

References CigiBaseArtPartCtrl::ArtPartEn, CigiBaseArtPartCtrl::ArtPartIDV1, CigiBaseArtPartCtrl::ArtPartIDV3, CIGI_ART_PART_CTRL_PACKET_ID_V2, CIGI_ART_PART_CTRL_PACKET_SIZE_V2, 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_V2;
00089    PacketSize = CIGI_ART_PART_CTRL_PACKET_SIZE_V2;
00090    Version = 2;
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 }

CigiArtPartCtrlV2::~CigiArtPartCtrlV2 (  )  [virtual]

General Destructor

Definition at line 115 of file CigiArtPartCtrlV2.cpp.

00116 {
00117 
00118 }


Member Function Documentation

Cigi_int8 CigiArtPartCtrlV2::GetArtPartID ( void   )  const [inline]

Gets the ArtPartID value.

Returns:
the current ArtPartID.

Definition at line 122 of file CigiArtPartCtrlV2.h.

00122 { return(ArtPartIDV1); }

int CigiArtPartCtrlV2::Pack ( CigiBasePacket Base,
Cigi_uint8 Buff,
void *  Spec 
) const [virtual]

The virtual Pack function for CIGI 2

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 127 of file CigiArtPartCtrlV2.cpp.

References CigiBaseArtPartCtrl::ArtPartEn, CigiBaseArtPartCtrl::ArtPartIDV1, PackPointerUnion::c, CIGI_ART_PART_CTRL_PACKET_SIZE_V2, CIGI_SCOPY2, CIGI_SCOPY4, PackPointerUnion::d, 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.

00128 {
00129    double DBuf[6];
00130 
00131    Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00132 
00133    PackPointer CDta;
00134 
00135    CigiBaseArtPartCtrl * Data = ( CigiBaseArtPartCtrl *)Base;
00136 
00137    CDta.d = DBuf;
00138 
00139    *CDta.c++ = PacketID;
00140    *CDta.c++ = PacketSize;
00141 
00142    CIGI_SCOPY2(CDta.s++, &Data->EntityID);
00143    *CDta.c++ = Data->ArtPartIDV1;
00144 
00145    Cigi_uint8 HDta = 0;
00146 
00147    if(Data->ArtPartEn)
00148       HDta = 0x80;
00149 
00150    if(Data->XOffEn)
00151       HDta |= 0x40;
00152 
00153    if(Data->YOffEn)
00154       HDta |= 0x20;
00155 
00156    if(Data->ZOffEn)
00157       HDta |= 0x10;
00158 
00159    if(Data->RollEn)
00160       HDta |= 0x08;
00161 
00162    if(Data->PitchEn)
00163       HDta |= 0x04;
00164 
00165    if(Data->YawEn)
00166       HDta |= 0x02;
00167 
00168    *CDta.c++ = HDta;
00169 
00170    *CDta.s++ = 0;
00171 
00172    CIGI_SCOPY4(CDta.f++, &Data->XOff);
00173    CIGI_SCOPY4(CDta.f++, &Data->YOff);
00174    CIGI_SCOPY4(CDta.f++, &Data->ZOff);
00175    CIGI_SCOPY4(CDta.f++, &Data->Roll);
00176    CIGI_SCOPY4(CDta.f++, &Data->Pitch);
00177    CIGI_SCOPY4(CDta.f++, &Data->Yaw);
00178 
00179    memcpy(Buff,tBuf,CIGI_ART_PART_CTRL_PACKET_SIZE_V2);
00180 
00181    return(PacketSize);
00182 
00183 }

int CigiArtPartCtrlV2::SetArtPartID ( const Cigi_int8  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 CigiArtPartCtrlV2.cpp.

References CigiBaseArtPartCtrl::ArtPartIDV1, CigiBaseArtPartCtrl::ArtPartIDV3, and CIGI_SUCCESS.

00248 {
00249    union ArtPartConv
00250    {
00251       Cigi_uint8 uc;
00252       Cigi_int8 c;
00253    } ArtC;
00254 
00255    ArtPartIDV1 = ArtPartIDIn;
00256 
00257    ArtC.c = ArtPartIDV1;
00258    ArtPartIDV3 = ArtC.uc;
00259 
00260    return(CIGI_SUCCESS);
00261 }

int CigiArtPartCtrlV2::Unpack ( Cigi_uint8 Buff,
bool  Swap,
void *  Spec 
) [virtual]

The virtual Unpack function for CIGI 2

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 188 of file CigiArtPartCtrlV2.cpp.

References CigiBaseArtPartCtrl::ArtPartEn, CigiBaseArtPartCtrl::ArtPartIDV1, CigiBaseArtPartCtrl::ArtPartIDV3, PackPointerUnion::c, CIGI_ART_PART_CTRL_PACKET_SIZE_V2, CIGI_SCOPY2, CIGI_SCOPY4, PackPointerUnion::d, 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.

00189 {
00190    union ArtPartConv
00191    {
00192       Cigi_uint8 uc;
00193       Cigi_int8 c;
00194    } ArtC;
00195 
00196    double DBuf[6];
00197 
00198    Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00199 
00200    PackPointer CDta;
00201 
00202    memcpy(tBuf,Buff,CIGI_ART_PART_CTRL_PACKET_SIZE_V2);
00203 
00204    CDta.d = DBuf;
00205 
00206    CDta.c += 2;  // Step over packet id and size
00207 
00208    CIGI_SCOPY2(&EntityID, CDta.s++);
00209    ArtPartIDV1 = *CDta.c++;
00210 
00211    Cigi_uint16 HDta = *CDta.c++;
00212 
00213    ArtPartEn = ((HDta & 0x80) != 0);
00214    XOffEn  = ((HDta & 0x40) != 0);
00215    YOffEn  = ((HDta & 0x20) != 0);
00216    ZOffEn  = ((HDta & 0x10) != 0);
00217    RollEn  = ((HDta & 0x08) != 0);
00218    PitchEn = ((HDta & 0x04) != 0);
00219    YawEn   = ((HDta & 0x02) != 0);
00220 
00221    CDta.s++;
00222 
00223    CIGI_SCOPY4(&XOff, CDta.f++);
00224    CIGI_SCOPY4(&YOff, CDta.f++);
00225    CIGI_SCOPY4(&ZOff, CDta.f++);
00226    CIGI_SCOPY4(&Roll, CDta.f++);
00227    CIGI_SCOPY4(&Pitch, CDta.f++);
00228    CIGI_SCOPY4(&Yaw, CDta.f++);
00229 
00230    ArtC.c = ArtPartIDV1;
00231    ArtPartIDV3 = ArtC.uc;
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