Try to fix glow and chams crashes
This commit is contained in:
parent
625316c88e
commit
5eccd108d5
@ -16,15 +16,22 @@ namespace effect_chams
|
|||||||
|
|
||||||
class EffectChams : public IScreenSpaceEffect
|
class EffectChams : public IScreenSpaceEffect
|
||||||
{
|
{
|
||||||
|
std::vector<KeyValues *> chams_keyvalues;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void Init();
|
virtual void Init();
|
||||||
inline virtual void Shutdown()
|
inline virtual void Shutdown()
|
||||||
{
|
{
|
||||||
mat_unlit.Shutdown();
|
if (init)
|
||||||
mat_unlit_z.Shutdown();
|
{
|
||||||
mat_lit.Shutdown();
|
mat_unlit.Shutdown();
|
||||||
mat_lit_z.Shutdown();
|
mat_unlit_z.Shutdown();
|
||||||
init = false;
|
mat_lit.Shutdown();
|
||||||
|
mat_lit_z.Shutdown();
|
||||||
|
for (auto kv : chams_keyvalues)
|
||||||
|
kv->deleteThis();
|
||||||
|
init = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline virtual void SetParameters(KeyValues *params)
|
inline virtual void SetParameters(KeyValues *params)
|
||||||
|
@ -15,17 +15,24 @@ namespace effect_glow
|
|||||||
|
|
||||||
class EffectGlow : public IScreenSpaceEffect
|
class EffectGlow : public IScreenSpaceEffect
|
||||||
{
|
{
|
||||||
|
std::vector<KeyValues *> glow_keyvalues;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void Init();
|
virtual void Init();
|
||||||
inline virtual void Shutdown()
|
inline virtual void Shutdown()
|
||||||
{
|
{
|
||||||
mat_unlit.Shutdown();
|
if (init)
|
||||||
mat_unlit_z.Shutdown();
|
{
|
||||||
mat_blit.Shutdown();
|
mat_unlit.Shutdown();
|
||||||
mat_unlit.Shutdown();
|
mat_unlit_z.Shutdown();
|
||||||
mat_unlit_z.Shutdown();
|
mat_blit.Shutdown();
|
||||||
mat_blur_x.Shutdown();
|
mat_unlit.Shutdown();
|
||||||
mat_blur_y.Shutdown();
|
mat_unlit_z.Shutdown();
|
||||||
|
mat_blur_x.Shutdown();
|
||||||
|
mat_blur_y.Shutdown();
|
||||||
|
for (auto kv : glow_keyvalues)
|
||||||
|
kv->deleteThis();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline virtual void SetParameters(KeyValues *params)
|
inline virtual void SetParameters(KeyValues *params)
|
||||||
|
@ -35,6 +35,7 @@ CatCommand fix_black_chams("fix_black_chams", "Fix Black Chams", []() {
|
|||||||
effect_chams::g_EffectChams.Shutdown();
|
effect_chams::g_EffectChams.Shutdown();
|
||||||
effect_chams::g_EffectChams.Init();
|
effect_chams::g_EffectChams.Init();
|
||||||
});
|
});
|
||||||
|
|
||||||
void EffectChams::Init()
|
void EffectChams::Init()
|
||||||
{
|
{
|
||||||
logging::Info("Init EffectChams...");
|
logging::Info("Init EffectChams...");
|
||||||
@ -43,12 +44,14 @@ void EffectChams::Init()
|
|||||||
kv->SetString("$basetexture", "vgui/white_additive");
|
kv->SetString("$basetexture", "vgui/white_additive");
|
||||||
kv->SetInt("$ignorez", 0);
|
kv->SetInt("$ignorez", 0);
|
||||||
mat_unlit.Init("__cathook_echams_unlit", kv);
|
mat_unlit.Init("__cathook_echams_unlit", kv);
|
||||||
|
chams_keyvalues.push_back(kv);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
KeyValues *kv = new KeyValues("UnlitGeneric");
|
KeyValues *kv = new KeyValues("UnlitGeneric");
|
||||||
kv->SetString("$basetexture", "vgui/white_additive");
|
kv->SetString("$basetexture", "vgui/white_additive");
|
||||||
kv->SetInt("$ignorez", 1);
|
kv->SetInt("$ignorez", 1);
|
||||||
mat_unlit_z.Init("__cathook_echams_unlit_z", kv);
|
mat_unlit_z.Init("__cathook_echams_unlit_z", kv);
|
||||||
|
chams_keyvalues.push_back(kv);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
KeyValues *kv = new KeyValues("VertexLitGeneric");
|
KeyValues *kv = new KeyValues("VertexLitGeneric");
|
||||||
@ -56,6 +59,7 @@ void EffectChams::Init()
|
|||||||
kv->SetInt("$ignorez", 0);
|
kv->SetInt("$ignorez", 0);
|
||||||
kv->SetInt("$halflambert", 1);
|
kv->SetInt("$halflambert", 1);
|
||||||
mat_lit.Init("__cathook_echams_lit", kv);
|
mat_lit.Init("__cathook_echams_lit", kv);
|
||||||
|
chams_keyvalues.push_back(kv);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
KeyValues *kv = new KeyValues("VertexLitGeneric");
|
KeyValues *kv = new KeyValues("VertexLitGeneric");
|
||||||
@ -63,6 +67,7 @@ void EffectChams::Init()
|
|||||||
kv->SetInt("$ignorez", 1);
|
kv->SetInt("$ignorez", 1);
|
||||||
kv->SetInt("$halflambert", 1);
|
kv->SetInt("$halflambert", 1);
|
||||||
mat_lit_z.Init("__cathook_echams_lit_z", kv);
|
mat_lit_z.Init("__cathook_echams_lit_z", kv);
|
||||||
|
chams_keyvalues.push_back(kv);
|
||||||
}
|
}
|
||||||
logging::Info("Init done!");
|
logging::Info("Init done!");
|
||||||
init = true;
|
init = true;
|
||||||
|
@ -135,12 +135,14 @@ void EffectGlow::Init()
|
|||||||
kv->SetString("$basetexture", "vgui/white_additive");
|
kv->SetString("$basetexture", "vgui/white_additive");
|
||||||
kv->SetInt("$ignorez", 0);
|
kv->SetInt("$ignorez", 0);
|
||||||
mat_unlit.Init("__cathook_glow_unlit", kv);
|
mat_unlit.Init("__cathook_glow_unlit", kv);
|
||||||
|
glow_keyvalues.push_back(kv);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
KeyValues *kv = new KeyValues("UnlitGeneric");
|
KeyValues *kv = new KeyValues("UnlitGeneric");
|
||||||
kv->SetString("$basetexture", "vgui/white_additive");
|
kv->SetString("$basetexture", "vgui/white_additive");
|
||||||
kv->SetInt("$ignorez", 1);
|
kv->SetInt("$ignorez", 1);
|
||||||
mat_unlit_z.Init("__cathook_glow_unlit_z", kv);
|
mat_unlit_z.Init("__cathook_glow_unlit_z", kv);
|
||||||
|
glow_keyvalues.push_back(kv);
|
||||||
}
|
}
|
||||||
// Initialize 2 buffers
|
// Initialize 2 buffers
|
||||||
GetBuffer(1);
|
GetBuffer(1);
|
||||||
@ -151,6 +153,7 @@ void EffectGlow::Init()
|
|||||||
kv->SetInt("$additive", 1);
|
kv->SetInt("$additive", 1);
|
||||||
mat_blit.Init("__cathook_glow_blit", TEXTURE_GROUP_CLIENT_EFFECTS, kv);
|
mat_blit.Init("__cathook_glow_blit", TEXTURE_GROUP_CLIENT_EFFECTS, kv);
|
||||||
mat_blit->Refresh();
|
mat_blit->Refresh();
|
||||||
|
glow_keyvalues.push_back(kv);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
KeyValues *kv = new KeyValues("BlurFilterX");
|
KeyValues *kv = new KeyValues("BlurFilterX");
|
||||||
@ -160,6 +163,7 @@ void EffectGlow::Init()
|
|||||||
kv->SetInt("$alphatest", 1);
|
kv->SetInt("$alphatest", 1);
|
||||||
mat_blur_x.Init("_cathook_blurx", kv);
|
mat_blur_x.Init("_cathook_blurx", kv);
|
||||||
mat_blur_x->Refresh();
|
mat_blur_x->Refresh();
|
||||||
|
glow_keyvalues.push_back(kv);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
KeyValues *kv = new KeyValues("BlurFilterY");
|
KeyValues *kv = new KeyValues("BlurFilterY");
|
||||||
@ -170,6 +174,7 @@ void EffectGlow::Init()
|
|||||||
kv->SetInt("$alphatest", 1);
|
kv->SetInt("$alphatest", 1);
|
||||||
mat_blur_y.Init("_cathook_blury", kv);
|
mat_blur_y.Init("_cathook_blury", kv);
|
||||||
mat_blur_y->Refresh();
|
mat_blur_y->Refresh();
|
||||||
|
glow_keyvalues.push_back(kv);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
SS_NeverSolid.m_bEnable = true;
|
SS_NeverSolid.m_bEnable = true;
|
||||||
|
Reference in New Issue
Block a user