mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Properly implement the ConCommandBase and ConCommand classes so we could statically construct all ConCommand objects in the global scope of each translation unit, this way we don't need to put them in a global file and deal with preprocessor directives to compile then in/out for certain projects.
99 lines
5.0 KiB
C
99 lines
5.0 KiB
C
//===== Copyright <20> 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 16
|
||
#define COORD_FRACTIONAL_BITS 5
|
||
#define COORD_DENOMINATOR (1<<(COORD_FRACTIONAL_BITS))
|
||
#define COORD_RESOLUTION (1.0f/(COORD_DENOMINATOR))
|
||
|
||
// Special threshold for networking multiplayer origins
|
||
#define COORD_INTEGER_BITS_MP 11
|
||
#define COORD_FRACTIONAL_BITS_MP_LOWPRECISION 3
|
||
#define COORD_DENOMINATOR_LOWPRECISION (1<<(COORD_FRACTIONAL_BITS_MP_LOWPRECISION))
|
||
#define COORD_RESOLUTION_LOWPRECISION (1.0f/(COORD_DENOMINATOR_LOWPRECISION))
|
||
|
||
#define NORMAL_FRACTIONAL_BITS 11
|
||
#define NORMAL_DENOMINATOR ((1<<(NORMAL_FRACTIONAL_BITS))-1)
|
||
#define NORMAL_RESOLUTION (1.0f/(NORMAL_DENOMINATOR))
|
||
|
||
// this is limited by the network fractional bits used for coords
|
||
// because net coords will 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
|