diff options
author | Matt Ebb <matt@mke3.net> | 2009-10-06 06:45:42 +0400 |
---|---|---|
committer | Matt Ebb <matt@mke3.net> | 2009-10-06 06:45:42 +0400 |
commit | d28d3194f4460a28f5ea83246725193d6c18cec8 (patch) | |
tree | bbf8df04b240499c00dfc39620770d4ea323053f /source | |
parent | 69a24325742c617a9902376b061006dfb24f0a3c (diff) |
* Added 'set object as camera' operator
3D View: View -> Cameras -> Set Object as Camera (Ctrl Numpad 0)
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_intern.h | 1 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_ops.c | 2 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_view.c | 32 |
3 files changed, 35 insertions, 0 deletions
diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h index e7ab79ab955..d80cec9ad48 100644 --- a/source/blender/editors/space_view3d/view3d_intern.h +++ b/source/blender/editors/space_view3d/view3d_intern.h @@ -122,6 +122,7 @@ void VIEW3D_OT_select_lasso(struct wmOperatorType *ot); /* view3d_view.c */ void VIEW3D_OT_smoothview(struct wmOperatorType *ot); void VIEW3D_OT_setcameratoview(struct wmOperatorType *ot); +void VIEW3D_OT_setobjectascamera(struct wmOperatorType *ot); void VIEW3D_OT_localview(struct wmOperatorType *ot); void VIEW3D_OT_game_start(struct wmOperatorType *ot); void VIEW3D_OT_fly(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index f9cedbd28a1..a151ff3e73a 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -82,6 +82,7 @@ void view3d_operatortypes(void) WM_operatortype_append(VIEW3D_OT_cursor3d); WM_operatortype_append(VIEW3D_OT_select_lasso); WM_operatortype_append(VIEW3D_OT_setcameratoview); + WM_operatortype_append(VIEW3D_OT_setobjectascamera); WM_operatortype_append(VIEW3D_OT_drawtype); WM_operatortype_append(VIEW3D_OT_localview); WM_operatortype_append(VIEW3D_OT_game_start); @@ -216,6 +217,7 @@ void view3d_keymap(wmWindowManager *wm) WM_keymap_add_item(keymap, "VIEW3D_OT_render_border", BKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "VIEW3D_OT_camera_to_view", PAD0, KM_PRESS, KM_ALT|KM_CTRL, 0); + WM_keymap_add_item(keymap, "VIEW3D_OT_object_as_camera", PAD0, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "VIEW3D_OT_snap_menu", SKEY, KM_PRESS, KM_SHIFT, 0); diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index f722a97963d..fc332cf6293 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -434,6 +434,38 @@ void VIEW3D_OT_setcameratoview(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } +static int view3d_setobjectascamera_exec(bContext *C, wmOperator *op) +{ + View3D *v3d = CTX_wm_view3d(C); + RegionView3D *rv3d= CTX_wm_region_view3d(C); + Scene *scene= CTX_data_scene(C); + + if(BASACT) { + rv3d->persp= V3D_CAMOB; + v3d->camera= OBACT; + smooth_view(C, NULL, v3d->camera, rv3d->ofs, rv3d->viewquat, &rv3d->dist, &v3d->lens); + } + + WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, CTX_data_scene(C)); + + return OPERATOR_FINISHED; +} + +void VIEW3D_OT_setobjectascamera(wmOperatorType *ot) +{ + + /* identifiers */ + ot->name= "Set Active Object as Camera"; + ot->description= "Set the active object as the active camera for this view or scene."; + ot->idname= "VIEW3D_OT_object_as_camera"; + + /* api callbacks */ + ot->exec= view3d_setobjectascamera_exec; + ot->poll= ED_operator_view3d_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} /* ********************************** */ /* create intersection coordinates in view Z direction at mouse coordinates */ |