diff options
-rw-r--r-- | release/scripts/ui/space_view3d.py | 2 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_view.c | 5 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_view3d_types.h | 2 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_space.c | 5 |
4 files changed, 13 insertions, 1 deletions
diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index f7238364142..2cc05cb5e2d 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -1951,6 +1951,8 @@ class VIEW3D_PT_view3d_properties(bpy.types.Panel): col.prop(view, "lock_object", text="") if view.lock_object and view.lock_object.type == 'ARMATURE': col.prop_search(view, "lock_bone", view.lock_object.data, "bones", text="") + elif not view.lock_object: + col.prop(view, "lock_cursor", text="Lock to Cursor") col = layout.column(align=True) col.label(text="Clip:") diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 6cbce905f33..f876e420d89 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -1205,6 +1205,11 @@ void setviewmatrixview3d(Scene *scene, View3D *v3d, RegionView3D *rv3d) } translate_m4( rv3d->viewmat,-vec[0], -vec[1], -vec[2]); } + else if (v3d->ob_centre_cursor) { + float vec[3]; + copy_v3_v3(vec, give_cursor(scene, v3d)); + translate_m4(rv3d->viewmat, -vec[0], -vec[1], -vec[2]); + } else translate_m4( rv3d->viewmat,rv3d->ofs[0], rv3d->ofs[1], rv3d->ofs[2]); } } diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h index 9de5ad198a6..307e111abe6 100644 --- a/source/blender/makesdna/DNA_view3d_types.h +++ b/source/blender/makesdna/DNA_view3d_types.h @@ -160,7 +160,7 @@ typedef struct View3D { * The drawing mode for the 3d display. Set to OB_WIRE, OB_SOLID, * OB_SHADED or OB_TEXTURE */ short drawtype; - short pad2; + short ob_centre_cursor; /* optional bool for 3d cursor to define center */ short scenelock, around, pad3; short flag, flag2; diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 70ccd4f8a6e..8d807d0cc8c 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -1016,6 +1016,11 @@ static void rna_def_space_view3d(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Lock Bone", "3D View center is locked to this bone's position"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + prop= RNA_def_property(srna, "lock_cursor", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "ob_centre_cursor", 1); + RNA_def_property_ui_text(prop, "Lock Bone", "3D View center is locked to the cursor's position"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + prop= RNA_def_property(srna, "viewport_shade", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "drawtype"); RNA_def_property_enum_items(prop, viewport_shade_items); |