i did that for aknglock originally but maybe other can need it.
credits:
Valve (original "FX_DrawLine")
Mattdog <3
void draw_lazer_beam(Vector origin,QAngle angles , DWORD color , float lengh, float with) { Vector vForward; AngleVectors(angles, &vForward, 0, 0); Vector end = origin + vForward * lengh; //Get the proper orientation for the line Vector lineDir, viewDir; VectorSubtract( end, origin, lineDir ); VectorSubtract( end, get_local_player()->GetEyesPos(), viewDir ); Vector cross = lineDir.Cross( viewDir ); VectorNormalize( cross ); //Bind the material IMaterial* m_pMatBeam = (IMaterial*)FindMaterial("sprites\\physbeam",NULL,0,0); //m_pMaterialSyetem IMesh* pMesh = (IMesh*)GetDynamicMesh( true, NULL, NULL, m_pMatBeam );//m_pMaterialSyetem Vector tmp; CMeshBuilder meshBuilder; meshBuilder.Begin( pMesh, MATERIAL_QUADS, 1 ); VectorMA( origin, -with, cross, tmp ); meshBuilder.Position3fv( tmp.Base() ); meshBuilder.TexCoord2f( 0, 1.0f, 1.0f ); meshBuilder.Color4ub( RED(color),GREEN(color),BLUE(color),ALPHA(color) ); meshBuilder.Normal3fv( cross.Base() ); meshBuilder.AdvanceVertex(); VectorMA( origin, with, cross, tmp ); meshBuilder.Position3fv( tmp.Base() ); meshBuilder.TexCoord2f( 0, 0.0f, 1.0f ); meshBuilder.Color4ub( RED(color),GREEN(color),BLUE(color),ALPHA(color) ); meshBuilder.Normal3fv( cross.Base() ); meshBuilder.AdvanceVertex(); VectorMA( end, with, cross, tmp ); meshBuilder.Position3fv( tmp.Base() ); meshBuilder.TexCoord2f( 0, 0.0f, 0.0f ); meshBuilder.Color4ub( RED(color),GREEN(color),BLUE(color),ALPHA(color) ); meshBuilder.Normal3fv( cross.Base() ); meshBuilder.AdvanceVertex(); VectorMA( end, -with, cross, tmp ); meshBuilder.Position3fv( tmp.Base() ); meshBuilder.TexCoord2f( 0, 1.0f, 0.0f ); meshBuilder.Color4ub( RED(color),GREEN(color),BLUE(color),ALPHA(color) ); meshBuilder.Normal3fv( cross.Base() ); meshBuilder.AdvanceVertex(); meshBuilder.End(); ////////////////////////////////////////////////////////////////////////// // for 3D drawing in 2d draw CViewSetup myView; Frustum m_pFrustum; GetPlayerView(myView); //m_pClient Push3DView(myView,0,false,0,m_pFrustum); //m_pRender ////////////////////////////////////////////////////////////////////////// pMesh->Draw(); ////////////////////////////////////////////////////////////////////////// PopView(m_pFrustum); //m_pRender ////////////////////////////////////////////////////////////////////////// }
[/IMG]
Comment