Blender V5.0
blender::ed::transform::TransDataContainer Struct Reference

#include <transform.hh>

Public Member Functions

bool foreach_index (FunctionRef< bool(int)> fn) const
void foreach_index_selected (FunctionRef< void(int)> fn) const

Public Attributes

TransDatadata
TransDataExtensiondata_ext
TransData2Ddata_2d
TransDataMirrordata_mirror
int data_len
int data_mirror_len
int data_gpf_len
Objectobedit
float mat [4][4]
float imat [4][4]
float mat3 [3][3]
float imat3 [3][3]
float mat3_unit [3][3]
Objectposeobj
float center_local [3]
bool is_active
bool use_local_mat
union { 
   struct { 
      uint   use_mirror_axis_x: 1 
      uint   use_mirror_axis_y: 1 
      uint   use_mirror_axis_z: 1 
   } 
   char   use_mirror_axis_any 
}; 
TransCustomDataContainer custom
int * sorted_index_map

Detailed Description

Container for Transform Data

Used to implement multi-object modes, so each object can have its own data array as well as object matrix, local center etc.

Anything that can't be shared between all objects and doesn't make sense to store for every vertex (in the #TransDataContainer.data).

Note
at some point this could be used to store non object containers although this only makes sense if each container has its own matrices, otherwise all elements may as well be stored in one array (#TransDataContainer.data), as is already done for curve-objects, f-curves. etc.

Definition at line 667 of file transform.hh.

Member Function Documentation

◆ foreach_index()

bool blender::ed::transform::TransDataContainer::foreach_index ( FunctionRef< bool(int)> fn) const
inline

Call the given function for each index in the data. This index can then be used to access the data, data_ext, and data_2d arrays.

If there is a sorted_index_map (see above), this will be used. Otherwise it is assumed that the arrays can be iterated in their natural array order.

Parameters
fnfunction that's called for each index. The function should return whether to keep looping (true) or break out of the loop (false).
Returns
whether the end of the loop was reached.

Definition at line 758 of file transform.hh.

References i.

Referenced by foreach_index_selected(), and blender::ed::transform::set_prop_dist().

◆ foreach_index_selected()

void blender::ed::transform::TransDataContainer::foreach_index_selected ( FunctionRef< void(int)> fn) const
inline

Call fn only for indices of selected items. Apart from that, this is the same as index_map() above.

Parameters
fnfunction that's called for each index. Contrary to the index_map() function, it is assumed that all selected items should be visited, and so for simplicity there is no bool to return.

Definition at line 785 of file transform.hh.

References blender::ed::transform::TransDataBasic::flag, foreach_index(), i, and blender::ed::transform::TD_SELECTED.

Referenced by blender::ed::transform::UVGroups::init(), blender::ed::transform::set_prop_dist(), blender::ed::transform::transform_mesh_edge_slide_data_create(), blender::ed::transform::transform_mesh_uv_edge_slide_data_create(), and blender::ed::transform::transform_mesh_vert_slide_data_create().

Member Data Documentation

◆ [union]

Mirror option.

◆ center_local

float blender::ed::transform::TransDataContainer::center_local[3]

◆ custom

TransCustomDataContainer blender::ed::transform::TransDataContainer::custom

Definition at line 725 of file transform.hh.

Referenced by blender::ed::transform::cancelTransTracking(), blender::ed::transform::cancelTransTrackingCurves(), blender::ed::transform::curves::createTransCurvesVerts(), blender::ed::transform::createTransGraphEditData(), blender::ed::transform::greasepencil::createTransGreasePencilVerts(), blender::ed::transform::createTransMaskingData(), blender::ed::transform::createTransNlaData(), blender::ed::transform::createTransPaintCurveVerts(), blender::ed::transform::pointcloud::createTransPointCloudVerts(), blender::ed::transform::createTransSeqData(), blender::ed::transform::createTransSeqImageData(), blender::ed::transform::createTransSeqRetimingData(), blender::ed::transform::createTransTrackingCurvesData(), blender::ed::transform::createTransTrackingTracksData(), blender::ed::transform::curves::curve_populate_trans_data_structs(), blender::ed::transform::drawVertSlide(), blender::ed::transform::edge_slide_snap_apply(), blender::ed::transform::edge_slide_transform_matrix_fn(), blender::ed::transform::edgeSlideFirstGet(), blender::ed::transform::flushTransGraphData(), blender::ed::transform::flushTransMasking(), blender::ed::transform::flushTransPaintCurve(), blender::ed::transform::flushTransTracking(), blender::ed::transform::flushTransTrackingCurves(), blender::ed::transform::freeCustomNormalArray(), blender::ed::transform::freeSeqData(), blender::ed::transform::handleEventVertSlide(), blender::ed::transform::mesh_customdata_ensure(), blender::ed::transform::mesh_customdatacorrect_apply(), blender::ed::transform::mesh_uv_groups_get(), blender::ed::transform::pose_transform_mirror_update(), blender::ed::transform::recalcData_nla(), blender::ed::transform::restoreBones(), blender::ed::transform::restoreMirrorPoseBones(), blender::ed::transform::special_aftertrans_update__nla(), blender::ed::transform::storeCustomLNorValue(), blender::ed::transform::vert_slide_snap_apply(), and blender::ed::transform::vert_slide_transform_matrix_fn().

◆ data

TransData* blender::ed::transform::TransDataContainer::data

Transformed data (array).

Definition at line 669 of file transform.hh.

Referenced by blender::ed::transform::applyObjectConstraintRot(), blender::ed::transform::clipUVData(), blender::ed::transform::constraintScaleLim(), blender::ed::transform::createTransActionData(), blender::ed::transform::createTransCursor_2D_impl(), blender::ed::transform::createTransCursor_view3d(), blender::ed::transform::curves::createTransCurvesVerts(), blender::ed::transform::createTransGraphEditData(), blender::ed::transform::greasepencil::createTransGreasePencilVerts(), blender::ed::transform::createTransMaskingData(), blender::ed::transform::createTransNlaData(), blender::ed::transform::createTransNodeData(), blender::ed::transform::createTransObject(), blender::ed::transform::createTransPaintCurveVerts(), blender::ed::transform::pointcloud::createTransPointCloudVerts(), blender::ed::transform::createTransSculpt(), blender::ed::transform::createTransSeqData(), blender::ed::transform::createTransSeqImageData(), blender::ed::transform::createTransSeqRetimingData(), blender::ed::transform::createTransTexspace(), blender::ed::transform::createTransTrackingCurvesData(), blender::ed::transform::createTransTrackingTracksData(), blender::ed::transform::curves::curve_populate_trans_data_structs(), blender::ed::transform::ElementMirror(), blender::ed::transform::ElementResize(), blender::ed::transform::flushTransGraphData(), blender::ed::transform::flushTransSeq(), blender::ed::transform::flushTransTracking(), blender::ed::transform::flushTransTrackingCurves(), blender::ed::transform::freeSeqData(), blender::ed::transform::freeSeqData(), blender::ed::transform::image_origin_set(), blender::ed::transform::image_transform_set(), blender::ed::transform::UVGroups::init(), blender::ed::transform::initCurveShrinkFatten(), blender::ed::transform::mesh_customdatacorrect_apply(), blender::ed::transform::mesh_customdatacorrect_create_impl(), blender::ed::transform::mesh_partial_ensure(), blender::ed::transform::mesh_transdata_mirror_apply(), blender::ed::transform::mesh_uv_group_is_inner(), blender::ed::transform::pose_transform_mirror_update(), blender::ed::transform::recalcData_actedit(), blender::ed::transform::recalcData_cursor_2D_impl(), blender::ed::transform::recalcData_sequencer(), blender::ed::transform::recalcData_sequencer_retiming(), blender::ed::transform::UVGroups::sd_array_create_and_init(), blender::ed::transform::UVGroups::sd_array_create_and_init_edge(), blender::ed::transform::seq_transform_collection_from_transdata(), blender::ed::transform::set_prop_dist(), blender::ed::transform::sort_trans_data_dist_container(), blender::ed::transform::sort_trans_data_selected_first_container(), blender::ed::transform::special_aftertrans_update__object(), blender::ed::transform::special_aftertrans_update__sequencer_image(), blender::ed::transform::transform_convert_clip_mirror_modifier_apply(), blender::ed::transform::transform_mesh_edge_slide_data_create(), blender::ed::transform::transform_mesh_uv_edge_slide_data_create(), blender::ed::transform::transform_mesh_uv_vert_slide_data_create(), blender::ed::transform::transform_mesh_vert_slide_data_create(), blender::ed::transform::transform_snap_nla_calc(), and blender::ed::transform::update_transdata_bezt_pointers().

◆ data_2d

◆ data_ext

◆ data_gpf_len

int blender::ed::transform::TransDataContainer::data_gpf_len

Total number of transformed gp-frames.

Definition at line 682 of file transform.hh.

◆ data_len

int blender::ed::transform::TransDataContainer::data_len

Total number of transformed data, data_ext, data_2d.

Definition at line 678 of file transform.hh.

Referenced by blender::ed::transform::clipUVData(), blender::ed::transform::countAndCleanTransDataContainer(), blender::ed::transform::createTransActionData(), blender::ed::transform::createTransCursor_2D_impl(), blender::ed::transform::createTransCursor_view3d(), blender::ed::transform::curves::createTransCurvesVerts(), blender::ed::transform::createTransGraphEditData(), blender::ed::transform::greasepencil::createTransGreasePencilVerts(), blender::ed::transform::createTransMaskingData(), blender::ed::transform::createTransNlaData(), blender::ed::transform::createTransNodeData(), blender::ed::transform::createTransObject(), blender::ed::transform::createTransPaintCurveVerts(), blender::ed::transform::pointcloud::createTransPointCloudVerts(), blender::ed::transform::createTransSculpt(), blender::ed::transform::createTransSeqData(), blender::ed::transform::createTransSeqImageData(), blender::ed::transform::createTransSeqRetimingData(), blender::ed::transform::createTransTexspace(), blender::ed::transform::createTransTrackingCurves(), blender::ed::transform::createTransTrackingCurvesData(), blender::ed::transform::createTransTrackingData(), blender::ed::transform::createTransTrackingTracksData(), blender::ed::transform::curves::curve_populate_trans_data_structs(), blender::ed::transform::flushTransPaintCurve(), blender::ed::transform::flushTransSeq(), blender::ed::transform::freeSeqData(), blender::ed::transform::freeSeqData(), blender::ed::transform::UVGroups::init(), blender::ed::transform::make_sorted_index_map(), blender::ed::transform::mesh_customdatacorrect_apply(), blender::ed::transform::mesh_customdatacorrect_create_impl(), blender::ed::transform::mesh_customdatacorrect_init_container_merge_group(), blender::ed::transform::nlastrip_shuffle_transformed(), blender::ed::transform::pose_transform_mirror_update(), blender::ed::transform::recalcData_nla(), blender::ed::transform::remake_graph_transdata(), blender::ed::transform::seq_transform_collection_from_transdata(), blender::ed::transform::special_aftertrans_update__nla(), blender::ed::transform::special_aftertrans_update__object(), blender::ed::transform::transform_convert_clip_mirror_modifier_apply(), blender::ed::transform::transform_mesh_edge_slide_data_create(), and blender::ed::transform::transform_snap_nla_calc().

◆ data_mirror

◆ data_mirror_len

◆ imat

float blender::ed::transform::TransDataContainer::imat[4][4]

Definition at line 687 of file transform.hh.

Referenced by blender::ed::transform::init_TransDataContainers().

◆ imat3

◆ is_active

bool blender::ed::transform::TransDataContainer::is_active

Use for cases we care about the active, eg: active vert of active mesh. if set this will always be the first item in the array.

Definition at line 705 of file transform.hh.

Referenced by blender::ed::transform::createTransSculpt().

◆ mat

◆ mat3

float blender::ed::transform::TransDataContainer::mat3[3][3]

◆ mat3_unit

◆ obedit

◆ poseobj

◆ sorted_index_map

int* blender::ed::transform::TransDataContainer::sorted_index_map

Array of indices for the data, data_ext, and data_2d arrays.

When using this index map to traverse the arrays, they will be sorted primarily by selection state (selected before unselected). Depending on the sort function used (see below), unselected items are then sorted by their "distance" for proportional editing.

At the moment of writing, this map is only used in cases where tc->data has a mixture of selected and unselected items (as far as I, Sybren, know, just for proportial editing). Without tc->sorted_index_map, all items in tc->data are expected to be selected.

NOTE: this is set to nullptr by default; use one of the sorting functions below to initialize the array.

See also
sort_trans_data_selected_first Sorts only by selection state.
sort_trans_data_dist Sorts by selection state and distance.

Definition at line 744 of file transform.hh.

Referenced by blender::ed::transform::make_sorted_index_map(), blender::ed::transform::sort_trans_data_dist_container(), and blender::ed::transform::sort_trans_data_selected_first_container().

◆ use_local_mat

◆ use_mirror_axis_any

char blender::ed::transform::TransDataContainer::use_mirror_axis_any

◆ use_mirror_axis_x

uint blender::ed::transform::TransDataContainer::use_mirror_axis_x

Definition at line 717 of file transform.hh.

Referenced by blender::ed::transform::init_TransDataContainers().

◆ use_mirror_axis_y

uint blender::ed::transform::TransDataContainer::use_mirror_axis_y

Definition at line 718 of file transform.hh.

Referenced by blender::ed::transform::init_TransDataContainers().

◆ use_mirror_axis_z

uint blender::ed::transform::TransDataContainer::use_mirror_axis_z

Definition at line 719 of file transform.hh.

Referenced by blender::ed::transform::init_TransDataContainers().


The documentation for this struct was generated from the following file: