Blender V4.3
ED_object.hh File Reference
#include <string>
#include "BLI_compiler_attrs.h"
#include "BLI_string_ref.hh"
#include "BLI_vector.hh"
#include "DNA_object_enums.h"
#include "DNA_userdef_enums.h"
#include "DNA_windowmanager_types.h"

Go to the source code of this file.

Namespaces

namespace  blender
 
namespace  blender::ed
 
namespace  blender::ed::object
 

Macros

#define OBJECT_ADD_SIZE_MAXF   1.0e12f
 

Enumerations

enum  { blender::ed::object::XFORM_OB_SKIP_CHILD_PARENT_IS_XFORM = 1 , blender::ed::object::XFORM_OB_SKIP_CHILD_PARENT_IS_XFORM_INDIRECT = 3 , blender::ed::object::XFORM_OB_SKIP_CHILD_PARENT_APPLY = 2 }
 
enum  blender::ed::object::eParentType {
  blender::ed::object::PAR_OBJECT , blender::ed::object::PAR_ARMATURE , blender::ed::object::PAR_ARMATURE_NAME , blender::ed::object::PAR_ARMATURE_ENVELOPE ,
  blender::ed::object::PAR_ARMATURE_AUTO , blender::ed::object::PAR_BONE , blender::ed::object::PAR_BONE_RELATIVE , blender::ed::object::PAR_CURVE ,
  blender::ed::object::PAR_FOLLOW , blender::ed::object::PAR_PATH_CONST , blender::ed::object::PAR_LATTICE , blender::ed::object::PAR_VERTEX ,
  blender::ed::object::PAR_VERTEX_TRI
}
 
enum  blender::ed::object::eObjectSelect_Mode { blender::ed::object::BA_DESELECT = 0 , blender::ed::object::BA_SELECT = 1 , blender::ed::object::BA_INVERT = 2 }
 
enum  blender::ed::object::eObClearParentTypes { blender::ed::object::CLEAR_PARENT_ALL = 0 , blender::ed::object::CLEAR_PARENT_KEEP_TRANSFORM , blender::ed::object::CLEAR_PARENT_INVERSE }
 
enum  { blender::ed::object::EM_FREEDATA = (1 << 0) , blender::ed::object::EM_NO_CONTEXT = (1 << 1) }
 
enum  blender::ed::object::eObjectPathCalcRange { blender::ed::object::OBJECT_PATH_CALC_RANGE_CURRENT_FRAME , blender::ed::object::OBJECT_PATH_CALC_RANGE_CHANGED , blender::ed::object::OBJECT_PATH_CALC_RANGE_FULL }
 
enum  { blender::ed::object::MODIFIER_APPLY_DATA = 1 , blender::ed::object::MODIFIER_APPLY_SHAPE }
 

Functions

void blender::ed::object::operatortypes_object ()
 
void blender::ed::object::operatormacros_object ()
 
void blender::ed::object::keymap_object (wmKeyConfig *keyconf)
 
GpencilModifierDatablender::ed::object::gpencil_modifier_add (ReportList *reports, Main *bmain, Scene *scene, Object *ob, const char *name, int type)
 
bool blender::ed::object::gpencil_modifier_remove (ReportList *reports, Main *bmain, Object *ob, GpencilModifierData *md)
 
void blender::ed::object::gpencil_modifier_clear (Main *bmain, Object *ob)
 
bool blender::ed::object::gpencil_modifier_move_down (ReportList *reports, Object *ob, GpencilModifierData *md)
 
bool blender::ed::object::gpencil_modifier_move_up (ReportList *reports, Object *ob, GpencilModifierData *md)
 
bool blender::ed::object::gpencil_modifier_move_to_index (ReportList *reports, Object *ob, GpencilModifierData *md, int index)
 
bool blender::ed::object::gpencil_modifier_apply (Main *bmain, ReportList *reports, Depsgraph *depsgraph, Object *ob, GpencilModifierData *md, int mode)
 
