You can also check if the currententity is the viewmodel on the model
rendering code and just return when it goes to draw it.

-----Original Message-----
From: Sebastian Steinlechner
To: [EMAIL PROTECTED]
Sent: 4/30/2002 4:03 AM
Subject: Re: [hlcoders] Scope Sprites

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
_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to