zampa
Member
I have textbox object that spells the text with a type writer effect, it works as intended but when i launch debug mode and start profiling it shows me that it is taking up of 60% of the step, the draw_text event in particular seems the worst offender, it this normal or am i doing something wrong
Code:
while(curr_char < max_char){
char_list_len = ds_list_size(char_list);
max_char = clamp(max_char,0,char_list_len);
var next_modulo_pos = ds_grid_get(modulo_grid,mods_num,4) - 1;
if(next_modulo_pos == curr_char){
var what_mod = ds_grid_get(modulo_grid,mods_num,0);
if(what_mod == "#"){
line++;
text_x_space = 0;
mods_num++;
}
else{
text_size = ds_grid_get(modulo_grid,mods_num,0);
text_color = ds_grid_get(modulo_grid,mods_num,1);
text_speed = ds_grid_get(modulo_grid,mods_num,2);
text_effect = ds_grid_get(modulo_grid,mods_num,3);
mods_num++;
}
}
#region // apply effect
switch(text_size){
case(fnt_txt_small):
var txt_offset_y = font_get_size(text_size)/2;
break;
case(fnt_txt_normal):
var txt_offset_y = 0;
break;
case(fnt_txt_big):
var txt_offset_y = -font_get_size(text_size)/2;
break;
}
switch(text_effect){
case(0):
var extra_x = 0;
var extra_y = 0;
break;
case(1):
var extra_x = random_range(-0.5,0.5);
var extra_y = random_range(-0.5,0.5);
break;
case(2):
var extra_x = random_range(-1,1);
var extra_y = random_range(-1,1);
break;
case(3):
var extra_x = 0;
extra_y = 8*sin(wavy_angle+wavy_chars*0.5);
wavy_chars++;
break;
}
#endregion
var char = ds_list_find_value(char_list,curr_char);
draw_set_font(text_size);
draw_set_color(text_color);
text_y_space = txt_offset_y + line * 30;
draw_text(text_offset_x+text_x_space+extra_x,text_offset_y+text_y_space+extra_y,char);
text_x_space = font_get_size(text_size) + text_x_space;
draw_set_color(c_white);
draw_set_font(fnt_txt_normal);
curr_char++;
if(wavy_chars == 1){
wavy_angle+=0.1;
if(wavy_angle == 360) wavy_angle = 0;
}
}