iw4x-client/src/Game/Structs.hpp
2023-08-05 15:17:49 +02:00

11067 lines
224 KiB
C++

#pragma once
#define PROTOCOL 0x96
#define NUM_CUSTOM_CLASSES 15
#define FX_ELEM_FIELD_COUNT 90
#define MAX_QPATH 64
#define MAX_OSPATH 256
// This allows us to compile our structures in IDA, for easier reversing :3
#ifndef __cplusplus
#define IDA
#endif
#ifndef IDA
namespace Game
{
#endif
typedef float vec_t;
typedef vec_t vec2_t[2];
typedef vec_t vec3_t[3];
typedef vec_t vec4_t[4];
typedef unsigned __int16 scr_string_t;
struct scr_entref_t
{
unsigned __int16 entnum;
unsigned __int16 classnum;
};
typedef void(*BuiltinFunction)();
typedef void(*BuiltinMethod)(scr_entref_t);
struct BuiltinFunctionDef
{
const char* actionString;
BuiltinFunction actionFunc;
int type;
};
struct BuiltinMethodDef
{
const char* actionString;
BuiltinMethod actionFunc;
int type;
};
enum XAssetType
{
ASSET_TYPE_PHYSPRESET = 0x0,
ASSET_TYPE_PHYSCOLLMAP = 0x1,
ASSET_TYPE_XANIMPARTS = 0x2,
ASSET_TYPE_XMODEL_SURFS = 0x3,
ASSET_TYPE_XMODEL = 0x4,
ASSET_TYPE_MATERIAL = 0x5,
ASSET_TYPE_PIXELSHADER = 0x6,
ASSET_TYPE_VERTEXSHADER = 0x7,
ASSET_TYPE_VERTEXDECL = 0x8,
ASSET_TYPE_TECHNIQUE_SET = 0x9,
ASSET_TYPE_IMAGE = 0xA,
ASSET_TYPE_SOUND = 0xB,
ASSET_TYPE_SOUND_CURVE = 0xC,
ASSET_TYPE_LOADED_SOUND = 0xD,
ASSET_TYPE_CLIPMAP_SP = 0xE,
ASSET_TYPE_CLIPMAP_MP = 0xF,
ASSET_TYPE_COMWORLD = 0x10,
ASSET_TYPE_GAMEWORLD_SP = 0x11,
ASSET_TYPE_GAMEWORLD_MP = 0x12,
ASSET_TYPE_MAP_ENTS = 0x13,
ASSET_TYPE_FXWORLD = 0x14,
ASSET_TYPE_GFXWORLD = 0x15,
ASSET_TYPE_LIGHT_DEF = 0x16,
ASSET_TYPE_UI_MAP = 0x17,
ASSET_TYPE_FONT = 0x18,
ASSET_TYPE_MENULIST = 0x19,
ASSET_TYPE_MENU = 0x1A,
ASSET_TYPE_LOCALIZE_ENTRY = 0x1B,
ASSET_TYPE_WEAPON = 0x1C,
ASSET_TYPE_SNDDRIVER_GLOBALS = 0x1D,
ASSET_TYPE_FX = 0x1E,
ASSET_TYPE_IMPACT_FX = 0x1F,
ASSET_TYPE_AITYPE = 0x20,
ASSET_TYPE_MPTYPE = 0x21,
ASSET_TYPE_CHARACTER = 0x22,
ASSET_TYPE_XMODELALIAS = 0x23,
ASSET_TYPE_RAWFILE = 0x24,
ASSET_TYPE_STRINGTABLE = 0x25,
ASSET_TYPE_LEADERBOARD = 0x26,
ASSET_TYPE_STRUCTURED_DATA_DEF = 0x27,
ASSET_TYPE_TRACER = 0x28,
ASSET_TYPE_VEHICLE = 0x29,
ASSET_TYPE_ADDON_MAP_ENTS = 0x2A,
ASSET_TYPE_COUNT = 0x2B,
ASSET_TYPE_STRING = 0x2B,
ASSET_TYPE_ASSETLIST = 0x2C,
ASSET_TYPE_INVALID = -1,
};
enum GfxWarningType
{
R_WARN_FRONTEND_ENT_LIMIT = 0x0,
R_WARN_KNOWN_MODELS = 0x1,
R_WARN_KNOWN_PER_CLIENT_MODELS = 0x2,
R_WARN_KNOWN_SPECIAL_MODELS = 0x3,
R_WARN_MODEL_LIGHT_CACHE = 0x4,
R_WARN_SCENE_ENTITIES = 0x5,
R_WARN_TEMP_SKIN_BUF_SIZE = 0x6,
R_WARN_MAX_SKINNED_CACHE_VERTICES = 0x7,
R_WARN_MAX_SCENE_SURFS_SIZE = 0x8,
R_WARN_MAX_SURF_BUF = 0x9,
R_WARN_PORTAL_PLANES = 0xA,
R_WARN_MAX_CLOUDS = 0xB,
R_WARN_MAX_DLIGHTS = 0xC,
R_WARN_SMODEL_LIGHTING = 0xD,
R_WARN_SMODEL_VIS_DATA_LIMIT = 0xE,
R_WARN_SMODEL_SURF_LIMIT = 0xF,
R_WARN_SMODEL_SURF_DELAY_LIMIT = 0x10,
R_WARN_BSPSURF_DATA_LIMIT = 0x11,
R_WARN_BSPSURF_PRETESS_LIMIT = 0x12,
R_WARN_MAX_DRAWSURFS = 0x13,
R_WARN_GFX_CODE_EMISSIVE_SURF_LIMIT = 0x14,
R_WARN_GFX_CODE_TRANS_SURF_LIMIT = 0x15,
R_WARN_GFX_GLASS_SURF_LIMIT = 0x16,
R_WARN_GFX_MARK_SURF_LIMIT = 0x17,
R_WARN_GFX_SPARK_SURF_LIMIT = 0x18,
R_WARN_MAX_SCENE_DRAWSURFS = 0x19,
R_WARN_MAX_FX_DRAWSURFS = 0x1A,
R_WARN_NONEMISSIVE_FX_MATERIAL = 0x1B,
R_WARN_NONLIT_MARK_MATERIAL = 0x1C,
R_WARN_CMDBUF_OVERFLOW = 0x1D,
R_WARN_MISSING_DECL_NONDEBUG = 0x1E,
R_WARN_MAX_DYNENT_REFS = 0x1F,
R_WARN_MAX_SCENE_DOBJ_REFS = 0x20,
R_WARN_MAX_SCENE_MODEL_REFS = 0x21,
R_WARN_MAX_SCENE_BRUSH_REFS = 0x22,
R_WARN_MAX_CODE_EMISSIVE_INDS = 0x23,
R_WARN_MAX_CODE_EMISSIVE_VERTS = 0x24,
R_WARN_MAX_CODE_EMISSIVE_ARGS = 0x25,
R_WARN_MAX_CODE_TRANS_INDS = 0x26,
R_WARN_MAX_CODE_TRANS_VERTS = 0x27,
R_WARN_MAX_CODE_TRANS_ARGS = 0x28,
R_WARN_MAX_GLASS_INDS = 0x29,
R_WARN_MAX_GLASS_VERTS = 0x2A,
R_WARN_MAX_MARK_INDS = 0x2B,
R_WARN_MAX_MARK_VERTS = 0x2C,
R_WARN_MAX_SPARK_INDS = 0x2D,
R_WARN_MAX_SPARK_VERTS = 0x2E,
R_WARN_DEBUG_ALLOC = 0x2F,
R_WARN_SPOT_LIGHT_LIMIT = 0x30,
R_WARN_FX_ELEM_LIMIT = 0x31,
R_WARN_FX_BOLT_LIMIT = 0x32,
R_WARN_WORKER_CMD_SIZE = 0x33,
R_WARN_UNKNOWN_STATICMODEL_SHADER = 0x34,
R_WARN_UNKNOWN_XMODEL_SHADER = 0x35,
R_WARN_DYNAMIC_INDEX_BUFFER_SIZE = 0x36,
R_WARN_TOO_MANY_LIGHT_GRID_POINTS = 0x37,
R_WARN_FOGABLE_2DTEXT = 0x38,
R_WARN_FOGABLE_2DGLYPH = 0x39,
R_WARN_SUN_QUERY = 0x3A,
R_WARN_ESTIMATED_BOUNDS_TOO_SMALL = 0x3B,
R_WARN_COUNT = 0x3C,
};
enum surfType_t
{
R_SMODEL_SURFTYPE_RIGID = 0x0,
R_SMODEL_SURFTYPE_SKINNED = 0x1,
R_SMODEL_SURFTYPE_CACHED = 0x2,
R_SMODEL_SURFTYPE_PRETESS = 0x3,
R_SMODEL_SURFTYPE_COUNT = 0x4,
};
enum ShaderCodeConstants
{
CONST_SRC_CODE_MAYBE_DIRTY_PS_BEGIN = 0x0,
CONST_SRC_CODE_LIGHT_POSITION = 0x0,
CONST_SRC_CODE_LIGHT_DIFFUSE = 0x1,
CONST_SRC_CODE_LIGHT_SPECULAR = 0x2,
CONST_SRC_CODE_LIGHT_SPOTDIR = 0x3,
CONST_SRC_CODE_LIGHT_SPOTFACTORS = 0x4,
CONST_SRC_CODE_LIGHT_FALLOFF_PLACEMENT = 0x5,
CONST_SRC_CODE_PARTICLE_CLOUD_COLOR = 0x6,
CONST_SRC_CODE_GAMETIME = 0x7,
CONST_SRC_CODE_MAYBE_DIRTY_PS_END = 0x8,
CONST_SRC_CODE_ALWAYS_DIRTY_PS_BEGIN = 0x8,
CONST_SRC_CODE_PIXEL_COST_FRACS = 0x8,
CONST_SRC_CODE_PIXEL_COST_DECODE = 0x9,
CONST_SRC_CODE_FILTER_TAP_0 = 0xA,
CONST_SRC_CODE_FILTER_TAP_1 = 0xB,
CONST_SRC_CODE_FILTER_TAP_2 = 0xC,
CONST_SRC_CODE_FILTER_TAP_3 = 0xD,
CONST_SRC_CODE_FILTER_TAP_4 = 0xE,
CONST_SRC_CODE_FILTER_TAP_5 = 0xF,
CONST_SRC_CODE_FILTER_TAP_6 = 0x10,
CONST_SRC_CODE_FILTER_TAP_7 = 0x11,
CONST_SRC_CODE_COLOR_MATRIX_R = 0x12,
CONST_SRC_CODE_COLOR_MATRIX_G = 0x13,
CONST_SRC_CODE_COLOR_MATRIX_B = 0x14,
CONST_SRC_CODE_SHADOWMAP_POLYGON_OFFSET = 0x15,
CONST_SRC_CODE_RENDER_TARGET_SIZE = 0x16,
CONST_SRC_CODE_ALWAYS_DIRTY_PS_END = 0x17,
CONST_SRC_CODE_FIXED_PS_BEGIN = 0x17,
CONST_SRC_CODE_DOF_EQUATION_VIEWMODEL_AND_FAR_BLUR = 0x17,
CONST_SRC_CODE_DOF_EQUATION_SCENE = 0x18,
CONST_SRC_CODE_DOF_LERP_SCALE = 0x19,
CONST_SRC_CODE_DOF_LERP_BIAS = 0x1A,
CONST_SRC_CODE_DOF_ROW_DELTA = 0x1B,
CONST_SRC_CODE_MOTION_MATRIX_X = 0x1C,
CONST_SRC_CODE_MOTION_MATRIX_Y = 0x1D,
CONST_SRC_CODE_MOTION_MATRIX_W = 0x1E,
CONST_SRC_CODE_SHADOWMAP_SWITCH_PARTITION = 0x1F,
CONST_SRC_CODE_SHADOWMAP_SCALE = 0x20,
CONST_SRC_CODE_ZNEAR = 0x21,
CONST_SRC_CODE_LIGHTING_LOOKUP_SCALE = 0x22,
CONST_SRC_CODE_DEBUG_BUMPMAP = 0x23,
CONST_SRC_CODE_MATERIAL_COLOR = 0x24,
CONST_SRC_CODE_FOG = 0x25,
CONST_SRC_CODE_FOG_COLOR_LINEAR = 0x26,
CONST_SRC_CODE_FOG_COLOR_GAMMA = 0x27,
CONST_SRC_CODE_FOG_SUN_CONSTS = 0x28,
CONST_SRC_CODE_FOG_SUN_COLOR_LINEAR = 0x29,
CONST_SRC_CODE_FOG_SUN_COLOR_GAMMA = 0x2A,
CONST_SRC_CODE_FOG_SUN_DIR = 0x2B,
CONST_SRC_CODE_GLOW_SETUP = 0x2C,
CONST_SRC_CODE_GLOW_APPLY = 0x2D,
CONST_SRC_CODE_COLOR_BIAS = 0x2E,
CONST_SRC_CODE_COLOR_TINT_BASE = 0x2F,
CONST_SRC_CODE_COLOR_TINT_DELTA = 0x30,
CONST_SRC_CODE_COLOR_TINT_QUADRATIC_DELTA = 0x31,
CONST_SRC_CODE_OUTDOOR_FEATHER_PARMS = 0x32,
CONST_SRC_CODE_ENVMAP_PARMS = 0x33,
CONST_SRC_CODE_SUN_SHADOWMAP_PIXEL_ADJUST = 0x34,
CONST_SRC_CODE_SPOT_SHADOWMAP_PIXEL_ADJUST = 0x35,
CONST_SRC_CODE_COMPOSITE_FX_DISTORTION = 0x36,
CONST_SRC_CODE_POSTFX_FADE_EFFECT = 0x37,
CONST_SRC_CODE_VIEWPORT_DIMENSIONS = 0x38,
CONST_SRC_CODE_FRAMEBUFFER_READ = 0x39,
CONST_SRC_CODE_FIXED_PS_END = 0x3A,
CONST_SRC_CODE_NON_PS_BEGIN = 0x3A,
CONST_SRC_CODE_BASE_LIGHTING_COORDS = 0x3A,
CONST_SRC_CODE_LIGHT_PROBE_AMBIENT = 0x3B,
CONST_SRC_CODE_NEARPLANE_ORG = 0x3C,
CONST_SRC_CODE_NEARPLANE_DX = 0x3D,
CONST_SRC_CODE_NEARPLANE_DY = 0x3E,
CONST_SRC_CODE_CLIP_SPACE_LOOKUP_SCALE = 0x3F,
CONST_SRC_CODE_CLIP_SPACE_LOOKUP_OFFSET = 0x40,
CONST_SRC_CODE_PARTICLE_CLOUD_MATRIX0 = 0x41,
CONST_SRC_CODE_PARTICLE_CLOUD_MATRIX1 = 0x42,
CONST_SRC_CODE_PARTICLE_CLOUD_MATRIX2 = 0x43,
CONST_SRC_CODE_PARTICLE_CLOUD_SPARK_COLOR0 = 0x44,
CONST_SRC_CODE_PARTICLE_CLOUD_SPARK_COLOR1 = 0x45,
CONST_SRC_CODE_PARTICLE_CLOUD_SPARK_COLOR2 = 0x46,
CONST_SRC_CODE_PARTICLE_FOUNTAIN_PARM0 = 0x47,
CONST_SRC_CODE_PARTICLE_FOUNTAIN_PARM1 = 0x48,
CONST_SRC_CODE_DEPTH_FROM_CLIP = 0x49,
CONST_SRC_CODE_CODE_MESH_ARG_0 = 0x4A,
CONST_SRC_CODE_CODE_MESH_ARG_1 = 0x4B,
CONST_SRC_CODE_CODE_MESH_ARG_LAST = 0x4B,
CONST_SRC_CODE_NON_PS_END = 0x4C,
CONST_SRC_CODE_COUNT_FLOAT4 = 0x4C,
CONST_SRC_FIRST_CODE_MATRIX = 0x4C,
CONST_SRC_CODE_VIEW_MATRIX = 0x4C,
CONST_SRC_CODE_INVERSE_VIEW_MATRIX = 0x4D,
CONST_SRC_CODE_TRANSPOSE_VIEW_MATRIX = 0x4E,
CONST_SRC_CODE_INVERSE_TRANSPOSE_VIEW_MATRIX = 0x4F,
CONST_SRC_CODE_PROJECTION_MATRIX = 0x50,
CONST_SRC_CODE_INVERSE_PROJECTION_MATRIX = 0x51,
CONST_SRC_CODE_TRANSPOSE_PROJECTION_MATRIX = 0x52,
CONST_SRC_CODE_INVERSE_TRANSPOSE_PROJECTION_MATRIX = 0x53,
CONST_SRC_CODE_VIEW_PROJECTION_MATRIX = 0x54,
CONST_SRC_CODE_INVERSE_VIEW_PROJECTION_MATRIX = 0x55,
CONST_SRC_CODE_TRANSPOSE_VIEW_PROJECTION_MATRIX = 0x56,
CONST_SRC_CODE_INVERSE_TRANSPOSE_VIEW_PROJECTION_MATRIX = 0x57,
CONST_SRC_CODE_SHADOW_LOOKUP_MATRIX = 0x58,
CONST_SRC_CODE_INVERSE_SHADOW_LOOKUP_MATRIX = 0x59,
CONST_SRC_CODE_TRANSPOSE_SHADOW_LOOKUP_MATRIX = 0x5A,
CONST_SRC_CODE_INVERSE_TRANSPOSE_SHADOW_LOOKUP_MATRIX = 0x5B,
CONST_SRC_CODE_WORLD_OUTDOOR_LOOKUP_MATRIX = 0x5C,
CONST_SRC_CODE_INVERSE_WORLD_OUTDOOR_LOOKUP_MATRIX = 0x5D,
CONST_SRC_CODE_TRANSPOSE_WORLD_OUTDOOR_LOOKUP_MATRIX = 0x5E,
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_OUTDOOR_LOOKUP_MATRIX = 0x5F,
CONST_SRC_CODE_WORLD_MATRIX0 = 0x60,
CONST_SRC_CODE_INVERSE_WORLD_MATRIX0 = 0x61,
CONST_SRC_CODE_TRANSPOSE_WORLD_MATRIX0 = 0x62,
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_MATRIX0 = 0x63,
CONST_SRC_CODE_WORLD_VIEW_MATRIX0 = 0x64,
CONST_SRC_CODE_INVERSE_WORLD_VIEW_MATRIX0 = 0x65,
CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_MATRIX0 = 0x66,
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX0 = 0x67,
CONST_SRC_CODE_WORLD_VIEW_PROJECTION_MATRIX0 = 0x68,
CONST_SRC_CODE_INVERSE_WORLD_VIEW_PROJECTION_MATRIX0 = 0x69,
CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX0 = 0x6A,
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX0 = 0x6B,
CONST_SRC_CODE_WORLD_MATRIX1 = 0x6C,
CONST_SRC_CODE_INVERSE_WORLD_MATRIX1 = 0x6D,
CONST_SRC_CODE_TRANSPOSE_WORLD_MATRIX1 = 0x6E,
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_MATRIX1 = 0x6F,
CONST_SRC_CODE_WORLD_VIEW_MATRIX1 = 0x70,
CONST_SRC_CODE_INVERSE_WORLD_VIEW_MATRIX1 = 0x71,
CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_MATRIX1 = 0x72,
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX1 = 0x73,
CONST_SRC_CODE_WORLD_VIEW_PROJECTION_MATRIX1 = 0x74,
CONST_SRC_CODE_INVERSE_WORLD_VIEW_PROJECTION_MATRIX1 = 0x75,
CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX1 = 0x76,
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX1 = 0x77,
CONST_SRC_CODE_WORLD_MATRIX2 = 0x78,
CONST_SRC_CODE_INVERSE_WORLD_MATRIX2 = 0x79,
CONST_SRC_CODE_TRANSPOSE_WORLD_MATRIX2 = 0x7A,
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_MATRIX2 = 0x7B,
CONST_SRC_CODE_WORLD_VIEW_MATRIX2 = 0x7C,
CONST_SRC_CODE_INVERSE_WORLD_VIEW_MATRIX2 = 0x7D,
CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_MATRIX2 = 0x7E,
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX2 = 0x7F,
CONST_SRC_CODE_WORLD_VIEW_PROJECTION_MATRIX2 = 0x80,
CONST_SRC_CODE_INVERSE_WORLD_VIEW_PROJECTION_MATRIX2 = 0x81,
CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX2 = 0x82,
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX2 = 0x83,
CONST_SRC_TOTAL_COUNT = 0x84,
CONST_SRC_NONE = 0x85,
};
enum FsThread
{
FS_THREAD_MAIN = 0x0,
FS_THREAD_STREAM = 0x1,
FS_THREAD_DATABASE = 0x2,
FS_THREAD_BACKEND = 0x3,
FS_THREAD_SERVER = 0x4,
FS_THREAD_COUNT = 0x5,
FS_THREAD_INVALID = 0x6,
};
enum TextureSemantic : char
{
TS_2D = 0x0,
TS_FUNCTION = 0x1,
TS_COLOR_MAP = 0x2,
TS_DETAIL_MAP = 0x3,
TS_UNUSED_2 = 0x4,
TS_NORMAL_MAP = 0x5,
TS_UNUSED_3 = 0x6,
TS_UNUSED_4 = 0x7,
TS_SPECULAR_MAP = 0x8,
TS_UNUSED_5 = 0x9,
TS_UNUSED_6 = 0xA,
TS_WATER_MAP = 0xB,
};
enum materialSurfType_t
{
SURF_TYPE_DEFAULT,
SURF_TYPE_BARK,
SURF_TYPE_BRICK,
SURF_TYPE_CARPET,
SURF_TYPE_CLOTH,
SURF_TYPE_CONCRETE,
SURF_TYPE_DIRT,
SURF_TYPE_FLESH,
SURF_TYPE_FOLIAGE,
SURF_TYPE_GLASS,
SURF_TYPE_GRASS,
SURF_TYPE_GRAVEL,
SURF_TYPE_ICE,
SURF_TYPE_METAL,
SURF_TYPE_MUD,
SURF_TYPE_PAPER,
SURF_TYPE_PLASTER,
SURF_TYPE_ROCK,
SURF_TYPE_SAND,
SURF_TYPE_SNOW,
SURF_TYPE_WATER,
SURF_TYPE_WOOD,
SURF_TYPE_ASPHALT,
SURF_TYPE_CERAMIC,
SURF_TYPE_PLASTIC,
SURF_TYPE_RUBBER,
SURF_TYPE_CUSHION,
SURF_TYPE_FRUIT,
SURF_TYPE_PAINTED_METAL,
SURF_TYPE_RIOT_SHIELD,
SURF_TYPE_SLUSH,
SURF_TYPE_COUNT
};
enum : unsigned __int16
{
DVAR_NONE = 0, // No flags
DVAR_ARCHIVE = 1 << 0, // Set to cause it to be saved to config_mp.cfg of the client
DVAR_LATCH = 1 << 1, // Will only change when C code next does a Dvar_Get(), so it can't be changed
// without proper initialization. Modified will be set, even though the value hasn't changed yet
DVAR_CHEAT = 1 << 2, // Can not be changed if cheats are disabled
DVAR_CODINFO = 1 << 3, // On change, this is sent to all clients (if you are host)
DVAR_SCRIPTINFO = 1 << 4,
DVAR_TEMP = 1 << 5, // Best educated guess
DVAR_SAVED = 1 << 6,
DVAR_INTERNAL = 1 << 7, // Best educated guess
DVAR_EXTERNAL = 1 << 8, // Created by a set command
DVAR_USERINFO = 1 << 9, // Sent to server on connect or change
DVAR_SERVERINFO = 1 << 10, // Sent in response to front end requests
DVAR_INIT = 1 << 11, // Don't allow change from console at all
DVAR_SYSTEMINFO = 1 << 12, // Will be duplicated on all clients
DVAR_ROM = 1 << 13, // Display only, cannot be set by user at all
DVAR_CHANGEABLE_RESET = 1 << 14,
DVAR_AUTOEXEC = 1 << 15, // isLoadingAutoExecGlobalFlag is always false so it should be never set by the game
};
enum ImageCategory : char
{
IMG_CATEGORY_UNKNOWN = 0x0,
IMG_CATEGORY_AUTO_GENERATED = 0x1,
IMG_CATEGORY_LIGHTMAP = 0x2,
IMG_CATEGORY_LOAD_FROM_FILE = 0x3,
IMG_CATEGORY_RAW = 0x4,
IMG_CATEGORY_FIRST_UNMANAGED = 0x5,
IMG_CATEGORY_WATER = 0x5,
IMG_CATEGORY_RENDERTARGET = 0x6,
IMG_CATEGORY_TEMP = 0x7,
};
enum buttons_t
{
KB_LEFT = 0x0,
KB_RIGHT = 0x1,
KB_FORWARD = 0x2,
KB_BACK = 0x3,
KB_LOOKUP = 0x4,
KB_LOOKDOWN = 0x5,
KB_MOVELEFT = 0x6,
KB_MOVERIGHT = 0x7,
KB_STRAFE = 0x8,
KB_SPEED = 0x9,
KB_UP = 0xA,
KB_DOWN = 0xB,
KB_ANYUP = 0xC,
KB_MLOOK = 0xD,
KB_ATTACK = 0xE,
KB_BREATH = 0xF,
KB_FRAG = 0x10,
KB_OFFHANDSECONDARY = 0x11,
KB_MELEE = 0x12,
KB_ACTIVATE = 0x13,
KB_RELOAD = 0x14,
KB_USE_RELOAD = 0x15,
KB_PRONE = 0x16,
KB_CROUCH = 0x17,
KB_THROW = 0x18,
KB_SPRINT = 0x19,
KB_NIGHTVISION = 0x1A,
KB_TALK = 0x1B,
NUM_BUTTONS = 0x1C
};
enum DvarSetSource
{
DVAR_SOURCE_INTERNAL = 0x0,
DVAR_SOURCE_EXTERNAL = 0x1,
DVAR_SOURCE_SCRIPT = 0x2,
DVAR_SOURCE_DEVGUI = 0x3,
};
enum dvar_type : char
{
DVAR_TYPE_BOOL = 0x0,
DVAR_TYPE_FLOAT = 0x1,
DVAR_TYPE_FLOAT_2 = 0x2,
DVAR_TYPE_FLOAT_3 = 0x3,
DVAR_TYPE_FLOAT_4 = 0x4,
DVAR_TYPE_INT = 0x5,
DVAR_TYPE_ENUM = 0x6,
DVAR_TYPE_STRING = 0x7,
DVAR_TYPE_COLOR = 0x8,
DVAR_TYPE_FLOAT_3_COLOR = 0x9,
DVAR_TYPE_COUNT = 0xA,
};
enum clientState_t
{
CS_FREE = 0x0,
CS_ZOMBIE = 0x1,
CS_RECONNECTING = 0x2,
CS_CONNECTED = 0x3,
CS_CLIENTLOADING = 0x4,
CS_ACTIVE = 0x5,
};
enum serverState_t
{
SS_DEAD = 0x0,
SS_LOADING = 0x1,
SS_GAME = 0x2,
};
enum GfxLightType
{
GFX_LIGHT_TYPE_NONE = 0x0,
GFX_LIGHT_TYPE_DIR = 0x1,
GFX_LIGHT_TYPE_SPOT = 0x2,
GFX_LIGHT_TYPE_OMNI = 0x3,
GFX_LIGHT_TYPE_COUNT = 0x4,
GFX_LIGHT_TYPE_DIR_SHADOWMAP = 0x4,
GFX_LIGHT_TYPE_SPOT_SHADOWMAP = 0x5,
GFX_LIGHT_TYPE_OMNI_SHADOWMAP = 0x6,
GFX_LIGHT_TYPE_COUNT_WITH_SHADOWMAP_VERSIONS = 0x7,
};
enum errorParm_t
{
ERR_FATAL = 0x0,
ERR_DROP = 0x1,
ERR_SERVERDISCONNECT = 0x2,
ERR_DISCONNECT = 0x3,
ERR_SCRIPT = 0x4,
ERR_SCRIPT_DROP = 0x5,
ERR_LOCALIZATION = 0x6,
ERR_MAPLOADERRORSUMMARY = 0x7
};
enum ConfigString
{
CS_VOTE_TIME = 0x11,
CS_VOTE_STRING = 0x12,
CS_VOTE_YES = 0x13,
CS_VOTE_NO = 0x14,
CS_VOTE_MAPNAME = 0x15,
CS_VOTE_GAMETYPE = 0x16,
CS_SHELLSHOCKS = 0x985,
CS_ITEMS = 0x102A,
}; // Incomplete
enum conChannel_t
{
CON_CHANNEL_DONT_FILTER,
CON_CHANNEL_ERROR,
CON_CHANNEL_GAMENOTIFY,
CON_CHANNEL_BOLDGAME,
CON_CHANNEL_SUBTITLE,
CON_CHANNEL_OBITUARY,
CON_CHANNEL_LOGFILEONLY,
CON_CHANNEL_CONSOLEONLY,
CON_CHANNEL_GFX,
CON_CHANNEL_SOUND,
CON_CHANNEL_FILES,
CON_CHANNEL_DEVGUI,
CON_CHANNEL_PROFILE,
CON_CHANNEL_UI,
CON_CHANNEL_CLIENT,
CON_CHANNEL_SERVER,
CON_CHANNEL_SYSTEM,
CON_CHANNEL_PLAYERWEAP,
CON_CHANNEL_AI,
CON_CHANNEL_ANIM,
CON_CHANNEL_PHYS,
CON_CHANNEL_FX,
CON_CHANNEL_LEADERBOARDS,
CON_CHANNEL_PARSERSCRIPT,
CON_CHANNEL_SCRIPT,
CON_CHANNEL_NETWORK,
CON_BUILTIN_CHANNEL_COUNT,
};
enum meansOfDeath_t
{
MOD_UNKNOWN = 0x0,
MOD_PISTOL_BULLET = 0x1,
MOD_RIFLE_BULLET = 0x2,
MOD_EXPLOSIVE_BULLET = 0x3,
MOD_GRENADE = 0x4,
MOD_GRENADE_SPLASH = 0x5,
MOD_PROJECTILE = 0x6,
MOD_PROJECTILE_SPLASH = 0x7,
MOD_MELEE = 0x8,
MOD_HEAD_SHOT = 0x9,
MOD_CRUSH = 0xA,
MOD_FALLING = 0xB,
MOD_SUICIDE = 0xC,
MOD_TRIGGER_HURT = 0xD,
MOD_EXPLOSIVE = 0xE,
MOD_IMPACT = 0xF,
MOD_NUM = 0x10,
};
enum
{
FL_GODMODE = 1 << 0,
FL_DEMI_GODMODE = 1 << 1,
FL_NOTARGET = 1 << 2,
FL_NO_KNOCKBACK = 1 << 3,
FL_NO_RADIUS_DAMAGE = 1 << 4,
FL_SUPPORTS_LINKTO = 1 << 12,
FL_NO_AUTO_ANIM_UPDATE = 1 << 13,
FL_GRENADE_TOUCH_DAMAGE = 1 << 14,
FL_STABLE_MISSILES = 1 << 17,
FL_REPEAT_ANIM_UPDATE = 1 << 18,
FL_VEHICLE_TARGET = 1 << 19,
FL_GROUND_ENT = 1 << 20,
FL_CURSOR_HINT = 1 << 21,
FL_MISSILE_ATTRACTOR = 1 << 23,
FL_WEAPON_BEING_GRABBED = 1 << 24,
FL_DELETE = 1 << 25,
FL_BOUNCE = 1 << 26,
FL_MOVER_SLIDE = 1 << 27
};
enum ClassNum : unsigned int
{
CLASS_NUM_ENTITY = 0x0,
CLASS_NUM_HUDELEM = 0x1,
CLASS_NUM_PATHNODE = 0x2,
CLASS_NUM_VEHICLENODE = 0x3,
CLASS_NUM_VEHTRACK_SEGMENT = 0x4,
CLASS_NUM_FXENTITY = 0x5,
CLASS_NUM_COUNT = 0x6,
};
enum hitLocation_t
{
HITLOC_NONE,
HITLOC_HELMET,
HITLOC_HEAD,
HITLOC_NECK,
HITLOC_TORSO_UPR,
HITLOC_TORSO_LWR,
HITLOC_R_ARM_UPR,
HITLOC_L_ARM_UPR,
HITLOC_R_ARM_LWR,
HITLOC_L_ARM_LWR,
HITLOC_R_HAND,
HITLOC_L_HAND,
HITLOC_R_LEG_UPR,
HITLOC_L_LEG_UPR,
HITLOC_R_LEG_LWR,
HITLOC_L_LEG_LWR,
HITLOC_R_FOOT,
HITLOC_L_FOOT,
HITLOC_GUN,
HITLOC_SHIELD,
HITLOC_NUM
};
enum svscmd_type
{
SV_CMD_CAN_IGNORE = 0x0,
SV_CMD_RELIABLE = 0x1,
};
struct FxEffectDef;
struct pathnode_t;
struct pathnode_tree_t;
struct GfxPortal;
struct Statement_s;
struct MenuEventHandlerSet;
struct menuDef_t;
struct CmdArgs
{
int nesting;
int localClientNum[8];
int controllerIndex[8];
int argc[8];
const char** argv[8];
};
static_assert(sizeof(CmdArgs) == 0x84);
struct cmd_function_s
{
cmd_function_s* next;
const char* name;
const char* autoCompleteDir;
const char* autoCompleteExt;
void(__cdecl* function)();
int flags;
};
#pragma pack(push, 4)
struct kbutton_t
{
int down[2];
unsigned int downtime;
unsigned int msec;
bool active;
bool wasPressed;
};
#pragma pack(pop)
enum KeyCatch_t
{
KEYCATCH_MASK_ANY = -1,
KEYCATCH_CONSOLE = 0x1,
KEYCATCH_UNKNOWN2 = 0x2,
KEYCATCH_UNKNOWN4 = 0x4,
KEYCATCH_LOCATION_SELECTION = 0x8,
KEYCATCH_UI = 0x10,
KEYCATCH_CHAT = 0x20,
KEYCATCH_UNKNOWN40 = 0x40,
KEYCATCH_UNKNOWN80 = 0x80,
KEYCATCH_UNKNOWN100 = 0x100,
};
enum keyNum_t
{
K_NONE = 0x0,
K_FIRSTGAMEPADBUTTON_RANGE_1 = 0x1, // First Gamepad 1
K_BUTTON_A = 0x1,
K_BUTTON_B = 0x2,
K_BUTTON_X = 0x3,
K_BUTTON_Y = 0x4,
K_BUTTON_LSHLDR = 0x5,
K_BUTTON_RSHLDR = 0x6,
K_LASTGAMEPADBUTTON_RANGE_1 = 0x6, // Last Gamepad 1
K_TAB = 0x9,
K_ENTER = 0xD,
K_FIRSTGAMEPADBUTTON_RANGE_2 = 0xE, // First Gamepad 2
K_BUTTON_START = 0xE,
K_BUTTON_BACK = 0xF,
K_BUTTON_LSTICK = 0x10,
K_BUTTON_RSTICK = 0x11,
K_BUTTON_LTRIG = 0x12,
K_BUTTON_RTRIG = 0x13,
K_FIRSTDPAD = 0x14, // First Dpad
K_DPAD_UP = 0x14,
K_DPAD_DOWN = 0x15,
K_DPAD_LEFT = 0x16,
K_DPAD_RIGHT = 0x17,
K_LASTDPAD = 0x17, // Last Dpad
K_DPAD_LEFTRIGHT = 0x18,
K_DPAD_UPDOWN = 0x19,
K_LASTGAMEPADBUTTON_RANGE_2 = 0x19, // Last Gamepad 2
K_ESCAPE = 0x1B,
K_FIRSTGAMEPADBUTTON_RANGE_3 = 0x1C, // First Gamepad 3
K_FIRSTAPAD = 0x1C, // First APad
K_APAD_UP = 0x1C,
K_APAD_DOWN = 0x1D,
K_APAD_LEFT = 0x1E,
K_APAD_RIGHT = 0x1F,
K_LASTAPAD = 0x1F, // Last APad
K_LASTGAMEPADBUTTON_RANGE_3 = 0x1F, // Last Gamepad 3
K_SPACE = 0x20,
K_BACKSPACE = 0x7F,
K_ASCII_FIRST = 0x80,
K_ASCII_181 = 0x80,
K_ASCII_191 = 0x81,
K_ASCII_223 = 0x82,
K_ASCII_224 = 0x83,
K_ASCII_225 = 0x84,
K_ASCII_228 = 0x85,
K_ASCII_229 = 0x86,
K_ASCII_230 = 0x87,
K_ASCII_231 = 0x88,
K_ASCII_232 = 0x89,
K_ASCII_233 = 0x8A,
K_ASCII_236 = 0x8B,
K_ASCII_241 = 0x8C,
K_ASCII_242 = 0x8D,
K_ASCII_243 = 0x8E,
K_ASCII_246 = 0x8F,
K_ASCII_248 = 0x90,
K_ASCII_249 = 0x91,
K_ASCII_250 = 0x92,
K_ASCII_252 = 0x93,
K_END_ASCII_CHARS = 0x94,
K_COMMAND = 0x96,
K_CAPSLOCK = 0x97,
K_POWER = 0x98,
K_PAUSE = 0x99,
K_UPARROW = 0x9A,
K_DOWNARROW = 0x9B,
K_LEFTARROW = 0x9C,
K_RIGHTARROW = 0x9D,
K_ALT = 0x9E,
K_CTRL = 0x9F,
K_SHIFT = 0xA0,
K_INS = 0xA1,
K_DEL = 0xA2,
K_PGDN = 0xA3,
K_PGUP = 0xA4,
K_HOME = 0xA5,
K_END = 0xA6,
K_F1 = 0xA7,
K_F2 = 0xA8,
K_F3 = 0xA9,
K_F4 = 0xAA,
K_F5 = 0xAB,
K_F6 = 0xAC,
K_F7 = 0xAD,
K_F8 = 0xAE,
K_F9 = 0xAF,
K_F10 = 0xB0,
K_F11 = 0xB1,
K_F12 = 0xB2,
K_F13 = 0xB3,
K_F14 = 0xB4,
K_F15 = 0xB5,
K_KP_HOME = 0xB6,
K_KP_UPARROW = 0xB7,
K_KP_PGUP = 0xB8,
K_KP_LEFTARROW = 0xB9,
K_KP_5 = 0xBA,
K_KP_RIGHTARROW = 0xBB,
K_KP_END = 0xBC,
K_KP_DOWNARROW = 0xBD,
K_KP_PGDN = 0xBE,
K_KP_ENTER = 0xBF,
K_KP_INS = 0xC0,
K_KP_DEL = 0xC1,
K_KP_SLASH = 0xC2,
K_KP_MINUS = 0xC3,
K_KP_PLUS = 0xC4,
K_KP_NUMLOCK = 0xC5,
K_KP_STAR = 0xC6,
K_KP_EQUALS = 0xC7,
K_MOUSE1 = 0xC8,
K_MOUSE2 = 0xC9,
K_MOUSE3 = 0xCA,
K_MOUSE4 = 0xCB,
K_MOUSE5 = 0xCC,
K_MWHEELDOWN = 0xCD,
K_MWHEELUP = 0xCE,
K_AUX1 = 0xCF,
K_AUX2 = 0xD0,
K_AUX3 = 0xD1,
K_AUX4 = 0xD2,
K_AUX5 = 0xD3,
K_AUX6 = 0xD4,
K_AUX7 = 0xD5,
K_AUX8 = 0xD6,
K_AUX9 = 0xD7,
K_AUX10 = 0xD8,
K_AUX11 = 0xD9,
K_AUX12 = 0xDA,
K_AUX13 = 0xDB,
K_AUX14 = 0xDC,
K_AUX15 = 0xDD,
K_AUX16 = 0xDE,
K_LAST_KEY = 0xDF,
};
enum uiMenuCommand_t
{
UIMENU_NONE = 0x0,
UIMENU_MAIN = 0x1,
UIMENU_INGAME = 0x2,
UIMENU_PREGAME = 0x3,
UIMENU_POSTGAME = 0x4,
UIMENU_SCRIPT_POPUP = 0x5,
UIMENU_SCOREBOARD = 0x6,
UIMENU_PARTY = 0x7,
UIMENU_GAMELOBBY = 0x8,
UIMENU_PRIVATELOBBY = 0x9,
UIMENU_ENDOFGAME = 0xA,
UIMENU_MIGRATION = 0xB,
};
struct __declspec(align(4)) PhysPreset
{
const char* name;
int type;
float mass;
float bounce;
float friction;
float bulletForceScale;
float explosiveForceScale;
const char* sndAliasPrefix;
float piecesSpreadFraction;
float piecesUpwardVelocity;
bool tempDefaultToCylinder;
bool perSurfaceSndAlias;
};
struct Bounds
{
float midPoint[3];
float halfSize[3];
};
struct cplane_s
{
float normal[3];
float dist;
unsigned char type;
unsigned char pad[3];
};
struct cbrushside_t
{
cplane_s* plane;
unsigned __int16 materialNum;
char firstAdjacentSideOffset;
char edgeCount;
};
struct cbrush_t
{
unsigned short numsides;
unsigned short glassPieceIndex;
cbrushside_t* sides;
unsigned char* baseAdjacentSide;
unsigned short axialMaterialNum[2][3];
unsigned char firstAdjacentSideOffsets[2][3];
unsigned char edgeCount[2][3];
};
struct BrushWrapper
{
Bounds bounds;
cbrush_t brush;
int totalEdgeCount;
cplane_s* planes;
};
struct PhysGeomInfo
{
BrushWrapper* brushWrapper;
int type;
float orientation[3][3];
Bounds bounds;
};
struct PhysMass
{
float centerOfMass[3];
float momentsOfInertia[3];
float productsOfInertia[3];
};
struct PhysCollmap
{
const char* name;
unsigned int count;
PhysGeomInfo* geoms;
PhysMass mass;
Bounds bounds;
};
union XAnimIndices
{
char* _1;
unsigned __int16* _2;
void* data;
};
struct XAnimNotifyInfo
{
unsigned __int16 name;
float time;
};
union XAnimDynamicFrames
{
char(*_1)[3];
unsigned __int16(*_2)[3];
};
union XAnimDynamicIndices
{
char _1[1];
unsigned __int16 _2[1];
};
struct __declspec(align(4)) XAnimPartTransFrames
{
float mins[3];
float size[3];
XAnimDynamicFrames frames;
XAnimDynamicIndices indices;
};
union XAnimPartTransData
{
XAnimPartTransFrames frames;
float frame0[3];
};
struct XAnimPartTrans
{
unsigned __int16 size;
char smallTrans;
XAnimPartTransData u;
};
struct __declspec(align(4)) XAnimDeltaPartQuatDataFrames2
{
__int16(*frames)[2];
XAnimDynamicIndices indices;
};
union XAnimDeltaPartQuatData2
{
XAnimDeltaPartQuatDataFrames2 frames;
__int16 frame0[2];
};
struct XAnimDeltaPartQuat2
{
unsigned __int16 size;
XAnimDeltaPartQuatData2 u;
};
struct __declspec(align(4)) XAnimDeltaPartQuatDataFrames
{
__int16(*frames)[4];
XAnimDynamicIndices indices;
};
union XAnimDeltaPartQuatData
{
XAnimDeltaPartQuatDataFrames frames;
__int16 frame0[4];
};
struct XAnimDeltaPartQuat
{
unsigned __int16 size;
XAnimDeltaPartQuatData u;
};
struct XAnimDeltaPart
{
XAnimPartTrans* trans;
XAnimDeltaPartQuat2* quat2;
XAnimDeltaPartQuat* quat;
};
struct XAnimParts
{
const char* name;
unsigned __int16 dataByteCount;
unsigned __int16 dataShortCount;
unsigned __int16 dataIntCount;
unsigned __int16 randomDataByteCount;
unsigned __int16 randomDataIntCount;
unsigned __int16 numframes;
char flags;
char boneCount[10];
char notifyCount;
char assetType;
bool isDefault;
unsigned int randomDataShortCount;
unsigned int indexCount;
float framerate;
float frequency;
unsigned __int16* names;
char* dataByte;
__int16* dataShort;
int* dataInt;
__int16* randomDataShort;
char* randomDataByte;
int* randomDataInt;
XAnimIndices indices;
XAnimNotifyInfo* notify;
XAnimDeltaPart* deltaPart;
};
struct XSurfaceVertexInfo
{
__int16 vertCount[4];
unsigned __int16* vertsBlend;
};
union GfxColor
{
unsigned int packed;
char array[4];
};
union PackedTexCoords
{
unsigned int packed;
};
union PackedUnitVec
{
unsigned int packed;
char array[4];
};
struct GfxPackedVertex
{
float xyz[3];
float binormalSign;
GfxColor color;
PackedTexCoords texCoord;
PackedUnitVec normal;
PackedUnitVec tangent;
};
struct XSurfaceCollisionAabb
{
unsigned __int16 mins[3];
unsigned __int16 maxs[3];
};
struct XSurfaceCollisionNode
{
XSurfaceCollisionAabb aabb;
unsigned __int16 childBeginIndex;
unsigned __int16 childCount;
};
struct XSurfaceCollisionLeaf
{
unsigned __int16 triangleBeginIndex;
};
struct XSurfaceCollisionTree
{
float trans[3];
float scale[3];
unsigned int nodeCount;
XSurfaceCollisionNode* nodes;
unsigned int leafCount;
XSurfaceCollisionLeaf* leafs;
};
struct XRigidVertList
{
unsigned __int16 boneOffset;
unsigned __int16 vertCount;
unsigned __int16 triOffset;
unsigned __int16 triCount;
XSurfaceCollisionTree* collisionTree;
};
struct XSurface
{
char tileMode;
bool deformed;
unsigned __int16 vertCount;
unsigned __int16 triCount;
char zoneHandle;
unsigned __int16 baseTriIndex;
unsigned __int16 baseVertIndex;
unsigned __int16* triIndices;
XSurfaceVertexInfo vertInfo;
GfxPackedVertex* verts0;
unsigned int vertListCount;
XRigidVertList* vertList;
int partBits[6];
};
struct XModelSurfs
{
const char* name;
XSurface* surfs;
unsigned __int16 numsurfs;
int partBits[6];
};
struct DObjAnimMat
{
float quat[4];
float trans[3];
float transWeight;
};
struct GfxDrawSurfFields
{
unsigned __int64 objectId : 16;
unsigned __int64 reflectionProbeIndex : 8;
unsigned __int64 hasGfxEntIndex : 1;
unsigned __int64 customIndex : 5;
unsigned __int64 materialSortedIndex : 12;
unsigned __int64 prepass : 2;
unsigned __int64 useHeroLighting : 1;
unsigned __int64 sceneLightIndex : 8;
unsigned __int64 surfType : 4;
unsigned __int64 primarySortKey : 6;
unsigned __int64 unused : 1;
};
union GfxDrawSurf
{
GfxDrawSurfFields fields;
unsigned __int64 packed;
};
struct MaterialInfo
{
const char* name;
unsigned char gameFlags;
unsigned char sortKey;
unsigned char textureAtlasRowCount;
unsigned char textureAtlasColumnCount;
GfxDrawSurf drawSurf;
unsigned int surfaceTypeBits;
unsigned __int16 hashIndex;
};
struct MaterialStreamRouting
{
char source;
char dest;
};
struct MaterialVertexStreamRouting
{
MaterialStreamRouting data[13];
IDirect3DVertexDeclaration9* decl[16];
};
struct MaterialVertexDeclaration
{
const char* name;
char streamCount;
bool hasOptionalSource;
MaterialVertexStreamRouting routing;
};
struct GfxVertexShaderLoadDef
{
unsigned int* program;
unsigned __int16 programSize;
unsigned __int16 loadForRenderer;
};
struct MaterialVertexShaderProgram
{
IDirect3DVertexShader9* vs;
GfxVertexShaderLoadDef loadDef;
};
struct MaterialVertexShader
{
const char* name;
MaterialVertexShaderProgram prog;
};
struct GfxPixelShaderLoadDef
{
unsigned int* program;
unsigned __int16 programSize;
unsigned __int16 loadForRenderer;
};
struct MaterialPixelShaderProgram
{
IDirect3DPixelShader9* ps;
GfxPixelShaderLoadDef loadDef;
};
struct MaterialPixelShader
{
const char* name;
MaterialPixelShaderProgram prog;
};
enum MaterialShaderArgumentType : unsigned __int16
{
MTL_ARG_MATERIAL_VERTEX_CONST = 0x0,
MTL_ARG_LITERAL_VERTEX_CONST = 0x1,
MTL_ARG_MATERIAL_PIXEL_SAMPLER = 0x2,
MTL_ARG_CODE_PRIM_BEGIN = 0x3,
MTL_ARG_CODE_VERTEX_CONST = 0x3,
MTL_ARG_CODE_PIXEL_SAMPLER = 0x4,
MTL_ARG_CODE_PIXEL_CONST = 0x5,
MTL_ARG_CODE_PRIM_END = 0x6,
MTL_ARG_MATERIAL_PIXEL_CONST = 0x6,
MTL_ARG_LITERAL_PIXEL_CONST = 0x7,
MTL_ARG_COUNT = 0x8,
};
struct MaterialArgumentCodeConst
{
unsigned __int16 index;
char firstRow;
char rowCount;
};
union MaterialArgumentDef
{
float* literalConst;
MaterialArgumentCodeConst codeConst;
unsigned int codeSampler;
unsigned int nameHash;
};
struct MaterialShaderArgument
{
MaterialShaderArgumentType type;
unsigned __int16 dest;
MaterialArgumentDef u;
};
struct MaterialPass
{
MaterialVertexDeclaration* vertexDecl;
MaterialVertexShader* vertexShader;
MaterialPixelShader* pixelShader;
char perPrimArgCount;
char perObjArgCount;
char stableArgCount;
char customSamplerFlags;
MaterialShaderArgument* args;
};
struct visionSetVars_t
{
bool glowEnable;
float glowBloomCutoff;
float glowBloomDesaturation;
float glowBloomIntensity0;
float glowBloomIntensity1;
float glowRadius0;
float glowRadius1;
float glowSkyBleedIntensity0;
float glowSkyBleedIntensity1;
bool filmEnable;
float filmBrightness;
float filmContrast;
float filmDesaturation;
float filmDesaturationDark;
bool filmInvert;
float filmLightTint[3];
float filmMediumTint[3];
float filmDarkTint[3];
bool charPrimaryUseTweaks;
float charPrimaryDiffuseScale;
float charPrimarySpecularScale;
};
struct visField_t
{
const char* name;
int offset;
// 0 is for int, 1 is for float, otherwise it's a vector
int fieldType;
};
enum OffhandClass
{
OFFHAND_CLASS_NONE = 0x0,
OFFHAND_CLASS_FRAG_GRENADE = 0x1,
OFFHAND_CLASS_SMOKE_GRENADE = 0x2,
OFFHAND_CLASS_FLASH_GRENADE = 0x3,
OFFHAND_CLASS_THROWINGKNIFE = 0x4,
OFFHAND_CLASS_OTHER = 0x5,
OFFHAND_CLASS_COUNT = 0x6,
};
enum ViewLockTypes
{
PLAYERVIEWLOCK_NONE = 0x0,
PLAYERVIEWLOCK_FULL = 0x1,
PLAYERVIEWLOCK_WEAPONJITTER = 0x2,
PLAYERVIEWLOCKCOUNT = 0x3,
};
struct SprintState
{
int sprintButtonUpRequired;
int sprintDelay;
int lastSprintStart;
int lastSprintEnd;
int sprintStartMaxLength;
};
struct MantleState
{
float yaw;
int timer;
int transIndex;
int flags;
};
struct PlayerActiveWeaponState
{
int weapAnim;
int weaponTime;
int weaponDelay;
int weaponRestrictKickTime;
int weaponState;
int weapHandFlags;
unsigned int weaponShotCount;
};
struct PlayerEquippedWeaponState
{
bool usedBefore;
bool dualWielding;
char weaponModel;
bool needsRechamber[2];
};
struct GlobalAmmo
{
int ammoType;
int ammoCount;
};
struct ClipAmmo
{
int clipIndex;
int ammoCount[2];
};
enum PlayerHandIndex
{
WEAPON_HAND_RIGHT = 0x0,
WEAPON_HAND_LEFT = 0x1,
NUM_WEAPON_HANDS = 0x2,
WEAPON_HAND_DEFAULT = 0x0,
};
struct PlayerWeaponCommonState
{
int offHandIndex;
OffhandClass offhandPrimary;
OffhandClass offhandSecondary;
unsigned int weapon;
unsigned int primaryWeaponForAltMode;
int weapFlags;
float fWeaponPosFrac;
float aimSpreadScale;
int adsDelayTime;
int spreadOverride;
int spreadOverrideState;
PlayerHandIndex lastWeaponHand;
GlobalAmmo ammoNotInClip[15];
ClipAmmo ammoInClip[15];
int weapLockFlags;
int weapLockedEntnum;
float weapLockedPos[3];
int weaponIdleTime;
};
enum ActionSlotType
{
ACTIONSLOTTYPE_DONOTHING = 0x0,
ACTIONSLOTTYPE_SPECIFYWEAPON = 0x1,
ACTIONSLOTTYPE_ALTWEAPONTOGGLE = 0x2,
ACTIONSLOTTYPE_NIGHTVISION = 0x3,
ACTIONSLOTTYPECOUNT = 0x4,
};
struct ActionSlotParam_SpecifyWeapon
{
unsigned int index;
};
struct ActionSlotParam
{
ActionSlotParam_SpecifyWeapon specifyWeapon;
};
enum objectiveState_t
{
OBJST_EMPTY = 0x0,
OBJST_ACTIVE = 0x1,
OBJST_INVISIBLE = 0x2,
OBJST_DONE = 0x3,
OBJST_CURRENT = 0x4,
OBJST_FAILED = 0x5,
OBJST_NUMSTATES = 0x6,
};
struct objective_t
{
objectiveState_t state;
float origin[3];
int entNum;
int teamNum;
int icon;
};
enum he_type_t
{
HE_TYPE_FREE = 0x0,
HE_TYPE_TEXT = 0x1,
HE_TYPE_VALUE = 0x2,
HE_TYPE_PLAYERNAME = 0x3,
HE_TYPE_MAPNAME = 0x4,
HE_TYPE_GAMETYPE = 0x5,
HE_TYPE_MATERIAL = 0x6,
HE_TYPE_TIMER_DOWN = 0x7,
HE_TYPE_TIMER_UP = 0x8,
HE_TYPE_TIMER_STATIC = 0x9,
HE_TYPE_TENTHS_TIMER_DOWN = 0xA,
HE_TYPE_TENTHS_TIMER_UP = 0xB,
HE_TYPE_TENTHS_TIMER_STATIC = 0xC,
HE_TYPE_CLOCK_DOWN = 0xD,
HE_TYPE_CLOCK_UP = 0xE,
HE_TYPE_WAYPOINT = 0xF,
HE_TYPE_COUNT = 0x10,
};
struct hud_color
{
char r;
char g;
char b;
char a;
};
union hudelem_color_t
{
hud_color __s0;
int rgba;
};
struct hudelem_s
{
he_type_t type;
float x;
float y;
float z;
int targetEntNum;
float fontScale;
float fromFontScale;
int fontScaleStartTime;
int fontScaleTime;
int font;
int alignOrg;
int alignScreen;
hudelem_color_t color;
hudelem_color_t fromColor;
int fadeStartTime;
int fadeTime;
int label;
int width;
int height;
int materialIndex;
int fromWidth;
int fromHeight;
int scaleStartTime;
int scaleTime;
float fromX;
float fromY;
int fromAlignOrg;
int fromAlignScreen;
int moveStartTime;
int moveTime;
int time;
int duration;
float value;
int text;
float sort;
hudelem_color_t glowColor;
int fxBirthTime;
int fxLetterTime;
int fxDecayStartTime;
int fxDecayDuration;
int soundID;
int flags;
};
struct game_hudelem_s
{
hudelem_s elem;
int clientNum;
int team;
int archived;
};
enum
{
PMF_PRONE = 1 << 0,
PMF_DUCKED = 1 << 1,
PMF_MANTLE = 1 << 2,
PMF_LADDER = 1 << 3,
PMF_SIGHT_AIMING = 1 << 4,
PMF_BACKWARDS_RUN = 1 << 5,
PMF_WALKING = 1 << 6,
PMF_TIME_HARDLANDING = 1 << 7,
PMF_TIME_KNOCKBACK = 1 << 8,
PMF_PRONEMOVE_OVERRIDDEN = 1 << 9,
PMF_RESPAWNED = 1 << 10,
PMF_FROZEN = 1 << 11,
PMF_LADDER_FALL = 1 << 12,
PMF_JUMPING = 1 << 13,
PMF_SPRINTING = 1 << 14,
PMF_SHELLSHOCKED = 1 << 15,
PMF_MELEE_CHARGE = 1 << 16,
PMF_NO_SPRINT = 1 << 17,
PMF_NO_JUMP = 1 << 18,
PMF_REMOTE_CONTROLLING = 1 << 19,
PMF_ANIM_SCRIPTED = 1 << 20,
PMF_UNK1 = 1 << 21,
PMF_DIVING = 1 << 22,
};
enum
{
POF_INVULNERABLE = 1 << 0,
POF_REMOTE_EYES = 1 << 1,
POF_LASER_ALTVIEW = 1 << 2,
POF_THERMAL_VISION = 1 << 3,
POF_THERMAL_VISION_OVERLAY_FOF = 1 << 4,
POF_REMOTE_CAMERA_SOUNDS = 1 << 5,
POF_ALT_SCENE_REAR_VIEW = 1 << 6,
POF_ALT_SCENE_TAG_VIEW = 1 << 7,
POF_SHIELD_ATTACHED_TO_WORLD_MODEL = 1 << 8,
POF_DONT_LERP_VIEWANGLES = 1 << 9,
POF_EMP_JAMMED = 1 << 10,
POF_FOLLOW = 1 << 11,
POF_PLAYER = 1 << 12,
POF_SPEC_ALLOW_CYCLE = 1 << 13,
POF_SPEC_ALLOW_FREELOOK = 1 << 14,
POF_AC130 = 1 << 15,
POF_COMPASS_PING = 1 << 16,
POF_ADS_THIRD_PERSON_TOGGLE = 1 << 17,
};
enum pmtype_t
{
PM_NORMAL = 0x0,
PM_NORMAL_LINKED = 0x1,
PM_NOCLIP = 0x2,
PM_UFO = 0x3,
PM_MPVIEWER = 0x4,
PM_SPECTATOR = 0x5,
PM_INTERMISSION = 0x6,
PM_LASTSTAND = 0x7,
PM_DEAD = 0x8,
PM_DEAD_LINKED = 0x9,
};
enum
{
EF_NONSOLID_BMODEL = 1 << 0,
EF_TELEPORT_BIT = 1 << 1,
EF_CROUCHING = 1 << 2,
EF_PRONE = 1 << 3,
EF_UNK1 = 1 << 4,
EF_NODRAW = 1 << 5,
EF_TIMED_OBJECT = 1 << 6,
EF_VOTED = 1 << 7,
EF_TALK = 1 << 8,
EF_FIRING = 1 << 9,
EF_TURRET_ACTIVE_PRONE = 1 << 10,
EF_TURRET_ACTIVE_DUCK = 1 << 11,
EF_LOCK_LIGHT_VIS = 1 << 12,
EF_AIM_ASSIST = 1 << 13,
EF_LOOP_RUMBLE = 1 << 14,
EF_LASER_SIGHT = 1 << 15,
EF_MANTLE = 1 << 16,
EF_DEAD = 1 << 17,
EF_ADS = 1 << 18,
EF_NEW = 1 << 19,
EF_VEHICLE_ACTIVE = 1 << 20,
EF_JAMMING = 1 << 21,
EF_COMPASS_PING = 1 << 22,
EF_SOFT = 1 << 23,
};
enum
{
PLF_ANGLES_LOCKED = 1 << 0,
PLF_USES_OFFSET = 1 << 1,
PLF_WEAPONVIEW_ONLY = 1 << 2,
};
enum
{
PWF_USE_RELOAD = 1 << 0,
PWF_USING_OFFHAND = 1 << 1,
PWF_HOLDING_BREATH = 1 << 2,
PWF_FRIENDLY_FIRE = 1 << 3,
PWF_ENEMY_FIRE = 1 << 4,
PWF_NO_ADS = 1 << 5,
PWF_USING_NIGHTVISION = 1 << 6,
PWF_DISABLE_WEAPONS = 1 << 7,
PWF_TRIGGER_LEFT_FIRE = 1 << 8,
PWF_TRIGGER_DOUBLE_FIRE = 1 << 9,
PWF_USING_RECOILSCALE = 1 << 10,
PWF_DISABLE_WEAPON_SWAPPING = 1 << 11,
PWF_DISABLE_OFFHAND_WEAPONS = 1 << 12,
PWF_SWITCHING_TO_RIOTSHIELD = 1 << 13,
// IW5 flags backported
PWF_DISABLE_WEAPON_PICKUP = 1 << 16
};
struct playerState_s
{
int commandTime;
int pm_type;
int pm_time;
int pm_flags;
int otherFlags;
int linkFlags;
int bobCycle;
float origin[3];
float velocity[3];
int grenadeTimeLeft;
int throwbackGrenadeOwner;
int throwbackGrenadeTimeLeft;
unsigned int throwbackWeaponIndex;
int remoteEyesEnt;
int remoteEyesTagname;
int remoteControlEnt;
int foliageSoundTime;
int gravity;
float leanf;
int speed;
float delta_angles[3];
int groundEntityNum;
float vLadderVec[3];
int jumpTime;
float jumpOriginZ;
int legsTimer;
int legsAnim;
int torsoTimer;
int torsoAnim;
int legsAnimDuration;
int torsoAnimDuration;
int damageTimer;
int damageDuration;
int flinchYawAnim;
int corpseIndex;
int movementDir;
int eFlags;
int eventSequence;
int events[4];
unsigned int eventParms[4];
int oldEventSequence;
int unpredictableEventSequence;
int unpredictableEventSequenceOld;
int unpredictableEvents[4];
unsigned int unpredictableEventParms[4];
int clientNum; // 260
int viewmodelIndex;
float viewangles[3];
int viewHeightTarget;
float viewHeightCurrent;
int viewHeightLerpTime;
int viewHeightLerpTarget;
int viewHeightLerpDown;
float viewAngleClampBase[2];
float viewAngleClampRange[2];
int damageEvent;
int damageYaw;
int damagePitch;
int damageCount;
int damageFlags;
int stats[4];
float proneDirection;
float proneDirectionPitch;
float proneTorsoPitch;
ViewLockTypes viewlocked;
int viewlocked_entNum;
float linkAngles[3];
float linkWeaponAngles[3];
int linkWeaponEnt;
int loopSound;
int cursorHint;
int cursorHintString;
int cursorHintEntIndex;
int cursorHintDualWield;
int iCompassPlayerInfo;
int radarEnabled;
int radarBlocked;
int radarMode;
int locationSelectionInfo;
SprintState sprintState;
float holdBreathScale;
int holdBreathTimer;
float moveSpeedScaleMultiplier;
MantleState mantleState;
PlayerActiveWeaponState weapState[2];
unsigned int weaponsEquipped[15];
PlayerEquippedWeaponState weapEquippedData[15];
PlayerWeaponCommonState weapCommon;
float meleeChargeYaw;
int meleeChargeDist;
int meleeChargeTime;
unsigned int perks[2];
unsigned int perkSlots[8];
ActionSlotType actionSlotType[4];
ActionSlotParam actionSlotParam[4];
int weaponHudIconOverrides[6];
int animScriptedType;
int shellshockIndex;
int shellshockTime;
int shellshockDuration;
float dofNearStart;
float dofNearEnd;
float dofFarStart;
float dofFarEnd;
float dofNearBlur;
float dofFarBlur;
float dofViewmodelStart;
float dofViewmodelEnd;
objective_t objective[32];
int deltaTime;
int killCamEntity;
int killCamLookAtEntity;
int killCamClientNum;
struct
{
hudelem_s current[31];
hudelem_s archival[31];
} hud;
unsigned int partBits[6];
int recoilScale;
int diveDirection;
int stunTime;
};
static_assert(sizeof(playerState_s) == 0x311C);
enum LocSelInputState
{
LOC_SEL_INPUT_NONE = 0x0,
LOC_SEL_INPUT_CONFIRM = 0x1,
LOC_SEL_INPUT_CANCEL = 0x2,
};
struct field_t
{
int cursor;
int scroll;
int drawWidth;
int widthInPixels;
float charHeight;
int fixedSize;
char buffer[256];
};
struct KeyState
{
int down;
int repeats;
const char* binding;
};
struct PlayerKeyState
{
field_t chatField;
int chat_team;
int overstrikeMode;
int anyKeyDown;
KeyState keys[256];
LocSelInputState locSelInputState;
};
struct keyname_t
{
const char* name;
int keynum;
};
struct clSnapshot_t
{
playerState_s ps;
int valid;
int snapFlags;
int serverTime;
int messageNum;
int deltaNum;
int ping;
int cmdNum;
int numEntities;
int numClients;
int parseEntitiesIndex;
int parseClientsIndex;
int serverCommandNum;
};
static_assert(sizeof(clSnapshot_t) == 0x314C);
enum StanceState
{
CL_STANCE_STAND = 0x0,
CL_STANCE_CROUCH = 0x1,
CL_STANCE_PRONE = 0x2,
};
struct ClientArchiveData
{
int serverTime;
float origin[3];
float velocity[3];
int bobCycle;
int movementDir;
float viewangles[3];
int locationSelectionInfo;
float selectedLocation[2];
float selectedLocationAngle;
};
struct outPacket_t
{
int p_cmdNumber;
int p_serverTime;
int p_realtime;
};
enum team_t
{
TEAM_FREE = 0x0,
TEAM_AXIS = 0x1,
TEAM_ALLIES = 0x2,
TEAM_SPECTATOR = 0x3,
TEAM_NUM_TEAMS = 0x4,
};
struct clientState_s
{
int clientIndex;
team_t team;
int modelindex;
int dualWielding;
int riotShieldNext;
int attachModelIndex[6];
int attachTagIndex[6];
char name[16];
float maxSprintTimeMultiplier;
int rank;
int prestige;
unsigned int perks[2];
int diveState;
int voiceConnectivityBits;
unsigned int playerCardIcon;
unsigned int playerCardTitle;
unsigned int playerCardNameplate;
};
enum PlayerCardClientLookupType
{
PLAYERCARD_LOOKUP_SCRIPTSLOT = 0x0,
PLAYERCARD_LOOKUP_LIVEPROFILE_CLIENT = 0x1,
PLAYERCARD_LOOKUP_LIVEPROFILE_CONTROLLER = 0x2,
PLAYERCARD_LOOKUP_LOBBY = 0x3,
PLAYERCARD_LOOKUP_MYTEAM = 0x4,
PLAYERCARD_LOOKUP_ENEMYTEAM = 0x5,
PLAYERCARD_LOOKUP_COUNT = 0x6,
};
struct PlayerCardData
{
unsigned int lastUpdateTime;
unsigned int titleIndex;
unsigned int iconIndex;
unsigned int nameplateIndex;
int rank;
int prestige;
team_t team;
char name[32];
char clanAbbrev[5];
};
static_assert(sizeof(PlayerCardData) == 0x44);
enum usercmdButtonBits
{
CMD_BUTTON_ATTACK = 1 << 0,
CMD_BUTTON_SPRINT = 1 << 1,
CMD_BUTTON_MELEE = 1 << 2,
CMD_BUTTON_ACTIVATE = 1 << 3,
CMD_BUTTON_RELOAD = 1 << 4,
CMD_BUTTON_USE_RELOAD = 1 << 5,
CMD_BUTTON_LEAN_LEFT = 1 << 6,
CMD_BUTTON_LEAN_RIGHT = 1 << 7,
CMD_BUTTON_PRONE = 1 << 8,
CMD_BUTTON_CROUCH = 1 << 9,
CMD_BUTTON_UP = 1 << 10,
CMD_BUTTON_ADS = 1 << 11,
CMD_BUTTON_DOWN = 1 << 12,
CMD_BUTTON_BREATH = 1 << 13,
CMD_BUTTON_FRAG = 1 << 14,
CMD_BUTTON_OFFHAND_SECONDARY = 1 << 15,
CMD_BUTTON_THROW = 1 << 19,
};
struct usercmd_s
{
int serverTime;
int buttons;
int angles[3];
unsigned __int16 weapon;
unsigned __int16 primaryWeaponForAltMode;
unsigned __int16 offHandIndex;
char forwardmove;
char rightmove;
float meleeChargeYaw;
char meleeChargeDist;
char selectedLoc[2];
char selectedLocAngle;
char remoteControlAngles[2];
};
static_assert(sizeof(usercmd_s) == 0x28);
enum trType_t
{
TR_STATIONARY = 0x0,
TR_INTERPOLATE = 0x1,
TR_LINEAR = 0x2,
TR_LINEAR_STOP = 0x3,
TR_SINE = 0x4,
TR_GRAVITY = 0x5,
TR_LOW_GRAVITY = 0x6,
TR_ACCELERATE = 0x7,
TR_DECELERATE = 0x8,
TR_PHYSICS = 0x9,
TR_FIRST_RAGDOLL = 0xA,
TR_RAGDOLL = 0xA,
TR_RAGDOLL_GRAVITY = 0xB,
TR_RAGDOLL_INTERPOLATE = 0xC,
TR_LAST_RAGDOLL = 0xC,
NUM_TRTYPES = 0xD,
};
struct trajectory_t
{
trType_t trType;
int trTime;
int trDuration;
float trBase[3];
float trDelta[3];
};
struct LerpEntityState
{
int eFlags;
trajectory_t pos;
trajectory_t apos;
char pad0[0x24];
};
static_assert(sizeof(LerpEntityState) == 0x70);
struct clientLinkInfo_t
{
__int16 parentId;
char tagName;
char flags;
};
struct entityState_s
{
int number;
int eType;
LerpEntityState lerp;
int time2;
int otherEntityNum;
int attackerEntityNum;
int groundEntityNum;
int loopSound;
int surfType;
union
{
int brushModel;
int triggerModel;
int item;
int xmodel;
int primaryLight;
} index;
int clientNum;
int iHeadIcon;
int iHeadIconTeam;
int solid;
unsigned int eventParm;
int eventSequence;
int events[4];
unsigned int eventParms[4];
unsigned __int16 weapon;
int legsAnim;
int torsoAnim;
union
{
int eventParm2;
int hintString;
int fxId;
int helicopterStage;
} un1;
union
{
int hintType;
struct
{
unsigned __int16 vehicleXModel;
char weaponModel;
} __s1;
int actorFlags;
} un2;
clientLinkInfo_t clientLinkInfo;
unsigned int partBits[6];
int clientMask[1];
};
struct clientActive_t
{
bool usingAds;
int timeoutcount;
clSnapshot_t snap;
bool alwaysFalse;
int serverTime;
int oldServerTime;
int oldFrameServerTime;
int serverTimeDelta;
int oldSnapServerTime;
int extrapolatedSnapshot;
int newSnapshots;
int serverId;
char mapname[MAX_QPATH];
int parseEntitiesIndex;
int parseClientsIndex;
int mouseDx[2];
int mouseDy[2];
int mouseIndex;
bool stanceHeld;
StanceState stance;
StanceState stancePosition;
int stanceTime;
int cgameUserCmdWeapon;
int cgameUserCmdOffHandIndex;
float cgameFOVSensitivityScale;
float cgameMaxPitchSpeed;
float cgameMaxYawSpeed;
float cgameKickAngles[3];
float cgameOrigin[3];
float cgameVelocity[3];
float cgameViewangles[3];
int cgameBobCycle;
int cgameMovementDir;
int cgameExtraButtons;
int cgamePredictedDataServerTime;
float clViewangles[3];
usercmd_s cmds[128];
int cmdNumber;
ClientArchiveData clientArchive[256];
int clientArchiveIndex;
int packetBackupCount;
int packetBackupMask;
int parseEntitiesCount;
int parseClientsCount;
outPacket_t outPackets[32];
clSnapshot_t snapshots[32];
entityState_s parseEntities[19200];
clientState_s parseClients[576];
int corruptedTranslationFile;
char translationVersion[256];
};
struct MaterialTechnique
{
const char* name;
unsigned __int16 flags;
unsigned __int16 passCount;
MaterialPass passArray[1];
};
struct MaterialTechniqueSet
{
const char* name;
char worldVertFormat;
bool hasBeenUploaded;
char unused[1];
MaterialTechniqueSet* remappedTechniqueSet;
MaterialTechnique* techniques[48];
};
struct GfxImageLoadDefIW3
{
char levelCount;
char flags;
__int16 dimensions[3];
int format;
int resourceSize;
char data[1];
};
struct __declspec(align(4)) GfxImageLoadDef
{
char levelCount;
char pad[3];
int flags;
int format;
int resourceSize;
char data[1];
};
union GfxTexture
{
IDirect3DBaseTexture9* basemap;
IDirect3DTexture9* map;
IDirect3DVolumeTexture9* volmap;
IDirect3DCubeTexture9* cubemap;
GfxImageLoadDef* loadDef;
};
struct Picmip
{
char platform[2];
};
struct CardMemory
{
int platform[2];
};
struct GfxImage
{
GfxTexture texture;
char mapType;
TextureSemantic semantic;
char category;
bool useSrgbReads;
Picmip picmip;
bool noPicmip;
char track;
CardMemory cardMemory;
unsigned __int16 width;
unsigned __int16 height;
unsigned __int16 depth;
bool delayLoadPixels;
const char* name;
};
struct WaterWritable
{
float floatTime;
};
struct complex_s
{
float real;
float imag;
};
struct water_t
{
WaterWritable writable;
complex_s* H0;
float* wTerm;
int M;
int N;
float Lx;
float Lz;
float gravity;
float windvel;
float winddir[2];
float amplitude;
float codeConstant[4];
GfxImage* image;
};
union MaterialTextureDefInfo
{
GfxImage* image;
water_t* water;
};
struct MaterialTextureDef
{
unsigned int nameHash;
char nameStart;
char nameEnd;
char samplerState;
TextureSemantic semantic;
MaterialTextureDefInfo u;
};
struct MaterialConstantDef
{
unsigned int nameHash;
char name[12];
float literal[4];
};
enum GfxSurfaceStatebitOp0 : unsigned int
{
GFXS0_SRCBLEND_RGB_SHIFT = 0x0,
GFXS0_SRCBLEND_RGB_MASK = 0xF,
GFXS0_DSTBLEND_RGB_SHIFT = 0x4,
GFXS0_DSTBLEND_RGB_MASK = 0xF0,
GFXS0_BLENDOP_RGB_SHIFT = 0x8,
GFXS0_BLENDOP_RGB_MASK = 0x700,
GFXS0_BLEND_RGB_MASK = 0x7FF,
GFXS0_ATEST_DISABLE = 0x800,
GFXS0_ATEST_GT_0 = 0x1000,
GFXS0_ATEST_LT_128 = 0x2000,
GFXS0_ATEST_GE_128 = 0x3000,
GFXS0_ATEST_MASK = 0x3000,
GFXS0_CULL_SHIFT = 0xE,
GFXS0_CULL_NONE = 0x4000,
GFXS0_CULL_BACK = 0x8000,
GFXS0_CULL_FRONT = 0xC000,
GFXS0_CULL_MASK = 0xC000,
GFXS0_SRCBLEND_ALPHA_SHIFT = 0x10,
GFXS0_SRCBLEND_ALPHA_MASK = 0xF0000,
GFXS0_DSTBLEND_ALPHA_SHIFT = 0x14,
GFXS0_DSTBLEND_ALPHA_MASK = 0xF00000,
GFXS0_BLENDOP_ALPHA_SHIFT = 0x18,
GFXS0_BLENDOP_ALPHA_MASK = 0x7000000,
GFXS0_BLEND_ALPHA_MASK = 0x7FF0000,
GFXS0_COLORWRITE_RGB = 0x8000000,
GFXS0_COLORWRITE_ALPHA = 0x10000000,
GFXS0_COLORWRITE_MASK = 0x18000000,
GFXS0_GAMMAWRITE = 0x40000000,
GFXS0_POLYMODE_LINE = 0x80000000
};
enum GfxSurfaceStatebitOp1 : unsigned int
{
GFXS1_DEPTHWRITE = 0x1,
GFXS1_DEPTHTEST_DISABLE = 0x2,
GFXS1_DEPTHTEST_SHIFT = 0x2,
GFXS1_DEPTHTEST_ALWAYS = 0x0,
GFXS1_DEPTHTEST_LESS = 0x4,
GFXS1_DEPTHTEST_EQUAL = 0x8,
GFXS1_DEPTHTEST_LESSEQUAL = 0xC,
GFXS1_DEPTHTEST_MASK = 0xC,
GFXS1_POLYGON_OFFSET_SHIFT = 0x4,
GFXS1_POLYGON_OFFSET_0 = 0x0,
GFXS1_POLYGON_OFFSET_1 = 0x10,
GFXS1_POLYGON_OFFSET_2 = 0x20,
GFXS1_POLYGON_OFFSET_SHADOWMAP = 0x30,
GFXS1_POLYGON_OFFSET_MASK = 0x30,
GFXS1_STENCIL_FRONT_ENABLE = 0x40,
GFXS1_STENCIL_BACK_ENABLE = 0x80,
GFXS1_STENCIL_MASK = 0xC0,
GFXS1_STENCIL_FRONT_PASS_SHIFT = 0x8,
GFXS1_STENCIL_FRONT_FAIL_SHIFT = 0xB,
GFXS1_STENCIL_FRONT_ZFAIL_SHIFT = 0xE,
GFXS1_STENCIL_FRONT_FUNC_SHIFT = 0x11,
GFXS1_STENCIL_FRONT_MASK = 0xFFF00,
GFXS1_STENCIL_BACK_PASS_SHIFT = 0x14,
GFXS1_STENCIL_BACK_FAIL_SHIFT = 0x17,
GFXS1_STENCIL_BACK_ZFAIL_SHIFT = 0x1A,
GFXS1_STENCIL_BACK_FUNC_SHIFT = 0x1D,
GFXS1_STENCIL_BACK_MASK = 0xFFF00000,
GFXS1_STENCILFUNC_FRONTBACK_MASK = 0xE00E0000,
GFXS1_STENCILOP_FRONTBACK_MASK = 0x1FF1FF00,
};
enum GfxStencilOp
{
GFXS_STENCILOP_KEEP = 0x0,
GFXS_STENCILOP_ZERO = 0x1,
GFXS_STENCILOP_REPLACE = 0x2,
GFXS_STENCILOP_INCRSAT = 0x3,
GFXS_STENCILOP_DECRSAT = 0x4,
GFXS_STENCILOP_INVERT = 0x5,
GFXS_STENCILOP_INCR = 0x6,
GFXS_STENCILOP_DECR = 0x7,
GFXS_STENCILOP_COUNT,
GFXS_STENCILOP_MASK = 0x7
};
struct GfxStateBits
{
unsigned int loadBits[2];
};
struct Material
{
MaterialInfo info;
char stateBitsEntry[48];
unsigned char textureCount;
unsigned char constantCount;
unsigned char stateBitsCount;
char stateFlags;
char cameraRegion;
MaterialTechniqueSet* techniqueSet;
MaterialTextureDef* textureTable;
MaterialConstantDef* constantTable;
GfxStateBits* stateBitsTable;
};
struct XModelLodInfo
{
float dist;
unsigned __int16 numsurfs;
unsigned __int16 surfIndex;
XModelSurfs* modelSurfs;
int partBits[6];
XSurface* surfs;
char lod;
char smcBaseIndexPlusOne;
char smcSubIndexMask;
char smcBucket;
};
struct XModelCollTri_s
{
float plane[4];
float svec[4];
float tvec[4];
};
struct XModelCollSurf_s
{
XModelCollTri_s* collTris;
int numCollTris;
Bounds bounds;
int boneIdx;
int contents;
int surfFlags;
};
struct XBoneInfo
{
Bounds bounds;
float radiusSquared;
};
struct XModel
{
const char* name;
unsigned char numBones;
unsigned char numRootBones;
unsigned char numsurfs;
unsigned char lodRampType;
float scale;
unsigned int noScalePartBits[6];
unsigned __int16* boneNames;
unsigned char *parentList;
short* quats;
float* trans;
unsigned char* partClassification;
DObjAnimMat* baseMat;
Material** materialHandles;
XModelLodInfo lodInfo[4];
unsigned char maxLoadedLod;
unsigned char numLods;
unsigned char collLod;
unsigned char flags;
XModelCollSurf_s* collSurfs;
int numCollSurfs;
int contents;
XBoneInfo* boneInfo;
float radius;
Bounds bounds;
int memUsage;
bool bad;
PhysPreset* physPreset;
PhysCollmap* physCollmap;
};
struct _AILSOUNDINFO
{
int format;
const void* data_ptr;
unsigned int data_len;
unsigned int rate;
int bits;
int channels;
unsigned int samples;
unsigned int block_size;
const void* initial_ptr;
};
struct MssSound
{
_AILSOUNDINFO info;
char* data;
};
struct LoadedSound
{
const char* name;
MssSound sound;
};
struct StreamFileNameRaw
{
const char* dir;
const char* name;
};
union StreamFileInfo
{
StreamFileNameRaw raw;
};
struct StreamFileName
{
StreamFileInfo info;
};
struct StreamedSound
{
StreamFileName filename;
};
union SoundFileRef
{
LoadedSound* loadSnd;
StreamedSound streamSnd;
};
enum snd_alias_type_t
{
SAT_UNKNOWN = 0x0,
SAT_LOADED = 0x1,
SAT_STREAMED = 0x2,
SAT_VOICED = 0x3,
SAT_COUNT = 0x4,
};
struct snd_volume_info_t
{
float volume;
float goalvolume;
float goalrate;
};
struct snd_channelvolgroup
{
snd_volume_info_t channelvol[64];
bool active;
};
struct snd_background_info_t
{
float goalvolume;
float goalrate;
};
struct snd_enveffect
{
int roomtype;
float drylevel;
float drygoal;
float dryrate;
float wetlevel;
float wetgoal;
float wetrate;
bool active;
};
struct orientation_t
{
float origin[3];
float axis[3][3];
};
struct snd_listener
{
orientation_t orient;
float velocity;
int clientNum;
bool active;
};
struct snd_amplifier
{
snd_listener* listener;
int minRadius;
int maxRadius;
float falloffExp;
float minVol;
float maxVol;
};
struct snd_entchannel_info_t
{
char name[64];
int priority;
bool is3d;
bool isRestricted;
bool isPausable;
int maxVoices;
int voiceCount;
};
struct snd_entchan_overrides_t
{
unsigned int isPausable[2];
float timescaleLerp[64];
};
enum SndFileLoadingState
{
SFLS_UNLOADED = 0x0,
SFLS_LOADING = 0x1,
SFLS_LOADED = 0x2,
};
struct SndFileSpecificChannelInfo
{
SndFileLoadingState loadingState;
int srcChannelCount;
int baserate;
};
union SndEntHandle
{
struct
{
unsigned int entIndex;
} field;
int handle;
};
enum SndLengthId
{
SndLengthNotify_Subtitle = 0x0,
SndLengthNotify_EntityCustom = 0x1,
SndLengthNotifyCount = 0x2,
};
struct sndLengthNotifyInfo
{
SndLengthId id[4];
void* data[4];
int count;
};
enum snd_alias_system_t
{
SASYS_UI = 0x0,
SASYS_CGAME = 0x1,
SASYS_GAME = 0x2,
SASYS_COUNT = 0x3,
};
struct SoundFile
{
char type;
char exists;
SoundFileRef u;
};
struct MSSSpeakerLevels
{
int speaker;
int numLevels;
float levels[2];
};
struct MSSChannelMap
{
unsigned int speakerCount;
MSSSpeakerLevels speakers[6];
};
struct SpeakerMap
{
bool isDefault;
const char* name;
MSSChannelMap channelMaps[2][2];
};
union SoundAliasFlags
{
#pragma warning(push)
#pragma warning(disable: 4201)
struct
{
unsigned int looping : 1; // & 1 / 0x1 / 0000 0000 0000 0001
unsigned int isMaster : 1; // & 2 / 0x2 / 0000 0000 0000 0010
unsigned int isSlave : 1; // & 4 / 0x4 / 0000 0000 0000 0100
unsigned int fullDryLevel : 1; // & 8 / 0x8 / 0000 0000 0000 1000
unsigned int noWetLevel : 1; // & 16 / 0x10 / 0000 0000 0001 0000
unsigned int unknown : 1; // & 32 / 0x20 / 0000 0000 0010 0000
unsigned int unk_is3D : 1; // & 64 / 0x40 / 0000 0000 0100 0000 // CONFIRMED IW4 IW5
unsigned int type : 2; // & 384 / 0x180 / 0000 0001 1000 0000 // CONFIRMED IW4 IW5
unsigned int channel : 6; // & 32256 / 0x7E00 / 0111 1110 0000 0000 // CONFIRMED IW4 IW5
};
#pragma warning(pop)
unsigned int intValue;
};
struct SndCurve
{
const char* filename;
unsigned __int16 knotCount;
float knots[16][2];
};
struct snd_alias_t
{
const char* aliasName;
const char* subtitle;
const char* secondaryAliasName;
const char* chainAliasName;
const char* mixerGroup;
SoundFile* soundFile;
int sequence;
float volMin;
float volMax;
float pitchMin;
float pitchMax;
float distMin;
float distMax;
float velocityMin;
SoundAliasFlags flags;
union
{
float slavePercentage;
float masterPercentage;
} ___u15;
float probability;
float lfePercentage;
float centerPercentage;
int startDelay;
SndCurve* volumeFalloffCurve;
float envelopMin;
float envelopMax;
float envelopPercentage;
SpeakerMap* speakerMap;
};
struct snd_channel_info_t
{
SndFileSpecificChannelInfo soundFileInfo;
SndEntHandle sndEnt;
int entchannel;
int startDelay;
int looptime;
int totalMsec;
int playbackId;
sndLengthNotifyInfo lengthNotifyInfo;
float basevolume;
float pitch;
snd_alias_t* alias0;
snd_alias_t* alias1;
int saveIndex0;
int saveIndex1;
float lerp;
float org[3];
float offset[3];
bool paused;
bool master;
float timescaleLerp;
snd_alias_system_t system;
};
struct snd_local_t
{
bool Initialized2d;
bool Initialized3d;
bool paused;
int playbackIdCounter;
unsigned int playback_rate;
int playback_channels;
float timescale;
int pausetime;
int cpu;
struct
{
char buffer[16384];
volatile int size;
bool compress;
} restore;
float volume;
snd_volume_info_t mastervol;
snd_channelvolgroup channelVolGroups[4];
snd_channelvolgroup* channelvol;
snd_background_info_t background[4];
int ambient_track;
float slaveLerp;
float masterPercentage;
snd_enveffect envEffects[5];
snd_enveffect* effect;
snd_listener listeners[2];
int time;
int looptime;
snd_amplifier amplifier;
snd_entchannel_info_t entchaninfo[64];
snd_entchan_overrides_t entchanOverrides;
int entchannel_count;
snd_channel_info_t chaninfo[52];
int max_2D_channels;
int max_3D_channels;
int max_stream_channels;
};
struct Poly
{
float(*pts)[3];
unsigned int ptCount;
};
enum SunShadowPartition
{
R_SUNSHADOW_NEAR = 0x0,
R_SUNSHADOW_FAR = 0x1,
R_SUNSHADOW_PARTITION_COUNT = 0x2,
};
struct snd_alias_list_t
{
const char* aliasName;
snd_alias_t* head;
unsigned int count;
};
struct cStaticModel_s
{
XModel* xmodel;
float origin[3];
float invScaledAxis[3][3];
Bounds absBounds;
};
struct ClipMaterial
{
const char* name;
int surfaceFlags;
int contents;
};
struct cNode_t
{
cplane_s* plane;
__int16 children[2];
};
struct cLeaf_t
{
unsigned __int16 firstCollAabbIndex;
unsigned __int16 collAabbCount;
int brushContents;
int terrainContents;
Bounds bounds;
int leafBrushNode;
};
struct cLeafBrushNodeLeaf_t
{
unsigned __int16* brushes;
};
struct cLeafBrushNodeChildren_t
{
float dist;
float range;
unsigned __int16 childOffset[2];
};
union cLeafBrushNodeData_t
{
cLeafBrushNodeLeaf_t leaf;
cLeafBrushNodeChildren_t children;
};
struct cLeafBrushNode_s
{
unsigned char axis;
__int16 leafBrushCount;
int contents;
cLeafBrushNodeData_t data;
};
struct CollisionBorder
{
float distEq[3];
float zBase;
float zSlope;
float start;
float length;
};
struct CollisionPartition
{
unsigned char triCount;
unsigned char borderCount;
unsigned char firstVertSegment;
int firstTri;
CollisionBorder* borders;
};
union CollisionAabbTreeIndex
{
int firstChildIndex;
int partitionIndex;
};
struct CollisionAabbTree
{
float midPoint[3];
unsigned __int16 materialIndex;
unsigned __int16 childCount;
float halfSize[3];
CollisionAabbTreeIndex u;
};
struct cmodel_t
{
Bounds bounds;
float radius;
cLeaf_t leaf;
};
static_assert(sizeof(cmodel_t) == 0x44);
struct TriggerModel
{
int contents;
unsigned __int16 hullCount;
unsigned __int16 firstHull;
};
struct TriggerHull
{
Bounds bounds;
int contents;
unsigned __int16 slabCount;
unsigned __int16 firstSlab;
};
struct TriggerSlab
{
float dir[3];
float midPoint;
float halfSize;
};
struct MapTriggers
{
unsigned int count;
TriggerModel* models;
unsigned int hullCount;
TriggerHull* hulls;
unsigned int slabCount;
TriggerSlab* slabs;
};
struct Stage
{
const char* name;
float origin[3];
unsigned __int16 triggerIndex;
char sunPrimaryLightIndex;
};
struct __declspec(align(4)) MapEnts
{
const char* name;
const char* entityString;
int numEntityChars;
MapTriggers trigger;
Stage* stages;
char stageCount;
};
struct SModelAabbNode
{
Bounds bounds;
unsigned __int16 firstChild;
unsigned __int16 childCount;
};
enum DynEntityType
{
DYNENT_TYPE_INVALID = 0x0,
DYNENT_TYPE_CLUTTER = 0x1,
DYNENT_TYPE_DESTRUCT = 0x2,
DYNENT_TYPE_COUNT = 0x3,
};
struct GfxPlacement
{
float quat[4];
float origin[3];
};
struct FxSpawnDefLooping
{
int intervalMsec;
int count;
};
struct FxIntRange
{
int base;
int amplitude;
};
struct FxSpawnDefOneShot
{
FxIntRange count;
};
union FxSpawnDef
{
FxSpawnDefLooping looping;
FxSpawnDefOneShot oneShot;
};
struct FxFloatRange
{
float base;
float amplitude;
};
struct FxElemAtlas
{
char behavior;
char index;
char fps;
char loopCount;
char colIndexBits;
char rowIndexBits;
__int16 entryCount;
};
struct FxElemVec3Range
{
float base[3];
float amplitude[3];
};
struct FxElemVelStateInFrame
{
FxElemVec3Range velocity;
FxElemVec3Range totalDelta;
};
const struct FxElemVelStateSample
{
FxElemVelStateInFrame local;
FxElemVelStateInFrame world;
};
struct FxElemVisualState
{
unsigned char color[4];
float rotationDelta;
float rotationTotal;
float size[2];
float scale;
};
const struct FxElemVisStateSample
{
FxElemVisualState base;
FxElemVisualState amplitude;
};
struct FxElemMarkVisuals
{
Material* materials[2];
};
union FxEffectDefRef
{
FxEffectDef* handle;
const char* name;
};
union FxElemVisuals
{
const void* anonymous;
Material* material;
XModel* model;
FxEffectDefRef effectDef;
const char* soundName;
};
union FxElemDefVisuals
{
FxElemMarkVisuals* markArray;
FxElemVisuals* array;
FxElemVisuals instance;
};
struct FxTrailVertex
{
float pos[2];
float normal[2];
float texCoord;
};
struct FxTrailDef
{
int scrollTimeMsec;
int repeatDist;
float invSplitDist;
float invSplitArcDist;
float invSplitTime;
int vertCount;
FxTrailVertex* verts;
int indCount;
unsigned __int16* inds;
};
struct FxSparkFountainDef
{
float gravity;
float bounceFrac;
float bounceRand;
float sparkSpacing;
float sparkLength;
int sparkCount;
float loopTime;
float velMin;
float velMax;
float velConeFrac;
float restSpeed;
float boostTime;
float boostFactor;
};
union FxElemExtendedDefPtr
{
FxTrailDef* trailDef;
FxSparkFountainDef* sparkFountainDef;
void* unknownDef;
};
const struct FxElemDef
{
int flags;
FxSpawnDef spawn;
FxFloatRange spawnRange;
FxFloatRange fadeInRange;
FxFloatRange fadeOutRange;
float spawnFrustumCullRadius;
FxIntRange spawnDelayMsec;
FxIntRange lifeSpanMsec;
FxFloatRange spawnOrigin[3];
FxFloatRange spawnOffsetRadius;
FxFloatRange spawnOffsetHeight;
FxFloatRange spawnAngles[3];
FxFloatRange angularVelocity[3];
FxFloatRange initialRotation;
FxFloatRange gravity;
FxFloatRange reflectionFactor;
FxElemAtlas atlas;
char elemType;
char visualCount;
char velIntervalCount;
char visStateIntervalCount;
FxElemVelStateSample* velSamples;
FxElemVisStateSample* visSamples;
FxElemDefVisuals visuals;
Bounds collBounds;
FxEffectDefRef effectOnImpact;
FxEffectDefRef effectOnDeath;
FxEffectDefRef effectEmitted;
FxFloatRange emitDist;
FxFloatRange emitDistVariance;
FxElemExtendedDefPtr extended;
char sortOrder;
char lightingFrac;
char useItemClip;
char fadeInfo;
};
struct FxEffectDef
{
const char* name;
int flags;
int totalSize;
int msecLoopingLife;
int elemDefCountLooping;
int elemDefCountOneShot;
int elemDefCountEmission;
FxElemDef* elemDefs;
};
struct DynEntityDef
{
DynEntityType type;
GfxPlacement pose;
XModel* xModel;
unsigned __int16 brushModel;
unsigned __int16 physicsBrushModel;
FxEffectDef* destroyFx;
PhysPreset* physPreset;
int health;
PhysMass mass;
int contents;
};
struct DynEntityPose
{
GfxPlacement pose;
float radius;
};
struct DynEntityClient
{
int physObjId;
unsigned __int16 flags;
unsigned __int16 lightingHandle;
int health;
};
struct DynEntityColl
{
unsigned __int16 sector;
unsigned __int16 nextEntInSector;
float linkMins[2];
float linkMaxs[2];
};
#pragma warning(push)
#pragma warning(disable: 4324)
struct __declspec(align(64)) clipMap_t
{
const char* name;
int isInUse;
unsigned int planeCount;
cplane_s* planes;
unsigned int numStaticModels;
cStaticModel_s* staticModelList;
unsigned int numMaterials;
ClipMaterial* materials;
unsigned int numBrushSides;
cbrushside_t* brushsides;
unsigned int numBrushEdges;
unsigned char* brushEdges;
unsigned int numNodes;
cNode_t* nodes;
unsigned int numLeafs;
cLeaf_t* leafs;
unsigned int leafbrushNodesCount;
cLeafBrushNode_s* leafbrushNodes;
unsigned int numLeafBrushes;
unsigned __int16* leafbrushes;
unsigned int numLeafSurfaces;
unsigned int* leafsurfaces;
unsigned int vertCount;
vec3_t* verts;
unsigned int triCount;
unsigned __int16* triIndices;
unsigned char* triEdgeIsWalkable;
unsigned int borderCount;
CollisionBorder* borders;
int partitionCount;
CollisionPartition* partitions;
unsigned int aabbTreeCount;
CollisionAabbTree* aabbTrees;
unsigned int numSubModels;
cmodel_t* cmodels;
unsigned __int16 numBrushes;
cbrush_t* brushes;
Bounds* brushBounds;
int* brushContents;
MapEnts* mapEnts;
unsigned __int16 smodelNodeCount;
SModelAabbNode* smodelNodes;
unsigned __int16 dynEntCount[2];
DynEntityDef* dynEntDefList[2];
DynEntityPose* dynEntPoseList[2];
DynEntityClient* dynEntClientList[2];
DynEntityColl* dynEntCollList[2];
unsigned int checksum;
};
#pragma warning(pop)
struct ComPrimaryLight
{
char type;
char canUseShadowMap;
char exponent;
char unused;
float color[3];
float dir[3];
float origin[3];
float radius;
float cosHalfFovOuter;
float cosHalfFovInner;
float cosHalfFovExpanded;
float rotationLimit;
float translationLimit;
const char* defName;
};
struct ComWorld
{
const char* name;
int isInUse;
unsigned int primaryLightCount;
ComPrimaryLight* primaryLights;
};
enum nodeType
{
NODE_ERROR = 0x0,
NODE_PATHNODE = 0x1,
NODE_COVER_STAND = 0x2,
NODE_COVER_CROUCH = 0x3,
NODE_COVER_CROUCH_WINDOW = 0x4,
NODE_COVER_PRONE = 0x5,
NODE_COVER_RIGHT = 0x6,
NODE_COVER_LEFT = 0x7,
NODE_AMBUSH = 0x8,
NODE_EXPOSED = 0x9,
NODE_CONCEALMENT_STAND = 0xA,
NODE_CONCEALMENT_CROUCH = 0xB,
NODE_CONCEALMENT_PRONE = 0xC,
NODE_DOOR = 0xD,
NODE_DOOR_INTERIOR = 0xE,
NODE_SCRIPTED = 0xF,
NODE_NEGOTIATION_BEGIN = 0x10,
NODE_NEGOTIATION_END = 0x11,
NODE_TURRET = 0x12,
NODE_GUARD = 0x13,
NODE_NUMTYPES = 0x14,
NODE_DONTLINK = 0x14,
};
enum PathNodeErrorCode
{
PNERR_NONE = 0x0,
PNERR_INSOLID = 0x1,
PNERR_FLOATING = 0x2,
PNERR_NOLINK = 0x3,
PNERR_DUPLICATE = 0x4,
PNERR_NOSTANCE = 0x5,
PNERR_INVALIDDOOR = 0x6,
PNERR_NOANGLES = 0x7,
PNERR_BADPLACEMENT = 0x8,
NUM_PATH_NODE_ERRORS = 0x9,
};
union $23305223CFD097B6F79557BDD2047E6C
{
float minUseDistSq;
PathNodeErrorCode error;
};
struct pathlink_s
{
float fDist;
unsigned __int16 nodeNum;
char disconnectCount;
char negotiationLink;
char flags;
char ubBadPlaceCount[3];
};
struct pathnode_constant_t
{
nodeType type;
unsigned __int16 spawnflags;
unsigned __int16 targetname;
unsigned __int16 script_linkName;
unsigned __int16 script_noteworthy;
unsigned __int16 target;
unsigned __int16 animscript;
int animscriptfunc;
float vOrigin[3];
float fAngle;
float forward[2];
float fRadius;
$23305223CFD097B6F79557BDD2047E6C ___u12;
__int16 wOverlapNode[2];
unsigned __int16 totalLinkCount;
pathlink_s* Links;
};
struct pathnode_dynamic_t
{
void* pOwner;
int iFreeTime;
int iValidTime[3];
int dangerousNodeTime[3];
int inPlayerLOSTime;
__int16 wLinkCount;
__int16 wOverlapCount;
__int16 turretEntNumber;
char userCount;
bool hasBadPlaceLink;
};
union $73F238679C0419BE2C31C6559E8604FC
{
float nodeCost;
int linkIndex;
};
struct pathnode_transient_t
{
int iSearchFrame;
pathnode_t* pNextOpen;
pathnode_t* pPrevOpen;
pathnode_t* pParent;
float fCost;
float fHeuristic;
$73F238679C0419BE2C31C6559E8604FC ___u6;
};
struct pathnode_t
{
pathnode_constant_t constant;
pathnode_dynamic_t dynamic;
pathnode_transient_t transient;
};
struct pathbasenode_t
{
float vOrigin[3];
unsigned int type;
};
struct pathnode_tree_nodes_t
{
int nodeCount;
unsigned __int16* nodes;
};
union pathnode_tree_info_t
{
pathnode_tree_t* child[2];
pathnode_tree_nodes_t s;
};
struct pathnode_tree_t
{
int axis;
float dist;
pathnode_tree_info_t u;
};
struct PathData
{
unsigned int nodeCount;
pathnode_t* nodes;
pathbasenode_t* basenodes;
unsigned int chainNodeCount;
unsigned __int16* chainNodeForNode;
unsigned __int16* nodeForChainNode;
int visBytes;
char* pathVis;
int nodeTreeCount;
pathnode_tree_t* nodeTree;
};
struct VehicleTrackObstacle
{
float origin[2];
float radius;
};
struct VehicleTrackSector
{
float startEdgeDir[2];
float startEdgeDist;
float leftEdgeDir[2];
float leftEdgeDist;
float rightEdgeDir[2];
float rightEdgeDist;
float sectorLength;
float sectorWidth;
float totalPriorLength;
float totalFollowingLength;
VehicleTrackObstacle* obstacles;
unsigned int obstacleCount;
};
struct VehicleTrackSegment
{
const char* targetName;
VehicleTrackSector* sectors;
unsigned int sectorCount;
VehicleTrackSegment** nextBranches;
unsigned int nextBranchesCount;
VehicleTrackSegment** prevBranches;
unsigned int prevBranchesCount;
float endEdgeDir[2];
float endEdgeDist;
float totalLength;
};
struct VehicleTrack
{
VehicleTrackSegment* segments;
unsigned int segmentCount;
};
struct G_GlassPiece
{
unsigned __int16 damageTaken;
unsigned __int16 collapseTime;
int lastStateChangeTime;
char impactDir;
char impactPos[2];
};
struct G_GlassName
{
char* nameStr;
unsigned __int16 name;
unsigned __int16 pieceCount;
unsigned __int16* pieceIndices;
};
struct G_GlassData
{
G_GlassPiece* glassPieces;
unsigned int pieceCount;
unsigned __int16 damageToWeaken;
unsigned __int16 damageToDestroy;
unsigned int glassNameCount;
G_GlassName* glassNames;
char pad[108];
};
struct GameWorldSp
{
const char* name;
PathData path;
VehicleTrack vehicleTrack;
G_GlassData* g_glassData;
};
struct GameWorldMp
{
const char* name;
G_GlassData* g_glassData;
};
struct FxGlassDef
{
float halfThickness;
float texVecs[2][2];
GfxColor color;
Material* material;
Material* materialShattered;
PhysPreset* physPreset;
};
struct FxSpatialFrame
{
float quat[4];
float origin[3];
};
struct $E43DBA5037697D705289B74D87E76C70
{
FxSpatialFrame frame;
float radius;
};
union FxGlassPiecePlace
{
$E43DBA5037697D705289B74D87E76C70 __s0;
unsigned int nextFree;
};
struct FxGlassPieceState
{
float texCoordOrigin[2];
unsigned int supportMask;
unsigned __int16 initIndex;
unsigned __int16 geoDataStart;
char defIndex;
char pad[5];
char vertCount;
char holeDataCount;
char crackDataCount;
char fanDataCount;
unsigned __int16 flags;
float areaX2;
};
struct FxGlassPieceDynamics
{
int fallTime;
int physObjId;
int physJointId;
float vel[3];
float avel[3];
};
struct FxGlassVertex
{
__int16 x;
__int16 y;
};
struct FxGlassHoleHeader
{
unsigned __int16 uniqueVertCount;
char touchVert;
char pad[1];
};
struct FxGlassCrackHeader
{
unsigned __int16 uniqueVertCount;
char beginVertIndex;
char endVertIndex;
};
union FxGlassGeometryData
{
FxGlassVertex vert;
FxGlassHoleHeader hole;
FxGlassCrackHeader crack;
char asBytes[4];
__int16 anonymous[2];
};
struct FxGlassInitPieceState
{
FxSpatialFrame frame;
float radius;
float texCoordOrigin[2];
unsigned int supportMask;
float areaX2;
unsigned char defIndex;
unsigned char vertCount;
unsigned char fanDataCount;
char pad[1];
};
struct FxGlassSystem
{
int time;
int prevTime;
unsigned int defCount;
unsigned int pieceLimit;
unsigned int pieceWordCount;
unsigned int initPieceCount;
unsigned int cellCount;
unsigned int activePieceCount;
unsigned int firstFreePiece;
unsigned int geoDataLimit;
unsigned int geoDataCount;
unsigned int initGeoDataCount;
FxGlassDef* defs;
FxGlassPiecePlace* piecePlaces;
FxGlassPieceState* pieceStates;
FxGlassPieceDynamics* pieceDynamics;
FxGlassGeometryData* geoData;
unsigned int* isInUse;
unsigned int* cellBits;
char* visData;
float(*linkOrg)[3];
float* halfThickness;
unsigned __int16* lightingHandles;
FxGlassInitPieceState* initPieceStates;
FxGlassGeometryData* initGeoData;
bool needToCompactData;
char initCount;
float effectChanceAccum;
int lastPieceDeletionTime;
};
struct FxWorld
{
const char* name;
FxGlassSystem glassSys;
};
struct __declspec(align(4)) GfxSky
{
int skySurfCount;
int* skyStartSurfs;
GfxImage* skyImage;
char skySamplerState;
};
struct GfxWorldDpvsPlanes
{
int cellCount;
cplane_s* planes;
unsigned __int16* nodes;
unsigned int* sceneEntCellBits;
};
struct GfxCellTreeCount
{
int aabbTreeCount;
};
struct GfxAabbTree
{
Bounds bounds;
unsigned __int16 childCount;
unsigned __int16 surfaceCount;
unsigned __int16 startSurfIndex;
unsigned __int16 surfaceCountNoDecal;
unsigned __int16 startSurfIndexNoDecal;
unsigned __int16 smodelIndexCount;
unsigned __int16* smodelIndexes;
int childrenOffset;
};
struct GfxCellTree
{
GfxAabbTree* aabbTree;
};
struct GfxPortalWritable
{
bool isQueued;
bool isAncestor;
char recursionDepth;
char hullPointCount;
float(*hullPoints)[2];
GfxPortal* queuedParent;
};
struct DpvsPlane
{
float coeffs[4];
};
struct DpvsPlanes
{
DpvsPlane* planes;
int count;
};
struct DpvsClipPlaneSet
{
DpvsPlane* planes[16];
unsigned int count;
};
struct DpvsStaticCellCmd
{
DpvsPlane* planes;
GfxAabbTree* tree;
char planeCount;
char frustumPlaneCount;
unsigned __int16 sceneViewType;
};
struct GfxPortal
{
GfxPortalWritable writable;
DpvsPlane plane;
float(*vertices)[3];
unsigned __int16 cellIndex;
char vertexCount;
float hullAxis[2][3];
};
struct GfxCell
{
Bounds bounds;
int portalCount;
GfxPortal* portals;
char reflectionProbeCount;
char* reflectionProbes;
};
struct GfxReflectionProbe
{
float origin[3];
};
struct GfxLightmapArray
{
GfxImage* primary;
GfxImage* secondary;
};
struct GfxWorldVertex
{
float xyz[3];
float binormalSign;
GfxColor color;
float texCoord[2];
float lmapCoord[2];
PackedUnitVec normal;
PackedUnitVec tangent;
};
struct GfxWorldVertexData
{
GfxWorldVertex* vertices;
IDirect3DVertexBuffer9* worldVb;
};
struct GfxWorldVertexLayerData
{
char* data;
IDirect3DVertexBuffer9* layerVb;
};
struct GfxWorldDraw
{
unsigned int reflectionProbeCount;
GfxImage** reflectionProbes;
GfxReflectionProbe* reflectionProbeOrigins;
GfxTexture* reflectionProbeTextures;
int lightmapCount;
GfxLightmapArray* lightmaps;
GfxTexture* lightmapPrimaryTextures;
GfxTexture* lightmapSecondaryTextures;
GfxImage* lightmapOverridePrimary;
GfxImage* lightmapOverrideSecondary;
unsigned int vertexCount;
GfxWorldVertexData vd;
unsigned int vertexLayerDataSize;
GfxWorldVertexLayerData vld;
unsigned int indexCount;
unsigned __int16* indices;
};
struct GfxLightGridEntry
{
unsigned __int16 colorsIndex;
char primaryLightIndex;
char needsTrace;
};
struct GfxLightGridColors
{
char rgb[56][3];
};
struct GfxLightGrid
{
bool hasLightRegions;
unsigned int lastSunPrimaryLightIndex;
unsigned __int16 mins[3];
unsigned __int16 maxs[3];
unsigned int rowAxis;
unsigned int colAxis;
unsigned __int16* rowDataStart;
unsigned int rawRowDataSize;
char* rawRowData;
unsigned int entryCount;
GfxLightGridEntry* entries;
unsigned int colorCount;
GfxLightGridColors* colors;
};
struct GfxSModelSurfVisDataHeader
{
XSurface* surfs;
unsigned __int16 smodelCount;
unsigned __int16 smodelIndexes[1];
};
struct GfxBrushModelWritable
{
Bounds bounds;
};
struct __declspec(align(4)) GfxBrushModel
{
GfxBrushModelWritable writable;
Bounds bounds;
float radius;
unsigned __int16 surfaceCount;
unsigned __int16 startSurfIndex;
unsigned __int16 surfaceCountNoDecal;
};
struct MaterialMemory
{
Material* material;
int memory;
};
struct sunflare_t
{
bool hasValidData;
Material* spriteMaterial;
Material* flareMaterial;
float spriteSize;
float flareMinSize;
float flareMinDot;
float flareMaxSize;
float flareMaxDot;
float flareMaxAlpha;
int flareFadeInTime;
int flareFadeOutTime;
float blindMinDot;
float blindMaxDot;
float blindMaxDarken;
int blindFadeInTime;
int blindFadeOutTime;
float glareMinDot;
float glareMaxDot;
float glareMaxLighten;
int glareFadeInTime;
int glareFadeOutTime;
float sunFxPosition[3];
};
struct XModelDrawInfo
{
char hasGfxEntIndex;
char lod;
unsigned __int16 surfId;
};
struct GfxSceneDynModel
{
XModelDrawInfo info;
unsigned __int16 dynEntId;
};
struct BModelDrawInfo
{
unsigned __int16 surfId;
};
struct GfxSceneDynBrush
{
BModelDrawInfo info;
unsigned __int16 dynEntId;
};
struct GfxShadowGeometry
{
unsigned __int16 surfaceCount;
unsigned __int16 smodelCount;
unsigned __int16* sortedSurfIndex;
unsigned __int16* smodelIndex;
};
struct GfxLightRegionAxis
{
float dir[3];
float midPoint;
float halfSize;
};
struct GfxLightRegionHull
{
float kdopMidPoint[9];
float kdopHalfSize[9];
unsigned int axisCount;
GfxLightRegionAxis* axis;
};
struct GfxLightRegion
{
unsigned int hullCount;
GfxLightRegionHull* hulls;
};
struct GfxStaticModelInst
{
Bounds bounds;
float lightingOrigin[3];
};
struct srfTriangles_t
{
unsigned int vertexLayerData;
unsigned int firstVertex;
unsigned __int16 vertexCount;
unsigned __int16 triCount;
unsigned int baseIndex;
};
struct GfxSurfaceLightingAndFlagsFields
{
unsigned char lightmapIndex;
unsigned char reflectionProbeIndex;
unsigned char primaryLightIndex;
unsigned char flags;
};
union GfxSurfaceLightingAndFlags
{
GfxSurfaceLightingAndFlagsFields fields;
unsigned int packed;
};
struct GfxSurface
{
srfTriangles_t tris;
Material* material;
GfxSurfaceLightingAndFlags laf;
};
struct GfxSurfaceBounds
{
Bounds bounds;
};
struct GfxPackedPlacement
{
float origin[3];
float axis[3][3];
float scale;
};
struct GfxStaticModelDrawInst
{
GfxPackedPlacement placement;
XModel* model;
unsigned __int16 cullDist;
unsigned __int16 lightingHandle;
unsigned char reflectionProbeIndex;
unsigned char primaryLightIndex;
unsigned char flags;
unsigned char firstMtlSkinIndex;
GfxColor groundLighting;
unsigned __int16 cacheId[4];
};
struct GfxWorldDpvsStatic
{
unsigned int smodelCount;
unsigned int staticSurfaceCount;
unsigned int staticSurfaceCountNoDecal;
unsigned int litOpaqueSurfsBegin;
unsigned int litOpaqueSurfsEnd;
unsigned int litTransSurfsBegin;
unsigned int litTransSurfsEnd;
unsigned int shadowCasterSurfsBegin;
unsigned int shadowCasterSurfsEnd;
unsigned int emissiveSurfsBegin;
unsigned int emissiveSurfsEnd;
unsigned int smodelVisDataCount;
unsigned int surfaceVisDataCount;
unsigned char* smodelVisData[3];
unsigned char* surfaceVisData[3];
unsigned __int16* sortedSurfIndex;
GfxStaticModelInst* smodelInsts;
GfxSurface* surfaces;
GfxSurfaceBounds* surfacesBounds;
GfxStaticModelDrawInst* smodelDrawInsts;
GfxDrawSurf* surfaceMaterials;
unsigned int* surfaceCastsSunShadow;
volatile int usageCount;
};
struct GfxSModelSurfHeaderFields
{
char reflectionProbeIndex;
char sceneLightIndex;
unsigned __int16 materialSortedIndex : 12;
unsigned __int16 visDataRefCountLessOne : 4;
};
union GfxSModelSurfHeader
{
GfxSModelSurfHeaderFields fields;
unsigned int packed;
unsigned __int16 array[2];
};
struct GfxSModelSurfVisDataRefFields
{
unsigned __int16 surfIndex : 4;
unsigned __int16 visDataIndexPacked : 12;
};
union GfxSModelSurfVisDataRef
{
GfxSModelSurfVisDataRefFields fields;
unsigned __int16 packed;
};
struct GfxSModelSurf
{
GfxSModelSurfHeader header;
GfxSModelSurfVisDataRef visDataRefs[1];
};
struct GfxSModelSurfDelaySortFields
{
unsigned __int16 unused;
GfxSModelSurfVisDataRef visDataRef;
GfxSModelSurfHeader header;
};
union GfxSModelSurfDelaySort
{
GfxSModelSurfDelaySortFields fields;
unsigned __int64 packed;
};
struct GfxSModelSurfBuildList
{
GfxSModelSurfHeader lastSurfHeader;
GfxSModelSurf* lastSModelSurf;
unsigned int visDataRefCount;
char* surfDataBegin;
char* surfDataPos;
char* surfDataEnd;
GfxSModelSurfHeader minDelaySortKey;
GfxSModelSurfDelaySort* delaySurfList;
unsigned int delaySurfCount;
unsigned int delaySurfLimit;
};
struct GfxSModelSurfDrawData
{
unsigned int shadowCasterMaterialIndex;
char* visData;
unsigned int visDataUsed;
unsigned int visDataLimit;
GfxSModelSurfBuildList buildList[4][4];
};
struct GfxWorldDpvsDynamic
{
unsigned int dynEntClientWordCount[2];
unsigned int dynEntClientCount[2];
unsigned int* dynEntCellBits[2];
char* dynEntVisData[2][3];
};
struct GfxHeroOnlyLight
{
char type;
char unused[3];
float color[3];
float dir[3];
float origin[3];
float radius;
float cosHalfFovOuter;
float cosHalfFovInner;
int exponent;
};
struct __declspec(align(4)) GfxWorld
{
const char* name;
const char* baseName;
int planeCount;
int nodeCount;
unsigned int surfaceCount;
int skyCount;
GfxSky* skies;
unsigned int lastSunPrimaryLightIndex;
unsigned int primaryLightCount;
unsigned int sortKeyLitDecal;
unsigned int sortKeyEffectDecal;
unsigned int sortKeyEffectAuto;
unsigned int sortKeyDistortion;
GfxWorldDpvsPlanes dpvsPlanes;
GfxCellTreeCount* aabbTreeCounts;
GfxCellTree* aabbTrees;
GfxCell* cells;
GfxWorldDraw draw;
GfxLightGrid lightGrid;
int modelCount;
GfxBrushModel* models;
Bounds bounds;
unsigned int checksum;
int materialMemoryCount;
MaterialMemory* materialMemory;
sunflare_t sun;
float outdoorLookupMatrix[4][4];
GfxImage* outdoorImage;
unsigned int* cellCasterBits;
unsigned int* cellHasSunLitSurfsBits;
GfxSceneDynModel* sceneDynModel;
GfxSceneDynBrush* sceneDynBrush;
unsigned int* primaryLightEntityShadowVis;
unsigned int* primaryLightDynEntShadowVis[2];
char* nonSunPrimaryLightForModelDynEnt;
GfxShadowGeometry* shadowGeom;
GfxLightRegion* lightRegion;
GfxWorldDpvsStatic dpvs;
GfxWorldDpvsDynamic dpvsDyn;
unsigned int mapVtxChecksum;
unsigned int heroOnlyLightCount;
GfxHeroOnlyLight* heroOnlyLights;
char fogTypesAllowed;
};
struct __declspec(align(4)) GfxLightImage
{
GfxImage* image;
char samplerState;
};
struct GfxLightDef
{
const char* name;
GfxLightImage attenuation;
int lmapLookupStart;
};
struct Glyph
{
unsigned __int16 letter;
char x0;
char y0;
char dx;
char pixelWidth;
char pixelHeight;
float s0;
float t0;
float s1;
float t1;
};
struct Font_s
{
const char* fontName;
int pixelHeight;
int glyphCount;
Material* material;
Material* glowMaterial;
Glyph* glyphs;
};
struct rectDef_s
{
float x;
float y;
float w;
float h;
char horzAlign;
char vertAlign;
};
static_assert(sizeof(rectDef_s) == 0x14);
struct windowDef_t
{
const char* name;
rectDef_s rect;
rectDef_s rectClient;
const char* group;
int style;
int border;
int ownerDraw;
int ownerDrawFlags;
float borderSize;
int staticFlags;
int dynamicFlags[1];
int nextTime;
float foreColor[4];
float backColor[4];
float borderColor[4];
float outlineColor[4];
float disableColor[4];
Material* background;
};
static_assert(sizeof(windowDef_t) == 0xA4);
enum expDataType
{
VAL_INT = 0x0,
VAL_FLOAT = 0x1,
VAL_STRING = 0x2,
NUM_INTERNAL_DATATYPES = 0x3,
VAL_FUNCTION = 0x3,
NUM_DATATYPES = 0x4,
};
struct ExpressionString
{
const char* string;
};
union operandInternalDataUnion
{
int intVal;
float floatVal;
ExpressionString stringVal;
Statement_s* function;
};
struct Operand
{
expDataType dataType;
operandInternalDataUnion internals;
};
enum operationEnum
{
OP_NOOP = 0x0,
OP_RIGHTPAREN = 0x1,
OP_MULTIPLY = 0x2,
OP_DIVIDE = 0x3,
OP_MODULUS = 0x4,
OP_ADD = 0x5,
OP_SUBTRACT = 0x6,
OP_NOT = 0x7,
OP_LESSTHAN = 0x8,
OP_LESSTHANEQUALTO = 0x9,
OP_GREATERTHAN = 0xA,
OP_GREATERTHANEQUALTO = 0xB,
OP_EQUALS = 0xC,
OP_NOTEQUAL = 0xD,
OP_AND = 0xE,
OP_OR = 0xF,
OP_LEFTPAREN = 0x10,
OP_COMMA = 0x11,
OP_BITWISEAND = 0x12,
OP_BITWISEOR = 0x13,
OP_BITWISENOT = 0x14,
OP_BITSHIFTLEFT = 0x15,
OP_BITSHIFTRIGHT = 0x16,
OP_STATICDVARINT = 0x17,
OP_FIRSTFUNCTIONCALL = 0x17,
OP_STATICDVARBOOL = 0x18,
OP_STATICDVARFLOAT = 0x19,
OP_STATICDVARSTRING = 0x1A,
OP_TOINT = 0x1B,
OP_TOSTRING = 0x1C,
OP_TOFLOAT = 0x1D,
LAST_COMMONLY_CALLED_FUNCTION = 0x1D,
OP_SIN = 0x1E,
OP_COS = 0x1F,
OP_MIN = 0x20,
OP_MAX = 0x21,
OP_MILLISECONDS = 0x22,
OP_DVARINT = 0x23,
OP_DVARBOOL = 0x24,
OP_DVARFLOAT = 0x25,
OP_DVARSTRING = 0x26,
OP_STAT = 0x27,
OP_UIACTIVE = 0x28,
OP_FLASHBANGED = 0x29,
OP_USINGVEHICLE = 0x2A,
OP_MISSILECAM = 0x2B,
OP_SCOPED = 0x2C,
OP_SCOPEDTHERMAL = 0x2D,
OP_SCOREBOARDVISIBLE = 0x2E,
OP_INKILLCAM = 0x2F,
OP_INKILLCAM_NPC = 0x30,
OP_PLAYERFIELD = 0x31,
OP_GET_PLAYER_PERK = 0x32,
OP_SELECTINGLOCATION = 0x33,
OP_SELECTINGDIRECTION = 0x34,
OP_TEAMFIELD = 0x35,
OP_OTHERTEAMFIELD = 0x36,
OP_MARINESFIELD = 0x37,
OP_OPFORFIELD = 0x38,
OP_MENUISOPEN = 0x39,
OP_WRITINGDATA = 0x3A,
OP_INLOBBY = 0x3B,
OP_INPRIVATEPARTY = 0x3C,
OP_PRIVATEPARTYHOST = 0x3D,
OP_PRIVATEPARTYHOSTINLOBBY = 0x3E,
OP_ALONEINPARTY = 0x3F,
OP_ADSJAVELIN = 0x40,
OP_WEAPLOCKBLINK = 0x41,
OP_WEAPATTACKTOP = 0x42,
OP_WEAPATTACKDIRECT = 0x43,
OP_WEAPLOCKING = 0x44,
OP_WEAPLOCKED = 0x45,
OP_WEAPLOCKTOOCLOSE = 0x46,
OP_WEAPLOCKSCREENPOSX = 0x47,
OP_WEAPLOCKSCREENPOSY = 0x48,
OP_SECONDSASTIME = 0x49,
OP_TABLELOOKUP = 0x4A,
OP_TABLELOOKUPBYROW = 0x4B,
OP_TABLEGETROWNUM = 0x4C,
OP_LOCALIZESTRING = 0x4D,
OP_LOCALVARINT = 0x4E,
OP_LOCALVARBOOL = 0x4F,
OP_LOCALVARFLOAT = 0x50,
OP_LOCALVARSTRING = 0x51,
OP_TIMELEFT = 0x52,
OP_SECONDSASCOUNTDOWN = 0x53,
OP_GAMEMSGWNDACTIVE = 0x54,
OP_GAMETYPENAME = 0x55,
OP_GAMETYPE = 0x56,
OP_GAMETYPEDESCRIPTION = 0x57,
OP_SCORE = 0x58,
OP_FRIENDSONLINE = 0x59,
OP_FOLLOWING = 0x5A,
OP_SPECTATINGFREE = 0x5B,
OP_STATRANGEBITSSET = 0x5C,
OP_KEYBINDING = 0x5D,
OP_ACTIONSLOTUSABLE = 0x5E,
OP_HUDFADE = 0x5F,
OP_MAXPLAYERS = 0x60,
OP_ACCEPTINGINVITE = 0x61,
OP_ISINTERMISSION = 0x62,
OP_GAMEHOST = 0x63,
OP_PARTYHASMISSINGMAPPACK = 0x64,
OP_PARTYMISSINGMAPPACKERROR = 0x65,
OP_ANYNEWMAPPACKS = 0x66,
OP_AMISELECTED = 0x67,
OP_PARTYSTATUSSTRING = 0x68,
OP_ATTACHED_CONTROLLER_COUNT = 0x69,
OP_IS_SPLIT_SCREEN_ONLINE_POSSIBLE = 0x6A,
OP_SPLITSCREENPLAYERCOUNT = 0x6B,
OP_GETPLAYERDATA = 0x6C,
OP_GETPLAYERDATASPLITSCREEN = 0x6D,
OP_EXPERIENCE_FOR_LEVEL = 0x6E,
OP_LEVEL_FOR_EXPERIENCE = 0x6F,
OP_IS_ITEM_UNLOCKED = 0x70,
OP_IS_ITEM_UNLOCKEDSPLITSCREEN = 0x71,
OP_DEBUG_PRINT = 0x72,
OP_GETPLAYERDATA_ANYBOOLTRUE = 0x73,
OP_WEAPON_CLASS_NEW = 0x74,
OP_WEAPONNAME = 0x75,
OP_ISRELOADING = 0x76,
OP_SAVE_GAME_AVAILABLE = 0x77,
OP_UNLOCKED_ITEM_COUNT = 0x78,
OP_UNLOCKED_ITEM_COUNT_SPLITSCREEN = 0x79,
OP_UNLOCKED_ITEM = 0x7A,
OP_UNLOCKED_ITEM_SPLITSCREEN = 0x7B,
OP_MAIL_SUBJECT = 0x7C,
OP_MAIL_FROM = 0x7D,
OP_MAIL_RECEIVED = 0x7E,
OP_MAIL_BODY = 0x7F,
OP_MAIL_LOOT_LOCALIZED = 0x80,
OP_MAIL_GIVES_LOOT = 0x81,
OP_ANY_NEW_MAIL = 0x82,
OP_MAIL_TIME_TO_FOLLOWUP = 0x83,
OP_MAIL_LOOT_TYPE = 0x84,
OP_MAIL_RAN_LOTTERY = 0x85,
OP_LOTTERY_LOOT_LOCALIZED = 0x86,
OP_RADAR_IS_JAMMED = 0x87,
OP_RADAR_JAM_INTENSITY = 0x88,
OP_RADAR_IS_ENABLED = 0x89,
OP_EMP_JAMMED = 0x8A,
OP_PLAYERADS = 0x8B,
OP_WEAPON_HEAT_ACTIVE = 0x8C,
OP_WEAPON_HEAT_VALUE = 0x8D,
OP_WEAPON_HEAT_OVERHEATED = 0x8E,
OP_SPLASH_TEXT = 0x8F,
OP_SPLASH_DESCRIPTION = 0x90,
OP_SPLASH_MATERIAL = 0x91,
OP_SPLASH_HAS_ICON = 0x92,
OP_SPLASH_ROWNUM = 0x93,
OP_GETFOCUSED_NAME = 0x94,
OP_GETFOCUSED_X = 0x95,
OP_GETFOCUSED_Y = 0x96,
OP_GETFOCUSED_W = 0x97,
OP_GETFOCUSED_H = 0x98,
OP_GETITEMDEF_X = 0x99,
OP_GETITEMDEF_Y = 0x9A,
OP_GETITEMDEF_W = 0x9B,
OP_GETITEMDEF_H = 0x9C,
OP_PLAYLISTFIELD = 0x9D,
OP_SCOREBOARD_EXTERNALMUTE_NOTICE = 0x9E,
OP_CLIENT_MATCH_DATA = 0x9F,
OP_CLIENT_MATCH_DATA_DEF = 0xA0,
OP_GET_MAP_NAME = 0xA1,
OP_GET_MAP_IMAGE = 0xA2,
OP_GET_MAP_CUSTOM = 0xA3,
OP_GET_MIGRATION_STATUS = 0xA4,
OP_GET_PLAYERCARD_INFO = 0xA5,
OP_IS_OFFLINE_PROFILE_SELECTED = 0xA6,
OP_COOP_PLAYERFIELD = 0xA7,
OP_IS_COOP = 0xA8,
OP_GETPARTYSTATUS = 0xA9,
OP_GETSEARCHPARAMS = 0xAA,
OP_GETTIMEPLAYED = 0xAB,
OP_IS_SELECTED_PLAYER_FRIEND = 0xAC,
OP_GETCHARBYINDEX = 0xAD,
OP_GETPLAYERPROFILEDATA = 0xAE,
OP_IS_PROFILE_SIGNED_IN = 0xAF,
OP_GET_WAIT_POPUP_STATUS = 0xB0,
NUM_OPERATORS = 0xB1,
};
union entryInternalData
{
operationEnum op;
Operand operand;
};
struct expressionEntry
{
int type;
entryInternalData data;
};
struct UIFunctionList
{
int totalFunctions;
Statement_s** functions;
};
union DvarValue
{
bool enabled;
int integer;
unsigned int unsignedInt;
float value;
float vector[4];
const char* string;
unsigned char color[4];
};
static_assert(sizeof(DvarValue) == 0x10);
struct enum_limit
{
int stringCount;
const char** strings;
};
struct int_limit
{
int min;
int max;
};
struct float_limit
{
float min;
float max;
};
union DvarLimits
{
enum_limit enumeration;
int_limit integer;
float_limit value;
float_limit vector;
};
static_assert(sizeof(DvarLimits) == 0x8);
struct dvar_t
{
const char* name;
const char* description;
unsigned int flags;
dvar_type type;
bool modified;
DvarValue current;
DvarValue latched;
DvarValue reset;
DvarLimits domain;
bool(__cdecl* domainFunc)(dvar_t*, DvarValue);
dvar_t* hashNext;
};
static_assert(sizeof(dvar_t) == 0x50);
struct StaticDvar
{
dvar_t* dvar;
char* dvarName;
};
struct StaticDvarList
{
int numStaticDvars;
StaticDvar** staticDvars;
};
struct StringList
{
int totalStrings;
const char** strings;
};
struct ExpressionSupportingData
{
UIFunctionList uifunctions;
StaticDvarList staticDvarList;
StringList uiStrings;
};
struct Statement_s
{
int numEntries;
expressionEntry* entries;
ExpressionSupportingData* supportingData;
int lastExecuteTime;
Operand lastResult;
};
struct ConditionalScript
{
MenuEventHandlerSet* eventHandlerSet;
Statement_s* eventExpression;
};
struct SetLocalVarData
{
const char* localVarName;
Statement_s* expression;
};
union EventData
{
const char* unconditionalScript;
ConditionalScript* conditionalScript;
MenuEventHandlerSet* elseScript;
SetLocalVarData* setLocalVarData;
};
struct __declspec(align(4)) MenuEventHandler
{
EventData eventData;
char eventType;
};
struct MenuEventHandlerSet
{
int eventHandlerCount;
MenuEventHandler** eventHandlers;
};
struct ItemKeyHandler
{
int key;
MenuEventHandlerSet* action;
ItemKeyHandler* next;
};
struct columnInfo_s
{
int pos;
int width;
int maxChars;
int alignment;
};
struct listBoxDef_s
{
int mousePos;
int startPos[1];
int endPos[1];
int drawPadding;
float elementWidth;
float elementHeight;
int elementStyle;
int numColumns;
columnInfo_s columnInfo[16];
MenuEventHandlerSet* onDoubleClick;
int notselectable;
int noScrollBars;
int usePaging;
float selectBorder[4];
Material* selectIcon;
};
struct editFieldDef_s
{
float minVal;
float maxVal;
float defVal;
float range;
int maxChars;
int maxCharsGotoNext;
int maxPaintChars;
int paintOffset;
};
struct multiDef_s
{
const char* dvarList[32];
const char* dvarStr[32];
float dvarValue[32];
int count;
int strDef;
};
struct newsTickerDef_s
{
int feedId;
int speed;
int spacing;
int lastTime;
int start;
int end;
float x;
};
struct textScrollDef_s
{
int startTime;
};
union itemDefData_t
{
listBoxDef_s* listBox;
editFieldDef_s* editField;
multiDef_s* multi;
const char* enumDvarName;
newsTickerDef_s* ticker;
textScrollDef_s* scroll;
void* data;
};
struct ItemFloatExpression
{
int target;
Statement_s* expression;
};
struct itemDef_s
{
windowDef_t window;
rectDef_s textRect[1];
int type;
int dataType;
int alignment;
int fontEnum;
int textAlignMode;
float textalignx;
float textaligny;
float textscale;
int textStyle;
int gameMsgWindowIndex;
int gameMsgWindowMode;
const char* text;
int itemFlags;
menuDef_t* parent;
MenuEventHandlerSet* mouseEnterText;
MenuEventHandlerSet* mouseExitText;
MenuEventHandlerSet* mouseEnter;
MenuEventHandlerSet* mouseExit;
MenuEventHandlerSet* action;
MenuEventHandlerSet* accept;
MenuEventHandlerSet* onFocus;
MenuEventHandlerSet* leaveFocus;
const char* dvar;
const char* dvarTest;
ItemKeyHandler* onKey;
const char* enableDvar;
const char* localVar;
int dvarFlags;
snd_alias_list_t* focusSound;
float special;
int cursorPos[1];
itemDefData_t typeData;
int imageTrack;
int floatExpressionCount;
ItemFloatExpression* floatExpressions;
Statement_s* visibleExp;
Statement_s* disabledExp;
Statement_s* textExp;
Statement_s* materialExp;
float glowColor[4];
bool decayActive;
int fxBirthTime;
int fxLetterTime;
int fxDecayStartTime;
int fxDecayDuration;
int lastSoundPlayedTime;
};
struct menuTransition
{
int transitionType;
int targetField;
int startTime;
float startVal;
float endVal;
float time;
int endTriggerType;
};
struct menuDef_t
{
windowDef_t window;
const char* font;
int fullScreen;
int itemCount;
int fontIndex;
int cursorItem[1];
int fadeCycle;
float fadeClamp;
float fadeAmount;
float fadeInAmount;
float blurRadius;
MenuEventHandlerSet* onOpen;
MenuEventHandlerSet* onCloseRequest;
MenuEventHandlerSet* onClose;
MenuEventHandlerSet* onESC;
ItemKeyHandler* onKey;
Statement_s* visibleExp;
const char* allowedBinding;
const char* soundName;
int imageTrack;
float focusColor[4];
Statement_s* rectXExp;
Statement_s* rectYExp;
Statement_s* rectWExp;
Statement_s* rectHExp;
Statement_s* openSoundExp;
Statement_s* closeSoundExp;
itemDef_s** items;
menuTransition scaleTransition[1];
menuTransition alphaTransition[1];
menuTransition xTransition[1];
menuTransition yTransition[1];
ExpressionSupportingData* expressionData;
};
struct MenuList
{
const char* name;
int menuCount;
menuDef_t** menus;
};
struct LocalizeEntry
{
const char* value;
const char* name;
};
enum weapType_t
{
WEAPTYPE_BULLET = 0x0,
WEAPTYPE_GRENADE = 0x1,
WEAPTYPE_PROJECTILE = 0x2,
WEAPTYPE_RIOTSHIELD = 0x3,
WEAPTYPE_NUM = 0x4,
};
enum weapClass_t
{
WEAPCLASS_RIFLE = 0x0,
WEAPCLASS_SNIPER = 0x1,
WEAPCLASS_MG = 0x2,
WEAPCLASS_SMG = 0x3,
WEAPCLASS_SPREAD = 0x4,
WEAPCLASS_PISTOL = 0x5,
WEAPCLASS_GRENADE = 0x6,
WEAPCLASS_ROCKETLAUNCHER = 0x7,
WEAPCLASS_TURRET = 0x8,
WEAPCLASS_THROWINGKNIFE = 0x9,
WEAPCLASS_NON_PLAYER = 0xA,
WEAPCLASS_ITEM = 0xB,
WEAPCLASS_NUM = 0xC,
};
enum PenetrateType
{
PENETRATE_TYPE_NONE = 0x0,
PENETRATE_TYPE_SMALL = 0x1,
PENETRATE_TYPE_MEDIUM = 0x2,
PENETRATE_TYPE_LARGE = 0x3,
PENETRATE_TYPE_COUNT = 0x4,
};
enum weapInventoryType_t
{
WEAPINVENTORY_PRIMARY = 0x0,
WEAPINVENTORY_OFFHAND = 0x1,
WEAPINVENTORY_ITEM = 0x2,
WEAPINVENTORY_ALTMODE = 0x3,
WEAPINVENTORY_EXCLUSIVE = 0x4,
WEAPINVENTORY_SCAVENGER = 0x5,
WEAPINVENTORYCOUNT = 0x6,
};
enum weapFireType_t
{
WEAPON_FIRETYPE_FULLAUTO = 0x0,
WEAPON_FIRETYPE_SINGLESHOT = 0x1,
WEAPON_FIRETYPE_BURSTFIRE2 = 0x2,
WEAPON_FIRETYPE_BURSTFIRE3 = 0x3,
WEAPON_FIRETYPE_BURSTFIRE4 = 0x4,
WEAPON_FIRETYPE_DOUBLEBARREL = 0x5,
WEAPON_FIRETYPECOUNT = 0x6,
WEAPON_FIRETYPE_BURSTFIRE_FIRST = 0x2,
WEAPON_FIRETYPE_BURSTFIRE_LAST = 0x4,
};
enum weapStance_t
{
WEAPSTANCE_STAND = 0x0,
WEAPSTANCE_DUCK = 0x1,
WEAPSTANCE_PRONE = 0x2,
WEAPSTANCE_NUM = 0x3,
};
enum activeReticleType_t
{
VEH_ACTIVE_RETICLE_NONE = 0x0,
VEH_ACTIVE_RETICLE_PIP_ON_A_STICK = 0x1,
VEH_ACTIVE_RETICLE_BOUNCING_DIAMOND = 0x2,
VEH_ACTIVE_RETICLE_COUNT = 0x3,
};
enum weaponIconRatioType_t
{
WEAPON_ICON_RATIO_1TO1 = 0x0,
WEAPON_ICON_RATIO_2TO1 = 0x1,
WEAPON_ICON_RATIO_4TO1 = 0x2,
WEAPON_ICON_RATIO_COUNT = 0x3,
};
enum ammoCounterClipType_t
{
AMMO_COUNTER_CLIP_NONE = 0x0,
AMMO_COUNTER_CLIP_MAGAZINE = 0x1,
AMMO_COUNTER_CLIP_SHORTMAGAZINE = 0x2,
AMMO_COUNTER_CLIP_SHOTGUN = 0x3,
AMMO_COUNTER_CLIP_ROCKET = 0x4,
AMMO_COUNTER_CLIP_BELTFED = 0x5,
AMMO_COUNTER_CLIP_ALTWEAPON = 0x6,
AMMO_COUNTER_CLIP_COUNT = 0x7,
};
enum weapOverlayReticle_t
{
WEAPOVERLAYRETICLE_NONE = 0x0,
WEAPOVERLAYRETICLE_CROSSHAIR = 0x1,
WEAPOVERLAYRETICLE_NUM = 0x2,
};
enum WeapOverlayInteface_t
{
WEAPOVERLAYINTERFACE_NONE = 0x0,
WEAPOVERLAYINTERFACE_JAVELIN = 0x1,
WEAPOVERLAYINTERFACE_TURRETSCOPE = 0x2,
WEAPOVERLAYINTERFACECOUNT = 0x3,
};
enum weapProjExposion_t
{
WEAPPROJEXP_GRENADE = 0x0,
WEAPPROJEXP_ROCKET = 0x1,
WEAPPROJEXP_FLASHBANG = 0x2,
WEAPPROJEXP_NONE = 0x3,
WEAPPROJEXP_DUD = 0x4,
WEAPPROJEXP_SMOKE = 0x5,
WEAPPROJEXP_HEAVY = 0x6,
WEAPPROJEXP_NUM = 0x7,
};
enum WeapStickinessType
{
WEAPSTICKINESS_NONE = 0x0,
WEAPSTICKINESS_ALL = 0x1,
WEAPSTICKINESS_ALL_ORIENT = 0x2,
WEAPSTICKINESS_GROUND = 0x3,
WEAPSTICKINESS_GROUND_WITH_YAW = 0x4,
WEAPSTICKINESS_KNIFE = 0x5,
WEAPSTICKINESS_COUNT = 0x6,
};
enum guidedMissileType_t
{
MISSILE_GUIDANCE_NONE = 0x0,
MISSILE_GUIDANCE_SIDEWINDER = 0x1,
MISSILE_GUIDANCE_HELLFIRE = 0x2,
MISSILE_GUIDANCE_JAVELIN = 0x3,
MISSILE_GUIDANCE_COUNT = 0x4,
};
struct TracerDef
{
const char* name;
Material* material;
unsigned int drawInterval;
float speed;
float beamLength;
float beamWidth;
float screwRadius;
float screwDist;
float colors[5][4];
};
struct __declspec(align(4)) WeaponDef
{
const char* szOverlayName;
XModel** gunXModel;
XModel* handXModel;
const char** szXAnimsRightHanded;
const char** szXAnimsLeftHanded;
const char* szModeName;
unsigned __int16* notetrackSoundMapKeys;
unsigned __int16* notetrackSoundMapValues;
unsigned __int16* notetrackRumbleMapKeys;
unsigned __int16* notetrackRumbleMapValues;
int playerAnimType;
weapType_t weapType;
weapClass_t weapClass;
PenetrateType penetrateType;
weapInventoryType_t inventoryType;
weapFireType_t fireType;
OffhandClass offhandClass;
weapStance_t stance;
FxEffectDef* viewFlashEffect;
FxEffectDef* worldFlashEffect;
snd_alias_list_t* pickupSound;
snd_alias_list_t* pickupSoundPlayer;
snd_alias_list_t* ammoPickupSound;
snd_alias_list_t* ammoPickupSoundPlayer;
snd_alias_list_t* projectileSound;
snd_alias_list_t* pullbackSound;
snd_alias_list_t* pullbackSoundPlayer;
snd_alias_list_t* fireSound;
snd_alias_list_t* fireSoundPlayer;
snd_alias_list_t* fireSoundPlayerAkimbo;
snd_alias_list_t* fireLoopSound;
snd_alias_list_t* fireLoopSoundPlayer;
snd_alias_list_t* fireStopSound;
snd_alias_list_t* fireStopSoundPlayer;
snd_alias_list_t* fireLastSound;
snd_alias_list_t* fireLastSoundPlayer;
snd_alias_list_t* emptyFireSound;
snd_alias_list_t* emptyFireSoundPlayer;
snd_alias_list_t* meleeSwipeSound;
snd_alias_list_t* meleeSwipeSoundPlayer;
snd_alias_list_t* meleeHitSound;
snd_alias_list_t* meleeMissSound;
snd_alias_list_t* rechamberSound;
snd_alias_list_t* rechamberSoundPlayer;
snd_alias_list_t* reloadSound;
snd_alias_list_t* reloadSoundPlayer;
snd_alias_list_t* reloadEmptySound;
snd_alias_list_t* reloadEmptySoundPlayer;
snd_alias_list_t* reloadStartSound;
snd_alias_list_t* reloadStartSoundPlayer;
snd_alias_list_t* reloadEndSound;
snd_alias_list_t* reloadEndSoundPlayer;
snd_alias_list_t* detonateSound;
snd_alias_list_t* detonateSoundPlayer;
snd_alias_list_t* nightVisionWearSound;
snd_alias_list_t* nightVisionWearSoundPlayer;
snd_alias_list_t* nightVisionRemoveSound;
snd_alias_list_t* nightVisionRemoveSoundPlayer;
snd_alias_list_t* altSwitchSound;
snd_alias_list_t* altSwitchSoundPlayer;
snd_alias_list_t* raiseSound;
snd_alias_list_t* raiseSoundPlayer;
snd_alias_list_t* firstRaiseSound;
snd_alias_list_t* firstRaiseSoundPlayer;
snd_alias_list_t* putawaySound;
snd_alias_list_t* putawaySoundPlayer;
snd_alias_list_t* scanSound;
snd_alias_list_t** bounceSound;
FxEffectDef* viewShellEjectEffect;
FxEffectDef* worldShellEjectEffect;
FxEffectDef* viewLastShotEjectEffect;
FxEffectDef* worldLastShotEjectEffect;
Material* reticleCenter;
Material* reticleSide;
int iReticleCenterSize;
int iReticleSideSize;
int iReticleMinOfs;
activeReticleType_t activeReticleType;
float vStandMove[3];
float vStandRot[3];
float strafeMove[3];
float strafeRot[3];
float vDuckedOfs[3];
float vDuckedMove[3];
float vDuckedRot[3];
float vProneOfs[3];
float vProneMove[3];
float vProneRot[3];
float fPosMoveRate;
float fPosProneMoveRate;
float fStandMoveMinSpeed;
float fDuckedMoveMinSpeed;
float fProneMoveMinSpeed;
float fPosRotRate;
float fPosProneRotRate;
float fStandRotMinSpeed;
float fDuckedRotMinSpeed;
float fProneRotMinSpeed;
XModel** worldModel;
XModel* worldClipModel;
XModel* rocketModel;
XModel* knifeModel;
XModel* worldKnifeModel;
Material* hudIcon;
weaponIconRatioType_t hudIconRatio;
Material* pickupIcon;
weaponIconRatioType_t pickupIconRatio;
Material* ammoCounterIcon;
weaponIconRatioType_t ammoCounterIconRatio;
ammoCounterClipType_t ammoCounterClip;
int iStartAmmo;
const char* szAmmoName;
int iAmmoIndex;
const char* szClipName;
int iClipIndex;
int iMaxAmmo;
int shotCount;
const char* szSharedAmmoCapName;
int iSharedAmmoCapIndex;
int iSharedAmmoCap;
int damage;
int playerDamage;
int iMeleeDamage;
int iDamageType;
int iFireDelay;
int iMeleeDelay;
int meleeChargeDelay;
int iDetonateDelay;
int iRechamberTime;
int rechamberTimeOneHanded;
int iRechamberBoltTime;
int iHoldFireTime;
int iDetonateTime;
int iMeleeTime;
int meleeChargeTime;
int iReloadTime;
int reloadShowRocketTime;
int iReloadEmptyTime;
int iReloadAddTime;
int iReloadStartTime;
int iReloadStartAddTime;
int iReloadEndTime;
int iDropTime;
int iRaiseTime;
int iAltDropTime;
int quickDropTime;
int quickRaiseTime;
int iBreachRaiseTime;
int iEmptyRaiseTime;
int iEmptyDropTime;
int sprintInTime;
int sprintLoopTime;
int sprintOutTime;
int stunnedTimeBegin;
int stunnedTimeLoop;
int stunnedTimeEnd;
int nightVisionWearTime;
int nightVisionWearTimeFadeOutEnd;
int nightVisionWearTimePowerUp;
int nightVisionRemoveTime;
int nightVisionRemoveTimePowerDown;
int nightVisionRemoveTimeFadeInStart;
int fuseTime;
int aiFuseTime;
float autoAimRange;
float aimAssistRange;
float aimAssistRangeAds;
float aimPadding;
float enemyCrosshairRange;
float moveSpeedScale;
float adsMoveSpeedScale;
float sprintDurationScale;
float fAdsZoomInFrac;
float fAdsZoomOutFrac;
Material* overlayMaterial;
Material* overlayMaterialLowRes;
Material* overlayMaterialEMP;
Material* overlayMaterialEMPLowRes;
weapOverlayReticle_t overlayReticle;
WeapOverlayInteface_t overlayInterface;
float overlayWidth;
float overlayHeight;
float overlayWidthSplitscreen;
float overlayHeightSplitscreen;
float fAdsBobFactor;
float fAdsViewBobMult;
float fHipSpreadStandMin;
float fHipSpreadDuckedMin;
float fHipSpreadProneMin;
float hipSpreadStandMax;
float hipSpreadDuckedMax;
float hipSpreadProneMax;
float fHipSpreadDecayRate;
float fHipSpreadFireAdd;
float fHipSpreadTurnAdd;
float fHipSpreadMoveAdd;
float fHipSpreadDuckedDecay;
float fHipSpreadProneDecay;
float fHipReticleSidePos;
float fAdsIdleAmount;
float fHipIdleAmount;
float adsIdleSpeed;
float hipIdleSpeed;
float fIdleCrouchFactor;
float fIdleProneFactor;
float fGunMaxPitch;
float fGunMaxYaw;
float swayMaxAngle;
float swayLerpSpeed;
float swayPitchScale;
float swayYawScale;
float swayHorizScale;
float swayVertScale;
float swayShellShockScale;
float adsSwayMaxAngle;
float adsSwayLerpSpeed;
float adsSwayPitchScale;
float adsSwayYawScale;
float adsSwayHorizScale;
float adsSwayVertScale;
float adsViewErrorMin;
float adsViewErrorMax;
PhysCollmap* physCollmap;
float dualWieldViewModelOffset;
weaponIconRatioType_t killIconRatio;
int iReloadAmmoAdd;
int iReloadStartAdd;
int ammoDropStockMin;
int ammoDropClipPercentMin;
int ammoDropClipPercentMax;
int iExplosionRadius;
int iExplosionRadiusMin;
int iExplosionInnerDamage;
int iExplosionOuterDamage;
float damageConeAngle;
float bulletExplDmgMult;
float bulletExplRadiusMult;
int iProjectileSpeed;
int iProjectileSpeedUp;
int iProjectileSpeedForward;
int iProjectileActivateDist;
float projLifetime;
float timeToAccelerate;
float projectileCurvature;
XModel* projectileModel;
weapProjExposion_t projExplosion;
FxEffectDef* projExplosionEffect;
FxEffectDef* projDudEffect;
snd_alias_list_t* projExplosionSound;
snd_alias_list_t* projDudSound;
WeapStickinessType stickiness;
float lowAmmoWarningThreshold;
float ricochetChance;
float* parallelBounce;
float* perpendicularBounce;
FxEffectDef* projTrailEffect;
FxEffectDef* projBeaconEffect;
float vProjectileColor[3];
guidedMissileType_t guidedMissileType;
float maxSteeringAccel;
int projIgnitionDelay;
FxEffectDef* projIgnitionEffect;
snd_alias_list_t* projIgnitionSound;
float fAdsAimPitch;
float fAdsCrosshairInFrac;
float fAdsCrosshairOutFrac;
int adsGunKickReducedKickBullets;
float adsGunKickReducedKickPercent;
float fAdsGunKickPitchMin;
float fAdsGunKickPitchMax;
float fAdsGunKickYawMin;
float fAdsGunKickYawMax;
float fAdsGunKickAccel;
float fAdsGunKickSpeedMax;
float fAdsGunKickSpeedDecay;
float fAdsGunKickStaticDecay;
float fAdsViewKickPitchMin;
float fAdsViewKickPitchMax;
float fAdsViewKickYawMin;
float fAdsViewKickYawMax;
float fAdsViewScatterMin;
float fAdsViewScatterMax;
float fAdsSpread;
int hipGunKickReducedKickBullets;
float hipGunKickReducedKickPercent;
float fHipGunKickPitchMin;
float fHipGunKickPitchMax;
float fHipGunKickYawMin;
float fHipGunKickYawMax;
float fHipGunKickAccel;
float fHipGunKickSpeedMax;
float fHipGunKickSpeedDecay;
float fHipGunKickStaticDecay;
float fHipViewKickPitchMin;
float fHipViewKickPitchMax;
float fHipViewKickYawMin;
float fHipViewKickYawMax;
float fHipViewScatterMin;
float fHipViewScatterMax;
float fightDist;
float maxDist;
const char* accuracyGraphName[2];
float(*originalAccuracyGraphKnots[2])[2];
unsigned __int16 originalAccuracyGraphKnotCount[2];
int iPositionReloadTransTime;
float leftArc;
float rightArc;
float topArc;
float bottomArc;
float accuracy;
float aiSpread;
float playerSpread;
float minTurnSpeed[2];
float maxTurnSpeed[2];
float pitchConvergenceTime;
float yawConvergenceTime;
float suppressTime;
float maxRange;
float fAnimHorRotateInc;
float fPlayerPositionDist;
const char* szUseHintString;
const char* dropHintString;
int iUseHintStringIndex;
int dropHintStringIndex;
float horizViewJitter;
float vertViewJitter;
float scanSpeed;
float scanAccel;
int scanPauseTime;
const char* szScript;
float fOOPosAnimLength[2];
int minDamage;
int minPlayerDamage;
float fMaxDamageRange;
float fMinDamageRange;
float destabilizationRateTime;
float destabilizationCurvatureMax;
int destabilizeDistance;
float* locationDamageMultipliers;
const char* fireRumble;
const char* meleeImpactRumble;
TracerDef* tracerType;
float turretScopeZoomRate;
float turretScopeZoomMin;
float turretScopeZoomMax;
float turretOverheatUpRate;
float turretOverheatDownRate;
float turretOverheatPenalty;
snd_alias_list_t* turretOverheatSound;
FxEffectDef* turretOverheatEffect;
const char* turretBarrelSpinRumble;
float turretBarrelSpinSpeed;
float turretBarrelSpinUpTime;
float turretBarrelSpinDownTime;
snd_alias_list_t* turretBarrelSpinMaxSnd;
snd_alias_list_t* turretBarrelSpinUpSnd[4];
snd_alias_list_t* turretBarrelSpinDownSnd[4];
snd_alias_list_t* missileConeSoundAlias;
snd_alias_list_t* missileConeSoundAliasAtBase;
float missileConeSoundRadiusAtTop;
float missileConeSoundRadiusAtBase;
float missileConeSoundHeight;
float missileConeSoundOriginOffset;
float missileConeSoundVolumescaleAtCore;
float missileConeSoundVolumescaleAtEdge;
float missileConeSoundVolumescaleCoreSize;
float missileConeSoundPitchAtTop;
float missileConeSoundPitchAtBottom;
float missileConeSoundPitchTopSize;
float missileConeSoundPitchBottomSize;
float missileConeSoundCrossfadeTopSize;
float missileConeSoundCrossfadeBottomSize;
bool sharedAmmo;
bool lockonSupported;
bool requireLockonToFire;
bool bigExplosion;
bool noAdsWhenMagEmpty;
bool avoidDropCleanup;
bool inheritsPerks;
bool crosshairColorChange;
bool bRifleBullet;
bool armorPiercing;
bool bBoltAction;
bool aimDownSight;
bool bRechamberWhileAds;
bool bBulletExplosiveDamage;
bool bCookOffHold;
bool bClipOnly;
bool noAmmoPickup;
bool adsFireOnly;
bool cancelAutoHolsterWhenEmpty;
bool disableSwitchToWhenEmpty;
bool suppressAmmoReserveDisplay;
bool laserSightDuringNightvision;
bool markableViewmodel;
bool noDualWield;
bool flipKillIcon;
bool bNoPartialReload;
bool bSegmentedReload;
bool blocksProne;
bool silenced;
bool isRollingGrenade;
bool projExplosionEffectForceNormalUp;
bool bProjImpactExplode;
bool stickToPlayers;
bool hasDetonator;
bool disableFiring;
bool timedDetonation;
bool rotate;
bool holdButtonToThrow;
bool freezeMovementWhenFiring;
bool thermalScope;
bool altModeSameWeapon;
bool turretBarrelSpinEnabled;
bool missileConeSoundEnabled;
bool missileConeSoundPitchshiftEnabled;
bool missileConeSoundCrossfadeEnabled;
bool offhandHoldIsCancelable;
};
enum ImpactType
{
IMPACT_TYPE_NONE = 0x0,
IMPACT_TYPE_BULLET_SMALL = 0x1,
IMPACT_TYPE_BULLET_LARGE = 0x2,
IMPACT_TYPE_BULLET_AP = 0x3,
IMPACT_TYPE_BULLET_EXPLODE = 0x4,
IMPACT_TYPE_SHOTGUN = 0x5,
IMPACT_TYPE_SHOTGUN_EXPLODE = 0x6,
IMPACT_TYPE_GRENADE_BOUNCE = 0x7,
IMPACT_TYPE_GRENADE_EXPLODE = 0x8,
IMPACT_TYPE_ROCKET_EXPLODE = 0x9,
IMPACT_TYPE_PROJECTILE_DUD = 0xA,
IMPACT_TYPE_COUNT = 0xB,
};
struct WeaponCompleteDef
{
const char* szInternalName;
WeaponDef* weapDef;
const char* szDisplayName;
unsigned __int16* hideTags;
const char** szXAnims;
float fAdsZoomFov;
int iAdsTransInTime;
int iAdsTransOutTime;
int iClipSize;
ImpactType impactType;
int iFireTime;
weaponIconRatioType_t dpadIconRatio;
float penetrateMultiplier;
float fAdsViewKickCenterSpeed;
float fHipViewKickCenterSpeed;
const char* szAltWeaponName;
unsigned int altWeaponIndex;
int iAltRaiseTime;
Material* killIcon;
Material* dpadIcon;
int fireAnimLength;
int iFirstRaiseTime;
int ammoDropStockMax;
float adsDofStart;
float adsDofEnd;
unsigned __int16 accuracyGraphKnotCount[2];
float(*accuracyGraphKnots[2])[2];
bool motionTracker;
bool enhanced;
bool dpadIconShowsAmmo;
};
struct SndDriverGlobals
{
const char* name;
};
struct FxImpactEntry
{
FxEffectDef* nonflesh[31];
FxEffectDef* flesh[4];
};
struct FxImpactTable
{
const char* name;
FxImpactEntry* table;
};
struct RawFile
{
const char* name;
int compressedLen;
int len;
const char* buffer;
};
struct StringTableCell
{
const char* string;
int hash;
};
struct StringTable
{
const char* name;
int columnCount;
int rowCount;
StringTableCell* values;
};
enum LbColType
{
LBCOL_TYPE_NUMBER = 0x0,
LBCOL_TYPE_TIME = 0x1,
LBCOL_TYPE_LEVELXP = 0x2,
LBCOL_TYPE_PRESTIGE = 0x3,
LBCOL_TYPE_BIGNUMBER = 0x4,
LBCOL_TYPE_PERCENT = 0x5,
LBCOL_TYPE_COUNT = 0x6,
};
enum LbAggType
{
LBAGG_TYPE_MIN = 0x0,
LBAGG_TYPE_MAX = 0x1,
LBAGG_TYPE_SUM = 0x2,
LBAGG_TYPE_LAST = 0x3,
LBAGG_TYPE_COUNT = 0x4,
};
struct LbColumnDef
{
const char* name;
int id;
int propertyId;
bool hidden;
const char* statName;
LbColType type;
int precision;
LbAggType agg;
};
struct LeaderboardDef
{
const char* name;
int id;
int columnCount;
int xpColId;
int prestigeColId;
LbColumnDef* columns;
};
struct __declspec(align(4)) StructuredDataEnumEntry
{
const char* string;
unsigned __int16 index;
};
struct StructuredDataEnum
{
int entryCount;
int reservedEntryCount;
StructuredDataEnumEntry* entries;
};
enum StructuredDataTypeCategory
{
DATA_INT = 0x0,
DATA_BYTE = 0x1,
DATA_BOOL = 0x2,
DATA_STRING = 0x3,
DATA_ENUM = 0x4,
DATA_STRUCT = 0x5,
DATA_INDEXED_ARRAY = 0x6,
DATA_ENUM_ARRAY = 0x7,
DATA_FLOAT = 0x8,
DATA_SHORT = 0x9,
DATA_COUNT = 0xA,
};
union StructuredDataTypeUnion
{
unsigned int stringDataLength;
int enumIndex;
int structIndex;
int indexedArrayIndex;
int enumedArrayIndex;
};
struct StructuredDataType
{
StructuredDataTypeCategory type;
StructuredDataTypeUnion u;
};
struct StructuredDataStructProperty
{
const char* name;
StructuredDataType type;
unsigned int offset;
};
struct StructuredDataStruct
{
int propertyCount;
StructuredDataStructProperty* properties;
int size;
unsigned int bitOffset;
};
struct StructuredDataIndexedArray
{
int arraySize;
StructuredDataType elementType;
unsigned int elementSize;
};
struct StructuredDataEnumedArray
{
int enumIndex;
StructuredDataType elementType;
unsigned int elementSize;
};
struct StructuredDataDef
{
int version;
unsigned int formatChecksum;
int enumCount;
StructuredDataEnum* enums;
int structCount;
StructuredDataStruct* structs;
int indexedArrayCount;
StructuredDataIndexedArray* indexedArrays;
int enumedArrayCount;
StructuredDataEnumedArray* enumedArrays;
StructuredDataType rootType;
unsigned int size;
};
struct StructuredDataDefSet
{
const char* name;
unsigned int defCount;
StructuredDataDef* defs;
};
struct StructuredDataBuffer
{
char* data;
unsigned int size;
};
enum VehicleType
{
VEH_WHEELS_4 = 0x0,
VEH_TANK = 0x1,
VEH_PLANE = 0x2,
VEH_BOAT = 0x3,
VEH_ARTILLERY = 0x4,
VEH_HELICOPTER = 0x5,
VEH_SNOWMOBILE = 0x6,
VEH_TYPE_COUNT = 0x7,
};
enum VehicleAxleType
{
VEH_AXLE_FRONT = 0x0,
VEH_AXLE_REAR = 0x1,
VEH_AXLE_ALL = 0x2,
VEH_AXLE_COUNT = 0x3,
};
struct VehiclePhysDef
{
int physicsEnabled;
const char* physPresetName;
PhysPreset* physPreset;
const char* accelGraphName;
VehicleAxleType steeringAxle;
VehicleAxleType powerAxle;
VehicleAxleType brakingAxle;
float topSpeed;
float reverseSpeed;
float maxVelocity;
float maxPitch;
float maxRoll;
float suspensionTravelFront;
float suspensionTravelRear;
float suspensionStrengthFront;
float suspensionDampingFront;
float suspensionStrengthRear;
float suspensionDampingRear;
float frictionBraking;
float frictionCoasting;
float frictionTopSpeed;
float frictionSide;
float frictionSideRear;
float velocityDependentSlip;
float rollStability;
float rollResistance;
float pitchResistance;
float yawResistance;
float uprightStrengthPitch;
float uprightStrengthRoll;
float targetAirPitch;
float airYawTorque;
float airPitchTorque;
float minimumMomentumForCollision;
float collisionLaunchForceScale;
float wreckedMassScale;
float wreckedBodyFriction;
float minimumJoltForNotify;
float slipThresholdFront;
float slipThresholdRear;
float slipFricScaleFront;
float slipFricScaleRear;
float slipFricRateFront;
float slipFricRateRear;
float slipYawTorque;
};
struct VehicleDef
{
const char* name;
VehicleType type;
const char* useHintString;
int health;
int quadBarrel;
float texScrollScale;
float topSpeed;
float accel;
float rotRate;
float rotAccel;
float maxBodyPitch;
float maxBodyRoll;
float fakeBodyAccelPitch;
float fakeBodyAccelRoll;
float fakeBodyVelPitch;
float fakeBodyVelRoll;
float fakeBodySideVelPitch;
float fakeBodyPitchStrength;
float fakeBodyRollStrength;
float fakeBodyPitchDampening;
float fakeBodyRollDampening;
float fakeBodyBoatRockingAmplitude;
float fakeBodyBoatRockingPeriod;
float fakeBodyBoatRockingRotationPeriod;
float fakeBodyBoatRockingFadeoutSpeed;
float boatBouncingMinForce;
float boatBouncingMaxForce;
float boatBouncingRate;
float boatBouncingFadeinSpeed;
float boatBouncingFadeoutSteeringAngle;
float collisionDamage;
float collisionSpeed;
float killcamOffset[3];
int playerProtected;
int bulletDamage;
int armorPiercingDamage;
int grenadeDamage;
int projectileDamage;
int projectileSplashDamage;
int heavyExplosiveDamage;
VehiclePhysDef vehPhysDef;
float boostDuration;
float boostRechargeTime;
float boostAcceleration;
float suspensionTravel;
float maxSteeringAngle;
float steeringLerp;
float minSteeringScale;
float minSteeringSpeed;
int camLookEnabled;
float camLerp;
float camPitchInfluence;
float camRollInfluence;
float camFovIncrease;
float camFovOffset;
float camFovSpeed;
const char* turretWeaponName;
WeaponCompleteDef* turretWeapon;
float turretHorizSpanLeft;
float turretHorizSpanRight;
float turretVertSpanUp;
float turretVertSpanDown;
float turretRotRate;
snd_alias_list_t* turretSpinSnd;
snd_alias_list_t* turretStopSnd;
int trophyEnabled;
float trophyRadius;
float trophyInactiveRadius;
int trophyAmmoCount;
float trophyReloadTime;
unsigned __int16 trophyTags[4];
Material* compassFriendlyIcon;
Material* compassEnemyIcon;
int compassIconWidth;
int compassIconHeight;
snd_alias_list_t* idleLowSnd;
snd_alias_list_t* idleHighSnd;
snd_alias_list_t* engineLowSnd;
snd_alias_list_t* engineHighSnd;
float engineSndSpeed;
snd_alias_list_t* engineStartUpSnd;
int engineStartUpLength;
snd_alias_list_t* engineShutdownSnd;
snd_alias_list_t* engineIdleSnd;
snd_alias_list_t* engineSustainSnd;
snd_alias_list_t* engineRampUpSnd;
int engineRampUpLength;
snd_alias_list_t* engineRampDownSnd;
int engineRampDownLength;
snd_alias_list_t* suspensionSoftSnd;
float suspensionSoftCompression;
snd_alias_list_t* suspensionHardSnd;
float suspensionHardCompression;
snd_alias_list_t* collisionSnd;
float collisionBlendSpeed;
snd_alias_list_t* speedSnd;
float speedSndBlendSpeed;
const char* surfaceSndPrefix;
snd_alias_list_t* surfaceSnds[31];
float surfaceSndBlendSpeed;
float slideVolume;
float slideBlendSpeed;
float inAirPitch;
};
struct AddonMapEnts
{
const char* name;
char* entityString;
int numEntityChars;
MapTriggers trigger;
};
union XAssetHeader
{
void* data;
PhysPreset* physPreset;
PhysCollmap* physCollmap;
XAnimParts* parts;
XModelSurfs* modelSurfs;
XModel* model;
Material* material;
MaterialPixelShader* pixelShader;
MaterialVertexShader* vertexShader;
MaterialVertexDeclaration* vertexDecl;
MaterialTechniqueSet* techniqueSet;
GfxImage* image;
snd_alias_list_t* sound;
SndCurve* sndCurve;
LoadedSound* loadSnd;
clipMap_t* clipMap;
ComWorld* comWorld;
GameWorldSp* gameWorldSp;
GameWorldMp* gameWorldMp;
MapEnts* mapEnts;
FxWorld* fxWorld;
GfxWorld* gfxWorld;
GfxLightDef* lightDef;
Font_s* font;
MenuList* menuList;
menuDef_t* menu;
LocalizeEntry* localize;
WeaponCompleteDef* weapon;
SndDriverGlobals* sndDriverGlobals;
FxEffectDef* fx;
FxImpactTable* impactFx;
RawFile* rawfile;
StringTable* stringTable;
LeaderboardDef* leaderboardDef;
StructuredDataDefSet* structuredDataDefSet;
TracerDef* tracerDef;
VehicleDef* vehDef;
AddonMapEnts* addonMapEnts;
};
struct weaponParms
{
float forward[3];
float right[3];
float up[3];
float muzzleTrace[3];
float gunForward[3];
unsigned int weaponIndex;
const WeaponDef* weapDef;
const WeaponCompleteDef* weapCompleteDef;
};
struct XAsset
{
XAssetType type;
XAssetHeader header;
};
struct XBlock
{
char* data;
unsigned int size;
};
struct XAssetEntry
{
XAsset asset;
char zoneIndex;
volatile char inuseMask;
bool printedMissingAsset;
unsigned __int16 nextHash;
unsigned __int16 nextOverride;
};
enum XFileLanguage : unsigned char
{
XLANG_NONE = 0x00,
XLANG_ENGLISH = 0x01,
XLANG_FRENCH = 0x02,
XLANG_GERMAN = 0x03,
XLANG_ITALIAN = 0x04,
XLANG_SPANISH = 0x05,
XLANG_BRITISH = 0x06,
XLANG_RUSSIAN = 0x07,
XLANG_POLISH = 0x08,
XLANG_KOREAN = 0x09,
XLANG_TAIWANESE = 0x0A,
XLANG_JAPANESE = 0x0B,
XLANG_CHINESE = 0x0C,
XLANG_THAI = 0x0D,
XLANG_LEET = 0x0E, // Wat?
XLANG_CZECH = 0x0F,
};
#pragma pack(push, 1)
struct XFileHeader
{
unsigned __int64 magic;
unsigned int version;
XFileLanguage language;
DWORD highDateTime;
DWORD lowDateTime;
};
#pragma pack(pop)
enum XFILE_BLOCK_TYPES
{
XFILE_BLOCK_TEMP = 0x0,
XFILE_BLOCK_PHYSICAL = 0x1,
XFILE_BLOCK_RUNTIME = 0x2,
XFILE_BLOCK_VIRTUAL = 0x3,
XFILE_BLOCK_LARGE = 0x4,
// Those are probably incorrect
XFILE_BLOCK_CALLBACK,
XFILE_BLOCK_VERTEX,
XFILE_BLOCK_INDEX,
MAX_XFILE_COUNT,
XFILE_BLOCK_INVALID = -1
};
struct XFile
{
unsigned int size;
unsigned int externalSize;
unsigned int blockSize[MAX_XFILE_COUNT];
};
struct ScriptStringList
{
int count;
const char** strings;
};
struct XAssetList
{
ScriptStringList stringList;
int assetCount;
XAsset* assets;
};
struct ZoneHeader
{
XFile xFile;
XAssetList assetList;
};
struct XZoneMemory
{
XBlock blocks[MAX_XFILE_COUNT];
char* lockedVertexData;
char* lockedIndexData;
void* vertexBuffer;
void* indexBuffer;
};
struct XZone
{
int unk;
char name[64];
int flags;
int allocType;
XZoneMemory mem;
int fileSize;
char modZone;
};
struct XNKID
{
char ab[8];
};
struct XNADDR
{
in_addr ina;
in_addr inaOnline;
unsigned __int16 wPortOnline;
char abEnet[6];
char abOnline[20];
};
struct XNKEY
{
char ab[16];
};
struct _XSESSION_INFO
{
XNKID sessionID;
XNADDR hostAddress;
XNKEY keyExchangeKey;
};
struct GfxSunShadowMapMetrics
{
unsigned int pixelsPerTile;
unsigned int tilesPerTexture;
unsigned int usefulSize;
unsigned int minCoord;
float nearClip;
float farClip;
};
struct GfxSunShadowProjectionSetup
{
float sunAxis[3][3];
float nearShadowMinDist;
float frustumRayDistToEdgeOfNearMap;
float shadowOrg[2];
float shadowOrgPixelCenter[2];
float snappedShadowOrg[2][2];
float sampleSize[2];
};
struct mapArena_t
{
char uiName[32];
char mapName[16];
char description[32];
char mapimage[32];
char keys[32][16];
char values[32][64];
char pad[144];
};
struct newMapArena_t
{
char uiName[32];
char oldMapName[16];
char description[32];
char mapimage[32];
char keys[32][16];
char values[32][64];
char other[144];
char mapName[32];
};
struct gameTypeName_t
{
char gameType[12];
char uiName[32];
};
enum fsMode_t
{
FS_READ = 0x0,
FS_WRITE = 0x1,
FS_APPEND = 0x2,
FS_APPEND_SYNC = 0x3,
};
struct fileInIwd_s
{
unsigned int pos;
char* name;
fileInIwd_s* next;
};
struct iwd_t
{
char iwdFilename[MAX_OSPATH];
char iwdBasename[MAX_OSPATH];
char iwdGamename[MAX_OSPATH];
char* handle;
int checksum;
int pure_checksum;
volatile int hasOpenFile;
int numfiles;
char referenced;
unsigned int hashSize;
fileInIwd_s** hashTable;
fileInIwd_s* buildBuffer;
};
#ifdef IDA
typedef void _iobuf;
#endif
union qfile_gus
{
_iobuf* o;
char* z;
};
struct qfile_us
{
qfile_gus file;
int iwdIsClone;
};
struct fileHandleData_t
{
qfile_us handleFiles;
int handleSync;
int fileSize;
int zipFilePos;
iwd_t* zipFile;
int streamed;
char name[256];
};
struct directory_t
{
char path[MAX_OSPATH];
char gamedir[MAX_OSPATH];
};
struct searchpath_s
{
searchpath_s* next;
iwd_t* iwd;
directory_t* dir;
int bLocalized;
int ignore;
int ignorePureCheck;
int language;
};
struct SafeArea
{
int fontHeight;
int textHeight;
int textWidth;
float left;
float top;
float right;
float bottom;
};
#pragma pack(push, 4)
struct SpawnVar
{
bool spawnVarsValid;
int numSpawnVars;
char* spawnVars[64][2];
int numSpawnVarChars;
char spawnVarChars[2048];
};
#pragma pack(pop)
typedef char mapname_t[40];
struct TraceExtents
{
float midPoint[3];
float halfDelta[3];
float halfDeltaAbs[3];
float invDeltaAbs[3];
float start[3];
float end[3];
};
struct TraceCheckCount
{
int global;
int* partitions;
};
struct TraceThreadInfo
{
TraceCheckCount checkcount;
};
struct CM_WorldTraceCallbacks
{
bool(*isGlassSolid)(unsigned int);
};
struct traceWork_t
{
TraceExtents extents;
float delta[3];
float deltaLen;
float deltaLenSq;
float delta2DLen;
float delta2DLenSq;
float size[3];
Bounds bounds;
int contents;
bool isPoint;
bool axialCullOnly;
float radius;
float offset[3];
float radiusOffset[3];
float boundingRadius;
TraceThreadInfo threadInfo;
CM_WorldTraceCallbacks* callbacks;
};
struct gameState_t
{
int stringOffsets[4139];
char stringData[131072];
int dataCount;
};
struct PrecacheEntry
{
unsigned __int16 filename;
bool include;
unsigned int sourcePos;
};
struct XAnimParent
{
unsigned short flags;
unsigned short children;
};
struct XAnimEntry
{
unsigned short numAnims;
unsigned short parent;
union
{
XAnimParts* parts;
XAnimParent animParent;
} ___u2;
};
struct XAnim_s
{
unsigned int size;
const char* debugName;
const char** debugAnimNames;
XAnimEntry entries[1];
};
struct HunkUser
{
HunkUser* current;
HunkUser* next;
int maxSize;
int end;
int pos;
const char* name;
bool fixed;
int type;
char buf[1];
};
static_assert(sizeof(HunkUser) == 36);
struct VariableStackBuffer
{
const char* pos;
unsigned __int16 size;
unsigned __int16 bufLen;
unsigned __int16 localId;
char time;
char buf[1];
};
enum
{
VAR_UNDEFINED = 0x0,
VAR_BEGIN_REF = 0x1,
VAR_POINTER = 0x1,
VAR_STRING = 0x2,
VAR_ISTRING = 0x3,
VAR_VECTOR = 0x4,
VAR_END_REF = 0x5,
VAR_FLOAT = 0x5,
VAR_INTEGER = 0x6,
VAR_CODEPOS = 0x7,
VAR_PRECODEPOS = 0x8,
VAR_FUNCTION = 0x9,
VAR_BUILTIN_FUNCTION = 0xA,
VAR_BUILTIN_METHOD = 0xB,
VAR_STACK = 0xC,
VAR_ANIMATION = 0xD,
VAR_DEVELOPER_CODEPOS = 0xE,
VAR_PRE_ANIMATION = 0xF,
VAR_THREAD = 0x10,
VAR_NOTIFY_THREAD = 0x11,
VAR_TIME_THREAD = 0x12,
VAR_CHILD_THREAD = 0x13,
VAR_OBJECT = 0x14,
VAR_DEAD_ENTITY = 0x15,
VAR_ENTITY = 0x16,
VAR_ARRAY = 0x17,
VAR_DEAD_THREAD = 0x18,
VAR_COUNT = 0x19,
VAR_THREAD_LIST = 0x1A,
VAR_ENDON_LIST = 0x1B,
};
enum
{
FIRST_OBJECT = 0x10,
FIRST_CLEARABLE_OBJECT = 0x14,
LAST_NONENTITY_OBJECT = 0x14,
FIRST_ENTITY_OBJECT = 0x16,
FIRST_NONFIELD_OBJECT = 0x17,
FIRST_DEAD_OBJECT = 0x18,
};
union VariableUnion
{
int intValue;
unsigned int uintValue;
float floatValue;
unsigned int stringValue;
const float* vectorValue;
const char* codePosValue;
unsigned int pointerValue;
VariableStackBuffer* stackValue;
unsigned int entityOffset;
};
struct VariableValue
{
VariableUnion u;
int type;
};
struct function_stack_t
{
const char* pos;
unsigned int localId;
unsigned int localVarCount;
VariableValue* top;
VariableValue* startTop;
};
struct function_frame_t
{
function_stack_t fs;
int topType;
};
struct scrVmPub_t
{
unsigned int* localVars;
VariableValue* maxStack;
int function_count;
function_frame_t* function_frame;
VariableValue* top;
bool debugCode;
bool abort_on_error;
bool terminal_error;
unsigned int inparamcount;
unsigned int outparamcount;
function_frame_t function_frame_start[32];
VariableValue stack[2048];
};
struct scrVarPub_t
{
const char* fieldBuffer;
unsigned __int16 canonicalStrCount;
bool developer_script;
bool evaluate;
const char* error_message;
int error_index;
int time;
int timeArrayId;
int pauseArrayId;
int notifyArrayId;
int objectStackId;
int levelId;
int gameId;
int animId;
int freeEntList;
int tempVariable;
int numScriptValues[2];
bool bInited;
unsigned __int16 savecount;
unsigned __int16 savecountMark;
int checksum;
int entId;
int entFieldName;
HunkUser* programHunkUser;
const char* programBuffer;
const char* endScriptBuffer;
unsigned __int16 saveIdMap[36864];
unsigned __int16 saveIdMapRev[36864];
};
static_assert(sizeof(scrVarPub_t) == 0x24060);
struct scrCompilePub_t
{
int value_count;
int far_function_count;
unsigned int loadedscripts;
unsigned int scriptsPos;
unsigned int scriptsCount;
unsigned int scriptsDefine;
unsigned int builtinFunc;
unsigned int builtinMeth;
unsigned __int16 canonicalStrings[65536];
const char* in_ptr;
bool in_ptr_valid;
const char* parseBuf;
bool script_loading;
bool allowedBreakpoint;
int developer_statement;
char* opcodePos;
unsigned int programLen;
int func_table_size;
int func_table[1024];
};
enum
{
SOURCE_TYPE_BREAKPOINT = 0x1,
SOURCE_TYPE_CALL = 0x2,
SOURCE_TYPE_CALL_POINTER = 0x4,
SOURCE_TYPE_THREAD_START = 0x8,
SOURCE_TYPE_BUILTIN_CALL = 0x10,
SOURCE_TYPE_NOTIFY = 0x20,
SOURCE_TYPE_GETFUNCTION = 0x40,
SOURCE_TYPE_WAIT = 0x80,
};
struct OpcodeLookup
{
const char* codePos;
unsigned int sourcePosIndex;
unsigned __int16 sourcePosCount;
int profileTime;
int profileBuiltInTime;
int profileUsage;
};
static_assert(sizeof(OpcodeLookup) == 24);
struct SourceLookup
{
unsigned int sourcePos;
int type;
};
struct SaveSourceBufferInfo
{
char* buf;
char* sourceBuf;
int len;
};
struct scrParserGlob_t
{
OpcodeLookup* opcodeLookup;
unsigned int opcodeLookupMaxSize;
unsigned int opcodeLookupLen;
SourceLookup* sourcePosLookup;
unsigned int sourcePosLookupMaxSize;
unsigned int sourcePosLookupLen;
unsigned int sourceBufferLookupMaxSize;
const char* currentCodePos;
unsigned int currentSourcePosCount;
SaveSourceBufferInfo* saveSourceBufferLookup;
unsigned int saveSourceBufferLookupLen;
int delayedSourceIndex;
int threadStartSourceIndex;
};
struct SourceBufferInfo
{
const char* codePos;
char* buf;
const char* sourceBuf;
int len;
int sortedIndex;
bool archive;
int time;
int avgTime;
int maxTime;
float totalTime;
float totalBuiltIn;
};
struct scrParserPub_t
{
SourceBufferInfo* sourceBufferLookup;
unsigned int sourceBufferLookupLen;
const char* scriptfilename;
const char* sourceBuf;
};
struct scr_animtree_t
{
XAnim_s* anims;
};
struct scrAnimPub_t
{
unsigned int animtrees;
unsigned int animtree_node;
unsigned int animTreeNames;
scr_animtree_t xanim_lookup[2][128];
unsigned int xanim_num[2];
unsigned int animTreeIndex;
bool animtree_loading;
};
struct scr_localVar_t
{
unsigned int name;
unsigned int sourcePos;
};
struct scr_block_t
{
int abortLevel;
int localVarsCreateCount;
int localVarsPublicCount;
int localVarsCount;
char localVarsInitBits[8];
scr_localVar_t localVars[64];
};
union sval_u
{
int type;
unsigned int stringValue;
unsigned int idValue;
float floatValue;
int intValue;
sval_u* node;
unsigned int sourcePosValue;
const char* codePosValue;
const char* debugString;
scr_block_t* block;
};
static_assert(sizeof(sval_u) == 0x4);
struct stype_t
{
sval_u val;
unsigned int pos;
};
static_assert(sizeof(stype_t) == 0x8);
struct scr_const_t
{
scr_string_t _;
scr_string_t active;
scr_string_t aim_bone;
scr_string_t aim_highest_bone;
scr_string_t aim_vis_bone;
scr_string_t all;
scr_string_t allies;
scr_string_t angles;
scr_string_t auto_ai;
scr_string_t auto_nonai;
scr_string_t axis;
scr_string_t back;
scr_string_t bad_guys;
scr_string_t bad_path;
scr_string_t begin_firing;
scr_string_t begin_firing_left;
scr_string_t cancel_location;
scr_string_t chest;
scr_string_t confirm_location;
scr_string_t crouch;
scr_string_t current;
scr_string_t damage;
scr_string_t dead;
scr_string_t death;
scr_string_t deathshield;
scr_string_t detonate;
scr_string_t direct;
scr_string_t dlight;
scr_string_t done;
scr_string_t empty;
scr_string_t empty_offhand;
scr_string_t offhand_end;
scr_string_t end_firing;
scr_string_t end_firing_left;
scr_string_t entity;
scr_string_t explode;
scr_string_t failed;
scr_string_t first_person;
scr_string_t forward;
scr_string_t fraction;
scr_string_t free;
scr_string_t goal;
scr_string_t goal_changed;
scr_string_t goal_yaw;
scr_string_t grenade;
scr_string_t grenadedanger;
scr_string_t grenade_fire;
scr_string_t glass_destroyed;
scr_string_t missile_fire;
scr_string_t grenade_pullback;
scr_string_t missile_stuck;
scr_string_t info_notnull;
scr_string_t invisible;
scr_string_t key1;
scr_string_t key2;
scr_string_t killanimscript;
scr_string_t left;
scr_string_t light;
scr_string_t manual;
scr_string_t manual_ai;
scr_string_t movedone;
scr_string_t none;
scr_string_t normal;
scr_string_t origin;
scr_string_t other;
scr_string_t player;
scr_string_t physics_finished;
scr_string_t position;
scr_string_t projectile_impact;
scr_string_t prone;
scr_string_t right;
scr_string_t reload;
scr_string_t reload_start;
scr_string_t result;
scr_string_t reverse;
scr_string_t rocket;
scr_string_t rotatedone;
scr_string_t script_brushmodel;
scr_string_t script_model;
scr_string_t script_origin;
scr_string_t sentry;
scr_string_t sentry_offline;
scr_string_t snd_enveffectsprio_level;
scr_string_t snd_enveffectsprio_shellshock;
scr_string_t snd_channelvolprio_holdbreath;
scr_string_t snd_channelvolprio_pain;
scr_string_t snd_channelvolprio_shellshock;
scr_string_t spawned;
scr_string_t stand;
scr_string_t suppression;
scr_string_t suppression_end;
scr_string_t surfacetype;
scr_string_t tag_aim;
scr_string_t tag_aim_animated;
scr_string_t tag_aim_pivot;
scr_string_t tag_brass;
scr_string_t tag_butt;
scr_string_t tag_clip;
scr_string_t tag_eye;
scr_string_t tag_flash;
scr_string_t tag_flash_silenced;
scr_string_t tag_flash_11;
scr_string_t tag_flash_2;
scr_string_t tag_flash_22;
scr_string_t tag_flash_3;
scr_string_t tag_fx;
scr_string_t tag_inhand;
scr_string_t tag_knife_fx;
scr_string_t tag_laser;
scr_string_t tag_origin;
scr_string_t tag_weapon;
scr_string_t tag_player;
scr_string_t tag_camera;
scr_string_t tag_weapon_left;
scr_string_t tag_weapon_right;
scr_string_t tag_weapon_chest;
scr_string_t tag_stowed_back;
scr_string_t tag_gasmask;
scr_string_t tag_gasmask2;
scr_string_t tag_sync;
scr_string_t tag_motion_tracker_tl;
scr_string_t tag_motion_tracker_bl;
scr_string_t tag_motion_tracker_br;
scr_string_t tag_motion_tracker_fx;
scr_string_t tag_reticle_acog;
scr_string_t tag_reticle_red_dot;
scr_string_t tag_reticle_tavor_scope;
scr_string_t tag_reticle_thermal_scope;
scr_string_t tag_eotech_reticle;
scr_string_t target_script_trigger;
scr_string_t third_person;
scr_string_t top;
scr_string_t touch;
scr_string_t trigger;
scr_string_t trigger_use;
scr_string_t trigger_use_touch;
scr_string_t trigger_damage;
scr_string_t truck_cam;
scr_string_t weapon_change;
scr_string_t weapon_fired;
scr_string_t weapon_switch_started;
scr_string_t weapon_taken;
scr_string_t weapon_dropped;
scr_string_t worldspawn;
scr_string_t flashbang;
scr_string_t flash;
scr_string_t smoke;
scr_string_t frag;
scr_string_t throwingknife;
scr_string_t night_vision_on;
scr_string_t night_vision_off;
scr_string_t mod_unknown;
scr_string_t mod_pistol_bullet;
scr_string_t mod_rifle_bullet;
scr_string_t mod_explosive_bullet;
scr_string_t mod_grenade;
scr_string_t mod_grenade_splash;
scr_string_t mod_projectile;
scr_string_t mod_projectile_splash;
scr_string_t mod_melee;
scr_string_t mod_head_shot;
scr_string_t mod_crush;
scr_string_t mod_falling;
scr_string_t mod_suicide;
scr_string_t mod_trigger_hurt;
scr_string_t mod_explosive;
scr_string_t mod_impact;
scr_string_t script_vehicle;
scr_string_t script_vehicle_collision;
scr_string_t script_vehicle_collmap;
scr_string_t script_vehicle_corpse;
scr_string_t turret_deactivate;
scr_string_t turret_fire;
scr_string_t turret_no_vis;
scr_string_t turret_not_on_target;
scr_string_t turret_on_target;
scr_string_t turret_on_vistarget;
scr_string_t turret_pitch_clamped;
scr_string_t turret_rotate_stopped;
scr_string_t turret_yaw_clamped;
scr_string_t turretstatechange;
scr_string_t turretownerchange;
scr_string_t reached_end_node;
scr_string_t reached_wait_node;
scr_string_t reached_wait_speed;
scr_string_t near_goal;
scr_string_t tag_wheel_front_left;
scr_string_t tag_wheel_front_right;
scr_string_t tag_wheel_back_left;
scr_string_t tag_wheel_back_right;
scr_string_t tag_wheel_middle_left;
scr_string_t tag_wheel_middle_right;
scr_string_t tag_detach;
scr_string_t tag_popout;
scr_string_t tag_body;
scr_string_t tag_turret;
scr_string_t tag_turret_base;
scr_string_t tag_barrel;
scr_string_t front_left;
scr_string_t front_right;
scr_string_t back_left;
scr_string_t back_right;
scr_string_t middle_left;
scr_string_t middle_right;
scr_string_t veh_boatbounce;
scr_string_t veh_collision;
scr_string_t veh_predictedcollision;
scr_string_t veh_leftground;
scr_string_t veh_landed;
scr_string_t veh_jolt;
scr_string_t vehicle_mount;
scr_string_t vehicle_dismount;
scr_string_t constrained;
scr_string_t follow;
scr_string_t j_head;
scr_string_t j_neck;
scr_string_t thermal;
scr_string_t primary;
scr_string_t offhand;
scr_string_t item;
scr_string_t altmode;
scr_string_t exclusive;
scr_string_t scavenger;
scr_string_t primaryoffhand;
scr_string_t secondaryoffhand;
scr_string_t actionslot1;
scr_string_t actionslot2;
scr_string_t actionslot3;
scr_string_t actionslot4;
scr_string_t back_low;
scr_string_t back_mid;
scr_string_t back_up;
scr_string_t pelvis;
scr_string_t auto_change;
scr_string_t begin;
scr_string_t call_vote;
scr_string_t freelook;
scr_string_t intermission;
scr_string_t j_mainroot;
scr_string_t manual_change;
scr_string_t menuresponse;
scr_string_t pistol;
scr_string_t plane_waypoint;
scr_string_t playing;
scr_string_t spectator;
scr_string_t spectating_cycle;
scr_string_t vote;
scr_string_t sprint_begin;
scr_string_t sprint_end;
scr_string_t normal_radar;
scr_string_t fast_radar;
scr_string_t tag_engine_left;
scr_string_t tag_engine_right;
scr_string_t slowmo_active;
scr_string_t slowmo_passive;
};
static_assert(sizeof(scr_const_t) == 0x1FE);
enum UILocalVarType
{
UILOCALVAR_INT = 0x0,
UILOCALVAR_FLOAT = 0x1,
UILOCALVAR_STRING = 0x2,
};
struct UILocalVar
{
UILocalVarType type;
const char* name;
union
{
int integer;
float value;
const char* string;
} u;
};
struct UILocalVarContext
{
UILocalVar table[256];
};
struct UiContext
{
int localClientNum;
float bias;
int realTime;
int frameTime;
struct
{
float x;
float y;
int lastMoveTime;
} cursor;
int isCursorVisible;
int paintFull;
int screenWidth;
int screenHeight;
float screenAspect;
float FPS;
float blurRadiusOut;
menuDef_t* Menus[640];
int menuCount;
menuDef_t* menuStack[16];
int openMenuCount;
UILocalVarContext localVars;
};
struct msg_t
{
int overflowed;
int readOnly;
unsigned char* data;
unsigned char* splitData;
int maxsize;
int cursize;
int splitSize;
int readcount;
int bit;
int lastEntityRef;
};
struct XZoneInfo
{
const char* name;
int allocFlags;
int freeFlags;
};
enum FsListBehavior_e
{
FS_LIST_PURE_ONLY = 0x0,
FS_LIST_ALL = 0x1,
};
enum svc_ops_e
{
svc_nop = 0x0,
svc_gamestate = 0x1,
svc_configstring = 0x2,
svc_serverCommand = 0x3,
svc_matchdata = 0x4,
svc_snapshot = 0x5,
svc_EOF = 0x6,
};
enum netsrc_t
{
NS_CLIENT1 = 0x0,
NS_SERVER = 0x1,
NS_MAXCLIENTS = 0x1,
NS_PACKET = 0x2,
};
enum netadrtype_t
{
NA_BOT = 0x0,
NA_BAD = 0x1,
NA_LOOPBACK = 0x2,
NA_BROADCAST = 0x3,
NA_IP = 0x4,
NA_IPX = 0x5,
NA_BROADCAST_IPX = 0x6,
};
typedef union
{
unsigned char bytes[4];
std::uint32_t full;
} netIP_t;
struct netadr_t
{
netadrtype_t type;
netIP_t ip;
unsigned __int16 port;
char ipx[10];
};
static_assert(sizeof(netadr_t) == 20);
struct netProfileInfo_t
{
char __pad0[0x5E0];
};
static_assert(sizeof(netProfileInfo_t) == 0x5E0);
struct netchan_t
{
int outgoingSequence;
netsrc_t sock;
int dropped;
int incomingSequence;
netadr_t remoteAddress;
int qport;
int fragmentSequence;
int fragmentLength;
char* fragmentBuffer;
int fragmentBufferSize;
int unsentFragments;
int unsentFragmentStart;
int unsentLength;
char* unsentBuffer;
int unsentBufferSize;
netProfileInfo_t prof;
};
static_assert(sizeof(netchan_t) == 0x62C);
struct FxEditorElemAtlas
{
int behavior;
int index;
int fps;
int loopCount;
int colIndexBits;
int rowIndexBits;
int entryCount;
};
struct FxCurve
{
int dimensionCount;
int keyCount;
float keys[1];
};
struct FxEditorTrailDef
{
FxTrailVertex verts[64];
int vertCount;
unsigned __int16 inds[128];
int indCount;
};
struct FxEditorElemDef
{
char name[48];
int editorFlags;
int flags;
FxFloatRange spawnRange;
FxFloatRange fadeInRange;
FxFloatRange fadeOutRange;
float spawnFrustumCullRadius;
FxSpawnDefLooping spawnLooping;
FxSpawnDefOneShot spawnOneShot;
FxIntRange spawnDelayMsec;
FxIntRange lifeSpanMsec;
FxFloatRange spawnOrigin[3];
FxFloatRange spawnOffsetRadius;
FxFloatRange spawnOffsetHeight;
FxFloatRange spawnAngles[3];
FxFloatRange angularVelocity[3];
FxFloatRange initialRotation;
FxFloatRange gravity;
FxFloatRange elasticity;
FxEditorElemAtlas atlas;
float velScale[2][3];
FxCurve* velShape[2][3][2];
float rotationScale;
FxCurve* rotationShape[2];
float sizeScale[2];
FxCurve* sizeShape[2][2];
float scaleScale;
FxCurve* scaleShape[2];
FxCurve* color[2];
FxCurve* alpha[2];
float lightingFrac;
float decalFadeInTime;
float collOffset[3];
float collRadius;
FxEffectDef* effectOnImpact;
FxEffectDef* effectOnDeath;
int sortOrder;
FxEffectDef* emission;
FxFloatRange emitDist;
FxFloatRange emitDistVariance;
char elemType;
int visualCount;
union
{
FxElemVisuals visuals[32];
FxElemMarkVisuals markVisuals[16];
} ___u42;
int trailSplitDist;
int trailSplitArcDist;
int trailSplitTime;
int trailRepeatDist;
float trailScrollTime;
FxEditorTrailDef trailDef;
float sparkFountainGravity;
float sparkFountainBounceFrac;
float sparkFountainBounceRand;
float sparkFountainSparkSpacing;
float sparkFountainSparkLength;
int sparkFountainSparkCount;
float sparkFountainLoopTime;
float sparkFountainVelMin;
float sparkFountainVelMax;
float sparkFountainVelConeAngle;
float sparkFountainRestSpeed;
float sparkFountainBoostTime;
float sparkFountainBoostFactor;
};
struct FxEditorEffectDef
{
char name[MAX_QPATH];
int elemCount;
FxEditorElemDef elems[32];
};
struct FxElemField
{
const char* keyName;
bool(__cdecl* handler)(const char**, FxEditorElemDef*);
};
enum $18B36A54AD92993D0728595D3504B7CB
{
FX_ELEM_TYPE_SPRITE_BILLBOARD = 0x0,
FX_ELEM_TYPE_SPRITE_ORIENTED = 0x1,
FX_ELEM_TYPE_TAIL = 0x2,
FX_ELEM_TYPE_TRAIL = 0x3,
FX_ELEM_TYPE_CLOUD = 0x4,
FX_ELEM_TYPE_SPARK_CLOUD = 0x5,
FX_ELEM_TYPE_SPARK_FOUNTAIN = 0x6,
FX_ELEM_TYPE_MODEL = 0x7,
FX_ELEM_TYPE_OMNI_LIGHT = 0x8,
FX_ELEM_TYPE_SPOT_LIGHT = 0x9,
FX_ELEM_TYPE_SOUND = 0xA,
FX_ELEM_TYPE_DECAL = 0xB,
FX_ELEM_TYPE_RUNNER = 0xC,
FX_ELEM_TYPE_COUNT = 0xD,
FX_ELEM_TYPE_LAST_SPRITE = 0x3,
FX_ELEM_TYPE_LAST_DRAWN = 0x9,
};
struct infoParm_t
{
char* name;
int clearSolid;
int surfaceFlags;
int contents;
int toolFlags;
};
struct GfxImageFileHeader
{
char tag[3];
char version;
unsigned int flags;
char format;
char unused;
__int16 dimensions[3];
int fileSizeForPicmip[4];
};
enum $1FA877C9772E9F0892A93F52A91453E9
{
MAPTYPE_NONE = 0x0,
MAPTYPE_INVALID1 = 0x1,
MAPTYPE_1D = 0x2,
MAPTYPE_2D = 0x3,
MAPTYPE_3D = 0x4,
MAPTYPE_CUBE = 0x5,
MAPTYPE_COUNT = 0x6,
};
enum GfxImageFileFormat
{
IMG_FORMAT_INVALID = 0x0,
IMG_FORMAT_BITMAP_RGBA = 0x1,
IMG_FORMAT_BITMAP_RGB = 0x2,
IMG_FORMAT_BITMAP_LUMINANCE_ALPHA = 0x3,
IMG_FORMAT_BITMAP_LUMINANCE = 0x4,
IMG_FORMAT_BITMAP_ALPHA = 0x5,
IMG_FORMAT_WAVELET_RGBA = 0x6,
IMG_FORMAT_WAVELET_RGB = 0x7,
IMG_FORMAT_WAVELET_LUMINANCE_ALPHA = 0x8,
IMG_FORMAT_WAVELET_LUMINANCE = 0x9,
IMG_FORMAT_WAVELET_ALPHA = 0xA,
IMG_FORMAT_DXT1 = 0xB,
IMG_FORMAT_DXT3 = 0xC,
IMG_FORMAT_DXT5 = 0xD,
IMG_FORMAT_DXN = 0xE,
IMG_FORMAT_DXT3A_AS_LUMINANCE = 0xF,
IMG_FORMAT_DXT5A_AS_LUMINANCE = 0x10,
IMG_FORMAT_DXT3A_AS_ALPHA = 0x11,
IMG_FORMAT_DXT5A_AS_ALPHA = 0x12,
IMG_FORMAT_DXT1_AS_LUMINANCE_ALPHA = 0x13,
IMG_FORMAT_DXN_AS_LUMINANCE_ALPHA = 0x14,
IMG_FORMAT_DXT1_AS_LUMINANCE = 0x15,
IMG_FORMAT_DXT1_AS_ALPHA = 0x16,
IMG_FORMAT_COUNT = 0x17,
};
enum $25EF9448C800B18F0C83DB367159AFD6
{
PART_TYPE_NO_QUAT = 0x0,
PART_TYPE_HALF_QUAT = 0x1,
PART_TYPE_FULL_QUAT = 0x2,
PART_TYPE_HALF_QUAT_NO_SIZE = 0x3,
PART_TYPE_FULL_QUAT_NO_SIZE = 0x4,
PART_TYPE_SMALL_TRANS = 0x5,
PART_TYPE_TRANS = 0x6,
PART_TYPE_TRANS_NO_SIZE = 0x7,
PART_TYPE_NO_TRANS = 0x8,
PART_TYPE_ALL = 0x9,
PART_TYPE_COUNT = 0xA,
};
enum $EDD38D6A57EF43793B1F773859FC039A
{
FS_SEEK_CUR = 0x0,
FS_SEEK_END = 0x1,
FS_SEEK_SET = 0x2,
};
#pragma region CUSTOM
enum itemTextStyle
{
ITEM_TEXTSTYLE_NORMAL = 0, // normal text
ITEM_TEXTSTYLE_SHADOWED = 3, // drop shadow ( need a color for this )
ITEM_TEXTSTYLE_SHADOWEDMORE = 6, // drop shadow ( need a color for this )
ITEM_TEXTSTYLE_BORDERED = 7, // border (stroke)
ITEM_TEXTSTYLE_BORDEREDMORE = 8, // more border :P
ITEM_TEXTSTYLE_MONOSPACE = 128,
ITEM_TEXTSTYLE_MONOSPACESHADOWED = 132,
};
enum
{
DB_ZONE_CODE_LOC = 0x0,
DB_ZONE_COMMON_LOC = 0x1,
DB_ZONE_CODE = 0x2,
DB_ZONE_COMMON = 0x4,
DB_ZONE_GAME = 0x8,
DB_ZONE_MOD = 0x10,
DB_ZONE_LOAD = 0x20,
DB_ZONE_DEV = 0x40
};
enum
{
CF_BIT_NOCLIP = (1 << 0),
CF_BIT_UFO = (1 << 1),
CF_BIT_FROZEN = (1 << 2),
CF_BIT_DISABLE_USABILITY = (1 << 3),
CF_BIT_NO_KNOCKBACK = (1 << 4),
};
enum sessionState_t
{
SESS_STATE_PLAYING = 0x0,
SESS_STATE_DEAD = 0x1,
SESS_STATE_SPECTATOR = 0x2,
SESS_STATE_INTERMISSION = 0x3
};
enum clientConnected_t
{
CON_DISCONNECTED = 0x0,
CON_CONNECTING = 0x1,
CON_CONNECTED = 0x2
};
enum visionSetMode_t
{
VISIONSET_NORMAL,
VISIONSET_NIGHT,
VISIONSET_MISSILECAM,
VISIONSET_THERMAL,
VISIONSET_PAIN,
VISIONSETCOUNT
};
enum hintType_t
{
HINT_NONE = 0x0,
HINT_NOICON = 0x1,
HINT_ACTIVATE = 0x2,
HINT_HEALTH = 0x3,
HINT_FRIENDLY = 0x4,
FIRST_WEAPON_HINT = 0x5,
LAST_WEAPON_HINT = 0x57C,
HINT_NUM_HINTS = 0x57D,
};
struct playerTeamState_t
{
int location;
};
struct clientSession_t
{
sessionState_t sessionState;
int forceSpectatorClient;
int killCamEntity;
int killCamLookAtEntity;
int status_icon;
int archiveTime;
int score;
int deaths;
int kills;
int assists;
unsigned __int16 scriptPersId;
clientConnected_t connected;
usercmd_s cmd;
usercmd_s oldcmd;
int localClient;
int predictItemPickup;
char newnetname[16];
int maxHealth;
int enterTime;
playerTeamState_t teamState;
int voteCount;
int teamVoteCount;
float moveSpeedScaleMultiplier;
int viewmodelIndex;
int noSpectate;
int teamInfo;
clientState_s cs;
int psOffsetTime;
int hasRadar;
int isRadarBlocked;
int radarMode;
int weaponHudIconOverrides[6];
unsigned int unusableEntFlags[64];
float spectateDefaultPos[3];
float spectateDefaultAngles[3];
};
struct gclient_s
{
playerState_s ps;
clientSession_t sess;
int flags; // 13204
int spectatorClient;
int lastCmdTime;
int buttons;
int oldbuttons; // 13220
int latched_buttons; // 13224
int buttonsSinceLastFrame; // 13228
unsigned char __pad3[324]; // 13232
int visionDuration[5];
char visionName[5][64];
int lastStand;
int lastStandTime;
int hudElemLastAssignedSoundID;
float lockedTargetOffset[3];
unsigned __int16 attachShieldTagName;
hintType_t hintForcedType;
int hintForcedString;
};
static_assert(sizeof(gclient_s) == 0x366C);
struct EntHandle
{
unsigned __int16 number;
unsigned __int16 infoIndex;
};
struct entityShared_t
{
char isLinked;
char modelType;
char svFlags;
char isInUse;
Bounds box;
int contents;
Bounds absBox;
float currentOrigin[3];
float currentAngles[3];
EntHandle ownerNum;
int eventTime;
};
enum EntHandler
{
ENT_HANDLER_NULL = 0x0,
ENT_HANDLER_TRIGGER_MULTIPLE = 0x1,
ENT_HANDLER_TRIGGER_HURT = 0x2,
ENT_HANDLER_TRIGGER_HURT_TOUCH = 0x3,
ENT_HANDLER_TRIGGER_DAMAGE = 0x4,
ENT_HANDLER_SCRIPT_MOVER = 0x5,
ENT_HANDLER_SCRIPT_MODEL = 0x6,
ENT_HANDLER_GRENADE = 0x7,
ENT_HANDLER_TIMED_OBJECT = 0x8,
ENT_HANDLER_ROCKET = 0x9,
ENT_HANDLER_CLIENT = 0xA,
ENT_HANDLER_CLIENT_SPECTATOR = 0xB,
ENT_HANDLER_CLIENT_DEAD = 0xC,
ENT_HANDLER_PLAYER_CLONE = 0xD,
ENT_HANDLER_TURRET_INIT = 0xE,
ENT_HANDLER_TURRET = 0xF,
ENT_HANDLER_DROPPED_ITEM = 0x10,
ENT_HANDLER_ITEM_INIT = 0x11,
ENT_HANDLER_ITEM = 0x12,
ENT_HANDLER_PRIMARY_LIGHT = 0x13,
ENT_HANDLER_PLAYER_BLOCK = 0x14,
ENT_HANDLER_VEHICLE = 0x15,
ENT_HANDLER_COUNT
};
struct gentity_s
{
entityState_s s;
entityShared_t r;
gclient_s* client; // 344
void /*Turret*/* turret;
void /*Vehicle*/* vehicle;
int physObjId;
unsigned __int16 model;
unsigned char physicsObject;
unsigned char takedamage;
unsigned char active;
unsigned char handler;
unsigned char team;
bool freeAfterEvent;
__int16 padding_short;
unsigned __int16 classname;
unsigned __int16 script_classname;
unsigned __int16 script_linkName;
unsigned __int16 target;
unsigned __int16 targetname;
unsigned int attachIgnoreCollision;
int spawnflags;
int flags;
int eventTime;
int clipmask;
int processedFrame;
EntHandle parent;
int nextthink;
int health;
int maxHealth;
int damage;
int count;
EntHandle missileTargetEnt;
EntHandle remoteControlledOwner;
gentity_s* tagChildren;
unsigned __int16 attachModelNames[19];
unsigned __int16 attachTagNames[19];
int useCount;
gentity_s* nextFree;
int birthTime;
char pad[100];
};
static_assert(sizeof(gentity_s) == 0x274);
enum
{
ENTFIELD_ENTITY = 0x0,
ENTFIELD_SENTIENT = 0x2000,
ENTFIELD_ACTOR = 0x4000,
ENTFIELD_CLIENT = 0x6000,
ENTFIELD_VEHICLE = 0x8000,
ENTFIELD_MASK = 0xE000,
};
enum fieldtype_t
{
F_INT = 0x0,
F_SHORT = 0x1,
F_BYTE = 0x2,
F_FLOAT = 0x3,
F_CSTRING = 0x4,
F_STRING = 0x5,
F_VECTOR = 0x6,
F_ENTITY = 0x7,
F_ENTHANDLE = 0x8,
F_ANGLES_YAW = 0x9,
F_OBJECT = 0xA,
F_MODEL = 0xB,
};
struct ent_field_t
{
const char* name;
int ofs;
fieldtype_t type;
void(*setter)(gentity_s*, int);
void(*getter)(gentity_s*, int);
};
struct client_fields_s
{
const char* name;
int ofs;
fieldtype_t type;
void(*setter)(gclient_s*, const client_fields_s*);
void(*getter)(gclient_s*, const client_fields_s*);
};
typedef void(*ScriptCallbackEnt)(gentity_s*, int);
typedef void(*ScriptCallbackClient)(gclient_s*, const client_fields_s*);
struct lockonFireParms
{
bool lockon;
gentity_s* target;
float targetPosOrOffset[3];
bool topFire;
};
struct clientHeader_t
{
int state;
int sendAsActive;
int deltaMessage;
int rateDelayed;
int hasAckedBaselineData;
int hugeSnapshotSent;
netchan_t netchan;
float predictedOrigin[3];
int predictedOriginServerTime;
int migrationState;
};
static_assert(sizeof(clientHeader_t) == 1624);
struct svscmd_info_t
{
char cmd[1024];
int time;
int type;
};
struct clientSnapshot_t
{
playerState_s ps;
int num_entities;
int num_clients;
int first_entity;
int first_client;
int messageSent;
int messageAcked;
int messageSize;
int serverTime;
int timeDelta;
int baselineSnap;
};
struct client_s
{
clientHeader_t header;
const char* dropReason; // 1624
char userinfo[1024]; // 1628
svscmd_info_t reliableCommandInfo[128]; // 2652
int reliableSequence; // 134748
int reliableAcknowledge; // 134752
int reliableSent; // 134756
int messageAcknowledge; // 134760
int gamestateMessageNum; // 134764
int challenge; // 134768
usercmd_s lastUsercmd; // 134772
int lastClientCommand; // 134812
char lastClientCommandString[1024]; // 134816
gentity_s* gentity; // 135840
char name[16]; // 135844
int nextReliableTime; // 135860
int lastPacketTime; // 135864
int lastConnectTime; // 135868
int nextSnapshotTime; // 135872
int timeoutCount; // 135876
int ping; // 135880
int rate;
int snapshotMsec;
int snapshotBackoffCount;
int pureAuthentic; // 135896
char netchanOutgoingBuffer[131072];
char netchanIncomingBuffer[2048];
char playerGuid[17];
unsigned short scriptId; // 269038
int bIsTestClient; // 269040
int serverID; // 269044
bool usingOnlineStatsOffline;
struct
{
unsigned int checksum;
struct
{
unsigned char binary[2000];
int data[1547];
} __s0;
} stats;
char statsModifiedFlags[1024];
bool statsModified;
char statPacketsReceived;
bool steamAuthorized;
char steamAuthFailCount;
unsigned __int64 steamID; // 278272
bool sendMatchData;
int matchDataSendTime;
clientSnapshot_t frames[32];
};
static_assert(sizeof(client_s) == 0xA6790);
enum CompassType
{
COMPASS_TYPE_PARTIAL = 0x0,
COMPASS_TYPE_FULL = 0x1,
};
struct clientConnection_t
{
int qport;
int clientNum;
int lastPacketSentTime;
int lastPacketTime;
netadr_t serverAddress;
int connectTime;
int connectPacketCount;
char serverMessage[256];
int challenge;
int checksumFeed;
int reliableSequence;
int reliableAcknowledge;
char reliableCommands[128][1024];
int serverMessageSequence;
int serverCommandSequence;
int lastExecutedServerCommand;
char serverCommands[128][1024];
bool isServerRestarting;
int lastClientArchiveIndex;
char demoName[MAX_QPATH];
int demorecording;
int demoplaying;
int isTimeDemo;
int demowaiting;
int(__cdecl* demoread)(void*, int, int);
int demofile;
int timeDemoLog;
int timeDemoFrames;
int timeDemoStart;
int timeDemoPrev;
int timeDemoBaseTime;
netchan_t netchan;
char netchanOutgoingBuffer[2048];
char netchanIncomingBuffer[131072];
netProfileInfo_t OOBProf;
char statPacketsToSend;
int statPacketSendTime[7];
};
static_assert(sizeof(clientConnection_t) == 0x615E8); // Size confirmed in CL_Migrate
struct CModelAllocData
{
void* mainArray;
void* vertexBuffer;
void* indexBuffer;
};
struct CModelSectionHeader
{
int size;
int offset;
int fixupStart;
int fixupCount;
void* buffer;
};
enum CModelSection
{
SECTION_MAIN = 0,
SECTION_INDEX = 1,
SECTION_VERTEX = 2,
SECTION_FIXUP = 3,
};
struct CModelHeader
{
int version;
unsigned int signature;
CModelSectionHeader sectionHeader[4];
};
struct punctuation_s
{
char* p; //punctuation character(s)
int n; //punctuation indication
punctuation_s* next; //next punctuation
};
#define MAX_TOKEN 1024
#define MAX_TOKENLENGTH 1024
enum parseSkip_t
{
SKIP_NO = 0x0,
SKIP_YES = 0x1,
SKIP_ALL_ELIFS = 0x2,
};
struct token_s
{
char string[MAX_TOKEN]; // available token
int type; // last read token type
int subtype; // last read token sub type
unsigned long int intvalue; // integer value
long double floatvalue; // floating point value
char* whitespace_p; // start of white space before token
char* endwhitespace_p; // start of white space before token
int line; // line the token was on
int linescrossed; // lines crossed in white space
token_s* next; // next token in chain
};
struct script_s
{
char filename[64]; //file name of the script
char* buffer; //buffer containing the script
char* script_p; //current pointer in the script
char* end_p; //pointer to the end of the script
char* lastscript_p; //script pointer before reading token
char* whitespace_p; //begin of the white space
char* endwhitespace_p; //end of the white space
int length; //length of the script in bytes
int line; //current line in script
int lastline; //line before reading token
int tokenavailable; //set by UnreadLastToken
int flags; //several script flags
punctuation_s* punctuations; //the punctuations used in the script
punctuation_s** punctuationtable;
token_s token; //available token
script_s* next; //next script in a chain
};
struct define_s
{
char* name; //define name
int flags; //define flags
int builtin; // > 0 if builtin define
int numparms; //number of define parameters
token_s* parms; //define parameters
token_s* tokens; //macro tokens (possibly containing parm tokens)
define_s* next; //next defined macro in a list
define_s* hashnext; //next define in the hash chain
};
struct indent_s
{
int type; //indent type
int skip; //true if skipping current indent
script_s* script; //script the indent was in
indent_s* next; //next indent on the indent stack
};
struct source_s
{
char filename[MAX_QPATH]; //file name of the script
char includepath[MAX_QPATH]; //path to include files
punctuation_s* punctuations; //punctuations to use
script_s* scriptstack; //stack with scripts of the source
token_s* tokens; //tokens to read first
define_s* defines; //list with macro definitions
define_s** definehash; //hash chain with defines
indent_s* indentstack; //stack with indents
int skip; // > 0 if skipping conditional code
token_s token; //last read token
};
struct directive_s
{
const char* name;
int (*func)(source_s* source);
};
struct pc_token_s
{
int type;
int subtype;
int intvalue;
float floatvalue;
char string[MAX_TOKENLENGTH];
};
template <typename T, int N, int M>
struct KeywordHashEntry
{
const char* keyword;
int (*func)(T*, int);
};
enum MaterialTechniqueType
{
TECHNIQUE_DEPTH_PREPASS = 0x0,
TECHNIQUE_BUILD_FLOAT_Z = 0x1,
TECHNIQUE_BUILD_SHADOWMAP_DEPTH = 0x2,
TECHNIQUE_BUILD_SHADOWMAP_COLOR = 0x3,
TECHNIQUE_UNLIT = 0x4,
TECHNIQUE_EMISSIVE = 0x5,
TECHNIQUE_EMISSIVE_DFOG = 0x6,
TECHNIQUE_EMISSIVE_SHADOW = 0x7,
TECHNIQUE_EMISSIVE_SHADOW_DFOG = 0x8,
TECHNIQUE_LIT_BEGIN = 0x9,
TECHNIQUE_LIT = 0x9,
TECHNIQUE_LIT_DFOG = 0xA,
TECHNIQUE_LIT_SUN = 0xB,
TECHNIQUE_LIT_SUN_DFOG = 0xC,
TECHNIQUE_LIT_SUN_SHADOW = 0xD,
TECHNIQUE_LIT_SUN_SHADOW_DFOG = 0xE,
TECHNIQUE_LIT_SPOT = 0xF,
TECHNIQUE_LIT_SPOT_DFOG = 0x10,
TECHNIQUE_LIT_SPOT_SHADOW = 0x11,
TECHNIQUE_LIT_SPOT_SHADOW_DFOG = 0x12,
TECHNIQUE_LIT_OMNI = 0x13,
TECHNIQUE_LIT_OMNI_DFOG = 0x14,
TECHNIQUE_LIT_OMNI_SHADOW = 0x15,
TECHNIQUE_LIT_OMNI_SHADOW_DFOG = 0x16,
TECHNIQUE_LIT_INSTANCED = 0x17,
TECHNIQUE_LIT_INSTANCED_DFOG = 0x18,
TECHNIQUE_LIT_INSTANCED_SUN = 0x19,
TECHNIQUE_LIT_INSTANCED_SUN_DFOG = 0x1A,
TECHNIQUE_LIT_INSTANCED_SUN_SHADOW = 0x1B,
TECHNIQUE_LIT_INSTANCED_SUN_SHADOW_DFOG = 0x1C,
TECHNIQUE_LIT_INSTANCED_SPOT = 0x1D,
TECHNIQUE_LIT_INSTANCED_SPOT_DFOG = 0x1E,
TECHNIQUE_LIT_INSTANCED_SPOT_SHADOW = 0x1F,
TECHNIQUE_LIT_INSTANCED_SPOT_SHADOW_DFOG = 0x20,
TECHNIQUE_LIT_INSTANCED_OMNI = 0x21,
TECHNIQUE_LIT_INSTANCED_OMNI_DFOG = 0x22,
TECHNIQUE_LIT_INSTANCED_OMNI_SHADOW = 0x23,
TECHNIQUE_LIT_INSTANCED_OMNI_SHADOW_DFOG = 0x24,
TECHNIQUE_LIT_END = 0x25,
TECHNIQUE_LIGHT_SPOT = 0x25,
TECHNIQUE_LIGHT_OMNI = 0x26,
TECHNIQUE_LIGHT_SPOT_SHADOW = 0x27,
TECHNIQUE_FAKELIGHT_NORMAL = 0x28,
TECHNIQUE_FAKELIGHT_VIEW = 0x29,
TECHNIQUE_SUNLIGHT_PREVIEW = 0x2A,
TECHNIQUE_CASE_TEXTURE = 0x2B,
TECHNIQUE_WIREFRAME_SOLID = 0x2C,
TECHNIQUE_WIREFRAME_SHADED = 0x2D,
TECHNIQUE_DEBUG_BUMPMAP = 0x2E,
TECHNIQUE_DEBUG_BUMPMAP_INSTANCED = 0x2F,
TECHNIQUE_COUNT = 0x30,
TECHNIQUE_TOTAL_COUNT = 0x31,
TECHNIQUE_NONE = 0x32,
};
enum MaterialVertexDeclType
{
VERTDECL_GENERIC = 0x0,
VERTDECL_PACKED = 0x1,
VERTDECL_WORLD = 0x2,
VERTDECL_WORLD_T1N0 = 0x3,
VERTDECL_WORLD_T1N1 = 0x4,
VERTDECL_WORLD_T2N0 = 0x5,
VERTDECL_WORLD_T2N1 = 0x6,
VERTDECL_WORLD_T2N2 = 0x7,
VERTDECL_WORLD_T3N0 = 0x8,
VERTDECL_WORLD_T3N1 = 0x9,
VERTDECL_WORLD_T3N2 = 0xA,
VERTDECL_WORLD_T4N0 = 0xB,
VERTDECL_WORLD_T4N1 = 0xC,
VERTDECL_WORLD_T4N2 = 0xD,
VERTDECL_POS_TEX = 0xE,
VERTDECL_STATICMODELCACHE = 0xF,
VERTDECL_COUNT = 0x10,
};
struct $A6DFE8F2BEFD3E7315B44D22E582538B
{
unsigned int stride;
IDirect3DVertexBuffer9* vb;
unsigned int offset;
};
struct GfxCmdBufPrimState
{
IDirect3DDevice9* device;
IDirect3DIndexBuffer9* indexBuffer;
MaterialVertexDeclType vertDeclType;
$A6DFE8F2BEFD3E7315B44D22E582538B streams[2];
IDirect3DVertexDeclaration9* vertexDecl;
};
enum GfxDepthRangeType
{
GFX_DEPTH_RANGE_SCENE = 0x0,
GFX_DEPTH_RANGE_VIEWMODEL = 0x2,
GFX_DEPTH_RANGE_FULL = 0xFFFFFFFF,
};
struct GfxViewport
{
int x;
int y;
int width;
int height;
};
enum GfxRenderTargetId
{
R_RENDERTARGET_SAVED_SCREEN = 0x0,
R_RENDERTARGET_FRAME_BUFFER = 0x1,
R_RENDERTARGET_SCENE = 0x2,
R_RENDERTARGET_RESOLVED_POST_SUN = 0x3,
R_RENDERTARGET_RESOLVED_SCENE = 0x4,
R_RENDERTARGET_FLOAT_Z = 0x5,
R_RENDERTARGET_PINGPONG_0 = 0x6,
R_RENDERTARGET_PINGPONG_1 = 0x7,
R_RENDERTARGET_POST_EFFECT_0 = 0x8,
R_RENDERTARGET_POST_EFFECT_1 = 0x9,
R_RENDERTARGET_SHADOWMAP_LARGE = 0xA,
R_RENDERTARGET_SHADOWMAP_SMALL = 0xB,
R_RENDERTARGET_COUNT = 0xC,
R_RENDERTARGET_NONE = 0xD,
};
struct GfxDrawPrimArgs
{
int vertexCount;
int triCount;
int baseIndex;
};
struct GfxCmdBufState
{
char refSamplerState[16];
unsigned int samplerState[16];
GfxTexture* samplerTexture[16];
GfxCmdBufPrimState prim;
Material* material;
MaterialTechniqueType techType;
MaterialTechnique* technique;
MaterialPass* pass;
unsigned int passIndex;
GfxDepthRangeType depthRangeType;
float depthRangeNear;
float depthRangeFar;
unsigned __int64 vertexShaderConstState[64];
unsigned __int64 pixelShaderConstState[256];
char alphaRef;
unsigned int refStateBits[2];
unsigned int activeStateBits[2];
MaterialPixelShader* pixelShader;
MaterialVertexShader* vertexShader;
unsigned int scissorX;
unsigned int scissorY;
unsigned int scissorW;
unsigned int scissorH;
unsigned int pixPrimarySortKey;
unsigned int pixSceneLightIndex;
Material* pixMaterial;
MaterialTechnique* pixTechnique;
int pixCombine;
GfxViewport viewport;
GfxRenderTargetId renderTargetId;
Material* origMaterial;
MaterialTechniqueType origTechType;
};
enum MaterialTextureSource : unsigned int
{
TEXTURE_SRC_CODE_BLACK = 0x0,
TEXTURE_SRC_CODE_WHITE = 0x1,
TEXTURE_SRC_CODE_IDENTITY_NORMAL_MAP = 0x2,
TEXTURE_SRC_CODE_MODEL_LIGHTING = 0x3,
TEXTURE_SRC_CODE_LIGHTMAP_PRIMARY = 0x4,
TEXTURE_SRC_CODE_LIGHTMAP_SECONDARY = 0x5,
TEXTURE_SRC_CODE_SHADOWMAP_SUN = 0x6,
TEXTURE_SRC_CODE_SHADOWMAP_SPOT = 0x7,
TEXTURE_SRC_CODE_FEEDBACK = 0x8,
TEXTURE_SRC_CODE_RESOLVED_POST_SUN = 0x9,
TEXTURE_SRC_CODE_RESOLVED_SCENE = 0xA,
TEXTURE_SRC_CODE_POST_EFFECT_0 = 0xB,
TEXTURE_SRC_CODE_POST_EFFECT_1 = 0xC,
TEXTURE_SRC_CODE_LIGHT_ATTENUATION = 0xD,
TEXTURE_SRC_CODE_OUTDOOR = 0xE,
TEXTURE_SRC_CODE_FLOATZ = 0xF,
TEXTURE_SRC_CODE_PROCESSED_FLOATZ = 0x10,
TEXTURE_SRC_CODE_RAW_FLOATZ = 0x11,
TEXTURE_SRC_CODE_HALF_PARTICLES = 0x12,
TEXTURE_SRC_CODE_HALF_PARTICLES_Z = 0x13,
TEXTURE_SRC_CODE_CASE_TEXTURE = 0x14,
TEXTURE_SRC_CODE_CINEMATIC_Y = 0x15,
TEXTURE_SRC_CODE_CINEMATIC_CR = 0x16,
TEXTURE_SRC_CODE_CINEMATIC_CB = 0x17,
TEXTURE_SRC_CODE_CINEMATIC_A = 0x18,
TEXTURE_SRC_CODE_REFLECTION_PROBE = 0x19,
TEXTURE_SRC_CODE_ALTERNATE_SCENE = 0x1A,
TEXTURE_SRC_CODE_COUNT = 0x1B,
};
struct GfxCmdBufSourceState;
struct GfxCmdBufContext
{
GfxCmdBufSourceState *source;
GfxCmdBufState *state;
};
struct GfxDrawGroupSetupFields
{
unsigned __int16 materialSortedIndex : 15;
unsigned __int16 useHeroLighting : 1;
char sceneLightIndex;
char surfType;
};
union GfxDrawGroupSetup
{
GfxDrawGroupSetupFields fields;
unsigned int packed;
};
struct GfxMarkSurfLightingFields
{
char lmapIndex;
char reflectionProbeIndex;
unsigned __int16 modelIndex;
};
union GfxMarkSurfLighting
{
GfxMarkSurfLightingFields fields;
unsigned int packed;
};
struct GfxMarkSurf
{
GfxDrawGroupSetup drawGroup;
unsigned __int16* indices;
unsigned __int16 triCount;
char modelType;
char pad;
GfxMarkSurfLighting lighting;
};
struct GfxCodeSurf
{
GfxDrawGroupSetup drawGroup;
unsigned int triCount;
unsigned __int16* indices;
unsigned __int16 argOffset;
unsigned __int16 argCount;
};
struct __declspec(align(4)) GfxGlassSurf
{
GfxDrawGroupSetup drawGroup;
char pad;
char reflectionProbeIndex;
unsigned __int16 triCount;
unsigned __int16* indices;
unsigned __int16 lightingHandle;
};
struct GfxCloudSurfFields
{
unsigned __int16 materialSortedIndex;
char cloudDataIndex;
char surfType;
};
union GfxCloudSurf
{
GfxCloudSurfFields fields;
unsigned int packed;
};
struct GfxSparkSurfFields
{
unsigned __int16 materialSortedIndex;
unsigned __int16 sparkDataIndex;
};
union GfxSparkSurf
{
GfxSparkSurfFields fields;
unsigned int packed;
};
struct GfxSceneDef
{
int time;
float floatTime;
float viewOffset[3];
GfxImage* sunShadowImage;
float sunShadowPixelAdjust[4];
};
struct GfxMatrix
{
float m[4][4];
};
struct GfxCodeMatrices
{
GfxMatrix matrix[56];
};
struct GfxCamera
{
float origin[3];
float axis[3][3];
float subWindowMins[2];
float subWindowMaxs[2];
float tanHalfFovX;
float tanHalfFovY;
float zNear;
float depthHackNearClip;
};
struct GfxViewParms
{
GfxMatrix viewMatrix;
GfxMatrix projectionMatrix;
GfxMatrix viewProjectionMatrix;
GfxMatrix inverseViewProjectionMatrix;
GfxCamera camera;
};
struct GfxBackEndData;
struct GfxCmdBufInput
{
float consts[76][4];
GfxImage* codeImages[27];
char codeImageSamplerStates[27];
GfxBackEndData* data;
};
enum GfxViewMode
{
VIEW_MODE_NONE = 0x0,
VIEW_MODE_3D = 0x1,
VIEW_MODE_2D = 0x2,
VIEW_MODE_IDENTITY = 0x3,
};
enum GfxViewportBehavior
{
GFX_USE_VIEWPORT_FOR_VIEW = 0x0,
GFX_USE_VIEWPORT_FULL = 0x1,
};
enum ShadowType
{
SHADOW_NONE = 0x0,
SHADOW_MAP = 0x1,
};
struct GfxDepthOfField
{
float viewModelStart;
float viewModelEnd;
float nearStart;
float nearEnd;
float farStart;
float farEnd;
float nearBlur;
float farBlur;
};
struct GfxFilm
{
bool enabled;
float brightness;
float contrast;
float desaturation;
float desaturationDark;
bool invert;
float tintDark[3];
float tintMedium[3];
float tintLight[3];
};
struct GfxGlow
{
bool enabled;
float bloomCutoff;
float bloomDesaturation;
float bloomIntensity;
float radius;
};
struct GfxLightScale
{
float diffuseScale;
float specularScale;
};
struct GfxStageInfo
{
Stage activeStage;
bool activeStageValid;
};
struct GfxCompositeFx
{
GfxFilm film;
float distortionScale[3];
float blurRadius;
float distortionMagnitude;
float frameRate;
int lastUpdate;
int frame;
int startMSec;
int currentTime;
int duration;
bool enabled;
bool scriptEnabled;
};
struct GfxVertexBufferState
{
volatile int used;
int total;
IDirect3DVertexBuffer9* buffer;
char* verts;
};
struct GfxMeshData
{
unsigned int indexCount;
unsigned int totalIndexCount;
unsigned __int16* indices;
GfxVertexBufferState vb;
unsigned int vertSize;
};
struct GfxQuadMeshData
{
float x;
float y;
float width;
float height;
GfxMeshData meshData;
};
struct GfxSparkSurfList
{
GfxSparkSurf* surfs;
unsigned int count;
};
enum GfxCodeSurfListType
{
GFX_CODE_SURFLIST_INVALID = -1,
GFX_CODE_SURFLIST_TRANS = 0x0,
GFX_CODE_SURFLIST_EMISSIVE = 0x1,
GFX_CODE_SURFLIST_TYPE_COUNT = 0x2,
};
struct GfxViewInfo;
struct GfxDrawListInfo
{
MaterialTechniqueType baseTechType;
GfxViewInfo* viewInfo;
float eyeOffset[3];
unsigned int sceneLightIndex;
int cameraView;
GfxCodeSurfListType codeSurfListType;
};
struct GfxBspSurfList
{
unsigned int count;
const unsigned __int16* stream;
};
struct GfxSModelSurfList
{
unsigned int surfDataBytes;
const char* surfData;
const char* visData;
};
struct GfxDrawSurfList
{
GfxDrawSurf* array;
unsigned int count;
};
struct GfxPreTessSurf
{
GfxDrawGroupSetup drawGroup;
char lightmapIndex;
char reflectionProbeIndex;
unsigned __int16 triCount;
unsigned int baseIndex;
unsigned int firstVertex;
IDirect3DVertexBuffer9* vb;
unsigned int vertexCount;
};
struct GfxPreTessSurfList
{
GfxPreTessSurf* surfs;
unsigned int count;
};
struct GfxCodeSurfList
{
GfxCodeSurf* surfs;
unsigned int count;
};
struct GfxMarkSurfList
{
GfxMarkSurf* surfs;
unsigned int count;
};
struct GfxGlassSurfList
{
GfxGlassSurf* surfs;
unsigned int count;
};
struct GfxScaledPlacement
{
GfxPlacement base;
float scale;
};
struct GfxParticleCloud
{
GfxScaledPlacement placement;
float endpos[3];
GfxColor color;
float radius[2];
unsigned int flags;
float timeOffset;
};
struct GfxCloudSurfList
{
GfxParticleCloud* particles;
GfxCloudSurf* surfs;
unsigned int count;
};
struct GfxDrawList
{
GfxBspSurfList bspSurfList;
GfxPreTessSurfList bspPreTessSurfList;
GfxSModelSurfList smodelSurfList[4];
GfxDrawSurfList drawSurfList;
GfxCodeSurfList codeSurfList;
GfxMarkSurfList markSurfList;
GfxGlassSurfList glassSurfList;
GfxCloudSurfList cloudSurfList;
GfxSparkSurfList sparkSurfList;
GfxDrawListInfo info;
};
struct GfxViewInfo
{
GfxViewParms viewParms;
GfxViewport sceneViewport;
GfxViewport displayViewport;
GfxViewport scissorViewport;
GfxSceneDef sceneDef;
ShadowType dynamicShadowType;
char floatZUsage;
bool needsDistortionResolve;
bool viewModelHasDistortion;
char forceSunShadowsGenerate;
unsigned int sceneLightCount;
float blurRadius;
float frustumPlanes[4][4];
GfxDepthOfField dof;
GfxFilm film;
GfxGlow glow;
GfxLightScale charPrimaryLightScale;
GfxStageInfo stageInfo;
GfxCompositeFx waterSheetingFx;
const void* displayCmds;
GfxQuadMeshData* fullSceneViewMesh;
GfxDrawList drawList[10];
//__declspec(align(16)) GfxCmdBufInput input;
GfxRenderTargetId renderTargetId;
bool useShadows;
unsigned int sunShadowResolution;
GfxRenderTargetId sunShadowRenderTargetId;
unsigned int sunShadowTileCount;
};
struct GfxLight
{
char type;
char canUseShadowMap;
char unused[2];
float color[3];
float dir[3];
float origin[3];
float radius;
float cosHalfFovOuter;
float cosHalfFovInner;
int exponent;
unsigned int spotShadowIndex;
GfxLightDef* def;
};
struct GfxVisibleLight
{
char pad[0x2004];
};
struct GfxEntity
{
unsigned int renderFxFlags;
float materialTime;
};
struct GfxSkinnedXModelSurfs
{
void* firstSurf;
};
struct GfxSceneEntityCull
{
volatile unsigned int state;
Bounds bounds;
GfxSkinnedXModelSurfs skinnedSurfs;
};
union GfxSceneEntityInfo
{
void/*cpose_t*/* pose;
unsigned __int16* cachedLightingHandle;
};
struct DSkelPartBits
{
int anim[6];
int control[6];
int worldCtrl[6];
int skel[6];
};
struct DSkel
{
DSkelPartBits partBits;
int timeStamp;
/*DObjAnimMat*/void* mat;
};
struct DObj
{
/*XAnimTree_s*/ void* tree;
unsigned __int16 duplicateParts;
unsigned __int16 entnum;
char duplicatePartsSize;
char numModels;
char numBones;
char flags;
unsigned int ignoreCollision;
volatile int locked;
DSkel skel;
float radius;
unsigned int hidePartBits[6];
XModel** models;
};
struct GfxSceneEntity
{
float lightingOrigin[3];
GfxPlacement placement;
GfxSceneEntityCull cull;
char lods[32];
unsigned __int32 gfxEntIndex : 7;
unsigned __int32 entnum : 12;
unsigned __int32 renderFxFlags : 13;
DObj* obj;
GfxSceneEntityInfo info;
char reflectionProbeIndex;
};
struct GfxCmdBufSourceState
{
GfxCodeMatrices matrices;
GfxCmdBufInput input;
GfxViewParms viewParms;
float eyeOffset[4];
GfxMatrix shadowLookupMatrix;
unsigned __int16 constVersions[132];
unsigned __int16 matrixVersions[14];
unsigned int sceneLightForShadowLookupMatrix;
GfxPlacement* objectPlacement[3];
GfxViewParms* viewParms3D;
unsigned int depthHackFlags;
GfxScaledPlacement skinnedPlacement;
int cameraView;
GfxViewMode viewMode;
GfxSceneDef sceneDef;
GfxViewport sceneViewport;
float materialTime;
GfxViewportBehavior viewportBehavior;
int renderTargetWidth;
int renderTargetHeight;
bool viewportIsDirty;
unsigned int sceneLightIndex;
bool useHeroLighting;
};
struct GfxSceneModel
{
XModelDrawInfo info;
XModel* model;
DObj* obj;
GfxScaledPlacement placement;
unsigned __int32 gfxEntIndex : 7;
unsigned __int32 entnum : 12;
unsigned __int32 renderFxFlags : 13;
float radius;
unsigned __int16* cachedLightingHandle;
float lightingOrigin[3];
char reflectionProbeIndex;
char lod;
};
struct __declspec(align(4)) GfxSceneBrush
{
BModelDrawInfo info;
unsigned __int16 entnum;
GfxBrushModel* bmodel;
GfxPlacement placement;
char reflectionProbeIndex;
};
union GfxSceneGlass
{
struct
{
bool rendered;
char reflectionProbeIndex;
unsigned __int16 lightingHandle;
};
unsigned int packed;
};
union GfxEntCellRefInfo
{
float radius;
GfxBrushModel* bmodel;
};
struct GfxSceneDpvs
{
unsigned int localClientNum;
char* entVisData[7];
unsigned __int16* sceneXModelIndex;
unsigned __int16* sceneDObjIndex;
GfxEntCellRefInfo* entInfo[4];
};
struct __declspec(align(64)) GfxScene
{
GfxCodeSurf codeEmissiveSurfs[2048];
GfxCodeSurf codeTransSurfs[640];
GfxMarkSurf markSurfs[1536];
GfxGlassSurf glassSurfs[768];
GfxCloudSurf cloudSurfs[256];
GfxDrawSurf drawSurfsDepthHack[32];
GfxDrawSurf drawSurfsLitOpaque[8192];
GfxDrawSurf drawSurfsLitTrans[2048];
GfxDrawSurf drawSurfsEmissive[8192];
GfxDrawSurf drawSurfsSunShadow0[4096];
GfxDrawSurf drawSurfsSunShadow1[8192];
GfxDrawSurf drawSurfsSpotShadow0[896];
GfxDrawSurf drawSurfsSpotShadow1[896];
GfxDrawSurf drawSurfsSpotShadow2[896];
GfxDrawSurf drawSurfsSpotShadow3[896];
unsigned int sceneLightIsUsed[32];
unsigned int cachedSceneLightIsUsed[4][32];
GfxSparkSurf sparkSurfs[64];
unsigned int drawSurfLimit[10];
volatile int drawSurfCount[10];
GfxDrawSurf* drawSurfs[10];
volatile int codeSurfUser[2];
volatile int markMeshGuard;
unsigned int codeEmissiveSurfCount;
unsigned int codeTransSurfCount;
unsigned int markSurfCount;
unsigned int glassSurfCount;
GfxSceneDef def;
unsigned int addedLightCount;
GfxLight addedLight[32];
bool isAddedLightCulled[32];
float dynamicSpotLightNearPlaneOffset;
float dynamicSpotLightLength;
GfxVisibleLight visLight[4];
GfxVisibleLight visLightShadow[1];
unsigned int* entOverflowedDrawBuf;
volatile int gfxEntCount;
GfxEntity gfxEnts[128];
int sceneDObjCount;
int preClientSceneDObjCount;
int sceneDObjCountAtMark;
GfxSceneEntity sceneDObj[520];
char sceneDObjVisData[7][512];
int sceneDObjMarkableViewmodelIndex;
unsigned int sceneDObjFirstViewmodelIndex;
unsigned int sceneDObjViewmodelCount;
volatile int sceneModelCount;
int sceneModelCountAtMark;
int sceneDObjModelCount;
GfxSceneModel sceneModel[1024];
char sceneModelVisData[7][1024];
volatile int sceneBrushCount;
int sceneBrushCountAtMark;
GfxSceneBrush sceneBrush[512];
char sceneBrushVisData[3][512];
GfxSceneGlass sceneGlass[1024];
unsigned int sceneDynModelCount;
unsigned int sceneDynBrushCount;
int gfxEntCountAtMark;
GfxSceneDpvs dpvs;
int updateSound;
int allowAddDObj;
};
enum TextRenderFlags
{
TEXT_RENDERFLAG_FORCEMONOSPACE = 0x1,
TEXT_RENDERFLAG_CURSOR = 0x2,
TEXT_RENDERFLAG_DROPSHADOW = 0x4,
TEXT_RENDERFLAG_DROPSHADOW_EXTRA = 0x8,
TEXT_RENDERFLAG_GLOW = 0x10,
TEXT_RENDERFLAG_GLOW_FORCE_COLOR = 0x20,
TEXT_RENDERFLAG_FX_DECODE = 0x40,
TEXT_RENDERFLAG_PADDING = 0x80,
TEXT_RENDERFLAG_SUBTITLETEXT = 0x100,
TEXT_RENDERFLAG_CINEMATIC = 0x200,
TEXT_RENDERFLAG_OUTLINE = 0x400,
TEXT_RENDERFLAG_OUTLINE_EXTRA = 0x800,
};
enum FontPassType
{
FONTPASS_NORMAL = 0x0,
FONTPASS_GLOW = 0x1,
FONTPASS_OUTLINE = 0x2,
FONTPASS_COUNT = 0x3,
};
struct AimInput
{
float deltaTime;
float deltaTimeScaled;
float pitch;
float pitchAxis;
float pitchMax;
float yaw;
float yawAxis;
float yawMax;
float forwardAxis;
float rightAxis;
int buttons;
int localClientNum;
};
struct AimOutput
{
float pitch;
float yaw;
float meleeChargeYaw;
char meleeChargeDist;
};
struct clientLogo_t
{
int startTime;
int duration;
int fadein;
int fadeout;
Material* material[2];
};
struct vidConfig_t
{
unsigned int sceneWidth;
unsigned int sceneHeight;
unsigned int displayWidth;
unsigned int displayHeight;
unsigned int displayFrequency;
int isFullscreen;
float aspectRatioWindow;
float aspectRatioScenePixel;
float aspectRatioDisplayPixel;
unsigned int maxTextureSize;
unsigned int maxTextureMaps;
bool deviceSupportsGamma;
};
struct trDebugLine_t
{
float start[3];
float end[3];
float color[4];
int depthTest;
};
struct trDebugString_t
{
float xyz[3];
float color[4];
float scale;
char text[96];
};
struct clientDebugStringInfo_t
{
int max;
int num;
trDebugString_t* strings;
int* durations;
};
struct clientDebugLineInfo_t
{
int max;
int num;
trDebugLine_t* lines;
int* durations;
};
struct clientDebug_t
{
int prevFromServer;
int fromServer;
clientDebugStringInfo_t clStrings;
clientDebugStringInfo_t svStringsBuffer;
clientDebugStringInfo_t svStrings;
clientDebugLineInfo_t clLines;
clientDebugLineInfo_t svLinesBuffer;
clientDebugLineInfo_t svLines;
};
struct ClientMatchData
{
char def[64];
char data[1024];
};
struct clientStatic_t
{
int quit;
int hunkUsersStarted;
char servername[256];
int rendererStarted;
int soundStarted;
int uiStarted;
int frametime;
float frametime_base;
int realtime;
bool gpuSyncedPrevFrame;
bool inputUpdatedPrevFrame;
clientLogo_t logo;
float mapCenter[3];
int lastServerPinged;
int pingedServerCount;
int totalServersParsed;
int pingUpdateSource;
Material* whiteMaterial;
Material* consoleMaterial;
Font_s* consoleFont;
vidConfig_t vidConfig;
clientDebug_t debug;
int doVidRestart;
ClientMatchData matchData;
XNADDR xnaddrs[18];
float debugRenderPos[3];
int skelValid;
int skelTimeStamp;
volatile int skelMemPos;
char skelMemory[262144];
char* skelMemoryStart;
bool allowedAllocSkel;
int serverId;
gameState_t gameState;
clSnapshot_t noDeltaSnapshot;
int nextNoDeltaEntity;
entityState_s noDeltaEntities[1024];
};
static_assert(sizeof(clientStatic_t) == 0xA7AEC);
struct ConDrawInputGlob
{
char autoCompleteChoice[64];
int matchIndex;
int matchCount;
const char* inputText;
int inputTextLen;
bool hasExactMatch;
bool mayAutoComplete;
float x;
float y;
float leftX;
float fontHeight;
};
struct ScreenPlacement
{
float scaleVirtualToReal[2];
float scaleVirtualToFull[2];
float scaleRealToVirtual[2];
float realViewportPosition[2];
float realViewportSize[2];
float virtualViewableMin[2];
float virtualViewableMax[2];
float realViewableMin[2];
float realViewableMax[2];
float virtualAdjustableMin[2];
float virtualAdjustableMax[2];
float realAdjustableMin[2];
float realAdjustableMax[2];
float subScreenLeft;
};
struct serverStatusInfo_t
{
char address[64];
const char* lines[128][4];
char text[1024];
char pings[54];
int numLines;
};
struct pendingServer_t
{
char adrstr[64];
char name[64];
int startTime;
int serverNum;
int valid;
};
struct pendingServerStatus_t
{
int num;
pendingServer_t server[16];
};
struct pinglist_t
{
char adrstr[64];
int start;
};
struct serverStatus_s
{
pinglist_t pingList[16];
int numqueriedservers;
int currentping;
int nextpingtime;
int maxservers;
int refreshtime;
int numServers;
int sortKey;
int sortDir;
int lastCount;
int refreshActive;
int currentServer;
int displayServers[20000];
int numDisplayServers;
int serverCount;
int numPlayersOnServers;
int nextDisplayRefresh;
int nextSortTime;
int motdLen;
int motdWidth;
int motdPaintX;
int motdPaintX2;
int motdOffset;
int motdTime;
char motd[1024];
};
struct mapInfo
{
char mapName[32];
char mapLoadName[16];
char mapDescription[32];
char mapLoadImage[32];
char mapCustomKey[32][16];
char mapCustomValue[32][64];
int mapCustomCount;
int teamMembers;
int typeBits;
int timeToBeat[32];
int active;
};
struct gameTypeInfo
{
char gameType[12];
char gameTypeName[32];
};
struct CachedAssets_t
{
Material* scrollBarArrowUp;
Material* scrollBarArrowDown;
Material* scrollBarArrowLeft;
Material* scrollBarArrowRight;
Material* scrollBar;
Material* scrollBarThumb;
Material* sliderBar;
Material* sliderThumb;
Material* whiteMaterial;
Material* cursor;
Material* textDecodeCharacters;
Material* textDecodeCharactersGlow;
Font_s* bigFont;
Font_s* smallFont;
Font_s* consoleFont;
Font_s* boldFont;
Font_s* textFont;
Font_s* extraBigFont;
Font_s* objectiveFont;
Font_s* hudBigFont;
Font_s* hudSmallFont;
snd_alias_list_t* itemFocusSound;
};
struct sharedUiInfo_t
{
CachedAssets_t assets;
int playerCount;
char playerNames[18][32];
char teamNames[18][32];
int playerClientNums[18];
volatile int updateGameTypeList;
int numGameTypes;
gameTypeInfo gameTypes[32];
int numCustomGameTypes;
gameTypeInfo customGameTypes[32];
char customGameTypeCancelState[2048];
int numJoinGameTypes;
gameTypeInfo joinGameTypes[32];
volatile int updateArenas;
int mapCount;
mapInfo mapList[128];
int mapIndexSorted[128];
bool mapsAreSorted;
Material* serverHardwareIconList[9];
unsigned __int64 partyMemberXuid;
Material* talkingIcons[2];
serverStatus_s serverStatus;
char serverStatusAddress[64];
serverStatusInfo_t serverStatusInfo;
int nextServerStatusRefresh;
pendingServerStatus_t pendingServerStatus;
};
struct GraphFloat
{
char name[64];
float knots[32][2];
unsigned __int16 knotCount;
float scale;
};
struct XAnimTree_s
{
XAnim_s* anims;
int info_usage;
volatile int calcRefCount;
volatile int modifyRefCount;
unsigned __int16 children;
};
struct FxEffect
{
const FxEffectDef* def;
volatile int status;
unsigned __int16 firstElemHandle[3];
unsigned __int16 firstSortedElemHandle;
unsigned __int16 firstTrailHandle;
unsigned __int16 firstSparkFountainHandle;
unsigned __int16 pad16[1];
unsigned __int16 randomSeed;
unsigned __int16 owner;
unsigned __int8 lighting[3];
unsigned __int8 pad8[2];
unsigned __int8 markViewmodelClientIndex;
unsigned __int16 markEntnum;
unsigned __int16 flags;
unsigned __int8 bolt;
unsigned __int8 runnerSortOrder;
volatile int frameCount;
int msecBegin;
int msecLastUpdate;
FxSpatialFrame frameAtSpawn;
FxSpatialFrame frameNow;
FxSpatialFrame framePrev;
float distanceTravelled;
char pad2[4];
};
static_assert(sizeof(FxEffect) == 0x90);
struct CEntVehicleInfo
{
__int16 pitch;
__int16 yaw;
__int16 roll;
__int16 barrelPitch;
float barrelRoll;
__int16 steerYaw;
float time;
unsigned __int16 wheelFraction[6];
unsigned __int8 wheelBoneIndex[6];
unsigned __int8 wheelSurfaceType[6];
unsigned __int8 tag_body;
unsigned __int8 tag_turret;
unsigned __int8 tag_barrel;
};
static_assert(sizeof(CEntVehicleInfo) == 0x30);
struct CEntFx
{
int triggerTime;
FxEffect* effect;
};
struct CEntTurretAngles
{
float pitch;
float yaw;
};
union $062DBEF1E2477FBB6A8D36FDF573DC79
{
CEntTurretAngles angles;
const float* viewAngles;
};
struct CEntTurretInfo
{
$062DBEF1E2477FBB6A8D36FDF573DC79 ___u0;
float barrelPitch;
bool playerUsing;
unsigned __int8 tagIdx_aim;
unsigned __int8 tagIdx_aim_animated;
unsigned __int8 tagIdx_aim_pivot;
unsigned __int8 tagIdx_flash;
unsigned __int8 tagIdx_barrel;
float barrelRoll;
bool barrelRollSndLastRotating;
bool barrelRollSndNotified;
int barrelRollSndTime;
unsigned __int8 barrelRollSndIndex;
bool wasOverheat;
};
static_assert(sizeof(CEntTurretInfo) == 0x24);
struct clientControllers_t
{
float angles[4][3];
float tag_origin_angles[3];
float tag_origin_offset[3];
};
struct CEntPlayerInfo
{
clientControllers_t* control;
unsigned __int8 tag[4];
};
static_assert(sizeof(CEntPlayerInfo) == 0x8);
union $79C409BC84BCEABA56F6D25E37F2711D
{
CEntPlayerInfo player;
CEntTurretInfo turret;
CEntVehicleInfo vehicle;
CEntFx fx;
};
struct cpose_t
{
unsigned __int16 lightingHandle;
unsigned __int8 eType;
unsigned __int8 cullIn;
unsigned int usedInScene;
unsigned __int8 isRagdoll;
int ragdollHandle;
int killcamRagdollHandle;
int physObjId;
float origin[3];
float angles[3];
$79C409BC84BCEABA56F6D25E37F2711D ___u10;
};
static_assert(sizeof(cpose_t) == 0x60);
struct centity_s
{
cpose_t pose;
LerpEntityState prevState;
entityState_s nextState;
int flags;
unsigned __int8 tracerDrawRateCounter;
unsigned __int8 weaponVisTestCounter;
int previousEventSequence;
int pickupPredictionTime;
float lightingOrigin[3];
XAnimTree_s* tree;
centity_s* updateDelayedNext;
};
static_assert(sizeof(centity_s) == 0x1F4);
struct playerEntity_t
{
int bPositionToADS;
float fLastIdleFactor;
float baseMoveOrigin[3];
float baseMoveAngles[3];
};
static_assert(sizeof(playerEntity_t) == 0x20);
enum DemoType
{
DEMO_TYPE_NONE = 0x0,
DEMO_TYPE_CLIENT = 0x1,
DEMO_TYPE_SERVER = 0x2,
};
enum CubemapShot
{
CUBEMAPSHOT_NONE = 0x0,
CUBEMAPSHOT_RIGHT = 0x1,
CUBEMAPSHOT_LEFT = 0x2,
CUBEMAPSHOT_BACK = 0x3,
CUBEMAPSHOT_FRONT = 0x4,
CUBEMAPSHOT_UP = 0x5,
CUBEMAPSHOT_DOWN = 0x6,
CUBEMAPSHOT_COUNT = 0x7,
};
struct snapshot_s
{
playerState_s ps;
int snapFlags;
int ping;
int serverTime;
int numEntities;
int numClients;
entityState_s entities[768];
clientState_s clients[18];
int serverCommandSequence;
};
struct cg_s
{
playerState_s predictedPlayerState;
centity_s predictedPlayerEntity;
playerEntity_t playerEntity;
int predictedErrorTime;
float predictedError[3];
int clientNum;
int localClientNum;
DemoType demoType;
CubemapShot cubemapShot;
int cubemapSize;
int renderScreen;
int latestSnapshotNum;
int latestSnapshotTime;
char pad0[16];
snapshot_s* snap;
snapshot_s* nextSnap;
snapshot_s activeSnapshots[2];
float frameInterpolation;
int frametime; // + 0x6A754
int time;
int oldTime;
int physicalsTime;
char _pad2[0x9600]; // + 0x6A758
float compassMapWorldSize[2]; // + 0x73D64
char _pad3[0x74]; // + 0x73D6C
float selectedLocation[2]; // + 0x73DE0
float selectedLocationAngle;
float selectedAngleLocation[2];
float selectedLocationPrev[2];
float selectedLocationAnglePrev;
char _pad4[0x89740];
};
static_assert(sizeof(cg_s) == 0xFD540);
static_assert(offsetof(cg_s, frametime) == 0x6A754);
static_assert(offsetof(cg_s, selectedLocation) == 0x73DE0);
static constexpr auto MAX_GPAD_COUNT = 1;
static constexpr auto GPAD_VALUE_MASK = 0xFFFFFFFu;
static constexpr auto GPAD_DPAD_MASK = XINPUT_GAMEPAD_DPAD_UP | XINPUT_GAMEPAD_DPAD_DOWN | XINPUT_GAMEPAD_DPAD_LEFT | XINPUT_GAMEPAD_DPAD_RIGHT;
static constexpr auto GPAD_DIGITAL_MASK = 1u << 28;
static constexpr auto GPAD_ANALOG_MASK = 1u << 29;
static constexpr auto GPAD_STICK_MASK = 1u << 30;
enum GamePadButton
{
GPAD_NONE = 0,
GPAD_UP = GPAD_DIGITAL_MASK | (XINPUT_GAMEPAD_DPAD_UP & GPAD_VALUE_MASK),
GPAD_DOWN = GPAD_DIGITAL_MASK | (XINPUT_GAMEPAD_DPAD_DOWN & GPAD_VALUE_MASK),
GPAD_LEFT = GPAD_DIGITAL_MASK | (XINPUT_GAMEPAD_DPAD_LEFT & GPAD_VALUE_MASK),
GPAD_RIGHT = GPAD_DIGITAL_MASK | (XINPUT_GAMEPAD_DPAD_RIGHT & GPAD_VALUE_MASK),
GPAD_START = GPAD_DIGITAL_MASK | (XINPUT_GAMEPAD_START & GPAD_VALUE_MASK),
GPAD_BACK = GPAD_DIGITAL_MASK | (XINPUT_GAMEPAD_BACK & GPAD_VALUE_MASK),
GPAD_L3 = GPAD_DIGITAL_MASK | (XINPUT_GAMEPAD_LEFT_THUMB & GPAD_VALUE_MASK),
GPAD_R3 = GPAD_DIGITAL_MASK | (XINPUT_GAMEPAD_RIGHT_THUMB & GPAD_VALUE_MASK),
GPAD_L_SHLDR = GPAD_DIGITAL_MASK | (XINPUT_GAMEPAD_LEFT_SHOULDER & GPAD_VALUE_MASK),
GPAD_R_SHLDR = GPAD_DIGITAL_MASK | (XINPUT_GAMEPAD_RIGHT_SHOULDER & GPAD_VALUE_MASK),
GPAD_A = GPAD_DIGITAL_MASK | (XINPUT_GAMEPAD_A & GPAD_VALUE_MASK),
GPAD_B = GPAD_DIGITAL_MASK | (XINPUT_GAMEPAD_B & GPAD_VALUE_MASK),
GPAD_X = GPAD_DIGITAL_MASK | (XINPUT_GAMEPAD_X & GPAD_VALUE_MASK),
GPAD_Y = GPAD_DIGITAL_MASK | (XINPUT_GAMEPAD_Y & GPAD_VALUE_MASK),
GPAD_L_TRIG = GPAD_ANALOG_MASK | (0 & GPAD_VALUE_MASK),
GPAD_R_TRIG = GPAD_ANALOG_MASK | (1 & GPAD_VALUE_MASK),
};
enum GamePadStick
{
GPAD_INVALID = 0x0,
GPAD_LX = GPAD_STICK_MASK | (0 & GPAD_VALUE_MASK),
GPAD_LY = GPAD_STICK_MASK | (1 & GPAD_VALUE_MASK),
GPAD_RX = GPAD_STICK_MASK | (2 & GPAD_VALUE_MASK),
GPAD_RY = GPAD_STICK_MASK | (3 & GPAD_VALUE_MASK),
};
enum GamePadButtonEvent
{
GPAD_BUTTON_RELEASED = 0x0,
GPAD_BUTTON_PRESSED = 0x1,
GPAD_BUTTON_UPDATE = 0x2,
};
enum GamepadPhysicalAxis
{
GPAD_PHYSAXIS_NONE = -1,
GPAD_PHYSAXIS_RSTICK_X = 0x0,
GPAD_PHYSAXIS_RSTICK_Y = 0x1,
GPAD_PHYSAXIS_LSTICK_X = 0x2,
GPAD_PHYSAXIS_LSTICK_Y = 0x3,
GPAD_PHYSAXIS_RTRIGGER = 0x4,
GPAD_PHYSAXIS_LTRIGGER = 0x5,
GPAD_PHYSAXIS_COUNT,
};
enum GamepadVirtualAxis
{
GPAD_VIRTAXIS_NONE = -1,
GPAD_VIRTAXIS_SIDE = 0x0,
GPAD_VIRTAXIS_FORWARD = 0x1,
GPAD_VIRTAXIS_UP = 0x2,
GPAD_VIRTAXIS_YAW = 0x3,
GPAD_VIRTAXIS_PITCH = 0x4,
GPAD_VIRTAXIS_ATTACK = 0x5,
GPAD_VIRTAXIS_COUNT
};
enum GamePadStickDir
{
GPAD_STICK_POS = 0x0,
GPAD_STICK_NEG = 0x1,
GPAD_STICK_DIR_COUNT
};
enum GamepadMapping
{
GPAD_MAP_NONE = -1,
GPAD_MAP_LINEAR = 0x0,
GPAD_MAP_SQUARED = 0x1,
GPAD_MAP_COUNT
};
struct ButtonToCodeMap_t
{
GamePadButton padButton;
int code;
};
struct StickToCodeMap_t
{
GamePadStick padStick;
int posCode;
int negCode;
};
struct GamepadVirtualAxisMapping
{
GamepadPhysicalAxis physicalAxis;
GamepadMapping mapType;
};
struct GpadAxesGlob
{
float axesValues[GPAD_PHYSAXIS_COUNT];
GamepadVirtualAxisMapping virtualAxes[GPAD_VIRTAXIS_COUNT];
};
enum weaponstate_t
{
WEAPON_READY = 0x0,
WEAPON_RAISING = 0x1,
WEAPON_RAISING_ALTSWITCH = 0x2,
WEAPON_DROPPING = 0x3,
WEAPON_DROPPING_QUICK = 0x4,
WEAPON_DROPPING_ALT = 0x5,
WEAPON_FIRING = 0x6,
WEAPON_RECHAMBERING = 0x7,
WEAPON_RELOADING = 0x8,
WEAPON_RELOADING_INTERUPT = 0x9,
WEAPON_RELOAD_START = 0xA,
WEAPON_RELOAD_START_INTERUPT = 0xB,
WEAPON_RELOAD_END = 0xC,
WEAPON_MELEE_INIT = 0xD,
WEAPON_MELEE_FIRE = 0xE,
WEAPON_MELEE_END = 0xF,
WEAPON_OFFHAND_INIT = 0x10,
WEAPON_OFFHAND_PREPARE = 0x11,
WEAPON_OFFHAND_HOLD = 0x12,
WEAPON_OFFHAND_FIRE = 0x13,
WEAPON_OFFHAND_DETONATE = 0x14,
WEAPON_OFFHAND_END = 0x15,
WEAPON_DETONATING = 0x16,
WEAPON_SPRINT_RAISE = 0x17,
WEAPON_SPRINT_LOOP = 0x18,
WEAPON_SPRINT_DROP = 0x19,
WEAPON_STUNNED_START = 0x1A,
WEAPON_STUNNED_LOOP = 0x1B,
WEAPON_STUNNED_END = 0x1C,
WEAPON_NIGHTVISION_WEAR = 0x1D,
WEAPON_NIGHTVISION_REMOVE = 0x1E,
WEAPONSTATES_NUM
};
struct AimAssistPlayerState
{
float velocity[3];
int eFlags;
int linkFlags;
int pm_flags;
int weapFlags;
int weaponState;
float fWeaponPosFrac;
int weapIndex;
bool hasAmmo;
bool isDualWielding;
bool isThirdPerson;
bool isExtendedMelee;
};
struct AimTweakables
{
float slowdownRegionWidth;
float slowdownRegionHeight;
float autoAimRegionWidth;
float autoAimRegionHeight;
float autoMeleeRegionWidth;
float autoMeleeRegionHeight;
float lockOnRegionWidth;
float lockOnRegionHeight;
};
constexpr auto AIM_TARGET_INVALID = 0x3FF;
struct AimScreenTarget
{
int entIndex;
float clipMins[2];
float clipMaxs[2];
float aimPos[3];
float velocity[3];
float distSqr;
float crosshairDistSqr;
};
enum AutoMeleeState
{
AIM_MELEE_STATE_OFF = 0x0,
AIM_MELEE_STATE_TARGETED = 0x1,
AIM_MELEE_STATE_UPDATING = 0x2,
};
#pragma warning(push)
#pragma warning(disable: 4324)
struct __declspec(align(16)) AimAssistGlobals
{
AimAssistPlayerState ps;
char _pad1[4];
float screenMtx[4][4];
float invScreenMtx[4][4];
bool initialized;
int prevButtons;
AimTweakables tweakables;
float eyeOrigin[3];
float viewOrigin[3];
float viewAngles[3];
float viewAxis[3][3];
float fovTurnRateScale;
float fovScaleInv;
float adsLerp;
float pitchDelta;
float yawDelta;
float screenWidth;
float screenHeight;
AimScreenTarget screenTargets[64];
int screenTargetCount;
int autoAimTargetEnt;
bool autoAimPressed;
bool autoAimActive;
float autoAimPitch;
float autoAimPitchTarget;
float autoAimYaw;
float autoAimYawTarget;
AutoMeleeState autoMeleeState;
int autoMeleeTargetEnt;
float autoMeleePitch;
float autoMeleePitchTarget;
float autoMeleeYaw;
float autoMeleeYawTarget;
int lockOnTargetEnt;
};
#pragma warning(pop)
enum ShockViewTypes
{
SHELLSHOCK_VIEWTYPE_BLURRED = 0x0,
SHELLSHOCK_VIEWTYPE_FLASHED = 0x1,
SHELLSHOCK_VIEWTYPE_NONE = 0x2,
};
struct shellshock_parms_t
{
struct
{
int blurredFadeTime;
int blurredEffectTime;
int flashWhiteFadeTime;
int flashShotFadeTime;
ShockViewTypes type;
} screenBlend;
struct
{
int fadeTime;
float kickRate;
float kickRadius;
} view;
struct
{
bool affect;
char loop[64];
char loopSilent[64];
char end[64];
char endAbort[64];
int fadeInTime;
int fadeOutTime;
float drylevel;
float wetlevel;
char roomtype[16];
float channelvolume[64];
int modEndDelay;
int loopFadeTime;
int loopEndDelay;
} sound;
struct
{
bool affect;
int fadeTime;
float mouseSensitivity;
float maxPitchSpeed;
float maxYawSpeed;
} lookControl;
struct
{
bool affect;
} movement;
};
struct animation_s
{
char name[MAX_QPATH];
int initialLerp;
float moveSpeed;
int duration;
int nameHash;
int flags;
int64_t movetype;
int noteType;
};
struct lerpFrame_t
{
float yawAngle;
int yawing;
float pitchAngle;
int pitching;
int animationNumber;
animation_s* animation;
int animationTime;
float oldFramePos[3];
float animSpeedScale;
int oldFrameSnapshotTime;
};
enum PlayerDiveState
{
DIVE_NONE = 0x0,
DIVE_FORWARD = 0x1,
DIVE_FORWARDLEFT = 0x2,
DIVE_LEFT = 0x3,
DIVE_BACKLEFT = 0x4,
DIVE_BACK = 0x5,
DIVE_BACKRIGHT = 0x6,
DIVE_RIGHT = 0x7,
DIVE_FORWARDRIGHT = 0x8,
};
struct clientInfo_t
{
int infoValid;
int nextValid;
int clientNum;
char name[16];
team_t team;
team_t oldteam;
int rank;
int prestige;
unsigned int perks[2];
int score;
int location;
int health;
char model[64];
char attachModelNames[6][64];
char attachTagNames[6][64];
unsigned int partBits[6];
lerpFrame_t legs;
lerpFrame_t torso;
float lerpMoveDir;
float lerpLean;
float playerAngles[3];
int legsAnim;
int torsoAnim;
float fTorsoPitch;
float fWaistPitch;
int leftHandGun;
int dobjDirty;
clientControllers_t control;
unsigned int clientConditions[18][2];
XAnimTree_s* pXAnimTree;
int iDObjWeapon;
char weaponModel;
int stanceTransitionTime;
int turnAnimEndTime;
char turnAnimType;
bool hideWeapon;
bool usingKnife;
int dualWielding;
PlayerDiveState diveState;
int riotShieldNext;
unsigned int playerCardIcon;
unsigned int playerCardTitle;
unsigned int playerCardNameplate;
};
static_assert(sizeof(clientInfo_t) == 0x52C);
struct cgs_t
{
int viewX;
int viewY;
int viewWidth;
int viewHeight;
float viewAspect;
int serverCommandSequence;
int processedSnapshotNum;
int localServer;
char gametype[32];
char szHostName[256];
bool hardcore;
int maxclients;
int privateClients;
char mapname[64];
int gameEndTime;
int voteTime;
int voteYes;
int voteNo;
char voteString[256];
XModel* gameModels[512];
FxEffectDef* smokeGrenadeFx;
shellshock_parms_t holdBreathParams;
char teamChatMsgs[8][160];
int teamChatMsgTimes[8];
int teamChatPos;
int teamLastChatPos;
float compassWidth;
float compassHeight;
float compassY;
clientInfo_t corpseinfo[8];
bool entUpdateToggleContextKey;
XAnim_s* helicopterAnims;
};
static_assert(sizeof(cgs_t) == 0x3BA4);
struct ConversionArguments
{
int argCount;
const char* args[9];
};
enum TraceHitType
{
TRACE_HITTYPE_NONE = 0,
TRACE_HITTYPE_ENTITY = 1,
TRACE_HITTYPE_DYNENT_MODEL = 2,
TRACE_HITTYPE_DYNENT_BRUSH = 3,
TRACE_HITTYPE_GLASS = 4
};
struct trace_t
{
float fraction;
float normal[3];
int surfaceFlags;
int contents;
const char* material;
TraceHitType hitType;
unsigned __int16 hitId;
unsigned __int16 modelIndex;
unsigned __int16 partName;
unsigned __int16 partGroup;
bool allsolid;
bool startsolid;
bool walkable;
};
static_assert(sizeof(trace_t) == 0x2C);
struct pmove_s
{
playerState_s* ps;
usercmd_s cmd;
usercmd_s oldcmd;
int tracemask; // 84
int numtouch;
int touchents[32];
Bounds bounds; // 220
float xyspeed;
int proneChange;
float maxSprintTimeMultiplier;
bool mantleStarted;
float mantleEndPos[3];
int mantleDuration;
int viewChangeTime;
float viewChange;
float fTorsoPitch;
float fWaistPitch;
unsigned char handler;
};
static_assert(sizeof(pmove_s) == 296);
struct pml_t
{
float forward[3];
float right[3];
float up[3];
float frametime;
int msec;
int walking;
int groundPlane;
int almostGroundPlane;
trace_t groundTrace;
float impactSpeed;
float previous_origin[3];
float previous_velocity[3];
int holdrand;
};
static_assert(sizeof(pml_t) == 0x84);
enum EffectiveStance
{
PM_EFF_STANCE_DEFAULT = 0,
PM_EFF_STANCE_PRONE = 1,
PM_EFF_STANCE_DUCKED = 2,
PM_EFF_STANCE_LASTSTANDCRAWL = 3,
PM_EFF_STANCE_COUNT = 4
};
struct TempPriority
{
void* threadHandle;
int oldPriority;
};
struct FastCriticalSection
{
volatile long readCount;
volatile long writeCount;
TempPriority tempPriority;
};
struct trigger_info_t
{
unsigned __int16 entnum;
unsigned __int16 otherEntnum;
int useCount;
int otherUseCount;
};
struct com_parse_mark_t
{
int lines;
const char* text;
int ungetToken;
int backup_lines;
const char* backup_text;
};
struct cached_tag_mat_t
{
int time;
int entnum;
unsigned __int16 name;
float tagMat[4][3];
};
struct Turret
{
bool inuse;
int flags;
int fireTime;
float arcmin[2];
float arcmax[2];
float dropPitch;
int stance;
int prevStance;
int fireSndDelay;
float userOrigin[3];
float playerSpread;
int state;
EntHandle target;
float targetOffset[3];
EntHandle manualTarget;
float manualTargetOffset[3];
int targetTime;
int stateChangeTime;
int modeChangeTime;
float maxRangeSquared;
int prevTargetIndex;
team_t eTeam;
int convergenceTime[2];
float targetPos[3];
float missOffsetNormalized[3];
float scanSpeed;
float scanDecelYaw;
int scanPauseTime;
bool triggerDown;
float heatLevel;
int heatPenaltyEndTime;
float barrelRollRate;
int autoRotationStopDelay;
int lastAutoRotationRequestTime;
unsigned __int8 fireSnd;
unsigned __int8 fireSndPlayer;
unsigned __int8 stopSnd;
unsigned __int8 stopSndPlayer;
unsigned __int8 scanSnd;
};
static_assert(sizeof(Turret) == 0xC4);
struct level_locals_t
{
gclient_s* clients;
gentity_s* gentities;
int num_entities;
gentity_s* firstFreeEnt;
gentity_s* lastFreeEnt;
Turret* turrets;
int logFile;
int initializing;
int clientIsSpawning;
objective_t objectives[32];
int maxclients;
int framenum;
int time;
int previousTime;
int frametime;
int startTime;
int teamScores[4];
int lastTeammateHealthTime;
int bUpdateScoresForIntermission;
bool teamHasRadar[4];
bool teamRadarBlocked[4];
int manualNameChange;
int numConnectedClients;
int sortedClients[18];
char voteString[1024];
char voteDisplayString[1024];
int voteTime;
int voteExecuteTime;
int voteYes;
int voteNo;
int numVotingClients;
SpawnVar spawnVar;
int savepersist;
EntHandle droppedWeaponCue[32];
float fFogOpaqueDist;
float fFogOpaqueDistSqrd;
int currentPlayerClone;
trigger_info_t pendingTriggerList[256];
trigger_info_t currentTriggerList[256];
int pendingTriggerListSize;
int currentTriggerListSize;
int finished;
int bPlayerIgnoreRadiusDamage;
int bPlayerIgnoreRadiusDamageLatched;
int registerWeapons;
int bRegisterItems;
int currentEntityThink;
void* openScriptIOFileHandles[1];
char* openScriptIOFileBuffers[1];
com_parse_mark_t currentScriptIOLineMark[1];
cached_tag_mat_t cachedTagMat;
conChannel_t scriptPrintChannel;
float compassMapUpperLeft[2];
float compassMapWorldSize[2];
float compassNorth[2];
void* vehicles;
int hudElemLastAssignedSoundID;
};
static_assert(sizeof(level_locals_t) == 0x2F78);
enum ScreenPlacementMode
{
SCRMODE_FULL,
SCRMODE_DISPLAY,
SCRMODE_INVALID,
SCRMODE_COUNT,
};
struct WinMouseVars_t
{
int oldButtonState;
tagPOINT oldPos;
bool mouseActive;
bool mouseInitialized;
};
static_assert(sizeof(WinMouseVars_t) == 0x10);
struct DeferredMsg
{
netadr_t addr;
unsigned char data[1400];
int datalen;
};
static_assert(sizeof(DeferredMsg) == 0x590);
struct DeferredQueue
{
DeferredMsg msgs[16];
volatile long get;
volatile long send;
};
static_assert(sizeof(DeferredQueue) == 0x5908);
struct GamerSettingCommonConfig
{
float viewSensitivity;
float snd_volume;
float blacklevel;
float gpadButtonLStickDeflect;
float gpadButtonRStickDeflect;
float safearea_adjusted_horizontal;
float safearea_adjusted_vertical;
int playTimeSP;
int playTimeMP;
int playTimeSO;
int percentCompleteSP;
int percentCompleteMP;
int percentCompleteSO;
float gamma;
bool hasEverPlayed_MainMenu;
bool hasEverPlayed_SP;
bool hasEverPlayed_SO;
bool hasEverPlayed_MP;
bool invertPitch;
bool autoAim;
bool delicateFlower;
char gpadButtonsConfig[32];
char gpadSticksConfig[32];
};
struct KeyPairStringData
{
short index;
short maxSize;
};
union KeyPairDataUnion
{
char byteVal;
bool boolVal;
short shortVal;
int intVal;
float floatVal;
KeyPairStringData stringData;
};
struct GamerSettingKeyPair
{
char type;
char unused[3];
KeyPairDataUnion u;
};
struct GamerSettingExeConfig
{
int playlist;
bool mapPrefs[16];
char clanPrefix[5];
};
struct GamerSettingState
{
bool isProfileLoggedIn;
bool errorOnRead;
GamerSettingCommonConfig commonConfig;
GamerSettingKeyPair commonKeyPairs[50];
char commonKeyPairsStringPool[512];
GamerSettingExeConfig exeConfig;
GamerSettingKeyPair exeKeyPairs[50];
char exeKeyPairsStringPool[512];
};
static_assert(sizeof(GamerSettingState) == 0x7C0);
struct SessionStaticData
{
char* sessionName;
bool registerUsersWithVoice;
};
enum IWNetServerSessionStatus
{
SESSION_ONCLIENTONLY = 0x0,
SESSION_BEINGCREATED = 0x1,
SESSION_CREATED = 0x2,
SESSION_BEINGDELETED = 0x3,
};
struct IWNetServerInfoAboutPlayer
{
bool active;
__int64 uid;
char skill;
char teamIndex;
int mapPackFlags;
};
struct IWNetSessionStatus
{
IWNetServerSessionStatus status;
int sessionId;
int lastHeartbeatSent;
bool needsUpdate;
bool updatingPlayers;
int newPlayerCount;
IWNetServerInfoAboutPlayer pendingServerInfoForPlayers[18];
};
struct XSESSION_INFO
{
XNKID sessionID;
XNADDR hostAddress;
XNKEY keyExchangeKey;
};
struct ClientInfo
{
bool registered;
bool voiceRegistered;
unsigned __int64 xuid;
int natType;
netadr_t addr;
int voiceConnectivityBits;
int lastConnectivityTestTime;
bool muted;
bool privateSlot;
};
struct NomineeInfo
{
int upload;
int NAT;
bool onLSP;
int connectivity;
int cpuSpeed;
int avgPing;
};
struct RegisteredUser
{
bool active;
unsigned __int64 xuid;
};
struct SessionDynamicData
{
bool sessionHandle;
IWNetSessionStatus iwnetServerSessionStatus;
XSESSION_INFO sessionInfo;
bool keysGenerated;
bool sessionStartCalled;
unsigned __int64 sessionNonce;
int privateSlots;
int publicSlots;
int flags;
bool qosListenEnabled;
ClientInfo users[18];
int voiceConnectivityBits;
int sessionCreateController;
int sessionDeleteTime;
RegisteredUser internalRegisteredUsers[18];
};
struct SessionData
{
SessionStaticData staticData;
SessionDynamicData dyn;
};
struct BestHostData
{
int nominee;
NomineeInfo info;
int lastHeardFrom;
int lastSentTo;
};
struct BandwidthTestPerClientData
{
int bytesReceived;
};
struct BandwidthTestData
{
int testIndex;
int testClientNum;
int startTimeArbitrator;
int announceTime;
int winnerClientNum;
BandwidthTestPerClientData clientData[18];
char testClientName[32];
bool inProgress;
int startTime;
int roundsComplete;
bool receiving;
int receiveIndex;
int receiveStartTime;
int receiveBytes;
int resultsSendTime;
};
struct MigrateData
{
bool migrateActive;
bool weAreArbitrating;
int arbitratorClientNum;
int indexBits;
int startTime;
int timeoutDuration;
int lastBroadcastTime;
bool decidedOurNominee;
BestHostData bestHost;
int expectedNewHost;
BandwidthTestData bandwidthTestData;
};
struct QoSData
{
float percent;
};
struct PartyInfo
{
bool active;
XSESSION_INFO info;
int occupiedPublicSlots;
int occupiedPrivateSlots;
int numPublicSlots;
int numPrivateSlots;
int pingBias;
int ping;
int upload;
int desirability;
};
struct PartyMember
{
char status;
bool headsetPresent;
char gamertag[32];
char clanAbbrev[5];
int qport;
char challenge[6];
int lastPacketTime;
int lastHeartbeatTime;
int lastPartyStateAck;
XNADDR xnaddr;
int availableMapPackFlags;
int ackedMembers;
XNKID privatePartyId;
int subpartyIndex;
int trueSkill;
int rank;
int prestige;
int team;
unsigned __int16 score;
int deaths;
bool vetoedMap;
unsigned int playerCardIcon;
unsigned int playerCardTitle;
unsigned int playerCardNameplate;
int voiceConnectivityBits;
bool invited;
int natType;
unsigned __int64 player;
bool migrateHeardFrom;
int migratePingTime;
int migratePing;
bool migrateNominated;
NomineeInfo migrateNomineeInfo;
};
struct SubpartyInfo
{
int members[18];
int count;
int skill;
int score;
int team;
};
struct PartyHostDetails
{
int partyListSlot;
netadr_t addr;
XSESSION_INFO sessionInfo;
int lastPacketTime;
int lastPacketSentTime;
int numPrivateSlots;
int numPublicSlots;
int hostNum;
bool accepted;
char challenge[6];
};
struct PartyHostData
{
int partyStateChangeTime;
int partyStateLastSendTime;
int expectedPlayers;
int vetoPassTime;
bool vetoPossible;
bool preloadingMap;
bool firstLobby;
bool migrateAfterRound;
bool stopAfterRound;
int partyCreationTime;
};
struct PartyData
{
SessionData* session;
SessionData* presenceSession;
SessionData* searchSession;
MigrateData migrateData;
QoSData qosData;
PartyInfo* partyList;
int partyListSize;
PartyMember partyMembers[18];
SubpartyInfo subparties[18];
int subpartyCount;
PartyHostDetails currentHost;
PartyHostDetails potentialHost;
PartyHostData hostData;
unsigned __int64 lobbySteamID;
int areWeHost;
int joiningAnotherParty;
int searchingForGames;
int inParty;
int party_systemActive;
bool veto;
int vetoTime;
int headsetPresent;
int headsetTime;
int clanAbbrevTime;
int rankTime;
int playerCardTime;
int uploadSentTime;
int voiceBitsTime;
int idTime;
int availableMapPackFlagsTime;
int searchStartTime;
int searchEndTime;
int joinAttemptForUI;
int lastMergeTime;
int mergeAttemptStartTime;
int originalPartiesInList;
int partyId;
int nextSessionSearchTime;
int mapPackFlags;
int lastPartyStateTime;
int gameStartTime;
int interEndTime;
int inactiveKeepaliveTime;
int hostTimeouts;
char lobbyFlags;
PartyData* partyToNotify;
bool registeredWithArbitration;
bool rejoining;
int partyStatePacketCount;
int partyStateLastMemberIndex;
int unfinishedPartServerTimes[2];
msg_t partyStatePartMsgs[2];
char partyStatePartMsgBufs[2][1400];
char lastEntries[8];
int currentEntry;
char axisWins;
char alliesWins;
};
static_assert(sizeof(PartyData) == 0x23D8);
struct MessageLine
{
int messageIndex;
int textBufPos;
int textBufSize;
int typingStartTime;
int lastTypingSoundTime;
int flags;
};
struct Message
{
int startTime;
int endTime;
};
struct MessageWindow
{
MessageLine* lines;
Message* messages;
char* circularTextBuffer;
int textBufSize;
int lineCount;
int padding;
int scrollTime;
int fadeIn;
int fadeOut;
int textBufPos;
int firstLineIndex;
int activeLineCount;
int messageIndex;
};
struct MessageBuffer
{
char gamemsgText[4][2048];
MessageWindow gamemsgWindows[4];
MessageLine gamemsgLines[4][12];
Message gamemsgMessages[4][12];
char miniconText[4096];
MessageWindow miniconWindow;
MessageLine miniconLines[100];
Message miniconMessages[100];
char errorText[1024];
MessageWindow errorWindow;
MessageLine errorLines[5];
Message errorMessages[5];
};
struct Console
{
MessageWindow consoleWindow;
MessageLine consoleLines[1024];
Message consoleMessages[1024];
char consoleText[65536];
char textTempLine[512];
unsigned int lineOffset;
int displayLineOffset;
int prevChannel;
bool outputVisible;
int fontHeight;
int visibleLineCount;
int visiblePixelWidth;
float screenMin[2];
float screenMax[2];
MessageBuffer messageBuffer[1];
float color[4];
};
enum clientMigState_t
{
CMSTATE_INACTIVE = 0x0,
CMSTATE_OLDHOSTLEAVING = 0x1,
CMSTATE_LIMBO = 0x2,
CMSTATE_NEWHOSTCONNECT = 0x3,
CMSTATE_COUNT = 0x4,
};
enum MigrationVerboseState
{
MVSTATE_INACTIVE = 0x0,
MVSTATE_WAITING = 0x1,
MVSTATE_RATING = 0x2,
MVSTATE_SENDING = 0x3,
MVSTATE_MIGRATING = 0x4,
MVSTATE_COUNT = 0x5,
};
enum connstate_t
{
CA_DISCONNECTED = 0x0,
CA_CINEMATIC = 0x1,
CA_LOGO = 0x2,
CA_CONNECTING = 0x3,
CA_CHALLENGING = 0x4,
CA_CONNECTED = 0x5,
CA_SENDINGSTATS = 0x6,
CA_LOADING = 0x7,
CA_PRIMED = 0x8,
CA_ACTIVE = 0x9,
};
struct MigrationPers
{
int time;
bool stanceHeld;
StanceState stance;
StanceState stancePosition;
int stanceTime;
int cgameUserCmdWeapon;
int cgameUserCmdOffHandIndex;
unsigned int weaponSelect;
int weaponSelectTime;
int weaponForcedSelectTime;
unsigned int weaponLatestPrimaryIdx;
unsigned __int16 primaryWeaponForAlt[1400];
int holdBreathTime;
int holdBreathInTime;
int holdBreathDelay;
float holdBreathFrac;
};
struct clientUIActive_t
{
bool active;
bool isRunning;
bool cgameInitialized;
bool cgameInitCalled;
unsigned char __pad0[0x9AC];
int keyCatchers;
bool displayHUDWithKeycatchUI;
connstate_t connectionState;
unsigned char __pad1[0x138];
};
static_assert(sizeof(clientUIActive_t) == 0xAF4);
enum msgLocErrType_t
{
LOCMSG_SAFE = 0x0,
LOCMSG_NOERR = 0x1,
};
struct ImageList
{
unsigned int count;
GfxImage* image[8192];
};
enum CriticalSection
{
CRITSECT_CONSOLE,
CRITSECT_DEBUG_SOCKET,
CRITSECT_COM_ERROR,
CRITSECT_STATMON,
CRITSECT_ALLOC_MARK,
CRITSECT_GENERATE_MARK,
CRITSECT_STREAMED_SOUND,
CRITSECT_FAKELAG,
CRITSECT_CLIENT_MESSAGE,
CRITSECT_CLIENT_CMD,
CRITSECT_DOBJ_ALLOC,
CRITSECT_START_SERVER,
CRITSECT_XANIM_ALLOC,
CRITSECT_KEY_BINDINGS,
CRITSECT_FX_VIS,
CRITSECT_SERVER_MESSAGE,
CRITSECT_SCRIPT_STRING,
CRITSECT_RD_BUFFER,
CRITSECT_SYS_EVENT_QUEUE,
CRITSECT_GPU_FENCE,
CRITSECT_FATAL_ERROR,
CRITSECT_MISSING_ASSET,
CRITSECT_PHYSICS,
CRITSECT_LIVE,
CRITSECT_AUDIO_PHYSICS,
CRITSECT_LSP,
CRITSECT_CINEMATIC_UPDATE,
CRITSECT_CINEMATIC_TARGET_CHANGE_COMMAND,
CRITSECT_CINEMATIC_TARGET_CHANGE_BACKEND,
CRITSECT_CINEMATIC_STATUS,
CRITSECT_CINEMATIC_SERVER,
CRITSECT_FX_ALLOC,
CRITSECT_NETTHREAD_OVERRIDE,
CRITSECT_CBUF,
CRITSECT_STATS_WRITE,
CRITSECT_CG_GLASS,
CRITSECT_SERVER_DEMO_COMPRESS,
CRITSECT_COM_SET_ERROR_MSG,
CRITSECT_SOUND_UPDATE,
CRITSECT_RESET_MODEL_LIGHTING,
CRITSECT_COUNT,
}; // May be incorrect
struct ClientVoicePacket_t
{
char data[256];
int dataSize;
};
struct voiceCommunication_t
{
ClientVoicePacket_t voicePackets[10];
int voicePacketCount;
int voicePacketLastTransmit;
int packetsPerSec;
int packetsPerSecStart;
};
struct VoicePacket_t
{
char talker;
char data[256];
int dataSize;
};
struct uiInfo_s
{
UiContext uiDC;
int myTeamCount;
int playerRefresh;
int playerIndex;
int timeIndex;
int previousTimes[4];
uiMenuCommand_t currentMenuType;
bool allowScriptMenuResponse;
char findPlayerName[1024];
char foundPlayerServerAddresses[16][64];
char foundPlayerServerNames[16][64];
int numFoundPlayerServers;
int nextFindPlayerRefresh;
unsigned int mailUpdateTime;
char mailIndices[64];
int mailCount;
int selectedMail;
};
enum entityType_t
{
ET_GENERAL = 0x0,
ET_PLAYER = 0x1,
ET_PLAYER_CORPSE = 0x2,
ET_ITEM = 0x3,
ET_MISSILE = 0x4,
ET_INVISIBLE = 0x5,
ET_SCRIPTMOVER = 0x6,
ET_SOUND_BLEND = 0x7,
ET_FX = 0x8,
ET_LOOP_FX = 0x9,
ET_PRIMARY_LIGHT = 0xA,
ET_TURRET = 0xB,
ET_HELICOPTER = 0xC,
ET_PLANE = 0xD,
ET_VEHICLE = 0xE,
ET_VEHICLE_COLLMAP = 0xF,
ET_VEHICLE_CORPSE = 0x10,
ET_VEHICLE_SPAWNER = 0x11,
ET_EVENTS = 0x12,
};
struct GfxBackEndPrimitiveData
{
int hasSunDirChanged;
};
struct GfxFog
{
int startTime;
int finishTime;
GfxColor color;
float fogStart;
float density;
float fogMaxOpacity;
bool sunFogEnabled;
GfxColor sunColor;
float sunDir[3];
float sunBeginFadeAngle;
float sunEndFadeAngle;
float sunFogScale;
};
struct GfxCmdHeader
{
unsigned __int16 id;
unsigned __int16 byteCount;
};
struct GfxCmdArray
{
char* cmds;
int usedTotal;
int usedCritical;
GfxCmdHeader* lastCmd;
};
struct GfxCmdBuf
{
IDirect3DDevice9* device;
};
struct GfxDrawCallOutput
{
GfxCmdBuf cmdBuf;
};
struct __declspec(align(4)) GfxDebugPoly
{
float color[4];
int firstVert;
int vertCount;
bool outline;
};
struct GfxDebugPlume
{
float origin[3];
float color[4];
int score;
int startTime;
int duration;
};
struct DebugGlobals
{
float(*verts)[3];
int vertCount;
int vertLimit;
GfxDebugPoly* polys;
int polyCount;
int polyLimit;
trDebugString_t* strings;
int stringCount;
int stringLimit;
trDebugString_t* externStrings;
int externStringCount;
int externMaxStringCount;
trDebugLine_t* lines;
int lineCount;
int lineLimit;
trDebugLine_t* externLines;
int externLineCount;
int externMaxLineCount;
GfxDebugPlume* plumes;
int plumeCount;
int plumeLimit;
};
struct GfxSunShadowProjection
{
float switchPartition[4];
float shadowmapScale[4];
};
struct GfxSunShadowOverlaySetup
{
float shadowOrg[2];
float frustumShadowRays[4][2];
unsigned int clipPlaneCount[2];
float clipPlanes[2][8][3];
};
struct GfxViewportParms
{
GfxViewport viewport;
GfxViewParms viewParms;
};
struct GfxSunShadowPartition
{
GfxViewportParms viewportParms;
};
struct GfxSunShadow
{
GfxMatrix lookupMatrix;
GfxSunShadowProjection sunProj;
GfxSunShadowPartition partition[2];
GfxSunShadowOverlaySetup overlaySetup;
};
struct GfxSpotShadowSceneLight
{
GfxMatrix lookupMatrix;
float fade;
GfxImage* image;
};
struct GfxDrawSurfIter
{
GfxDrawSurf* current;
GfxDrawSurf* end;
GfxDrawSurf* mark;
};
struct GfxCodeSurfIter
{
GfxCodeSurf* current;
GfxCodeSurf* end;
GfxCodeSurf* mark;
};
struct GfxMarkSurfIter
{
GfxMarkSurf* current;
GfxMarkSurf* end;
GfxMarkSurf* mark;
};
struct GfxGlassSurfIter
{
GfxGlassSurf* current;
GfxGlassSurf* end;
GfxGlassSurf* mark;
};
struct GfxCloudSurfIter
{
GfxCloudSurf* current;
GfxCloudSurf* end;
GfxCloudSurf* mark;
};
struct GfxSparkSurfIter
{
GfxSparkSurf* current;
GfxSparkSurf* end;
GfxSparkSurf* mark;
};
struct GfxSModelSurfIter
{
const char* visData;
unsigned __int16* current;
const char* end;
const char* mark;
};
struct GfxBspSurfIter
{
const unsigned __int16* current;
const unsigned __int16* end;
const unsigned __int16* mark;
};
struct GfxBspLightMapSurfIter : GfxBspSurfIter
{
};
struct GfxPreTessSurfIter
{
GfxPreTessSurf* current;
GfxPreTessSurf* end;
GfxPreTessSurf* mark;
};
struct GfxSunShadowClip
{
unsigned int planeCount[2];
unsigned int frustumPlaneCount[2];
DpvsPlane planes[2][10];
};
struct GfxSModelCachedSurfIter : GfxSModelSurfIter
{
};
struct GfxSModelRigidSurfIter : GfxSModelSurfIter
{
};
struct GfxSModelSkinnedSurfIter : GfxSModelSurfIter
{
};
struct GfxSModelPreTessSurfIter : GfxSModelSurfIter
{
};
struct GfxCmdRingBuf
{
struct GfxDrawListIter* drawListIter;
unsigned int memoryPos;
unsigned int maxMemoryPos;
char* memoryPool;
unsigned int fencePosIndex;
volatile unsigned int fenceIndex;
unsigned int availIndex;
unsigned int availMemoryPos;
unsigned int reserveMemoryPos0;
unsigned int reserveMemoryPos1;
unsigned int fencePos[64];
unsigned int fence[64];
unsigned int checkMemoryPos;
};
struct GfxDrawListIter
{
GfxBspSurfIter bspSurfIter;
GfxPreTessSurfIter bspPreTessSurfIter;
GfxSModelRigidSurfIter smodelRigidSurfIter;
GfxSModelSkinnedSurfIter smodelSkinnedSurfIter;
GfxSModelCachedSurfIter smodelCachedSurfIter;
GfxSModelPreTessSurfIter smodelPreTessSurfIter;
GfxDrawSurfIter drawSurfIter;
GfxCodeSurfIter codeSurfIter;
GfxMarkSurfIter markSurfIter;
GfxGlassSurfIter glassSurfIter;
GfxCloudSurfIter cloudSurfIter;
GfxSparkSurfIter sparkSurfIter;
};
union GfxSurfsIteratorSortKey
{
struct
{
unsigned int spliceIndex;
unsigned int sortKey;
} fields;
unsigned __int64 packed;
};
struct GfxSpotShadow
{
GfxSpotShadowSceneLight sceneLight;
GfxViewportParms viewportParms;
char sceneLightIndex;
char pad[3];
GfxLight* light;
GfxRenderTargetId renderTargetId;
float pixelAdjust[4];
int clearScreen;
GfxMeshData* clearMesh;
};
struct GfxDrawListArgs
{
GfxCmdBufContext context;
GfxDrawListInfo* listInfo;
};
struct GfxSurfsIterator
{
GfxSurfsIteratorSortKey key;
unsigned int(__cdecl* GetSortKeyCallback)(GfxDrawListIter*);
bool(__cdecl* RenderDrawGroupCallback)(GfxDrawListArgs*, GfxDrawListIter*);
};
struct GfxSurfsIterGroup
{
unsigned int iteratorBegin;
unsigned int iteratorCount;
GfxDrawListIter drawListIter;
GfxSurfsIterator iteratorPool[11];
};
struct GfxSpliceSurfs
{
unsigned int iteratorBegin;
unsigned int iteratorCount;
unsigned int spliceCount;
GfxDrawListIter drawListIter[5];
GfxViewport scissorViewport[5];
int isSceneScissorViewport[5];
GfxDrawListInfo* dynLightDrawListInfo[5];
GfxSurfsIterator iteratorPool[55];
};
struct GfxStaticModelDrawStream
{
GfxSModelSurfIter* smodelSurfIter;
GfxSModelSurfHeader smodelSurfHeader;
const char* smodelSurfVisData;
GfxTexture* reflectionProbeTexture;
unsigned int customSamplerFlags;
XSurface* localSurf;
unsigned int smodelCount;
const unsigned __int16* smodelList;
};
struct FxSparkMeshData
{
unsigned int triCount;
unsigned __int16* indices;
unsigned int baseVertex;
char pad[4];
GfxParticleCloud cloud;
};
struct GfxBackEndData
{
char sceneLightTechType[13][256];
GfxSparkSurf sparkSurfs[64];
GfxViewParms viewParms[4];
GfxMeshData mesh[5];
int localClientNum;
GfxBackEndPrimitiveData prim;
volatile int bspSurfDataUsed;
volatile int smodelSurfDataUsed;
volatile int smodelSurfVisDataUsed;
unsigned int sceneLightHasShadowMap[8];
int drawSurfCount;
volatile int surfPos;
volatile int gfxEntCount;
unsigned int codeSurfCount[2];
unsigned int codeSurfArgsCount[2];
volatile int cloudDataCount;
unsigned int glassSurfCount;
unsigned int markSurfCount;
volatile int sparkSurfCount;
GfxVertexBufferState* skinnedCacheVb;
unsigned int endFence;
unsigned int endFrameFence;
int viewParmCount;
GfxFog fogSettings;
GfxCmdArray* commands;
unsigned int viewInfoIndex;
unsigned int viewInfoCount;
GfxViewInfo* viewInfo;
const void* cmds;
float sunShadowLightDir[3];
int hasApproxSunDirChanged;
int cmdBufValid[18];
GfxDrawCallOutput drawOutput[18];
DebugGlobals debugGlobals;
unsigned int imageRendered[112];
unsigned int drawType;
GfxDrawList dynLightDrawList[4];
unsigned int dynLightCount;
GfxDrawList* emissiveSpotShadowDrawList[1];
unsigned int emissiveSpotLightCount;
GfxSunShadow sunShadow;
unsigned int spotShadowCount;
GfxSpotShadow spotShadows[4];
GfxSurfsIterGroup prepassIterGroup[5];
GfxSpliceSurfs litTransSpliceSurfs;
char surfsBuffer[131072];
float codeSurfArgs[288][4];
GfxCodeSurf codeEmissiveSurfs[2048];
GfxCodeSurf codeTransSurfs[640];
GfxMarkSurf markSurfs[1536];
GfxGlassSurf glassSurfs[768];
unsigned __int16 bspSurfData[35328];
char smodelSurfData[35840];
char smodelSurfVisData[45056];
GfxCloudSurf cloudSurfs[256];
GfxEntity gfxEnts[128];
FxSparkMeshData sparkData[64];
GfxParticleCloud cloudData[256];
GfxDrawSurf drawSurfs[16384];
GfxLight sceneLights[253];
};
enum
{
THREAD_VALUE_PROF_STACK = 0x0,
THREAD_VALUE_VA = 0x1,
THREAD_VALUE_COM_ERROR = 0x2,
THREAD_VALUE_TRACE = 0x3,
THREAD_VALUE_COUNT = 0x4,
};
struct va_info_t
{
char va_string[2][1024];
int index;
};
struct ProfileAtom
{
unsigned int value[1];
};
volatile struct ProfileReadable
{
unsigned int hits;
ProfileAtom total;
ProfileAtom self;
};
struct ProfileWritable
{
int nesting;
unsigned int hits;
ProfileAtom start[3];
ProfileAtom total;
ProfileAtom child;
};
struct profile_t
{
ProfileWritable write;
ProfileReadable read;
};
struct profile_guard_t
{
int id;
profile_t** ppStack;
};
struct ProfileStack
{
profile_t prof_root;
profile_t* prof_pStack[16384];
profile_t** prof_ppStack;
profile_t prof_array[443];
ProfileAtom prof_overhead_internal;
ProfileAtom prof_overhead_external;
profile_guard_t prof_guardstack[32];
int prof_guardpos;
float prof_timescale;
};
struct bgs_t
{
unsigned char __pad0[0x82950];
};
static_assert(sizeof(bgs_t) == 0x82950);
struct ZipInfo
{
int offsetCount;
int offsets[128];
int size;
char* buffer;
};
struct Sys_File
{
HANDLE handle;
};
struct FxCamera
{
float origin[3];
volatile int isValid;
float frustum[6][4];
float axis[3][3];
unsigned int frustumPlaneCount;
float viewOffset[3];
bool thermal;
unsigned int pad[2];
};
struct r_double_index_t
{
unsigned __int16 value[2];
};
struct FxSpriteInfo
{
r_double_index_t* indices;
unsigned int indexCount;
Material* material;
const char* name;
};
struct FxVisBlocker
{
float origin[3];
unsigned __int16 radius;
unsigned __int16 visibility;
};
struct FxVisState
{
FxVisBlocker blocker[256];
volatile int blockerCount;
unsigned int pad[3];
};
struct FxElem
{
char defIndex;
char sequence;
char atRestFraction;
char emitResidual;
unsigned __int16 nextElemHandleInEffect;
unsigned __int16 prevElemHandleInEffect;
int msecBegin;
float baseVel[3];
union
{
int physObjId;
float origin[3];
} ___u8;
union
{
unsigned __int16 lightingHandle;
unsigned __int16 sparkCloudHandle;
unsigned __int16 sparkFountainHandle;
} u;
};
struct FxSystem
{
FxCamera camera;
FxCamera cameraPrev;
FxSpriteInfo sprite;
FxEffect* effects;
FxElem* elems;
void* trails;
void* trailElems;
void* bolts;
void* sparkClouds;
void* sparkFountains;
void* sparkFountainClusters;
unsigned __int16* deferredElems;
volatile int firstFreeElem;
volatile int firstFreeTrailElem;
volatile int firstFreeTrail;
volatile int firstFreeBolt;
volatile int firstFreeSparkCloud;
volatile int firstFreeSparkFountain;
volatile int firstFreeSparkFountainCluster;
volatile int deferredElemCount;
volatile int activeElemCount;
volatile int activeTrailElemCount;
volatile int activeTrailCount;
volatile int activeBoltCount;
volatile int activeSparkCloudCount;
volatile int activeSparkFountainCount;
volatile int activeSparkFountainClusterCount;
volatile int gfxCloudCount;
FxVisState* visState;
FxVisState* visStateBufferRead;
FxVisState* visStateBufferWrite;
volatile int firstActiveEffect;
volatile int firstNewEffect;
volatile int firstFreeEffect;
unsigned __int16 allEffectHandles[1024];
volatile int activeSpotLightEffectCount;
volatile int activeSpotLightElemCount;
unsigned __int16 activeSpotLightEffectHandle;
unsigned __int16 activeSpotLightElemHandle;
__int16 activeSpotLightBoltDobj;
volatile int iteratorCount;
int msecNow;
volatile int msecDraw;
int frameCount;
bool isInitialized;
bool needsGarbageCollection;
bool isArchiving;
char localClientNum;
unsigned int restartList[32];
FxEffect** restartEffectsList;
unsigned int restartCount;
unsigned int pad1[14];
};
struct ClientEntSound
{
float origin[3];
snd_alias_list_t* aliasList;
};
struct nodetype
{
nodetype* left;
nodetype* right;
nodetype* parent;
int weight;
int symbol;
};
struct huff_t
{
int blocNode;
int blocPtrs;
nodetype* tree;
nodetype* loc[257];
nodetype** freelist;
nodetype nodeList[768];
nodetype* nodePtrs[768];
};
struct huffman_t
{
huff_t compressDecompress;
};
#pragma endregion
#ifndef IDA
}
#endif