Advertisement
YaLTeR

tri.cpp

Jan 14th, 2016
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.99 KB | None | 0 0
  1. //========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
  2. //
  3. // Purpose:
  4. //
  5. // $NoKeywords: $
  6. //=============================================================================
  7.  
  8. // Triangle rendering, if any
  9.  
  10. #include "hud.h"
  11. #include "cl_util.h"
  12.  
  13. // Triangle rendering apis are in gEngfuncs.pTriAPI
  14.  
  15. #include "const.h"
  16. #include "entity_state.h"
  17. #include "cl_entity.h"
  18. #include "triangleapi.h"
  19. #include "Exports.h"
  20.  
  21. #include "particleman.h"
  22. #include "tri.h"
  23. extern IParticleMan *g_pParticleMan;
  24.  
  25. namespace TriStuff
  26. {
  27.     using namespace std;
  28.  
  29.     static HSPRITE whiteSprite = 0;
  30.     static bool havePoints = false;
  31.     bool allSolid;
  32.     static vec3_t traceEndPoint, beamEndPoint, reverseEndPoint;
  33.  
  34.     void OnVidInit()
  35.     {
  36.         whiteSprite = 0;
  37.         havePoints = false;
  38.     }
  39.  
  40.     void SetPoints(bool solid, vec3_t traceEnd, vec3_t beamEnd, vec3_t reverseEnd)
  41.     {
  42.         havePoints = true;
  43.         allSolid = solid;
  44.         traceEndPoint = traceEnd;
  45.         beamEndPoint = beamEnd;
  46.         reverseEndPoint = reverseEnd;
  47.         if (allSolid)
  48.             gEngfuncs.Con_Printf("allSolid: %f %f %f\n", beamEndPoint.x, beamEndPoint.y, beamEndPoint.z);
  49.     }
  50.  
  51.     static void DrawWireframeBox(vec3_t origin, float halfsize)
  52.     {
  53.         gEngfuncs.pTriAPI->Begin(TRI_LINES);
  54.  
  55.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z - halfsize);
  56.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z - halfsize);
  57.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z - halfsize);
  58.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z - halfsize);
  59.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z - halfsize);
  60.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z - halfsize);
  61.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z - halfsize);
  62.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z - halfsize);
  63.  
  64.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z + halfsize);
  65.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z + halfsize);
  66.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z + halfsize);
  67.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z + halfsize);
  68.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z + halfsize);
  69.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z + halfsize);
  70.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z + halfsize);
  71.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z + halfsize);
  72.  
  73.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z - halfsize);
  74.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z - halfsize);
  75.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z - halfsize);
  76.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z + halfsize);
  77.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z + halfsize);
  78.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z + halfsize);
  79.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z + halfsize);
  80.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z - halfsize);
  81.  
  82.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z - halfsize);
  83.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z - halfsize);
  84.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z - halfsize);
  85.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z + halfsize);
  86.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z + halfsize);
  87.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z + halfsize);
  88.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z + halfsize);
  89.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z - halfsize);
  90.  
  91.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z - halfsize);
  92.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z - halfsize);
  93.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z - halfsize);
  94.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z + halfsize);
  95.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z + halfsize);
  96.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z + halfsize);
  97.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z + halfsize);
  98.         gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z - halfsize);
  99.  
  100.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z - halfsize);
  101.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z - halfsize);
  102.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z - halfsize);
  103.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z + halfsize);
  104.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z + halfsize);
  105.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z + halfsize);
  106.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z + halfsize);
  107.         gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z - halfsize);
  108.  
  109.         gEngfuncs.pTriAPI->End();
  110.     }
  111.  
  112.     static void DrawStuff()
  113.     {
  114.         if (!havePoints)
  115.             return;
  116.  
  117.         if (whiteSprite == 0)
  118.             whiteSprite = SPR_Load("sprites/white.spr");
  119.         if (!gEngfuncs.pTriAPI->SpriteTexture(const_cast<model_s*>(gEngfuncs.GetSpritePointer(whiteSprite)), 0))
  120.             return;
  121.         gEngfuncs.pTriAPI->RenderMode(kRenderTransColor);
  122.  
  123.         gEngfuncs.pTriAPI->Color4f(1.f, 0.f, 0.f, 1.f);
  124.         DrawWireframeBox(traceEndPoint, 2);
  125.         gEngfuncs.pTriAPI->Color4f(0.f, 1.f, 0.f, 1.f);
  126.         DrawWireframeBox(beamEndPoint, allSolid ? 4 : 2);
  127.         gEngfuncs.pTriAPI->Color4f(1.f, 1.f, 0.f, 1.f);
  128.         DrawWireframeBox(reverseEndPoint, allSolid ? 6 : 2);
  129.     }
  130. }
  131.  
  132. /*
  133. =================
  134. HUD_DrawNormalTriangles
  135.  
  136. Non-transparent triangles-- add them here
  137. =================
  138. */
  139. void CL_DLLEXPORT HUD_DrawNormalTriangles( void )
  140. {
  141. //  RecClDrawNormalTriangles();
  142.  
  143.     gHUD.m_Spectator.DrawOverview();
  144. }
  145.  
  146. #if defined( _TFC )
  147. void RunEventList( void );
  148. #endif
  149.  
  150. /*
  151. =================
  152. HUD_DrawTransparentTriangles
  153.  
  154. Render any triangles with transparent rendermode needs here
  155. =================
  156. */
  157. void CL_DLLEXPORT HUD_DrawTransparentTriangles( void )
  158. {
  159. //  RecClDrawTransparentTriangles();
  160.  
  161. #if defined( _TFC )
  162.     RunEventList();
  163. #endif
  164.  
  165.     if ( g_pParticleMan )
  166.          g_pParticleMan->Update();
  167.  
  168.     TriStuff::DrawStuff();
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement