Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
- //
- // Purpose:
- //
- // $NoKeywords: $
- //=============================================================================
- // Triangle rendering, if any
- #include "hud.h"
- #include "cl_util.h"
- // Triangle rendering apis are in gEngfuncs.pTriAPI
- #include "const.h"
- #include "entity_state.h"
- #include "cl_entity.h"
- #include "triangleapi.h"
- #include "Exports.h"
- #include "particleman.h"
- #include "tri.h"
- extern IParticleMan *g_pParticleMan;
- namespace TriStuff
- {
- using namespace std;
- static HSPRITE whiteSprite = 0;
- static bool havePoints = false;
- bool allSolid;
- static vec3_t traceEndPoint, beamEndPoint, reverseEndPoint;
- void OnVidInit()
- {
- whiteSprite = 0;
- havePoints = false;
- }
- void SetPoints(bool solid, vec3_t traceEnd, vec3_t beamEnd, vec3_t reverseEnd)
- {
- havePoints = true;
- allSolid = solid;
- traceEndPoint = traceEnd;
- beamEndPoint = beamEnd;
- reverseEndPoint = reverseEnd;
- if (allSolid)
- gEngfuncs.Con_Printf("allSolid: %f %f %f\n", beamEndPoint.x, beamEndPoint.y, beamEndPoint.z);
- }
- static void DrawWireframeBox(vec3_t origin, float halfsize)
- {
- gEngfuncs.pTriAPI->Begin(TRI_LINES);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y + halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x - halfsize, origin.y - halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y + halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z + halfsize);
- gEngfuncs.pTriAPI->Vertex3f(origin.x + halfsize, origin.y - halfsize, origin.z - halfsize);
- gEngfuncs.pTriAPI->End();
- }
- static void DrawStuff()
- {
- if (!havePoints)
- return;
- if (whiteSprite == 0)
- whiteSprite = SPR_Load("sprites/white.spr");
- if (!gEngfuncs.pTriAPI->SpriteTexture(const_cast<model_s*>(gEngfuncs.GetSpritePointer(whiteSprite)), 0))
- return;
- gEngfuncs.pTriAPI->RenderMode(kRenderTransColor);
- gEngfuncs.pTriAPI->Color4f(1.f, 0.f, 0.f, 1.f);
- DrawWireframeBox(traceEndPoint, 2);
- gEngfuncs.pTriAPI->Color4f(0.f, 1.f, 0.f, 1.f);
- DrawWireframeBox(beamEndPoint, allSolid ? 4 : 2);
- gEngfuncs.pTriAPI->Color4f(1.f, 1.f, 0.f, 1.f);
- DrawWireframeBox(reverseEndPoint, allSolid ? 6 : 2);
- }
- }
- /*
- =================
- HUD_DrawNormalTriangles
- Non-transparent triangles-- add them here
- =================
- */
- void CL_DLLEXPORT HUD_DrawNormalTriangles( void )
- {
- // RecClDrawNormalTriangles();
- gHUD.m_Spectator.DrawOverview();
- }
- #if defined( _TFC )
- void RunEventList( void );
- #endif
- /*
- =================
- HUD_DrawTransparentTriangles
- Render any triangles with transparent rendermode needs here
- =================
- */
- void CL_DLLEXPORT HUD_DrawTransparentTriangles( void )
- {
- // RecClDrawTransparentTriangles();
- #if defined( _TFC )
- RunEventList();
- #endif
- if ( g_pParticleMan )
- g_pParticleMan->Update();
- TriStuff::DrawStuff();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement