Advertisement
Guest User

lol

a guest
Oct 20th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. void Chams::OnDrawModelExecute(
  2. IMatRenderContext* ctx,
  3. const DrawModelState_t& state,
  4. const ModelRenderInfo_t& info,
  5. matrix3x4_t* matrix)
  6. {
  7. static auto fnDME = Hooks::mdlrender_hook.get_original<decltype(&Hooks::hkDrawModelExecute)>(index::DrawModelExecute);
  8.  
  9. const auto mdl = info.pModel;
  10.  
  11. bool is_arm = strstr(mdl->szName, "arms") != nullptr;
  12. bool is_player = strstr(mdl->szName, "models/player") != nullptr;
  13. bool is_sleeve = strstr(mdl->szName, "sleeve") != nullptr;
  14. //bool is_weapon = strstr(mdl->szName, "weapons/v_") != nullptr;
  15.  
  16. if (is_player && g_Options.chams_player_enabled) {
  17. //
  18. // Draw player Chams.
  19. //
  20. auto ent = C_BasePlayer::GetPlayerByIndex(info.entity_index);
  21.  
  22. if (ent && g_LocalPlayer && ent->IsAlive()) {
  23. const auto enemy = ent->m_iTeamNum() != g_LocalPlayer->m_iTeamNum();
  24. if (!enemy && g_Options.chams_player_enemies_only)
  25. return;
  26.  
  27. const auto clr_front = enemy ? g_Options.color_chams_player_enemy_visible : g_Options.color_chams_player_ally_visible;
  28. const auto clr_back = enemy ? g_Options.color_chams_player_enemy_occluded : g_Options.color_chams_player_ally_occluded;
  29.  
  30. if (g_Options.chams_player_ignorez) {
  31. OverrideMaterial(
  32. true,
  33. g_Options.chams_player_flat,
  34. g_Options.chams_player_wireframe,
  35. false,
  36. clr_back);
  37. fnDME(g_MdlRender, 0, ctx, state, info, matrix);
  38. OverrideMaterial(
  39. false,
  40. g_Options.chams_player_flat,
  41. g_Options.chams_player_wireframe,
  42. false,
  43. clr_front);
  44. }
  45. else {
  46. OverrideMaterial(
  47. false,
  48. g_Options.chams_player_flat,
  49. g_Options.chams_player_wireframe,
  50. g_Options.chams_player_glass,
  51. clr_front);
  52. }
  53. }
  54. }
  55. else if (is_sleeve && g_Options.chams_arms_enabled) {
  56. auto material = g_MatSystem->FindMaterial(mdl->szName, TEXTURE_GROUP_MODEL);
  57. if (!material)
  58. return;
  59. //
  60. // Remove sleeves when drawing Chams.
  61. //
  62. material->SetMaterialVarFlag(MATERIAL_VAR_NO_DRAW, true);
  63. g_MdlRender->ForcedMaterialOverride(material);
  64. }
  65. else if (is_arm) {
  66. auto material = g_MatSystem->FindMaterial(mdl->szName, TEXTURE_GROUP_MODEL);
  67. if (!material)
  68. return;
  69. if (g_Options.misc_no_hands) {
  70. //
  71. // No hands.
  72. //
  73. material->SetMaterialVarFlag(MATERIAL_VAR_NO_DRAW, true);
  74. g_MdlRender->ForcedMaterialOverride(material);
  75. }
  76. else if (g_Options.chams_arms_enabled) {
  77. if (g_Options.chams_arms_ignorez) {
  78. OverrideMaterial(
  79. true,
  80. g_Options.chams_arms_flat,
  81. g_Options.chams_arms_wireframe,
  82. false,
  83. g_Options.color_chams_arms_occluded);
  84. fnDME(g_MdlRender, 0, ctx, state, info, matrix);
  85. OverrideMaterial(
  86. false,
  87. g_Options.chams_arms_flat,
  88. g_Options.chams_arms_wireframe,
  89. false,
  90. g_Options.color_chams_arms_visible);
  91. }
  92. else {
  93. OverrideMaterial(
  94. false,
  95. g_Options.chams_arms_flat,
  96. g_Options.chams_arms_wireframe,
  97. g_Options.chams_arms_glass,
  98. g_Options.color_chams_arms_visible);
  99. }
  100. }
  101. }
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement