hlsdk

Sprite/Halo

Dec 31st, 2010
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.95 KB | None | 0 0
  1. #include "pch.h"
  2. #include "Sprite_.h"
  3. #include "..\..\NewNetvar.h"
  4.  
  5. static BYTE* SetupCurrentView = 0;
  6. static Vector* g_vecCurrentRenderOrigin = 0;
  7. static Vector* g_vecCurrentVUp = 0;
  8. static Vector* g_vecCurrentVRight = 0;
  9. static Vector* g_vecCurrentVForward = 0;
  10.  
  11. typedef bool (__cdecl* ScreenTransformFn)(Vector& world, Vector& screen);
  12. ScreenTransformFn ScreenTransform;
  13.  
  14. static bool bOnceSprite = false;
  15.  
  16. void Sprite_Init()
  17. {
  18.     if (!SetupCurrentView)
  19.         SetupCurrentView = (BYTE*)toolkit::FindPattern_("client.dll", (PBYTE)"\x8B\x44\x24\x04\xD9\x00\x8B\x4C\x24\x08\xD9\x1D", "xxxxxxxxxxxx");
  20.     if (!SetupCurrentView)
  21.         DebugBreak();
  22.    
  23.     g_vecCurrentRenderOrigin = *(Vector**)(SetupCurrentView + 0x0C);
  24.     g_vecCurrentVUp = *(Vector**)(SetupCurrentView + 0x24);
  25.     g_vecCurrentVRight = *(Vector**)(SetupCurrentView + 0x2F);
  26.     g_vecCurrentVForward = *(Vector**)(SetupCurrentView + 0x36);
  27.    
  28.     ScreenTransform = (ScreenTransformFn)toolkit::FindPattern_("client.dll", (PBYTE)"\x8B\x0D\x00\x00\x00\x00\x8B\x01\x8B\x90\x90\x00\x00\x00\xFF\xD2\xD9\x40\x08\x8B\x4C\x24\x04", "xx????xxxxxxxxxxxxxxxxx");
  29. }
  30.  
  31. const Vector &CurrentViewOrigin()
  32. {
  33.     return *g_vecCurrentRenderOrigin;
  34. }
  35.  
  36. const Vector &CurrentViewForward()
  37. {
  38.     return *g_vecCurrentVForward;
  39. }
  40.  
  41. const Vector &CurrentViewRight()
  42. {
  43.     return *g_vecCurrentVRight;
  44. }
  45.  
  46. const Vector &CurrentViewUp()
  47. {
  48.     return *g_vecCurrentVUp;
  49. }
  50.  
  51. void DrawHalo(IMaterial* pMaterial, Vector& source, float scale, float const* color, float flHDRColorScale )
  52. {
  53.     if (!bOnceSprite)
  54.     {
  55.         Sprite_Init();
  56.         bOnceSprite = true;
  57.     }
  58.  
  59.     static unsigned int nHDRColorScaleCache = 0;
  60.     Vector screen;
  61.     Vector point;
  62.    
  63.     CMeshBuilder meshBuilder;
  64.     CMatRenderContextPtr pRenderContext( materials );
  65.     pRenderContext->Bind(pMaterial);
  66.     IMesh* pMesh = pRenderContext->GetDynamicMesh( );
  67.     meshBuilder.Begin( pMesh, MATERIAL_QUADS, 1 );
  68.  
  69.     // Transform source into screen space
  70.     ScreenTransform( source, screen );
  71.  
  72.     meshBuilder.Color3fv (color);
  73.     meshBuilder.TexCoord2f (0, 0, 1);
  74.     VectorMA (source, -scale, CurrentViewUp(), point);
  75.     VectorMA (point, -scale, CurrentViewRight(), point);
  76.     meshBuilder.Position3fv (point.Base());
  77.     meshBuilder.AdvanceVertex();
  78.  
  79.     meshBuilder.Color3fv (color);
  80.     meshBuilder.TexCoord2f (0, 0, 0);
  81.     VectorMA (source, scale, CurrentViewUp(), point);
  82.     VectorMA (point, -scale, CurrentViewRight(), point);
  83.     meshBuilder.Position3fv (point.Base());
  84.     meshBuilder.AdvanceVertex();
  85.  
  86.     meshBuilder.Color3fv (color);
  87.     meshBuilder.TexCoord2f (0, 1, 0);
  88.     VectorMA (source, scale, CurrentViewUp(), point);
  89.     VectorMA (point, scale, CurrentViewRight(), point);
  90.     meshBuilder.Position3fv (point.Base());
  91.     meshBuilder.AdvanceVertex();
  92.  
  93.     meshBuilder.Color3fv (color);
  94.     meshBuilder.TexCoord2f (0, 1, 1);
  95.     VectorMA (source, -scale, CurrentViewUp(), point);
  96.     VectorMA (point, scale, CurrentViewRight(), point);
  97.     meshBuilder.Position3fv (point.Base());
  98.     meshBuilder.AdvanceVertex();
  99.  
  100.     meshBuilder.End();
  101.     pMesh->Draw();
  102. }
Add Comment
Please, Sign In to add comment