Blender  V3.3
Classes
object_utils.c File Reference
#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
 

Functions

Active Element Center
bool ED_object_calc_active_center_for_editmode (Object *obedit, const bool select_only, float r_center[3])
 
bool ED_object_calc_active_center_for_posemode (Object *ob, const bool select_only, float r_center[3])
 
bool ED_object_calc_active_center (Object *ob, const bool select_only, float r_center[3])
 
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.
struct XFormObjectSkipChild_ContainerED_object_xform_skip_child_container_create (void)
 
void ED_object_xform_skip_child_container_item_ensure_from_array (struct XFormObjectSkipChild_Container *xcs, ViewLayer *view_layer, Object **objects, uint objects_len)
 
void ED_object_xform_skip_child_container_destroy (struct XFormObjectSkipChild_Container *xcs)
 
void ED_object_xform_skip_child_container_item_ensure (struct XFormObjectSkipChild_Container *xcs, Object *ob, Object *ob_parent_recurse, int mode)
 
void ED_object_xform_skip_child_container_update_all (struct XFormObjectSkipChild_Container *xcs, struct Main *bmain, struct Depsgraph *depsgraph)
 
Object Data Transform Container

Use to implement 'Affect Only Origins' feature.

void ED_object_data_xform_container_item_ensure (struct XFormObjectData_Container *xds, Object *ob)
 
void ED_object_data_xform_container_update_all (struct XFormObjectData_Container *xds, struct Main *bmain, Depsgraph *depsgraph)
 
static void trans_obdata_in_obmode_free_elem (void *xf_p)
 
struct XFormObjectData_ContainerED_object_data_xform_container_create (void)
 
void ED_object_data_xform_container_destroy (struct XFormObjectData_Container *xds)
 
Transform Object Array

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

static bool object_parent_in_set (GSet *objects_set, Object *ob)
 
void ED_object_xform_array_m4 (Object **objects, uint objects_len, const float matrix[4][4])
 

Function Documentation

◆ ED_object_calc_active_center()

bool ED_object_calc_active_center ( Object ob,
const bool  select_only,
float  r_center[3] 
)

◆ ED_object_calc_active_center_for_editmode()

bool ED_object_calc_active_center_for_editmode ( Object obedit,
const bool  select_only,
float  r_center[3] 
)

◆ ED_object_calc_active_center_for_posemode()

bool ED_object_calc_active_center_for_posemode ( Object ob,
const bool  select_only,
float  r_center[3] 
)

◆ ED_object_data_xform_container_create()

struct XFormObjectData_Container* ED_object_data_xform_container_create ( void  )

◆ ED_object_data_xform_container_destroy()

void ED_object_data_xform_container_destroy ( struct XFormObjectData_Container xds)

◆ ED_object_data_xform_container_item_ensure()

void ED_object_data_xform_container_item_ensure ( struct XFormObjectData_Container xds,
Object ob 
)

◆ ED_object_data_xform_container_update_all()

void ED_object_data_xform_container_update_all ( struct XFormObjectData_Container xds,
struct Main bmain,
struct Depsgraph depsgraph 
)

◆ ED_object_xform_array_m4()

void ED_object_xform_array_m4 ( Object **  objects,
uint  objects_len,
const float  matrix[4][4] 
)

◆ ED_object_xform_skip_child_container_create()

struct XFormObjectSkipChild_Container* ED_object_xform_skip_child_container_create ( void  )

◆ ED_object_xform_skip_child_container_destroy()

void ED_object_xform_skip_child_container_destroy ( struct XFormObjectSkipChild_Container xcs)

◆ ED_object_xform_skip_child_container_item_ensure()

void ED_object_xform_skip_child_container_item_ensure ( struct XFormObjectSkipChild_Container xcs,
Object ob,
Object ob_parent_recurse,
int  mode 
)

◆ 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 
)

◆ ED_object_xform_skip_child_container_update_all()

void ED_object_xform_skip_child_container_update_all ( struct XFormObjectSkipChild_Container xcs,
struct Main bmain,
struct Depsgraph depsgraph 
)

◆ object_parent_in_set()

static bool object_parent_in_set ( GSet objects_set,
Object ob 
)
static

Definition at line 424 of file object_utils.c.

References BLI_gset_lookup(), and Object::parent.

Referenced by ED_object_xform_array_m4().

◆ trans_obdata_in_obmode_free_elem()

static void trans_obdata_in_obmode_free_elem ( void xf_p)
static

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