diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-05-04 19:04:28 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-05-04 19:04:28 +0400 |
commit | 22a34cc83bc75a40d6b6f278119c14f5bee42dbd (patch) | |
tree | 69815fd09ad4f02b29efb80e505943346087bb28 /source | |
parent | a7cbd5008e830224e73e2e55f89d0783ded422e5 (diff) |
render hide/unhide (Ctrl+H, Ctrl+Alt+H, Ctrl+Alt+Shift+H)
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/object/object_edit.c | 72 | ||||
-rw-r--r-- | source/blender/editors/object/object_intern.h | 2 | ||||
-rw-r--r-- | source/blender/editors/object/object_ops.c | 9 |
3 files changed, 82 insertions, 1 deletions
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 53d614626ad..8937b4ca99f 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -229,6 +229,78 @@ void OBJECT_OT_restrictview_set(wmOperatorType *ot) } +/* 99% same as above except no need for scene refreshing (TODO, update render preview) */ +static int object_restrictrender_clear_exec(bContext *C, wmOperator *op) +{ + ScrArea *sa= CTX_wm_area(C); + View3D *v3d= sa->spacedata.first; + Scene *scene= CTX_data_scene(C); + Base *base; + + + /* XXX need a context loop to handle such cases */ + for(base = FIRSTBASE; base; base=base->next){ + if((base->lay & v3d->lay) && base->object->restrictflag & OB_RESTRICT_RENDER) { + base->object->restrictflag &= ~OB_RESTRICT_RENDER; + } + } + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_OUTLINER, NULL); + return OPERATOR_FINISHED; +} + +void OBJECT_OT_restrictrender_clear(wmOperatorType *ot) +{ + + /* identifiers */ + ot->name= "Clear Restrict View"; + ot->description = "Reveal the render object by setting the restrictrender flag"; + ot->idname= "OBJECT_OT_restrictrender_clear"; + + /* api callbacks */ + ot->exec= object_restrictrender_clear_exec; + ot->poll= ED_operator_view3d_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +static int object_restrictrender_set_exec(bContext *C, wmOperator *op) +{ + int unselected= RNA_boolean_get(op->ptr, "unselected"); + + CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + if(!unselected) { + if (base->flag & SELECT){ + base->object->restrictflag |= OB_RESTRICT_RENDER; + } + } + else { + if (!(base->flag & SELECT)){ + base->object->restrictflag |= OB_RESTRICT_RENDER; + } + } + } + CTX_DATA_END; + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_OUTLINER, NULL); + return OPERATOR_FINISHED; +} + +void OBJECT_OT_restrictrender_set(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Set Restrict Render"; + ot->description = "Hide the render object by setting the restrictrender flag"; + ot->idname= "OBJECT_OT_restrictrender_set"; + + /* api callbacks */ + ot->exec= object_restrictrender_set_exec; + ot->poll= ED_operator_view3d_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + RNA_def_boolean(ot->srna, "unselected", 0, "Unselected", "Hide unselected rather than selected objects."); +} /* ******************* toggle editmode operator ***************** */ diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h index 90c5f48ffeb..0f79168e5b3 100644 --- a/source/blender/editors/object/object_intern.h +++ b/source/blender/editors/object/object_intern.h @@ -77,6 +77,8 @@ void OBJECT_OT_editmode_toggle(struct wmOperatorType *ot); void OBJECT_OT_posemode_toggle(struct wmOperatorType *ot); void OBJECT_OT_restrictview_set(struct wmOperatorType *ot); void OBJECT_OT_restrictview_clear(struct wmOperatorType *ot); +void OBJECT_OT_restrictrender_set(struct wmOperatorType *ot); +void OBJECT_OT_restrictrender_clear(struct wmOperatorType *ot); void OBJECT_OT_proxy_make(struct wmOperatorType *ot); void OBJECT_OT_shade_smooth(struct wmOperatorType *ot); void OBJECT_OT_shade_flat(struct wmOperatorType *ot); diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index 5ddf33ca170..9efb8d71b77 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -74,6 +74,8 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_proxy_make); WM_operatortype_append(OBJECT_OT_restrictview_clear); WM_operatortype_append(OBJECT_OT_restrictview_set); + WM_operatortype_append(OBJECT_OT_restrictrender_clear); + WM_operatortype_append(OBJECT_OT_restrictrender_set); WM_operatortype_append(OBJECT_OT_shade_smooth); WM_operatortype_append(OBJECT_OT_shade_flat); WM_operatortype_append(OBJECT_OT_paths_calculate); @@ -314,7 +316,12 @@ void ED_keymap_object(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "OBJECT_OT_restrictview_clear", HKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "OBJECT_OT_restrictview_set", HKEY, KM_PRESS, 0, 0); - RNA_boolean_set(WM_keymap_add_item(keymap, "OBJECT_OT_restrictview_set", HKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "unselected", 1); + RNA_boolean_set(WM_keymap_add_item(keymap, "OBJECT_OT_restrictview_set", HKEY, KM_PRESS, KM_SHIFT, KM_CTRL)->ptr, "unselected", 1); + + /* same as above but for rendering */ + WM_keymap_add_item(keymap, "OBJECT_OT_restrictrender_clear", HKEY, KM_PRESS, KM_ALT|KM_CTRL, 0); + WM_keymap_add_item(keymap, "OBJECT_OT_restrictrender_set", HKEY, KM_PRESS, KM_CTRL, 0); + RNA_boolean_set(WM_keymap_add_item(keymap, "OBJECT_OT_restrictrender_set", HKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0)->ptr, "unselected", 1); WM_keymap_add_item(keymap, "OBJECT_OT_move_to_layer", MKEY, KM_PRESS, 0, 0); |