185 const float obmat[4][4],
186 const bool use_parent,
189 const float view_mat[4][4])
192 bool view_changed =
false;
202 float obmat_noprotect[4][4], obmat_protect[4][4];
208 if (!
equals_m4m4(obmat_noprotect, obmat_protect)) {
211 float diff_mat[4][4];
212 float view_mat_protect[4][4];
213 float obmat_noprotect_inv[4][4];
215 mul_m4_m4m4(diff_mat, obmat_protect, obmat_noprotect_inv);
227 const bool use_autokey,
229 const bool do_rotate,
230 const bool do_translate)
241 float view_mat[4][4];
248 float prev_view_imat[4][4];
249 float diff_mat[4][4];
250 float parent_mat[4][4];
264 ob_update = ob_update->
parent;
272 float scale_mat[4][4];
General operations, lookup, etc. for blender objects.
void BKE_object_tfm_restore(struct Object *ob, void *obtfm_pt)
void BKE_object_tfm_protected_restore(struct Object *ob, const ObjectTfmProtectedChannels *obtfm, short protectflag)
void * BKE_object_tfm_backup(struct Object *ob)
void BKE_object_where_is_calc(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
void BKE_object_to_mat4(struct Object *ob, float r_mat[4][4])
void BKE_object_apply_mat4(struct Object *ob, const float mat[4][4], bool use_compat, bool use_parent)
void BKE_object_tfm_protected_backup(const struct Object *ob, ObjectTfmProtectedChannels *obtfm)
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
bool invert_m4_m4(float R[4][4], const float A[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])
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])
struct Depsgraph Depsgraph
void DEG_id_tag_update(struct ID *id, int flag)
Object is a sort of wrapper for general info.
@ OB_TRANSFORM_ADJUST_ROOT_PARENT_FOR_VIEW_LOCK
void ED_view3d_distance_set(struct 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 struct Scene *scene, struct ID *id_key, struct 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]
BLI_INLINE Object * view3d_cameracontrol_object(const View3DCameraControl *vctrl)
struct View3DCameraControl View3DCameraControl
void ED_view3d_cameracontrol_update(View3DCameraControl *vctrl, const bool use_autokey, struct bContext *C, const bool do_rotate, const bool do_translate)
Object * ED_view3d_cameracontrol_object_get(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])
struct View3DCameraControl * ED_view3d_cameracontrol_acquire(Depsgraph *depsgraph, Scene *scene, View3D *v3d, RegionView3D *rv3d)
void ED_view3d_cameracontrol_release(View3DCameraControl *vctrl, const bool restore)