#include <CigiSymbolSurfaceDefV3_3.h>
Inheritance diagram for CigiSymbolSurfaceDefV3_3:
Public Member Functions | |
CigiSymbolSurfaceDefV3_3 (void) | |
virtual | ~CigiSymbolSurfaceDefV3_3 (void) |
virtual int | Pack (CigiBasePacket *Base, Cigi_uint8 *Buff, void *Spec) const |
virtual int | Unpack (Cigi_uint8 *Buff, bool Swap, void *Spec) |
Definition at line 50 of file CigiSymbolSurfaceDefV3_3.h.
CigiSymbolSurfaceDefV3_3::CigiSymbolSurfaceDefV3_3 | ( | void | ) |
General Constructor
Definition at line 56 of file CigiSymbolSurfaceDefV3_3.cpp.
References CigiBaseSymbolSurfaceDef::Active, CigiBaseSymbolSurfaceDef::Attached, CigiBaseSymbolSurfaceDef::BillboardState, CIGI_SYMBOL_SURFACE_DEF_PACKET_ID_V3_3, CIGI_SYMBOL_SURFACE_DEF_PACKET_SIZE_V3_3, CigiBaseSymbolSurfaceDef::Enable, CigiBaseSymbolSurfaceDef::EntityAttached, CigiBaseSymbolSurfaceDef::EntityViewID, CigiBaseSymbolSurfaceDef::Height, CigiBaseSymbolSurfaceDef::MaxU, CigiBaseSymbolSurfaceDef::MaxV, CigiBasePacket::MinorVersion, CigiBaseSymbolSurfaceDef::MinU, CigiBaseSymbolSurfaceDef::MinV, CigiBaseSymbolSurfaceDef::NotBillboard, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseSymbolSurfaceDef::PerspectiveGrowth, CigiBaseSymbolSurfaceDef::Pitch, CigiBaseSymbolSurfaceDef::Roll, CigiBaseSymbolSurfaceDef::SurfaceID, CigiBaseSymbolSurfaceDef::SurfaceState, CigiBasePacket::Version, CigiBaseSymbolSurfaceDef::Width, CigiBaseSymbolSurfaceDef::XLeft, CigiBaseSymbolSurfaceDef::YawBottom, CigiBaseSymbolSurfaceDef::YRight, and CigiBaseSymbolSurfaceDef::ZTop.
00057 { 00058 PacketID = CIGI_SYMBOL_SURFACE_DEF_PACKET_ID_V3_3; 00059 PacketSize = CIGI_SYMBOL_SURFACE_DEF_PACKET_SIZE_V3_3; 00060 Version = 3; 00061 MinorVersion = 3; 00062 SurfaceID = 0; 00063 SurfaceState = CigiBaseSymbolSurfaceDef::Active; 00064 Attached = CigiBaseSymbolSurfaceDef::EntityAttached; 00065 BillboardState = CigiBaseSymbolSurfaceDef::NotBillboard; 00066 PerspectiveGrowth = CigiBaseSymbolSurfaceDef::Enable; 00067 EntityViewID = 0; 00068 XLeft = 0.0; 00069 YRight = 0.0; 00070 ZTop = 0.0; 00071 YawBottom = 0.0; 00072 Pitch = 0.0; 00073 Roll = 0.0; 00074 Width = 0.0; 00075 Height = 0.0; 00076 MinU = 0.0; 00077 MaxU = 0.0; 00078 MinV = 0.0; 00079 MaxV = 0.0; 00080 }
CigiSymbolSurfaceDefV3_3::~CigiSymbolSurfaceDefV3_3 | ( | void | ) | [virtual] |
int CigiSymbolSurfaceDefV3_3::Pack | ( | CigiBasePacket * | Base, | |
Cigi_uint8 * | Buff, | |||
void * | Spec | |||
) | const [virtual] |
A virtual Pack function.
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. |
Implements CigiBaseSymbolSurfaceDef.
Definition at line 98 of file CigiSymbolSurfaceDefV3_3.cpp.
References CigiBaseSymbolSurfaceDef::Attached, CigiBaseSymbolSurfaceDef::BillboardState, PackPointerUnion::c, CigiBaseSymbolSurfaceDef::EntityAttached, CigiBaseSymbolSurfaceDef::EntityViewID, PackPointerUnion::f, CigiBaseSymbolSurfaceDef::Height, PackPointerUnion::l, CigiBaseSymbolSurfaceDef::MaxU, CigiBaseSymbolSurfaceDef::MaxV, CigiBaseSymbolSurfaceDef::MinU, CigiBaseSymbolSurfaceDef::MinV, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseSymbolSurfaceDef::PerspectiveGrowth, CigiBaseSymbolSurfaceDef::Pitch, CigiBaseSymbolSurfaceDef::Roll, PackPointerUnion::s, CigiBaseSymbolSurfaceDef::SurfaceID, CigiBaseSymbolSurfaceDef::SurfaceState, CigiBaseSymbolSurfaceDef::Width, CigiBaseSymbolSurfaceDef::XLeft, CigiBaseSymbolSurfaceDef::YawBottom, CigiBaseSymbolSurfaceDef::YRight, and CigiBaseSymbolSurfaceDef::ZTop.
00099 { 00100 PackPointer CDta; 00101 00102 CigiSymbolSurfaceDefV3_3 * Data = 00103 ( CigiSymbolSurfaceDefV3_3 *)Base; 00104 00105 CDta.c = Buff; 00106 00107 *CDta.c++ = PacketID; 00108 *CDta.c++ = PacketSize; 00109 00110 *CDta.s++ = Data->SurfaceID; 00111 00112 unsigned char HDta = 0; 00113 HDta |= (Data->SurfaceState & 0x01); 00114 HDta |= ((Data->Attached << 1) & 0x02); 00115 HDta |= ((Data->BillboardState << 2) & 0x04); 00116 HDta |= ((Data->PerspectiveGrowth << 3) & 0x08); 00117 *CDta.c++ = HDta; 00118 00119 *CDta.c++ = 0; 00120 *CDta.s++ = Data->EntityViewID; 00121 *CDta.f++ = Data->XLeft; 00122 *CDta.f++ = Data->YRight; 00123 *CDta.f++ = Data->ZTop; 00124 *CDta.f++ = Data->YawBottom; 00125 00126 if(Attached == Data->EntityAttached) 00127 { 00128 *CDta.f++ = Data->Pitch; 00129 *CDta.f++ = Data->Roll; 00130 *CDta.f++ = Data->Width; 00131 *CDta.f++ = Data->Height; 00132 } 00133 else 00134 { 00135 *CDta.l++ = 0; 00136 *CDta.l++ = 0; 00137 *CDta.l++ = 0; 00138 *CDta.l++ = 0; 00139 } 00140 00141 *CDta.f++ = Data->MinU; 00142 *CDta.f++ = Data->MaxU; 00143 *CDta.f++ = Data->MinV; 00144 *CDta.f++ = Data->MaxV; 00145 00146 return(PacketSize); 00147 00148 }
int CigiSymbolSurfaceDefV3_3::Unpack | ( | Cigi_uint8 * | Buff, | |
bool | Swap, | |||
void * | Spec | |||
) | [virtual] |
A virtual Unpack function.
Buff | - A pointer to the current pack point. | |
Swap | - N/A for V1 & V2 | |
Spec | - A pointer to special data. |
Implements CigiBaseSymbolSurfaceDef.
Definition at line 153 of file CigiSymbolSurfaceDefV3_3.cpp.
References CigiBaseSymbolSurfaceDef::Attached, CigiBaseSymbolSurfaceDef::BillboardState, PackPointerUnion::c, CigiSwap2(), CigiSwap4(), CigiBaseSymbolSurfaceDef::EntityAttached, CigiBaseSymbolSurfaceDef::EntityViewID, PackPointerUnion::f, CigiBaseSymbolSurfaceDef::Height, PackPointerUnion::l, CigiBaseSymbolSurfaceDef::MaxU, CigiBaseSymbolSurfaceDef::MaxV, CigiBaseSymbolSurfaceDef::MinU, CigiBaseSymbolSurfaceDef::MinV, CigiBasePacket::PacketSize, CigiBaseSymbolSurfaceDef::PerspectiveGrowth, CigiBaseSymbolSurfaceDef::Pitch, CigiBaseSymbolSurfaceDef::Roll, PackPointerUnion::s, CigiBaseSymbolSurfaceDef::SurfaceID, CigiBaseSymbolSurfaceDef::SurfaceState, CigiBaseSymbolSurfaceDef::Width, CigiBaseSymbolSurfaceDef::XLeft, CigiBaseSymbolSurfaceDef::YawBottom, CigiBaseSymbolSurfaceDef::YRight, and CigiBaseSymbolSurfaceDef::ZTop.
00154 { 00155 PackPointer CDta; 00156 unsigned char HDta = 0; 00157 00158 CDta.c = Buff; 00159 00160 CDta.c += 2; // Step over packet id and size 00161 00162 if(!Swap) 00163 { 00164 SurfaceID = *CDta.s++; 00165 00166 HDta = *CDta.c++; 00167 Attached = (AttachStateGrp)((HDta >> 1) & 0x01); 00168 CDta.c++; 00169 00170 EntityViewID = *CDta.s++; 00171 XLeft = *CDta.f++; 00172 YRight = *CDta.f++; 00173 ZTop = *CDta.f++; 00174 YawBottom = *CDta.f++; 00175 00176 if(Attached == EntityAttached) 00177 { 00178 Pitch = *CDta.f++; 00179 Roll = *CDta.f++; 00180 Width = *CDta.f++; 00181 Height = *CDta.f++; 00182 } 00183 else 00184 { 00185 CDta.l += 4; 00186 00187 Pitch = 0.0f; 00188 Roll = 0.0f; 00189 Width = 0.0f; 00190 Height = 0.0f; 00191 } 00192 00193 MinU = *CDta.f++; 00194 MaxU = *CDta.f++; 00195 MinV = *CDta.f++; 00196 MaxV = *CDta.f++; 00197 } 00198 else 00199 { 00200 CigiSwap2(&SurfaceID, CDta.s++); 00201 00202 HDta = *CDta.c++; 00203 Attached = (AttachStateGrp)((HDta >> 1) & 0x01); 00204 CDta.c++; 00205 00206 CigiSwap2(&EntityViewID, CDta.s++); 00207 CigiSwap4(&XLeft, CDta.f++); 00208 CigiSwap4(&YRight, CDta.f++); 00209 CigiSwap4(&ZTop, CDta.f++); 00210 CigiSwap4(&YawBottom, CDta.f++); 00211 00212 if(Attached == EntityAttached) 00213 { 00214 CigiSwap4(&Pitch, CDta.f++); 00215 CigiSwap4(&Roll, CDta.f++); 00216 CigiSwap4(&Width, CDta.f++); 00217 CigiSwap4(&Height, CDta.f++); 00218 } 00219 else 00220 { 00221 CDta.l += 4; 00222 00223 Pitch = 0.0f; 00224 Roll = 0.0f; 00225 Width = 0.0f; 00226 Height = 0.0f; 00227 } 00228 00229 CigiSwap4(&MinU, CDta.f++); 00230 CigiSwap4(&MaxU, CDta.f++); 00231 CigiSwap4(&MinV, CDta.f++); 00232 CigiSwap4(&MaxV, CDta.f++); 00233 } 00234 00235 SurfaceState = (StateGrp)(HDta & 0x01); 00236 BillboardState = (BillboardStateGrp)((HDta >> 2) & 0x01); 00237 PerspectiveGrowth = (PerspectiveGrowthStateGrp)((HDta >> 3) & 0x01); 00238 00239 return(PacketSize); 00240 00241 }