60 lines
2.3 KiB
C
60 lines
2.3 KiB
C
|
|
|||
|
void OverridematerialXQZ(IMaterial* mat, float r, float g, float b)
|
|||
|
{
|
|||
|
mat->SetMaterialVarFlag(IGNOREZ, true);
|
|||
|
mat->SetMaterialVarFlag(ZNEARER, true);
|
|||
|
mat->SetMaterialVarFlag(NOCULL, true);
|
|||
|
mat->SetMaterialVarFlag(NOFOG, true);
|
|||
|
mat->SetMaterialVarFlag(HALFLAMBERT, true);
|
|||
|
mat->ColorModulate(r / 255, g / 255, b / 255);
|
|||
|
pModelRender->ForcedMaterialOverride(mat);
|
|||
|
}
|
|||
|
|
|||
|
void Overridematerial(IMaterial* mat, float r, float g, float b)
|
|||
|
{
|
|||
|
mat->SetMaterialVarFlag(IGNOREZ, false);
|
|||
|
mat->SetMaterialVarFlag(ZNEARER, true);
|
|||
|
mat->SetMaterialVarFlag(NOCULL, true);
|
|||
|
mat->SetMaterialVarFlag(NOFOG, true);
|
|||
|
mat->SetMaterialVarFlag(HALFLAMBERT, true);
|
|||
|
mat->ColorModulate(r / 255, g / 255, b / 255);
|
|||
|
pModelRender->ForcedMaterialOverride(mat);
|
|||
|
}
|
|||
|
|
|||
|
typedef void(__thiscall *DrawModelExecuteFn)(IVModelRender*, void*, const ModelRenderInfo_t&, matrix3x4_t*);
|
|||
|
DrawModelExecuteFn draw_model_original = nullptr;
|
|||
|
|
|||
|
void __stdcall hkDrawModelExecute(void* state, const ModelRenderInfo_t &pInfo, matrix3x4_t *pCustomBoneToWorld)
|
|||
|
{
|
|||
|
static IMaterial* material = pMaterialSystem->FindMaterial("debug/debugambientcube", "Model textures");
|
|||
|
static IMaterial* vomitboomer = pMaterialSystem->FindMaterial(("particle/screenspaceboomervomit"), "Particle textures");
|
|||
|
|
|||
|
if (pInfo.pModel && pInfo.entity_index && material && vomitboomer)
|
|||
|
{
|
|||
|
const char *pszModelName = pModel->GetModelName(pInfo.pModel);
|
|||
|
CBaseEntity* pEntity = (CBaseEntity*)pEntList->GetClientEntity(pInfo.entity_index);
|
|||
|
|
|||
|
vomitboomer->SetMaterialVarFlag(NO_DRAW, gCvars.NOVOMIT);
|
|||
|
|
|||
|
if (gCvars.CHAMHAND && pszModelName && strstr(pszModelName, "models/weapons/arms/v_arms"))
|
|||
|
{
|
|||
|
Overridematerial(material, gCvars.espcolor[0], gCvars.espcolor[1], gCvars.espcolor[2]);
|
|||
|
}
|
|||
|
|
|||
|
if (gCvars.CHAMS && pEntity)
|
|||
|
{
|
|||
|
if (pEntity->GetTeamNum() == TEAM_ZOMBY && pEntity->GetGroup() && pEntity->ValidEntity())
|
|||
|
{
|
|||
|
if (gCvars.CHAMSXQZ)
|
|||
|
{
|
|||
|
OverridematerialXQZ(material, gCvars.espcolor[1], gCvars.espcolor[2], gCvars.espcolor[0]);
|
|||
|
draw_model_original(pModelRender, state, pInfo, pCustomBoneToWorld);
|
|||
|
}
|
|||
|
Overridematerial(material, gCvars.espcolor[0], gCvars.espcolor[1], gCvars.espcolor[2]);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
draw_model_original(pModelRender, state, pInfo, pCustomBoneToWorld);
|
|||
|
pModelRender->ForcedMaterialOverride(nullptr);
|
|||
|
}
|