bool blender::ed::object::gpencil_modifier_copy (ReportList *reports, Object *ob, GpencilModifierData *md)
 
void blender::ed::object::gpencil_modifier_copy_to_object (Object *ob_dst, GpencilModifierData *md)
 
void blender::ed::object::ui_template_modifier_asset_menu_items (uiLayout &layout, StringRef catalog_path)
 
Internal Utilities
Objectblender::ed::object::context_object (const bContext *C)
 
Objectblender::ed::object::context_active_object (const bContext *C)
 
blender::Vector< Object * > blender::ed::object::objects_in_mode_or_selected (bContext *C, bool(*filter_fn)(const Object *ob, void *user_data), void *filter_user_data)
 
Hide Operator
void blender::ed::object::collection_hide_menu_draw (const bContext *C, uiLayout *layout)
 
Shape Key Lock Checks
bool blender::ed::object::shape_key_report_if_locked (const Object *obedit, ReportList *reports)
 
bool blender::ed::object::shape_key_report_if_active_locked (Object *ob, ReportList *reports)
 
bool blender::ed::object::shape_key_report_if_any_locked (Object *ob, ReportList *reports)
 
Active Element Center
bool blender::ed::object::calc_active_center_for_editmode (Object *obedit, bool select_only, float r_center[3])
 
bool blender::ed::object::calc_active_center_for_posemode (Object *ob, bool select_only, float r_center[3])
 
bool blender::ed::object::calc_active_center (Object *ob, bool select_only, float r_center[3])
 
Object Data Transform Container

Use to implement 'Affect Only Origins' feature.

XFormObjectData_Containerblender::ed::object::data_xform_container_create ()
 
void blender::ed::object::data_xform_container_destroy (XFormObjectData_Container *xds)
 
void blender::ed::object::data_xform_container_update_all (XFormObjectData_Container *xds, Main *bmain, Depsgraph *depsgraph)
 
void blender::ed::object::data_xform_container_item_ensure (XFormObjectData_Container *xds, Object *ob)
 
Object Child Skip

Don't transform unselected children, this is done using the parent inverse matrix.

Note
The complex logic here is caused by mixed selection within a single selection chain, otherwise we only need XFORM_OB_SKIP_CHILD_PARENT_IS_XFORM for single objects.
XFormObjectSkipChild_Containerblender::ed::object::xform_skip_child_container_create ()
 
void blender::ed::object::xform_skip_child_container_item_ensure_from_array (XFormObjectSkipChild_Container *xcs, const Scene *scene, ViewLayer *view_layer, Object **objects, uint objects_len)
 
void blender::ed::object::object_xform_skip_child_container_destroy (XFormObjectSkipChild_Container *xcs)
 
void blender::ed::object::object_xform_skip_child_container_update_all (XFormObjectSkipChild_Container *xcs, Main *bmain, Depsgraph *depsgraph)
 
void blender::ed::object::object_xform_skip_child_container_item_ensure (XFormObjectSkipChild_Container *xcs, Object *ob, Object *ob_parent_recurse, int mode)
 
Transform Object Array

Low level object transform function, transforming objects by matrix. Simple alternative to full transform logic.

void blender::ed::object::object_xform_array_m4 (Object **objects, uint objects_len, const float matrix[4][4])
 
Make Parent Operator
bool blender::ed::object::parent_set (ReportList *reports, const bContext *C, Scene *scene, Object *const ob, Object *const par, int partype, bool xmirror, bool keep_transform, const int vert_par[3])
 
void blender::ed::object::parent_set (Object *ob, Object *parent, int type, const char *substr)
 
Clear Parent Operator
void blender::ed::object::parent_clear (Object *ob, int type)
 
Public Object Selection API
void blender::ed::object::base_select (Base *base, eObjectSelect_Mode mode)
 
void blender::ed::object::base_activate (bContext *C, Base *base)
 
