* Added 'set object as camera' operator
authorMatt Ebb <matt@mke3.net>
Tue, 6 Oct 2009 02:45:42 +0000 (02:45 +0000)
committerMatt Ebb <matt@mke3.net>
Tue, 6 Oct 2009 02:45:42 +0000 (02:45 +0000)
3D View: View -> Cameras -> Set Object as Camera  (Ctrl Numpad 0)

source/blender/editors/space_view3d/view3d_intern.h
source/blender/editors/space_view3d/view3d_ops.c
source/blender/editors/space_view3d/view3d_view.c

index e7ab79ab9557536e718700f46525e2d6a9652c7d..d80cec9ad480d6b39033cb52b699a1addd289865 100644 (file)
@@ -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);
index f9cedbd28a1d2d18e8594096958831d6ee5576e3..a151ff3e73a64ad52301c1f3aae215a8d103b387 100644 (file)
@@ -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);
 
index f722a97963d50d6815eb78d92e80156802f7b343..fc332cf629347024f2527d7e7c5e7e67e8a39b7d 100644 (file)
@@ -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 */