else if(self.maxdistance > 0)
a *= pow(bound(0, (waypointsprite_fadedistance - dist) / (waypointsprite_fadedistance - waypointsprite_normdistance), 1), waypointsprite_distancealphaexponent) * (1 - waypointsprite_minalpha) + waypointsprite_minalpha;
+ vector rgb;
+ rgb = self.teamradar_color;
+ rgb = spritelookupcolor(spriteimage, rgb);
+ if(rgb == '0 0 0')
+ {
+ self.teamradar_color = '1 0 1';
+ print(sprintf("WARNING: sprite of name %s has no color, using pink so you notice it\n", spriteimage));
+ }
+
+ if(time - floor(time) > 0.5)
+ {
+ if(self.helpme && time < self.helpme)
+ a *= SPRITE_HELPME_BLINK;
+ else
+ a *= spritelookupblinkvalue(spriteimage);
+ }
+
+ if(a > 1)
+ {
+ rgb *= a;
+ a = 1;
+ }
+
if(a <= 0)
return;
-
- // draw the sprite image
+
+ rgb = fixrgbexcess(rgb);
+
vector o;
- float rot;
- o = project_3d_to_2d(self.origin);
- rot = 0;
+ float ang;
- if(o_z < 0 || o_x < 0 || o_y < 0 || o_x > vid_conwidth || o_y > vid_conheight)
+ o = project_3d_to_2d(self.origin);
+ if(o_z < 0
+ || o_x < (vid_conwidth * waypointsprite_edgeoffset_left)
+ || o_y < (vid_conheight * waypointsprite_edgeoffset_top)
+ || o_x > (vid_conwidth - (vid_conwidth * waypointsprite_edgeoffset_right))
+ || o_y > (vid_conheight - (vid_conheight * waypointsprite_edgeoffset_bottom)))
{
// scale it to be just in view
vector d;
if(d_z * f1 > 0)
{
// RIGHT edge
- d = d * (0.5 / f1);
+ d = d * ((0.5 - waypointsprite_edgeoffset_right) / f1);
- rot = 3;
}
else
{
// LEFT edge
- d = d * (-0.5 / f1);
+ d = d * (-(0.5 - waypointsprite_edgeoffset_left) / f1);
- rot = 1;
}
}
else
if(d_z * f2 > 0)
{
// BOTTOM edge
- d = d * (0.5 / f2);
+ d = d * ((0.5 - waypointsprite_edgeoffset_bottom) / f2);
- rot = 0;
}
else
{
// TOP edge
- d = d * (-0.5 / f2);
+ d = d * (-(0.5 - waypointsprite_edgeoffset_top) / f2);
- rot = 2;
}
}
o = d + '0.5 0 0' * vid_conwidth + '0 0.5 0' * vid_conheight;
}
- o_z = 0;
-
- float vidscale;
- vidscale = max(vid_conwidth / vid_width, vid_conheight / vid_height);
-
- t = stof(db_get(tempdb, strcat("/spriteframes/", spriteimage)));
- if(t == 0)
- spriteimage = strcat("models/sprites/", spriteimage);
else
- spriteimage = strcat("models/sprites/", spriteimage, "_frame", ftos(mod(floor((max(0, time - self.spawntime)) * 2), t)));
+ {
+ #if 1
+ ang = M_PI;
+ #else
+ vector d;
+ d = o - '0.5 0 0' * vid_conwidth - '0 0.5 0' * vid_conheight;
+ ang = atan2(-d_x, -d_y);
+ #endif
+ }
+ o_z = 0;
float edgedistance_min, crosshairdistance;
- edgedistance_min = min4(o_y, o_x,vid_conwidth - o_x, vid_conheight - o_y);
+ edgedistance_min = min4((o_y - (vid_conheight * waypointsprite_edgeoffset_top)),
+ (o_x - (vid_conwidth * waypointsprite_edgeoffset_left)),
+ (vid_conwidth - (vid_conwidth * waypointsprite_edgeoffset_right)) - o_x,
+ (vid_conheight - (vid_conheight * waypointsprite_edgeoffset_bottom)) - o_y);
+ float vidscale;
+ vidscale = max(vid_conwidth / vid_width, vid_conheight / vid_height);
+
crosshairdistance = sqrt( pow(o_x - vid_conwidth/2, 2) + pow(o_y - vid_conheight/2, 2) );
t = waypointsprite_scale * vidscale;