25 #define DNA_DEPRECATED_ALLOW
166 #define VPARENT_THREADING_HACK
168 #ifdef VPARENT_THREADING_HACK
208 BLI_assert(!
"Object copy: non-NULL material pointers with zero counter, should not happen.");
246 if (ob_dst->
pd->
rng) {
260 ob_dst->
avs = ob_src->
avs;
329 bool is_local =
false, is_lib =
false;
344 if (lib_local || is_local) {
464 for (
int i = 0; i <
object->totcol; i++) {
479 data, proxy_cb_flag,
false);
532 if (ob->
id.
us > 0 || is_undo) {
663 paf = ob->effect.first;
768 while (ob->hooks.first) {
769 ObHook *hook = ob->hooks.first;
862 TIP_(
"Non-Empty object '%s' cannot duplicate collection '%s' "
863 "anymore in Blender 2.80, removed instancing"),
882 printf(
"Proxy lost from object %s lib <NONE>\n", ob->
id.
name + 2);
892 void *poin = ob->
data;
900 printf(
"Object %s lost data.\n", ob->
id.
name + 2);
930 if (totcol_data && (*totcol_data > ob->
totcol)) {
959 if (fluidmd && fluidmd->
fss) {
1028 paf = ob->effect.first;
1083 if (paf && paf->
group) {
1139 .struct_size =
sizeof(
Object),
1141 .name_plural =
"objects",
1150 .foreach_cache =
NULL,
1158 .blend_read_undo_preserve =
NULL,
1165 memset(workob, 0,
sizeof(
Object));
1238 float imat[4][4], mat[4][4];
1263 float imat[4][4], mat[4][4];
1300 int active_count = 0;
1381 if (psys->part == psys_src->
part) {
1388 if (psys_dst ==
NULL) {
1429 switch (md_src->
type) {
1477 switch (md_dst->
type) {
1479 if (psys_dst !=
NULL) {
1487 if (psys_dst !=
NULL) {
1539 const bool do_copy_all,
1540 const int flag_subdata)
1543 BLI_assert(!
"Trying to copy a modifier stack between a GPencil object and another type.");
1550 !
"Trying to copy a modifier stack into an object having a non-empty modifier stack.");
1601 const int num_elements = mesh_source->
totloop;
1628 if (mesh_eval ==
NULL) {
1632 if (subdiv_ccg ==
NULL) {
1708 object_eval->
data = data_eval;
1772 short update_flag = 0;
1813 if (update_flag != 0) {
1878 return ((
const Mesh *)
id)->edit_mesh !=
NULL;
1880 return ((((
const Curve *)
id)->editnurb !=
NULL) || (((
const Curve *)
id)->editfont !=
NULL));
1984 return ((ob->
mode == object_mode) || (ob->
mode & object_mode) != 0);
2031 if (obtest ==
NULL) {
2050 return DATA_(
"Mesh");
2052 return DATA_(
"Curve");
2054 return DATA_(
"Surf");
2056 return DATA_(
"Text");
2058 return DATA_(
"Mball");
2060 return DATA_(
"Camera");
2064 return DATA_(
"Lattice");
2066 return DATA_(
"Armature");
2068 return DATA_(
"Speaker");
2070 return DATA_(
"Hair");
2072 return DATA_(
"PointCloud");
2074 return DATA_(
"Volume");
2076 return DATA_(
"Empty");
2078 return DATA_(
"GPencil");
2080 return DATA_(
"LightProbe");
2083 return DATA_(
"Empty");
2319 for (i = 0; i < sbn->
totpoint; i++) {
2416 if (psmd->
psys == psys) {
2464 for (ct = targets.
first; ct; ct = ct->
next) {
2465 if (ct->
tar == ob) {
2526 uint *r_objects_len,
2532 if (ob_pose == ob_active) {
2538 .no_dup_data = unique,
2541 else if (ob_pose !=
NULL) {
2543 objects =
MEM_mallocN(
sizeof(*objects), __func__);
2544 objects[0] = ob_pose;
2572 if (ob_pose == base_active->
object) {
2573 base_pose = base_active;
2580 if (base_active && (base_pose == base_active)) {
2586 .no_dup_data = unique,
2589 else if (base_pose !=
NULL) {
2592 bases[0] = base_pose;
2639 if (!is_subprocess) {
2664 for (
int i = 0; i < obn->
totcol; i++) {
2677 const bool need_to_duplicate_obdata = (id_old !=
NULL) && (id_old->
newid ==
NULL);
2679 switch (obn->
type) {
2758 if (need_to_duplicate_obdata && !
ELEM(id_new,
NULL, id_old)) {
2762 for (
int i = 0; i < obn->
totcol; i++) {
2769 if (!is_subprocess) {
2860 if ((
Object *)dtar->id == target) {
2861 dtar->id = (
ID *)ob;
2954 for (i = 0; i < target->
totcol; i++) {
2984 ob->
dt = target->
dt;
3047 float rmat[3][3], dmat[3][3];
3136 #define TFMCPY(_v) (obtfm->_v = ob->_v)
3137 #define TFMCPY3D(_v) copy_v3_v3(obtfm->_v, ob->_v)
3138 #define TFMCPY4D(_v) copy_v4_v4(obtfm->_v, ob->_v)
3160 const short protectflag)
3164 for (i = 0; i < 3; i++) {
3166 ob->
loc[i] = obtfm->
loc[i];
3176 ob->
rot[i] = obtfm->
rot[i];
3179 ob->
quat[i + 1] = obtfm->
quat[i + 1];
3198 #define TFMCPY(_v) (object_dst->_v = object_src->_v)
3199 #define TFMCPY3D(_v) copy_v3_v3(object_dst->_v, object_src->_v)
3200 #define TFMCPY4D(_v) copy_v4_v4(object_dst->_v, object_src->_v)
3248 float par_imat[4][4];
3265 float vec[4], dir[3], quat[4], radius, ctime;
3296 CLAMP(ctime, 0.0f, 1.0f);
3310 float tmat[4][4], rmat[4][4];
3332 if (!pchan || !pchan->
bone) {
3334 &
LOG,
"Object %s with Bone parent: bone %s doesn't exist", ob->
id.
name + 2, ob->
parsubstr);
3366 int numVerts = me_eval->
totvert;
3371 #ifdef VPARENT_THREADING_HACK
3382 if (nr < numVerts) {
3396 for (
int i = 0; i < numVerts; i++) {
3397 if (index[i] == nr) {
3404 if (nr < numVerts) {
3413 else if (
count > 0) {
3425 "Evaluated mesh is needed to solve parenting, "
3426 "object position can be wrong now");
3477 float cmat[3][3],
v1[3],
v2[3], v3[3], q[4];
3550 Object *ob,
Object *par,
const bool set_origin,
float r_obmat[4][4],
float r_originmat[3][3])
3585 float r_originmat[3][3])
3709 const float mat[4][4],
3711 const float parentinv[4][4],
3712 const bool use_compat)
3718 if (parent !=
NULL) {
3719 float rmat[4][4], diff_mat[4][4], imat[4][4], parent_mat[4][4];
3738 if (ob->
dscale[0] != 0.0f) {
3741 if (ob->
dscale[1] != 0.0f) {
3744 if (ob->
dscale[2] != 0.0f) {
3755 const float mat[4][4],
3756 const bool use_compat,
3757 const bool use_parent)
3770 const float min[3] = {-1.0f, -1.0f, -1.0f},
max[3] = {1.0f, 1.0f, 1.0f};
3780 bb->
vec[0][0] = bb->
vec[1][0] = bb->
vec[2][0] = bb->
vec[3][0] =
min[0];
3781 bb->
vec[4][0] = bb->
vec[5][0] = bb->
vec[6][0] = bb->
vec[7][0] =
max[0];
3783 bb->
vec[0][1] = bb->
vec[1][1] = bb->
vec[4][1] = bb->
vec[5][1] =
min[1];
3784 bb->
vec[2][1] = bb->
vec[3][1] = bb->
vec[6][1] = bb->
vec[7][1] =
max[1];
3786 bb->
vec[0][2] = bb->
vec[3][2] = bb->
vec[4][2] = bb->
vec[7][2] =
min[2];
3787 bb->
vec[1][2] = bb->
vec[2][2] = bb->
vec[5][2] = bb->
vec[6][2] =
max[2];
3792 r_cent[0] = 0.5f * (bb->
vec[0][0] + bb->
vec[4][0]);
3793 r_cent[1] = 0.5f * (bb->
vec[0][1] + bb->
vec[2][1]);
3794 r_cent[2] = 0.5f * (bb->
vec[0][2] + bb->
vec[1][2]);
3799 r_size[0] = 0.5f *
fabsf(bb->
vec[0][0] - bb->
vec[4][0]);
3800 r_size[1] = 0.5f *
fabsf(bb->
vec[0][1] - bb->
vec[2][1]);
3801 r_size[2] = 0.5f *
fabsf(bb->
vec[0][2] - bb->
vec[1][2]);
3805 const float obmat[4][4],
3810 for (i = 0; i < 8; i++) {
3909 r_vec[0] =
fabsf(scale[0]) * (bb->
vec[4][0] - bb->
vec[0][0]);
3910 r_vec[1] =
fabsf(scale[1]) * (bb->
vec[2][1] - bb->
vec[0][1]);
3911 r_vec[2] =
fabsf(scale[2]) * (bb->
vec[1][2] - bb->
vec[0][2]);
3927 const float value[3],
3929 const float ob_scale_orig[3],
3930 const float ob_obmat_orig[4][4])
3940 for (
int i = 0; i < 3; i++) {
3941 if (((1 << i) & axis_mask) == 0) {
3943 if (ob_scale_orig !=
NULL) {
3944 const float scale_delta =
len_v3(ob_obmat_orig[i]) / ob_scale_orig[i];
3946 len[i] *= scale_delta;
3952 ob->
scale[i] = scale;
3967 bool changed =
false;
3997 for (u = 0; u < lt->
pntsu; u++, bp++) {
4011 float ob_min[3], ob_max[3];
4041 if (changed ==
false) {
4130 if (proj_length_sq > 1e-5f) {
4143 const bool use_hidden)
4152 for (dob = lb->
first; dob; dob = dob->
next) {
4153 if ((use_hidden ==
false) && (dob->
no_draw != 0)) {
4161 for (i = 0; i < 8; i++) {
4177 const float obmat[4][4],
4178 void (*func_cb)(
const float[3],
void *),
4185 if (mesh_eval !=
NULL) {
4187 const int totvert = mesh_eval->
totvert;
4188 for (
int i = 0; i < totvert; i++,
mv++) {
4197 const float *v3 = dl->
verts;
4198 int totvert = dl->
nr;
4201 for (i = 0; i < totvert; i++, v3 += 3) {
4210 void (*func_cb)(
const float[3],
void *),
4270 return (
void *)obtfm;
4309 const bool do_proxy_update)
4316 object->proxy->proxy_from = object;
4321 if (do_proxy_update) {
4345 const bool do_proxy_update)
4347 const ID *object_data = ob->
data;
4351 if (!recalc_object && !recalc_data) {
4377 if (recalc_object || recalc_data) {
4379 printf(
"recalcob %s\n", ob->
id.
name + 2);
4420 switch (
GS(((
ID *)ob->
data)->name)) {
4461 ID *data_eval =
object->runtime.data_eval;
4484 return object->data;
4527 ID *data_eval =
object->runtime.data_eval;
4581 if (listbase ==
NULL) {
4623 if (newkey || from_mix ==
false) {
4655 if (newkey || from_mix ==
false) {
4694 if (newkey || from_mix ==
false) {
4729 const bool from_mix)
4793 else if (rkb->
relative >= kb_index) {
4845 if (ob->
flag & flag) {
4857 for (ob_child = ob_child->
parent; ob_child; ob_child = ob_child->
parent) {
4858 if (ob_child == ob_parent) {
4926 if (recurse_parent && object->
parent !=
NULL) {
5097 clip = solver->
clip;
5219 local_base = local_base->
next) {
5259 return collection_linknode;
5283 unsigned int tot = 0;
5300 tree = BLI_kdtree_3d_new(totvert);
5303 for (i = 0; i < totvert; i++) {
5307 BLI_kdtree_3d_insert(
tree, index[i], co);
5316 tree = BLI_kdtree_3d_new(tot);
5318 for (i = 0; i < tot; i++) {
5321 BLI_kdtree_3d_insert(
tree, i, co);
5325 BLI_kdtree_3d_balance(
tree);
5337 tree = BLI_kdtree_3d_new(tot);
5350 BLI_kdtree_3d_insert(
tree, i++, co);
5362 BLI_kdtree_3d_insert(
tree, i++, co);
5369 BLI_kdtree_3d_balance(
tree);
5379 tree = BLI_kdtree_3d_new(tot);
5382 for (bp = lt->
def; i < tot; bp++) {
5385 BLI_kdtree_3d_insert(
tree, i++, co);
5388 BLI_kdtree_3d_balance(
tree);
5409 char md_name_esc[
sizeof(md->
name) * 2];
5412 char pattern[
sizeof(md_name_esc) + 16];
5413 BLI_snprintf(pattern,
sizeof(pattern),
"modifiers[\"%s\"]", md_name_esc);
5455 char md_name_esc[
sizeof(md->
name) * 2];
5458 char pattern[
sizeof(md_name_esc) + 32];
5459 BLI_snprintf(pattern,
sizeof(pattern),
"grease_pencil_modifiers[\"%s\"]", md_name_esc);
5493 char fx_name_esc[
sizeof(fx->
name) * 2];
5496 char pattern[
sizeof(fx_name_esc) + 32];
5497 BLI_snprintf(pattern,
sizeof(pattern),
"shader_effects[\"%s\"]", fx_name_esc);
5528 for (pid = pidlist.
first; pid; pid = pid->
next) {
5550 int parent_recursion,
5562 if (pmd && pmd->
canvas) {
5575 if (parent_recursion) {
5576 int recursion = parent_recursion - 1;
5577 bool no_update =
false;
5601 for (ct = targets.
first; ct; ct = ct->
next) {
5669 object->runtime.object_as_temp_mesh =
mesh;
5679 object->runtime.object_as_temp_mesh =
NULL;
5687 object->runtime.object_as_temp_curve =
curve;
5697 object->runtime.object_as_temp_curve =
NULL;
typedef float(TangentPoint)[2]
Blender kernel action and pose functionality.
void BKE_pose_tag_recalc(struct Main *bmain, struct bPose *pose)
struct bPoseChannel * BKE_pose_channel_find_name(const struct bPose *pose, const char *name)
void BKE_pose_check_uuids_unique_and_report(const struct bPose *pose)
void BKE_pose_blend_read_expand(struct BlendExpander *expander, struct bPose *pose)
void BKE_pose_channels_hash_make(struct bPose *pose)
void BKE_pose_free_ex(struct bPose *pose, bool do_id_user)
void BKE_pose_free(struct bPose *pose)
void BKE_pose_blend_write(struct BlendWriter *writer, struct bPose *pose, struct bArmature *arm)
void BKE_pose_blend_read_data(struct BlendDataReader *reader, struct bPose *pose)
void BKE_pose_update_constraint_flags(struct bPose *pose)
void BKE_pose_blend_read_lib(struct BlendLibReader *reader, struct Object *ob, struct bPose *pose)
void BKE_pose_copy_data_ex(struct bPose **dst, const struct bPose *src, const int flag, const bool copy_constraints)
void BKE_pose_rest(struct bPose *pose, bool selected_bones_only)
bool BKE_animdata_id_is_animated(const struct ID *id)
void BKE_animdata_blend_read_data(struct BlendDataReader *reader, struct AnimData *adt)
void BKE_animdata_duplicate_id_action(struct Main *bmain, struct ID *id, const uint duplicate_flags)
void BKE_animdata_blend_write(struct BlendWriter *writer, struct AnimData *adt)
struct AnimData * BKE_animdata_add_id(struct ID *id)
bool BKE_where_on_path(const struct Object *ob, float ctime, float r_vec[4], float r_dir[3], float r_quat[4], float *r_radius, float *r_weight)
void animviz_free_motionpath(struct bMotionPath *mpath)
struct bMotionPath * animviz_copy_motionpath(const struct bMotionPath *mpath_src)
void animviz_motionpath_blend_write(struct BlendWriter *writer, struct bMotionPath *mpath)
void animviz_motionpath_blend_read_data(struct BlendDataReader *reader, struct bMotionPath *mpath)
void animviz_settings_init(struct bAnimVizSettings *avs)
AnimationEvalContext BKE_animsys_eval_context_construct(struct Depsgraph *depsgraph, float eval_time)
void BKE_animsys_evaluate_animdata(struct ID *id, struct AnimData *adt, const struct AnimationEvalContext *anim_eval_context, eAnimData_Recalc recalc, const bool flush_to_original)
bool BKE_pose_minmax(struct Object *ob, float r_min[3], float r_max[3], bool use_hidden, bool use_select)
void BKE_pose_rebuild(struct Main *bmain, struct Object *ob, struct bArmature *arm, const bool do_id_user)
struct BoundBox * BKE_armature_boundbox_get(struct Object *ob)
struct bArmature * BKE_armature_add(struct Main *bmain, const char *name)
void BKE_pose_where_is(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
Camera data-block and utility functions.
void * BKE_camera_add(struct Main *bmain, const char *name)
struct Collection * BKE_collection_object_find(struct Main *bmain, struct Scene *scene, struct Collection *collection, struct Object *ob)
void BKE_collection_object_add_from(struct Main *bmain, struct Scene *scene, struct Object *ob_src, struct Object *ob_dst)
bool BKE_collection_object_add(struct Main *bmain, struct Collection *collection, struct Object *ob)
bool BKE_collection_has_object_recursive(struct Collection *collection, struct Object *ob)
bool BKE_collection_object_remove(struct Main *bmain, struct Collection *collection, struct Object *object, const bool free_us)
void BKE_constraints_id_loop(struct ListBase *list, ConstraintIDFunc func, void *userdata)
void BKE_constraints_free_ex(struct ListBase *list, bool do_id_user)
void BKE_constraints_solve(struct Depsgraph *depsgraph, struct ListBase *conlist, struct bConstraintOb *cob, float ctime)
void BKE_constraint_blend_write(struct BlendWriter *writer, struct ListBase *conlist)
void BKE_constraint_blend_read_expand(struct BlendExpander *expander, struct ListBase *lb)
void BKE_constraint_blend_read_data(struct BlendDataReader *reader, struct ListBase *lb)
struct bConstraintOb * BKE_constraints_make_evalob(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, void *subdata, short datatype)
void BKE_constraints_copy_ex(struct ListBase *dst, const struct ListBase *src, const int flag, bool do_extern)
void BKE_constraint_blend_read_lib(struct BlendLibReader *reader, struct ID *id, struct ListBase *conlist)
const bConstraintTypeInfo * BKE_constraint_typeinfo_get(struct bConstraint *con)
void BKE_constraints_clear_evalob(struct bConstraintOb *cob)
void BKE_curve_bevelList_free(struct ListBase *bev)
void BKE_curve_texspace_ensure(struct Curve *cu)
struct Curve * BKE_curve_add(struct Main *bmain, const char *name, int type)
bool BKE_nurbList_index_get_co(struct ListBase *editnurb, const int index, float r_co[3])
struct BoundBox * BKE_curve_boundbox_get(struct Object *ob)
short BKE_curve_type_get(const struct Curve *cu)
int BKE_nurbList_verts_count_without_handles(const struct ListBase *nurb)
void BKE_nurbList_free(struct ListBase *lb)
struct Curve * BKE_curve_new_from_object(struct Object *object, struct Depsgraph *depsgraph, bool apply_modifiers)
ListBase * BKE_curve_nurbs_get(struct Curve *cu)
void CustomData_copy_layer_type_data(const struct CustomData *source, struct CustomData *destination, int type, int source_index, int destination_index, int count)
bool CustomData_free_layer(struct CustomData *data, int type, int totelem, int index)
bool CustomData_has_layer(const struct CustomData *data, int type)
int CustomData_get_layer_index(const struct CustomData *data, int type)
void * CustomData_get_layer(const struct CustomData *data, int type)
void * CustomData_add_layer(struct CustomData *data, int type, eCDAllocType alloctype, void *layer, int totelem)
display list (or rather multi purpose list) stuff.
void BKE_displist_free(struct ListBase *lb)
DispList * BKE_displist_find(struct ListBase *lb, int type)
struct ListBase * object_duplilist(struct Depsgraph *depsgraph, struct Scene *sce, struct Object *ob)
void free_object_duplilist(struct ListBase *lb)
void BKE_partdeflect_free(struct PartDeflect *pd)
struct EffectorWeights * BKE_effector_add_weights(struct Collection *collection)
void BKE_fcurves_free(ListBase *list)
void BKE_fcurves_copy(ListBase *dst, ListBase *src)
#define DRIVER_TARGETS_LOOPER_BEGIN(dvar)
#define DRIVER_TARGETS_LOOPER_END
void BKE_geometry_set_free(struct GeometrySet *geometry_set)
bool BKE_geometry_set_has_instances(const struct GeometrySet *geometry_set)
void BKE_gpencil_eval_delete(struct bGPdata *gpd_eval)
struct bGPdata * BKE_gpencil_data_addnew(struct Main *bmain, const char name[])
struct BoundBox * BKE_gpencil_boundbox_get(struct Object *ob)
void void BKE_gpencil_modifiers_foreach_ID_link(struct Object *ob, GreasePencilIDWalkFunc walk, void *userData)
bool BKE_gpencil_modifier_unique_name(struct ListBase *modifiers, struct GpencilModifierData *gmd)
void BKE_gpencil_modifier_copydata_ex(struct GpencilModifierData *md, struct GpencilModifierData *target, const int flag)
bool BKE_gpencil_modifier_depends_ontime(struct GpencilModifierData *md)
void BKE_gpencil_modifier_blend_read_lib(struct BlendLibReader *reader, struct Object *ob)
void BKE_gpencil_modifier_blend_read_data(struct BlendDataReader *reader, struct ListBase *lb)
void BKE_gpencil_modifier_blend_write(struct BlendWriter *writer, struct ListBase *modbase)
const GpencilModifierTypeInfo * BKE_gpencil_modifier_get_info(GpencilModifierType type)
void BKE_gpencil_modifier_free_ex(struct GpencilModifierData *md, const int flag)
struct GpencilModifierData * BKE_gpencil_modifier_new(int type)
General operations for hairs.
void * BKE_hair_add(struct Main *bmain, const char *name)
struct BoundBox * BKE_hair_boundbox_get(struct Object *ob)
void BKE_previewimg_free(struct PreviewImage **prv)
void BKE_previewimg_id_copy(struct ID *new_id, const struct ID *old_id)
void BKE_previewimg_blend_read(struct BlendDataReader *reader, struct PreviewImage *prv)
void BKE_previewimg_blend_write(struct BlendWriter *writer, const struct PreviewImage *prv)
void IDP_foreach_property(struct IDProperty *id_property_root, const int type_filter, IDPForeachPropertyCallback callback, void *user_data)
void IDP_FreeProperty(struct IDProperty *prop)
struct IDProperty * IDP_CopyProperty(const struct IDProperty *prop) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BKE_keyblock_convert_to_curve(struct KeyBlock *kb, struct Curve *cu, struct ListBase *nurb)
struct Key * BKE_key_from_object(const struct Object *ob)
void BKE_keyblock_convert_from_curve(struct Curve *cu, struct KeyBlock *kb, struct ListBase *nurb)
void BKE_keyblock_convert_from_lattice(struct Lattice *lt, struct KeyBlock *kb)
void BKE_keyblock_convert_to_lattice(struct KeyBlock *kb, struct Lattice *lt)
float * BKE_key_evaluate_object(struct Object *ob, int *r_totelem)
void BKE_keyblock_convert_from_mesh(struct Mesh *me, struct Key *key, struct KeyBlock *kb)
struct Key ** BKE_key_from_object_p(const struct Object *ob)
void BKE_keyblock_convert_to_mesh(struct KeyBlock *kb, struct Mesh *me)
struct KeyBlock * BKE_keyblock_add_ctime(struct Key *key, const char *name, const bool do_force)
struct Key * BKE_key_add(struct Main *bmain, struct ID *id)
void BKE_lattice_transform(struct Lattice *lt, const float mat[4][4], bool do_keys)
struct BoundBox * BKE_lattice_boundbox_get(struct Object *ob)
struct Lattice * BKE_lattice_add(struct Main *bmain, const char *name)
struct LayerCollection * BKE_layer_collection_get_active(struct ViewLayer *view_layer)
void BKE_view_layer_base_deselect_all(struct ViewLayer *view_layer)
struct Base * BKE_view_layer_base_find(struct ViewLayer *view_layer, struct Object *ob)
#define BKE_view_layer_array_from_bases_in_mode(view_layer, v3d, r_len,...)
void BKE_view_layer_base_select_and_set_active(struct ViewLayer *view_layer, struct Base *selbase)
#define BKE_view_layer_array_from_objects_in_mode(view_layer, v3d, r_len,...)
struct ID * BKE_id_copy(struct Main *bmain, const struct ID *id)
void BKE_lib_id_expand_local(struct Main *bmain, struct ID *id)
void id_us_min(struct ID *id)
void BKE_main_id_tag_all(struct Main *mainvar, const int tag, const bool value)
void id_lib_extern(struct ID *id)
@ LIB_ID_COPY_SET_COPIED_ON_WRITE
@ LIB_ID_CREATE_NO_USER_REFCOUNT
void * BKE_libblock_alloc(struct Main *bmain, short type, const char *name, const int flag) ATTR_WARN_UNUSED_RESULT
void BKE_main_id_clear_newpoins(struct Main *bmain)
void BKE_id_free(struct Main *bmain, void *idv)
void id_us_plus(struct ID *id)
@ LIB_ID_MAKELOCAL_OBJECT_NO_PROXY_CLEARING
@ LIB_ID_MAKELOCAL_FULL_LIBRARY
struct ID * BKE_id_copy_for_duplicate(struct Main *bmain, struct ID *id, const uint duplicate_flags)
void BKE_id_blend_write(struct BlendWriter *writer, struct ID *id)
void id_us_plus_no_lib(struct ID *id)
bool void BKE_lib_id_clear_library_data(struct Main *bmain, struct ID *id)
@ LIB_ID_DUPLICATE_IS_ROOT_ID
@ LIB_ID_DUPLICATE_IS_SUBPROCESS
void BKE_libblock_free_datablock(struct ID *id, const int flag) ATTR_NONNULL()
void BKE_id_free_us(struct Main *bmain, void *idv) ATTR_NONNULL()
@ IDWALK_NO_INDIRECT_PROXY_DATA_USAGE
#define BKE_LIB_FOREACHID_PROCESS(_data, _id_super, _cb_flag)
int BKE_lib_query_foreachid_process_callback_flag_override(struct LibraryForeachIDData *data, const int cb_flag, const bool do_replace)
void BKE_lib_query_idpropertiesForeachIDLink_callback(struct IDProperty *id_prop, void *user_data)
void BKE_library_ID_test_usages(struct Main *bmain, void *idv, bool *is_used_local, bool *is_used_linked)
int BKE_lib_query_foreachid_process_flags_get(struct LibraryForeachIDData *data)
@ IDWALK_CB_INDIRECT_USAGE
#define BKE_LIB_FOREACHID_PROCESS_ID(_data, _id, _cb_flag)
bool BKE_lib_query_foreachid_process(struct LibraryForeachIDData *data, struct ID **id_pp, int cb_flag)
void void BKE_libblock_relink_to_newid(struct ID *id) ATTR_NONNULL()
void void BKE_libblock_remap(struct Main *bmain, void *old_idv, void *new_idv, const short remap_flags) ATTR_NONNULL(1
@ ID_REMAP_SKIP_INDIRECT_USAGE
General operations, lookup, etc. for blender lights.
struct Light * BKE_light_add(struct Main *bmain, const char *name) ATTR_WARN_UNUSED_RESULT
General operations for probes.
void * BKE_lightprobe_add(struct Main *bmain, const char *name)
Blender kernel freestyle line style functionality.
#define FOREACH_MAIN_ID_END
#define FOREACH_MAIN_ID_BEGIN(_bmain, _id)
General operations, lookup, etc. for materials.
struct Material *** BKE_object_material_array_p(struct Object *ob)
void BKE_object_material_resize(struct Main *bmain, struct Object *ob, const short totcol, bool do_id_user)
short * BKE_object_material_len_p(struct Object *ob)
struct MetaBall * BKE_mball_add(struct Main *bmain, const char *name)
bool BKE_mball_minmax_ex(const struct MetaBall *mb, float min[3], float max[3], const float obmat[4][4], const short flag)
struct BoundBox * BKE_mball_boundbox_get(struct Object *ob)
struct BoundBox * BKE_mesh_boundbox_get(struct Object *ob)
void BKE_mesh_ensure_skin_customdata(struct Mesh *me)
struct Mesh * BKE_mesh_add(struct Main *bmain, const char *name)
void BKE_mesh_eval_delete(struct Mesh *mesh_eval)
void BKE_mesh_texspace_get_reference(struct Mesh *me, short **r_texflag, float **r_loc, float **r_size)
struct Mesh * BKE_mesh_new_from_object(struct Depsgraph *depsgraph, struct Object *object, const bool preserve_all_data_layers, const bool preserve_origindex)
bool BKE_mesh_wrapper_minmax(const struct Mesh *me, float min[3], float max[3])
void BKE_modifier_copydata(struct ModifierData *md, struct ModifierData *target)
void BKE_modifier_check_uuids_unique_and_report(const struct Object *object)
const ModifierTypeInfo * BKE_modifier_get_info(ModifierType type)
struct Object * BKE_modifiers_is_deformed_by_armature(struct Object *ob)
void BKE_modifier_blend_read_lib(struct BlendLibReader *reader, struct Object *ob)
bool BKE_modifier_is_enabled(const struct Scene *scene, struct ModifierData *md, int required_mode)
void BKE_modifier_free_ex(struct ModifierData *md, const int flag)
@ eModifierTypeFlag_Single
@ eModifierTypeFlag_AcceptsCVs
@ eModifierTypeFlag_AcceptsVertexCosOnly
@ eModifierTypeFlag_AcceptsMesh
bool BKE_modifier_depends_ontime(struct ModifierData *md)
struct ModifierData * BKE_modifiers_get_virtual_modifierlist(const struct Object *ob, struct VirtualModifierData *data)
void BKE_modifier_copydata_ex(struct ModifierData *md, struct ModifierData *target, const int flag)
struct ModifierData * BKE_modifiers_findby_type(const struct Object *ob, ModifierType type)
struct ModifierData * BKE_modifier_new(int type)
@ eModifierTypeType_OnlyDeform
void BKE_modifiers_foreach_ID_link(struct Object *ob, IDWalkFunc walk, void *userData)
void BKE_modifier_blend_write(struct BlendWriter *writer, struct ListBase *modbase)
void BKE_modifier_blend_read_data(struct BlendDataReader *reader, struct ListBase *lb, struct Object *ob)
bool BKE_modifier_unique_name(struct ListBase *modifiers, struct ModifierData *md)
void multiresModifier_sync_levels_ex(struct Object *ob_dst, struct MultiresModifierData *mmd_src, struct MultiresModifierData *mmd_dst)
bool multiresModifier_reshapeFromCCG(const int tot_level, struct Mesh *coarse_mesh, struct SubdivCCG *subdiv_ccg)
General operations, lookup, etc. for blender objects.
@ OB_REL_CHILDREN_RECURSIVE
@ OB_REL_PARENT_RECURSIVE
void BKE_object_handle_data_update(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
bool BKE_object_eval_proxy_copy(struct Depsgraph *depsgraph, struct Object *object)
Functions for dealing with object face-maps.
void BKE_object_facemap_copy_list(struct ListBase *outbase, const struct ListBase *inbase)
void BKE_sculptsession_free(struct Object *ob)
void BKE_particle_system_blend_read_lib(struct BlendLibReader *reader, struct Object *ob, struct ID *id, struct ListBase *particles)
void BKE_particle_system_blend_read_data(struct BlendDataReader *reader, struct ListBase *particles)
void BKE_particle_partdeflect_blend_read_lib(struct BlendLibReader *reader, struct ID *id, struct PartDeflect *pd)
void psys_free_path_cache(struct ParticleSystem *psys, struct PTCacheEdit *edit)
void BKE_particle_partdeflect_blend_read_data(struct BlendDataReader *reader, struct PartDeflect *pd)
void BKE_particle_system_blend_write(struct BlendWriter *writer, struct ListBase *particles)
void psys_free(struct Object *ob, struct ParticleSystem *psys)
void BKE_particlesystem_id_loop(struct ParticleSystem *psys, ParticleSystemIDFunc func, void *userdata)
void psys_copy_particles(struct ParticleSystem *psys_dst, struct ParticleSystem *psys_src)
struct ModifierData * object_copy_particle_system(struct Main *bmain, struct Scene *scene, struct Object *ob, const struct ParticleSystem *psys_orig)
A BVH for high poly meshes.
void BKE_ptcache_ids_from_object(struct ListBase *lb, struct Object *ob, struct Scene *scene, int duplis)
struct PointCache * BKE_ptcache_copy_list(struct ListBase *ptcaches_new, const struct ListBase *ptcaches_old, const int flag)
void BKE_ptcache_blend_read_data(struct BlendDataReader *reader, struct ListBase *ptcaches, struct PointCache **ocache, int force_disk)
void BKE_ptcache_blend_write(struct BlendWriter *writer, struct ListBase *ptcaches)
General operations for point-clouds.
struct BoundBox * BKE_pointcloud_boundbox_get(struct Object *ob)
void * BKE_pointcloud_add_default(struct Main *bmain, const char *name)
API for Blender-side Rigid Body stuff.
void BKE_rigidbody_object_copy(struct Main *bmain, struct Object *ob_dst, const struct Object *ob_src, const int flag)
void BKE_rigidbody_free_constraint(struct Object *ob)
void BKE_rigidbody_free_object(struct Object *ob, struct RigidBodyWorld *rbw)
void BKE_rigidbody_sync_transforms(struct RigidBodyWorld *rbw, struct Object *ob, float ctime)
bool BKE_shaderfx_depends_ontime(struct ShaderFxData *fx)
void BKE_shaderfx_foreach_ID_link(struct Object *ob, ShaderFxIDWalkFunc walk, void *userData)
void BKE_shaderfx_blend_write(struct BlendWriter *writer, struct ListBase *fxbase)
void BKE_shaderfx_free_ex(struct ShaderFxData *fx, const int flag)
void BKE_shaderfx_blend_read_lib(struct BlendLibReader *reader, struct Object *ob)
struct ShaderFxData * BKE_shaderfx_new(int type)
void BKE_shaderfx_copydata_ex(struct ShaderFxData *fx, struct ShaderFxData *target, const int flag)
void BKE_shaderfx_blend_read_data(struct BlendDataReader *reader, struct ListBase *lb)
void sbFree(struct Object *ob)
General operations for speakers.
void * BKE_speaker_add(struct Main *bmain, const char *name)
struct BoundBox * BKE_volume_boundbox_get(struct Object *ob)
void * BKE_volume_add(struct Main *bmain, const char *name)
#define BLI_assert_unreachable()
bool BLI_ghash_reinsert(GHash *gh, void *key, void *val, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
void(* GHashValFreeFP)(void *val)
GHash * BLI_ghash_int_new(const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
A kd-tree for nearest neighbor search.
void void BLI_linklist_prepend(LinkNode **listp, void *ptr) ATTR_NONNULL(1)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
void * BLI_pophead(ListBase *listbase) ATTR_NONNULL(1)
void BLI_addhead(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void void void void BLI_duplicatelist(struct ListBase *dst, const struct ListBase *src) ATTR_NONNULL(1
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void void BLI_listbase_sort(struct ListBase *listbase, int(*cmp)(const void *, const void *)) ATTR_NONNULL(1
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define BLI_ASSERT_UNIT_M3(m)
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
void size_to_mat3(float R[3][3], const float size[3])
bool invert_m4(float R[4][4])
void copy_m3_m3(float m1[3][3], const float m2[3][3])
void copy_m3_m4(float m1[3][3], const float m2[4][4])
void unit_m4(float m[4][4])
void copy_m4_m3(float m1[4][4], const float m2[3][3])
bool invert_m4_m4(float R[4][4], const float A[4][4])
void mat4_to_loc_rot_size(float loc[3], float rot[3][3], float size[3], const float wmat[4][4])
void scale_m4_fl(float R[4][4], float scale)
void copy_m4_m4(float m1[4][4], const float m2[4][4])
bool is_negative_m4(const float mat[4][4])
void mul_v3_m4v3(float r[3], const float M[4][4], const float v[3])
void mat4_to_size(float size[3], const float M[4][4])
void mul_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3])
void mul_v3_mat3_m4v3(float r[3], const float M[4][4], const float v[3])
void quat_to_eulO(float eul[3], const short order, const float quat[4])
float tri_to_quat(float q[4], const float a[3], const float b[3], const float c[3])
void invert_qt_normalized(float q[4])
void eulO_to_quat(float quat[4], const float eul[3], const short order)
void axis_angle_to_quat(float r[4], const float axis[3], const float angle)
float normalize_qt(float q[4])
void quat_to_compatible_eulO(float eul[3], const float old[3], const short order, const float quat[4])
float normalize_qt_qt(float r[4], const float q[4])
void mul_qt_qtqt(float q[4], const float a[4], const float b[4])
void quat_to_axis_angle(float axis[3], float *angle, const float q[4])
void eulO_to_mat3(float mat[3][3], const float eul[3], const short order)
void axis_angle_to_mat3(float R[3][3], const float axis[3], const float angle)
void quat_apply_track(float quat[4], short axis, short upflag)
void copy_qt_qt(float q[4], const float a[4])
void quat_to_mat3(float mat[3][3], const float q[4])
void mat3_normalized_to_quat(float q[4], const float mat[3][3])
void quat_to_mat4(float mat[4][4], const float q[4])
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE float len_squared_v3(const float v[3]) ATTR_WARN_UNUSED_RESULT
void minmax_v3v3_v3(float min[3], float max[3], const float vec[3])
MINLINE void mul_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void sub_v3_v3(float r[3], const float a[3])
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
void project_plane_v3_v3v3(float out[3], const float p[3], const float v_plane[3])
MINLINE float dot_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE void add_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void zero_v2(float r[2])
MINLINE void zero_v3(float r[3])
MINLINE void add_v3_v3(float r[3], const float a[3])
void mid_v3_v3v3v3(float v[3], const float v1[3], const float v2[3], const float v3[3])
MINLINE float len_v3(const float a[3]) ATTR_WARN_UNUSED_RESULT
size_t size_t char size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, const size_t dst_maxncpy) ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
#define BLI_MUTEX_INITIALIZER
void BLI_mutex_lock(ThreadMutex *mutex)
void BLI_mutex_unlock(ThreadMutex *mutex)
pthread_mutex_t ThreadMutex
#define INIT_MINMAX(min, max)
#define POINTER_FROM_INT(i)
#define POINTER_AS_INT(i)
#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member)
#define POINTER_FROM_UINT(i)
#define MEMCPY_STRUCT_AFTER(struct_dst, struct_src, member)
#define BLO_read_data_address(reader, ptr_p)
void BLO_reportf_wrap(struct ReportList *reports, ReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
struct Main * BLO_read_lib_get_main(BlendLibReader *reader)
ID * BLO_read_get_new_id_address(BlendLibReader *reader, struct Library *lib, struct ID *id)
bool BLO_read_data_is_undo(BlendDataReader *reader)
void BLO_read_int32_array(BlendDataReader *reader, int array_size, int32_t **ptr_p)
#define BLO_write_id_struct(writer, struct_name, id_address, id)
#define BLO_write_struct(writer, struct_name, data_ptr)
void BLO_read_list(BlendDataReader *reader, struct ListBase *list)
#define BLO_read_id_address(reader, lib, id_ptr_p)
#define BLO_expand(expander, id)
#define BLO_write_struct_list(writer, struct_name, list_ptr)
void BLO_write_raw(BlendWriter *writer, size_t size_in_bytes, const void *data_ptr)
void BLO_read_pointer_array(BlendDataReader *reader, void **ptr_p)
bool BLO_write_is_undo(BlendWriter *writer)
struct ReportList * BLO_read_lib_reports(BlendLibReader *reader)
void BLO_write_pointer_array(BlendWriter *writer, uint num, const void *data_ptr)
#define BLT_I18NCONTEXT_ID_LIGHT
#define BLT_I18NCONTEXT_ID_OBJECT
#define CTX_DATA_(context, msgid)
#define CLOG_ERROR(clg_ref,...)
struct Depsgraph Depsgraph
bool DEG_is_active(const struct Depsgraph *depsgraph)
void DEG_id_tag_update_ex(struct Main *bmain, struct ID *id, int flag)
void DEG_id_tag_update(struct ID *id, int flag)
float DEG_get_ctime(const Depsgraph *graph)
#define DEG_OBJECT_ITER_END
struct Object * DEG_get_original_object(struct Object *object)
#define DEG_OBJECT_ITER_BEGIN(graph_, instance_, flag_)
@ DEG_ITER_OBJECT_FLAG_LINKED_DIRECTLY
@ DEG_ITER_OBJECT_FLAG_VISIBLE
@ DEG_ITER_OBJECT_FLAG_DUPLI
struct Object * DEG_get_evaluated_object(const struct Depsgraph *depsgraph, struct Object *object)
@ ID_RECALC_COPY_ON_WRITE
@ LIB_TAG_COPIED_ON_WRITE_EVAL_RESULT
@ LIB_TAG_COPIED_ON_WRITE
#define ID_IS_LINKED(_id)
#define ID_NEW_SET(_id, _idn)
@ POSE_CONSTRAINTS_NEED_UPDATE_FLAGS
@ BONE_RELATIVE_PARENTING
Object groups, one object can be in many groups at once.
@ CONSTRAINT_TYPE_CAMERASOLVER
@ CONSTRAINT_OBTYPE_OBJECT
@ CAMERASOLVER_ACTIVECLIP
#define DNA_struct_default_get(struct_name)
@ FLUID_FLOW_NEEDS_UPDATE
@ FLUID_EFFECTOR_NEEDS_UPDATE
#define GPENCIL_EDIT_MODE(gpd)
#define ME_EDIT_PAINT_SEL_MODE(_me)
@ eParticleSystemFlag_file_loaded
@ eModifierType_ParticleSystem
@ eModifierType_MeshSequenceCache
@ eModifierType_Collision
@ eModifierType_DynamicPaint
#define OB_MODE_ALL_MODE_DATA
#define OB_MODE_ALL_SCULPT
Object is a sort of wrapper for general info.
#define OB_TYPE_SUPPORT_PARVERT(_type)
#define OB_DATA_SUPPORT_EDITMODE(_type)
#define OB_TYPE_SUPPORT_MATERIAL(_type)
#define OB_TYPE_SUPPORT_VGROUP(_type)
@ OB_EMPTY_IMAGE_HIDE_FRONT
@ OB_EMPTY_IMAGE_HIDE_NON_AXIS_ALIGNED
@ OB_EMPTY_IMAGE_HIDE_ORTHOGRAPHIC
@ OB_EMPTY_IMAGE_HIDE_BACK
@ OB_EMPTY_IMAGE_HIDE_PERSPECTIVE
#define PSYS_SHARED_CACHES
#define PTCACHE_FLAG_INFO_DIRTY
#define PTCACHE_IGNORE_CLEAR
Types and defines for representing Rigid Body entities.
#define BASE_SELECTED_EDITABLE(v3d, base)
#define BASACT(_view_layer)
#define BASE_EDITABLE(v3d, base)
#define OBACT(_view_layer)
#define SCE_SELECT_VERTEX
#define BASE_VISIBLE(v3d, base)
void DRW_drawdata_free(struct ID *id)
_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 type
_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 v1
Read Guarded memory(de)allocation.
static void init_data(ModifierData *md)
Group RGB to Bright Vector Camera CLAMP
Provides wrapper around system-specific atomic primitives, and some extensions (faked-atomic operatio...
void BM_mesh_elem_table_ensure(BMesh *bm, const char htype)
BLI_INLINE BMVert * BM_vert_at_index(BMesh *bm, const int index)
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMVert * v
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
const Depsgraph * depsgraph
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
Object * BKE_object_duplicate(Main *bmain, Object *ob, eDupli_ID_Flags dupflag, eLibIDDuplicateFlags duplicate_options)
static void lib_link_nlastrips(BlendLibReader *reader, ID *id, ListBase *striplist)
static void object_blend_read_lib(BlendLibReader *reader, ID *id)
Object * BKE_object_pose_armature_get(Object *ob)
static void object_blend_write(BlendWriter *writer, ID *id, const void *id_address)
void BKE_object_to_mesh_clear(Object *object)
void BKE_object_groups_clear(Main *bmain, Scene *scene, Object *ob)
void BKE_object_empty_draw_type_set(Object *ob, const int value)
bool BKE_object_is_libdata(const Object *ob)
Mesh * BKE_object_get_evaluated_mesh(Object *object)
Base ** BKE_object_pose_base_array_get_ex(ViewLayer *view_layer, View3D *v3d, uint *r_bases_len, bool unique)
void BKE_object_to_curve_clear(Object *object)
static KeyBlock * insert_meshkey(Main *bmain, Object *ob, const char *name, const bool from_mix)
Object * BKE_object_add_only_object(Main *bmain, int type, const char *name)
static void object_blend_read_expand(BlendExpander *expander, ID *id)
bool BKE_object_modifier_update_subframe(Depsgraph *depsgraph, Scene *scene, Object *ob, bool update_mesh, int parent_recursion, float frame, int type)
bool BKE_object_modifier_use_time(Object *ob, ModifierData *md)
void BKE_object_minmax(Object *ob, float r_min[3], float r_max[3], const bool use_hidden)
void BKE_object_copy_proxy_drivers(Object *ob, Object *target)
static KeyBlock * insert_curvekey(Main *bmain, Object *ob, const char *name, const bool from_mix)
void BKE_object_handle_update_ex(Depsgraph *depsgraph, Scene *scene, Object *ob, RigidBodyWorld *rbw, const bool do_proxy_update)
KeyBlock * BKE_object_shapekey_insert(Main *bmain, Object *ob, const char *name, const bool from_mix)
bool BKE_object_flag_test_recursive(const Object *ob, short flag)
void BKE_object_copy_softbody(Object *ob_dst, const Object *ob_src, const int flag)
void BKE_object_sculpt_data_create(Object *ob)
ModifierData * BKE_object_active_modifier(const Object *ob)
static void object_handle_update_proxy(Depsgraph *depsgraph, Scene *scene, Object *object, const bool do_proxy_update)
bool BKE_object_copy_gpencil_modifier(struct Object *ob_dst, GpencilModifierData *gmd_src)
Object ** BKE_object_pose_array_get_ex(ViewLayer *view_layer, View3D *v3d, uint *r_objects_len, bool unique)
void BKE_object_modifier_set_active(Object *ob, ModifierData *md)
void BKE_object_runtime_reset_on_copy(Object *object, const int UNUSED(flag))
void BKE_object_tfm_restore(Object *ob, void *obtfm_pt)
static void object_where_is_calc_ex(Depsgraph *depsgraph, Scene *scene, Object *ob, float ctime, RigidBodyWorld *rbw, float r_originmat[3][3])
void BKE_object_dimensions_get(Object *ob, float r_vec[3])
bool BKE_object_is_in_editmode(const Object *ob)
bool BKE_object_exists_check(Main *bmain, const Object *obtest)
static void object_copy_data(Main *bmain, ID *id_dst, const ID *id_src, const int flag)
void BKE_object_modifiers_lib_link_common(void *userData, struct Object *ob, struct ID **idpoin, int cb_flag)
static void object_make_local(Main *bmain, ID *id, const int flags)
static bool object_modifier_type_copy_check(ModifierType md_type)
static void object_init(Object *ob, const short ob_type)
void BKE_object_boundbox_flag(Object *ob, int flag, const bool set)
int BKE_object_obdata_to_type(const ID *id)
MovieClip * BKE_object_movieclip_get(Scene *scene, Object *ob, bool use_default)
void BKE_object_update_select_id(struct Main *bmain)
void BKE_object_dimensions_set(Object *ob, const float value[3], int axis_mask)
Object * BKE_object_add(Main *bmain, ViewLayer *view_layer, int type, const char *name)
void BKE_object_check_uuids_unique_and_report(const Object *object)
void BKE_object_tfm_protected_backup(const Object *ob, ObjectTfmProtectedChannels *obtfm)
bool BKE_object_copy_modifier(Main *bmain, Scene *scene, Object *ob_dst, const Object *ob_src, ModifierData *md_src)
Object * BKE_object_pose_armature_get_visible(Object *ob, ViewLayer *view_layer, View3D *v3d)
static void write_defgroups(BlendWriter *writer, ListBase *defbase)
void BKE_object_workob_clear(Object *workob)
static void library_foreach_gpencil_modifiersForeachIDLink(void *user_data, Object *UNUSED(object), ID **id_pointer, int cb_flag)
void BKE_object_copy_particlesystems(Object *ob_dst, const Object *ob_src, const int flag)
bool BKE_object_supports_modifiers(const Object *ob)
void BKE_object_runtime_reset(Object *object)
Lattice * BKE_object_get_lattice(const Object *object)
void BKE_object_tfm_copy(Object *object_dst, const Object *object_src)
void BKE_object_obdata_size_init(struct Object *ob, const float size)
bool BKE_object_modifier_gpencil_use_time(Object *ob, GpencilModifierData *md)
static KeyBlock * insert_lattkey(Main *bmain, Object *ob, const char *name, const bool from_mix)
void BKE_boundbox_calc_center_aabb(const BoundBox *bb, float r_cent[3])
void BKE_object_preview_geometry_set_add(Object *ob, const uint64_t key, struct GeometrySet *geometry_set)
static void object_update_from_subsurf_ccg(Object *object)
bool BKE_object_is_mode_compat(const struct Object *ob, eObjectMode object_mode)
static void library_foreach_particlesystemsObjectLooper(ParticleSystem *UNUSED(psys), ID **id_pointer, void *user_data, int cb_flag)
bool BKE_object_pose_context_check(const Object *ob)
bool BKE_object_data_is_in_editmode(const ID *id)
static int pc_cmp(const void *a, const void *b)
BoundBox * BKE_object_boundbox_get(Object *ob)
void * BKE_object_tfm_backup(Object *ob)
Object * BKE_object_add_for_data(Main *bmain, ViewLayer *view_layer, int type, const char *name, ID *data, bool do_id_user)
void BKE_scene_foreach_display_point(Depsgraph *depsgraph, void(*func_cb)(const float[3], void *), void *user_data)
Object ** BKE_object_pose_array_get_unique(ViewLayer *view_layer, View3D *v3d, uint *r_objects_len)
bool BKE_object_shapekey_free(Main *bmain, Object *ob)
static void solve_parenting(Object *ob, Object *par, const bool set_origin, float r_obmat[4][4], float r_originmat[3][3])
int BKE_object_is_deform_modified(Scene *scene, Object *ob)
Lattice * BKE_object_get_evaluated_lattice(const Object *object)
static void expand_object_expandModifiers(void *userData, Object *UNUSED(ob), ID **idpoin, int UNUSED(cb_flag))
void BKE_object_apply_mat4(Object *ob, const float mat[4][4], const bool use_compat, const bool use_parent)
static void library_foreach_modifiersForeachIDLink(void *user_data, Object *UNUSED(object), ID **id_pointer, int cb_flag)
void BKE_object_workob_calc_parent(Depsgraph *depsgraph, Scene *scene, Object *ob, Object *workob)
int BKE_object_insert_ptcache(Object *ob)
Mesh * BKE_object_to_mesh(Depsgraph *depsgraph, Object *object, bool preserve_all_data_layers)
void BKE_boundbox_calc_size_aabb(const BoundBox *bb, float r_size[3])
static void object_cacheIgnoreClear(Object *ob, int state)
bool BKE_object_moves_in_time(const Object *object, bool recurse_parent)
bool BKE_object_shaderfx_use_time(Object *ob, ShaderFxData *fx)
int BKE_object_scenes_users_get(Main *bmain, Object *ob)
static void write_fmaps(BlendWriter *writer, ListBase *fbase)
bool BKE_object_shapekey_remove(Main *bmain, Object *ob, KeyBlock *kb)
ParticleSystem * BKE_object_copy_particlesystem(ParticleSystem *psys, const int flag)
static void copy_ccg_data(Mesh *mesh_destination, Mesh *mesh_source, int layer_type)
void BKE_object_free_modifiers(Object *ob, const int flag)
static bool modifiers_has_animation_check(const Object *ob)
void * BKE_object_obdata_add_from_type(Main *bmain, int type, const char *name)
void BKE_object_modifier_hook_reset(Object *ob, HookModifierData *hmd)
void BKE_object_dimensions_set_ex(Object *ob, const float value[3], int axis_mask, const float ob_scale_orig[3], const float ob_obmat_orig[4][4])
static Object * object_add_common(Main *bmain, ViewLayer *view_layer, int type, const char *name)
void BKE_object_where_is_calc_mat4(Object *ob, float r_obmat[4][4])
static void ob_parbone(Object *ob, Object *par, float r_mat[4][4])
void BKE_boundbox_init_from_minmax(BoundBox *bb, const float min[3], const float max[3])
LinkNode * BKE_object_relational_superset(struct ViewLayer *view_layer, eObjectSet objectSet, eObRelationTypes includeFilter)
bool BKE_object_obdata_texspace_get(Object *ob, short **r_texflag, float **r_loc, float **r_size)
void BKE_object_make_proxy(Main *bmain, Object *ob, Object *target, Object *cob)
bool BKE_object_obdata_is_libdata(const Object *ob)
static void copy_object_pose(Object *obn, const Object *ob, const int flag)
static void object_blend_read_data(BlendDataReader *reader, ID *id)
static bool object_moves_in_time(const Object *object)
void BKE_object_free_particlesystems(Object *ob)
void BKE_object_free_curve_cache(Object *ob)
static void armature_set_id_extern(Object *ob)
static void library_foreach_constraintObjectLooper(bConstraint *UNUSED(con), ID **id_pointer, bool is_reference, void *user_data)
void BKE_object_where_is_calc_ex(Depsgraph *depsgraph, Scene *scene, RigidBodyWorld *rbw, Object *ob, float r_originmat[3][3])
static void ob_parvert3(Object *ob, Object *par, float r_mat[4][4])
void BKE_object_mat3_to_rot(Object *ob, float mat[3][3], bool use_compat)
static void object_init_data(ID *id)
void BKE_object_scale_to_mat3(Object *ob, float mat[3][3])
static void expand_constraint_channels(BlendExpander *expander, ListBase *chanbase)
KDTree_3d * BKE_object_as_kdtree(Object *ob, int *r_tot)
static void direct_link_nlastrips(BlendDataReader *reader, ListBase *strips)
char * BKE_object_data_editmode_flush_ptr_get(struct ID *id)
void BKE_object_to_mat3(Object *ob, float r_mat[3][3])
void BKE_boundbox_minmax(const BoundBox *bb, const float obmat[4][4], float r_min[3], float r_max[3])
void BKE_object_foreach_display_point(Object *ob, const float obmat[4][4], void(*func_cb)(const float[3], void *), void *user_data)
void BKE_object_apply_mat4_ex(Object *ob, const float mat[4][4], Object *parent, const float parentinv[4][4], const bool use_compat)
void BKE_object_link_modifiers(Object *ob_dst, const Object *ob_src)
void BKE_object_boundbox_calc_from_mesh(struct Object *ob, struct Mesh *me_eval)
bool BKE_object_is_child_recursive(const Object *ob_parent, const Object *ob_child)
static void object_lib_override_apply_post(ID *id_dst, ID *UNUSED(id_src))
static int pc_findindex(ListBase *listbase, int index)
static const char * get_obdata_defname(int type)
static void give_parvert(Object *par, int nr, float vec[3])
bool BKE_object_support_modifier_type_check(const Object *ob, int modifier_type)
bool BKE_object_modifier_stack_copy(Object *ob_dst, const Object *ob_src, const bool do_copy_all, const int flag_subdata)
static void lib_link_constraint_channels(BlendLibReader *reader, ID *id, ListBase *chanbase)
void BKE_object_to_mat4(Object *ob, float r_mat[4][4])
BoundBox * BKE_boundbox_alloc_unit(void)
struct LinkNode * BKE_object_groups(Main *bmain, Scene *scene, Object *ob)
bool BKE_object_empty_image_frame_is_visible_in_view3d(const Object *ob, const RegionView3D *rv3d)
int BKE_object_visibility(const Object *ob, const int dag_eval_mode)
static bool ob_parcurve(Object *ob, Object *par, float r_mat[4][4])
Object ** BKE_object_pose_array_get(ViewLayer *view_layer, View3D *v3d, uint *r_objects_len)
void BKE_object_modifier_gpencil_hook_reset(Object *ob, HookGpencilModifierData *hmd)
bool BKE_object_is_in_wpaint_select_vert(const Object *ob)
void BKE_object_get_parent_matrix(Object *ob, Object *par, float r_parentmat[4][4])
Curve * BKE_object_to_curve(Object *object, Depsgraph *depsgraph, bool apply_modifiers)
Mesh * BKE_object_get_original_mesh(Object *object)
struct ObTfmBack ObTfmBack
static bool constructive_modifier_is_deform_modified(Object *ob, ModifierData *md)
void BKE_object_eval_assign_data(Object *object_eval, ID *data_eval, bool is_owned)
void BKE_object_tfm_protected_restore(Object *ob, const ObjectTfmProtectedChannels *obtfm, const short protectflag)
static bool object_deforms_in_time(Object *object)
void BKE_object_handle_update(Depsgraph *depsgraph, Scene *scene, Object *ob)
static ParticleSystem * object_copy_modifier_particle_system_ensure(Main *bmain, Scene *scene, Object *ob_dst, ParticleSystem *psys_src)
void BKE_object_delete_ptcache(Object *ob, int index)
bool BKE_object_has_mode_data(const struct Object *ob, eObjectMode object_mode)
void BKE_object_free_caches(Object *object)
bool BKE_object_parent_loop_check(const Object *par, const Object *ob)
static void object_foreach_id(ID *id, LibraryForeachIDData *data)
void BKE_object_where_is_calc_time(Depsgraph *depsgraph, Scene *scene, Object *ob, float ctime)
bool BKE_object_is_in_editmode_vgroup(const Object *ob)
Mesh * BKE_object_get_pre_modified_mesh(Object *object)
Object * BKE_object_add_from(Main *bmain, Scene *scene, ViewLayer *view_layer, int type, const char *name, Object *ob_src)
bool BKE_object_empty_image_data_is_visible_in_view3d(const Object *ob, const RegionView3D *rv3d)
PartEff * BKE_object_do_version_give_parteff_245(Object *ob)
static void object_free_data(ID *id)
void BKE_object_where_is_calc(Depsgraph *depsgraph, Scene *scene, Object *ob)
void BKE_object_transform_copy(Object *ob_tar, const Object *ob_src)
void BKE_object_matrix_local_get(struct Object *ob, float r_mat[4][4])
void BKE_object_rot_to_mat3(const Object *ob, float mat[3][3], bool use_drot)
int BKE_object_is_modified(Scene *scene, Object *ob)
static bool obrel_list_test(Object *ob)
static void obrel_list_add(LinkNode **links, Object *ob)
static void library_foreach_shaderfxForeachIDLink(void *user_data, Object *UNUSED(object), ID **id_pointer, int cb_flag)
Base ** BKE_object_pose_base_array_get_unique(ViewLayer *view_layer, View3D *v3d, uint *r_bases_len)
void BKE_object_free_derived_caches(Object *ob)
void BKE_object_free_softbody(Object *ob)
static Object * obrel_armature_find(Object *ob)
bool BKE_object_minmax_dupli(Depsgraph *depsgraph, Scene *scene, Object *ob, float r_min[3], float r_max[3], const bool use_hidden)
void BKE_object_free_shaderfx(Object *ob, const int flag)
static ThreadMutex vparent_lock
Base ** BKE_object_pose_base_array_get(ViewLayer *view_layer, View3D *v3d, uint *r_bases_len)
unsigned __int64 uint64_t
struct Object * start_cap
struct Object * offset_ob
struct Mesh * mesh_eval_final
struct PointCache * point_cache
const float * anim_path_accum_length
struct DupliObject * next
struct ParticleSystem * psys
struct DynamicPaintCanvasSettings * canvas
struct DynamicPaintBrushSettings * brush
const float(* vertexCos)[3]
struct Collection * group
struct ParticleSystem * psys
struct FluidDomainSettings * domain
struct FluidEffectorSettings * effector
struct FluidFlowSettings * flow
struct FluidsimSettings * fss
void(* copyData)(const struct GpencilModifierData *md, struct GpencilModifierData *target)
struct EditLatt * editlatt
struct Collection * collection
struct EditMeshData * edit_data
struct SubdivCCG * subdiv_ccg
struct BMEditMesh * edit_mesh
struct CustomData pdata ldata
struct Object * mirror_ob
struct ModifierData * next
void(* modifyGeometrySet)(struct ModifierData *md, const struct ModifierEvalContext *ctx, struct GeometrySet *geometry_set)
struct Hair *(* modifyHair)(struct ModifierData *md, const struct ModifierEvalContext *ctx, struct Hair *hair)
struct Volume *(* modifyVolume)(struct ModifierData *md, const struct ModifierEvalContext *ctx, struct Volume *volume)
struct CurveCache * curve_cache
float parent_display_origin[3]
struct Mesh * mesh_deform_eval
struct bGPdata * gpd_eval
void * geometry_set_previews
struct Curve * object_as_temp_curve
struct GeometrySet * geometry_set_eval
struct Mesh * object_as_temp_mesh
struct Object * proxy_group
struct Collection * instance_collection
struct Object * proxy_from
struct RigidBodyOb * rigidbody_object
ListBase greasepencil_modifiers
struct PreviewImage * preview
struct DrawDataList drawdata
char duplicator_visibility_flag
struct SculptSession * sculpt
struct RigidBodyCon * rigidbody_constraint
char empty_image_visibility_flag
struct PointCache * cache
struct Collection * group
struct ParticleSystem * psys
struct Mesh * mesh_original
struct PTCacheEdit * edit
struct ListBase * effectors
struct ParticleSystem * next
struct PointCache * pointcache
struct ClothModifierData * clmd
struct ParticleCacheKey ** childcache
struct Mesh * hair_in_mesh
struct Mesh * hair_out_mesh
struct ParticleDrawData * pdd
struct ParticleCacheKey ** pathcache
void * physics_constraint
struct RigidBodyOb_Shared * shared
struct Collection * master_collection
struct RigidBodyWorld * rigidbody_world
struct PointCache * pointcache
struct SoftBody_Shared * shared
struct Collection * collision_group
struct EffectorWeights * effector_weights
struct BodySpring * bspring
struct SBScratch * scratch
struct BodyPoint * bpoint
struct SubdivCCG::@68 dirty
unsigned int layer_protected
struct bConstraintTarget * next
int(* get_constraint_targets)(struct bConstraint *con, struct ListBase *list)
void(* flush_constraint_targets)(struct bConstraint *con, struct ListBase *list, bool no_copy)
struct bConstraint * next
struct bPoseChannel * next
ccl_device_inline int mod(int x, int m)
ccl_device_inline float dot(const float2 &a, const float2 &b)