void blender::ed::object::base_activate_with_mode_exit_if_needed (bContext *C, Base *base)
 
void blender::ed::object::base_active_refresh (Main *bmain, Scene *scene, ViewLayer *view_layer)
 
bool blender::ed::object::base_deselect_all_ex (const Scene *scene, ViewLayer *view_layer, View3D *v3d, int action, bool *r_any_visible)
 
bool blender::ed::object::base_deselect_all (const Scene *scene, ViewLayer *view_layer, View3D *v3d, int action)
 
Delete Object Operator
void blender::ed::object::base_free_and_unlink (Main *bmain, Scene *scene, Object *ob)
 
void blender::ed::object::base_free_and_unlink_no_indirect_check (Main *bmain, Scene *scene, Object *ob)
 
Duplicate Object Operator
Baseblender::ed::object::add_duplicate (Main *bmain, Scene *scene, ViewLayer *view_layer, Base *base, eDupli_ID_Flags dupflag)
 
Drop Named Material on Object Operator
std::string blender::ed::object::drop_named_material_tooltip (bContext *C, const char *name, const int mval[2])
 
Drop Geometry Nodes on Object Operator
std::string blender::ed::object::drop_geometry_nodes_tooltip (bContext *C, PointerRNA *properties, const int mval[2])
 
Toggle Edit-Mode Operator
bool blender::ed::object::editmode_exit_ex (Main *bmain, Scene *scene, Object *obedit, int flag)
 
bool blender::ed::object::editmode_exit (bContext *C, int flag)
 
bool blender::ed::object::editmode_free_ex (Main *bmain, Object *obedit)
 
bool blender::ed::object::editmode_exit_multi_ex (Main *bmain, Scene *scene, ViewLayer *view_layer, int flag)
 
bool blender::ed::object::editmode_exit_multi (bContext *C, int flag)
 
bool blender::ed::object::editmode_enter_ex (Main *bmain, Scene *scene, Object *ob, int flag)
 
bool blender::ed::object::editmode_enter (bContext *C, int flag)
 
bool blender::ed::object::editmode_load (Main *bmain, Object *obedit)
 
Public Add Object API
void blender::ed::object::location_from_view (bContext *C, float loc[3])
 
void blender::ed::object::rotation_from_quat (float rot[3], const float quat[4], char align_axis)
 
void blender::ed::object::rotation_from_view (bContext *C, float rot[3], char align_axis)
 
void blender::ed::object::init_transform_on_add (Object *object, const float loc[3], const float rot[3])
 
float blender::ed::object::new_primitive_matrix (bContext *C, Object *obedit, const float loc[3], const float rot[3], const float scale[3], float primmat[4][4])
 
Add Object Operator
void blender::ed::object::add_unit_props_size (wmOperatorType *ot)
 
void blender::ed::object::add_unit_props_radius_ex (wmOperatorType *ot, float default_value)
 
void blender::ed::object::add_unit_props_radius (wmOperatorType *ot)
 
void blender::ed::object::add_generic_props (wmOperatorType *ot, bool do_editmode)
 
void blender::ed::object::add_mesh_props (wmOperatorType *ot)
 
void blender::ed::object::add_generic_get_opts (bContext *C, wmOperator *op, char view_align_axis, float r_loc[3], float r_rot[3], float r_scale[3], bool *r_enter_editmode, unsigned short *r_local_view_bits, bool *r_is_view_aligned)
 
Objectblender::ed::object::add_type_with_obdata (bContext *C, int type, const char *name, const float loc[3], const float rot[3], bool enter_editmode, ushort local_view_bits, ID *obdata)
 
Objectblender::ed::object::add_type (bContext *C, int type, const char *name, const float loc[3], const float rot[3], bool enter_editmode, unsigned short local_view_bits) ATTR_NONNULL(1) ATTR_RETURNS_NONNULL
 
Make Single User Operator
void blender::ed::object::object_single_user_make (Main *bmain, Scene *scene, Object *ob)
 
