/** * @brief draw a simple 'spotted' line from a spotter to the spotted */ static void CL_DrawLineOfSight (const le_t *watcher, const le_t *target) { ptl_t *ptl; vec3_t eyes; if (!watcher || !target) return; /* start is the watchers origin */ VectorCopy(watcher->origin, eyes); if (LE_IsCrouched(watcher)) eyes[2] += EYE_HT_CROUCH; else eyes[2] += EYE_HT_STAND; ptl = CL_ParticleSpawn("fadeTracer", 0, eyes, target->origin); if (LE_IsCivilian(target)) VectorSet(ptl->color, 0.2, 0.2, 1); }
static void UI_RadarNodeGetActorColor (const le_t* le, vec4_t color) { const int actorLevel = le->pos[2]; Vector4Set(color, 0, 1, 0, 1); /* use different alpha values for different levels */ if (actorLevel < cl_worldlevel->integer) color[3] = 0.5; else if (actorLevel > cl_worldlevel->integer) color[3] = 0.3; /* use different colors for different teams */ if (LE_IsCivilian(le)) { color[0] = 1; } else if (le->team != cls.team) { color[1] = 0; color[0] = 1; } /* show dead actors in full black */ if (LE_IsDead(le)) { Vector4Set(color, 0, 0, 0, 0.3); } }