Actually, there IS a drawback in my code. As the weapon model is rendered
AFTER triapi (or with depthfunc disabled), it shows in front of the
polygons. I tried to get a viewmodel pointer clientside and set its
renderamount to 0, but that did not work. I got it to be halfway
transparent, but it never disappeared completely. So what you have to do is
to set the viewmodel to NULL either serverside or clientside (the first way
definitely works - I haven't tried the second yet).


> Cool :)
>
> good coded LOL
>
>       - Cortex : mapper & coder www.hlalbator.fr.st
>
> ----- Original Message -----
> From: "Sebastian Steinlechner" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Monday, April 29, 2002 9:30 PM
> Subject: Re: [hlcoders] Scope Sprites
>
>
> > Yes, it does... here's how I did it, I'm calling this from
> > HUD_DrawTransparentTriangles (well, not exactly this, it's somewhat
> > different in Poke646, but the idea & maths is the same):
> >
> > --- snip ---
> >
> > #define SCOPE_DISTANCE 10
> > #define M_PI   3.14159265358979323846
> >
> > extern vec3_t v_angles, v_origin;
> >
> > void CSniperScope::DrawScope( void )
> > {
> >  if( !fActive )
> >   return;
> >
> >  cl_entity_t *player;
> >
> >  // make sure the player is up and running
> >  player = gEngfuncs.GetLocalPlayer();
> >  if ( !player )
> >   return;
> >
> >  // load sniper scope sprite if necessary
> >  if ( hsprSniperScope == 0 )
> >  {
> >   char sz[256];
> >   sprintf( sz, "sprites/scopeborder.spr" );
> >   hsprSniperScope = SPR_Load( sz );
> >  }
> >
> >  vec3_t viewAngles, v_up, v_right, v_forward;
> >
> >  gEngfuncs.GetViewAngles( viewAngles );
> >  AngleVectors( viewAngles, v_forward, v_right, v_up );
> >
> >  // the sprite's origin
> >  vec3_t org = v_origin + v_forward * SCOPE_DISTANCE;
> >
> >  // adjust size to fov (simple triangular maths)
> >  float fovadjust = tan( gHUD.m_iFOV / 360.0 * M_PI );
> >  float size = (SCOPE_DISTANCE + 1.0) * fovadjust; // little bigger than
> > necessary
> >
> >  // use this to overlap the triangles a bit
> >  float pixel = size / 256.0;
> >
> >  float r, g, b, brightness;
> >
> >  r = g = b = brightness = 1.0;
> >
> >  vec3_t temporg;
> >
> >  // now set up triapi code
> >  gEngfuncs.pTriAPI->RenderMode( kRenderTransTexture );
> >  gEngfuncs.pTriAPI->CullFace( TRI_NONE );
> >
> >  for( int i = 0; i < 4; i++ )
> >  {
> >   if ( !gEngfuncs.pTriAPI->SpriteTexture( (struct model_s
> > *)gEngfuncs.GetSpritePointer( hsprSniperScope ), i ))
> >   {
> >    return;
> >   }
> >
> >   gEngfuncs.pTriAPI->Color4f( r, g, b , brightness);
> >   gEngfuncs.pTriAPI->Begin( TRI_QUADS );
> >
> >   gEngfuncs.pTriAPI->Brightness( 1 );
> >   gEngfuncs.pTriAPI->TexCoord2f( 0, 1 );
> >   switch( i )
> >   {
> >    case 0: temporg = org + (v_right * -size); break;
> >    case 1: temporg = org; break;
> >    case 2: temporg = org + (v_right * -size) + (v_up * -size); break;
> >    case 3: temporg = org + (v_up * -size); break;
> >   }
> >   gEngfuncs.pTriAPI->Vertex3fv( temporg );
> >
> >   gEngfuncs.pTriAPI->Brightness( 1 );
> >   gEngfuncs.pTriAPI->TexCoord2f( 0, 0 );
> >   switch( i )
> >   {
> >    case 0: temporg = org + (v_right * -size) + (v_up * size); break;
> >    case 1: temporg = org + (v_up * size); break;
> >    case 2: temporg = org + (v_right * -size) + (v_up * pixel); break;
> >    case 3: temporg = org; break;
> >   }
> >   gEngfuncs.pTriAPI->Vertex3fv( temporg );
> >
> >   gEngfuncs.pTriAPI->Brightness( 1 );
> >   gEngfuncs.pTriAPI->TexCoord2f( 1, 0 );
> >   switch( i )
> >   {
> >    case 0: temporg = org + (v_up * size); break;
> >    case 1: temporg = org + (v_right * size) + (v_up * size); break;
> >    case 2: temporg = org; break;
> >    case 3: temporg = org + (v_right * size) + (v_up * pixel); break;
> >   }
> >   gEngfuncs.pTriAPI->Vertex3fv( temporg );
> >
> >   gEngfuncs.pTriAPI->Brightness( 1 );
> >   gEngfuncs.pTriAPI->TexCoord2f( 1, 1 );
> >   switch( i )
> >   {
> >    case 0: temporg = org; break;
> >    case 1: temporg = org + (v_right * size); break;
> >    case 2: temporg = org + (v_up * -size); break;
> >    case 3: temporg = org + (v_right * size) + (v_up * -size); break;
> >   }
> >   gEngfuncs.pTriAPI->Vertex3fv( temporg );
> >
> >   gEngfuncs.pTriAPI->End();
> >  }
> >
> > }
> >
> > -- snap --
> >
> > cya,
> > TheTinySteini
> >
> >
> > ----- Original Message -----
> > From: "Cortex" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Monday, April 29, 2002 7:56 PM
> > Subject: Re: [hlcoders] Scope Sprites
> >
> >
> > I don't understand how you got it to work using TriApi ! How did you get
> the
> > coordinate of the polys you had to display ? It has to depend from the
> view
> > angles, don't they ?
> >
> >
> > _______________________________________________
> > To unsubscribe, edit your list preferences, or view the list archives,
> please visit:
> > http://list.valvesoftware.com/mailman/listinfo/hlcoders
> >
> >
>
>
> _______________________________________________
> To unsubscribe, edit your list preferences, or view the list archives,
please visit:
> http://list.valvesoftware.com/mailman/listinfo/hlcoders
>

_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to