CigiSpecEffDefV1 Class Reference

#include <CigiSpecEffDefV1.h>

Inheritance diagram for CigiSpecEffDefV1:

CigiBaseSpecEffDef CigiBasePacket List of all members.

Public Member Functions

 CigiSpecEffDefV1 ()
virtual ~CigiSpecEffDefV1 ()
virtual int Pack (CigiBasePacket *Base, Cigi_uint8 *Buff, void *Spec) const
virtual int Unpack (Cigi_uint8 *Buff, bool Swap, void *Spec)

Detailed Description

Definition at line 57 of file CigiSpecEffDefV1.h.


Constructor & Destructor Documentation

CigiSpecEffDefV1::CigiSpecEffDefV1 (  ) 

General Constructor

Definition at line 85 of file CigiSpecEffDefV1.cpp.

References CigiBaseSpecEffDef::Blue, CigiBaseSpecEffDef::BurstRate, CIGI_SPEC_EFF_DEF_PACKET_ID_V1, CIGI_SPEC_EFF_DEF_PACKET_SIZE_V1, CigiBaseSpecEffDef::ColorEn, CigiBaseSpecEffDef::Duration, CigiBaseSpecEffDef::EffectCnt, CigiBaseSpecEffDef::EntityID, CigiBaseSpecEffDef::Forward, CigiBaseSpecEffDef::Green, CigiBasePacket::MinorVersion, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseSpecEffDef::Red, CigiBaseSpecEffDef::Separation, CigiBaseSpecEffDef::SeqDir, CigiBaseSpecEffDef::TimeScale, CigiBasePacket::Version, CigiBaseSpecEffDef::XScale, CigiBaseSpecEffDef::YScale, and CigiBaseSpecEffDef::ZScale.

00086 {
00087 
00088    PacketID = CIGI_SPEC_EFF_DEF_PACKET_ID_V1;
00089    PacketSize = CIGI_SPEC_EFF_DEF_PACKET_SIZE_V1;
00090    Version = 1;
00091    MinorVersion = 0;
00092 
00093    EntityID = 0;
00094    SeqDir = Forward;
00095    ColorEn = false;
00096    Red = 0;
00097    Green = 0;
00098    Blue = 0;
00099    XScale = 0.0;
00100    YScale = 0.0;
00101    ZScale = 0.0;
00102    TimeScale = 0.0;
00103    EffectCnt = 0;
00104    Separation = 0.0;
00105    BurstRate = 0.0;
00106    Duration = 0.0;
00107 
00108 }

CigiSpecEffDefV1::~CigiSpecEffDefV1 (  )  [virtual]

General Destructor

Definition at line 113 of file CigiSpecEffDefV1.cpp.

00114 {
00115 
00116 }


Member Function Documentation

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

The virtual Pack function for CIGI 1

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 CigiBaseSpecEffDef.

Definition at line 125 of file CigiSpecEffDefV1.cpp.

References CigiBaseSpecEffDef::Blue, CigiBaseSpecEffDef::BurstRate, PackPointerUnion::c, CIGI_SCOPY2, CIGI_SCOPY4, CIGI_SPEC_EFF_DEF_PACKET_SIZE_V1, CigiBaseSpecEffDef::ColorEn, PackPointerUnion::d, CigiBaseSpecEffDef::Duration, CigiBaseSpecEffDef::EffectCnt, CigiBaseSpecEffDef::EntityID, PackPointerUnion::f, CigiBaseSpecEffDef::Green, PackPointerUnion::h, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseSpecEffDef::Red, PackPointerUnion::s, CigiBaseSpecEffDef::Separation, CigiBaseSpecEffDef::SeqDir, CigiBaseSpecEffDef::TimeScale, CigiBaseSpecEffDef::XScale, CigiBaseSpecEffDef::YScale, and CigiBaseSpecEffDef::ZScale.

