///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);
Comments