void blender::ed::object::single_obdata_user_make (Main *bmain, Scene *scene, Object *ob)
 
Clear Motion Paths Operator
void blender::ed::object::motion_paths_clear (bContext *C, bool only_selected)
 
Calculate Motion Paths Operator
void blender::ed::object::motion_paths_recalc (bContext *C, Scene *scene, eObjectPathCalcRange range, ListBase *ld_objects)
 
void blender::ed::object::motion_paths_recalc_selected (bContext *C, Scene *scene, eObjectPathCalcRange range)
 
void blender::ed::object::motion_paths_recalc_visible (bContext *C, Scene *scene, eObjectPathCalcRange range)
 
Constraint Data Accessors
ListBaseblender::ed::object::constraint_active_list (Object *ob)
 
ListBaseblender::ed::object::pose_constraint_list (const bContext *C)
 
ListBaseblender::ed::object::constraint_list_from_constraint (Object *ob, bConstraint *con, bPoseChannel **r_pchan)
 
bConstraintblender::ed::object::constraint_active_get (Object *ob)
 
Constraint Sanity Testing
void blender::ed::object::object_test_constraints (Main *bmain, Object *ob)
 
Constraint Management Utilities
void blender::ed::object::constraint_active_set (Object *ob, bConstraint *con)
 
void blender::ed::object::constraint_update (Main *bmain, Object *ob)
 
void blender::ed::object::constraint_dependency_update (Main *bmain, Object *ob)
 
void blender::ed::object::constraint_tag_update (Main *bmain, Object *ob, bConstraint *con)
 
void blender::ed::object::constraint_dependency_tag_update (Main *bmain, Object *ob, bConstraint *con)
 
bool blender::ed::object::constraint_move_to_index (Object *ob, bConstraint *con, int index)
 
void blender::ed::object::constraint_link (Main *bmain, Object *ob_dst, ListBase *dst, ListBase *src)
 
void blender::ed::object::constraint_copy_for_object (Main *bmain, Object *ob_dst, bConstraint *con)
 
void blender::ed::object::constraint_copy_for_pose (Main *bmain, Object *ob_dst, bPoseChannel *pchan, bConstraint *con)
 
High Level Mode Operations
bool blender::ed::object::mode_compat_test (const Object *ob, eObjectMode mode)
 
bool blender::ed::object::mode_compat_set (bContext *C, Object *ob, eObjectMode mode, ReportList *reports)
 
Generic Mode Enter/Exit

Supports exiting a mode without it being in the current context. This could be done for entering modes too if it's needed.

bool blender::ed::object::mode_set_ex (bContext *C, eObjectMode mode, bool use_undo, ReportList *reports)
 
bool blender::ed::object::mode_set (bContext *C, eObjectMode mode)
 
void blender::ed::object::mode_generic_exit (Main *bmain, Depsgraph *depsgraph, Scene *scene, Object *ob)
 
bool blender::ed::object::mode_generic_has_data (Depsgraph *depsgraph, const Object *ob)
 
void blender::ed::object::posemode_set_for_weight_paint (bContext *C, Main *bmain, Object *ob, bool is_mode_set)
 
Object Index Lookup/Creation
int blender::ed::object::object_in_mode_to_index (const Scene *scene, ViewLayer *view_layer, eObjectMode mode, const Object *ob)
 
Objectblender::ed::object::object_in_mode_from_index (const Scene *scene, ViewLayer *view_layer, eObjectMode mode, int index)
 
Public Api
ModifierDatablender::ed::object::modifier_add (ReportList *reports, Main *bmain, Scene *scene, Object *ob, const char *name, int type)
 
bool blender::ed::object::modifier_remove (ReportList *reports, Main *bmain, Scene *scene, Object *ob, ModifierData *md)
 
void blender::ed::object::modifiers_clear (Main *bmain, Scene *scene, Object *ob)
 
