196 const float obmat[4][4],
197 const bool use_parent,
199 const float view_mat[4][4])
202 bool view_changed =
false;
212 float obmat_noprotect[4][4], obmat_protect[4][4];
218 if (!
equals_m4m4(obmat_noprotect, obmat_protect)) {
221 float diff_mat[4][4];
222 float view_mat_protect[4][4];
223 float obmat_noprotect_inv[4][4];
225 mul_m4_m4m4(diff_mat, obmat_protect, obmat_noprotect_inv);
236 const bool use_autokey,
238 const bool do_rotate,
239 const bool do_translate)
250 float view_mat[4][4];
257 float prev_view_imat[4][4];
258 float diff_mat[4][4];
259 float parent_mat[4][4];
273 ob_update = ob_update->
parent;
281 float scale_mat[4][4];
General operations, lookup, etc. for blender objects.
void BKE_object_tfm_restore(Object *ob, void *obtfm_pt)
void BKE_object_apply_mat4(Object *ob, const float mat[4][4], bool use_compat, bool use_parent)
void BKE_object_tfm_protected_backup(const Object *ob, ObjectTfmProtectedChannels *obtfm)
void BKE_object_tfm_protected_restore(Object *ob, const ObjectTfmProtectedChannels *obtfm, short protectflag)
void BKE_object_to_mat4(const Object *ob, float r_mat[4][4])
void * BKE_object_tfm_backup(Object *ob)
void BKE_object_where_is_calc(Depsgraph *depsgraph, Scene *scene, Object *ob)
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
void size_to_mat4(float R[4][4], const float size[3])
bool equals_m4m4(const float mat1[4][4], const float mat2[4][4])
void copy_m4_m4(float m1[4][4], const float m2[4][4])
bool invert_m4_m4(float inverse[4][4], const float mat[4][4])
void copy_qt_qt(float q[4], const float a[4])
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void negate_v3_v3(float r[3], const float a[3])
void DEG_id_tag_update(ID *id, unsigned int flags)
Object is a sort of wrapper for general info.
@ OB_TRANSFORM_ADJUST_ROOT_PARENT_FOR_VIEW_LOCK
void ED_view3d_distance_set(RegionView3D *rv3d, float dist)
void ED_view3d_to_m4(float mat[4][4], const float ofs[3], const float quat[4], float dist)
void ED_view3d_from_m4(const float mat[4][4], float ofs[3], float quat[4], const float *dist)
bool ED_view3d_camera_autokey(const Scene *scene, ID *id_key, bContext *C, bool do_rotate, bool do_translate)
Read Guarded memory(de)allocation.
const Depsgraph * depsgraph
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
float view_mat_prev[4][4]
View3DCameraControl * ED_view3d_cameracontrol_acquire(Depsgraph *depsgraph, Scene *scene, View3D *v3d, RegionView3D *rv3d)
BLI_INLINE Object * view3d_cameracontrol_object(const View3DCameraControl *vctrl)
static bool object_apply_mat4_with_protect(Object *ob, const float obmat[4][4], const bool use_parent, RegionView3D *rv3d, const float view_mat[4][4])
Object * ED_view3d_cameracontrol_object_get(View3DCameraControl *vctrl)
void ED_view3d_cameracontrol_update(View3DCameraControl *vctrl, const bool use_autokey, bContext *C, const bool do_rotate, const bool do_translate)
void ED_view3d_cameracontrol_release(View3DCameraControl *vctrl, const bool restore)