//========= Copyright 1996-2005, Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ // //=============================================================================// #ifndef COORDSIZE_H #define COORDSIZE_H #pragma once #include "worldsize.h" // OVERALL Coordinate Size Limits used in COMMON.C MSG_*BitCoord() Routines (and someday the HUD) #define COORD_INTEGER_BITS 14 #define COORD_FRACTIONAL_BITS 5 #define COORD_DENOMINATOR (1<<(COORD_FRACTIONAL_BITS)) #define COORD_RESOLUTION (1.0/(COORD_DENOMINATOR)) #define NORMAL_FRACTIONAL_BITS 11 #define NORMAL_DENOMINATOR ( (1<<(NORMAL_FRACTIONAL_BITS)) - 1 ) #define NORMAL_RESOLUTION (1.0/(NORMAL_DENOMINATOR)) // this is limited by the network fractional bits used for coords // because net coords will be only be accurate to 5 bits fractional // Standard collision test epsilon // 1/32nd inch collision epsilon #define DIST_EPSILON (0.03125) // Verify that coordsize.h and worldsize.h are consistently defined #if (MAX_COORD_INTEGER != (1<<COORD_INTEGER_BITS) ) #error MAX_COORD_INTEGER does not match COORD_INTEGER_BITS #endif /////////////////////////////////////////////////////////////////////////////////////////////////////// // The following are Bit Packing Diagrams for client/server Coordinate BitField Messages /////////////////////////////////////////////////////////////////////////////////////////////////////// // // "Coordinates" = +/-16384.9375 (21 Bits Max) // // | IntegerFlagBit:1 | FractionFlagBit:1 | SignBit:1 | IntegerField:14 | FractionPart:4 | Total // -------------------------------------------------------------------------------------------------- // 0 0 - - - 2 // 0 1 x - xxxx 7 // 1 0 x xxxxxxxxxxxxx - 17 // 1 1 x xxxxxxxxxxxxx xxxx 21 // /////////////////////////////////////////////////////////////////////////////////////////////////////// // // "Vec3Coordinate" = Up to 3 Coordinates (66 Bits Max) // // | NonZeroX:1 | NonZeroY:1 | NonZeroZ:1 | 0..3 "Coordinates" | BitField Total // ------------------------------------------------------------------------------- // 0 0 0 - 3 // 0 0 1 7..21 Bits 10..24 // 0 1 0 7..21 Bits 10..24 // 1 0 0 7..21 Bits 10..24 // 0 1 1 14..42 Bits 17..45 // 1 1 0 14..42 Bits 17..45 // 1 0 1 14..42 Bits 17..45 // 1 1 1 21..63 Bits 24..66 // /////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////// // The following are Bit Packing Diagrams for client/server Normal BitField Messages /////////////////////////////////////////////////////////////////////////////////////////////////////// // // "Normals" = +/-1.0 (12 Bits Total) // // The only gotcha here is that normalization occurs so that // 011111111111 = +1.0 and 1111111111111 = -1.0 // // | SignBit:1 | FractionPart:11 | Total // -------------------------------------------------------------------------------------------------- // 1 xxxxxxxxxxx 12 // /////////////////////////////////////////////////////////////////////////////////////////////////////// // // "Vec3Normal" = Up to 3 Coordinates (27 Bits Max) // // | NonZeroX:1 | NonZeroY:1 | 0..2 "Coordinates" | Z Sign Bit | BitField Total // ------------------------------------------------------------------------------- // 0 0 - x 3 // 0 1 12 Bits x 14 // 1 0 12 Bits x 14 // 1 1 24 Bits x 27 // /////////////////////////////////////////////////////////////////////////////////////////////////////// #endif // COORDSIZE_H
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 5821 | Knut Wikstrom |
Added Valve Source code. This is NOT to be commited to other than new code from Valve. |