Blender V4.3
BMHeader Struct Reference

#include <bmesh_class.hh>

Public Attributes

void * data
 
int index
 
char htype
 
char hflag
 
char api_flag
 

Detailed Description

BMHeader

All mesh elements begin with a BMHeader. This structure hold several types of data

1: The type of the element (vert, edge, loop or face) 2: Persistent "header" flags/markings (smooth, seam, select, hidden, etc) note that this is different from the "tool" flags. 3: Unique ID in the BMesh. 4: some elements for internal record keeping.

Definition at line 51 of file bmesh_class.hh.

Member Data Documentation

◆ api_flag

char BMHeader::api_flag

Internal use only!

Note
We are very picky about not bloating this struct but in this case its padded up to 16 bytes anyway, so adding a flag here gives no increase in size.

Definition at line 76 of file bmesh_class.hh.

Referenced by BM_edge_create(), bm_face_create__internal(), bm_loop_create(), BM_vert_create(), and TEST().

◆ data

void* BMHeader::data

Customdata layers.

Definition at line 53 of file bmesh_class.hh.

Referenced by BKE_mesh_ensure_skin_customdata(), BM_data_interp_face_vert_edge(), bm_data_interp_from_elem(), BM_data_layer_copy(), bm_edge_collapse_loop_customdata(), BM_edge_create(), BM_elem_attrs_copy(), BM_elem_attrs_copy(), BM_elem_attrs_copy(), BM_elem_attrs_copy(), BM_elem_attrs_copy(), BM_elem_attrs_copy(), BM_elem_attrs_copy(), BM_elem_attrs_copy(), bm_extrude_disable_skin_root(), BM_face_copy_shared(), BM_face_create(), bm_face_create__internal(), BM_face_interp_from_face(), BM_face_interp_from_face_ex(), BM_face_split_edgenet(), bm_grid_fill_array(), bm_interp_face_store(), bm_kill_only_edge(), bm_kill_only_face(), bm_kill_only_loop(), bm_kill_only_vert(), bm_loop_create(), BM_loop_interp_from_face(), bm_loop_interp_from_grid_boundary_2(), bm_loop_interp_from_grid_boundary_4(), BM_mesh_copy(), bm_mesh_copy_new_face(), BM_mesh_data_free(), BM_vert_collapse_faces(), BM_vert_create(), BM_vert_interp_from_face(), blender::draw::pbvh::bmesh_cd_loop_get(), blender::draw::pbvh::bmesh_cd_vert_get(), bmesh_face_swap_data(), blender::ed::mesh::set_attribute::bmesh_loop_layer_selected_values_set(), blender::ed::mesh::set_attribute::bmesh_vert_edge_face_layer_selected_values_set(), bmo_inset_region_exec(), bmo_mirror_exec(), bmo_pointmerge_facedata_exec(), BMO_slot_buffer_from_all(), BPy_BMEdge_CreatePyObject(), BPy_BMFace_CreatePyObject(), bpy_bmlayeritem_ptr_get(), BPy_BMLoop_CreatePyObject(), BPy_BMVert_CreatePyObject(), contarget_get_mesh_mat(), contig_ldata_across_loops(), blender::bke::pbvh::copy_edge_data(), createTransMeshSkin(), CustomData_bmesh_merge_layout(), edbm_blend_from_shape_exec(), EDBM_verts_mirror_cache_clear(), EDBM_verts_mirror_get(), edgetag_set_cb(), edgetag_test_cb(), blender::draw::extract_data_bmesh_edge(), blender::draw::extract_data_bmesh_loop(), blender::draw::extract_data_bmesh_vert(), blender::ed::sculpt_paint::face_set::find_next_available_id(), mesh_attributes_copy_to_bmesh_block(), blender::ed::mesh::set_attribute::mesh_set_attribute_invoke(), mesh_skin_transdata_create(), output_frames(), shape_propagate(), blender::ed::object::skin_loose_mark_clear_exec(), blender::ed::object::skin_radii_equalize_exec(), skin_smooth_hulls(), and update_data_blocks().

◆ hflag

◆ htype

char BMHeader::htype

Element geometric type (verts/edges/loops/faces).

Definition at line 66 of file bmesh_class.hh.

Referenced by _bm_elem_hide_set(), BM_edge_create(), BM_edge_exists(), BM_edge_hide_set(), BM_edge_select_set(), BM_edge_select_set_noflush(), BM_elem_select_copy(), BM_elem_select_set(), BM_face_create(), bm_face_create__internal(), BM_face_hide_set(), BM_face_select_set(), BM_face_select_set_noflush(), BM_face_split_edgenet_connect_islands(), bm_loop_create(), bm_mesh_elems_select_get_n__internal(), BM_mesh_intersect_edges(), bm_select_history_create(), BM_vert_create(), BM_vert_hide_set(), BM_vert_select_set(), bmesh_elem_check(), bmo_connect_vert_pair_exec(), bmo_contextual_create_exec(), BMO_elem_flag_from_header(), BMO_iter_step(), BMO_slot_buffer_from_single(), BMO_slot_map_to_flag(), bmw_LoopShellWalker_begin(), bmw_LoopShellWalker_step_impl(), bmw_LoopShellWireWalker_begin(), bmw_LoopShellWireWalker_step(), bmw_LoopShellWireWalker_visitVert(), bmw_VertShellWalker_begin(), BPy_BMElem_CreatePyObject(), bpy_bmlayeritem_ptr_get(), deselect_nth_active(), edbm_add_edge_face_exec__tricky_finalize_sel(), EDBM_elem_to_index_any(), edbm_polybuild_delete_at_cursor_invoke(), edbm_polybuild_dissolve_at_cursor_invoke(), edbm_polybuild_face_at_cursor_invoke(), edbm_polybuild_split_at_cursor_invoke(), edbm_polybuild_transform_at_cursor_invoke(), EDBM_preselect_elem_update_from_single(), EDBM_preselect_elem_update_preview(), edbm_select_linked_exec(), edbm_select_linked_pick_ex(), edbm_select_linked_pick_invoke(), edbm_shortest_path_pick_ex(), edbm_shortest_path_pick_invoke(), edge_verts_add(), edge_verts_sort(), face_edges_add(), face_edges_split(), mesh_calc_path_region_elem(), mesh_calc_path_region_elem(), blender::ed::mesh::set_attribute::mesh_set_attribute_invoke(), state_link_add(), state_link_find(), state_step(), TEST(), uv_shortest_path_pick_ex(), vert_dissolve_add(), and walker_deselect_nth().

◆ index

int BMHeader::index
Note
  • Use BM_elem_index_get/set macros for index
  • Uninitialized to -1 so we can easily tell its not set.
  • Used for edge/vert/face/loop, check BMesh.elem_index_dirty for valid index values, this is abused by various tools which set it dirty.
  • For loops this is used for sorting during tessellation.

Definition at line 63 of file bmesh_class.hh.

Referenced by _bm_elem_index_get(), _bm_elem_index_set(), bm_edge_pair_elem_setup(), BM_mesh_intersect_edges(), bmesh_face_swap_data(), bpy_bmelemseq_sort(), and UL().


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