Blender V4.3
transform_convert.cc File Reference
#include "DNA_anim_types.h"
#include "DNA_constraint_types.h"
#include "DNA_mesh_types.h"
#include "MEM_guardedalloc.h"
#include "BLI_kdtree.h"
#include "BLI_linklist_stack.h"
#include "BLI_listbase.h"
#include "BLI_math_matrix.h"
#include "BLI_math_vector.h"
#include "BLI_math_vector.hh"
#include "BKE_action.hh"
#include "BKE_anim_data.hh"
#include "BKE_context.hh"
#include "BKE_global.hh"
#include "BKE_layer.hh"
#include "BKE_lib_id.hh"
#include "BKE_modifier.hh"
#include "BKE_nla.hh"
#include "BKE_scene.hh"
#include "ED_particle.hh"
#include "ED_screen.hh"
#include "ED_screen_types.hh"
#include "ED_sequencer.hh"
#include "ANIM_keyframing.hh"
#include "ANIM_nla.hh"
#include "UI_view2d.hh"
#include "WM_types.hh"
#include "DEG_depsgraph_build.hh"
#include "transform.hh"
#include "transform_convert.hh"

Go to the source code of this file.

Functions

bool transform_mode_use_local_origins (const TransInfo *t)
 
void transform_around_single_fallback_ex (TransInfo *t, int data_len_all)
 
void transform_around_single_fallback (TransInfo *t)
 
Proportional Editing
static int trans_data_compare_dist (const void *a, const void *b)
 
static int trans_data_compare_rdist (const void *a, const void *b)
 
static void sort_trans_data_dist_container (const TransInfo *t, TransDataContainer *tc)
 
void sort_trans_data_dist (TransInfo *t)
 
static void sort_trans_data_selected_first_container (TransDataContainer *tc)
 
static void sort_trans_data_selected_first (TransInfo *t)
 
static float3 prop_dist_loc_get (const TransDataContainer *tc, const TransData *td, const bool use_island, const float proj_vec[3])
 
static void set_prop_dist (TransInfo *t, const bool with_dist)
 
Pose Mode (Auto-IK)
static bool pchan_autoik_adjust (bPoseChannel *pchan, short chainlen)
 
void transform_autoik_update (TransInfo *t, short mode)
 
Curve Surface
void calc_distanceCurveVerts (TransData *head, TransData *tail, bool cyclic)
 
TransDataCurveHandleFlagsinitTransDataCurveHandles (TransData *td, BezTriple *bezt)
 
UV Coordinates
void clipUVData (TransInfo *t)
 
Animation Editors (General)
char transform_convert_frame_side_dir_get (TransInfo *t, float cframe)
 
bool FrameOnMouseSide (char side, float frame, float cframe)
 
Transform Utilities
bool constraints_list_needinv (TransInfo *t, ListBase *list)
 
Transform (After-Transform Update)
void special_aftertrans_update (bContext *C, TransInfo *t)
 
int special_transform_moving (TransInfo *t)
 
Transform Data Create
static int countAndCleanTransDataContainer (TransInfo *t)
 
static void init_proportional_edit (TransInfo *t)
 
static void init_TransDataContainers (TransInfo *t, Object *obact, Span< Object * > objects)
 
static TransConvertTypeInfoconvert_type_get (const TransInfo *t, Object **r_obj_armature)
 
void create_trans_data (bContext *C, TransInfo *t)
 
Transform Data Recalc/Flush
void transform_convert_clip_mirror_modifier_apply (TransDataContainer *tc)
 
void animrecord_check_state (TransInfo *t, ID *id)
 
void transform_convert_flush_handle2D (TransData *td, TransData2D *td2d, const float y_fac)
 
void recalc_data (TransInfo *t)
 

Function Documentation

◆ animrecord_check_state()

◆ calc_distanceCurveVerts()

◆ clipUVData()

void clipUVData ( TransInfo * t)

◆ constraints_list_needinv()

bool constraints_list_needinv ( TransInfo * t,
ListBase * list )

Little helper function for ObjectToTransData used to give certain constraints (ChildOf, FollowPath, and others that may be added) inverse corrections for transform, so that they aren't in CrazySpace. These particular constraints benefit from this, but others don't, hence this semi-hack ;-) - Aligorith

Definition at line 546 of file transform_convert.cc.

References ACTCON_MIX_BEFORE, ACTCON_MIX_BEFORE_FULL, ACTCON_MIX_BEFORE_SPLIT, CHILDOF_LOCX, CHILDOF_LOCY, CHILDOF_LOCZ, CONSTRAINT_DISABLE, CONSTRAINT_OFF, CONSTRAINT_TYPE_ACTION, CONSTRAINT_TYPE_ARMATURE, CONSTRAINT_TYPE_CHILDOF, CONSTRAINT_TYPE_CLAMPTO, CONSTRAINT_TYPE_FOLLOWPATH, CONSTRAINT_TYPE_FOLLOWTRACK, CONSTRAINT_TYPE_OBJECTSOLVER, CONSTRAINT_TYPE_ROTLIKE, CONSTRAINT_TYPE_TRANSFORM, CONSTRAINT_TYPE_TRANSLIKE, ELEM, LISTBASE_FOREACH, TransInfo::mode, ROTLIKE_MIX_BEFORE, ROTLIKE_MIX_OFFSET, TFM_ROTATION, TFM_TRANSLATION, TRANS_MIXROT_BEFORE, TRANS_ROTATION, TRANSLIKE_MIX_BEFORE, TRANSLIKE_MIX_BEFORE_FULL, and TRANSLIKE_MIX_BEFORE_SPLIT.

Referenced by add_pose_transdata(), and ObjectToTransData().

◆ convert_type_get()

static TransConvertTypeInfo * convert_type_get ( const TransInfo * t,
Object ** r_obj_armature )
static

Definition at line 876 of file transform_convert.cc.

References BKE_view_layer_active_object_get(), BKE_view_layer_synced_ensure(), TransInfo::context, CTX_CURSOR, CTX_EDGE_DATA, CTX_GPENCIL_STROKES, CTX_MASK, CTX_MOVIECLIP, CTX_PAINT_CURVE, CTX_SEQUENCER_IMAGE, CTX_TEXTURE_SPACE, TransInfo::depsgraph, ELEM, Object::mode, TransInfo::mode, OB_ARMATURE, OB_CURVES, OB_CURVES_LEGACY, OB_GPENCIL_LEGACY, OB_GREASE_PENCIL, OB_LATTICE, OB_MBALL, OB_MESH, OB_MODE_ALL_PAINT, OB_MODE_ALL_PAINT_GPENCIL, OB_MODE_ALL_WEIGHT_PAINT, OB_MODE_PARTICLE_EDIT, OB_MODE_POSE, OB_MODE_SCULPT, OB_MODE_SCULPT_CURVES, OB_SURF, TransInfo::obedit_type, TransInfo::options, PE_get_current(), PE_start_edit(), TransInfo::region, ARegion::regiontype, RGN_TYPE_PREVIEW, TransInfo::scene, Object::sculpt, sequencer_retiming_mode_is_active(), SPACE_ACTION, SPACE_CLIP, SPACE_GRAPH, SPACE_IMAGE, SPACE_NLA, SPACE_NODE, SPACE_SEQ, SPACE_VIEW3D, TransInfo::spacetype, TFM_BWEIGHT, TFM_SHEAR, TFM_SHRINKFATTEN, TFM_SKIN_RESIZE, TFM_VERT_CREASE, TransConvertType_Action, TransConvertType_Cursor3D, TransConvertType_CursorImage, TransConvertType_CursorSequencer, TransConvertType_Curve, TransConvertType_Curves, TransConvertType_EditArmature, TransConvertType_GPencil, TransConvertType_Graph, TransConvertType_GreasePencil, TransConvertType_Lattice, TransConvertType_Mask, TransConvertType_MBall, TransConvertType_Mesh, TransConvertType_MeshEdge, TransConvertType_MeshSkin, TransConvertType_MeshUV, TransConvertType_MeshVertCData, TransConvertType_NLA, TransConvertType_Node, TransConvertType_Object, TransConvertType_ObjectTexSpace, TransConvertType_PaintCurve, TransConvertType_Particle, TransConvertType_Pose, TransConvertType_Sculpt, TransConvertType_Sequencer, TransConvertType_SequencerImage, TransConvertType_SequencerRetiming, TransConvertType_Tracking, TransConvertType_TrackingCurves, transform_object_deform_pose_armature_get(), and TransInfo::view_layer.

