]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - r_crosshairs.c
Added dot crosshair (crosshair 6)
[xonotic/darkplaces.git] / r_crosshairs.c
index 8bb73b4d41a23ccbab212dcb93409ab4129b3af1..316627134f1ea63fabe5bf03c6310ccac017714e 100644 (file)
@@ -10,7 +10,7 @@ cvar_t crosshair_size = {CVAR_SAVE, "crosshair_size", "1"};
 cvar_t crosshair_static = {CVAR_SAVE, "crosshair_static", "1"};
 
 // must match NUMCROSSHAIRS in gl_draw.c
-#define NUMCROSSHAIRS 5
+#define NUMCROSSHAIRS 6
 
 void R_Crosshairs_Init(void)
 {
@@ -62,6 +62,7 @@ void R_DrawWorldCrosshair(void)
        vec3_t v1, v2, spriteorigin;
        vec_t spritescale;
        vec4_t color;
+       trace_t trace;
        if (r_letterbox.value)
                return;
        if (crosshair_static.integer)
@@ -84,7 +85,9 @@ void R_DrawWorldCrosshair(void)
        AngleVectors(cl.viewangles, v2, NULL, NULL);
        //VectorCopy(r_vieworigin, v1);
        VectorMA(v1, 8192, v2, v2);
-       spritescale = CL_TraceLine(v1, v2, spriteorigin, NULL, true, NULL, SUPERCONTENTS_SOLID | SUPERCONTENTS_SKY) * (8192.0f / 40.0f) * crosshair_size.value;
+       trace = CL_TraceBox(v1, vec3_origin, vec3_origin, v2, true, NULL, SUPERCONTENTS_SOLID | SUPERCONTENTS_SKY, false);
+       spritescale = trace.fraction * (8192.0f / 40.0f) * crosshair_size.value;
+       VectorCopy(trace.endpos, spriteorigin);
 
        // draw the sprite
        R_DrawSprite(GL_SRC_ALPHA, GL_ONE, pic->tex, true, spriteorigin, r_viewright, r_viewup, spritescale, -spritescale, -spritescale, spritescale, color[0], color[1], color[2], color[3]);
@@ -108,7 +111,7 @@ void R_Draw2DCrosshair(void)
        if (pic)
        {
                R_GetCrosshairColor(color);
-               DrawQ_Pic((vid.conwidth - pic->width * crosshair_size.value) * 0.5f, (vid.conheight - pic->height * crosshair_size.value) * 0.5f, pic->name, pic->width * crosshair_size.value, pic->height * crosshair_size.value, color[0], color[1], color[2], color[3], 0);
+               DrawQ_Pic((vid_conwidth.integer - pic->width * crosshair_size.value) * 0.5f, (vid_conheight.integer - pic->height * crosshair_size.value) * 0.5f, pic->name, pic->width * crosshair_size.value, pic->height * crosshair_size.value, color[0], color[1], color[2], color[3], 0);
        }
 }