x = mouse_x;
y = mouse_y;
var dis = point_distance(x,y,xprevious,yprevious),
dir = point_direction(x,y,xprevious,yprevious);
while dis>0 && place_meeting(x,y,obj_solid) {
dis--;
x = xprevious + lengthdir_x(dis,dir);
y = yprevious + lengthdir_y(dis,dir);
}