Blender V4.3
transform_convert.hh File Reference

conversion and adaptation of different datablocks to a common struct. More...

#include "RE_engine.h"
#include "BKE_curves.hh"
#include "BLI_index_mask.hh"

Go to the source code of this file.

Classes

struct  TransConvertTypeInfo
 
struct  TransDataEdgeSlideVert
 
struct  TransDataVertSlideVert
 
struct  CurvesTransformData
 
struct  TransIslandData
 
struct  MirrorDataVert
 
struct  TransMirrorData
 
struct  TransMeshDataCrazySpace
 

Functions

void transform_autoik_update (TransInfo *t, short mode)
 
int special_transform_moving (TransInfo *t)
 
void special_aftertrans_update (bContext *C, TransInfo *t)
 
void sort_trans_data_dist (TransInfo *t)
 
void create_trans_data (bContext *C, TransInfo *t)
 
void clipUVData (TransInfo *t)
 
void transform_convert_flush_handle2D (TransData *td, TransData2D *td2d, float y_fac)
 
void recalc_data (TransInfo *t)
 
void transform_convert_mesh_customdatacorrect_init (TransInfo *t)
 
void transform_convert_sequencer_channel_clamp (TransInfo *t, float r_val[2])
 
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)
 
bool constraints_list_needinv (TransInfo *t, ListBase *list)
 
void calc_distanceCurveVerts (TransData *head, TransData *tail, bool cyclic)
 
TransDataCurveHandleFlagsinitTransDataCurveHandles (TransData *td, BezTriple *bezt)
 
char transform_convert_frame_side_dir_get (TransInfo *t, float cframe)
 
bool FrameOnMouseSide (char side, float frame, float cframe)
 
void transform_convert_clip_mirror_modifier_apply (TransDataContainer *tc)
 
void animrecord_check_state (TransInfo *t, ID *id)
 
void curve_populate_trans_data_structs (TransDataContainer &tc, blender::bke::CurvesGeometry &curves, const blender::float4x4 &transform, std::optional< blender::MutableSpan< float > > value_attribute, const blender::Span< blender::IndexMask > points_to_transform_indices, const blender::IndexMask &affected_curves, bool use_connected_only, const blender::IndexMask &bezier_curves)
 
CurvesTransformDatacreate_curves_transform_custom_data (TransCustomData &custom_data)
 
void copy_positions_from_curves_transform_custom_data (const TransCustomData &custom_data, const int layer, blender::MutableSpan< blender::float3 > positions_dst)
 
void transform_convert_pose_transflags_update (Object *ob, int mode, short around)
 
void transform_convert_mesh_islands_calc (BMEditMesh *em, bool calc_single_islands, bool calc_island_center, bool calc_island_axismtx, TransIslandData *r_island_data)
 
void transform_convert_mesh_islanddata_free (TransIslandData *island_data)
 
void transform_convert_mesh_connectivity_distance (BMesh *bm, const float mtx[3][3], float *dists, int *index)
 
void transform_convert_mesh_mirrordata_calc (BMEditMesh *em, bool use_select, bool use_topology, const bool mirror_axis[3], TransMirrorData *r_mirror_data)
 
void transform_convert_mesh_mirrordata_free (TransMirrorData *mirror_data)
 
void transform_convert_mesh_crazyspace_detect (TransInfo *t, TransDataContainer *tc, BMEditMesh *em, TransMeshDataCrazySpace *r_crazyspace_data)
 
void transform_convert_mesh_crazyspace_transdata_set (const float mtx[3][3], const float smtx[3][3], const float defmat[3][3], const float quat[4], TransData *r_td)
 
void transform_convert_mesh_crazyspace_free (TransMeshDataCrazySpace *r_crazyspace_data)
 
blender::Array< TransDataVertSlideVerttransform_mesh_vert_slide_data_create (const TransDataContainer *tc, blender::Vector< blender::float3 > &r_loc_dst_buffer)
 
blender::Array< TransDataEdgeSlideVerttransform_mesh_edge_slide_data_create (const TransDataContainer *tc, int *r_group_len)
 
