Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void CRenderer::BorderBox3d ( int x1[4], int y1[4], Color color )
- {
- Line ( x1[0], y1[0], x1[1], y1[1], color );
- Line ( x1[1], y1[1], x1[2], y1[2], color );
- Line ( x1[2], y1[2], x1[3], y1[3], color );
- Line ( x1[3], y1[3], x1[0], y1[0], color );
- }
- void DrawHitbox ( Vector min, Vector max, matrix3x4_t matrix, Color color )
- {
- static int box[6][4] =
- {
- { 0, 4, 6, 2 },
- { 0, 1, 5, 4 },
- { 0, 2, 3, 1 },
- { 7, 5, 1, 3 },
- { 7, 3, 2, 6 },
- { 7, 6, 4, 5 },
- };
- Vector temp, pos[ 8 ];
- for ( int i = 0; i < 8; i++ )
- {
- temp.x = ( i & 1 ) ? min.x : max.x;
- temp.y = ( i & 2 ) ? min.y : max.y;
- temp.z = ( i & 4 ) ? min.z : max.z;
- VectorTransform ( temp, matrix, pos[ i ] );
- }
- for ( int i = 0; i < 6; i++ )
- {
- int pos_x[4] = {0, 0, 0, 0};
- int pos_y[4] = {0, 0, 0, 0};
- for ( int side = 0; side < 4; side++ )
- {
- Vector box ( pos[ box[ i ][ side ] ] );
- Vector tmp;
- WorldToScreen ( box, tmp );
- pos_x[side] = tmp.x;
- pos_y[side] = tmp.y;
- }
- gRenderer.BorderBox3d ( pos_x, pos_y, color );
- }
- }
- // hitbox esp
- if ( vars.esp.hitbox )
- {
- matrix3x4_t matrix[ 128 ];
- if ( !pEntity->SetupBones ( matrix, 128, 0x100, (pEntity->GetTickBase () * m_pGlobal->interval_per_tick) ) )
- continue;
- studiohdr_t* pStudioHdr = m_pModelInfo->GetStudiomodel ( pEntity->GetModel () );
- if ( !pStudioHdr )
- continue;
- mstudiohitboxset_t* pHitboxSet = pStudioHdr->pHitboxSet ( pEntity->GetHitboxSet () );
- if ( !pHitboxSet )
- continue;
- for ( int j = 0; j < pHitboxSet->numhitboxes; j++ )
- {
- mstudiobbox_t* box = pHitboxSet->pHitbox ( j );
- if ( !box )
- continue;
- DrawHitbox ( box->bbmin, box->bbmax, matrix[ box->bone ], espColor );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment