|
Blender
V2.93
|
#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_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) |
| 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 | |
| void | recalcData_objects (TransInfo *t) |
Special After Transform Object | |
| void | special_aftertrans_update__object (bContext *C, TransInfo *t) |
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 731 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, 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, 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().
|
static |
Definition at line 478 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 424 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, 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 494 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_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_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, ID_IS_LINKED, 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.
Referenced by createTransData().
Definition at line 325 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 73 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().
|
static |
Definition at line 408 of file transform_convert_object.c.
References BA_TRANSFORM_CHILD, Object::flag, Object::parent, and SELECT.
Referenced by count_proportional_objects().
Definition at line 853 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 148 of file transform_convert_object.c.
References TransData::axismtx, 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_frame_get(), TransData::con, Object::constraints, constraints_list_needinv(), 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, 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(), and UNPACK3.
Referenced by createTransObject().
| void recalcData_objects | ( | TransInfo * | t | ) |
Definition at line 874 of file transform_convert_object.c.
References animrecord_check_state(), applyProject(), autokeyframe_object(), CTX_OBMODE_XFORM_OBDATA, CTX_OBMODE_XFORM_SKIP_CHILDREN, DEG_id_tag_update(), ED_objects_recalculate_paths(), 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().
Referenced by recalcData().
|
static |
Definition at line 311 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().
|
static |
Definition at line 350 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, 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 931 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_frame_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(), 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.
Referenced by special_aftertrans_update().
|
static |
Definition at line 125 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().
|
static |
Definition at line 102 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 336 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().
|
static |
Definition at line 304 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().