Blender
V3.3
|
#include <stdlib.h>
#include <string.h>
#include "DNA_anim_types.h"
#include "DNA_armature_types.h"
#include "DNA_collection_types.h"
#include "DNA_meta_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BLI_utildefines.h"
#include "BKE_action.h"
#include "BKE_armature.h"
#include "BKE_editmesh.h"
#include "BKE_lattice.h"
#include "BKE_object.h"
#include "BKE_scene.h"
#include "DEG_depsgraph_query.h"
#include "WM_types.h"
#include "ED_curve.h"
#include "ED_object.h"
#include "MEM_guardedalloc.h"
Go to the source code of this file.
Classes | |
struct | XFormObjectSkipChild_Container |
struct | XFormObjectSkipChild |
struct | XFormObjectData_Container |
struct | XFormObjectData_Extra |
Definition at line 112 of file object_utils.c.
References Object::base_flag, BASE_SELECTED, copy_v3_v3(), ED_object_calc_active_center_for_editmode(), ED_object_calc_active_center_for_posemode(), Object::mode, mul_m4_v3(), OB_MODE_EDIT, OB_MODE_POSE, and Object::obmat.
Referenced by gizmo_prepare_mat(), and snap_calc_active_center().
bool ED_object_calc_active_center_for_editmode | ( | Object * | obedit, |
const bool | select_only, | ||
float | r_center[3] | ||
) |
Definition at line 41 of file object_utils.c.
References bArmature::act_edbone, BKE_editmesh_from_object(), BKE_lattice_active_point_get(), BMEditMesh::bm, BM_editselection_center(), BM_select_history_active_get(), BONE_ROOTSEL, BONE_SELECTED, copy_v3_v3(), Object::data, ED_curve_active_center(), EditBone::flag, MetaElem::flag, EditBone::head, MetaBall::lastelem, OB_ARMATURE, OB_CURVES_LEGACY, OB_LATTICE, OB_MBALL, OB_MESH, OB_SURF, SELECT, Object::type, BPoint::vec, and MetaElem::x.
Referenced by calculateCenterActive(), ED_object_calc_active_center(), and edbm_point_normals_modal().
bool ED_object_calc_active_center_for_posemode | ( | Object * | ob, |
const bool | select_only, | ||
float | r_center[3] | ||
) |
Definition at line 100 of file object_utils.c.
References BKE_pose_channel_active_if_layer_visible(), bPoseChannel::bone, BONE_SELECTED, copy_v3_v3(), Bone::flag, and bPoseChannel::pose_head.
Referenced by calculateCenterActive(), and ED_object_calc_active_center().
struct XFormObjectData_Container* ED_object_data_xform_container_create | ( | void | ) |
Definition at line 402 of file object_utils.c.
References BLI_ghash_ptr_new(), MEM_callocN, and XFormObjectData_Container::obdata_in_obmode_map.
Referenced by createTransObject(), object_clear_transform_generic_exec(), snap_sel_to_grid_exec(), and snap_selected_to_location().
void ED_object_data_xform_container_destroy | ( | struct XFormObjectData_Container * | xds | ) |
Definition at line 409 of file object_utils.c.
References BLI_ghash_free(), MEM_freeN, NULL, XFormObjectData_Container::obdata_in_obmode_map, and trans_obdata_in_obmode_free_elem().
Referenced by freeTransObjectCustomData(), object_clear_transform_generic_exec(), snap_sel_to_grid_exec(), and snap_selected_to_location().
void ED_object_data_xform_container_item_ensure | ( | struct XFormObjectData_Container * | xds, |
Object * | ob | ||
) |
Definition at line 341 of file object_utils.c.
References BLI_ghash_ensure_p(), BLI_ghash_ptr_new(), copy_m4_m4(), Object::data, ED_object_data_xform_create(), MEM_mallocN, NULL, XFormObjectData_Extra::ob, XFormObjectData_Container::obdata_in_obmode_map, Object::obmat, XFormObjectData_Extra::obmat_orig, and XFormObjectData_Extra::xod.
Referenced by createTransObject(), object_clear_transform_generic_exec(), snap_sel_to_grid_exec(), and snap_selected_to_location().
void ED_object_data_xform_container_update_all | ( | struct XFormObjectData_Container * | xds, |
struct Main * | bmain, | ||
struct Depsgraph * | depsgraph | ||
) |
This may be called multiple times with the same data. Each time, the original transformations are re-applied, instead of accumulating the changes.
Definition at line 358 of file object_utils.c.
References BKE_scene_graph_evaluated_ensure(), BLI_ghashIterator_getKey(), BLI_ghashIterator_getValue(), DEG_get_evaluated_object(), DEG_id_tag_update(), depsgraph, ED_object_data_xform_by_mat4(), GHASH_ITER, ID_RECALC_GEOMETRY, invert_m4(), invert_m4_m4(), mul_m4_m4m4(), NULL, XFormObjectData_Extra::ob, OB_ARMATURE, XFormObjectData_Container::obdata_in_obmode_map, Object::obmat, XFormObjectData_Extra::obmat_orig, Object::type, and XFormObjectData_Extra::xod.
Referenced by object_clear_transform_generic_exec(), snap_sel_to_grid_exec(), snap_selected_to_location(), and trans_obdata_in_obmode_update_all().
Definition at line 434 of file object_utils.c.
References add_v3_v3(), BKE_object_apply_mat4(), BKE_object_to_mat4(), BLI_gset_add(), BLI_gset_free(), BLI_gset_ptr_new_ex(), copy_m4_m4(), DEG_id_tag_update(), equals_m4m4(), Object::id, ID_RECALC_TRANSFORM, Object::loc, mul_m4_m4m4(), NULL, object_parent_in_set(), unit_m4(), and zero_v3().
Referenced by collection_drop_exec(), and object_transform_to_mouse_exec().
struct XFormObjectSkipChild_Container* ED_object_xform_skip_child_container_create | ( | void | ) |
Definition at line 161 of file object_utils.c.
References BLI_ghash_ptr_new(), MEM_callocN, NULL, and XFormObjectSkipChild_Container::obchild_in_obmode_map.
Referenced by createTransObject(), object_clear_transform_generic_exec(), snap_sel_to_grid_exec(), and snap_selected_to_location().
void ED_object_xform_skip_child_container_destroy | ( | struct XFormObjectSkipChild_Container * | xcs | ) |
Definition at line 230 of file object_utils.c.
References BLI_ghash_free(), MEM_freeN, NULL, and XFormObjectSkipChild_Container::obchild_in_obmode_map.
Referenced by freeTransObjectCustomData(), object_clear_transform_generic_exec(), snap_sel_to_grid_exec(), and snap_selected_to_location().
void ED_object_xform_skip_child_container_item_ensure | ( | struct XFormObjectSkipChild_Container * | xcs, |
Object * | ob, | ||
Object * | ob_parent_recurse, | ||
int | mode | ||
) |
Definition at line 236 of file object_utils.c.
References BLI_ghash_ensure_p(), copy_m4_m4(), invert_m4_m4(), MEM_mallocN, XFormObjectSkipChild::mode, XFormObjectSkipChild::ob_parent_recurse, XFormObjectSkipChild_Container::obchild_in_obmode_map, Object::obmat, XFormObjectSkipChild::obmat_orig, Object::parent, XFormObjectSkipChild::parent_obmat_inv_orig, XFormObjectSkipChild::parent_obmat_orig, XFormObjectSkipChild::parent_recurse_obmat_orig, Object::parentinv, and XFormObjectSkipChild::parentinv_orig.
Referenced by createTransObject(), and ED_object_xform_skip_child_container_item_ensure_from_array().
void ED_object_xform_skip_child_container_item_ensure_from_array | ( | struct XFormObjectSkipChild_Container * | xcs, |
ViewLayer * | view_layer, | ||
Object ** | objects, | ||
uint | objects_len | ||
) |
Definition at line 170 of file object_utils.c.
References BLI_gset_add(), BLI_gset_free(), BLI_gset_haskey(), BLI_gset_ptr_new_ex(), ED_object_xform_skip_child_container_item_ensure(), LISTBASE_FOREACH, NULL, ViewLayer::object_bases, Object::parent, XFORM_OB_SKIP_CHILD_PARENT_APPLY, and XFORM_OB_SKIP_CHILD_PARENT_IS_XFORM.
Referenced by object_clear_transform_generic_exec(), snap_sel_to_grid_exec(), and snap_selected_to_location().
void ED_object_xform_skip_child_container_update_all | ( | struct XFormObjectSkipChild_Container * | xcs, |
struct Main * | bmain, | ||
struct Depsgraph * | depsgraph | ||
) |
Definition at line 257 of file object_utils.c.
References BKE_scene_graph_evaluated_ensure(), BLI_assert, BLI_ghashIterator_getKey(), BLI_ghashIterator_getValue(), DEG_get_evaluated_object(), DEG_id_tag_update(), depsgraph, GHASH_ITER, Object::id, ID_RECALC_TRANSFORM, invert_m4(), invert_m4_m4(), XFormObjectSkipChild::mode, mul_m4_m4m4(), XFormObjectSkipChild::ob_parent_recurse, XFormObjectSkipChild_Container::obchild_in_obmode_map, Object::obmat, XFormObjectSkipChild::obmat_orig, Object::parent, XFormObjectSkipChild::parent_obmat_inv_orig, XFormObjectSkipChild::parent_obmat_orig, XFormObjectSkipChild::parent_recurse_obmat_orig, Object::parentinv, XFormObjectSkipChild::parentinv_orig, XFORM_OB_SKIP_CHILD_PARENT_APPLY, XFORM_OB_SKIP_CHILD_PARENT_IS_XFORM, and XFORM_OB_SKIP_CHILD_PARENT_IS_XFORM_INDIRECT.
Referenced by object_clear_transform_generic_exec(), snap_sel_to_grid_exec(), snap_selected_to_location(), and trans_obchild_in_obmode_update_all().
Definition at line 424 of file object_utils.c.
References BLI_gset_lookup(), and Object::parent.
Referenced by ED_object_xform_array_m4().
Callback for GHash free.
Definition at line 393 of file object_utils.c.
References ED_object_data_xform_destroy(), MEM_freeN, and XFormObjectData_Extra::xod.
Referenced by ED_object_data_xform_container_destroy().