Referenced by create_trans_data().

◆ countAndCleanTransDataContainer()

static int countAndCleanTransDataContainer ( TransInfo * t)
static

◆ create_trans_data()

◆ FrameOnMouseSide()

◆ init_proportional_edit()

◆ init_TransDataContainers()

◆ initTransDataCurveHandles()

◆ pchan_autoik_adjust()

static bool pchan_autoik_adjust ( bPoseChannel * pchan,
short chainlen )
static

◆ prop_dist_loc_get()

static float3 prop_dist_loc_get ( const TransDataContainer * tc,
const TransData * td,
const bool use_island,
const float proj_vec[3] )
static

◆ recalc_data()

◆ set_prop_dist()

◆ sort_trans_data_dist()

void sort_trans_data_dist ( TransInfo * t)

◆ sort_trans_data_dist_container()

static void sort_trans_data_dist_container ( const TransInfo * t,
TransDataContainer * tc )
static

◆ sort_trans_data_selected_first()

static void sort_trans_data_selected_first ( TransInfo * t)
static

◆ sort_trans_data_selected_first_container()

static void sort_trans_data_selected_first_container ( TransDataContainer * tc)
static

Make TD_SELECTED first in the array.

Definition at line 141 of file transform_convert.cc.

References TransDataContainer::data, TransDataContainer::data_len, and TD_SELECTED.

Referenced by sort_trans_data_selected_first().

◆ special_aftertrans_update()

void special_aftertrans_update ( bContext * C,
TransInfo * t )

◆ special_transform_moving()

◆ trans_data_compare_dist()

static int trans_data_compare_dist ( const void * a,
const void * b )
static

Definition at line 85 of file transform_convert.cc.

References b, and TransData::dist.

Referenced by sort_trans_data_dist_container().

◆ trans_data_compare_rdist()

static int trans_data_compare_rdist ( const void * a,
const void * b )
static

Definition at line 99 of file transform_convert.cc.

References b, and TransData::rdist.

Referenced by sort_trans_data_dist_container().

◆ transform_around_single_fallback()

void transform_around_single_fallback ( TransInfo * t)

◆ transform_around_single_fallback_ex()

void transform_around_single_fallback_ex ( TransInfo * t,
int data_len_all )

Transforming around ourselves is no use, fallback to individual origins, useful for curve/armatures.

Definition at line 58 of file transform_convert.cc.

References TransInfo::around, ELEM, TransInfo::flag, T_OVERRIDE_CENTER, transform_mode_use_local_origins(), V3D_AROUND_ACTIVE, V3D_AROUND_CENTER_BOUNDS, V3D_AROUND_CENTER_MEDIAN, and V3D_AROUND_LOCAL_ORIGINS.

Referenced by createTransCurveVerts(), createTransGPencil_curves(), and transform_around_single_fallback().

◆ transform_autoik_update()

void transform_autoik_update ( TransInfo * t,
short mode )

◆ transform_convert_clip_mirror_modifier_apply()

◆ transform_convert_flush_handle2D()

void transform_convert_flush_handle2D ( TransData * td,
TransData2D * td2d,
const float y_fac )

◆ transform_convert_frame_side_dir_get()

char transform_convert_frame_side_dir_get ( TransInfo * t,
float cframe )

◆ transform_mode_use_local_origins()

bool transform_mode_use_local_origins ( const TransInfo * t)