Posted By: metal
problem mit vec_to_screen [solved] - 03/18/10 14:46
hi,
ich versuche per vec_to_screen und draw_text den namen eines models über dessen kopf anzuzeigen, aber irgendwas haut da nicht hin und ich komm nicht drauf wo was falsch läuft.
der name wird zwar angezeigt, aber er flimmert quer über den bildschirm, anstatt über dem model zu bleiben.
hier der code:
typedef struct Starsystem{
STRING* name;
int x;
int y;
ENTITY* my_mdl;
struct Starsystem* next;
} Starsystem;
typedef struct{
Starsystem* first;
} List_Starsystem;
List_Starsystem* g_List_Starsystem={first=NULL;}
function init_starsystems(){
planet = ent_create("ball.mdl",vector(0,0,0),NULL);
Starsystem* tempsys = malloc(sizeof(Starsystem));
memset(tempsys,0,sizeof(Starsystem));
tempsys.name= "System1";
tempsys.x=0;
tempsys.y=0;
tempsys.my_mdl=planet;
tempsys.next=NULL;
g_List_Starsystem.first=tempsys;
planet = ent_create("ball.mdl",vector(128,-256,0),NULL);
Starsystem* tempsys = malloc(sizeof(Starsystem));
memset(tempsys,0,sizeof(Starsystem));
tempsys.name= "System2";
tempsys.x=128;
tempsys.y=-256;
tempsys.my_mdl=planet;
tempsys.next=NULL;
g_List_Starsystem.first.next=tempsys;
}
function debug_text(){
var tempvar[3];
me=g_List_Starsystem.first.next.my_mdl;
tempvar[0]=my.x;
tempvar[1]=my.y;
tempvar[2]=my.z+50;
while(1){
vec_to_screen(tempvar,camera);
if(vec_to_screen(tempvar,camera)!=NULL){
draw_text(g_List_Starsystem.first.next.name,tempvar[0],tempvar[1],vector(100,100,255));
}
draw_text(str_for_num(NULL,tempvar[1]),10,40,vector(100,100,2550));
draw_text(str_for_num(NULL,my.x),10,80,vector(100,100,255));
wait(1);
}
}
function main(){
...
init_starsystems();
debug_text();
}
die letzten beiden draw_text anweisungen hab ich eingebaut, um zu schauen was mit den koordinaten los ist, da zeigt die zweite anweisung 128 an, was auch so stimmt und die erste ändert sich laufend.
hat jemand ne ahnung wo da der fehler liegt...bin langsam zu blind um da noch weiterzukommen
ich versuche per vec_to_screen und draw_text den namen eines models über dessen kopf anzuzeigen, aber irgendwas haut da nicht hin und ich komm nicht drauf wo was falsch läuft.
der name wird zwar angezeigt, aber er flimmert quer über den bildschirm, anstatt über dem model zu bleiben.
hier der code:
typedef struct Starsystem{
STRING* name;
int x;
int y;
ENTITY* my_mdl;
struct Starsystem* next;
} Starsystem;
typedef struct{
Starsystem* first;
} List_Starsystem;
List_Starsystem* g_List_Starsystem={first=NULL;}
function init_starsystems(){
planet = ent_create("ball.mdl",vector(0,0,0),NULL);
Starsystem* tempsys = malloc(sizeof(Starsystem));
memset(tempsys,0,sizeof(Starsystem));
tempsys.name= "System1";
tempsys.x=0;
tempsys.y=0;
tempsys.my_mdl=planet;
tempsys.next=NULL;
g_List_Starsystem.first=tempsys;
planet = ent_create("ball.mdl",vector(128,-256,0),NULL);
Starsystem* tempsys = malloc(sizeof(Starsystem));
memset(tempsys,0,sizeof(Starsystem));
tempsys.name= "System2";
tempsys.x=128;
tempsys.y=-256;
tempsys.my_mdl=planet;
tempsys.next=NULL;
g_List_Starsystem.first.next=tempsys;
}
function debug_text(){
var tempvar[3];
me=g_List_Starsystem.first.next.my_mdl;
tempvar[0]=my.x;
tempvar[1]=my.y;
tempvar[2]=my.z+50;
while(1){
vec_to_screen(tempvar,camera);
if(vec_to_screen(tempvar,camera)!=NULL){
draw_text(g_List_Starsystem.first.next.name,tempvar[0],tempvar[1],vector(100,100,255));
}
draw_text(str_for_num(NULL,tempvar[1]),10,40,vector(100,100,2550));
draw_text(str_for_num(NULL,my.x),10,80,vector(100,100,255));
wait(1);
}
}
function main(){
...
init_starsystems();
debug_text();
}
die letzten beiden draw_text anweisungen hab ich eingebaut, um zu schauen was mit den koordinaten los ist, da zeigt die zweite anweisung 128 an, was auch so stimmt und die erste ändert sich laufend.
hat jemand ne ahnung wo da der fehler liegt...bin langsam zu blind um da noch weiterzukommen