Blender
V3.3
|
#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.
| |
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) |
#define BASE_XFORM_INDIRECT | ( | base | ) | ((base->flag_legacy & BA_WAS_SEL) && (base->flag & BASE_SELECTED) == 0) |
typedef struct TransDataObject TransDataObject |
|
static |
Auto-keyframing feature - for objects
tmode | A transform mode. |
Definition at line 721 of file transform_convert_object.c.
References AnimData::action, Object::adt, ANIM_apply_keyingset(), ANIM_builtin_keyingset_get_named(), ANIM_get_keyframing_flags(), ANIM_KS_LOC_ROT_SCALE_ID, ANIM_KS_LOCATION_ID, ANIM_KS_ROTATION_ID, ANIM_KS_SCALING_ID, ANIM_relative_keyingset_add_source(), ANIM_scene_get_active_keyingset(), FCurve::array_index, autokeyframe_cfra_can_key(), BKE_animsys_eval_context_construct(), BKE_animsys_free_nla_keyframing_context_cache(), BLI_freelistN(), C, RenderData::cfra, CTX_data_depsgraph_pointer(), CTX_data_main(), CTX_wm_reports(), bAction::curves, depsgraph, ELEM, AnimationEvalContext::eval_time, ListBase::first, FCurve::grp, Object::id, insert_keyframe(), IS_AUTOKEY_FLAG, ToolSettings::keyframe_type, MODIFYKEY_MODE_INSERT, bActionGroup::name, FCurve::next, NULL, OBACT, Scene::r, FCurve::rna_path, SCE_XFORM_AXIS_ALIGN, scene, TFM_RESIZE, TFM_ROTATION, TFM_TRACKBALL, TFM_TRANSLATION, Scene::toolsettings, ToolSettings::transform_flag, ToolSettings::transform_pivot_point, V3D_AROUND_ACTIVE, and V3D_AROUND_CURSOR.
Referenced by recalcData_objects(), and special_aftertrans_update__object().
Definition at line 467 of file transform_convert_object.c.
References BA_SELECT, BA_SNAP_FIX_DEPS_FIASCO, BA_TEMP_TAG, BA_TRANSFORM_CHILD, BA_TRANSFORM_LOCKED_IN_PLACE, BA_TRANSFORM_PARENT, BA_WAS_SEL, ED_object_base_select(), ListBase::first, Base::flag_legacy, Base::next, ViewLayer::object_bases, and t.
Referenced by createTransObject(), and special_aftertrans_update__object().
|
static |
Definition at line 414 of file transform_convert_object.c.
References BA_TRANSFORM_CHILD, BA_TRANSFORM_PARENT, BASE_EDITABLE, BASE_SELECTABLE, BASE_SELECTED, BASE_SELECTED_EDITABLE, BKE_scene_ensure_depsgraph(), CTX_data_main(), depsgraph, ELEM, Object::flag, flush_trans_object_base_deps_flag(), LISTBASE_FOREACH, mark_children(), NULL, ViewLayer::object_bases, Object::parent, scene, t, TFM_ROTATION, TFM_TRACKBALL, trans_object_base_deps_flag_finish(), trans_object_base_deps_flag_prepare(), and V3D_AROUND_LOCAL_ORIGINS.
Referenced by createTransObject().
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.
Definition at line 315 of file transform_convert_object.c.
References DEG_FOREACH_COMPONENT_IGNORE_TRANSFORM_SOLVERS, DEG_foreach_dependent_ID_component(), DEG_OB_COMP_TRANSFORM, depsgraph, Object::id, LIB_TAG_DOIT, NULL, and set_trans_object_base_deps_flag_cb().
Referenced by count_proportional_objects(), and set_trans_object_base_flags().
|
static |
Definition at line 58 of file transform_convert_object.c.
References CTX_OBMODE_XFORM_OBDATA, CTX_OBMODE_XFORM_SKIP_CHILDREN, TransCustomData::data, ED_object_data_xform_container_destroy(), ED_object_xform_skip_child_container_destroy(), MEM_freeN, NULL, t, TransDataObject::xcs, and TransDataObject::xds.
Referenced by createTransObject().
Definition at line 398 of file transform_convert_object.c.
References BA_TRANSFORM_CHILD, Object::flag, Object::parent, and SELECT.
Referenced by count_proportional_objects().
Definition at line 843 of file transform_convert_object.c.
References autokeyframe_cfra_can_key(), Object::avs, Object::id, MOTIONPATH_BAKE_HAS_PATHS, bAnimVizSettings::path_bakeflag, and scene.
Referenced by recalcData_objects(), and special_aftertrans_update__object().
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().
Definition at line 863 of file transform_convert_object.c.
References animrecord_check_state(), applySnappingIndividual(), autokeyframe_object(), CTX_OBMODE_XFORM_OBDATA, CTX_OBMODE_XFORM_SKIP_CHILDREN, DEG_id_tag_update(), ED_objects_recalculate_paths_selected(), FOREACH_TRANS_DATA_CONTAINER, Object::id, ID_RECALC_TRANSFORM, IS_AUTOKEY_ON, motionpath_need_update_object(), TransData::ob, OBJECT_PATH_CALC_RANGE_CURRENT_FRAME, t, TD_SKIP, TRANS_CANCEL, trans_obchild_in_obmode_update_all(), and trans_obdata_in_obmode_update_all().
|
static |
Definition at line 301 of file transform_convert_object.c.
References component(), DEG_OB_COMP_GEOMETRY, DEG_OB_COMP_TRANSFORM, ELEM, GS, id, ID_OB, LIB_TAG_DOIT, and ID::name.
Referenced by flush_trans_object_base_deps_flag().
Definition at line 340 of file transform_convert_object.c.
References BA_TRANSFORM_CHILD, BA_TRANSFORM_LOCKED_IN_PLACE, BA_WAS_SEL, Object::base_flag, BASE_SELECTED, BASE_SELECTED_EDITABLE, BKE_scene_base_flag_to_objects(), BKE_scene_ensure_depsgraph(), BKE_view_layer_base_find(), CTX_data_main(), DEG_graph_relations_update(), depsgraph, ELEM, flush_trans_object_base_deps_flag(), LISTBASE_FOREACH, NULL, ViewLayer::object_bases, Object::parent, scene, t, TFM_DUMMY, TFM_ROTATION, TFM_TRACKBALL, trans_object_base_deps_flag_finish(), trans_object_base_deps_flag_prepare(), and V3D_AROUND_LOCAL_ORIGINS.
Referenced by createTransObject().
Definition at line 921 of file transform_convert_object.c.
References autokeyframe_object(), BKE_ptcache_ids_from_object(), BKE_ptcache_object_reset(), BKE_rigidbody_aftertrans_update(), BKE_rigidbody_check_sim_running(), BKE_scene_ctime_get(), BLI_assert, BLI_freelistN(), C, PTCacheID::cache, clear_trans_object_base_flags(), CTX_OBJECT, TransDataContainer::data, TransDataContainer::data_len, DEG_id_tag_update(), ED_objects_recalculate_paths_selected(), TransData::ext, ListBase::first, PointCache::flag, Object::id, ID_RECALC_GEOMETRY, ID_RECALC_TRANSFORM, MAX_DUPLI_RECUR, motionpath_need_update_object(), PTCacheID::next, TransData::ob, OBJECT_PATH_CALC_RANGE_CHANGED, OBJECT_PATH_CALC_RANGE_CURRENT_FRAME, TransDataExtension::oloc, TransDataExtension::oquat, TransDataExtension::orot, TransDataExtension::orotAngle, TransDataExtension::orotAxis, PTCACHE_OUTDATED, PTCACHE_RESET_OUTDATED, PTCACHE_TYPE_PARTICLES, Object::rigidbody_object, t, TD_SKIP, TRANS_CANCEL, TRANS_DATA_CONTAINER_FIRST_SINGLE, and PTCacheID::type.
Definition at line 110 of file transform_convert_object.c.
References CTX_data_main(), ED_object_xform_skip_child_container_update_all(), NULL, t, and TransDataObject::xcs.
Referenced by recalcData_objects().
Definition at line 87 of file transform_convert_object.c.
References CTX_data_main(), ED_object_data_xform_container_update_all(), NULL, t, and TransDataObject::xds.
Referenced by recalcData_objects().
|
static |
Definition at line 326 of file transform_convert_object.c.
References BA_SNAP_FIX_DEPS_FIASCO, CTX_OBMODE_XFORM_OBDATA, LIB_TAG_DOIT, LISTBASE_FOREACH, ViewLayer::object_bases, and t.
Referenced by count_proportional_objects(), and set_trans_object_base_flags().
Definition at line 294 of file transform_convert_object.c.
References LIB_TAG_DOIT, LISTBASE_FOREACH, and ViewLayer::object_bases.
Referenced by count_proportional_objects(), and set_trans_object_base_flags().
TransConvertTypeInfo TransConvertType_Object |
Definition at line 995 of file transform_convert_object.c.
Referenced by convert_type_get(), createTransData(), ElementResize(), and init_proportional_edit().