diff --git a/src/include/util.h b/src/include/util.h index 9c58cc1..d1d1e33 100644 --- a/src/include/util.h +++ b/src/include/util.h @@ -1,12 +1,18 @@ #ifndef UTIL_H_ #define UTIL_H_ +#include #include "sdk.h" #include "globals.h" /* Vector 2 for 2d points */ typedef float vec2_t[2]; +/* RGB color */ +typedef struct { + uint8_t r, g, b; +} rgb_t; + /*----------------------------------------------------------------------------*/ bool is_alive(cl_entity_t* ent); @@ -15,5 +21,6 @@ char* get_name(int ent_idx); vec3_t vec3(float x, float y, float z); bool vec_is_zero(vec3_t v); bool world_to_screen(vec3_t vec, vec2_t screen); +void gl_drawline(int x0, int y0, int x1, int y1, float w, rgb_t col); #endif /* UTIL_H_ */ diff --git a/src/util.c b/src/util.c index 6cae693..1bd5522 100644 --- a/src/util.c +++ b/src/util.c @@ -3,6 +3,8 @@ #include "include/sdk.h" #include "include/globals.h" +#include + bool is_alive(cl_entity_t* ent) { return ent && ent->curstate.movetype != 6 && ent->curstate.movetype != 0; } @@ -54,3 +56,19 @@ bool world_to_screen(vec3_t vec, vec2_t screen) { return false; } + +void gl_drawline(int x0, int y0, int x1, int y1, float w, rgb_t col) { + const int alpha = 255; + + glDisable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glColor4ub(col.r, col.g, col.b, alpha); /* Set colors + alpha */ + glLineWidth(w); /* Set line width */ + glBegin(GL_LINES); /* Interpret vertices as lines */ + glVertex2i(x0, y0); /* Start */ + glVertex2i(x1, y1); /* End */ + glEnd(); /* Stop glBegin, end line mode */ + glEnable(GL_TEXTURE_2D); + glDisable(GL_BLEND); +}