Hello.
A simple contribution :
short video Download !It works well for 'unlimited' (radar) objects using pan_create.
Have fun !
gOmO_3
EDIT :
Adjust the radar's range by changing the make_scan.z value :
function init_radar {
panel_radar.visible = on;
make_scan.z = 2000; // radar's range
panel_radar.pos_y = screen_size.y-198;
shadow_threshold = 30;
}
If you wanted constant radar elements, you should use this code :
Code:
///////////////////////////////////////////////////////////////////////////////////
// Radar code for unlimited objects
// by Felix Pohl aka gOmO_3 | 2006
// no credit required, though I would be grateful
// how to use : call "init_radar" once (for example in
// your main function) and assign "g3_handle_radar" to
// your actions. don't forget to include this wdl !
// Predator model : Kai Kieschnick (soulreaver2@gmx.de)
////////////////////////////////////////////////////////////////////////////
entity* ent_temp;
var make_scan;
bmap bmp_radar = <radar.tga>;
bmap bmp_radar_enemy = <enemy.tga>;
font fnt_dist = "Porky's",1,40;
panel panel_radar {
pos_x = 32;
pos_y = 570;
bmap = bmp_radar;
flags = refresh;
layer = 2;
}
panel* pan_temp;
function init_radar {
panel_radar.visible = on;
make_scan.z = 2000; // radar's range
panel_radar.pos_y = screen_size.y-198;
shadow_threshold = 30;
}
function g3_handle_radar {
while(me) {
if(vec_dist(my.x,camera.x) < make_scan.z) {
pan_temp = pan_create("bmap = bmp_radar_enemy; flags = visible,refresh,filter;",4);
my.skill92 = handle(pan_temp);
while(vec_dist(my.x,camera.x) < make_scan.z) {
pan_temp = ptr_for_handle(my.skill92);
vec_set(temp,camera.x);
vec_sub(temp,my.x);
vec_to_angle(my.skill97,temp);
my.skill98 = vec_dist(my.x,camera.x);
pan_temp.scale_x = 0.85-my.skill98/(make_scan.z*1.5);
pan_temp.scale_y = pan_temp.scale_x;
pan_temp.pos_x = panel_radar.pos_x+96-my.skill98/(make_scan.z*1.2/100)*sin(camera.pan-my.skill97)-16*pan_temp.scale_x;
pan_temp.pos_y = panel_radar.pos_y+96+my.skill98/(make_scan.z*1.2/100)*cos(camera.pan-my.skill97)-16*pan_temp.scale_x;
wait(1);
}
pan_temp = ptr_for_handle(my.skill92);
pan_remove(pan_temp);
}
wait(1);
}
}