//declaration stuff
ID3DXLine *pLine; //Liner
//here is the functions body
void Draw3DBox(float x_bottom_left, float y_bottom_left, float x_bottom_right, float y_bottom_right, float x_top_left, float y_top_left, float x_top_right, float y_top_right, float x_forward_bottom_left, float y_forward_bottom_left, float x_forward_bottom_right, float y_forward_bottom_right, float x_forward_top_left, float y_forward_top_left, float x_forward_top_right, float y_forward_top_right, int a, int r, int g, int b)
{
if(!IsBadReadPtr(pLine, sizeof(ID3DXLine)))
{
D3DXVECTOR2 vLine1[2];
D3DXVECTOR2 vLine2[2];
D3DXVECTOR2 vLine3[2];
D3DXVECTOR2 vLine4[2];
D3DXVECTOR2 vLine5[2];
D3DXVECTOR2 vLine6[2];
D3DXVECTOR2 vLine7[2];
D3DXVECTOR2 vLine8[2];
D3DXVECTOR2 vLine9[2];
D3DXVECTOR2 vLine10[2];
D3DXVECTOR2 vLine11[2];
D3DXVECTOR2 vLine12[2];
float t=1;
pLine->SetWidth( t );
pLine->SetAntialias( false );
pLine->SetGLLines( false );
//bottom left to bottom right
vLine1[0].x = x_bottom_left;
vLine1[0].y = y_bottom_left;
vLine1[1].x = x_bottom_left+(x_bottom_right-x_bottom_left);
vLine1[1].y = y_bottom_left;
//bottom left to top left
vLine2[0].x = x_top_left;
vLine2[0].y = y_top_left;
vLine2[1].x = x_top_left;
vLine2[1].y = y_top_left+(y_bottom_left-y_top_left);
//bottom right to top right
vLine3[0].x = x_top_right;
vLine3[0].y = y_top_right;
vLine3[1].x = x_top_right;
vLine3[1].y = y_top_right+(y_bottom_right-y_top_right);
//top left to top right
vLine4[0].x = x_top_left;
vLine4[0].y = y_top_left;
vLine4[1].x = x_top_left+(x_top_right-x_top_left);
vLine4[1].y = y_top_left;
//from top left to top left forward
vLine5[0].x = x_top_left;
vLine5[0].y = y_top_left;
vLine5[1].x = x_top_left+(x_forward_top_left-x_top_left);
vLine5[1].y = y_top_left+(y_forward_top_left-y_top_left);
//from bottom left to bottom left forward
vLine6[0].x = x_bottom_left;
vLine6[0].y = y_bottom_left;
vLine6[1].x = x_bottom_left+(x_forward_bottom_left-x_bottom_left);//
vLine6[1].y = y_bottom_left+(y_forward_bottom_left-y_bottom_left);//
//from bottom right to bottom right forward
vLine7[0].x = x_bottom_right;
vLine7[0].y = y_bottom_right;
vLine7[1].x = x_bottom_right+(x_forward_bottom_right-x_bottom_right);//
vLine7[1].y = y_bottom_right+(y_forward_bottom_right-y_bottom_right);//
//from top right to top right forward
vLine8[0].x = x_top_right;
vLine8[0].y = y_top_right;
vLine8[1].x = x_top_right+(x_forward_top_right-x_top_right);//
vLine8[1].y = y_top_right+(y_forward_top_right-y_top_right);//
//bottom left forward to bottom right forward
vLine9[0].x = x_forward_bottom_left;
vLine9[0].y = y_forward_bottom_left;
vLine9[1].x = x_forward_bottom_left+(x_forward_bottom_right-x_forward_bottom_left);
vLine9[1].y = y_forward_bottom_left;
//bottom left forward to top left forward
vLine10[0].x = x_forward_top_left;
vLine10[0].y = y_forward_top_left;
vLine10[1].x = x_forward_top_left;
vLine10[1].y = y_forward_top_left+(y_forward_bottom_left-y_forward_top_left);
//bottom right forward to top right forward
vLine11[0].x = x_forward_top_right;
vLine11[0].y = y_forward_top_right;
vLine11[1].x = x_forward_top_right;
vLine11[1].y = y_forward_top_right+(y_forward_bottom_right-y_forward_top_right);
//top left forward to top right forward
vLine12[0].x = x_forward_top_left;
vLine12[0].y = y_forward_top_left;
vLine12[1].x = x_forward_top_left+(x_forward_top_right-x_forward_top_left);
vLine12[1].y = y_forward_top_left;
pLine->Begin( );
pLine->Draw( vLine1, 2, D3DCOLOR_ARGB(a, r, g, b ) );
pLine->Draw( vLine2, 2, D3DCOLOR_ARGB(a, r, g, b ) );
pLine->Draw( vLine3, 2, D3DCOLOR_ARGB(a, r, g, b ) );
pLine->Draw( vLine4, 2, D3DCOLOR_ARGB(a, r, g, b ) );
pLine->Draw( vLine5, 2, D3DCOLOR_ARGB(a, r, g, b ) );
pLine->Draw( vLine6, 2, D3DCOLOR_ARGB(a, r, g, b ) );
pLine->Draw( vLine7, 2, D3DCOLOR_ARGB(a, r, g, b ) );
pLine->Draw( vLine8, 2, D3DCOLOR_ARGB(a, r, g, b ) );
pLine->Draw( vLine9, 2, D3DCOLOR_ARGB(a, r, g, b ) );
pLine->Draw( vLine10, 2, D3DCOLOR_ARGB(a, r, g, b ) );
pLine->Draw( vLine11, 2, D3DCOLOR_ARGB(a, r, g, b ) );
pLine->Draw( vLine12, 2, D3DCOLOR_ARGB(a, r, g, b ) );
pLine->End( );
}
}
//following you put in endscene for example:
D3DXCreateLine(d3dDevice, &pLine ); //Create line (put that for example in endscene or whatever you hooked
//and last but not least lets call our function:
Draw3DBox( /*all parameters for example bones*/ );