hi~ maybe some of you think it's useful:
/////////////////////////////////////////////////////////////
//IN:
//from_ent: scanner
//target_ent: target
//view_dist:viewdistance
//angle_diff: the half angle of the view
//*******************
//OUT:
// true scanner can see ;
//false--can't
var Tsee_ent(ENTITY* form_ent, ENTITY* target_ent,var view_dist,var angle_diff)
{
//for performance reason, we first check the dist
if(vec_dist(form_ent.x,target_ent.x)<view_dist)
{
VECTOR view_dist_vec,my_angle_vec;
vec_set(view_dist_vec.x,form_ent.x);
vec_set(my_angle_vec.x,form_ent.x);
vec_diff(view_dist_vec,target_ent.x,form_ent.x)
vec_for_angle(my_angle_vec,form_ent.pan);
var result_ang = acosv(vec_dot(view_dist_vec,my_angle_vec)/(vec_length(view_dist_vec)*vec_length(my_angle_vec)));
if(result_ang<angle_diff)
{
if(c_trace(form_ent.x,target_ent.x, IGNORE_ME | IGNORE_PASSABLE )> 0 &&you==target_ent)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
else
{
return false;
}
}


PS:the function only use c_trace,and vector caculation , so it may run faster a lot than normally using c_scan combine c_trace


uhh..the comments are chinese ,so i delete them.........sorry for my english..



Full of my eyes are class struggles.....