152 bool skip_invert =
false;
155 float rot[3][3], scale[3];
207 if (skip_invert ==
false && constinv ==
false) {
276 if (ob->
parent || constinv) {
277 float obmtx[3][3], totmat[3][3], obinv[3][3];
374 Object *ob = base->object;
377 while (parsel !=
NULL) {
380 if (parbase !=
NULL) {
388 if (parsel !=
NULL) {
442 while (parent !=
NULL) {
460 Object *ob = base->object;
521 t->custom.type.data = tdo;
529 Object *ob = base->object;
548 if (!
id ||
id->
lib) {
559 if ((td->flag &
TD_SKIP) == 0) {
599 for (
int i = 0; i < tc->
data_len; i++, td++) {
600 if ((td->flag &
TD_SKIP) == 0) {
609 Object *ob = base->object;
617 if (ob_parent !=
NULL) {
619 bool parent_in_transdata =
false;
620 while (ob_parent !=
NULL) {
622 parent_in_transdata =
true;
625 ob_parent = ob_parent->
parent;
627 if (parent_in_transdata) {
641 #define BASE_XFORM_INDIRECT(base) \
642 ((base->flag_legacy & BA_WAS_SEL) && (base->flag & BASE_SELECTED) == 0)
647 for (
int i = 0; i < tc->
data_len; i++, td++) {
648 if ((td->flag &
TD_SKIP) == 0) {
656 Object *ob = base->object;
664 if (ob_parent_recurse !=
NULL) {
665 while (ob_parent_recurse !=
NULL) {
669 ob_parent_recurse = ob_parent_recurse->
parent;
672 if (ob_parent_recurse) {
686 Object *ob = base->object;
702 if (ob_parent_recurse) {
713 #undef BASE_XFORM_INDIRECT
787 bool do_loc =
false, do_rot =
false, do_scale =
false;
795 if (ob !=
OBACT(view_layer)) {
809 if (ob !=
OBACT(view_layer)) {
876 bool motionpath_update =
false;
885 for (
int i = 0; i < tc->data_len; i++, td++) {
911 if (motionpath_update) {
939 bool motionpath_update =
false;
941 for (
int i = 0; i < tc->
data_len; i++) {
953 for (pid = pidlist.
first; pid; pid = pid->
next) {
993 if (motionpath_update) {
void BKE_animsys_free_nla_keyframing_context_cache(struct ListBase *cache)
AnimationEvalContext BKE_animsys_eval_context_construct(struct Depsgraph *depsgraph, float eval_time)
#define CTX_DATA_BEGIN(C, Type, instance, member)
#define CTX_DATA_COUNT(C, member)
struct ReportList * CTX_wm_reports(const bContext *C)
struct Depsgraph * CTX_data_depsgraph_pointer(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
struct Base * BKE_view_layer_base_find(struct ViewLayer *view_layer, struct Object *ob)
General operations, lookup, etc. for blender objects.
void BKE_object_mat3_to_rot(struct Object *ob, float r_mat[3][3], bool use_compat)
void BKE_object_where_is_calc(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
void BKE_object_to_mat3(struct Object *ob, float r_mat[3][3])
void BKE_object_tfm_copy(struct Object *object_dst, const struct Object *object_src)
bool BKE_object_is_in_editmode(const struct Object *ob)
void BKE_ptcache_ids_from_object(struct ListBase *lb, struct Object *ob, struct Scene *scene, int duplis)
#define PTCACHE_TYPE_PARTICLES
#define PTCACHE_RESET_OUTDATED
int BKE_ptcache_object_reset(struct Scene *scene, struct Object *ob, int mode)
API for Blender-side Rigid Body stuff.
void BKE_rigidbody_aftertrans_update(struct Object *ob, float loc[3], float rot[3], float quat[4], float rotAxis[3], float rotAngle)
bool BKE_rigidbody_check_sim_running(struct RigidBodyWorld *rbw, float ctime)
void BKE_scene_base_flag_to_objects(struct ViewLayer *view_layer)
float BKE_scene_frame_get(const struct Scene *scene)
struct Depsgraph * BKE_scene_ensure_depsgraph(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer)
bool BLI_gset_haskey(GSet *gs, const void *key) ATTR_WARN_UNUSED_RESULT
void BLI_ghash_insert(GHash *gh, void *key, void *val)
GSet * BLI_gset_ptr_new_ex(const char *info, const unsigned int nentries_reserve) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
GHash * BLI_ghash_ptr_new_ex(const char *info, const unsigned int nentries_reserve) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
bool BLI_gset_add(GSet *gs, void *key)
void * BLI_ghash_lookup(GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
#define LISTBASE_FOREACH(type, var, list)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void unit_m3(float m[3][3])
void copy_m3_m4(float m1[3][3], const float m2[4][4])
void invert_m3_m3_safe_ortho(float Ainv[3][3], const float A[3][3])
void mat4_to_loc_rot_size(float loc[3], float rot[3][3], float size[3], const float wmat[4][4])
bool orthogonalize_m3_zero_axes(float R[3][3], const float unit_length)
void copy_m4_m4(float m1[4][4], const float m2[4][4])
void mul_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3])
void copy_qt_qt(float q[4], const float a[4])
MINLINE void sub_v3_v3(float r[3], const float a[3])
MINLINE void copy_v3_v3(float r[3], const float a[3])
static uint8 component(Color32 c, uint i)
struct Depsgraph Depsgraph
void DEG_id_tag_update(struct ID *id, int flag)
void DEG_graph_relations_update(struct Depsgraph *graph)
void DEG_foreach_dependent_ID_component(const Depsgraph *depsgraph, const ID *id, eDepsObjectComponentType source_component_type, int flags, DEGForeachIDComponentCallback callback, void *user_data)
@ DEG_FOREACH_COMPONENT_IGNORE_TRANSFORM_SOLVERS
struct Object * DEG_get_evaluated_object(const struct Depsgraph *depsgraph, struct Object *object)
#define ID_IS_LINKED(_id)
@ MOTIONPATH_BAKE_HAS_PATHS
#define BA_TRANSFORM_PARENT
#define BA_TRANSFORM_LOCKED_IN_PLACE
#define BA_TRANSFORM_CHILD
@ BA_SNAP_FIX_DEPS_FIASCO
#define BASE_SELECTED_EDITABLE(v3d, base)
#define BASE_EDITABLE(v3d, base)
#define OBACT(_view_layer)
@ V3D_AROUND_LOCAL_ORIGINS
#define ANIM_KS_LOC_ROT_SCALE_ID
#define IS_AUTOKEY_FLAG(scene, flag)
#define ANIM_KS_LOCATION_ID
#define ANIM_KS_SCALING_ID
#define IS_AUTOKEY_ON(scene)
#define ANIM_KS_ROTATION_ID
void ED_objects_recalculate_paths(struct bContext *C, struct Scene *scene, eObjectPathCalcRange range)
void ED_object_xform_skip_child_container_update_all(struct XFormObjectSkipChild_Container *xcs, struct Main *bmain, struct Depsgraph *depsgraph)
void ED_object_xform_skip_child_container_destroy(struct XFormObjectSkipChild_Container *xcs)
void ED_object_base_select(struct Base *base, eObjectSelect_Mode mode)
struct XFormObjectSkipChild_Container * ED_object_xform_skip_child_container_create(void)
void ED_object_data_xform_container_destroy(struct XFormObjectData_Container *xds)
@ XFORM_OB_SKIP_CHILD_PARENT_APPLY
@ XFORM_OB_SKIP_CHILD_PARENT_IS_XFORM_INDIRECT
@ XFORM_OB_SKIP_CHILD_PARENT_IS_XFORM
void ED_object_xform_skip_child_container_item_ensure(struct XFormObjectSkipChild_Container *xcs, struct Object *ob, struct Object *ob_parent_recurse, int mode)
void ED_object_data_xform_container_item_ensure(struct XFormObjectData_Container *xds, struct Object *ob)
@ OBJECT_PATH_CALC_RANGE_CHANGED
@ OBJECT_PATH_CALC_RANGE_CURRENT_FRAME
void ED_object_data_xform_container_update_all(struct XFormObjectData_Container *xds, struct Main *bmain, struct Depsgraph *depsgraph)
struct XFormObjectData_Container * ED_object_data_xform_container_create(void)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
Read Guarded memory(de)allocation.
const Depsgraph * depsgraph
bool autokeyframe_cfra_can_key(const Scene *scene, ID *id)
eInsertKeyFlags ANIM_get_keyframing_flags(Scene *scene, const bool use_autokey_mode)
int insert_keyframe(Main *bmain, ReportList *reports, ID *id, bAction *act, const char group[], const char rna_path[], int array_index, const AnimationEvalContext *anim_eval_context, eBezTriple_KeyframeType keytype, ListBase *nla_cache, eInsertKeyFlags flag)
int ANIM_apply_keyingset(bContext *C, ListBase *dsources, bAction *act, KeyingSet *ks, short mode, float cfra)
KeyingSet * ANIM_scene_get_active_keyingset(const Scene *scene)
KeyingSet * ANIM_builtin_keyingset_get_named(KeyingSet *prevKS, const char name[])
void ANIM_relative_keyingset_add_source(ListBase *dsources, ID *id, StructRNA *srna, void *data)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
struct RigidBodyOb * rigidbody_object
struct PointCache * cache
struct RigidBodyWorld * rigidbody_world
struct ToolSettings * toolsettings
TransDataExtension * data_ext
struct XFormObjectData_Container * xds
struct XFormObjectSkipChild_Container * xcs