Blender V4.3
object_data_transform.cc File Reference
#include <cstdlib>
#include <cstring>
#include "DNA_armature_types.h"
#include "DNA_gpencil_legacy_types.h"
#include "DNA_lattice_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meta_types.h"
#include "DNA_object_types.h"
#include "BLI_listbase.h"
#include "BLI_math_matrix.h"
#include "BLI_math_rotation.h"
#include "BLI_math_vector.h"
#include "BLI_utildefines.h"
#include "BKE_armature.hh"
#include "BKE_curve.hh"
#include "BKE_editmesh.hh"
#include "BKE_gpencil_geom_legacy.h"
#include "BKE_grease_pencil.hh"
#include "BKE_key.hh"
#include "BKE_lattice.hh"
#include "BKE_mball.hh"
#include "BKE_mesh_types.hh"
#include "bmesh.hh"
#include "DEG_depsgraph.hh"
#include "ED_armature.hh"
#include "ED_mesh.hh"
#include "ED_object.hh"
#include "MEM_guardedalloc.h"

Go to the source code of this file.

Classes

struct  blender::ed::object::ElemData_Armature
 
struct  blender::ed::object::ElemData_MetaBall
 
struct  blender::ed::object::XFormObjectData
 
struct  blender::ed::object::XFormObjectData_Mesh
 
struct  blender::ed::object::XFormObjectData_Lattice
 
struct  blender::ed::object::XFormObjectData_Curve
 
struct  blender::ed::object::XFormObjectData_Armature
 
struct  blender::ed::object::XFormObjectData_MetaBall
 
struct  blender::ed::object::XFormObjectData_GPencil
 
struct  blender::ed::object::XFormObjectData_GreasePencil
 

Namespaces

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

Macros

#define COPY_PTR(member)   memcpy(elem->member, bone->member, sizeof(bone->member))
 
#define COPY_VAL(member)   memcpy(&elem->member, &bone->member, sizeof(bone->member))
 
#define COPY_PTR(member)   memcpy(bone->member, elem->member, sizeof(bone->member))
 
#define COPY_VAL(member)   memcpy(&bone->member, &elem->member, sizeof(bone->member))
 
#define COPY_PTR(member)   memcpy(elem->member, ebone->member, sizeof(ebone->member))
 
#define COPY_VAL(member)   memcpy(&elem->member, &ebone->member, sizeof(ebone->member))
 
#define COPY_PTR(member)   memcpy(ebone->member, elem->member, sizeof(ebone->member))
 
#define COPY_VAL(member)   memcpy(&ebone->member, &elem->member, sizeof(ebone->member))
 

Functions

Internal Transform Get/Apply

Some object data types don't have utility functions to access their transformation data. Define these locally.

static ElemData_Armatureblender::ed::object::armature_coords_and_quats_get_recurse (const ListBase *bone_base, ElemData_Armature *elem_array)
 
static void blender::ed::object::armature_coords_and_quats_get (const bArmature *arm, ElemData_Armature *elem_array)
 
static const ElemData_Armatureblender::ed::object::armature_coords_and_quats_apply_with_mat4_recurse (ListBase *bone_base, const ElemData_Armature *elem_array, const float mat[4][4])
 
static void blender::ed::object::armature_coords_and_quats_apply_with_mat4 (bArmature *arm, const ElemData_Armature *elem_array, const float mat[4][4])
 
static void blender::ed::object::armature_coords_and_quats_apply (bArmature *arm, const ElemData_Armature *elem_array)
 
static void blender::ed::object::edit_armature_coords_and_quats_get (const bArmature *arm, ElemData_Armature *elem_array)
 
static void blender::ed::object::edit_armature_coords_and_quats_apply_with_mat4 (bArmature *arm, const ElemData_Armature *elem_array, const float mat[4][4])
 
static void blender::ed::object::edit_armature_coords_and_quats_apply (bArmature *arm, const ElemData_Armature *elem_array)
 
static void blender::ed::object::metaball_coords_and_quats_get (const MetaBall *mb, ElemData_MetaBall *elem_array)
 
static void blender::ed::object::metaball_coords_and_quats_apply_with_mat4 (MetaBall *mb, const ElemData_MetaBall *elem_array, const float mat[4][4])
 
static void blender::ed::object::metaball_coords_and_quats_apply (MetaBall *mb, const ElemData_MetaBall *elem_array)
 
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)
 

Detailed Description

Use to transform object origins only.

This is a small API to store & apply transformations to object data, where a transformation matrix can be continually applied on top of the original values so we don't lose precision over time.

Definition in file object_data_transform.cc.

Macro Definition Documentation

◆ COPY_PTR [1/4]

◆ COPY_PTR [2/4]

#define COPY_PTR ( member)    memcpy(bone->member, elem->member, sizeof(bone->member))

◆ COPY_PTR [3/4]

#define COPY_PTR ( member)    memcpy(elem->member, ebone->member, sizeof(ebone->member))

◆ COPY_PTR [4/4]

#define COPY_PTR ( member)    memcpy(ebone->member, elem->member, sizeof(ebone->member))

◆ COPY_VAL [1/4]

◆ COPY_VAL [2/4]

#define COPY_VAL ( member)    memcpy(&bone->member, &elem->member, sizeof(bone->member))

◆ COPY_VAL [3/4]

#define COPY_VAL ( member)    memcpy(&elem->member, &ebone->member, sizeof(ebone->member))

◆ COPY_VAL [4/4]

#define COPY_VAL ( member)    memcpy(&ebone->member, &elem->member, sizeof(ebone->member))