blender::Array< TransDataVertSlideVerttransform_mesh_uv_vert_slide_data_create (const TransInfo *t, TransDataContainer *tc, blender::Vector< blender::float3 > &r_loc_dst_buffer)
 
blender::Array< TransDataEdgeSlideVerttransform_mesh_uv_edge_slide_data_create (const TransInfo *t, TransDataContainer *tc, int *r_group_len)
 
bool seq_transform_check_overlap (blender::Span< Sequence * > transformed_strips)
 

Variables

TransConvertTypeInfo TransConvertType_Action
 
TransConvertTypeInfo TransConvertType_EditArmature
 
TransConvertTypeInfo TransConvertType_Pose
 
TransConvertTypeInfo TransConvertType_CursorImage
 
TransConvertTypeInfo TransConvertType_CursorSequencer
 
TransConvertTypeInfo TransConvertType_Cursor3D
 
TransConvertTypeInfo TransConvertType_Curve
 
TransConvertTypeInfo TransConvertType_Curves
 
TransConvertTypeInfo TransConvertType_Graph
 
TransConvertTypeInfo TransConvertType_GPencil
 
TransConvertTypeInfo TransConvertType_GreasePencil
 
TransConvertTypeInfo TransConvertType_Lattice
 
TransConvertTypeInfo TransConvertType_Mask
 
TransConvertTypeInfo TransConvertType_MBall
 
TransConvertTypeInfo TransConvertType_Mesh
 
TransConvertTypeInfo TransConvertType_MeshEdge
 
TransConvertTypeInfo TransConvertType_MeshSkin
 
TransConvertTypeInfo TransConvertType_MeshUV
 
TransConvertTypeInfo TransConvertType_MeshVertCData
 
TransConvertTypeInfo TransConvertType_NLA
 
TransConvertTypeInfo TransConvertType_Node
 
TransConvertTypeInfo TransConvertType_Object
 
TransConvertTypeInfo TransConvertType_ObjectTexSpace
 
TransConvertTypeInfo TransConvertType_PaintCurve
 
TransConvertTypeInfo TransConvertType_Particle
 
TransConvertTypeInfo TransConvertType_Sculpt
 
TransConvertTypeInfo TransConvertType_Sequencer
 
TransConvertTypeInfo TransConvertType_SequencerImage
 
TransConvertTypeInfo TransConvertType_SequencerRetiming
 
TransConvertTypeInfo TransConvertType_Tracking
 
TransConvertTypeInfo TransConvertType_TrackingCurves
 

Detailed Description

conversion and adaptation of different datablocks to a common struct.

Definition in file transform_convert.hh.

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().

◆ copy_positions_from_curves_transform_custom_data()

◆ create_curves_transform_custom_data()

◆ create_trans_data()

◆ curve_populate_trans_data_structs()

◆ FrameOnMouseSide()

◆ initTransDataCurveHandles()

◆ recalc_data()

◆ seq_transform_check_overlap()

bool seq_transform_check_overlap ( blender::Span< Sequence * > transformed_strips)

Definition at line 289 of file transform_convert_sequencer.cc.

References SEQ_OVERLAP.

Referenced by freeSeqData(), and freeSeqData().

◆ sort_trans_data_dist()

void sort_trans_data_dist ( TransInfo * t)

◆ special_aftertrans_update()

void special_aftertrans_update ( bContext * C,
TransInfo * t )

◆ special_transform_moving()

◆ 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,
float y_fac )

◆ transform_convert_frame_side_dir_get()

char transform_convert_frame_side_dir_get ( TransInfo * t,
float cframe )

◆ transform_convert_mesh_connectivity_distance()

◆ transform_convert_mesh_crazyspace_detect()

◆ transform_convert_mesh_crazyspace_free()

void transform_convert_mesh_crazyspace_free ( TransMeshDataCrazySpace * r_crazyspace_data)

◆ transform_convert_mesh_crazyspace_transdata_set()

void transform_convert_mesh_crazyspace_transdata_set ( const float mtx[3][3],
const float smtx[3][3],
const float defmat[3][3],
const float quat[4],
TransData * r_td )

◆ transform_convert_mesh_customdatacorrect_init()

◆ transform_convert_mesh_islanddata_free()

