CigiCollDetSegRespV3.cpp

Go to the documentation of this file.
00001 
00052 #define _EXPORT_CCL_
00053 
00054 #include "CigiCollDetSegRespV3.h"
00055 #include "CigiSwapping.h"
00056 #include "CigiExceptions.h"
00057 
00058 
00059 // ====================================================================
00060 // Construction/Destruction
00061 // ====================================================================
00062 
00063 
00064 // ================================================
00065 // CigiCollDetSegRespV3
00066 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00067 CigiCollDetSegRespV3::CigiCollDetSegRespV3()
00068 {
00069 
00070    PacketID = CIGI_COLL_DET_SEG_RESP_PACKET_ID_V3;
00071    PacketSize = CIGI_COLL_DET_SEG_RESP_PACKET_SIZE_V3;
00072    Version = 3;
00073    MinorVersion = 0;
00074 
00075    EntityID = 0;
00076    SegID = 0;
00077    CollType = NonEntity;
00078    CollEntityID = 0;
00079    Material = 0;
00080    IntersectDist = 0.0;
00081    X = 0.0;
00082    Y = 0.0;
00083    Z = 0.0;
00084    IsValidV1or2 = false;
00085 
00086 }
00087 
00088 // ================================================
00089 // ~CigiCollDetSegRespV3
00090 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00091 CigiCollDetSegRespV3::~CigiCollDetSegRespV3()
00092 {
00093 
00094 }
00095 
00096 // ====================================================================
00097 // Pack and Unpack
00098 // ====================================================================
00099 
00100 // ================================================
00101 // Pack
00102 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00103 int CigiCollDetSegRespV3::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00104 {
00105    PackPointer CDta;
00106 
00107    CigiBaseCollDetSegResp * Data = ( CigiBaseCollDetSegResp *)Base;
00108 
00109    CDta.c = Buff;
00110 
00111    *CDta.c++ = PacketID;
00112    *CDta.c++ = PacketSize;
00113 
00114    *CDta.s++ = Data->EntityID;
00115    *CDta.c++ = Data->SegID;
00116 
00117    *CDta.c++ = ((Cigi_uint8)Data->CollType) & 0x01;
00118 
00119    *CDta.s++ = Data->CollEntityID;
00120    *CDta.l++ = Data->Material;
00121 
00122    if(!Data->IsValidV1or2)
00123       *CDta.f++ = Data->IntersectDist;
00124    else
00125       *CDta.f++ = 0.0f;
00126 
00127    return(PacketSize);
00128 
00129 }
00130 
00131 // ================================================
00132 // Unpack
00133 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00134 int CigiCollDetSegRespV3::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00135 {
00136    PackPointer CDta;
00137 
00138    CDta.c = Buff;
00139 
00140    CDta.c += 2;  // Step over packet id and size
00141 
00142    if(!Swap)
00143    {
00144       EntityID = *CDta.s++;
00145       SegID = *CDta.c++;
00146 
00147       CollType = (CollTypeGrp)(*CDta.c++ & 0x01);
00148 
00149       CollEntityID = *CDta.s++;
00150       Material = *CDta.l++;
00151       IntersectDist = *CDta.f++;
00152    }
00153    else
00154    {
00155       CigiSwap2(&EntityID, CDta.s++);
00156       SegID = *CDta.c++;
00157 
00158       CollType = (CollTypeGrp)(*CDta.c++ & 0x01);
00159 
00160       CigiSwap2(&CollEntityID, CDta.s++);
00161       CigiSwap4(&Material, CDta.l++);
00162       CigiSwap4(&IntersectDist, CDta.f++);
00163    }
00164 
00165    IsValidV1or2 = false;
00166 
00167    return(PacketSize);
00168 
00169 }
00170 
00171 
00172 
00173 // ====================================================================
00174 // Accessors
00175 // ====================================================================
00176 
00177 
00178 // ================================================
00179 // CollType
00180 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00181 int CigiCollDetSegRespV3::SetCollType(const CollTypeGrp CollTypeIn, bool bndchk)
00182 {
00183 
00184 #ifndef CIGI_NO_BND_CHK
00185    if(bndchk && ((CollTypeIn < 0)||(CollTypeIn > 1)))
00186    {
00187 #ifndef CIGI_NO_EXCEPT
00188       throw CigiValueOutOfRangeException("CollType",(CollTypeGrp)CollTypeIn,0,1);
00189 #endif
00190       return(CIGI_ERROR_VALUE_OUT_OF_RANGE);
00191    }
00192 #endif
00193 
00194    CollType = CollTypeIn;
00195    return(CIGI_SUCCESS);
00196 
00197 }
00198 
00199 

Generated on Wed Apr 29 08:59:58 2009 for CCL by  doxygen 1.4.7