00126 {
00127    double DBuf[6];
00128 
00129    Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00130 
00131    PackPointer CDta;
00132 
00133    CigiBaseSpecEffDef * Data = ( CigiBaseSpecEffDef *)Base;
00134 
00135    CDta.d = DBuf;
00136 
00137    *CDta.c++ = PacketID;
00138    *CDta.c++ = PacketSize;
00139 
00140    CIGI_SCOPY2(CDta.s++, &Data->EntityID);
00141 
00142    Cigi_uint8 HDta = (Data->SeqDir << 7) & 0x80;
00143    HDta |= (Data->ColorEn) ? 0x40 : 0;
00144    *CDta.c++ = HDta;
00145 
00146    *CDta.c++ = Data->Red;
00147    *CDta.c++ = Data->Green;
00148    *CDta.c++ = Data->Blue;
00149 
00150    float tfScl = (float)Data->XScale / 0.015625f;
00151    Cigi_int16 tsScl = (Cigi_int16)tfScl;
00152    CIGI_SCOPY2(CDta.h++, &tsScl);
00153 
00154    tfScl = Data->YScale / 0.015625f;
00155    tsScl = (Cigi_int16)tfScl;
00156    CIGI_SCOPY2(CDta.h++, &tsScl);
00157 
00158    tfScl = Data->ZScale / 0.015625f;
00159    tsScl = (Cigi_int16)tfScl;
00160    CIGI_SCOPY2(CDta.h++, &tsScl);
00161 
00162    tfScl = Data->TimeScale / 0.015625f;
00163    tsScl = (Cigi_int16)tfScl;
00164    CIGI_SCOPY2(CDta.h++, &tsScl);
00165 
00166    *CDta.s++ = 0;
00167 
00168    CIGI_SCOPY2(CDta.s++, &Data->EffectCnt);
00169 
00170    CIGI_SCOPY4(CDta.f++, &Data->Separation);
00171    CIGI_SCOPY4(CDta.f++, &Data->BurstRate);
00172    CIGI_SCOPY4(CDta.f++, &Data->Duration);
00173 
00174 
00175    memcpy(Buff,tBuf,CIGI_SPEC_EFF_DEF_PACKET_SIZE_V1);
00176 
00177    return(PacketSize);
00178 
00179 }

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

The virtual Unpack function for CIGI 1

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 CigiBaseSpecEffDef.

Definition at line 184 of file CigiSpecEffDefV1.cpp.

References CigiBaseSpecEffDef::Blue, CigiBaseSpecEffDef::BurstRate, PackPointerUnion::c, CIGI_SCOPY2, CIGI_SCOPY4, CIGI_SPEC_EFF_DEF_PACKET_SIZE_V1, CigiBaseSpecEffDef::ColorEn, PackPointerUnion::d, CigiBaseSpecEffDef::Duration, CigiBaseSpecEffDef::EffectCnt, CigiBaseSpecEffDef::EntityID, PackPointerUnion::f, CigiBaseSpecEffDef::Green, PackPointerUnion::h, CigiBasePacket::PacketSize, CigiBaseSpecEffDef::Red, CigiBaseSpecEffDef::Separation, CigiBaseSpecEffDef::SeqDir, CigiBaseSpecEffDef::TimeScale, CigiBaseSpecEffDef::XScale, CigiBaseSpecEffDef::YScale, and CigiBaseSpecEffDef::ZScale.

00185 {
00186    double DBuf[6];
00187 
00188    Cigi_uint8 *tBuf = (Cigi_uint8 *)DBuf;
00189 
00190    PackPointer CDta;
00191 
00192    memcpy(tBuf,Buff,CIGI_SPEC_EFF_DEF_PACKET_SIZE_V1);
00193 
00194    CDta.d = DBuf;
00195 
00196    CDta.c += 2;  // Step over packet id and size
00197 
00198    CIGI_SCOPY2(&EntityID, CDta.h++);
00199 
00200    Cigi_uint8 HDta = *CDta.c++;
00201    SeqDir = (SeqDirGrp)((HDta >> 7) & 0x01);
00202    ColorEn = ((HDta & 0x40) != 0);
00203 
00204    Red = *CDta.c++;
00205    Green = *CDta.c++;
00206    Blue = *CDta.c++;
00207 
00208    Cigi_int16 tsScl;
00209 
00210    CIGI_SCOPY2(&tsScl, CDta.h++);
00211    float tfScl = (float)tsScl;
00212    XScale = tfScl * 0.015625f;
00213 
00214    CIGI_SCOPY2(&tsScl, CDta.h++);
00215    tfScl = (float)tsScl;
00216    YScale = tfScl * 0.015625f;
00217 
00218    CIGI_SCOPY2(&tsScl, CDta.h++);
00219    tfScl = (float)tsScl;
00220    ZScale = tfScl * 0.015625f;
00221 
00222    CIGI_SCOPY2(&tsScl, CDta.h++);
00223    tfScl = (float)tsScl;
00224    TimeScale = tfScl * 0.015625f;
00225 
00226 
00227    CDta.h++;
00228 
00229    CIGI_SCOPY2(&EffectCnt, CDta.h++);
00230 
00231    CIGI_SCOPY4(&Separation, CDta.f++);
00232    CIGI_SCOPY4(&BurstRate, CDta.f++);
00233    CIGI_SCOPY4(&Duration, CDta.f++);
00234 
00235    return(PacketSize);
00236 
00237 }


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