Blender V5.0
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_duplilist.hh"
#include "BKE_layer.hh"
#include "BKE_lib_id.hh"
#include "BKE_library.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  blender::ed::transform::TransDataObject

Namespaces

namespace  blender
namespace  blender::ed
namespace  blender::ed::transform

Macros

#define BASE_XFORM_INDIRECT(base)

Functions

Object Mode Custom Data
static void blender::ed::transform::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 'object::data_xform_container_*' API.

static void blender::ed::transform::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 blender::ed::transform::trans_obchild_in_obmode_update_all (TransInfo *t)
Object Transform Creation

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

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

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 blender::ed::transform::createTransObject().