|
|
//========= Copyright � 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#include "cbase.h"
#include "scratchpad_gamedll_helpers.h"
#include "iscratchpad3d.h"
#include "player.h"
#include "collisionproperty.h"
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
void ScratchPad_DrawWorldToScratchPad( IScratchPad3D *pPad, unsigned long flags ) { pPad->SetRenderState( IScratchPad3D::RS_FillMode, IScratchPad3D::FillMode_Wireframe );
if ( flags & SPDRAWWORLD_DRAW_WORLD ) { engine->DrawMapToScratchPad( pPad, 0 ); }
if ( flags & (SPDRAWWORLD_DRAW_PLAYERS | SPDRAWWORLD_DRAW_ENTITIES) ) { CBaseEntity *pCur = gEntList.FirstEnt(); while ( pCur ) { bool bPlayer = ( dynamic_cast< CBasePlayer* >( pCur ) != 0 ); if ( (bPlayer && !( flags & SPDRAWWORLD_DRAW_PLAYERS )) || (!bPlayer && !( flags & SPDRAWWORLD_DRAW_ENTITIES )) ) { pCur = gEntList.NextEnt( pCur ); continue; }
ScratchPad_DrawEntityToScratchPad( pPad, flags, pCur, bPlayer ? Vector( 1.0, 0.5, 0 ) : Vector( 0.3, 0.3, 1.0 ) );
pCur = gEntList.NextEnt( pCur ); } } }
void ScratchPad_DrawEntityToScratchPad( IScratchPad3D *pPad, unsigned long flags, CBaseEntity *pEnt, const Vector &vColor ) { // Draw the entity's bbox [todo: draw OBBs here too].
Vector mins, maxs; pEnt->CollisionProp()->WorldSpaceAABB( &mins, &maxs );
pPad->DrawWireframeBox( mins, maxs, vColor );
// Draw the edict's index or class?
char str[512]; str[0] = 0; if ( flags & SPDRAWWORLD_DRAW_EDICT_INDICES ) { char tempStr[512]; Q_snprintf( tempStr, sizeof( tempStr ), "edict: %d", pEnt->entindex() ); Q_strncat( str, tempStr, sizeof( str ), COPY_ALL_CHARACTERS ); }
if ( flags & SPDRAWWORLD_DRAW_ENTITY_CLASSNAMES ) { if ( str[0] != 0 ) Q_strncat( str, ", ", sizeof( str ), COPY_ALL_CHARACTERS );
char tempStr[512]; Q_snprintf( tempStr, sizeof( tempStr ), "class: %s", pEnt->GetClassname() ); Q_strncat( str, tempStr, sizeof( str ), COPY_ALL_CHARACTERS ); }
if ( str[0] != 0 ) { CTextParams params; params.m_vPos = (mins + maxs) * 0.5f; params.m_bCentered = true; params.m_flLetterWidth = 2; pPad->DrawText( str, params ); } }
|