diff options
author | F1F7Y <64418963+F1F7Y@users.noreply.github.com> | 2024-08-25 13:58:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-25 13:58:17 +0200 |
commit | 5aae42126a062f1d184aff1c8217ef50259ccc53 (patch) | |
tree | 7916afa1200f0df6d9e09057c6563b4b467dbef2 /primedev/engine | |
parent | 2dce58a733f1ac275e611bd050c2482c5d7cf68b (diff) | |
download | NorthstarLauncher-5aae42126a062f1d184aff1c8217ef50259ccc53.tar.gz NorthstarLauncher-5aae42126a062f1d184aff1c8217ef50259ccc53.zip |
engine: restore `mat_crosshair_printmaterial` concommand (#763)
Restores the `mat_crosshair_printmaterial` concommand by reimplementing it's callback. Adds `CMaterialGlue` and `CShaderGlue` classes.
Diffstat (limited to 'primedev/engine')
-rw-r--r-- | primedev/engine/gl_matsysiface.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/primedev/engine/gl_matsysiface.cpp b/primedev/engine/gl_matsysiface.cpp new file mode 100644 index 00000000..903a0113 --- /dev/null +++ b/primedev/engine/gl_matsysiface.cpp @@ -0,0 +1,50 @@ +#include "materialsystem/cmaterialglue.h" + +CMaterialGlue* (*GetMaterialAtCrossHair)(); + +AUTOHOOK_INIT() + +AUTOHOOK(CC_mat_crosshair_printmaterial_f, engine.dll + 0xB3C40, void, __fastcall, (const CCommand& args)) +{ + CMaterialGlue* pMat = GetMaterialAtCrossHair(); + + if (!pMat) + { + spdlog::error("Not looking at a material!"); + return; + } + + std::function<void(CMaterialGlue * pGlue, const char* szName)> fnPrintGlue = [](CMaterialGlue* pGlue, const char* szName) + { + spdlog::info("|-----------------------------------------------"); + + if (!pGlue) + { + spdlog::info("|-- {} is NULL", szName); + return; + } + + spdlog::info("|-- Name: {}", szName); + spdlog::info("|-- GUID: {:#x}", pGlue->m_GUID); + spdlog::info("|-- Name: {}", pGlue->m_pszName); + spdlog::info("|-- Width : {}", pGlue->m_iWidth); + spdlog::info("|-- Height: {}", pGlue->m_iHeight); + }; + + spdlog::info("|- GUID: {:#x}", pMat->m_GUID); + spdlog::info("|- Name: {}", pMat->m_pszName); + spdlog::info("|- Width : {}", pMat->m_iWidth); + spdlog::info("|- Height: {}", pMat->m_iHeight); + + fnPrintGlue(pMat->m_pDepthShadow, "DepthShadow"); + fnPrintGlue(pMat->m_pDepthPrepass, "DepthPrepass"); + fnPrintGlue(pMat->m_pDepthVSM, "DepthVSM"); + fnPrintGlue(pMat->m_pColPass, "ColPass"); +} + +ON_DLL_LOAD("engine.dll", GlMatSysIFace, (CModule module)) +{ + AUTOHOOK_DISPATCH() + + GetMaterialAtCrossHair = module.Offset(0xB37D0).RCast<CMaterialGlue* (*)()>(); +} |