Blender  V3.3
Classes | Macros | Variables
transform_convert_object.c File Reference
#include "MEM_guardedalloc.h"
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BKE_animsys.h"
#include "BKE_context.h"
#include "BKE_layer.h"
#include "BKE_lib_id.h"
#include "BKE_main.h"
#include "BKE_object.h"
#include "BKE_pointcache.h"
#include "BKE_report.h"
#include "BKE_rigidbody.h"
#include "BKE_scene.h"
#include "ED_keyframing.h"
#include "ED_object.h"
#include "DEG_depsgraph_query.h"
#include "transform.h"
#include "transform_orientations.h"
#include "transform_snap.h"
#include "transform_convert.h"

Go to the source code of this file.

Classes

struct  TransDataObject
 

Macros

#define BASE_XFORM_INDIRECT(base)    ((base->flag_legacy & BA_WAS_SEL) && (base->flag & BASE_SELECTED) == 0)
 

Functions

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 '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 (ViewLayer *view_layer)
 
static void set_trans_object_base_deps_flag_cb (ID *id, eDepsObjectComponentType component, void *UNUSED(user_data))
 
static void flush_trans_object_base_deps_flag (Depsgraph *depsgraph, Object *object)
 
static void trans_object_base_deps_flag_finish (const TransInfo *t, 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 void autokeyframe_object (bContext *C, Scene *scene, ViewLayer *view_layer, Object *ob, int tmode)
 
static bool motionpath_need_update_object (Scene *scene, Object *ob)
 
Recalc Data 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
 

Object Mode Custom Data

typedef struct TransDataObject TransDataObject
 
static void freeTransObjectCustomData (TransInfo *t, TransDataContainer *UNUSED(tc), TransCustomData *custom_data)
 

Macro Definition Documentation

◆ BASE_XFORM_INDIRECT

#define BASE_XFORM_INDIRECT (   base)     ((base->flag_legacy & BA_WAS_SEL) && (base->flag & BASE_SELECTED) == 0)

Typedef Documentation

◆ TransDataObject

Function Documentation

◆ autokeyframe_object()

static void autokeyframe_object ( bContext C,
Scene scene,
ViewLayer view_layer,
Object ob,
int  tmode 
)
static

◆ clear_trans_object_base_flags()

static void clear_trans_object_base_flags ( TransInfo t)
static

◆ count_proportional_objects()

static int count_proportional_objects ( TransInfo t)
static

◆ createTransObject()

static void createTransObject ( bContext C,
TransInfo t 
)
static

Definition at line 483 of file transform_convert_object.c.

References BA_TRANSFORM_CHILD, BA_TRANSFORM_LOCKED_IN_PLACE, BA_TRANSFORM_PARENT, BA_WAS_SEL, BASE_EDITABLE, BASE_SELECTABLE, BASE_SELECTED, BASE_XFORM_INDIRECT, BKE_id_is_editable(), BKE_object_is_in_editmode(), BKE_view_layer_base_find(), BLI_ghash_free(), BLI_ghash_insert(), BLI_ghash_lookup(), BLI_ghash_ptr_new_ex(), BLI_gset_add(), BLI_gset_free(), BLI_gset_haskey(), BLI_gset_ptr_new_ex(), C, clear_trans_object_base_flags(), count_proportional_objects(), CTX_DATA_BEGIN, CTX_DATA_COUNT, CTX_DATA_END, CTX_data_main(), CTX_OBMODE_XFORM_OBDATA, CTX_OBMODE_XFORM_SKIP_CHILDREN, TransDataContainer::data, Object::data, TransDataContainer::data_ext, TransDataContainer::data_len, ED_object_data_xform_container_create(), ED_object_data_xform_container_item_ensure(), ED_object_xform_skip_child_container_create(), ED_object_xform_skip_child_container_item_ensure(), TransData::ext, ListBase::first, Base::flag, Object::flag, freeTransObjectCustomData(), id, Object::id, ID::lib, LISTBASE_FOREACH, MEM_callocN, Base::next, NULL, TransData::ob, Base::object, ViewLayer::object_bases, ObjectToTransData(), Object::parent, TransData::protectflag, Object::protectflag, Object::rotmode, TransDataExtension::rotOrder, set_trans_object_base_flags(), t, T_PROP_EDIT, TD_NO_LOC, TD_NOCENTER, TD_SELECTED, TD_SKIP, TRANS_DATA_CONTAINER_FIRST_SINGLE, TransData::val, TransDataObject::xcs, TransDataObject::xds, XFORM_OB_SKIP_CHILD_PARENT_APPLY, XFORM_OB_SKIP_CHILD_PARENT_IS_XFORM, and XFORM_OB_SKIP_CHILD_PARENT_IS_XFORM_INDIRECT.

◆ flush_trans_object_base_deps_flag()

static void flush_trans_object_base_deps_flag ( Depsgraph depsgraph,
Object object 
)
static

◆ freeTransObjectCustomData()

static void freeTransObjectCustomData ( TransInfo t,
TransDataContainer UNUSEDtc,
TransCustomData custom_data 
)
static

◆ 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

Definition at line 133 of file transform_convert_object.c.

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(), Object::dloc, TransDataExtension::dquat, Object::dquat, TransDataExtension::drot, Object::drot, Object::drotAngle, Object::drotAxis, TransDataExtension::dscale, Object::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(), TransData::mtx, mul_m3_m3m3(), NULL, TransData::ob, OB_NEG_SCALE, OB_NO_CONSTRAINTS, TransDataExtension::obmat, Object::obmat, TransDataExtension::oloc, TransDataExtension::oquat, TransDataExtension::orot, TransDataExtension::orotAngle, TransDataExtension::orotAxis, orthogonalize_m3_zero_axes(), Object::parent, TransDataExtension::quat, Object::quat, Object::rigidbody_object, Scene::rigidbody_world, rot, TransDataExtension::rot, Object::rot, ROT_MODE_AXISANGLE, TransDataExtension::rotAngle, Object::rotAngle, TransDataExtension::rotAxis, Object::rotAxis, Object::rotmode, TransDataExtension::rotOrder, Object::scale, scene, TransDataExtension::size, TransData::smtx, sub_v3_v3(), t, TFM_DUMMY, Object::transflag, transform_orientations_create_from_axis(), unit_m3(), UNPACK3, and V3D_ORIENT_GIMBAL.

Referenced by createTransObject().

◆ recalcData_objects()

static void recalcData_objects ( TransInfo t)
static

◆ set_trans_object_base_deps_flag_cb()

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

◆ set_trans_object_base_flags()

static void set_trans_object_base_flags ( TransInfo t)
static

◆ special_aftertrans_update__object()

static void special_aftertrans_update__object ( bContext C,
TransInfo t 
)
static

◆ trans_obchild_in_obmode_update_all()

static void trans_obchild_in_obmode_update_all ( TransInfo t)
static

◆ trans_obdata_in_obmode_update_all()

static void trans_obdata_in_obmode_update_all ( TransInfo t)
static

◆ trans_object_base_deps_flag_finish()

static void trans_object_base_deps_flag_finish ( const TransInfo t,
ViewLayer view_layer 
)
static

◆ trans_object_base_deps_flag_prepare()

static void trans_object_base_deps_flag_prepare ( 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 995 of file transform_convert_object.c.

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