Blender V4.3
transform_convert_object.cc File Reference
#include "MEM_guardedalloc.h"
#include "BLI_listbase.h"
#include "BLI_math_matrix.h"
#include "BLI_math_rotation.h"
#include "BLI_math_vector.h"
#include "BKE_context.hh"
#include "BKE_layer.hh"
#include "BKE_lib_id.hh"
#include "BKE_object.hh"
#include "BKE_pointcache.h"
#include "BKE_rigidbody.h"
#include "BKE_scene.hh"
#include "ANIM_action.hh"
#include "ANIM_keyframing.hh"
#include "ANIM_rna.hh"
#include "ED_anim_api.hh"
#include "ED_object.hh"
#include "DEG_depsgraph_query.hh"
#include "transform.hh"
#include "transform_orientations.hh"
#include "transform_snap.hh"
#include "transform_convert.hh"

Go to the source code of this file.

Classes

struct  TransDataObject
 

Macros

#define BASE_XFORM_INDIRECT(base)
 

Functions

Object Mode Custom Data
static void freeTransObjectCustomData (TransInfo *t, TransDataContainer *, TransCustomData *custom_data)
 
Object Data in Object Mode

Use to implement 'Affect Only Origins' feature. We need this to be detached from transform data because, unlike transforming regular objects, we need to transform the children.

Nearly all of the logic here is in the 'blender::ed::object::data_xform_container_*' API.

static void trans_obdata_in_obmode_update_all (TransInfo *t)
 
Object Child Skip

Don't transform unselected children, this is done using the parent inverse matrix.

Note
The complex logic here is caused by mixed selection within a single selection chain, otherwise we only need #XFORM_OB_SKIP_CHILD_PARENT_IS_XFORM for single objects.
static void trans_obchild_in_obmode_update_all (TransInfo *t)
 
Object Transform Creation

Instead of transforming the selection, move the 2D/3D cursor.

static void ObjectToTransData (TransInfo *t, TransData *td, Object *ob)
 
static void trans_object_base_deps_flag_prepare (const Scene *scene, ViewLayer *view_layer)
 
static void set_trans_object_base_deps_flag_cb (ID *id, eDepsObjectComponentType component)
 
static void flush_trans_object_base_deps_flag (Depsgraph *depsgraph, Object *object)
 
static void trans_object_base_deps_flag_finish (const TransInfo *t, const Scene *scene, ViewLayer *view_layer)
 
static void set_trans_object_base_flags (TransInfo *t)
 
static bool mark_children (Object *ob)
 
static int count_proportional_objects (TransInfo *t)
 
static void clear_trans_object_base_flags (TransInfo *t)
 
static void createTransObject (bContext *C, TransInfo *t)
 
Transform (Auto-Keyframing)
static bool motionpath_need_update_object (Scene *scene, Object *ob)
 
Recalc Data object
static blender::Vector< RNAPathget_affected_rna_paths_from_transform_mode (const eTfmMode tmode, Scene *scene, ViewLayer *view_layer, Object *ob, const blender::StringRef rotation_path, const bool transforming_more_than_one_object)
 
static void autokeyframe_object (bContext *C, Scene *scene, Object *ob, const eTfmMode tmode, const bool transforming_more_than_one_object)
 
static void recalcData_objects (TransInfo *t)
 
Special After Transform Object
static void special_aftertrans_update__object (bContext *C, TransInfo *t)
 

Variables

TransConvertTypeInfo TransConvertType_Object
 

Macro Definition Documentation

◆ BASE_XFORM_INDIRECT

#define BASE_XFORM_INDIRECT ( base)
Value:
\
((base->flag_legacy & BA_WAS_SEL) && (base->flag & BASE_SELECTED) == 0)
@ BA_WAS_SEL
#define BASE_SELECTED(v3d, base)

Referenced by createTransObject().

Function Documentation

◆ autokeyframe_object()

◆ clear_trans_object_base_flags()

◆ count_proportional_objects()

◆ createTransObject()

