-#if defined(CSQC)
- #include "teamradar.qh"
-#elif defined(MENUQC)
-#elif defined(SVQC)
-#endif
+#include "teamradar.qh"
+#include "_all.qh"
-float vlen2d(vector v)
-{
- return sqrt(v.x * v.x + v.y * v.y);
-}
+#include "hud.qh"
-float vlen_maxnorm2d(vector v)
-{
- return max(v.x, v.y, -v.x, -v.y);
-}
+#include "../common/util.qh"
-float vlen_minnorm2d(vector v)
-{
- return min(max(v.x, -v.x), max(v.y, -v.y));
-}
+#include "../csqcmodellib/interpolate.qh"
vector teamradar_3dcoord_to_texcoord(vector in)
{
return out;
}
+
+vector teamradar_2dcoord_to_texcoord(vector in)
+{
+ vector out;
+ out = in;
+
+ out -= teamradar_origin2d;
+ if(v_flipped)
+ out_x = -out_x;
+ out = out / teamradar_size;
+
+ out_y = - out_y; // screen space is reversed
+ out = rotate(out, -teamradar_angle * DEG2RAD);
+
+ out += teamradar_origin3d_in_texcoord;
+
+ return out;
+}
+
+vector teamradar_texcoord_to_3dcoord(vector in,float z)
+{
+ vector out;
+ out_x = in_x * (mi_picmax_x - mi_picmin_x) + mi_picmin_x;
+ out_y = in_y * (mi_picmax_y - mi_picmin_y) + mi_picmin_y;
+ out_z = z;
+ return out;
+}
+
vector yinvert(vector v)
{
v.y = 1 - v.y;
void draw_teamradar_icon(vector coord, float icon, entity pingdata, vector rgb, float a)
{
- float dt;
- vector v;
- float i;
-
coord = teamradar_texcoord_to_2dcoord(teamradar_3dcoord_to_texcoord(coord));
drawpic(coord - '4 4 0', strcat("gfx/teamradar_icon_", ftos(icon)), '8 8 0', rgb, a, 0);
if(pingdata)
{
- for(i = 0; i < MAX_TEAMRADAR_TIMES; ++i)
+ for(int i = 0; i < MAX_TEAMRADAR_TIMES; ++i)
{
- dt = pingdata.(teamradar_times[i]);
+ float dt = pingdata.(teamradar_times[i]);
if(dt == 0)
continue;
dt = time - dt;
if(dt >= 1 || dt <= 0)
continue;
- v = '2 2 0' * teamradar_size * dt;
+ vector v = '2 2 0' * teamradar_size * dt;
drawpic(coord - 0.5 * v, "gfx/teamradar_ping", v, '1 1 1', (1 - dt) * a, DRAWFLAG_ADDITIVE);
}
}
// radar links
void Ent_RadarLink()
-{
+{SELFPARAM();
int sendflags = ReadByte();
InterpolateOrigin_Undo();