:GMS:
Estoy utilizando surfaces en este proyecto, no se que es lo que ocurre, cuando corro el programa todo va de maravilla los primeros segundos, pero luego se ralentiza y termina dando: "Out of Memory".Utilizo el "surface free" y aun asi parece seguir dando problema...
Este código va en el único objeto del juego, de los cuales solo tengo 2 instancias en el cuarto...
//Evento Create
//Evento Draw
AIUDA!..
Estoy utilizando surfaces en este proyecto, no se que es lo que ocurre, cuando corro el programa todo va de maravilla los primeros segundos, pero luego se ralentiza y termina dando: "Out of Memory".Utilizo el "surface free" y aun asi parece seguir dando problema...
Este código va en el único objeto del juego, de los cuales solo tengo 2 instancias en el cuarto...
//Evento Create
Código [Seleccionar]
xfinal = 640
yfinal = 0
n_puntos = 15 //numero de puntos intermedios...
desviacion = 70 //desviacion desde la linea central...
grosor = 25
color = c_blue
grosor_linea = 2
regularizacion = false
distancia = distance_to_point(xfinal,yfinal)
direccion = point_direction(x,y,xfinal,yfinal)
retardo = 0
max_retardo = 1
xpuntos = ds_list_create()
ypuntos = ds_list_create()
//Evento Draw
Código [Seleccionar]
//Creamos la lista de puntos intermedios...
xfinal = mouse_x
yfinal = mouse_y
distancia = point_distance(x,y,xfinal,yfinal)
direccion = point_direction(x,y,xfinal,yfinal)
n_puntos = random_range(10,24)
ds_list_destroy(xpuntos)
ds_list_destroy(ypuntos)
superficie = surface_create(distancia,(grosor+desviacion)*2)
xpuntos = ds_list_create()
ypuntos = ds_list_create()
xpactual = 0
ypactual = desviacion + grosor
draw_set_colour(c_white)
surface_set_target(superficie)
draw_clear_alpha(c_black,0)
draw_set_blend_mode(bm_max)
for (i=0; i<n_puntos; i+=1){
//añadimos los siguientes puntos al rayo...
ds_list_add(xpuntos, random_range(i*(distancia/n_puntos),(i+1)*(distancia/n_puntos)))
ds_list_add(ypuntos, random_range(grosor,(desviacion*2)-grosor))
//dibujamos en la surface un segmento del rayo...
draw_sprite_ext(spr_lineray,0,xpactual,ypactual,point_distance(xpactual,ypactual,ds_list_find_value(xpuntos,i),ds_list_find_value(ypuntos,i))/32,grosor/32,point_direction(xpactual,ypactual,ds_list_find_value(xpuntos,i),ds_list_find_value(ypuntos,i)),color,1)
draw_sprite_ext(spr_circleray,0,ds_list_find_value(xpuntos,i),ds_list_find_value(ypuntos,i),grosor/32,grosor/32,0,color,1)
draw_line_width(xpactual,ypactual,ds_list_find_value(xpuntos,i),ds_list_find_value(ypuntos,i),grosor_linea)
//actualizamos...
xpactual = ds_list_find_value(xpuntos,i)
ypactual = ds_list_find_value(ypuntos,i)
}
//creamos el segmento final...
draw_sprite_ext(spr_lineray,0,xpactual,ypactual,point_distance(xpactual,ypactual,distancia,desviacion+grosor)/32,grosor/32,point_direction(xpactual,ypactual,distancia,desviacion+grosor),color,1)
draw_line_width(xpactual,ypactual,distancia-1,desviacion+grosor,grosor_linea)
surface_reset_target()
draw_set_blend_mode(bm_normal)
spr_temp = sprite_create_from_surface(superficie,0,0,distancia-1,(grosor+desviacion)*2,false,false,0,grosor+desviacion)
surface_free(superficie)
draw_sprite_ext(spr_temp,0,x,y,1,1,direccion,c_white,1)
AIUDA!..