◆ flush_trans_object_base_deps_flag()

static void flush_trans_object_base_deps_flag ( Depsgraph * depsgraph,
Object * object )
static

◆ freeTransObjectCustomData()

◆ get_affected_rna_paths_from_transform_mode()

◆ mark_children()

static bool mark_children ( Object * ob)
static

◆ motionpath_need_update_object()

static bool motionpath_need_update_object ( Scene * scene,
Object * ob )
static

◆ ObjectToTransData()

static void ObjectToTransData ( TransInfo * t,
TransData * td,
Object * ob )
static

Transcribe given object into TransData for Transforming.

Definition at line 138 of file transform_convert_object.cc.

References TransData::axismtx, TransDataExtension::axismtx_gimbal, BKE_object_mat3_to_rot(), BKE_object_tfm_copy(), BKE_object_to_mat3(), BKE_object_where_is_calc(), BKE_rigidbody_check_sim_running(), BKE_scene_ctime_get(), TransData::con, Object::constraints, constraints_list_needinv(), copy_m3_m3(), copy_m3_m4(), copy_m4_m4(), copy_qt_qt(), copy_v3_v3(), DEG_get_evaluated_object(), TransInfo::depsgraph, Object::dloc, Object::dquat, TransDataExtension::dquat, Object::drot, TransDataExtension::drot, Object::drotAngle, Object::drotAxis, Object::dscale, TransDataExtension::dscale, TransData::ext, ListBase::first, gimbal_axis_object(), invert_m3_m3_safe_ortho(), TransDataExtension::iquat, TransDataExtension::irot, TransDataExtension::irotAngle, TransDataExtension::irotAxis, TransDataExtension::isize, Object::loc, mat4_to_loc_rot_size(), TransInfo::mode, TransData::mtx, mul_m3_m3m3(), TransData::ob, OB_NEG_SCALE, OB_NO_CONSTRAINTS, TransDataExtension::obmat, TransDataExtension::oloc, TransDataExtension::oquat, TransInfo::orient_type_mask, TransDataExtension::orot, TransDataExtension::orotAngle, TransDataExtension::orotAxis, orthogonalize_m3_zero_axes(), Object::parent, Object::quat, TransDataExtension::quat, Object::rigidbody_object, Object::rot, rot, TransDataExtension::rot, ROT_MODE_AXISANGLE, Object::rotAngle, TransDataExtension::rotAngle, Object::rotAxis, TransDataExtension::rotAxis, Object::rotmode, TransDataExtension::rotOrder, Object::runtime, Object::scale, TransInfo::scene, TransDataExtension::size, TransData::smtx, sub_v3_v3(), TFM_DUMMY, Object::transflag, transform_orientations_create_from_axis(), unit_m3(), UNPACK3, and V3D_ORIENT_GIMBAL.

Referenced by createTransObject().

◆ recalcData_objects()

◆ set_trans_object_base_deps_flag_cb()

static void set_trans_object_base_deps_flag_cb ( ID * id,
eDepsObjectComponentType component )
static

◆ set_trans_object_base_flags()

◆ special_aftertrans_update__object()

◆ trans_obchild_in_obmode_update_all()

◆ trans_obdata_in_obmode_update_all()

◆ trans_object_base_deps_flag_finish()

static void trans_object_base_deps_flag_finish ( const TransInfo * t,
const Scene * scene,
ViewLayer * view_layer )
static

◆ trans_object_base_deps_flag_prepare()

static void trans_object_base_deps_flag_prepare ( const Scene * scene,
ViewLayer * view_layer )
static

Variable Documentation

◆ TransConvertType_Object

TransConvertTypeInfo TransConvertType_Object
Initial value:
= {
0,
}
static void special_aftertrans_update__object(bContext *C, TransInfo *t)
static void recalcData_objects(TransInfo *t)
static void createTransObject(bContext *C, TransInfo *t)

Definition at line 983 of file transform_convert_object.cc.

Referenced by convert_type_get(), create_trans_data(), ElementResize(), and init_proportional_edit().