#pragma once

bool autocvar_cl_respawn_ghosts_keepcolors;
int autocvar_cl_playerdetailreduction;
int autocvar_cl_modeldetailreduction;
float autocvar_cl_loddistance1 = 768;
float autocvar_cl_loddistance2 = 2048;
bool autocvar_cl_forceplayermodels;
bool autocvar_cl_forceplayercolors;
bool autocvar_cl_forceuniqueplayercolors;
string autocvar_cl_forcemyplayermodel;
int autocvar_cl_forcemyplayerskin;
int autocvar_cl_forcemyplayercolors;
int autocvar__cl_color;
int autocvar__cl_playerskin;
string autocvar__cl_playermodel;
float autocvar_cl_deathglow;
float autocvar_cl_deathglow_min = 0.5;
float autocvar_cl_jetpack_attenuation = 2;
float autocvar_r_hdr_glowintensity;

// FEATURE: EF_NODRAW workalike
const int EF_BRIGHTFIELD       = BIT(0);
const int EF_BRIGHTLIGHT       = BIT(2);
const int EF_DIMLIGHT          = BIT(3);
const int EF_DOUBLESIDED       = BIT(15);
const int EF_NOSELFSHADOW      = BIT(16);
const int EF_DYNAMICMODELLIGHT = BIT(17);
const int EF_RESTARTANIM_BIT   = BIT(20);
const int EF_TELEPORT_BIT      = BIT(21);

const int MF_ROCKET  =  BIT(0);  // leave a trail
const int MF_GRENADE =  BIT(1);  // leave a trail
const int MF_GIB     =  BIT(2);  // leave a trail
const int MF_ROTATE  =  BIT(3);  // rotate (bonus items)
const int MF_TRACER  =  BIT(4);  // green split trail
const int MF_ZOMGIB  =  BIT(5);  // small blood trail
const int MF_TRACER2 =  BIT(6);  // orange split trail
const int MF_TRACER3 =  BIT(7);  // purple trail

.int csqcmodel_effects;
.int csqcmodel_modelflags;
.int csqcmodel_traileffect;

.bool csqcmodel_isdead; // used by shownames and miscfunctions (entcs_IsDead) to know when a player is dead

.int isplayermodel;

.float death_time;

void CSQCModel_Effects_Apply(entity this);

void CSQCModel_LOD_Apply(entity this, bool isplayer);

void CSQCModel_Hook_PreDraw(entity this, bool isplayer);