void transform_convert_mesh_islanddata_free ( TransIslandData * island_data)

◆ transform_convert_mesh_islands_calc()

◆ transform_convert_mesh_mirrordata_calc()

◆ transform_convert_mesh_mirrordata_free()

void transform_convert_mesh_mirrordata_free ( TransMirrorData * mirror_data)

Definition at line 1321 of file transform_convert_mesh.cc.

References MEM_freeN(), and TransMirrorData::vert_map.

Referenced by createTransEditVerts(), and createTransMeshSkin().

◆ transform_convert_pose_transflags_update()

void transform_convert_pose_transflags_update ( Object * ob,
int mode,
short around )

◆ transform_convert_sequencer_channel_clamp()

void transform_convert_sequencer_channel_clamp ( TransInfo * t,
float r_val[2] )

◆ transform_mesh_edge_slide_data_create()

blender::Array< TransDataEdgeSlideVert > transform_mesh_edge_slide_data_create ( const TransDataContainer * tc,
int * r_group_len )

We need at least 3 points to calculate the intersection of prev-curr and next-curr destinations. next_next is only required to identify the edge in next.e.

| | | | | prev.e | curr.e | next.e | prev.v -— curr.v -— next.v -— next_next.v

Find the best direction to slide among the ones already computed.

Parameters
curr_side_otherprevious state of the #SlideTempDataMesh where the faces are linked to the previous edge.
l_srcthe source corner in the edge to slide.
l_dstthe current destination corner.

Definition at line 2306 of file transform_convert_mesh.cc.

References BKE_editmesh_from_object(), bm, BMEditMesh::bm, BM_edge_exists(), BM_edge_is_boundary(), BM_edge_is_manifold(), BM_EDGES_OF_MESH, BM_EDGES_OF_VERT, BM_elem_flag_test, BM_elem_index_get, BM_elem_index_set, BM_ELEM_SELECT, BM_ITER_ELEM, BM_iter_elem_count_flag(), BM_ITER_MESH, BM_LOOPS_OF_EDGE, BM_VERT, BM_VERTS_OF_MESH, BMVert::co, TransDataContainer::data, TransDataContainer::data_len, TransDataEdgeSlideVert::dir_side, blender::math::distance(), blender::math::dot(), BMLoop::e, e, ELEM, BMesh::elem_index_dirty, BMLoop::f, blender::Array< T, InlineBufferCapacity, Allocator >::index_range(), int, isect_face_dst(), isect_line_line_epsilon_v3(), l, TransDataEdgeSlideVert::loop_nr, mesh_vert_is_inner(), blender::math::midpoint(), BMLoop::next, next, blender::math::normalize(), TransDataContainer::obedit, BMLoop::prev, BMLoop::radial_next, TransDataEdgeSlideVert::td, TD_SELECTED, BMLoop::v, and v.

Referenced by createEdgeSlideVerts().

◆ transform_mesh_uv_edge_slide_data_create()

blender::Array< TransDataEdgeSlideVert > transform_mesh_uv_edge_slide_data_create ( const TransInfo * t,
TransDataContainer * tc,
int * r_group_len )

◆ transform_mesh_uv_vert_slide_data_create()

blender::Array< TransDataVertSlideVert > transform_mesh_uv_vert_slide_data_create ( const TransInfo * t,
TransDataContainer * tc,
blender::Vector< blender::float3 > & r_loc_dst_buffer )

Referenced by createVertSlideVerts().

◆ transform_mesh_vert_slide_data_create()

blender::Array< TransDataVertSlideVert > transform_mesh_vert_slide_data_create ( const TransDataContainer * tc,
blender::Vector< blender::float3 > & r_loc_dst_buffer )

Referenced by createVertSlideVerts().

◆ transform_mode_use_local_origins()

bool transform_mode_use_local_origins ( const TransInfo * t)

Variable Documentation

◆ TransConvertType_Action

TransConvertTypeInfo TransConvertType_Action
extern

Definition at line 1432 of file transform_convert_action.cc.

Referenced by convert_type_get(), and init_proportional_edit().

◆ TransConvertType_Cursor3D

TransConvertTypeInfo TransConvertType_Cursor3D
extern

