diff --git a/source/blender/include/BIF_meshtools.h b/source/blender/include/BIF_meshtools.h index c61f43c08b6..a08f800d7b6 100644 --- a/source/blender/include/BIF_meshtools.h +++ b/source/blender/include/BIF_meshtools.h @@ -39,7 +39,8 @@ struct EditVert; extern int join_mesh(void); extern void sort_faces(void); -extern void objects_bake_render(int use_menu); +extern void objects_bake_render_menu(void); +extern void objects_bake_render(short event); extern long mesh_octree_table(struct Object *ob, float *co, char mode); extern int mesh_get_x_mirror_vert(struct Object *ob, int index); diff --git a/source/blender/src/header_info.c b/source/blender/src/header_info.c index dc7502640d1..dd0f6973153 100644 --- a/source/blender/src/header_info.c +++ b/source/blender/src/header_info.c @@ -1640,6 +1640,33 @@ static uiBlock *info_timelinemenu(void *arg_unused) /************************** RENDER *****************************/ +void do_info_render_bakemenu(void *arg, int event) +{ + + objects_bake_render(event); + + allqueue(REDRAWINFO, 0); +} + +static uiBlock *info_render_bakemenu(void *arg_unused) +{ + uiBlock *block; + short yco= 0; + + block= uiNewBlock(&curarea->uiblocks, "render_bakemenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin); + uiBlockSetButmFunc(block, do_info_render_bakemenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Full Render|Ctrl Alt B, 1", 0, yco-=20, 160, 19, NULL, 0.0, 0.0, 1, 1, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Ambient Occlusion|Ctrl Alt B, 2", 0, yco-=20, 160, 19, NULL, 0.0, 0.0, 1, 2, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Normals|Ctrl Alt B, 3", 0, yco-=20, 160, 19, NULL, 0.0, 0.0, 1, 3, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Texture Only|Ctrl Alt B, 4", 0, yco-=20, 160, 19, NULL, 0.0, 0.0, 1, 4, ""); + + uiBlockSetDirection(block, UI_RIGHT); + uiTextBoundsBlock(block, 50); + + return block; +} + static void do_info_rendermenu(void *arg, int event) { @@ -1682,9 +1709,6 @@ static void do_info_rendermenu(void *arg, int event) case 7: extern_set_butspace(F10KEY, 0); break; - case 8: - objects_bake_render(1); - break; } allqueue(REDRAWINFO, 0); } @@ -1701,7 +1725,10 @@ static uiBlock *info_rendermenu(void *arg_unused) uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Render Current Frame|F12", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Render Animation|Ctrl F12", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Bake-Render Meshes|ALT+Ctrl B", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBlockBut(block, info_render_bakemenu, NULL, ICON_RIGHTARROW_THIN, "Bake Render Meshes", 0, yco-=20, 120, 19, ""); uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); diff --git a/source/blender/src/meshtools.c b/source/blender/src/meshtools.c index a0d720b0d51..d31004fd1c3 100644 --- a/source/blender/src/meshtools.c +++ b/source/blender/src/meshtools.c @@ -784,15 +784,20 @@ static void *do_bake_render(void *bake_v) return NULL; } -/* all selected meshes with UV maps are rendered for current scene visibility */ -void objects_bake_render(int use_menu) + +void objects_bake_render_menu(void) { short event; + + event= pupmenu("Bake Selected Meshes %t|Full Render %x1|Ambient Occlusion %x2|Normals %x3|Texture Only %x4"); - if(use_menu) - event= pupmenu("Bake Selected Meshes %t|Full Render %x1|Ambient Occlusion %x2|Normals %x3|Texture Only %x4"); - else - event= G.scene->r.bake_mode; + objects_bake_render(event); +} + +/* all selected meshes with UV maps are rendered for current scene visibility */ +void objects_bake_render(short event) +{ + if(event==0) event= G.scene->r.bake_mode; if(event>0) { Render *re= RE_NewRender("_Bake View_"); diff --git a/source/blender/src/space.c b/source/blender/src/space.c index a5cd8e61872..aa94e87f85a 100644 --- a/source/blender/src/space.c +++ b/source/blender/src/space.c @@ -1562,7 +1562,7 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) } } else if(G.qual== (LR_ALTKEY|LR_CTRLKEY)) - objects_bake_render(1); + objects_bake_render_menu(); else if(G.qual==0) borderselect(); break;