bool blender::ed::object::modifier_move_down (ReportList *reports, eReportType error_type, Object *ob, ModifierData *md)
 
bool blender::ed::object::modifier_move_up (ReportList *reports, eReportType error_type, Object *ob, ModifierData *md)
 
bool blender::ed::object::modifier_move_to_index (ReportList *reports, eReportType error_type, Object *ob, ModifierData *md, int index, bool allow_partial)
 
bool blender::ed::object::convert_psys_to_mesh (ReportList *reports, Main *bmain, Depsgraph *depsgraph, Scene *scene, ViewLayer *view_layer, Object *ob, ModifierData *md)
 
bool blender::ed::object::modifier_apply (Main *bmain, ReportList *reports, Depsgraph *depsgraph, Scene *scene, Object *ob, ModifierData *md, int mode, bool keep_modifier, bool do_all_keyframes)
 
bool blender::ed::object::modifier_copy (ReportList *reports, Main *bmain, Scene *scene, Object *ob, ModifierData *md)
 
void blender::ed::object::modifier_link (bContext *C, Object *ob_dst, Object *ob_src)
 
bool blender::ed::object::modifier_copy_to_object (Main *bmain, const Scene *scene, const Object *ob_src, const ModifierData *md, Object *ob_dst, ReportList *reports)
 
bool blender::ed::object::iter_other (Main *bmain, Object *orig_ob, bool include_orig, bool(*callback)(Object *ob, void *callback_data), void *callback_data)
 
bool blender::ed::object::multires_update_totlevels (Object *ob, void *totlevel_v)
 
ShaderFxDatablender::ed::object::shaderfx_add (ReportList *reports, Main *bmain, Scene *scene, Object *ob, const char *name, int type)
 
bool blender::ed::object::shaderfx_remove (ReportList *reports, Main *bmain, Object *ob, ShaderFxData *fx)
 
void blender::ed::object::shaderfx_clear (Main *bmain, Object *ob)
 
int blender::ed::object::shaderfx_move_down (ReportList *reports, Object *ob, ShaderFxData *fx)
 
int blender::ed::object::shaderfx_move_up (ReportList *reports, Object *ob, ShaderFxData *fx)
 
bool blender::ed::object::shaderfx_move_to_index (ReportList *reports, Object *ob, ShaderFxData *fx, int index)
 
void blender::ed::object::shaderfx_link (Object *dst, Object *src)
 
void blender::ed::object::shaderfx_copy (Object *dst, ShaderFxData *fx)
 
Selection by Links
void blender::ed::object::select_linked_by_id (bContext *C, ID *id)
 
Force Field Toggle Operator
void blender::ed::object::check_force_modifiers (Main *bmain, Scene *scene, Object *object)
 
Jump To Object Utilities
Baseblender::ed::object::find_first_by_data_id (const Scene *scene, ViewLayer *view_layer, ID *id)
 
bool blender::ed::object::jump_to_object (bContext *C, Object *ob, bool reveal_hidden)
 
bool blender::ed::object::jump_to_bone (bContext *C, Object *ob, const char *bone_name, bool reveal_hidden)
 
Public Object Data Storage API

Used for interactively transforming object data.

Store object data transformation in an opaque struct.

XFormObjectDatablender::ed::object::data_xform_create_ex (ID *id, bool is_edit_mode)
 
XFormObjectDatablender::ed::object::data_xform_create (ID *id)
 
XFormObjectDatablender::ed::object::data_xform_create_from_edit_mode (ID *id)
 
void blender::ed::object::data_xform_destroy (XFormObjectData *xod_base)
 
void blender::ed::object::data_xform_by_mat4 (XFormObjectData *xod, const float mat[4][4])
 
void blender::ed::object::data_xform_restore (XFormObjectData *xod)
 
void blender::ed::object::data_xform_tag_update (XFormObjectData *xod)
 

Macro Definition Documentation

◆ OBJECT_ADD_SIZE_MAXF