AlexGordon, вот что я шашёл Code
//===============================
// buz: flashlight managenemt
//===============================
void SetupFlashlight(vec3_t origin, vec3_t angles, float time, float frametime)
{
if (!g_flashlight)
return;
static float add = 0;
float addideal = 0;
pmtrace_t tr;
vec3_t fwd, right, up;
AngleVectors(angles, fwd, right, up);
fwd = origin + (fwd*150);
gEngfuncs.pEventAPI->EV_SetTraceHull( 2 );
gEngfuncs.pEventAPI->EV_PlayerTrace( origin, fwd, PM_NORMAL, -1, &tr );
if (tr.fraction < 1.0)
addideal = (1 - tr.fraction)*30;
float speed = (add - addideal)*10;
if (speed < 0) speed *= -1;
if (add < addideal)
{
add += frametime*speed;
if (add > addideal) add = addideal;
}
else if (add > addideal)
{
add -= frametime*speed;
if (add < addideal) add = addideal;
}
DynamicLight *flashlight = MY_AllocDlight(-666);
flashlight->origin = origin + Vector(0,0,-13) + (right*5);
flashlight->radius = 700;
flashlight->die = time + 0.01;
flashlight->angles = angles;
strcpy(flashlight->spot_texture, "gfx/flashlight.tga");
flashlight->cone_hor = 50+add;
flashlight->cone_ver = 50+add;
flashlight->color = Vector(1.4, 1.4, 1.4); // make model dymanic lighting happy
}
если неошибаюсь эта функция есть и в чистом хл1сдк