Index: cg_scanner.c =================================================================== --- cg_scanner.c (revision 848) +++ cg_scanner.c (working copy) @@ -117,7 +117,7 @@ Draw blips and stalks for the human scanner ============= */ -static void CG_DrawBlips( rectDef_t *rect, vec3_t origin, vec4_t colour ) +static void CG_DrawBlips( rectDef_t *rect, vec3_t origin, vec4_t colour, qhandle_t shader ) { vec3_t drawOrigin; vec3_t up = { 0, 0, 1 }; @@ -158,12 +158,12 @@ CG_DrawPic( rect->x + ( rect->w / 2 ) - ( BLIPX / 2 ) - drawOrigin[ 0 ], rect->y + ( rect->h / 2 ) - ( BLIPY / 2 ) + drawOrigin[ 1 ] - drawOrigin[ 2 ], - BLIPX, BLIPY, cgs.media.scannerBlipShader ); + BLIPX, BLIPY, shader ); trap_R_SetColor( NULL ); } -#define BLIPX2 24.0f -#define BLIPY2 24.0f +//#define BLIPX2 24.0f +//#define BLIPY2 24.0f /* ============= @@ -172,7 +172,7 @@ Draw dot marking the direction to an enemy ============= */ -static void CG_DrawDir( rectDef_t *rect, vec3_t origin, vec4_t colour ) +static void CG_DrawDir( rectDef_t *rect, vec3_t origin, vec4_t colour, qhandle_t shader, float BLIPX2, float BLIPY2 ) { vec3_t drawOrigin; vec3_t noZOrigin; @@ -215,7 +215,7 @@ trap_R_SetColor( colour ); CG_DrawPic( rect->x + ( rect->w / 2 ) - ( BLIPX2 / 2 ) - drawOrigin[ 0 ] * ( rect->w / 2 ), rect->y + ( rect->h / 2 ) - ( BLIPY2 / 2 ) + drawOrigin[ 1 ] * ( rect->h / 2 ), - BLIPX2, BLIPY2, cgs.media.scannerBlipShader ); + BLIPX2, BLIPY2, shader ); // cgs.media.scannerBlipShader trap_R_SetColor( NULL ); } @@ -229,9 +229,24 @@ int i; vec3_t origin; vec3_t relOrigin; - vec4_t buildable = { 1.0f, 0.0f, 0.0f, 0.7f }; - vec4_t client = { 0.0f, 0.0f, 1.0f, 0.7f }; + vec4_t color_human = { 0.04f, 0.71f, 0.88f, 1.0f }; + vec4_t color_humanbldg = { 1.0f, 0.0f, 0.0f, 1.0f }; + vec4_t color_alien = { 0.00f, 0.75f, 0.00f, 1.0f }; + vec4_t color_alienbldg = { 0.20f, 0.5f, 0.20f, 1.0f }; + rectDef_t rect1; + double length; + float blipx; + + rect1.x =rect->x -10; + rect1.y =rect->y -10; + rect1.h =rect->h +20; + rect1.w =rect->w +20; + VectorCopy( entityPositions.origin, origin ); //draw human buildables @@ -240,8 +255,12 @@ VectorClear( relOrigin ); VectorSubtract( entityPositions.humanBuildablePos[ i ], origin, relOrigin ); - if( VectorLength( relOrigin ) < ALIENSENSE_RANGE ) - CG_DrawDir( rect, relOrigin, buildable ); + length = VectorLength( relOrigin ); + if( length < ALIENSENSE_RANGE ) { + color_humanbldg[3] = 1.f-0.5f*(length/ALIENSENSE_RANGE); + blipx = 24.f-12.f*(length/ALIENSENSE_RANGE); + CG_DrawDir( &rect1, relOrigin, color_humanbldg, cgs.media.scannerBlipBldgShader, blipx, blipx ); + } } //draw human clients @@ -250,9 +269,41 @@ VectorClear( relOrigin ); VectorSubtract( entityPositions.humanClientPos[ i ], origin, relOrigin ); - if( VectorLength( relOrigin ) < ALIENSENSE_RANGE ) - CG_DrawDir( rect, relOrigin, client ); + length = VectorLength( relOrigin ); + if( length < ALIENSENSE_RANGE ) { + color_human[3] = 1.f-0.5f*(length/ALIENSENSE_RANGE); + blipx = 24.f-12.f*(length/ALIENSENSE_RANGE); + CG_DrawDir( rect, relOrigin, color_human, cgs.media.scannerBlipShader, blipx, blipx ); + } } + + //draw alien buildables + for( i = 0; i < entityPositions.numAlienBuildables; i++ ) + { + VectorClear( relOrigin ); + VectorSubtract( entityPositions.alienBuildablePos[ i ], origin, relOrigin ); + + length = VectorLength( relOrigin ); + if( length < ALIENSENSE_RANGE ) { + color_alienbldg[3] = 1.f-0.5f*(length/ALIENSENSE_RANGE); + blipx = 24.f-12.f*(length/ALIENSENSE_RANGE); + CG_DrawDir( &rect1, relOrigin, color_alienbldg, cgs.media.scannerBlipBldgShader, blipx, blipx ); + } + } + + //draw alien clients + for( i = 0; i < entityPositions.numAlienClients; i++ ) + { + VectorClear( relOrigin ); + VectorSubtract( entityPositions.alienClientPos[ i ], origin, relOrigin ); + + length = VectorLength( relOrigin ); + if( length < ALIENSENSE_RANGE ) { + color_alien[3] = 1.f-0.5f*(length/ALIENSENSE_RANGE); + blipx = 24.f-12.f*(length/ALIENSENSE_RANGE); + CG_DrawDir( rect, relOrigin, color_alien, cgs.media.scannerBlipShader, blipx, blipx ); + } + } } /* @@ -265,55 +316,53 @@ int i; vec3_t origin; vec3_t relOrigin; - vec4_t hIabove; - vec4_t hIbelow; - vec4_t aIabove = { 1.0f, 0.0f, 0.0f, 0.75f }; - vec4_t aIbelow = { 1.0f, 0.0f, 0.0f, 0.5f }; + vec4_t color_human = { 0.04f, 0.71f, 0.88f, 1.0f }; + vec4_t color_alien = { 0.75f, 0.00f, 0.00f, 1.0f }; - Vector4Copy( color, hIabove ); - hIabove[ 3 ] *= 1.5f; - Vector4Copy( color, hIbelow ); - VectorCopy( entityPositions.origin, origin ); //draw human buildables below scanner plane + color_human[3] = color[3]; for( i = 0; i < entityPositions.numHumanBuildables; i++ ) { VectorClear( relOrigin ); VectorSubtract( entityPositions.humanBuildablePos[ i ], origin, relOrigin ); if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] < 0 ) ) - CG_DrawBlips( rect, relOrigin, hIbelow ); + CG_DrawBlips( rect, relOrigin, color_human, cgs.media.scannerBlipBldgShader ); } //draw alien buildables below scanner plane + color_alien[3] = color[3]; for( i = 0; i < entityPositions.numAlienBuildables; i++ ) { VectorClear( relOrigin ); VectorSubtract( entityPositions.alienBuildablePos[ i ], origin, relOrigin ); if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] < 0 ) ) - CG_DrawBlips( rect, relOrigin, aIbelow ); + CG_DrawBlips( rect, relOrigin, color_alien, cgs.media.scannerBlipBldgShader ); } //draw human clients below scanner plane + color_human[3] = color[3]; for( i = 0; i < entityPositions.numHumanClients; i++ ) { VectorClear( relOrigin ); VectorSubtract( entityPositions.humanClientPos[ i ], origin, relOrigin ); if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] < 0 ) ) - CG_DrawBlips( rect, relOrigin, hIbelow ); + CG_DrawBlips( rect, relOrigin, color_human, cgs.media.scannerBlipShader ); } - //draw alien buildables below scanner plane + //draw alien clients below scanner plane + color_alien[3] = color[3]; for( i = 0; i < entityPositions.numAlienClients; i++ ) { VectorClear( relOrigin ); VectorSubtract( entityPositions.alienClientPos[ i ], origin, relOrigin ); if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] < 0 ) ) - CG_DrawBlips( rect, relOrigin, aIbelow ); + CG_DrawBlips( rect, relOrigin, color_alien, cgs.media.scannerBlipShader ); } if( !cg_disableScannerPlane.integer ) @@ -324,42 +373,46 @@ } //draw human buildables above scanner plane + color_human[3] *= 1.5f; for( i = 0; i < entityPositions.numHumanBuildables; i++ ) { VectorClear( relOrigin ); VectorSubtract( entityPositions.humanBuildablePos[ i ], origin, relOrigin ); if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] > 0 ) ) - CG_DrawBlips( rect, relOrigin, hIabove ); + CG_DrawBlips( rect, relOrigin, color_human, cgs.media.scannerBlipBldgShader ); } //draw alien buildables above scanner plane + color_alien[3] *= 1.5f; for( i = 0; i < entityPositions.numAlienBuildables; i++ ) { VectorClear( relOrigin ); VectorSubtract( entityPositions.alienBuildablePos[ i ], origin, relOrigin ); if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] > 0 ) ) - CG_DrawBlips( rect, relOrigin, aIabove ); + CG_DrawBlips( rect, relOrigin, color_alien, cgs.media.scannerBlipBldgShader ); } //draw human clients above scanner plane + color_human[3] *= 1.5f; for( i = 0; i < entityPositions.numHumanClients; i++ ) { VectorClear( relOrigin ); VectorSubtract( entityPositions.humanClientPos[ i ], origin, relOrigin ); if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] > 0 ) ) - CG_DrawBlips( rect, relOrigin, hIabove ); + CG_DrawBlips( rect, relOrigin, color_human, cgs.media.scannerBlipShader ); } //draw alien clients above scanner plane + color_alien[3] *= 1.5f; for( i = 0; i < entityPositions.numAlienClients; i++ ) { VectorClear( relOrigin ); VectorSubtract( entityPositions.alienClientPos[ i ], origin, relOrigin ); if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] > 0 ) ) - CG_DrawBlips( rect, relOrigin, aIabove ); + CG_DrawBlips( rect, relOrigin, color_alien, cgs.media.scannerBlipShader ); } } Index: cg_local.h =================================================================== --- cg_local.h (revision 848) +++ cg_local.h (working copy) @@ -1162,6 +1161,7 @@ qhandle_t scannerShader; qhandle_t scannerBlipShader; + qhandle_t scannerBlipBldgShader; qhandle_t scannerLineShader;