///obj_camera ///CREATE EVENT enum cammode { follow_object = 0, ///Can set these equal to a number, or string like "hello" follow_mouse_drag = 1, ///Without designation, assumes 1,2,3... follow_mouse_border = "hello:, follow_mouse_peek, move_to_target, move_to_follow_object, } cammode.follow_mouse_border ///or .string as called in enum. Will come up in autocomplete mode = 0; /// = 0 is default for follow_object following = obj_player; boundless = false; ///boundaries for camera movement view_w = camera_get_view_width(view_camera[0]); view_h = camera_get_view_height(view_camera[0]); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ///STEP EVENT cx = camera_get_view_x(view_camera[0]); cy = camera_get_view_y(view_camera[0]); switch(mode){ case cammode.follow_object: ///colon, not semicolon if(!instance_exists(following)) break; ///Follow Object Finished cx = following.x - (view_w/2); cy = following.y - (view_h/2); break; case cammode.follow_mouse_drag: break; case cammode.follow_mouse_border: if(!point_in_rectangle(mouse_x, mouse_y, cx+(view_w*0.1), cy+(view_h*0.1), cx+(view_w*0.9), cy+(view_h*0.9))){ ///need a command to clamp to room boundaries cx = lerp(cx, mouse_x-(view_w/2), 0.05); cy = lerp(cy, mouse_y-(view_h/2), 0.05); } break; case cammode.follow_mouse_peek: ///SUPERIMPORTANT cx = lerp(following.x, mouse_x, 0.2)-(view_w/2); cy = lerp(following.y, mouse_y, 0.2)-(view_h/2); break; case cammode.move_to_target: break; case cammode.move_to_follow_object: break; } if(!boundless){ cx = clamp(cx, 0, room_width-view_w); cy = clamp(cy, 0, room_heigt-view_h); } camera_set_view_pos(view_camera[0], cx, cy);