Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_view3d/view3d_view.c
| Show First 20 Lines • Show All 769 Lines • ▼ Show 20 Lines | else { | ||||
| /* should be moved to better initialize later on XXX */ | /* should be moved to better initialize later on XXX */ | ||||
| if (rv3d->viewlock & RV3D_LOCKED) | if (rv3d->viewlock & RV3D_LOCKED) | ||||
| ED_view3d_lock(rv3d); | ED_view3d_lock(rv3d); | ||||
| quat_to_mat4(rv3d->viewmat, rv3d->viewquat); | quat_to_mat4(rv3d->viewmat, rv3d->viewquat); | ||||
| if (rv3d->persp == RV3D_PERSP) rv3d->viewmat[3][2] -= rv3d->dist; | if (rv3d->persp == RV3D_PERSP) rv3d->viewmat[3][2] -= rv3d->dist; | ||||
| if (v3d->ob_centre) { | if (v3d->ob_centre) { | ||||
| Object *ob = v3d->ob_centre; | Object *ob_eval = DEG_get_evaluated_object(depsgraph, v3d->ob_centre); | ||||
| float vec[3]; | float vec[3]; | ||||
| copy_v3_v3(vec, ob->obmat[3]); | copy_v3_v3(vec, ob_eval->obmat[3]); | ||||
| if (ob->type == OB_ARMATURE && v3d->ob_centre_bone[0]) { | if (ob_eval->type == OB_ARMATURE && v3d->ob_centre_bone[0]) { | ||||
| bPoseChannel *pchan = BKE_pose_channel_find_name(ob->pose, v3d->ob_centre_bone); | bPoseChannel *pchan = BKE_pose_channel_find_name(ob_eval->pose, v3d->ob_centre_bone); | ||||
| if (pchan) { | if (pchan) { | ||||
| copy_v3_v3(vec, pchan->pose_mat[3]); | copy_v3_v3(vec, pchan->pose_mat[3]); | ||||
| mul_m4_v3(ob->obmat, vec); | mul_m4_v3(ob_eval->obmat, vec); | ||||
| } | } | ||||
| } | } | ||||
| translate_m4(rv3d->viewmat, -vec[0], -vec[1], -vec[2]); | translate_m4(rv3d->viewmat, -vec[0], -vec[1], -vec[2]); | ||||
| use_lock_ofs = true; | use_lock_ofs = true; | ||||
| } | } | ||||
| else if (v3d->ob_centre_cursor) { | else if (v3d->ob_centre_cursor) { | ||||
| float vec[3]; | float vec[3]; | ||||
| copy_v3_v3(vec, ED_view3d_cursor3d_get(scene, (View3D *)v3d)->location); | copy_v3_v3(vec, ED_view3d_cursor3d_get(scene, (View3D *)v3d)->location); | ||||
| ▲ Show 20 Lines • Show All 289 Lines • Show Last 20 Lines | |||||