Definition at line 207 of file transform_convert_cursor.cc.

Referenced by convert_type_get(), and translate_snap_increment_init().

◆ TransConvertType_CursorImage

TransConvertTypeInfo TransConvertType_CursorImage
extern

Definition at line 193 of file transform_convert_cursor.cc.

Referenced by convert_type_get().

◆ TransConvertType_CursorSequencer

TransConvertTypeInfo TransConvertType_CursorSequencer
extern

Definition at line 200 of file transform_convert_cursor.cc.

Referenced by convert_type_get().

◆ TransConvertType_Curve

TransConvertTypeInfo TransConvertType_Curve
extern

◆ TransConvertType_Curves

TransConvertTypeInfo TransConvertType_Curves
extern

◆ TransConvertType_EditArmature

TransConvertTypeInfo TransConvertType_EditArmature
extern

Definition at line 1745 of file transform_convert_armature.cc.

Referenced by convert_type_get(), and init_TransDataContainers().

◆ TransConvertType_GPencil

TransConvertTypeInfo TransConvertType_GPencil
extern

◆ TransConvertType_Graph

TransConvertTypeInfo TransConvertType_Graph
extern

Definition at line 1051 of file transform_convert_graph.cc.

Referenced by convert_type_get(), and init_proportional_edit().

◆ TransConvertType_GreasePencil

TransConvertTypeInfo TransConvertType_GreasePencil
extern

◆ TransConvertType_Lattice

TransConvertTypeInfo TransConvertType_Lattice
extern

◆ TransConvertType_Mask

TransConvertTypeInfo TransConvertType_Mask
extern

Definition at line 469 of file transform_convert_mask.cc.

Referenced by convert_type_get(), and init_proportional_edit().

◆ TransConvertType_MBall

TransConvertTypeInfo TransConvertType_MBall
extern

◆ TransConvertType_Mesh

◆ TransConvertType_MeshEdge

TransConvertTypeInfo TransConvertType_MeshEdge
extern

◆ TransConvertType_MeshSkin

TransConvertTypeInfo TransConvertType_MeshSkin
extern

◆ TransConvertType_MeshUV

◆ TransConvertType_MeshVertCData

TransConvertTypeInfo TransConvertType_MeshVertCData
extern

◆ TransConvertType_NLA

TransConvertTypeInfo TransConvertType_NLA
extern

Definition at line 994 of file transform_convert_nla.cc.

Referenced by convert_type_get().

◆ TransConvertType_Node

TransConvertTypeInfo TransConvertType_Node
extern

◆ TransConvertType_Object

TransConvertTypeInfo TransConvertType_Object
extern

◆ TransConvertType_ObjectTexSpace

TransConvertTypeInfo TransConvertType_ObjectTexSpace
extern

Definition at line 113 of file transform_convert_object_texspace.cc.

Referenced by convert_type_get(), and ElementResize().

◆ TransConvertType_PaintCurve

TransConvertTypeInfo TransConvertType_PaintCurve
extern

Definition at line 217 of file transform_convert_paintcurve.cc.

Referenced by convert_type_get().

◆ TransConvertType_Particle

TransConvertTypeInfo TransConvertType_Particle
extern

Definition at line 254 of file transform_convert_particle.cc.

Referenced by convert_type_get(), and init_proportional_edit().

◆ TransConvertType_Pose

◆ TransConvertType_Sculpt

TransConvertTypeInfo TransConvertType_Sculpt
extern

Definition at line 134 of file transform_convert_sculpt.cc.

Referenced by convert_type_get(), and ElementResize().

◆ TransConvertType_Sequencer

◆ TransConvertType_SequencerImage

TransConvertTypeInfo TransConvertType_SequencerImage
extern

◆ TransConvertType_SequencerRetiming

TransConvertTypeInfo TransConvertType_SequencerRetiming
extern

◆ TransConvertType_Tracking

TransConvertTypeInfo TransConvertType_Tracking
extern

◆ TransConvertType_TrackingCurves

TransConvertTypeInfo TransConvertType_TrackingCurves
extern

Definition at line 302 of file transform_convert_tracking_curves.cc.

Referenced by convert_type_get().